diff --git a/fastSum/PointerGen/README.md b/fastSum/PointerGen/README.md index fcac06c6f92ab22c8fbfc0eea2ea3395f3101ec4..578f71da1f6f83fbdfcb0bb26ee17295dc0f5e3c 100644 --- a/fastSum/PointerGen/README.md +++ b/fastSum/PointerGen/README.md @@ -1,4 +1,29 @@ -# pointer-gen-fastnlp +# Pointer Generator -fastNLP实现的Get To The Point Summarization with Pointer-Generator Networks论文模型 -论文地址: https://arxiv.org/abs/1704.04368 +fastNLP实现的 [Get To The Point Summarization with Pointer-Generator Networks](https://arxiv.org/abs/1704.04368)论文模型 +
+原始代码 [地址](https://github.com/abisee/pointer-generator) + +## 包依赖 +- Python 3.7 +- [PyTorch](https://github.com/pytorch/pytorch) >= 1.1.0 +- [fastNLP](https://github.com/fastnlp/fastNLP) dev0.5.0 +- [pyrouge](https://github.com/bheinzerling/pyrouge) 0.1.3 +- [rouge](https://github.com/pltrdy/rouge) 1.0.0 +- [transformers](https://github.com/huggingface/transformers) 1.0.0 + +## 输入数据格式 +这里要求输入文件每一行都是一个json dict,dict需要有两个必要的key:'text'和'summary',分别代表原文档和对应摘要,其值要求是list,保存已经分句结束的结果。 + +## 训练 +训练Pointer Generator,命令行如下: +``` +python train.py -train_data_path TRAIN_DATA_PATH -eval_data_path VALID_DATA_PATH -log_root LOG_ROOT_NAME -is_pointer_gen -is_coverage -n_epochs 33 -visible_gpu 0 -lr_coverage 0.025 -batch_size 16 +``` +其中TRAIN_DATA_PATH,VALID_DATA_PATH,LOG_ROOT_NAME分别代表训练数据路径,dev集数据路径以及模型存储的文件夹路径。如果要去除pointer机制或者coverage机制,可以去掉is_pointer_gen和is_coverage。 + +## 测试 +``` +python decode.py -decode_data_path TEST_DATA_PATH -train_data_path TRAIN_DATA_PATH -test_model CHECKPOINT -log_root LOG_ROOT_NAME -is_pointer_gen -is_coverage -test_data_name TEST_DATA_NAME -visible_gpu 0 +``` +其中TEST_DATA_PATH,TRAIN_DATA_PATH,CHECKPOINT,LOG_ROOT_NAME,TEST_DATA_NAME 分别代表测试数据路径,训练数据路径,测试模型路径,decode结果保存路径,测试数据集名字。其中is_pointer_gen和is_coverage的加入要和训练模型时一致。 diff --git a/fastSum/PointerGen/data_util/config.py b/fastSum/PointerGen/data_util/config.py deleted file mode 100644 index 7d994742fe379a8b5f06a4220e1e7090aeebaa45..0000000000000000000000000000000000000000 --- a/fastSum/PointerGen/data_util/config.py +++ /dev/null @@ -1,46 +0,0 @@ -import os - - -class Config(): - def __init__(self): - super(Config, self).__init__() - self.root_dir = "/remote-home/yrchen" - #"tasks/fastnlp-relevant/summarization/cnn-dailymail/finished_files/chunked/train_*" - self.train_data_path = "/remote-home/yrchen/Datasets/CNNDM/finished_files_new/CNNDM.train.json" - #"tasks/fastnlp-relevant/summarization/cnn-dailymail/finished_files/val.bin" - self.eval_data_path = "/remote-home/yrchen/Datasets/CNNDM/finished_files_new/CNNDM.val.json" - #"tasks/fastnlp-relevant/summarization/cnn-dailymail/finished_files/test.bin" - self.decode_data_path ="/remote-home/yrchen/Datasets/CNNDM/finished_files_new/CNNDM.test.json" - self.vocab_path = os.path.join(self.root_dir, - "tasks/fastnlp-relevant/summarization/cnn-dailymail/finished_files/vocab") - self.log_root = os.path.join(self.root_dir, "tasks/fastnlp-relevant/summarization/my-pnt-sum/log/CNNDM") - self.train_path = None - self.model_path = None - - # Hyperparameters - self.hidden_dim = 256 - self.emb_dim = 128 - self.batch_size = 32 - self.max_enc_steps = 400 - self.max_dec_steps = 100 - self.beam_size = 4 - self.min_dec_steps = 35 - #这个要随着不同数据集的变化而变化 - self.vocab_size = 50000 - - self.lr = 0.15 - self.adagrad_init_acc = 0.1 - self.rand_unif_init_mag = 0.02 - self.trunc_norm_init_std = 1e-4 - self.max_grad_norm = 2.0 #2.0 - - self.pointer_gen = True - self.is_coverage = True - self.cov_loss_wt = 1.0 - - self.eps = 1e-12 - self.n_epochs = 100 - - self.use_gpu = True - - self.lr_coverage = 0.010#0.15 diff --git a/fastSum/PointerGen/data_util/data.py b/fastSum/PointerGen/data_util/data.py index 430c86d44c0eca06b5e93478b7671d1af4ccff4e..f33274f0aded3e08378009ea6a2d7c390bacf2f5 100644 --- a/fastSum/PointerGen/data_util/data.py +++ b/fastSum/PointerGen/data_util/data.py @@ -19,127 +19,8 @@ UNKNOWN_TOKEN = '[UNK]' # This has a vocab id, which is used to represent out-o START_DECODING = '[START]' # This has a vocab id, which is used at the start of every decoder input sequence STOP_DECODING = '[STOP]' # This has a vocab id, which is used at the end of untruncated target sequences -# Note: none of , , [PAD], [UNK], [START], [STOP] should appear in the vocab file. - -''' -class Cnn_dailymailLodaer(DataSetLoader): - def __init__(self): - super(Cnn_dailymailLodaer, self).__init__() - - def _load(self, data_path): - def text_generator(example_generator): - _count_1 = 0 - _count_2 = 0 - while True: - try: - e = example_generator.__next__() # e is a tf.Example - except StopIteration: - break - try: - article_text = e.features.feature['article'].bytes_list.value[ - 0] # the article text was saved under the key 'article' in the data files - abstract_text = e.features.feature['abstract'].bytes_list.value[ - 0] # the abstract text was saved under the key 'abstract' in the data files - except ValueError: - logger.error('Failed to get article or abstract from example') - continue - if len(article_text) == 0: # See https://github.com/abisee/pointer-generator/issues/1 - _count_1 += 1 - logger.warning('Found an example with empty article text. Skipping it. Skipping number: %d'%_count_1) - continue - else: - #_count_2 += 1 - #logger.info("getting example: %d"%_count_2) - yield (article_text, abstract_text) - - def example_generator(data_path): - filelist = glob.glob(data_path) # get the list of datafiles - assert filelist, ('Error: Empty filelist at %s' % data_path) # check filelist isn't empty - filelist = sorted(filelist) - - for f in filelist: - reader = open(f, 'rb') - while True: - len_bytes = reader.read(8) - if not len_bytes: break # finished reading this file - str_len = struct.unpack('q', len_bytes)[0] - example_str = struct.unpack('%ds' % str_len, reader.read(str_len))[0] - yield example_pb2.Example.FromString(example_str) - logger.info("example_generator completed reading all datafiles. No more data.") - - - input_gen = text_generator(example_generator(data_path)) - data_dict = {"article": [], "abstract_sentences": []} - - while True: - try: - (article, - abstract) = input_gen.__next__() # read the next example from file. article and abstract are both strings. - if isinstance(abstract, bytes): - abstract = str(abstract, encoding="utf-8") - if isinstance(article, bytes): - article = str(article, encoding="utf-8") - - except StopIteration: # if there are no more examples: - logger.info("The example generator for this example queue filling thread has exhausted data.") - break - - abstract_sentences = [sent.strip() for sent in abstract2sents( - abstract)] # Use the and tags in abstract to get a list of sentences. - - data_dict["article"].append(article) - data_dict["abstract_sentences"].append(abstract_sentences) - - dataset = DataSet(data_dict) - - return dataset - - def process(self, paths, vocab_path, vocab_size): - def read_vocab(vocab_file, max_size): - word_list = [] - count = 0 - - for w in [UNKNOWN_TOKEN, PAD_TOKEN, START_DECODING, STOP_DECODING]: - word_list.append(w) - count += 1 - - with open(vocab_file, 'r') as vocab_f: - for line in vocab_f: - pieces = line.split() - if len(pieces) != 2: - logger.warning('Warning: incorrectly formatted line in vocabulary file: %s\n' % line) - continue - w = pieces[0] - if w in [SENTENCE_START, SENTENCE_END, UNKNOWN_TOKEN, PAD_TOKEN, START_DECODING, STOP_DECODING]: - raise Exception( - ', , [UNK], [PAD], [START] and [STOP] shouldn\'t be in the vocab file, but %s is' % w) - if w in word_list: - raise Exception('Duplicated word in vocabulary file: %s' % w) - word_list.append(w) - count += 1 - if max_size != 0 and count >= max_size: - logger.info("max_size of vocab was specified as %i; we now have %i words. Stopping reading." % ( - max_size, count)) - break - - logger.info( - "Finished constructing vocabulary of %i total words. Last word added: %s" % (count, word_list[-1])) - return word_list - - vocab = Vocabulary(padding=PAD_TOKEN, unknown=UNKNOWN_TOKEN) - vocab.update(read_vocab(vocab_path, vocab_size)) - datasets = {} - for key, value in paths.items(): - - logger.info("-"*5+"processing dataset " + key+"-"*5) - datasets[key] = self._load(value) - datasets[key].apply(lambda x: ' '.join(x["abstract_sentences"]), new_field_name='abstract') - logger.info("dataset " + key + " size is %d" % len(datasets[key])) - logger.info("-"*5+"process dataset "+key+" done!"+"-"*5) - - return DataBundle(vocabs={"train": vocab}, datasets=datasets) -''' +# Note: none of , , [PAD], [UNK], [START], [STOP] should appear in the vocab file. def convert_list_to_ndarray(field): diff --git a/fastSum/PointerGen/data_util/utils.py b/fastSum/PointerGen/data_util/utils.py index 2aa61fa5b5c31955b7f8388469b97a1fc0a0f783..77b2fbb5ad53135756df2372e8c585cb905dfcf8 100644 --- a/fastSum/PointerGen/data_util/utils.py +++ b/fastSum/PointerGen/data_util/utils.py @@ -70,7 +70,8 @@ def clean(x): def pyrouge_score_all(hyps_list, refer_list, config, remap=True): nowTime = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') - PYROUGE_ROOT = os.path.join('/remote-home/yrchen/', nowTime) + PYROUGE_ROOT = os.path.join('~/tmp', nowTime) + SYSTEM_PATH = os.path.join(PYROUGE_ROOT, 'gold') MODEL_PATH = os.path.join(PYROUGE_ROOT, 'system') if os.path.exists(SYSTEM_PATH): @@ -103,16 +104,14 @@ def pyrouge_score_all(hyps_list, refer_list, config, remap=True): f.write(hyps.replace("\n", " ")) f.write("\n") - # r = Rouge155('/remote-home/dqwang/ROUGE/RELEASE-1.5.5') - # r = pyrouge.Rouge155() - r = pyrouge.Rouge155('/remote-home/yrchen/ROUGE/ROUGE/RELEASE-1.5.5') + r = pyrouge.Rouge155('../../resources/ROUGE/RELEASE-1.5.5') r.system_dir = SYSTEM_PATH r.model_dir = MODEL_PATH r.system_filename_pattern = 'Reference.(\d+).txt' r.model_filename_pattern = 'Model.[A-Z].#ID#.txt' - output = r.convert_and_evaluate(rouge_args="-e /remote-home/yrchen/ROUGE/ROUGE/RELEASE-1.5.5/data -a -m -n 2 -d") + output = r.convert_and_evaluate(rouge_args="-e ../../resources/ROUGE/RELEASE-1.5.5/data -a -m -n 2 -d") # output = r.convert_and_evaluate() output_dict = r.output_to_dict(output) @@ -136,7 +135,7 @@ def pyrouge_score_all(hyps_list, refer_list, config, remap=True): def pyrouge_score_all_multi(hyps_list, refer_list, config, remap=True): nowTime = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') - PYROUGE_ROOT = os.path.join('/remote-home/yrchen/', nowTime) + PYROUGE_ROOT = os.path.join('~/tmp', nowTime) SYSTEM_PATH = os.path.join(PYROUGE_ROOT, 'system') MODEL_PATH = os.path.join(PYROUGE_ROOT, 'gold') if os.path.exists(SYSTEM_PATH): @@ -176,7 +175,6 @@ def pyrouge_score_all_multi(hyps_list, refer_list, config, remap=True): f.write(hyps) f.write("\n") - # r = Rouge155('/remote-home/dqwang/ROUGE/RELEASE-1.5.5') r = pyrouge.Rouge155() r.system_dir = SYSTEM_PATH @@ -184,7 +182,6 @@ def pyrouge_score_all_multi(hyps_list, refer_list, config, remap=True): r.system_filename_pattern = 'Model.(\d+).txt' r.model_filename_pattern = 'Reference.[A-Z].#ID#.txt' - # output = r.convert_and_evaluate(rouge_args="-e /remote-home/dqwang/ROUGE/RELEASE-1.5.5/data -a -m -n 2 -d") output = r.convert_and_evaluate() output_dict = r.output_to_dict(output) diff --git a/fastSum/PointerGen/decode.py b/fastSum/PointerGen/decode.py index 206606449c6271ef28134db56ede19de204b4696..a10d304e4e266d5d6de03402f54aab224ba66c6a 100644 --- a/fastSum/PointerGen/decode.py +++ b/fastSum/PointerGen/decode.py @@ -51,10 +51,10 @@ def initial_dir(mode, config, model_file_path=None): if not os.path.exists(decode_path): os.mkdir(decode_path) else: - if os.path.exists(decode_path+"/"+"gold.txt"): - os.remove(decode_path+"/"+"gold.txt") - if os.path.exists(decode_path+"/"+"pred.txt"): - os.remove(decode_path+"/"+"pred.txt") + if os.path.exists(decode_path + "/" + "gold.txt"): + os.remove(decode_path + "/" + "gold.txt") + if os.path.exists(decode_path + "/" + "pred.txt"): + os.remove(decode_path + "/" + "pred.txt") return decode_path @@ -82,12 +82,6 @@ def run_test(model_file_path, config): state = torch.load(model_file_path, map_location=lambda storage, location: storage).state_dict() model.load_state_dict(state) - ''' - model.encoder.load_state_dict(state['encoder_state_dict']) - model.decoder.load_state_dict(state['decoder_state_dict'], strict=False) - model.reduce_state.load_state_dict(state['reduce_state_dict']) - ''' - tester = Tester(model=model, data=datainfo.datasets['test'], metrics=PyRougeMetric(pred='prediction', art_oovs='article_oovs', abstract_sentences='abstract_sentences', @@ -110,8 +104,6 @@ def getting_k_model_path(path, top_k): return [os.path.join(path, _item[0]) for _item in k_result] -# python decode.py -decode_data_path CNNDM/finished_files_new1/CNNDM.test.json -train_data_path CNNDM/finished_files_new1/CNNDM.train.json -test_model ../log/CNNDM/train_1576560623/model/model_223000_1576669601 -log_root CNNDM -is_pointer_gen -is_coverage -test_data_name cnndm -visible_gpu 5 -# python decode.py -decode_data_path CNNDM/finished_files_new1/CNNDM.test.json -train_data_path CNNDM/finished_files_new1/CNNDM.train.json -m ../log/CNNDM/train_pointer_gen_coverage/model/ -log_root CNNDM -is_pointer_gen -is_coverage -test_data_name cnndm -visible_gpu 5 -top_k 5 if __name__ == '__main__': parser = argparse.ArgumentParser(description="Train script") parser.add_argument("-top_k", default=1, help="choose the k lowest loss model to test", type=int) @@ -119,21 +111,14 @@ if __name__ == '__main__': help="Model file for retraining (default: None).") parser.add_argument('-visible_gpu', default=-1, type=int, required=True) - parser.add_argument('-dataset_path', default="/remote-home/yrchen/Datasets") parser.add_argument('-train_data_path', - default="CNNDM/finished_files_new1/CNNDM.train.json", required=True) - # parser.add_argument('-eval_data_path', - # default="CNNDM/finished_files_new1/CNNDM.val.json", required=True) + default="", required=True, help="path of train data") parser.add_argument('-decode_data_path', - default="CNNDM/finished_files_new1/CNNDM.test.json", required=True) - # parser.add_argument('-vocab_path', default='CNNDM/finished_files_new1/vocab.pkl') - parser.add_argument('-root', - default='/remote-home/yrchen/tasks/fastnlp-relevant/summarization/my-pnt-sum/log') - parser.add_argument('-log_root', default='CNNDM', required=True) + default="", required=True, help="path of test data") + parser.add_argument('-log_root', default='', required=True, help="root to save result") parser.add_argument('-hidden_dim', default=256, type=int) parser.add_argument('-emb_dim', default=128, type=int) - # parser.add_argument('-batch_size', default=8, type=int) parser.add_argument('-batch_size', default=32, type=int) parser.add_argument('-max_enc_steps', default=400, type=int) parser.add_argument('-max_dec_steps', default=100, type=int) @@ -161,13 +146,6 @@ if __name__ == '__main__': parser.add_argument('-test_model', default='', type=str) args = parser.parse_args() - args.train_data_path = os.path.join(args.dataset_path, args.train_data_path) - # args.eval_data_path = os.path.join(args.dataset_path, args.eval_data_path) - args.decode_data_path = os.path.join(args.dataset_path, args.decode_data_path) - # args.vocab_path = os.path.join(args.dataset_path, args.vocab_path) - - args.log_root = os.path.join(args.root, args.log_root) - if args.visible_gpu != -1: args.use_gpu = True torch.cuda.set_device(args.visible_gpu) diff --git a/fastSum/PointerGen/train.py b/fastSum/PointerGen/train.py index 1198abac86ce671963ba093a3fb15daf1404498c..bfb14a9ac609021fbc3a67a5e4ef8f5a8475cfc5 100644 --- a/fastSum/PointerGen/train.py +++ b/fastSum/PointerGen/train.py @@ -103,7 +103,6 @@ def run_train(config): 'reduce_state_dict': model.reduce_state.state_dict() } torch.save(state, bestmodel_save_path) - # 不是作为形参传入到Trainer里面的么,怎么里面的model变化会影响到外面的? logger.info('[INFO] Saving eval best model to %s', bestmodel_save_path) @@ -112,21 +111,14 @@ if __name__ == '__main__': parser.add_argument("-m", dest="model_file_path", required=False, default=None, help="Model file for retraining (default: None).") parser.add_argument('-visible_gpu', default=-1, type=int, required=True) - parser.add_argument('-dataset_path', default="/remote-home/yrchen/Datasets") parser.add_argument('-train_data_path', - default="CNNDM/finished_files_new1/CNNDM.train.json", required=True) + default="", required=True, help="the path of training data") parser.add_argument('-eval_data_path', - default="CNNDM/finished_files_new1/CNNDM.val.json", required=True) - # parser.add_argument('-decode_data_path', - # default="CNNDM/finished_files_new1/CNNDM.test.json", required=True) - # parser.add_argument('-vocab_path', default='CNNDM/finished_files_new1/vocab.pkl') - parser.add_argument('-root', - default='/remote-home/yrchen/tasks/fastnlp-relevant/summarization/my-pnt-sum/log') - parser.add_argument('-log_root', default='CNNDM', required=True) + default="", required=True, help="the path of development data") + parser.add_argument('-log_root', default='', required=True, help="root to save result") parser.add_argument('-hidden_dim', default=256, type=int) parser.add_argument('-emb_dim', default=128, type=int) - # parser.add_argument('-batch_size', default=8, type=int) parser.add_argument('-batch_size', default=16, type=int) parser.add_argument('-max_enc_steps', default=400, type=int) parser.add_argument('-max_dec_steps', default=100, type=int) @@ -146,19 +138,11 @@ if __name__ == '__main__': parser.add_argument('-cov_loss_wt', default=1.0, type=float) parser.add_argument('-eps', default=1e-12, type=float) - # parser.add_argument('-max_iterations', default=500000, required=True, type=int) parser.add_argument("-n_epochs", default=33, type=int, required=True) parser.add_argument('-lr_coverage', default=0.15, type=float) args = parser.parse_args() - args.train_data_path = os.path.join(args.dataset_path, args.train_data_path) - args.eval_data_path = os.path.join(args.dataset_path, args.eval_data_path) - # args.decode_data_path = os.path.join(args.dataset_path, args.decode_data_path) - # args.vocab_path = os.path.join(args.dataset_path, args.vocab_path) - - args.log_root = os.path.join(args.root, args.log_root) - if args.visible_gpu != -1: args.use_gpu = True torch.cuda.set_device(args.visible_gpu) diff --git a/fastSum/PointerGen/training_ptr_gen/main.py b/fastSum/PointerGen/training_ptr_gen/main.py deleted file mode 100644 index 9b35ecaebe41723673eb99e5f03be7c9ab499d97..0000000000000000000000000000000000000000 --- a/fastSum/PointerGen/training_ptr_gen/main.py +++ /dev/null @@ -1,126 +0,0 @@ -from data_util.config import Config -from data_util.data import prepare_dataInfo, PAD_TOKEN -from data_util.logging import logger -from model.loss import MyLoss -from model.model import Model -from fastNLP import BucketSampler -from fastNLP import Trainer -from fastNLP import Tester -from torch.optim import Adagrad -from model.metric import PyRougeMetric, FastRougeMetric -import os -import time -from data_util.utils import print_config, write_eval_results -from training_ptr_gen.callback import TrainCallback -import torch -import sys -import tensorflow as tf - -config = Config() - - -def initial_dir(mode, model_file_path=None): - if mode == 'train': - train_dir = os.path.join(config.log_root, 'train_%d' % (int(time.time()))) - if not os.path.exists(train_dir): - os.mkdir(train_dir) - - model_dir = os.path.join(train_dir, 'model') - if not os.path.exists(model_dir): - os.mkdir(model_dir) - return train_dir, model_dir - - else: - if model_file_path is None: - logger.error("error!, no model to load") - raise Exception("empty model file path!", model_file_path) - parent_path = os.path.dirname(model_file_path) - train_path = os.path.dirname(parent_path) - model_name = os.path.basename(model_file_path) - decode_path = os.path.join(train_path, 'decode_%s' % (model_name)) - - if not os.path.exists(decode_path): - os.mkdir(decode_path) - - return decode_path - - -def set_up_data(mode): - datainfo = prepare_dataInfo(mode, config.train_data_path, config.eval_data_path, config.decode_data_path, - config.vocab_path, config.vocab_size, config) - logger.info('-' * 10 + "set up data done!" + '-' * 10) - return datainfo - - -def run_train(): - train_dir, model_dir = initial_dir('train') - config.train_path = train_dir - config.model_path = model_dir - print_config(config, train_dir) - datainfo = set_up_data('train') - train_sampler = BucketSampler(batch_size=config.batch_size, seq_len_field_name='enc_len') - criterion = MyLoss(config=config, padding_idx=datainfo.vocabs["train"].to_index(PAD_TOKEN)) - - model = Model(vocab=datainfo.vocabs["train"]) - params = list(model.encoder.parameters()) + list(model.decoder.parameters()) + \ - list(model.reduce_state.parameters()) - initial_lr = config.lr_coverage if config.is_coverage else config.lr - optimizer = Adagrad(params, lr=initial_lr, initial_accumulator_value=config.adagrad_init_acc) - - train_loader = datainfo.datasets["train"] - valid_loader = datainfo.datasets["dev"] - summary_writer = tf.compat.v1.summary.FileWriter(train_dir) - trainer = Trainer(model=model, train_data=train_loader, optimizer=optimizer, loss=criterion, - batch_size=config.batch_size, check_code_level=-1, - n_epochs=config.n_epochs, print_every=100, dev_data=valid_loader, - metrics=FastRougeMetric(pred='prediction', art_oovs='article_oovs', - abstract_sentences='abstract_sentences', config=config, - vocab=datainfo.vocabs["train"]), - metric_key="rouge-l-f", validate_every=-1, save_path=model_dir, - callbacks=[TrainCallback(config, summary_writer, patience=5)], use_tqdm=False) - - logger.info("-" * 5 + "start training" + "-" * 5) - - traininfo = trainer.train(load_best_model=True) - logger.info(' | end of Train | time: {:5.2f}s | '.format(traininfo["seconds"])) - logger.info('[INFO] best eval model in epoch %d and iter %d', traininfo["best_epoch"], traininfo["best_step"]) - logger.info(traininfo["best_eval"]) - - bestmodel_save_path = os.path.join(config.model_path, - 'bestmodel.pkl') # this is where checkpoints of best models are saved - state = { - 'encoder_state_dict': model.encoder.state_dict(), - 'decoder_state_dict': model.decoder.state_dict(), - 'reduce_state_dict': model.reduce_state.state_dict() - } - torch.save(state, bestmodel_save_path) - # 不是作为形参传入到Trainer里面的么,怎么里面的model变化会影响到外面的? - logger.info('[INFO] Saving eval best model to %s', bestmodel_save_path) - - -def run_test(model_file_path): - decode_path = initial_dir('test', model_file_path) - datainfo = set_up_data('test') - model = Model(vocab=datainfo.vocabs["train"]) - tester = Tester(datainfo.datasets['test'], model=model, metrics=PyRougeMetric(pred='prediction', - art_oovs='article_oovs', - abstract_sentences='abstract_sentences', - config=config, - vocab=datainfo.vocabs["train"]), batch_size=1) - eval_results = tester.test() - write_eval_results(decode_path, eval_results) - - -if __name__ == '__main__': - torch.cuda.set_device(4) - mode = sys.argv[1] - if mode == 'train': - logger.info("------start mode train------") - run_train() - elif mode == 'test': - logger.info("------start mode test-------") - model_filename = sys.argv[2] - run_test(model_filename) - else: - logger.error("error: none of the mode is in train or test!") - raise Exception("wrong mode! neither train nor test!", mode) diff --git a/fastSum/PreSum/README.md b/fastSum/PreSum/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a00ebf4c845bf017c46c66aed1812303e677b254 --- /dev/null +++ b/fastSum/PreSum/README.md @@ -0,0 +1,65 @@ +# PreSum +FastNLP实现的EMNLP2019论文 [Text Summarization with Pretrained Encoders](https://arxiv.org/pdf/1908.08345) +
+原始代码[地址](https://github.com/nlpyang/PreSumm) + + +## 包依赖 +- Python 3.7 +- [PyTorch](https://github.com/pytorch/pytorch) >= 1.0.1 +- [fastNLP](https://github.com/fastnlp/fastNLP) 0.6.0 +- [pyrouge](https://github.com/bheinzerling/pyrouge) 0.1.3 +- [rouge](https://github.com/pltrdy/rouge) 1.0.0 +- [transformers](https://github.com/huggingface/transformers) >= 1.2.0 + + + +## 数据预处理 +调用preprocess.py来预处理数据。示例如下: +``` +python preprocess.py --raw_path INPUT_PATH --save_path data/OUTPUT_PATH --log_file LOG_PATH +``` +其中INPUT_PATH,OUTPUT_PATH和LOG_PATH分别代表预处理的输入目录,输出目录名字以及log的路径。 +这里要求INPUT_PATH目录下有xx.train.jsonl, xx.val.jsonl, xx.test.jsonl 命名的文件,同时要求输入文件每一行都是一个json dict,dict需要有两个必要的key:'text'和'summary',分别代表原文档和对应摘要,其值要求是list,保存已经分句结束的结果。 + + + +## TransformerABS +训练transformer为基础结构的生成式模型,命令行如下: +``` +python train_presum.py -task abs -mode train -dec_dropout 0.2 -save_path SAVE_DIR -sep_optim true -lr_bert 0.002 -lr_dec 0.2 -save_checkpoint_steps 2000 -batch_size 16 -accum_count 5 -use_bert_emb true -warmup_steps_bert 20000 -warmup_steps_dec 10000 -max_pos 512 -visible_gpus 0,1,2,3 -log_file LOG_PATH -label_type INPUT_DIR -valid_steps 2000 -n_epochs 10 -max_summary_len 600 +``` +其中SAVE_DIR, LOG_PATH和INPUT_DIR分别代表了存储训练模型的目录,log的路径以及输入数据的文件夹名字。特别的,INPUT_DIR对应了数据预处理部分的OUTPUT_PATH,只需要告知data目录下输入的文件夹名字即可。 +
+ +测试transformer为基础结构的生成式模型,命令行如下: +``` +python train_presum.py -task abs -mode test -test_batch_size 12 -log_file LOG_PATH -test_from CHECKPOINT_PATH -sep_optim true -visible_gpus 0 -max_pos 512 -max_length 200 -alpha 0.95 -min_length 50 -block_trigram True -label_type INPUT_DIR -max_summary_len 600 -decode_path DECODE_PATH +``` +其中LOG_PATH,CHECKPOINT_PATH,INPUT_DIR,DECODE_PATH分别代表了log存储路径,测试模型的路径,包含测试集的文件夹名字(对应了数据预处理部分的OUTPUT_PATH),以及保存decode结果的路径名字。max_length ,min_length 和alpha 需要根据不同数据集特性调节。 + + + +## BERTSUMABS +训练BERT为基础结构的生成式模型,命令行如下: +``` +python train_presum.py -task abs -mode train -dec_dropout 0.1 -save_path SAVE_DIR -sep_optim False -lr 0.05 -save_checkpoint_steps 2000 -batch_size 8 -accum_count 8 -use_bert_emb true -warmup_steps 10000 -max_pos 512 -visible_gpus 0,1,2,3 -log_file LOG_PATH -label_type INPUT_DIR -valid_steps 2000 -n_epochs 10 -max_summary_len 600 -encoder baseline -enc_dropout 0.1 -enc_hidden_size 512 -enc_layers 6 -enc_ff_size 2048 -dec_layers 6 -dec_hidden_size 512 -dec_ff_size 2048 +``` +其中SAVE_DIR, LOG_PATH和INPUT_DIR分别代表了存储训练模型的目录,log的路径以及输入数据的文件夹名字。特别的,INPUT_DIR对应了数据预处理部分的OUTPUT_PATH,只需要告知data目录下输入的文件夹名字即可。 + + +测试BERT为基础结构的生成式模型,命令行如下: +``` +python train_presum.py -task abs -mode test -test_batch_size 12 -log_file LOG_PATH -test_from CHECKPOINT_PATH -sep_optim False -visible_gpus 0 -max_pos 512 -max_length 200 -alpha 0.95 -min_length 50 -block_trigram True -label_type INPUT_DIR -max_summary_len 300 -decode_path DECODE_PATH -encoder baseline +``` +其中LOG_PATH,CHECKPOINT_PATH,INPUT_DIR,DECODE_PATH分别代表了log存储路径,测试模型的路径,包含测试集的文件夹名字(对应了数据预处理部分的OUTPUT_PATH),以及保存decode结果的路径名字。max_length ,min_length 和alpha 需要根据不同数据集特性调节。 + +## TransformerEXT +训练transformer为基础结构的抽取式模型,命令行如下: +测试transformer为基础结构的抽取式模型,命令行如下: + + + +## BERTSUMEXT +训练BERT为基础结构的抽取式模型,命令行如下: +测试BERT为基础结构的抽取式模型,命令行如下: diff --git a/fastSum/PreSum/__init__.py b/fastSum/PreSum/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/PreSum/callback.py b/fastSum/PreSum/callback.py new file mode 100644 index 0000000000000000000000000000000000000000..377f49d5e1767e19f3f1f79baa637ed161fc3df8 --- /dev/null +++ b/fastSum/PreSum/callback.py @@ -0,0 +1,281 @@ +import os +import torch +import sys +from torch import nn + +from fastNLP.core.callback import Callback, EarlyStopError +from others.utils import mkdir +from fastNLP.core.utils import _get_model_device +import fitlog +from copy import deepcopy +from fastNLP import Tester, DataSet + + +class MyCallback(Callback): + def __init__(self, args, optims): + super(MyCallback, self).__init__() + self.args = args + self.real_step = 0 + self.optims = optims + + def on_step_end(self): + if self.step % self.update_every == 0 and self.step > 0: + self.real_step += 1 + cur_lr = [] + for o in self.optims: + cur_lr.append("{:.8f}".format(o.optimizer.param_groups[0]['lr'])) + o.step() + + if self.real_step % 1000 == 0: + self.pbar.write('Current learning rate is {}, real_step: {}'.format("|".join(cur_lr), self.real_step)) + + def on_epoch_end(self): + self.pbar.write('Epoch {} is done !!!'.format(self.epoch)) + + +def _save_model(checkpoint, model_name, save_dir, only_param=True): + """ 存储不含有显卡信息的 state_dict 或 model + 这里还没有实现保存optims, 相关实现可以继续 + :param model: + :param model_name: + :param save_dir: 保存的 directory + :param only_param: + :return: + """ + + model_path = os.path.join(save_dir, model_name) + + if not os.path.isdir(save_dir): + os.makedirs(save_dir, exist_ok=True) + if isinstance(checkpoint['model'], nn.DataParallel): + checkpoint['model'] = checkpoint['model'].module + if only_param: + state_dict = checkpoint['model'].state_dict() + for key in state_dict: + state_dict[key] = state_dict[key].cpu() + checkpoint['model'] = state_dict + torch.save(checkpoint, model_path) + else: + _model_device = _get_model_device(checkpoint['model']) + checkpoint['model'].cpu() + torch.save(checkpoint, model_path) + checkpoint['model'].to(_model_device) + + +class SaveModelCallback(Callback): + """ + 由于Trainer在训练过程中只会保存最佳的模型, 该 callback 可实现多种方式的结果存储。 + 会根据训练开始的时间戳在 save_dir 下建立文件夹,在再文件夹下存放多个模型 + -save_dir + -2019-07-03-15-06-36 + -epoch0step20{metric_key}{evaluate_performance}.pt # metric是给定的metric_key, evaluate_perfomance是性能 + -epoch1step40 + -2019-07-03-15-10-00 + -epoch:0step:20{metric_key}:{evaluate_performance}.pt # metric是给定的metric_key, evaluate_perfomance是性能 + :param str save_dir: 将模型存放在哪个目录下,会在该目录下创建以时间戳命名的目录,并存放模型 + :param int top: 保存dev表现top多少模型。-1为保存所有模型 + :param bool only_param: 是否只保存模型权重 + :param save_on_exception: 发生exception时,是否保存一份当时的模型 + """ + + def __init__(self, save_dir, optims, args, top=5, only_param=False, save_on_exception=False): + super().__init__() + + if not os.path.isdir(save_dir): + raise IsADirectoryError("{} is not a directory.".format(save_dir)) + self.save_dir = save_dir + if top < 0: + self.top = sys.maxsize + else: + self.top = top + self.optims = optims + self._ordered_save_models = [] # List[Tuple], Tuple[0]是metric, Tuple[1]是path。metric是依次变好的,所以从头删 + + self.only_param = only_param + self.save_on_exception = save_on_exception + self.args = args + + def on_train_begin(self): + self.save_dir = os.path.join(self.save_dir, self.trainer.start_time) + if not os.path.exists(self.save_dir): + os.mkdir(self.save_dir) + + def on_valid_end(self, eval_result, metric_key, optimizer, is_better_eval): + metric_value = list(eval_result.values())[0][metric_key] + self._save_this_model(metric_value) + + def _insert_into_ordered_save_models(self, pair): + # pair:(metric_value, model_name) + # 返回save的模型pair与删除的模型pair. pair中第一个元素是metric的值,第二个元素是模型的名称 + index = -1 + for _pair in self._ordered_save_models: + if _pair[0] >= pair[0] and self.trainer.increase_better: + break + if not self.trainer.increase_better and _pair[0] <= pair[0]: + break + index += 1 + save_pair = None + if len(self._ordered_save_models) < self.top or (len(self._ordered_save_models) >= self.top and index != -1): + save_pair = pair + self._ordered_save_models.insert(index + 1, pair) + delete_pair = None + if len(self._ordered_save_models) > self.top: + delete_pair = self._ordered_save_models.pop(0) + return save_pair, delete_pair + + def _save_this_model(self, metric_value): + name = "epoch:{}_step:{}_{}:{:.6f}.pt".format(self.epoch, self.step, self.trainer.metric_key, metric_value) + save_pair, delete_pair = self._insert_into_ordered_save_models((metric_value, name)) + checkpoint = {'model': self.model, 'optims': self.optims, 'opt': self.args} + if save_pair: + try: + _save_model(checkpoint, model_name=name, save_dir=self.save_dir) + except Exception as e: + print(f"The following exception:{e} happens when saves model to {self.save_dir}.") + if delete_pair: + try: + delete_model_path = os.path.join(self.save_dir, delete_pair[1]) + if os.path.exists(delete_model_path): + os.remove(delete_model_path) + except Exception as e: + print(f"Fail to delete model {name} at {self.save_dir} caused by exception:{e}.") + + def on_exception(self, exception): + if self.save_on_exception: + checkpoint = {'model': self.model, 'optims': self.optims, 'opt': self.args} + name = "epoch:{}_step:{}_Exception:{}.pt".format(self.epoch, self.step, exception.__class__.__name__) + _save_model(checkpoint, model_name=name, save_dir=self.save_dir) + + +class EarlyStopCallback(Callback): + r""" + 多少个epoch没有变好就停止训练,相关类 :class:`~fastNLP.core.callback.EarlyStopError` + """ + + def __init__(self, patience=10): + r""" + + :param int patience: epoch的数量 + """ + super(EarlyStopCallback, self).__init__() + self.patience = patience + self.wait = 0 + + def on_valid_end(self, eval_result, metric_key, optimizer, is_better_eval): + if not is_better_eval: + # current result is getting worse + if self.wait == self.patience: + raise EarlyStopError("Early stopping raised.") + else: + self.wait += 1 + else: + self.wait = 0 + + def on_exception(self, exception): + if isinstance(exception, EarlyStopError): + print("Early Stopping triggered in epoch {}!".format(self.epoch)) + else: + raise exception # 抛出陌生Error + + +class FitlogCallback(Callback): + r""" + 该callback可将loss和progress写入到fitlog中; 如果Trainer有dev的数据,将自动把dev的结果写入到log中; 同时还支持传入 + 一个(或多个)test数据集进行测试(只有在trainer具有dev时才能使用),每次在dev上evaluate之后会在这些数据集上验证一下。 + 并将验证结果写入到fitlog中。这些数据集的结果是根据dev上最好的结果报道的,即如果dev在第3个epoch取得了最佳,则 + fitlog中记录的关于这些数据集的结果就是来自第三个epoch的结果。 + """ + + def __init__(self, data=None, tester=None, log_loss_every=0, verbose=1, log_exception=False): + r""" + + :param ~fastNLP.DataSet,Dict[~fastNLP.DataSet] data: 传入DataSet对象,会使用多个Trainer中的metric对数据进行验证。如果需要 + 传入多个DataSet请通过dict的方式传入,dict的key将作为对应dataset的name传递给fitlog。data的结果的名称以'data'开头。 + :param ~fastNLP.Tester,Dict[~fastNLP.Tester] tester: Tester对象,将在on_valid_end时调用。tester的结果的名称以'tester'开头 + :param int log_loss_every: 多少个step记录一次loss(记录的是这几个batch的loss平均值),如果数据集较大建议将该值设置得 + 大一些,不然会导致log文件巨大。默认为0, 即不要记录loss。 + :param int verbose: 是否在终端打印evaluation的结果,0不打印。 + :param bool log_exception: fitlog是否记录发生的exception信息 + """ + super().__init__() + self.datasets = {} + self.testers = {} + self._log_exception = log_exception + assert isinstance(log_loss_every, int) and log_loss_every >= 0 + if tester is not None: + if isinstance(tester, dict): + for name, test in tester.items(): + if not isinstance(test, Tester): + raise TypeError(f"{name} in tester is not a valid fastNLP.Tester.") + self.testers['tester-' + name] = test + if isinstance(tester, Tester): + self.testers['tester-test'] = tester + for tester in self.testers.values(): + setattr(tester, 'verbose', 0) + + if isinstance(data, dict): + for key, value in data.items(): + assert isinstance(value, DataSet), f"Only DataSet object is allowed, not {type(value)}." + for key, value in data.items(): + self.datasets['data-' + key] = value + elif isinstance(data, DataSet): + self.datasets['data-test'] = data + elif data is not None: + raise TypeError("data receives dict[DataSet] or DataSet object.") + + self.verbose = verbose + self._log_loss_every = log_loss_every + self._avg_loss = 0 + + def on_train_begin(self): + if (len(self.datasets) > 0 or len(self.testers) > 0) and self.trainer.dev_data is None: + raise RuntimeError("Trainer has no dev data, you cannot pass extra data to do evaluation.") + + if len(self.datasets) > 0: + for key, data in self.datasets.items(): + tester = Tester(data=data, model=self.model, + batch_size=self.trainer.kwargs.get('dev_batch_size', self.batch_size), + metrics=self.trainer.metrics, + verbose=0, + use_tqdm=self.trainer.test_use_tqdm, + sampler=self.trainer.kwargs.get('test_sampler', None)) + self.testers[key] = tester + fitlog.add_progress(total_steps=self.n_steps) + + def on_backward_begin(self, loss): + if self._log_loss_every > 0: + self._avg_loss += loss.item() + if self.step % self._log_loss_every == 0: + fitlog.add_loss(self._avg_loss / self._log_loss_every * self.update_every, name='loss', + step=int(self.step / self.update_every), + epoch=self.epoch) + self._avg_loss = 0 + + def on_valid_end(self, eval_result, metric_key, optimizer, better_result): + if better_result: + eval_result = deepcopy(eval_result) + eval_result['step'] = self.step + eval_result['epoch'] = self.epoch + fitlog.add_best_metric(eval_result) + fitlog.add_metric(eval_result, step=self.step, epoch=self.epoch) + if len(self.testers) > 0: + for key, tester in self.testers.items(): + try: + eval_result = tester.test() + if self.verbose != 0: + self.pbar.write("FitlogCallback evaluation on {}:".format(key)) + self.pbar.write(tester._format_eval_results(eval_result)) + fitlog.add_metric(eval_result, name=key, step=self.step, epoch=self.epoch) + if better_result: + fitlog.add_best_metric(eval_result, name=key) + except Exception as e: + self.pbar.write("Exception happens when evaluate on DataSet named `{}`.".format(key)) + raise e + + def on_train_end(self): + fitlog.finish() + + def on_exception(self, exception): + fitlog.finish(status=1) + if self._log_exception: + fitlog.add_other(repr(exception), name='except_info') diff --git a/fastSum/PreSum/dataloader.py b/fastSum/PreSum/dataloader.py new file mode 100644 index 0000000000000000000000000000000000000000..f999c65f7a6e2a97f3e32330cb3918e6fe51c915 --- /dev/null +++ b/fastSum/PreSum/dataloader.py @@ -0,0 +1,262 @@ +import bisect +from time import time +from datetime import timedelta + +from fastNLP.io.loader import JsonLoader +from fastNLP.modules.tokenizer import BertTokenizer +from fastNLP.io.data_bundle import DataBundle +from fastNLP.core.const import Const + + +class BertData(JsonLoader): + + def __init__(self, max_nsents=60, max_ntokens=100, max_len=512): + + fields = {'article': 'article', + 'label': 'label'} + super(BertData, self).__init__(fields=fields) + + self.max_nsents = max_nsents + self.max_ntokens = max_ntokens + self.max_len = max_len + + self.tokenizer = BertTokenizer.from_pretrained('/path/to/uncased_L-12_H-768_A-12') + self.cls_id = self.tokenizer.vocab['[CLS]'] + self.sep_id = self.tokenizer.vocab['[SEP]'] + self.pad_id = self.tokenizer.vocab['[PAD]'] + + def _load(self, paths): + dataset = super(BertData, self)._load(paths) + return dataset + + def process(self, paths): + + def truncate_articles(instance, max_nsents=self.max_nsents, max_ntokens=self.max_ntokens): + article = [' '.join(sent.lower().split()[:max_ntokens]) for sent in instance['article']] + return article[:max_nsents] + + def truncate_labels(instance): + label = list(filter(lambda x: x < len(instance['article']), instance['label'])) + return label + + def bert_tokenize(instance, tokenizer, max_len, pad_value): + article = instance['article'] + article = ' [SEP] [CLS] '.join(article) + word_pieces = tokenizer.tokenize(article)[:(max_len - 2)] + word_pieces = ['[CLS]'] + word_pieces + ['[SEP]'] + token_ids = tokenizer.convert_tokens_to_ids(word_pieces) + while len(token_ids) < max_len: + token_ids.append(pad_value) + assert len(token_ids) == max_len + return token_ids + + def get_seg_id(instance, max_len, sep_id): + _segs = [-1] + [i for i, idx in enumerate(instance['article']) if idx == sep_id] + segs = [_segs[i] - _segs[i - 1] for i in range(1, len(_segs))] + segment_id = [] + for i, length in enumerate(segs): + if i % 2 == 0: + segment_id += length * [0] + else: + segment_id += length * [1] + while len(segment_id) < max_len: + segment_id.append(0) + return segment_id + + def get_cls_id(instance, cls_id): + classification_id = [i for i, idx in enumerate(instance['article']) if idx == cls_id] + return classification_id + + def get_labels(instance): + labels = [0] * len(instance['cls_id']) + label_idx = list(filter(lambda x: x < len(instance['cls_id']), instance['label'])) + for idx in label_idx: + labels[idx] = 1 + return labels + + datasets = {} + for name in paths: + datasets[name] = self._load(paths[name]) + + # remove empty samples + datasets[name].drop(lambda ins: len(ins['article']) == 0 or len(ins['label']) == 0) + + # truncate articles + datasets[name].apply(lambda ins: truncate_articles(ins, self.max_nsents, self.max_ntokens), + new_field_name='article') + + # truncate labels + datasets[name].apply(truncate_labels, new_field_name='label') + + # tokenize and convert tokens to id + datasets[name].apply(lambda ins: bert_tokenize(ins, self.tokenizer, self.max_len, self.pad_id), + new_field_name='article') + + # get segment id + datasets[name].apply(lambda ins: get_seg_id(ins, self.max_len, self.sep_id), new_field_name='segment_id') + + # get classification id + datasets[name].apply(lambda ins: get_cls_id(ins, self.cls_id), new_field_name='cls_id') + + # get label + datasets[name].apply(get_labels, new_field_name='label') + + # rename filed + datasets[name].rename_field('article', Const.INPUTS(0)) + datasets[name].rename_field('segment_id', Const.INPUTS(1)) + datasets[name].rename_field('cls_id', Const.INPUTS(2)) + datasets[name].rename_field('lbael', Const.TARGET) + + # set input and target + datasets[name].set_input(Const.INPUTS(0), Const.INPUTS(1), Const.INPUTS(2)) + datasets[name].set_target(Const.TARGET) + + # set paddding value + datasets[name].set_pad_val('article', 0) + + return DataBundle(datasets=datasets) + + +class PreSummABSLoader(JsonLoader): + """ + + """ + + def __init__(self, args): + fields = { + 'text_ids': 'text_ids', + 'summary_ids': Const.TARGET, + 'segment_ids': 'segment_ids', + 'cls_ids': 'cls_ids', + 'label': 'label', + 'summary': 'summary' + } + self.max_pos = args.max_pos + self.max_summary_len = args.max_summary_len + + super(PreSummABSLoader, self).__init__(fields=fields) + + def _load(self, paths): + dataset = super(PreSummABSLoader, self)._load(paths) + return dataset + + def process(self, paths): + def truncate_input(instance): + text_ids = instance['text_ids'] + summary_ids = instance[Const.TARGET] + cls_ids = instance['cls_ids'] + segment_ids = instance['segment_ids'] + label = instance['label'] + tgt_txt = instance['summary'] + + end_id = [text_ids[-1]] + text_ids = text_ids[:-1][:self.max_pos - 1] + end_id + summary_ids = summary_ids[:self.max_summary_len][:-1] + [2] + segment_ids = segment_ids[:self.max_pos] + max_sent_id = bisect.bisect_left(cls_ids, self.max_pos) + label = label[:max_sent_id] + cls_ids = cls_ids[:max_sent_id] + + return {'text_ids': text_ids, Const.TARGET: summary_ids, "summary_ids": summary_ids, 'cls_ids': cls_ids, + 'segment_ids': segment_ids, 'label': label, 'tgt_txt': tgt_txt} + + print('Start loading datasets !!!') + start = time() + + # load datasets + datasets = {} + for name in paths: + datasets[name] = self._load(paths[name]) + print(name) + print(datasets[name][0]) + + datasets[name].apply_more(lambda ins: truncate_input(ins)) + + # set input and target + datasets[name].set_input('text_ids', 'segment_ids', 'cls_ids', 'tgt_txt', 'summary_ids') + datasets[name].set_target(Const.TARGET, 'tgt_txt') + + # set padding value + # 如果使用其他的预训练模型要替换这里的pad value + datasets[name].set_pad_val('text_ids', 0) + datasets[name].set_pad_val('segment_ids', 0) + datasets[name].set_pad_val('summary_ids', 0) + datasets[name].set_pad_val('cls_ids', -1) + datasets[name].set_pad_val(Const.TARGET, 0) + + print('Finished in {}'.format(timedelta(seconds=time() - start))) + + return DataBundle(datasets=datasets) + + +class PreSummEXTLoader(JsonLoader): + + def __init__(self, args): + fields = {'text_ids': 'text_ids', + 'segment_ids': 'segment_ids', + 'cls_ids': 'cls_ids', + 'label': Const.TARGET, + 'summary': 'summary', + 'text': 'text', + } + + self.max_pos = args.max_pos + self.max_summary_len = args.max_summary_len + + super(PreSummEXTLoader, self).__init__(fields=fields) + + def _load(self, paths): + dataset = super(PreSummEXTLoader, self)._load(paths) + return dataset + + def process(self, paths): + def get_seq_len(instance): + return len(instance['text_ids']) + + def truncate_input(instance): + text_ids = instance['text_ids'] + cls_ids = instance['cls_ids'] + segment_ids = instance['segment_ids'] + label = instance[Const.TARGET] + tgt_txt = instance['summary'] + src_txt = instance['text'] + + end_id = [text_ids[-1]] + text_ids = text_ids[:-1][:self.max_pos - 1] + end_id + segment_ids = segment_ids[:self.max_pos] + max_sent_id = bisect.bisect_left(cls_ids, self.max_pos) + label = label[:max_sent_id] + cls_ids = cls_ids[:max_sent_id] + assert len(label) == len( + cls_ids), "label and cls_ids size not match! Label size: {} while cls_ids size: {}".format(len(label), + len(cls_ids)) + + return {'text_ids': text_ids, 'cls_ids': cls_ids, 'src_txt': src_txt, + 'segment_ids': segment_ids, Const.TARGET: label, 'tgt_txt': tgt_txt} + + print('Start loading datasets !!!') + start = time() + + # load datasets + datasets = {} + for name in paths: + datasets[name] = self._load(paths[name]) + print(name) + print(datasets[name][0]) + + datasets[name].apply_more(lambda ins: truncate_input(ins)) + datasets[name].apply(get_seq_len, new_field_name='seq_len') + + # set input and target + datasets[name].set_input('text_ids', 'segment_ids', 'cls_ids') + datasets[name].set_target(Const.TARGET, 'tgt_txt', 'src_txt') + + # set padding value + datasets[name].set_pad_val('text_ids', 0) + datasets[name].set_pad_val('segment_ids', 0) + datasets[name].set_pad_val('cls_ids', -1) + datasets[name].set_pad_val(Const.TARGET, 0) + + print('Finished in {}'.format(timedelta(seconds=time() - start))) + + return DataBundle(datasets=datasets) diff --git a/fastSum/PreSum/metrics.py b/fastSum/PreSum/metrics.py new file mode 100644 index 0000000000000000000000000000000000000000..52fff2107ffcdba6e5613882f387017492ab7aa1 --- /dev/null +++ b/fastSum/PreSum/metrics.py @@ -0,0 +1,795 @@ +import numpy as np +import json +from os.path import join +import torch +import logging +import tempfile +import subprocess as sp +from datetime import timedelta +from time import time + +from pyrouge import Rouge155 +from pyrouge.utils import log + +from fastNLP.core.losses import LossBase +from fastNLP.core.metrics import MetricBase + +import torch.nn.functional as F +import torchsnooper +ROOT = "." +_ROUGE_PATH = '../resources/ROUGE/RELEASE-1.5.5' + + + +class LabelSmoothingLoss(torch.nn.Module): + """ + With label smoothing, + KL-divergence between q_{smoothed ground truth prob.}(w) + and p_{prob. computed by model}(w) is minimized. + """ + + def __init__(self, label_smoothing, tgt_vocab_size, ignore_index=-100): + assert 0.0 < label_smoothing <= 1.0 + self.padding_idx = ignore_index + super(LabelSmoothingLoss, self).__init__() + + smoothing_value = label_smoothing / (tgt_vocab_size - 2) + one_hot = torch.full((tgt_vocab_size,), smoothing_value) + one_hot[self.padding_idx] = 0 + self.register_buffer('one_hot', one_hot.unsqueeze(0)) + self.confidence = 1.0 - label_smoothing + + # @torchsnooper.snoop() + def forward(self, output, target): + """ + output (FloatTensor): batch_size x n_classes + target (LongTensor): batch_size + """ + # 我的修改:在原始代码基础上增加.to(torch.device(target.get_device())),注意这里要迁移到target在的特定device上,否则计算会出错 + # model_prob = self.one_hot.repeat(target.size(0), 1) + + model_prob = self.one_hot.repeat(target.size(0), 1).to(torch.device(target.get_device())) + model_prob.scatter_(1, target.unsqueeze(1), self.confidence) + model_prob.masked_fill_((target == self.padding_idx).unsqueeze(1), 0) + # print("LabelSmoothingLoss") + # print(output.shape, model_prob.shape) + return F.kl_div(output, model_prob, reduction='sum') + + +class MyNLLLoss(LossBase): + def __init__(self, generator, vocab_size, pred=None, target=None, label_smoothing=0.0, pad_id=0): + super(MyNLLLoss, self).__init__() + self._init_param_map(pred=pred, target=target) + self.padding_idx = pad_id + self.generator = generator + # self.loss_func = torch.nn.BCELoss(reduction='none') + if label_smoothing > 0: + self.loss_func = LabelSmoothingLoss( + label_smoothing, vocab_size, ignore_index=self.padding_idx + ) + else: + self.loss_func = torch.nn.NLLLoss( + ignore_index=self.padding_idx, reduction='sum' + ) + + def _bottle(self, _v): + return _v.view(-1, _v.size(2)) + + def get_loss(self, pred, target): + # print("MyNLLLoss") + # print(pred.shape, target.shape) + bottled_output = self._bottle(pred) + scores = self.generator(bottled_output) + # print(target.size()) + target = target[:, 1:] + gtruth = target.contiguous().view(-1) + + loss = self.loss_func(scores, gtruth) + # 不知道原来的这个mask是干什么用的 ?至少presum代码中没有用到mask + # loss = (loss * mask.float()).sum() + return loss + + +class ABSLossMetric(MetricBase): + def __init__(self, generator, vocab_size, pred=None, target=None, label_smoothing=0.0, pad_id=0): + super(ABSLossMetric, self).__init__() + self._init_param_map(pred=pred, target=target) + self.padding_idx = pad_id + self.generator = generator + # self.loss_func = torch.nn.BCELoss(reduction='none') + if label_smoothing > 0: + self.loss_func = LabelSmoothingLoss( + label_smoothing, vocab_size, ignore_index=self.padding_idx + ) + else: + self.loss_func = torch.nn.NLLLoss( + ignore_index=self.padding_idx, reduction='sum' + ) + self.avg_loss = 0.0 + self.nsamples = 0 + + def _bottle(self, _v): + return _v.view(-1, _v.size(2)) + + def evaluate(self, pred, target): + bottled_output = self._bottle(pred) + scores = self.generator(bottled_output) + target = target[:, 1:] + gtruth = target.contiguous().view(-1) + loss = self.loss_func(scores, gtruth) + + batch_size = pred.size(0) + + self.avg_loss += loss.item() + self.nsamples += batch_size + + def get_metric(self, reset=True): + self.avg_loss = self.avg_loss / self.nsamples + eval_result = {'loss': self.avg_loss} + if reset: + self.avg_loss = 0 + self.nsamples = 0 + return eval_result + + +class MyBCELoss(LossBase): + + def __init__(self, pred=None, target=None, mask=None): + super(MyBCELoss, self).__init__() + self._init_param_map(pred=pred, target=target, mask=mask) + self.loss_func = torch.nn.BCELoss(reduction='none') + + def get_loss(self, pred, target, mask): + loss = self.loss_func(pred, target.float()) + loss = (loss * mask.float()).sum() + return loss + + +class EXTLossMetric(MetricBase): + def __init__(self, pred=None, target=None, mask=None): + super(EXTLossMetric, self).__init__() + self._init_param_map(pred=pred, target=target, mask=mask) + self.loss_func = torch.nn.BCELoss(reduction='none') + self.avg_loss = 0.0 + self.nsamples = 0 + + def evaluate(self, pred, target, mask): + batch_size = pred.size(0) + loss = self.loss_func(pred, target.float()) + loss = (loss * mask.float()).sum() + self.avg_loss += loss + self.nsamples += batch_size + + def get_metric(self, reset=True): + self.avg_loss = self.avg_loss / self.nsamples + eval_result = {'loss': self.avg_loss} + if reset: + self.avg_loss = 0 + self.nsamples = 0 + return eval_result + + +import os +import datetime +from rouge import Rouge +from others.utils import pyrouge_score_all, pyrouge_score_all_multi, ranstr + + +def remend_score(scores_all): + remend_score = {} + for key, value in scores_all.items(): + for subkey, subvalue in value.items(): + remend_score[key + "-" + subkey] = subvalue + return remend_score + + +def make_html_safe(s): + s = s.replace("<", "<") + s = s.replace(">", ">") + if "<" in s or ">" in s: + print("-------html not safe sent:") + print(s) + return s + + +class RougeMetricEXT(MetricBase): + def __init__(self, n_ext=3, ngram_block=3, pred=None, src_txt=None, tgt_txt=None, mask=None, logger=None, + config=None): + super(RougeMetricEXT, self).__init__() + self._init_param_map(pred=pred, src_txt=src_txt, tgt_txt=tgt_txt, mask=mask) + + self.n_ext = n_ext + self.ngram_block = ngram_block + + self.referece = [] + self.prediction = [] + + self.logger = logger + self.config = config + + # Set model in validating mode. + def _get_ngrams(self, n, text): + ngram_set = set() + text_length = len(text) + max_index_ngram_start = text_length - n + for i in range(max_index_ngram_start + 1): + ngram_set.add(tuple(text[i:i + n])) + return ngram_set + + def _block_tri(self, c, p): + tri_c = self._get_ngrams(self.ngram_block, c.split()) + for s in p: + tri_s = self._get_ngrams(self.ngram_block, s.split()) + if len(tri_c.intersection(tri_s)) > 0: + return True + return False + + def evaluate(self, pred, src_txt, tgt_txt, mask): + sent_scores = pred + mask.float() + sent_scores = sent_scores.cpu().data.numpy() + selected_ids = np.argsort(-sent_scores, 1) + # selected_ids = np.sort(selected_ids,1) + + for i, idx in enumerate(selected_ids): + _pred = [] + if (len(src_txt[i]) == 0): + continue + for j in selected_ids[i][:len(src_txt[i])]: + if (j >= len(src_txt[i])): + continue + candidate = src_txt[i][j].strip() + if (self.ngram_block): + if (not self._block_tri(candidate, _pred)): + _pred.append(candidate) + else: + _pred.append(candidate) + + if len(_pred) == self.n_ext: + break + + _pred = '\n'.join([make_html_safe(sent) for sent in _pred]) + self.prediction.append(_pred) + + gold_sents = [] + for sent in tgt_txt[i].split(''): + if len(sent.strip()) > 0: + gold_sents.append(sent.strip()) + self.referece.append("\n".join(gold_sents)) + + def get_metric(self, reset=True): + pass + + +class RougeMetricABS(MetricBase): + def __init__(self, pred=None, tgt_txt=None, config=None, vocab=None, logger=None): + super().__init__() + + self.vocab = vocab + self.config = config + self._init_param_map(pred=pred, tgt_txt=tgt_txt) + + self.prediction = [] + self.referece = [] + + self.logger = logger + + def evaluate(self, pred, tgt_txt): + """ + + :param prediction: [batch, N] + :param text: [batch, N] + :param summary: [batch, N] + :return: + """ + + batch_size = len(pred) + + for b in range(batch_size): + # print(b,"----------------------",pred[b]) + # output_ids = [int(id) for id in pred[b]] + + pred_str = self.vocab.convert_ids_to_tokens([int(n) for n in pred[b][0]]) + pred_str = ' '.join(pred_str).replace(' ##', '').replace('[unused0]', '').replace('[unused3]', '').replace( + '[PAD]', '').replace('[unused1]', '').replace(r' +', ' ').replace(' [unused2] ', '').replace( + '[unused2]', '').strip() + gold_str = tgt_txt[b] + + pred_sents = [] + for sent in pred_str.split(''): + if len(sent.strip()) > 0: + pred_sents.append(sent.strip()) + + abstract_sentences = [] + for sent in gold_str.split(''): + if len(sent.strip()) > 0: + abstract_sentences.append(sent.strip()) + + self.prediction.append("\n".join([make_html_safe(sent) for sent in pred_sents])) + self.referece.append("\n".join([make_html_safe(sent) for sent in abstract_sentences])) + + def get_metric(self, reset=True): + pass + + +class FastRougeMetricABS(RougeMetricABS): + def __init__(self, pred=None, tgt_txt=None, config=None, vocab=None, logger=None): + super().__init__(pred, tgt_txt, config, vocab, logger) + + def get_metric(self, reset=True): + self.logger.info("[INFO] Hyps and Refer number is %d, %d", len(self.prediction), len(self.referece)) + if len(self.prediction) == 0 or len(self.referece) == 0: + self.logger.error("During testing, no hyps or refers is selected!") + return + rouge = Rouge() + scores_all = rouge.get_scores(self.prediction, self.referece, avg=True) + if reset: + self.prediction = [] + self.referece = [] + self.logger.info(scores_all) + scores_all = remend_score(scores_all) + return scores_all + + +class PyRougeMetricABS(RougeMetricABS): + def __init__(self, pred=None, tgt_txt=None, config=None, vocab=None, logger=None): + super().__init__(pred, tgt_txt, config, vocab, logger) + nowTime = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + self.tmp_path = os.path.join(os.path.join(ROOT,'tmp'), "tmp_" + nowTime + "_" + ranstr(6)) + + def get_metric(self, reset=True): + self.logger.info("[INFO] Hyps and Refer number is %d, %d", len(self.prediction), len(self.referece)) + if len(self.prediction) == 0 or len(self.referece) == 0: + self.logger.error("During testing, no hyps or refers is selected!") + return + if isinstance(self.referece[0], list): + self.logger.info("Multi Reference summaries!") + scores_all = pyrouge_score_all_multi(self.prediction, self.referece, self.config, self.tmp_path) + else: + scores_all = pyrouge_score_all(self.prediction, self.referece, self.config, self.tmp_path) + if reset: + self.prediction = [] + self.referece = [] + self.logger.info(scores_all) + return scores_all + + +class FastRougeMetricEXT(RougeMetricEXT): + def __init__(self, n_ext=3, ngram_block=3, pred=None, src_txt=None, tgt_txt=None, mask=None, logger=None, + config=None): + super().__init__(n_ext, ngram_block, pred, src_txt, tgt_txt, mask, logger, config) + + def get_metric(self, reset=True): + self.logger.info("[INFO] Hyps and Refer number is %d, %d", len(self.prediction), len(self.referece)) + if len(self.prediction) == 0 or len(self.referece) == 0: + self.logger.error("During testing, no hyps or refers is selected!") + return + rouge = Rouge() + scores_all = rouge.get_scores(self.prediction, self.referece, avg=True) + if reset: + self.prediction = [] + self.referece = [] + self.logger.info(scores_all) + scores_all = remend_score(scores_all) + return scores_all + + +class PyRougeMetricEXT(RougeMetricEXT): + def __init__(self, n_ext=3, ngram_block=3, pred=None, src_txt=None, tgt_txt=None, mask=None, logger=None, + config=None): + super().__init__(n_ext, ngram_block, pred, src_txt, tgt_txt, mask, logger, config) + nowTime = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + self.tmp_path = os.path.join(os.path.join(ROOT,'tmp'), "tmp_" + nowTime + "_" + ranstr(6)) + + def get_metric(self, reset=True): + self.logger.info("[INFO] Hyps and Refer number is %d, %d", len(self.prediction), len(self.referece)) + if len(self.prediction) == 0 or len(self.referece) == 0: + self.logger.error("During testing, no hyps or refers is selected!") + return + if isinstance(self.referece[0], list): + self.logger.info("Multi Reference summaries!") + scores_all = pyrouge_score_all_multi(self.prediction, self.referece, self.config, self.tmp_path) + else: + scores_all = pyrouge_score_all(self.prediction, self.referece, self.config, self.tmp_path) + if reset: + self.prediction = [] + self.referece = [] + self.logger.info(scores_all) + return scores_all + +import numpy as np +import json +from os.path import join +import torch +import logging +import tempfile +import subprocess as sp +from datetime import timedelta +from time import time + +from pyrouge import Rouge155 +from pyrouge.utils import log + +from fastNLP.core.losses import LossBase +from fastNLP.core.metrics import MetricBase + +import torch.nn.functional as F +import torchsnooper + +_ROUGE_PATH = '/path/to/RELEASE-1.5.5' +ROOT = "root/path" + + +class LabelSmoothingLoss(torch.nn.Module): + """ + With label smoothing, + KL-divergence between q_{smoothed ground truth prob.}(w) + and p_{prob. computed by model}(w) is minimized. + """ + + def __init__(self, label_smoothing, tgt_vocab_size, ignore_index=-100): + assert 0.0 < label_smoothing <= 1.0 + self.padding_idx = ignore_index + super(LabelSmoothingLoss, self).__init__() + + smoothing_value = label_smoothing / (tgt_vocab_size - 2) + one_hot = torch.full((tgt_vocab_size,), smoothing_value) + one_hot[self.padding_idx] = 0 + self.register_buffer('one_hot', one_hot.unsqueeze(0)) + self.confidence = 1.0 - label_smoothing + + # @torchsnooper.snoop() + def forward(self, output, target): + """ + output (FloatTensor): batch_size x n_classes + target (LongTensor): batch_size + """ + # 我的修改:在原始代码基础上增加.to(torch.device(target.get_device())),注意这里要迁移到target在的特定device上,否则计算会出错 + # model_prob = self.one_hot.repeat(target.size(0), 1) + + model_prob = self.one_hot.repeat(target.size(0), 1).to(torch.device(target.get_device())) + model_prob.scatter_(1, target.unsqueeze(1), self.confidence) + model_prob.masked_fill_((target == self.padding_idx).unsqueeze(1), 0) + # print("LabelSmoothingLoss") + # print(output.shape, model_prob.shape) + return F.kl_div(output, model_prob, reduction='sum') + + +class MyNLLLoss(LossBase): + def __init__(self, generator, vocab_size, pred=None, target=None, label_smoothing=0.0, pad_id=0): + super(MyNLLLoss, self).__init__() + self._init_param_map(pred=pred, target=target) + self.padding_idx = pad_id + self.generator = generator + # self.loss_func = torch.nn.BCELoss(reduction='none') + if label_smoothing > 0: + self.loss_func = LabelSmoothingLoss( + label_smoothing, vocab_size, ignore_index=self.padding_idx + ) + else: + self.loss_func = torch.nn.NLLLoss( + ignore_index=self.padding_idx, reduction='sum' + ) + + def _bottle(self, _v): + return _v.view(-1, _v.size(2)) + + def get_loss(self, pred, target): + # print("MyNLLLoss") + # print(pred.shape, target.shape) + bottled_output = self._bottle(pred) + scores = self.generator(bottled_output) + # print(target.size()) + target = target[:, 1:] + gtruth = target.contiguous().view(-1) + + loss = self.loss_func(scores, gtruth) + # 不知道原来的这个mask是干什么用的 ?至少presum代码中没有用到mask + # loss = (loss * mask.float()).sum() + return loss + + +class ABSLossMetric(MetricBase): + def __init__(self, generator, vocab_size, pred=None, target=None, label_smoothing=0.0, pad_id=0): + super(ABSLossMetric, self).__init__() + self._init_param_map(pred=pred, target=target) + self.padding_idx = pad_id + self.generator = generator + # self.loss_func = torch.nn.BCELoss(reduction='none') + if label_smoothing > 0: + self.loss_func = LabelSmoothingLoss( + label_smoothing, vocab_size, ignore_index=self.padding_idx + ) + else: + self.loss_func = torch.nn.NLLLoss( + ignore_index=self.padding_idx, reduction='sum' + ) + self.avg_loss = 0.0 + self.nsamples = 0 + + def _bottle(self, _v): + return _v.view(-1, _v.size(2)) + + def evaluate(self, pred, target): + bottled_output = self._bottle(pred) + scores = self.generator(bottled_output) + target = target[:, 1:] + gtruth = target.contiguous().view(-1) + loss = self.loss_func(scores, gtruth) + + batch_size = pred.size(0) + + self.avg_loss += loss.item() + self.nsamples += batch_size + + def get_metric(self, reset=True): + self.avg_loss = self.avg_loss / self.nsamples + eval_result = {'loss': self.avg_loss} + if reset: + self.avg_loss = 0 + self.nsamples = 0 + return eval_result + + +class MyBCELoss(LossBase): + + def __init__(self, pred=None, target=None, mask=None): + super(MyBCELoss, self).__init__() + self._init_param_map(pred=pred, target=target, mask=mask) + self.loss_func = torch.nn.BCELoss(reduction='none') + + def get_loss(self, pred, target, mask): + loss = self.loss_func(pred, target.float()) + loss = (loss * mask.float()).sum() + return loss + + +class EXTLossMetric(MetricBase): + def __init__(self, pred=None, target=None, mask=None): + super(EXTLossMetric, self).__init__() + self._init_param_map(pred=pred, target=target, mask=mask) + self.loss_func = torch.nn.BCELoss(reduction='none') + self.avg_loss = 0.0 + self.nsamples = 0 + + def evaluate(self, pred, target, mask): + batch_size = pred.size(0) + loss = self.loss_func(pred, target.float()) + loss = (loss * mask.float()).sum() + self.avg_loss += loss + self.nsamples += batch_size + + def get_metric(self, reset=True): + self.avg_loss = self.avg_loss / self.nsamples + eval_result = {'loss': self.avg_loss} + if reset: + self.avg_loss = 0 + self.nsamples = 0 + return eval_result + + +import os +import datetime +from rouge import Rouge +from others.utils import pyrouge_score_all, pyrouge_score_all_multi, ranstr + + +def remend_score(scores_all): + remend_score = {} + for key, value in scores_all.items(): + for subkey, subvalue in value.items(): + remend_score[key + "-" + subkey] = subvalue + return remend_score + + +def make_html_safe(s): + s = s.replace("<", "<") + s = s.replace(">", ">") + if "<" in s or ">" in s: + print("-------html not safe sent:") + print(s) + return s + + +class RougeMetricEXT(MetricBase): + def __init__(self, n_ext=3, ngram_block=3, pred=None, src_txt=None, tgt_txt=None, mask=None, logger=None, + config=None): + super(RougeMetricEXT, self).__init__() + self._init_param_map(pred=pred, src_txt=src_txt, tgt_txt=tgt_txt, mask=mask) + + self.n_ext = n_ext + self.ngram_block = ngram_block + + self.referece = [] + self.prediction = [] + + self.logger = logger + self.config = config + + # Set model in validating mode. + def _get_ngrams(self, n, text): + ngram_set = set() + text_length = len(text) + max_index_ngram_start = text_length - n + for i in range(max_index_ngram_start + 1): + ngram_set.add(tuple(text[i:i + n])) + return ngram_set + + def _block_tri(self, c, p): + tri_c = self._get_ngrams(self.ngram_block, c.split()) + for s in p: + tri_s = self._get_ngrams(self.ngram_block, s.split()) + if len(tri_c.intersection(tri_s)) > 0: + return True + return False + + def evaluate(self, pred, src_txt, tgt_txt, mask): + sent_scores = pred + mask.float() + sent_scores = sent_scores.cpu().data.numpy() + selected_ids = np.argsort(-sent_scores, 1) + # selected_ids = np.sort(selected_ids,1) + + for i, idx in enumerate(selected_ids): + _pred = [] + if (len(src_txt[i]) == 0): + continue + for j in selected_ids[i][:len(src_txt[i])]: + if (j >= len(src_txt[i])): + continue + candidate = src_txt[i][j].strip() + if (self.ngram_block): + if (not self._block_tri(candidate, _pred)): + _pred.append(candidate) + else: + _pred.append(candidate) + + if len(_pred) == self.n_ext: + break + + _pred = '\n'.join([make_html_safe(sent) for sent in _pred]) + self.prediction.append(_pred) + + gold_sents = [] + for sent in tgt_txt[i].split(''): + if len(sent.strip()) > 0: + gold_sents.append(sent.strip()) + self.referece.append("\n".join(gold_sents)) + + def get_metric(self, reset=True): + pass + + +class RougeMetricABS(MetricBase): + def __init__(self, pred=None, tgt_txt=None, config=None, vocab=None, logger=None): + super().__init__() + + self.vocab = vocab + self.config = config + self._init_param_map(pred=pred, tgt_txt=tgt_txt) + + self.prediction = [] + self.referece = [] + + self.logger = logger + + def evaluate(self, pred, tgt_txt): + """ + + :param prediction: [batch, N] + :param text: [batch, N] + :param summary: [batch, N] + :return: + """ + + batch_size = len(pred) + + for b in range(batch_size): + # print(b,"----------------------",pred[b]) + # output_ids = [int(id) for id in pred[b]] + + pred_str = self.vocab.convert_ids_to_tokens([int(n) for n in pred[b][0]]) + pred_str = ' '.join(pred_str).replace(' ##', '').replace('[unused0]', '').replace('[unused3]', '').replace( + '[PAD]', '').replace('[unused1]', '').replace(r' +', ' ').replace(' [unused2] ', '').replace( + '[unused2]', '').strip() + gold_str = tgt_txt[b] + + pred_sents = [] + for sent in pred_str.split(''): + if len(sent.strip()) > 0: + pred_sents.append(sent.strip()) + + abstract_sentences = [] + for sent in gold_str.split(''): + if len(sent.strip()) > 0: + abstract_sentences.append(sent.strip()) + + self.prediction.append("\n".join([make_html_safe(sent) for sent in pred_sents])) + self.referece.append("\n".join([make_html_safe(sent) for sent in abstract_sentences])) + + def get_metric(self, reset=True): + pass + + +class FastRougeMetricABS(RougeMetricABS): + def __init__(self, pred=None, tgt_txt=None, config=None, vocab=None, logger=None): + super().__init__(pred, tgt_txt, config, vocab, logger) + + def get_metric(self, reset=True): + self.logger.info("[INFO] Hyps and Refer number is %d, %d", len(self.prediction), len(self.referece)) + if len(self.prediction) == 0 or len(self.referece) == 0: + self.logger.error("During testing, no hyps or refers is selected!") + return + rouge = Rouge() + scores_all = rouge.get_scores(self.prediction, self.referece, avg=True) + if reset: + self.prediction = [] + self.referece = [] + self.logger.info(scores_all) + scores_all = remend_score(scores_all) + return scores_all + + +class PyRougeMetricABS(RougeMetricABS): + def __init__(self, pred=None, tgt_txt=None, config=None, vocab=None, logger=None): + super().__init__(pred, tgt_txt, config, vocab, logger) + nowTime = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + self.tmp_path = os.path.join(os.path.join(ROOT,'tmp'), "tmp_" + nowTime + "_" + ranstr(6)) + + def get_metric(self, reset=True): + self.logger.info("[INFO] Hyps and Refer number is %d, %d", len(self.prediction), len(self.referece)) + if len(self.prediction) == 0 or len(self.referece) == 0: + self.logger.error("During testing, no hyps or refers is selected!") + return + if isinstance(self.referece[0], list): + self.logger.info("Multi Reference summaries!") + scores_all = pyrouge_score_all_multi(self.prediction, self.referece, self.config, self.tmp_path) + else: + scores_all = pyrouge_score_all(self.prediction, self.referece, self.config, self.tmp_path) + if reset: + self.prediction = [] + self.referece = [] + self.logger.info(scores_all) + return scores_all + + +class FastRougeMetricEXT(RougeMetricEXT): + def __init__(self, n_ext=3, ngram_block=3, pred=None, src_txt=None, tgt_txt=None, mask=None, logger=None, + config=None): + super().__init__(n_ext, ngram_block, pred, src_txt, tgt_txt, mask, logger, config) + + def get_metric(self, reset=True): + self.logger.info("[INFO] Hyps and Refer number is %d, %d", len(self.prediction), len(self.referece)) + if len(self.prediction) == 0 or len(self.referece) == 0: + self.logger.error("During testing, no hyps or refers is selected!") + return + rouge = Rouge() + scores_all = rouge.get_scores(self.prediction, self.referece, avg=True) + if reset: + self.prediction = [] + self.referece = [] + self.logger.info(scores_all) + scores_all = remend_score(scores_all) + return scores_all + + +class PyRougeMetricEXT(RougeMetricEXT): + def __init__(self, n_ext=3, ngram_block=3, pred=None, src_txt=None, tgt_txt=None, mask=None, logger=None, + config=None): + super().__init__(n_ext, ngram_block, pred, src_txt, tgt_txt, mask, logger, config) + nowTime = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + self.tmp_path = os.path.join(os.path.join(ROOT,'tmp'), "tmp_" + nowTime + "_" + ranstr(6)) + + def get_metric(self, reset=True): + self.logger.info("[INFO] Hyps and Refer number is %d, %d", len(self.prediction), len(self.referece)) + if len(self.prediction) == 0 or len(self.referece) == 0: + self.logger.error("During testing, no hyps or refers is selected!") + return + if isinstance(self.referece[0], list): + self.logger.info("Multi Reference summaries!") + scores_all = pyrouge_score_all_multi(self.prediction, self.referece, self.config, self.tmp_path) + else: + scores_all = pyrouge_score_all(self.prediction, self.referece, self.config, self.tmp_path) + if reset: + self.prediction = [] + self.referece = [] + self.logger.info(scores_all) + return scores_all diff --git a/fastSum/PreSum/models/__init__.py b/fastSum/PreSum/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/PreSum/models/decoder.py b/fastSum/PreSum/models/decoder.py new file mode 100644 index 0000000000000000000000000000000000000000..03e93bf433383b8fdfd41be7e76c39a72cf460c7 --- /dev/null +++ b/fastSum/PreSum/models/decoder.py @@ -0,0 +1,627 @@ +<<<<<<< HEAD +""" +Implementation of "Attention is All You Need" +""" + +import torch +import torch.nn as nn +import numpy as np + +from models.encoder import PositionalEncoding +from models.neural import MultiHeadedAttention, PositionwiseFeedForward, DecoderState + +MAX_SIZE = 5000 + + +class TransformerDecoderLayer(nn.Module): + """ + Args: + d_model (int): the dimension of keys/values/queries in + MultiHeadedAttention, also the input size of + the first-layer of the PositionwiseFeedForward. + heads (int): the number of heads for MultiHeadedAttention. + d_ff (int): the second-layer of the PositionwiseFeedForward. + dropout (float): dropout probability(0-1.0). + self_attn_type (string): type of self-attention scaled-dot, average + """ + + def __init__(self, d_model, heads, d_ff, dropout): + super(TransformerDecoderLayer, self).__init__() + + self.self_attn = MultiHeadedAttention( + heads, d_model, dropout=dropout) + + self.context_attn = MultiHeadedAttention( + heads, d_model, dropout=dropout) + self.feed_forward = PositionwiseFeedForward(d_model, d_ff, dropout) + self.layer_norm_1 = nn.LayerNorm(d_model, eps=1e-6) + self.layer_norm_2 = nn.LayerNorm(d_model, eps=1e-6) + self.drop = nn.Dropout(dropout) + mask = self._get_attn_subsequent_mask(MAX_SIZE) + # Register self.mask as a buffer in TransformerDecoderLayer, so + # it gets TransformerDecoderLayer's cuda behavior automatically. + self.register_buffer('mask', mask) + + def forward(self, inputs, memory_bank, src_pad_mask, tgt_pad_mask, + previous_input=None, layer_cache=None, step=None): + """ + Args: + inputs (`FloatTensor`): `[batch_size x 1 x model_dim]` + memory_bank (`FloatTensor`): `[batch_size x src_len x model_dim]` + src_pad_mask (`LongTensor`): `[batch_size x 1 x src_len]` + tgt_pad_mask (`LongTensor`): `[batch_size x 1 x 1]` + + Returns: + (`FloatTensor`, `FloatTensor`, `FloatTensor`): + + * output `[batch_size x 1 x model_dim]` + * attn `[batch_size x 1 x src_len]` + * all_input `[batch_size x current_step x model_dim]` + + """ + + dec_mask = torch.gt(tgt_pad_mask + + self.mask[:, :tgt_pad_mask.size(1), + :tgt_pad_mask.size(1)], 0) + # print("TransformerDecoderLayer.forward: ") + # print(inputs.size()) + input_norm = self.layer_norm_1(inputs) + all_input = input_norm + if previous_input is not None: + # print(previous_input.size(), input_norm.size()) + all_input = torch.cat((previous_input, input_norm), dim=1) + dec_mask = None + + query = self.self_attn(all_input, all_input, input_norm, + mask=dec_mask, + layer_cache=layer_cache, + type="self") + + query = self.drop(query) + inputs + + query_norm = self.layer_norm_2(query) + mid = self.context_attn(memory_bank, memory_bank, query_norm, + mask=src_pad_mask, + layer_cache=layer_cache, + type="context") + + output = self.feed_forward(self.drop(mid) + query) + return output, all_input + # return output + + def _get_attn_subsequent_mask(self, size): + """ + Get an attention mask to avoid using the subsequent info. + + Args: + size: int + + Returns: + (`LongTensor`): + + * subsequent_mask `[1 x size x size]` + """ + attn_shape = (1, size, size) + subsequent_mask = np.triu(np.ones(attn_shape), k=1).astype('uint8') + subsequent_mask = torch.from_numpy(subsequent_mask) + return subsequent_mask + + +class TransformerDecoder(nn.Module): + """ + The Transformer decoder from "Attention is All You Need". + + + .. mermaid:: + + graph BT + A[input] + B[multi-head self-attn] + BB[multi-head src-attn] + C[feed forward] + O[output] + A --> B + B --> BB + BB --> C + C --> O + + + Args: + num_layers (int): number of encoder layers. + d_model (int): size of the model + heads (int): number of heads + d_ff (int): size of the inner FF layer + dropout (float): dropout parameters + embeddings (:obj:`onmt.modules.Embeddings`): + embeddings to use, should have positional encodings + attn_type (str): if using a seperate copy attention + """ + + def __init__(self, num_layers, d_model, heads, d_ff, dropout, embeddings): + super(TransformerDecoder, self).__init__() + + # Basic attributes. + self.decoder_type = 'transformer' + self.num_layers = num_layers + self.embeddings = embeddings + self.pos_emb = PositionalEncoding(dropout, self.embeddings.embedding_dim) + + # Build TransformerDecoder. + self.transformer_layers = nn.ModuleList( + [TransformerDecoderLayer(d_model, heads, d_ff, dropout) + for _ in range(num_layers)]) + + self.layer_norm = nn.LayerNorm(d_model, eps=1e-6) + + def forward(self, tgt, memory_bank, state, memory_lengths=None, + step=None, cache=None, memory_masks=None): + """ + See :obj:`onmt.modules.RNNDecoderBase.forward()` + """ + + src_words = state.src + tgt_words = tgt + # print("tgt size: ", tgt.size()) + src_batch, src_len = src_words.size() + tgt_batch, tgt_len = tgt_words.size() + + # Run the forward pass of the TransformerDecoder. + # emb = self.embeddings(tgt, step=step) + emb = self.embeddings(tgt) + assert emb.dim() == 3 # len x batch x embedding_dim + + output = self.pos_emb(emb, step) + # print("output before for roop: ", output.size()) + + src_memory_bank = memory_bank + padding_idx = self.embeddings.padding_idx + tgt_pad_mask = tgt_words.data.eq(padding_idx).unsqueeze(1) \ + .expand(tgt_batch, tgt_len, tgt_len) + + if (not memory_masks is None): + src_len = memory_masks.size(-1) + src_pad_mask = memory_masks.expand(src_batch, tgt_len, src_len) + + else: + src_pad_mask = src_words.data.eq(padding_idx).unsqueeze(1) \ + .expand(src_batch, tgt_len, src_len) + + if state.cache is None: + saved_inputs = [] + # print("state.cache:", state.cache) + for i in range(self.num_layers): + prev_layer_input = None + if state.cache is None: + if state.previous_input is not None: + # print("state.previous_input: ", state.previous_input.size()) + # print("state.previous_layer_inputs[i]:", state.previous_layer_inputs[i].size()) + prev_layer_input = state.previous_layer_inputs[i] + output, all_input \ + = self.transformer_layers[i]( + output, src_memory_bank, + src_pad_mask, tgt_pad_mask, + previous_input=prev_layer_input, + layer_cache=state.cache["layer_{}".format(i)] + if state.cache is not None else None, + step=step) + # if prev_layer_input is None: + # print("prev_layer_input is None") + # else: + # print("output size: {} previous_input_size: {}".format(output.size(), prev_layer_input.size())) + if state.cache is None: + saved_inputs.append(all_input) + + if state.cache is None: + saved_inputs = torch.stack(saved_inputs) + + output = self.layer_norm(output) + + # Process the result and update the attentions. + + if state.cache is None: + state = state.update_state(tgt, saved_inputs) + + return output, state + + def init_decoder_state(self, src, memory_bank, + with_cache=False): + """ Init decoder state """ + state = TransformerDecoderState(src) + if with_cache: + state._init_cache(memory_bank, self.num_layers) + return state + + +class TransformerDecoderState(DecoderState): + """ Transformer Decoder state base class """ + + def __init__(self, src): + """ + Args: + src (FloatTensor): a sequence of source words tensors + with optional feature tensors, of size (len x batch). + """ + self.src = src + self.previous_input = None + self.previous_layer_inputs = None + self.cache = None + + @property + def _all(self): + """ + Contains attributes that need to be updated in self.beam_update(). + """ + if (self.previous_input is not None + and self.previous_layer_inputs is not None): + return (self.previous_input, + self.previous_layer_inputs, + self.src) + else: + return (self.src,) + + def detach(self): + if self.previous_input is not None: + self.previous_input = self.previous_input.detach() + if self.previous_layer_inputs is not None: + self.previous_layer_inputs = self.previous_layer_inputs.detach() + self.src = self.src.detach() + + def update_state(self, new_input, previous_layer_inputs): + state = TransformerDecoderState(self.src) + state.previous_input = new_input + state.previous_layer_inputs = previous_layer_inputs + return state + + def _init_cache(self, memory_bank, num_layers): + self.cache = {} + + for l in range(num_layers): + layer_cache = { + "memory_keys": None, + "memory_values": None + } + layer_cache["self_keys"] = None + layer_cache["self_values"] = None + self.cache["layer_{}".format(l)] = layer_cache + + def repeat_beam_size_times(self, beam_size): + """ Repeat beam_size times along batch dimension. """ + self.src = self.src.data.repeat(1, beam_size, 1) + + def map_batch_fn(self, fn): + def _recursive_map(struct, batch_dim=0): + for k, v in struct.items(): + if v is not None: + if isinstance(v, dict): + _recursive_map(v) + else: + struct[k] = fn(v, batch_dim) + + # print("self.src.size()", self.src.size()) + self.src = fn(self.src, 0) + # print("self.src.size() after fn:", self.src.size()) + tmp = [] + # 我自己新加的,原来的presum这里对previous_layer_inputs没有做处理,导致后面size not match + if self.previous_input is not None: + for i in range(len(self.previous_layer_inputs)): + # print("map_batch_fn", self.previous_layer_inputs[i].size()) + + tmp.append(fn(self.previous_layer_inputs[i], 0)) + self.previous_layer_inputs = tmp + + if self.cache is not None: + _recursive_map(self.cache) +======= +""" +Implementation of "Attention is All You Need" +""" + +import torch +import torch.nn as nn +import numpy as np + +from models.encoder import PositionalEncoding +from models.neural import MultiHeadedAttention, PositionwiseFeedForward, DecoderState + +MAX_SIZE = 5000 + + +class TransformerDecoderLayer(nn.Module): + """ + Args: + d_model (int): the dimension of keys/values/queries in + MultiHeadedAttention, also the input size of + the first-layer of the PositionwiseFeedForward. + heads (int): the number of heads for MultiHeadedAttention. + d_ff (int): the second-layer of the PositionwiseFeedForward. + dropout (float): dropout probability(0-1.0). + self_attn_type (string): type of self-attention scaled-dot, average + """ + + def __init__(self, d_model, heads, d_ff, dropout): + super(TransformerDecoderLayer, self).__init__() + + self.self_attn = MultiHeadedAttention( + heads, d_model, dropout=dropout) + + self.context_attn = MultiHeadedAttention( + heads, d_model, dropout=dropout) + self.feed_forward = PositionwiseFeedForward(d_model, d_ff, dropout) + self.layer_norm_1 = nn.LayerNorm(d_model, eps=1e-6) + self.layer_norm_2 = nn.LayerNorm(d_model, eps=1e-6) + self.drop = nn.Dropout(dropout) + mask = self._get_attn_subsequent_mask(MAX_SIZE) + # Register self.mask as a buffer in TransformerDecoderLayer, so + # it gets TransformerDecoderLayer's cuda behavior automatically. + self.register_buffer('mask', mask) + + def forward(self, inputs, memory_bank, src_pad_mask, tgt_pad_mask, + previous_input=None, layer_cache=None, step=None): + """ + Args: + inputs (`FloatTensor`): `[batch_size x 1 x model_dim]` + memory_bank (`FloatTensor`): `[batch_size x src_len x model_dim]` + src_pad_mask (`LongTensor`): `[batch_size x 1 x src_len]` + tgt_pad_mask (`LongTensor`): `[batch_size x 1 x 1]` + + Returns: + (`FloatTensor`, `FloatTensor`, `FloatTensor`): + + * output `[batch_size x 1 x model_dim]` + * attn `[batch_size x 1 x src_len]` + * all_input `[batch_size x current_step x model_dim]` + + """ + + dec_mask = torch.gt(tgt_pad_mask + + self.mask[:, :tgt_pad_mask.size(1), + :tgt_pad_mask.size(1)], 0) + # print("TransformerDecoderLayer.forward: ") + # print(inputs.size()) + input_norm = self.layer_norm_1(inputs) + all_input = input_norm + if previous_input is not None: + # print(previous_input.size(), input_norm.size()) + all_input = torch.cat((previous_input, input_norm), dim=1) + dec_mask = None + + query = self.self_attn(all_input, all_input, input_norm, + mask=dec_mask, + layer_cache=layer_cache, + type="self") + + query = self.drop(query) + inputs + + query_norm = self.layer_norm_2(query) + mid = self.context_attn(memory_bank, memory_bank, query_norm, + mask=src_pad_mask, + layer_cache=layer_cache, + type="context") + + output = self.feed_forward(self.drop(mid) + query) + return output, all_input + # return output + + def _get_attn_subsequent_mask(self, size): + """ + Get an attention mask to avoid using the subsequent info. + + Args: + size: int + + Returns: + (`LongTensor`): + + * subsequent_mask `[1 x size x size]` + """ + attn_shape = (1, size, size) + subsequent_mask = np.triu(np.ones(attn_shape), k=1).astype('uint8') + subsequent_mask = torch.from_numpy(subsequent_mask) + return subsequent_mask + + +class TransformerDecoder(nn.Module): + """ + The Transformer decoder from "Attention is All You Need". + + + .. mermaid:: + + graph BT + A[input] + B[multi-head self-attn] + BB[multi-head src-attn] + C[feed forward] + O[output] + A --> B + B --> BB + BB --> C + C --> O + + + Args: + num_layers (int): number of encoder layers. + d_model (int): size of the model + heads (int): number of heads + d_ff (int): size of the inner FF layer + dropout (float): dropout parameters + embeddings (:obj:`onmt.modules.Embeddings`): + embeddings to use, should have positional encodings + attn_type (str): if using a seperate copy attention + """ + + def __init__(self, num_layers, d_model, heads, d_ff, dropout, embeddings): + super(TransformerDecoder, self).__init__() + + # Basic attributes. + self.decoder_type = 'transformer' + self.num_layers = num_layers + self.embeddings = embeddings + self.pos_emb = PositionalEncoding(dropout, self.embeddings.embedding_dim) + + # Build TransformerDecoder. + self.transformer_layers = nn.ModuleList( + [TransformerDecoderLayer(d_model, heads, d_ff, dropout) + for _ in range(num_layers)]) + + self.layer_norm = nn.LayerNorm(d_model, eps=1e-6) + + def forward(self, tgt, memory_bank, state, memory_lengths=None, + step=None, cache=None, memory_masks=None): + """ + See :obj:`onmt.modules.RNNDecoderBase.forward()` + """ + + src_words = state.src + tgt_words = tgt + # print("tgt size: ", tgt.size()) + src_batch, src_len = src_words.size() + tgt_batch, tgt_len = tgt_words.size() + + # Run the forward pass of the TransformerDecoder. + # emb = self.embeddings(tgt, step=step) + emb = self.embeddings(tgt) + assert emb.dim() == 3 # len x batch x embedding_dim + + output = self.pos_emb(emb, step) + # print("output before for roop: ", output.size()) + + src_memory_bank = memory_bank + padding_idx = self.embeddings.padding_idx + tgt_pad_mask = tgt_words.data.eq(padding_idx).unsqueeze(1) \ + .expand(tgt_batch, tgt_len, tgt_len) + + if (not memory_masks is None): + src_len = memory_masks.size(-1) + src_pad_mask = memory_masks.expand(src_batch, tgt_len, src_len) + + else: + src_pad_mask = src_words.data.eq(padding_idx).unsqueeze(1) \ + .expand(src_batch, tgt_len, src_len) + + if state.cache is None: + saved_inputs = [] + # print("state.cache:", state.cache) + for i in range(self.num_layers): + prev_layer_input = None + if state.cache is None: + if state.previous_input is not None: + # print("state.previous_input: ", state.previous_input.size()) + # print("state.previous_layer_inputs[i]:", state.previous_layer_inputs[i].size()) + prev_layer_input = state.previous_layer_inputs[i] + output, all_input \ + = self.transformer_layers[i]( + output, src_memory_bank, + src_pad_mask, tgt_pad_mask, + previous_input=prev_layer_input, + layer_cache=state.cache["layer_{}".format(i)] + if state.cache is not None else None, + step=step) + # if prev_layer_input is None: + # print("prev_layer_input is None") + # else: + # print("output size: {} previous_input_size: {}".format(output.size(), prev_layer_input.size())) + if state.cache is None: + saved_inputs.append(all_input) + + if state.cache is None: + saved_inputs = torch.stack(saved_inputs) + + output = self.layer_norm(output) + + # Process the result and update the attentions. + + if state.cache is None: + state = state.update_state(tgt, saved_inputs) + + return output, state + + def init_decoder_state(self, src, memory_bank, + with_cache=False): + """ Init decoder state """ + state = TransformerDecoderState(src) + if with_cache: + state._init_cache(memory_bank, self.num_layers) + return state + + +class TransformerDecoderState(DecoderState): + """ Transformer Decoder state base class """ + + def __init__(self, src): + """ + Args: + src (FloatTensor): a sequence of source words tensors + with optional feature tensors, of size (len x batch). + """ + self.src = src + self.previous_input = None + self.previous_layer_inputs = None + self.cache = None + + @property + def _all(self): + """ + Contains attributes that need to be updated in self.beam_update(). + """ + if (self.previous_input is not None + and self.previous_layer_inputs is not None): + return (self.previous_input, + self.previous_layer_inputs, + self.src) + else: + return (self.src,) + + def detach(self): + if self.previous_input is not None: + self.previous_input = self.previous_input.detach() + if self.previous_layer_inputs is not None: + self.previous_layer_inputs = self.previous_layer_inputs.detach() + self.src = self.src.detach() + + def update_state(self, new_input, previous_layer_inputs): + state = TransformerDecoderState(self.src) + state.previous_input = new_input + state.previous_layer_inputs = previous_layer_inputs + return state + + def _init_cache(self, memory_bank, num_layers): + self.cache = {} + + for l in range(num_layers): + layer_cache = { + "memory_keys": None, + "memory_values": None + } + layer_cache["self_keys"] = None + layer_cache["self_values"] = None + self.cache["layer_{}".format(l)] = layer_cache + + def repeat_beam_size_times(self, beam_size): + """ Repeat beam_size times along batch dimension. """ + self.src = self.src.data.repeat(1, beam_size, 1) + + def map_batch_fn(self, fn): + def _recursive_map(struct, batch_dim=0): + for k, v in struct.items(): + if v is not None: + if isinstance(v, dict): + _recursive_map(v) + else: + struct[k] = fn(v, batch_dim) + + # print("self.src.size()", self.src.size()) + self.src = fn(self.src, 0) + # print("self.src.size() after fn:", self.src.size()) + tmp = [] + # 我自己新加的,原来的presum这里对previous_layer_inputs没有做处理,导致后面size not match + if self.previous_input is not None: + for i in range(len(self.previous_layer_inputs)): + # print("map_batch_fn", self.previous_layer_inputs[i].size()) + + tmp.append(fn(self.previous_layer_inputs[i], 0)) + self.previous_layer_inputs = tmp + + if self.cache is not None: + _recursive_map(self.cache) +>>>>>>> bcb618ae9faf5d35f3147b05b34268a73808238a diff --git a/fastSum/PreSum/models/encoder.py b/fastSum/PreSum/models/encoder.py new file mode 100644 index 0000000000000000000000000000000000000000..00be85799a5feafd89671abc170a47bddaf2867a --- /dev/null +++ b/fastSum/PreSum/models/encoder.py @@ -0,0 +1,209 @@ +<<<<<<< HEAD +import math + +import torch +import torch.nn as nn + +from models.neural import MultiHeadedAttention, PositionwiseFeedForward + + +class Classifier(nn.Module): + def __init__(self, hidden_size): + super(Classifier, self).__init__() + self.linear1 = nn.Linear(hidden_size, 1) + self.sigmoid = nn.Sigmoid() + + def forward(self, x, mask_cls): + h = self.linear1(x).squeeze(-1) + sent_scores = self.sigmoid(h) * mask_cls.float() + return sent_scores + + +class PositionalEncoding(nn.Module): + + def __init__(self, dropout, dim, max_len=5000): + pe = torch.zeros(max_len, dim) + position = torch.arange(0, max_len).unsqueeze(1) + div_term = torch.exp((torch.arange(0, dim, 2, dtype=torch.float) * + -(math.log(10000.0) / dim))) + pe[:, 0::2] = torch.sin(position.float() * div_term) + pe[:, 1::2] = torch.cos(position.float() * div_term) + pe = pe.unsqueeze(0) + super(PositionalEncoding, self).__init__() + self.register_buffer('pe', pe) + self.dropout = nn.Dropout(p=dropout) + self.dim = dim + + def forward(self, emb, step=None): + emb = emb * math.sqrt(self.dim) + if (step): + emb = emb + self.pe[:, step][:, None, :] + + else: + emb = emb + self.pe[:, :emb.size(1)] + emb = self.dropout(emb) + return emb + + def get_emb(self, emb): + return self.pe[:, :emb.size(1)] + + +class TransformerEncoderLayer(nn.Module): + def __init__(self, d_model, heads, d_ff, dropout): + super(TransformerEncoderLayer, self).__init__() + + self.self_attn = MultiHeadedAttention( + heads, d_model, dropout=dropout) + self.feed_forward = PositionwiseFeedForward(d_model, d_ff, dropout) + self.layer_norm = nn.LayerNorm(d_model, eps=1e-6) + self.dropout = nn.Dropout(dropout) + + def forward(self, iter, query, inputs, mask): + if (iter != 0): + input_norm = self.layer_norm(inputs) + else: + input_norm = inputs + + mask = mask.unsqueeze(1) + context = self.self_attn(input_norm, input_norm, input_norm, + mask=mask) + out = self.dropout(context) + inputs + return self.feed_forward(out) + + +class ExtTransformerEncoder(nn.Module): + def __init__(self, d_model, d_ff, heads, dropout, num_inter_layers=0): + super(ExtTransformerEncoder, self).__init__() + self.d_model = d_model + self.num_inter_layers = num_inter_layers + self.pos_emb = PositionalEncoding(dropout, d_model) + self.transformer_inter = nn.ModuleList( + [TransformerEncoderLayer(d_model, heads, d_ff, dropout) + for _ in range(num_inter_layers)]) + self.dropout = nn.Dropout(dropout) + self.layer_norm = nn.LayerNorm(d_model, eps=1e-6) + self.wo = nn.Linear(d_model, 1, bias=True) + self.sigmoid = nn.Sigmoid() + + def forward(self, top_vecs, mask): + """ See :obj:`EncoderBase.forward()`""" + + batch_size, n_sents = top_vecs.size(0), top_vecs.size(1) + pos_emb = self.pos_emb.pe[:, :n_sents] + x = top_vecs * mask[:, :, None].float() + x = x + pos_emb + + for i in range(self.num_inter_layers): + x = self.transformer_inter[i](i, x, x, 1 - mask) # all_sents * max_tokens * dim + + x = self.layer_norm(x) + sent_scores = self.sigmoid(self.wo(x)) + sent_scores = sent_scores.squeeze(-1) * mask.float() + + return sent_scores + +======= +import math + +import torch +import torch.nn as nn + +from models.neural import MultiHeadedAttention, PositionwiseFeedForward + + +class Classifier(nn.Module): + def __init__(self, hidden_size): + super(Classifier, self).__init__() + self.linear1 = nn.Linear(hidden_size, 1) + self.sigmoid = nn.Sigmoid() + + def forward(self, x, mask_cls): + h = self.linear1(x).squeeze(-1) + sent_scores = self.sigmoid(h) * mask_cls.float() + return sent_scores + + +class PositionalEncoding(nn.Module): + + def __init__(self, dropout, dim, max_len=5000): + pe = torch.zeros(max_len, dim) + position = torch.arange(0, max_len).unsqueeze(1) + div_term = torch.exp((torch.arange(0, dim, 2, dtype=torch.float) * + -(math.log(10000.0) / dim))) + pe[:, 0::2] = torch.sin(position.float() * div_term) + pe[:, 1::2] = torch.cos(position.float() * div_term) + pe = pe.unsqueeze(0) + super(PositionalEncoding, self).__init__() + self.register_buffer('pe', pe) + self.dropout = nn.Dropout(p=dropout) + self.dim = dim + + def forward(self, emb, step=None): + emb = emb * math.sqrt(self.dim) + if (step): + emb = emb + self.pe[:, step][:, None, :] + + else: + emb = emb + self.pe[:, :emb.size(1)] + emb = self.dropout(emb) + return emb + + def get_emb(self, emb): + return self.pe[:, :emb.size(1)] + + +class TransformerEncoderLayer(nn.Module): + def __init__(self, d_model, heads, d_ff, dropout): + super(TransformerEncoderLayer, self).__init__() + + self.self_attn = MultiHeadedAttention( + heads, d_model, dropout=dropout) + self.feed_forward = PositionwiseFeedForward(d_model, d_ff, dropout) + self.layer_norm = nn.LayerNorm(d_model, eps=1e-6) + self.dropout = nn.Dropout(dropout) + + def forward(self, iter, query, inputs, mask): + if (iter != 0): + input_norm = self.layer_norm(inputs) + else: + input_norm = inputs + + mask = mask.unsqueeze(1) + context = self.self_attn(input_norm, input_norm, input_norm, + mask=mask) + out = self.dropout(context) + inputs + return self.feed_forward(out) + + +class ExtTransformerEncoder(nn.Module): + def __init__(self, d_model, d_ff, heads, dropout, num_inter_layers=0): + super(ExtTransformerEncoder, self).__init__() + self.d_model = d_model + self.num_inter_layers = num_inter_layers + self.pos_emb = PositionalEncoding(dropout, d_model) + self.transformer_inter = nn.ModuleList( + [TransformerEncoderLayer(d_model, heads, d_ff, dropout) + for _ in range(num_inter_layers)]) + self.dropout = nn.Dropout(dropout) + self.layer_norm = nn.LayerNorm(d_model, eps=1e-6) + self.wo = nn.Linear(d_model, 1, bias=True) + self.sigmoid = nn.Sigmoid() + + def forward(self, top_vecs, mask): + """ See :obj:`EncoderBase.forward()`""" + + batch_size, n_sents = top_vecs.size(0), top_vecs.size(1) + pos_emb = self.pos_emb.pe[:, :n_sents] + x = top_vecs * mask[:, :, None].float() + x = x + pos_emb + + for i in range(self.num_inter_layers): + x = self.transformer_inter[i](i, x, x, 1 - mask) # all_sents * max_tokens * dim + + x = self.layer_norm(x) + sent_scores = self.sigmoid(self.wo(x)) + sent_scores = sent_scores.squeeze(-1) * mask.float() + + return sent_scores + +>>>>>>> bcb618ae9faf5d35f3147b05b34268a73808238a diff --git a/fastSum/PreSum/models/model_builder.py b/fastSum/PreSum/models/model_builder.py new file mode 100644 index 0000000000000000000000000000000000000000..7380977a965bc75d079838f75fa6cbf74a06e3d7 --- /dev/null +++ b/fastSum/PreSum/models/model_builder.py @@ -0,0 +1,673 @@ +<<<<<<< HEAD +import copy + +import torch +import torch.nn as nn +from pytorch_transformers import BertModel, BertConfig +from torch.nn.init import xavier_uniform_ + +from models.decoder import TransformerDecoder +from models.encoder import Classifier, ExtTransformerEncoder +from models.optimizers import Optimizer +# from models.predictor import build_predictor +from others.utils import rouge_results_to_str, test_rouge, tile +from translate.beam import GNMTGlobalScorer + + +def get_generator(vocab_size, dec_hidden_size): + gen_func = nn.LogSoftmax(dim=-1) + generator = nn.Sequential( + nn.Linear(dec_hidden_size, vocab_size), + gen_func + ) + # generator.to(device) + + return generator + + +class Bert(nn.Module): + def __init__(self, large, temp_dir, finetune=False): + super(Bert, self).__init__() + if (large): + self.model = BertModel.from_pretrained('bert-large-uncased', cache_dir=temp_dir) + else: + self.model = BertModel.from_pretrained('bert-base-uncased', cache_dir=temp_dir) + + self.finetune = finetune + + def forward(self, x, segs, mask): + if (self.finetune): + top_vec, _ = self.model(x, segs, attention_mask=mask) + else: + self.eval() + with torch.no_grad(): + top_vec, _ = self.model(x, segs, attention_mask=mask) + return top_vec + + +class ExtSummarizer(nn.Module): + def __init__(self, args, checkpoint): + super(ExtSummarizer, self).__init__() + self.args = args + self.bert = Bert(args.large, args.temp_dir, args.finetune_bert) + + self.ext_layer = ExtTransformerEncoder(self.bert.model.config.hidden_size, args.ext_ff_size, args.ext_heads, + args.ext_dropout, args.ext_layers) + if (args.encoder == 'baseline'): + bert_config = BertConfig(self.bert.model.config.vocab_size, hidden_size=args.ext_hidden_size, + num_hidden_layers=args.ext_layers, num_attention_heads=args.ext_heads, + intermediate_size=args.ext_ff_size) + self.bert.model = BertModel(bert_config) + self.ext_layer = Classifier(self.bert.model.config.hidden_size) + + if (args.max_pos > 512): + my_pos_embeddings = nn.Embedding(args.max_pos, self.bert.model.config.hidden_size) + my_pos_embeddings.weight.data[:512] = self.bert.model.embeddings.position_embeddings.weight.data + my_pos_embeddings.weight.data[512:] = self.bert.model.embeddings.position_embeddings.weight.data[-1][None, + :].repeat(args.max_pos - 512, 1) + self.bert.model.embeddings.position_embeddings = my_pos_embeddings + + if checkpoint is not None: + self.load_state_dict(checkpoint['model'], strict=True) + else: + if args.param_init != 0.0: + for p in self.ext_layer.parameters(): + p.data.uniform_(-args.param_init, args.param_init) + if args.param_init_glorot: + for p in self.ext_layer.parameters(): + if p.dim() > 1: + xavier_uniform_(p) + + def forward(self, text_ids, segment_ids, cls_ids): + input_mask = 1 - (text_ids == 0).long() + mask_cls = 1 - (cls_ids == -1).to(torch.uint8) + assert input_mask.size() == text_ids.size() + assert mask_cls.size() == cls_ids.size() + + top_vec = self.bert(text_ids, segment_ids, input_mask) + sents_vec = top_vec[torch.arange(top_vec.size(0)).unsqueeze(1), cls_ids] + sents_vec = sents_vec * mask_cls[:, :, None].float() + sent_scores = self.ext_layer(sents_vec, mask_cls).squeeze(-1) + return {'pred': sent_scores, 'mask': mask_cls} + + +class AbsSummarizer(nn.Module): + def __init__(self, args, checkpoint=None, bert_from_extractive=None, symbols=None, tokenizer=None): + super(AbsSummarizer, self).__init__() + self.args = args + # self.device = device + self.bert = Bert(args.large, args.temp_dir, args.finetune_bert) + self.global_scorer = GNMTGlobalScorer(args.alpha, length_penalty='wu') + self.symbols = symbols + self.start_token = symbols['BOS'] + self.end_token = symbols['EOS'] + self.vocab = tokenizer + + if bert_from_extractive is not None: + self.bert.model.load_state_dict( + dict([(n[11:], p) for n, p in bert_from_extractive.items() if n.startswith('bert.model')]), strict=True) + + if (args.encoder == 'baseline'): + bert_config = BertConfig(self.bert.model.config.vocab_size, hidden_size=args.enc_hidden_size, + num_hidden_layers=args.enc_layers, num_attention_heads=8, + intermediate_size=args.enc_ff_size, + hidden_dropout_prob=args.enc_dropout, + attention_probs_dropout_prob=args.enc_dropout) + self.bert.model = BertModel(bert_config) + + if (args.max_pos > 512): + my_pos_embeddings = nn.Embedding(args.max_pos, self.bert.model.config.hidden_size) + my_pos_embeddings.weight.data[:512] = self.bert.model.embeddings.position_embeddings.weight.data + my_pos_embeddings.weight.data[512:] = self.bert.model.embeddings.position_embeddings.weight.data[-1][None, + :].repeat(args.max_pos - 512, 1) + self.bert.model.embeddings.position_embeddings = my_pos_embeddings + self.vocab_size = self.bert.model.config.vocab_size + tgt_embeddings = nn.Embedding(self.vocab_size, self.bert.model.config.hidden_size, padding_idx=0) + if (self.args.share_emb): + tgt_embeddings.weight = copy.deepcopy(self.bert.model.embeddings.word_embeddings.weight) + + self.decoder = TransformerDecoder( + self.args.dec_layers, + self.args.dec_hidden_size, heads=self.args.dec_heads, + d_ff=self.args.dec_ff_size, dropout=self.args.dec_dropout, embeddings=tgt_embeddings) + + self.generator = get_generator(self.vocab_size, self.args.dec_hidden_size) + self.generator[0].weight = self.decoder.embeddings.weight + + if checkpoint is not None: + self.load_state_dict(checkpoint['model'], strict=True) + else: + for module in self.decoder.modules(): + if isinstance(module, (nn.Linear, nn.Embedding)): + module.weight.data.normal_(mean=0.0, std=0.02) + elif isinstance(module, nn.LayerNorm): + module.bias.data.zero_() + module.weight.data.fill_(1.0) + if isinstance(module, nn.Linear) and module.bias is not None: + module.bias.data.zero_() + for p in self.generator.parameters(): + if p.dim() > 1: + xavier_uniform_(p) + else: + p.data.zero_() + if (args.use_bert_emb): + tgt_embeddings = nn.Embedding(self.vocab_size, self.bert.model.config.hidden_size, padding_idx=0) + tgt_embeddings.weight = copy.deepcopy(self.bert.model.embeddings.word_embeddings.weight) + self.decoder.embeddings = tgt_embeddings + self.generator[0].weight = self.decoder.embeddings.weight + + # self.to(device) + + def forward(self, text_ids, summary_ids, segment_ids): + # 默认设定pad id为0 + mask_src = 1 - (text_ids == 0).long() + top_vec = self.bert(text_ids, segment_ids, mask_src) + dec_state = self.decoder.init_decoder_state(text_ids, top_vec) + # print("AbsSummarizer.forward: ") + # print(summary_ids[:, :-1].size(), top_vec.size()) + pred, state = self.decoder(summary_ids[:, :-1], top_vec, dec_state) + return {"pred": pred} + + def predict(self, text_ids, segment_ids, summary_ids=None): + # 当predict在训练的过程中的validation的过程被调用,则返回forward的结果 + if self.args.mode == "train": + return self.forward(text_ids, summary_ids, segment_ids) + + min_length = self.args.min_length + max_length = self.args.max_length + beam_size = self.args.beam_size + # batch_size = self.args.batch_size + batch_size = text_ids.size()[0] + + # 默认设定pad id为0 + mask_src = 1 - (text_ids == 0).long() + top_vec = self.bert(text_ids, segment_ids, mask_src) + dec_states = self.decoder.init_decoder_state(text_ids, top_vec) + device = top_vec.device + + # Tile states and memory beam_size times. + dec_states.map_batch_fn( + lambda state, dim: tile(state, beam_size, dim=dim)) + src_features = tile(top_vec, beam_size, dim=0) + batch_offset = torch.arange( + batch_size, dtype=torch.long, device=device) + beam_offset = torch.arange( + 0, + batch_size * beam_size, + step=beam_size, + dtype=torch.long, + device=device) + alive_seq = torch.full( + [batch_size * beam_size, 1], + self.start_token, + dtype=torch.long, + device=device) + # print("AbsSummarizer.predict: ") + # print(alive_seq.size(), batch_size, beam_size) + # Give full probability to the first beam on the first step. + topk_log_probs = ( + torch.tensor([0.0] + [float("-inf")] * (beam_size - 1), + device=device).repeat(batch_size)) + + # Structure that holds finished hypotheses. + hypotheses = [[] for _ in range(batch_size)] # noqa: F812 + + results = {} + results["predictions"] = [[] for _ in range(batch_size)] # noqa: F812 + results["scores"] = [[] for _ in range(batch_size)] # noqa: F812 + # results["gold_score"] = [0] * batch_size + + for step in range(max_length): + # print("AbsSummarizer.predict:") + # print(alive_seq.size()) + # print("alive seq: ", alive_seq.size()) + decoder_input = alive_seq[:, -1].view(1, -1) + + # Decoder forward. + decoder_input = decoder_input.transpose(0, 1) + # print("decoder input: ", decoder_input.size()) + + # print(decoder_input.size(), src_features.size()) + dec_out, dec_states = self.decoder(decoder_input, src_features, dec_states, + step=step) + + # Generator forward. + log_probs = self.generator.forward(dec_out.transpose(0, 1).squeeze(0)) + vocab_size = log_probs.size(-1) + + if step < min_length: + log_probs[:, self.end_token] = -1e20 + + # Multiply probs by the beam probability. + log_probs += topk_log_probs.view(-1).unsqueeze(1) + + alpha = self.global_scorer.alpha + length_penalty = ((5.0 + (step + 1)) / 6.0) ** alpha + + # Flatten probs into a list of possibilities. + curr_scores = log_probs / length_penalty + + if (self.args.block_trigram): + cur_len = alive_seq.size(1) + if (cur_len > 3): + for i in range(alive_seq.size(0)): + fail = False + words = [int(w) for w in alive_seq[i]] + words = [self.vocab.ids_to_tokens[w] for w in words] + words = ' '.join(words).replace(' ##', '').split() + if (len(words) <= 3): + continue + trigrams = [(words[i - 1], words[i], words[i + 1]) for i in range(1, len(words) - 1)] + trigram = tuple(trigrams[-1]) + if trigram in trigrams[:-1]: + fail = True + if fail: + curr_scores[i] = -10e20 + + curr_scores = curr_scores.reshape(-1, beam_size * vocab_size) + topk_scores, topk_ids = curr_scores.topk(beam_size, dim=-1) + + # Recover log probs. + topk_log_probs = topk_scores * length_penalty + + # Resolve beam origin and true word ids. + topk_beam_index = topk_ids.div(vocab_size) + topk_ids = topk_ids.fmod(vocab_size) + + # Map beam_index to batch_index in the flat representation. + batch_index = ( + topk_beam_index + + beam_offset[:topk_beam_index.size(0)].unsqueeze(1)) + select_indices = batch_index.view(-1) + + # Append last prediction. + alive_seq = torch.cat( + [alive_seq.index_select(0, select_indices), + topk_ids.view(-1, 1)], -1) + # print("alive_seq after cat: ", alive_seq.size()) + + is_finished = topk_ids.eq(self.end_token) + if step + 1 == max_length: + is_finished.fill_(1) + # End condition is top beam is finished. + end_condition = is_finished[:, 0].eq(1) + # Save finished hypotheses. + if is_finished.any(): + predictions = alive_seq.view(-1, beam_size, alive_seq.size(-1)) + for i in range(is_finished.size(0)): + b = batch_offset[i] + if end_condition[i]: + is_finished[i].fill_(1) + finished_hyp = is_finished[i].nonzero().view(-1) + # Store finished hypotheses for this batch. + for j in finished_hyp: + hypotheses[b].append(( + topk_scores[i, j], + predictions[i, j, 1:])) + # If the batch reached the end, save the n_best hypotheses. + if end_condition[i]: + best_hyp = sorted( + hypotheses[b], key=lambda x: x[0], reverse=True) + score, pred = best_hyp[0] + + results["scores"][b].append(score) + results["predictions"][b].append(pred) + non_finished = end_condition.eq(0).nonzero().view(-1) + # print(non_finished) + # If all sentences are translated, no need to go further. + if len(non_finished) == 0: + break + # Remove finished batches for the next step. + topk_log_probs = topk_log_probs.index_select(0, non_finished) + batch_index = batch_index.index_select(0, non_finished) + batch_offset = batch_offset.index_select(0, non_finished) + alive_seq = predictions.index_select(0, non_finished) \ + .view(-1, alive_seq.size(-1)) + # print("alive_seq predictions.index_select ", alive_seq.size()) + # Reorder states. + select_indices = batch_index.view(-1) + # print("select indices: {}".format(select_indices.size())) + # print("src_features before index_select:", src_features.size()) + src_features = src_features.index_select(0, select_indices) + # print("src_features: {}".format(src_features.size())) + dec_states.map_batch_fn( + lambda state, dim: state.index_select(dim, select_indices)) + + return results +======= +import copy + +import torch +import torch.nn as nn +from pytorch_transformers import BertModel, BertConfig +from torch.nn.init import xavier_uniform_ + +from models.decoder import TransformerDecoder +from models.encoder import Classifier, ExtTransformerEncoder +from models.optimizers import Optimizer +# from models.predictor import build_predictor +from others.utils import rouge_results_to_str, test_rouge, tile +from translate.beam import GNMTGlobalScorer + + +def get_generator(vocab_size, dec_hidden_size): + gen_func = nn.LogSoftmax(dim=-1) + generator = nn.Sequential( + nn.Linear(dec_hidden_size, vocab_size), + gen_func + ) + # generator.to(device) + + return generator + + +class Bert(nn.Module): + def __init__(self, large, temp_dir, finetune=False): + super(Bert, self).__init__() + if (large): + self.model = BertModel.from_pretrained('bert-large-uncased', cache_dir=temp_dir) + else: + self.model = BertModel.from_pretrained('bert-base-uncased', cache_dir=temp_dir) + + self.finetune = finetune + + def forward(self, x, segs, mask): + if (self.finetune): + top_vec, _ = self.model(x, segs, attention_mask=mask) + else: + self.eval() + with torch.no_grad(): + top_vec, _ = self.model(x, segs, attention_mask=mask) + return top_vec + + +class ExtSummarizer(nn.Module): + def __init__(self, args, checkpoint): + super(ExtSummarizer, self).__init__() + self.args = args + self.bert = Bert(args.large, args.temp_dir, args.finetune_bert) + + self.ext_layer = ExtTransformerEncoder(self.bert.model.config.hidden_size, args.ext_ff_size, args.ext_heads, + args.ext_dropout, args.ext_layers) + if (args.encoder == 'baseline'): + bert_config = BertConfig(self.bert.model.config.vocab_size, hidden_size=args.ext_hidden_size, + num_hidden_layers=args.ext_layers, num_attention_heads=args.ext_heads, + intermediate_size=args.ext_ff_size) + self.bert.model = BertModel(bert_config) + self.ext_layer = Classifier(self.bert.model.config.hidden_size) + + if (args.max_pos > 512): + my_pos_embeddings = nn.Embedding(args.max_pos, self.bert.model.config.hidden_size) + my_pos_embeddings.weight.data[:512] = self.bert.model.embeddings.position_embeddings.weight.data + my_pos_embeddings.weight.data[512:] = self.bert.model.embeddings.position_embeddings.weight.data[-1][None, + :].repeat(args.max_pos - 512, 1) + self.bert.model.embeddings.position_embeddings = my_pos_embeddings + + if checkpoint is not None: + self.load_state_dict(checkpoint['model'], strict=True) + else: + if args.param_init != 0.0: + for p in self.ext_layer.parameters(): + p.data.uniform_(-args.param_init, args.param_init) + if args.param_init_glorot: + for p in self.ext_layer.parameters(): + if p.dim() > 1: + xavier_uniform_(p) + + def forward(self, text_ids, segment_ids, cls_ids): + input_mask = 1 - (text_ids == 0).long() + mask_cls = 1 - (cls_ids == -1).to(torch.uint8) + assert input_mask.size() == text_ids.size() + assert mask_cls.size() == cls_ids.size() + + top_vec = self.bert(text_ids, segment_ids, input_mask) + sents_vec = top_vec[torch.arange(top_vec.size(0)).unsqueeze(1), cls_ids] + sents_vec = sents_vec * mask_cls[:, :, None].float() + sent_scores = self.ext_layer(sents_vec, mask_cls).squeeze(-1) + return {'pred': sent_scores, 'mask': mask_cls} + + +class AbsSummarizer(nn.Module): + def __init__(self, args, checkpoint=None, bert_from_extractive=None, symbols=None, tokenizer=None): + super(AbsSummarizer, self).__init__() + self.args = args + # self.device = device + self.bert = Bert(args.large, args.temp_dir, args.finetune_bert) + self.global_scorer = GNMTGlobalScorer(args.alpha, length_penalty='wu') + self.symbols = symbols + self.start_token = symbols['BOS'] + self.end_token = symbols['EOS'] + self.vocab = tokenizer + + if bert_from_extractive is not None: + self.bert.model.load_state_dict( + dict([(n[11:], p) for n, p in bert_from_extractive.items() if n.startswith('bert.model')]), strict=True) + + if (args.encoder == 'baseline'): + bert_config = BertConfig(self.bert.model.config.vocab_size, hidden_size=args.enc_hidden_size, + num_hidden_layers=args.enc_layers, num_attention_heads=8, + intermediate_size=args.enc_ff_size, + hidden_dropout_prob=args.enc_dropout, + attention_probs_dropout_prob=args.enc_dropout) + self.bert.model = BertModel(bert_config) + + if (args.max_pos > 512): + my_pos_embeddings = nn.Embedding(args.max_pos, self.bert.model.config.hidden_size) + my_pos_embeddings.weight.data[:512] = self.bert.model.embeddings.position_embeddings.weight.data + my_pos_embeddings.weight.data[512:] = self.bert.model.embeddings.position_embeddings.weight.data[-1][None, + :].repeat(args.max_pos - 512, 1) + self.bert.model.embeddings.position_embeddings = my_pos_embeddings + self.vocab_size = self.bert.model.config.vocab_size + tgt_embeddings = nn.Embedding(self.vocab_size, self.bert.model.config.hidden_size, padding_idx=0) + if (self.args.share_emb): + tgt_embeddings.weight = copy.deepcopy(self.bert.model.embeddings.word_embeddings.weight) + + self.decoder = TransformerDecoder( + self.args.dec_layers, + self.args.dec_hidden_size, heads=self.args.dec_heads, + d_ff=self.args.dec_ff_size, dropout=self.args.dec_dropout, embeddings=tgt_embeddings) + + self.generator = get_generator(self.vocab_size, self.args.dec_hidden_size) + self.generator[0].weight = self.decoder.embeddings.weight + + if checkpoint is not None: + self.load_state_dict(checkpoint['model'], strict=True) + else: + for module in self.decoder.modules(): + if isinstance(module, (nn.Linear, nn.Embedding)): + module.weight.data.normal_(mean=0.0, std=0.02) + elif isinstance(module, nn.LayerNorm): + module.bias.data.zero_() + module.weight.data.fill_(1.0) + if isinstance(module, nn.Linear) and module.bias is not None: + module.bias.data.zero_() + for p in self.generator.parameters(): + if p.dim() > 1: + xavier_uniform_(p) + else: + p.data.zero_() + if (args.use_bert_emb): + tgt_embeddings = nn.Embedding(self.vocab_size, self.bert.model.config.hidden_size, padding_idx=0) + tgt_embeddings.weight = copy.deepcopy(self.bert.model.embeddings.word_embeddings.weight) + self.decoder.embeddings = tgt_embeddings + self.generator[0].weight = self.decoder.embeddings.weight + + # self.to(device) + + def forward(self, text_ids, summary_ids, segment_ids): + # 默认设定pad id为0 + mask_src = 1 - (text_ids == 0).long() + top_vec = self.bert(text_ids, segment_ids, mask_src) + dec_state = self.decoder.init_decoder_state(text_ids, top_vec) + # print("AbsSummarizer.forward: ") + # print(summary_ids[:, :-1].size(), top_vec.size()) + pred, state = self.decoder(summary_ids[:, :-1], top_vec, dec_state) + return {"pred": pred} + + def predict(self, text_ids, segment_ids, summary_ids=None): + # 当predict在训练的过程中的validation的过程被调用,则返回forward的结果 + if self.args.mode == "train": + return self.forward(text_ids, summary_ids, segment_ids) + + min_length = self.args.min_length + max_length = self.args.max_length + beam_size = self.args.beam_size + # batch_size = self.args.batch_size + batch_size = text_ids.size()[0] + + # 默认设定pad id为0 + mask_src = 1 - (text_ids == 0).long() + top_vec = self.bert(text_ids, segment_ids, mask_src) + dec_states = self.decoder.init_decoder_state(text_ids, top_vec) + device = top_vec.device + + # Tile states and memory beam_size times. + dec_states.map_batch_fn( + lambda state, dim: tile(state, beam_size, dim=dim)) + src_features = tile(top_vec, beam_size, dim=0) + batch_offset = torch.arange( + batch_size, dtype=torch.long, device=device) + beam_offset = torch.arange( + 0, + batch_size * beam_size, + step=beam_size, + dtype=torch.long, + device=device) + alive_seq = torch.full( + [batch_size * beam_size, 1], + self.start_token, + dtype=torch.long, + device=device) + # print("AbsSummarizer.predict: ") + # print(alive_seq.size(), batch_size, beam_size) + # Give full probability to the first beam on the first step. + topk_log_probs = ( + torch.tensor([0.0] + [float("-inf")] * (beam_size - 1), + device=device).repeat(batch_size)) + + # Structure that holds finished hypotheses. + hypotheses = [[] for _ in range(batch_size)] # noqa: F812 + + results = {} + results["predictions"] = [[] for _ in range(batch_size)] # noqa: F812 + results["scores"] = [[] for _ in range(batch_size)] # noqa: F812 + # results["gold_score"] = [0] * batch_size + + for step in range(max_length): + # print("AbsSummarizer.predict:") + # print(alive_seq.size()) + # print("alive seq: ", alive_seq.size()) + decoder_input = alive_seq[:, -1].view(1, -1) + + # Decoder forward. + decoder_input = decoder_input.transpose(0, 1) + # print("decoder input: ", decoder_input.size()) + + # print(decoder_input.size(), src_features.size()) + dec_out, dec_states = self.decoder(decoder_input, src_features, dec_states, + step=step) + + # Generator forward. + log_probs = self.generator.forward(dec_out.transpose(0, 1).squeeze(0)) + vocab_size = log_probs.size(-1) + + if step < min_length: + log_probs[:, self.end_token] = -1e20 + + # Multiply probs by the beam probability. + log_probs += topk_log_probs.view(-1).unsqueeze(1) + + alpha = self.global_scorer.alpha + length_penalty = ((5.0 + (step + 1)) / 6.0) ** alpha + + # Flatten probs into a list of possibilities. + curr_scores = log_probs / length_penalty + + if (self.args.block_trigram): + cur_len = alive_seq.size(1) + if (cur_len > 3): + for i in range(alive_seq.size(0)): + fail = False + words = [int(w) for w in alive_seq[i]] + words = [self.vocab.ids_to_tokens[w] for w in words] + words = ' '.join(words).replace(' ##', '').split() + if (len(words) <= 3): + continue + trigrams = [(words[i - 1], words[i], words[i + 1]) for i in range(1, len(words) - 1)] + trigram = tuple(trigrams[-1]) + if trigram in trigrams[:-1]: + fail = True + if fail: + curr_scores[i] = -10e20 + + curr_scores = curr_scores.reshape(-1, beam_size * vocab_size) + topk_scores, topk_ids = curr_scores.topk(beam_size, dim=-1) + + # Recover log probs. + topk_log_probs = topk_scores * length_penalty + + # Resolve beam origin and true word ids. + topk_beam_index = topk_ids.div(vocab_size) + topk_ids = topk_ids.fmod(vocab_size) + + # Map beam_index to batch_index in the flat representation. + batch_index = ( + topk_beam_index + + beam_offset[:topk_beam_index.size(0)].unsqueeze(1)) + select_indices = batch_index.view(-1) + + # Append last prediction. + alive_seq = torch.cat( + [alive_seq.index_select(0, select_indices), + topk_ids.view(-1, 1)], -1) + # print("alive_seq after cat: ", alive_seq.size()) + + is_finished = topk_ids.eq(self.end_token) + if step + 1 == max_length: + is_finished.fill_(1) + # End condition is top beam is finished. + end_condition = is_finished[:, 0].eq(1) + # Save finished hypotheses. + if is_finished.any(): + predictions = alive_seq.view(-1, beam_size, alive_seq.size(-1)) + for i in range(is_finished.size(0)): + b = batch_offset[i] + if end_condition[i]: + is_finished[i].fill_(1) + finished_hyp = is_finished[i].nonzero().view(-1) + # Store finished hypotheses for this batch. + for j in finished_hyp: + hypotheses[b].append(( + topk_scores[i, j], + predictions[i, j, 1:])) + # If the batch reached the end, save the n_best hypotheses. + if end_condition[i]: + best_hyp = sorted( + hypotheses[b], key=lambda x: x[0], reverse=True) + score, pred = best_hyp[0] + + results["scores"][b].append(score) + results["predictions"][b].append(pred) + non_finished = end_condition.eq(0).nonzero().view(-1) + # print(non_finished) + # If all sentences are translated, no need to go further. + if len(non_finished) == 0: + break + # Remove finished batches for the next step. + topk_log_probs = topk_log_probs.index_select(0, non_finished) + batch_index = batch_index.index_select(0, non_finished) + batch_offset = batch_offset.index_select(0, non_finished) + alive_seq = predictions.index_select(0, non_finished) \ + .view(-1, alive_seq.size(-1)) + # print("alive_seq predictions.index_select ", alive_seq.size()) + # Reorder states. + select_indices = batch_index.view(-1) + # print("select indices: {}".format(select_indices.size())) + # print("src_features before index_select:", src_features.size()) + src_features = src_features.index_select(0, select_indices) + # print("src_features: {}".format(src_features.size())) + dec_states.map_batch_fn( + lambda state, dim: state.index_select(dim, select_indices)) + + return results +>>>>>>> bcb618ae9faf5d35f3147b05b34268a73808238a diff --git a/fastSum/PreSum/models/neural.py b/fastSum/PreSum/models/neural.py new file mode 100644 index 0000000000000000000000000000000000000000..301fd574fa691c81a64a8c9daf897b24c77da691 --- /dev/null +++ b/fastSum/PreSum/models/neural.py @@ -0,0 +1,957 @@ +<<<<<<< HEAD +import math + +import torch +import torch.nn as nn +import torchsnooper + +def aeq(*args): + """ + Assert all arguments have the same value + """ + arguments = (arg for arg in args) + first = next(arguments) + assert all(arg == first for arg in arguments), \ + "Not all arguments have the same value: " + str(args) + + +def sequence_mask(lengths, max_len=None): + """ + Creates a boolean mask from sequence lengths. + """ + batch_size = lengths.numel() + max_len = max_len or lengths.max() + return (torch.arange(0, max_len) + .type_as(lengths) + .repeat(batch_size, 1) + .lt(lengths.unsqueeze(1))) + + +def gelu(x): + return 0.5 * x * (1 + torch.tanh(math.sqrt(2 / math.pi) * (x + 0.044715 * torch.pow(x, 3)))) + + +""" Global attention modules (Luong / Bahdanau) """ +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class GlobalAttention(nn.Module): + """ + Global attention takes a matrix and a query vector. It + then computes a parameterized convex combination of the matrix + based on the input query. + + Constructs a unit mapping a query `q` of size `dim` + and a source matrix `H` of size `n x dim`, to an output + of size `dim`. + + + .. mermaid:: + + graph BT + A[Query] + subgraph RNN + C[H 1] + D[H 2] + E[H N] + end + F[Attn] + G[Output] + A --> F + C --> F + D --> F + E --> F + C -.-> G + D -.-> G + E -.-> G + F --> G + + All models compute the output as + :math:`c = sum_{j=1}^{SeqLength} a_j H_j` where + :math:`a_j` is the softmax of a score function. + Then then apply a projection layer to [q, c]. + + However they + differ on how they compute the attention score. + + * Luong Attention (dot, general): + * dot: :math:`score(H_j,q) = H_j^T q` + * general: :math:`score(H_j, q) = H_j^T W_a q` + + + * Bahdanau Attention (mlp): + * :math:`score(H_j, q) = v_a^T tanh(W_a q + U_a h_j)` + + + Args: + dim (int): dimensionality of query and key + coverage (bool): use coverage term + attn_type (str): type of attention to use, options [dot,general,mlp] + + """ + + def __init__(self, dim, attn_type="dot"): + super(GlobalAttention, self).__init__() + + self.dim = dim + assert attn_type in ["dot", "general", "mlp"], ( + "Please select a valid attention type.") + self.attn_type = attn_type + + if self.attn_type == "general": + self.linear_in = nn.Linear(dim, dim, bias=False) + elif self.attn_type == "mlp": + self.linear_context = nn.Linear(dim, dim, bias=False) + self.linear_query = nn.Linear(dim, dim, bias=True) + self.v = nn.Linear(dim, 1, bias=False) + # mlp wants it with bias + out_bias = self.attn_type == "mlp" + self.linear_out = nn.Linear(dim * 2, dim, bias=out_bias) + + + def score(self, h_t, h_s): + """ + Args: + h_t (`FloatTensor`): sequence of queries `[batch x tgt_len x dim]` + h_s (`FloatTensor`): sequence of sources `[batch x src_len x dim]` + + Returns: + :obj:`FloatTensor`: + raw attention scores (unnormalized) for each src index + `[batch x tgt_len x src_len]` + + """ + + # Check input sizes + src_batch, src_len, src_dim = h_s.size() + tgt_batch, tgt_len, tgt_dim = h_t.size() + + if self.attn_type in ["general", "dot"]: + if self.attn_type == "general": + h_t_ = h_t.view(tgt_batch * tgt_len, tgt_dim) + h_t_ = self.linear_in(h_t_) + h_t = h_t_.view(tgt_batch, tgt_len, tgt_dim) + h_s_ = h_s.transpose(1, 2) + # (batch, t_len, d) x (batch, d, s_len) --> (batch, t_len, s_len) + return torch.bmm(h_t, h_s_) + else: + dim = self.dim + wq = self.linear_query(h_t.view(-1, dim)) + wq = wq.view(tgt_batch, tgt_len, 1, dim) + wq = wq.expand(tgt_batch, tgt_len, src_len, dim) + + uh = self.linear_context(h_s.contiguous().view(-1, dim)) + uh = uh.view(src_batch, 1, src_len, dim) + uh = uh.expand(src_batch, tgt_len, src_len, dim) + + # (batch, t_len, s_len, d) + wquh = torch.tanh(wq + uh) + + return self.v(wquh.view(-1, dim)).view(tgt_batch, tgt_len, src_len) + + def forward(self, source, memory_bank, memory_lengths=None, memory_masks=None): + """ + + Args: + source (`FloatTensor`): query vectors `[batch x tgt_len x dim]` + memory_bank (`FloatTensor`): source vectors `[batch x src_len x dim]` + memory_lengths (`LongTensor`): the source context lengths `[batch]` + coverage (`FloatTensor`): None (not supported yet) + + Returns: + (`FloatTensor`, `FloatTensor`): + + * Computed vector `[tgt_len x batch x dim]` + * Attention distribtutions for each query + `[tgt_len x batch x src_len]` + """ + + # one step input + if source.dim() == 2: + one_step = True + source = source.unsqueeze(1) + else: + one_step = False + + batch, source_l, dim = memory_bank.size() + batch_, target_l, dim_ = source.size() + + # compute attention scores, as in Luong et al. + align = self.score(source, memory_bank) + + if memory_masks is not None: + memory_masks = memory_masks.transpose(0,1) + memory_masks = memory_masks.transpose(1,2) + align.masked_fill_(1 - memory_masks.byte(), -float('inf')) + + if memory_lengths is not None: + mask = sequence_mask(memory_lengths, max_len=align.size(-1)) + mask = mask.unsqueeze(1) # Make it broadcastable. + align.masked_fill_(1 - mask, -float('inf')) + + align_vectors = F.softmax(align.view(batch*target_l, source_l), -1) + align_vectors = align_vectors.view(batch, target_l, source_l) + + c = torch.bmm(align_vectors, memory_bank) + + # concatenate + concat_c = torch.cat([c, source], 2).view(batch*target_l, dim*2) + attn_h = self.linear_out(concat_c).view(batch, target_l, dim) + if self.attn_type in ["general", "dot"]: + attn_h = torch.tanh(attn_h) + + if one_step: + attn_h = attn_h.squeeze(1) + align_vectors = align_vectors.squeeze(1) + + + else: + attn_h = attn_h.transpose(0, 1).contiguous() + align_vectors = align_vectors.transpose(0, 1).contiguous() + + return attn_h, align_vectors + + +class PositionwiseFeedForward(nn.Module): + """ A two-layer Feed-Forward-Network with residual layer norm. + + Args: + d_model (int): the size of input for the first-layer of the FFN. + d_ff (int): the hidden layer size of the second-layer + of the FNN. + dropout (float): dropout probability in :math:`[0, 1)`. + """ + + def __init__(self, d_model, d_ff, dropout=0.1): + super(PositionwiseFeedForward, self).__init__() + self.w_1 = nn.Linear(d_model, d_ff) + self.w_2 = nn.Linear(d_ff, d_model) + self.layer_norm = nn.LayerNorm(d_model, eps=1e-6) + self.actv = gelu + self.dropout_1 = nn.Dropout(dropout) + self.dropout_2 = nn.Dropout(dropout) + + def forward(self, x): + inter = self.dropout_1(self.actv(self.w_1(self.layer_norm(x)))) + output = self.dropout_2(self.w_2(inter)) + return output + x + + +class MultiHeadedAttention(nn.Module): + """ + Multi-Head Attention module from + "Attention is All You Need" + :cite:`DBLP:journals/corr/VaswaniSPUJGKP17`. + + Similar to standard `dot` attention but uses + multiple attention distributions simulataneously + to select relevant items. + + .. mermaid:: + + graph BT + A[key] + B[value] + C[query] + O[output] + subgraph Attn + D[Attn 1] + E[Attn 2] + F[Attn N] + end + A --> D + C --> D + A --> E + C --> E + A --> F + C --> F + D --> O + E --> O + F --> O + B --> O + + Also includes several additional tricks. + + Args: + head_count (int): number of parallel heads + model_dim (int): the dimension of keys/values/queries, + must be divisible by head_count + dropout (float): dropout parameter + """ + + def __init__(self, head_count, model_dim, dropout=0.1, use_final_linear=True): + assert model_dim % head_count == 0 + self.dim_per_head = model_dim // head_count + self.model_dim = model_dim + + super(MultiHeadedAttention, self).__init__() + self.head_count = head_count + + self.linear_keys = nn.Linear(model_dim, + head_count * self.dim_per_head) + self.linear_values = nn.Linear(model_dim, + head_count * self.dim_per_head) + self.linear_query = nn.Linear(model_dim, + head_count * self.dim_per_head) + self.softmax = nn.Softmax(dim=-1) + self.dropout = nn.Dropout(dropout) + self.use_final_linear = use_final_linear + if (self.use_final_linear): + self.final_linear = nn.Linear(model_dim, model_dim) + + # @torchsnooper.snoop() + def forward(self, key, value, query, mask=None, + layer_cache=None, type=None, predefined_graph_1=None): + """ + Compute the context vector and the attention vectors. + + Args: + key (`FloatTensor`): set of `key_len` + key vectors `[batch, key_len, dim]` + value (`FloatTensor`): set of `key_len` + value vectors `[batch, key_len, dim]` + query (`FloatTensor`): set of `query_len` + query vectors `[batch, query_len, dim]` + mask: binary mask indicating which keys have + non-zero attention `[batch, query_len, key_len]` + Returns: + (`FloatTensor`, `FloatTensor`) : + + * output context vectors `[batch, query_len, dim]` + * one of the attention vectors `[batch, query_len, key_len]` + """ + + # CHECKS + # batch, k_len, d = key.size() + # batch_, k_len_, d_ = value.size() + # aeq(batch, batch_) + # aeq(k_len, k_len_) + # aeq(d, d_) + # batch_, q_len, d_ = query.size() + # aeq(batch, batch_) + # aeq(d, d_) + # aeq(self.model_dim % 8, 0) + # if mask is not None: + # batch_, q_len_, k_len_ = mask.size() + # aeq(batch_, batch) + # aeq(k_len_, k_len) + # aeq(q_len_ == q_len) + # END CHECKS + batch_size = key.size(0) + dim_per_head = self.dim_per_head + head_count = self.head_count + key_len = key.size(1) + query_len = query.size(1) + + def shape(x): + """ projection """ + return x.view(batch_size, -1, head_count, dim_per_head) \ + .transpose(1, 2) + + def unshape(x): + """ compute context """ + return x.transpose(1, 2).contiguous() \ + .view(batch_size, -1, head_count * dim_per_head) + + # 1) Project key, value, and query. + if layer_cache is not None: + if type == "self": + query, key, value = self.linear_query(query), \ + self.linear_keys(query), \ + self.linear_values(query) + + key = shape(key) + value = shape(value) + + if layer_cache is not None: + device = key.device + if layer_cache["self_keys"] is not None: + key = torch.cat( + (layer_cache["self_keys"].to(device), key), + dim=2) + if layer_cache["self_values"] is not None: + value = torch.cat( + (layer_cache["self_values"].to(device), value), + dim=2) + layer_cache["self_keys"] = key + layer_cache["self_values"] = value + elif type == "context": + query = self.linear_query(query) + if layer_cache is not None: + if layer_cache["memory_keys"] is None: + key, value = self.linear_keys(key), \ + self.linear_values(value) + key = shape(key) + value = shape(value) + else: + key, value = layer_cache["memory_keys"], \ + layer_cache["memory_values"] + layer_cache["memory_keys"] = key + layer_cache["memory_values"] = value + else: + key, value = self.linear_keys(key), \ + self.linear_values(value) + key = shape(key) + value = shape(value) + else: + key = self.linear_keys(key) + value = self.linear_values(value) + query = self.linear_query(query) + key = shape(key) + value = shape(value) + + query = shape(query) + + key_len = key.size(2) + query_len = query.size(2) + + # 2) Calculate and scale scores. + query = query / math.sqrt(dim_per_head) + scores = torch.matmul(query, key.transpose(2, 3)) + + if mask is not None: + mask = mask.unsqueeze(1).expand_as(scores) + scores = scores.masked_fill(mask, -1e18) + + # 3) Apply attention dropout and compute context vectors. + + attn = self.softmax(scores) + + if (not predefined_graph_1 is None): + attn_masked = attn[:, -1] * predefined_graph_1 + attn_masked = attn_masked / (torch.sum(attn_masked, 2).unsqueeze(2) + 1e-9) + + attn = torch.cat([attn[:, :-1], attn_masked.unsqueeze(1)], 1) + + drop_attn = self.dropout(attn) + if (self.use_final_linear): + context = unshape(torch.matmul(drop_attn, value)) + output = self.final_linear(context) + return output + else: + context = torch.matmul(drop_attn, value) + return context + + # CHECK + # batch_, q_len_, d_ = output.size() + # aeq(q_len, q_len_) + # aeq(batch, batch_) + # aeq(d, d_) + + # Return one attn + + + +class DecoderState(object): + """Interface for grouping together the current state of a recurrent + decoder. In the simplest case just represents the hidden state of + the model. But can also be used for implementing various forms of + input_feeding and non-recurrent models. + + Modules need to implement this to utilize beam search decoding. + """ + def detach(self): + """ Need to document this """ + self.hidden = tuple([_.detach() for _ in self.hidden]) + self.input_feed = self.input_feed.detach() + + def beam_update(self, idx, positions, beam_size): + """ Need to document this """ + for e in self._all: + sizes = e.size() + br = sizes[1] + if len(sizes) == 3: + sent_states = e.view(sizes[0], beam_size, br // beam_size, + sizes[2])[:, :, idx] + else: + sent_states = e.view(sizes[0], beam_size, + br // beam_size, + sizes[2], + sizes[3])[:, :, idx] + + sent_states.data.copy_( + sent_states.data.index_select(1, positions)) + + def map_batch_fn(self, fn): + raise NotImplementedError() +======= +import math + +import torch +import torch.nn as nn +import torchsnooper + +def aeq(*args): + """ + Assert all arguments have the same value + """ + arguments = (arg for arg in args) + first = next(arguments) + assert all(arg == first for arg in arguments), \ + "Not all arguments have the same value: " + str(args) + + +def sequence_mask(lengths, max_len=None): + """ + Creates a boolean mask from sequence lengths. + """ + batch_size = lengths.numel() + max_len = max_len or lengths.max() + return (torch.arange(0, max_len) + .type_as(lengths) + .repeat(batch_size, 1) + .lt(lengths.unsqueeze(1))) + + +def gelu(x): + return 0.5 * x * (1 + torch.tanh(math.sqrt(2 / math.pi) * (x + 0.044715 * torch.pow(x, 3)))) + + +""" Global attention modules (Luong / Bahdanau) """ +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class GlobalAttention(nn.Module): + """ + Global attention takes a matrix and a query vector. It + then computes a parameterized convex combination of the matrix + based on the input query. + + Constructs a unit mapping a query `q` of size `dim` + and a source matrix `H` of size `n x dim`, to an output + of size `dim`. + + + .. mermaid:: + + graph BT + A[Query] + subgraph RNN + C[H 1] + D[H 2] + E[H N] + end + F[Attn] + G[Output] + A --> F + C --> F + D --> F + E --> F + C -.-> G + D -.-> G + E -.-> G + F --> G + + All models compute the output as + :math:`c = sum_{j=1}^{SeqLength} a_j H_j` where + :math:`a_j` is the softmax of a score function. + Then then apply a projection layer to [q, c]. + + However they + differ on how they compute the attention score. + + * Luong Attention (dot, general): + * dot: :math:`score(H_j,q) = H_j^T q` + * general: :math:`score(H_j, q) = H_j^T W_a q` + + + * Bahdanau Attention (mlp): + * :math:`score(H_j, q) = v_a^T tanh(W_a q + U_a h_j)` + + + Args: + dim (int): dimensionality of query and key + coverage (bool): use coverage term + attn_type (str): type of attention to use, options [dot,general,mlp] + + """ + + def __init__(self, dim, attn_type="dot"): + super(GlobalAttention, self).__init__() + + self.dim = dim + assert attn_type in ["dot", "general", "mlp"], ( + "Please select a valid attention type.") + self.attn_type = attn_type + + if self.attn_type == "general": + self.linear_in = nn.Linear(dim, dim, bias=False) + elif self.attn_type == "mlp": + self.linear_context = nn.Linear(dim, dim, bias=False) + self.linear_query = nn.Linear(dim, dim, bias=True) + self.v = nn.Linear(dim, 1, bias=False) + # mlp wants it with bias + out_bias = self.attn_type == "mlp" + self.linear_out = nn.Linear(dim * 2, dim, bias=out_bias) + + + def score(self, h_t, h_s): + """ + Args: + h_t (`FloatTensor`): sequence of queries `[batch x tgt_len x dim]` + h_s (`FloatTensor`): sequence of sources `[batch x src_len x dim]` + + Returns: + :obj:`FloatTensor`: + raw attention scores (unnormalized) for each src index + `[batch x tgt_len x src_len]` + + """ + + # Check input sizes + src_batch, src_len, src_dim = h_s.size() + tgt_batch, tgt_len, tgt_dim = h_t.size() + + if self.attn_type in ["general", "dot"]: + if self.attn_type == "general": + h_t_ = h_t.view(tgt_batch * tgt_len, tgt_dim) + h_t_ = self.linear_in(h_t_) + h_t = h_t_.view(tgt_batch, tgt_len, tgt_dim) + h_s_ = h_s.transpose(1, 2) + # (batch, t_len, d) x (batch, d, s_len) --> (batch, t_len, s_len) + return torch.bmm(h_t, h_s_) + else: + dim = self.dim + wq = self.linear_query(h_t.view(-1, dim)) + wq = wq.view(tgt_batch, tgt_len, 1, dim) + wq = wq.expand(tgt_batch, tgt_len, src_len, dim) + + uh = self.linear_context(h_s.contiguous().view(-1, dim)) + uh = uh.view(src_batch, 1, src_len, dim) + uh = uh.expand(src_batch, tgt_len, src_len, dim) + + # (batch, t_len, s_len, d) + wquh = torch.tanh(wq + uh) + + return self.v(wquh.view(-1, dim)).view(tgt_batch, tgt_len, src_len) + + def forward(self, source, memory_bank, memory_lengths=None, memory_masks=None): + """ + + Args: + source (`FloatTensor`): query vectors `[batch x tgt_len x dim]` + memory_bank (`FloatTensor`): source vectors `[batch x src_len x dim]` + memory_lengths (`LongTensor`): the source context lengths `[batch]` + coverage (`FloatTensor`): None (not supported yet) + + Returns: + (`FloatTensor`, `FloatTensor`): + + * Computed vector `[tgt_len x batch x dim]` + * Attention distribtutions for each query + `[tgt_len x batch x src_len]` + """ + + # one step input + if source.dim() == 2: + one_step = True + source = source.unsqueeze(1) + else: + one_step = False + + batch, source_l, dim = memory_bank.size() + batch_, target_l, dim_ = source.size() + + # compute attention scores, as in Luong et al. + align = self.score(source, memory_bank) + + if memory_masks is not None: + memory_masks = memory_masks.transpose(0,1) + memory_masks = memory_masks.transpose(1,2) + align.masked_fill_(1 - memory_masks.byte(), -float('inf')) + + if memory_lengths is not None: + mask = sequence_mask(memory_lengths, max_len=align.size(-1)) + mask = mask.unsqueeze(1) # Make it broadcastable. + align.masked_fill_(1 - mask, -float('inf')) + + align_vectors = F.softmax(align.view(batch*target_l, source_l), -1) + align_vectors = align_vectors.view(batch, target_l, source_l) + + c = torch.bmm(align_vectors, memory_bank) + + # concatenate + concat_c = torch.cat([c, source], 2).view(batch*target_l, dim*2) + attn_h = self.linear_out(concat_c).view(batch, target_l, dim) + if self.attn_type in ["general", "dot"]: + attn_h = torch.tanh(attn_h) + + if one_step: + attn_h = attn_h.squeeze(1) + align_vectors = align_vectors.squeeze(1) + + + else: + attn_h = attn_h.transpose(0, 1).contiguous() + align_vectors = align_vectors.transpose(0, 1).contiguous() + + return attn_h, align_vectors + + +class PositionwiseFeedForward(nn.Module): + """ A two-layer Feed-Forward-Network with residual layer norm. + + Args: + d_model (int): the size of input for the first-layer of the FFN. + d_ff (int): the hidden layer size of the second-layer + of the FNN. + dropout (float): dropout probability in :math:`[0, 1)`. + """ + + def __init__(self, d_model, d_ff, dropout=0.1): + super(PositionwiseFeedForward, self).__init__() + self.w_1 = nn.Linear(d_model, d_ff) + self.w_2 = nn.Linear(d_ff, d_model) + self.layer_norm = nn.LayerNorm(d_model, eps=1e-6) + self.actv = gelu + self.dropout_1 = nn.Dropout(dropout) + self.dropout_2 = nn.Dropout(dropout) + + def forward(self, x): + inter = self.dropout_1(self.actv(self.w_1(self.layer_norm(x)))) + output = self.dropout_2(self.w_2(inter)) + return output + x + + +class MultiHeadedAttention(nn.Module): + """ + Multi-Head Attention module from + "Attention is All You Need" + :cite:`DBLP:journals/corr/VaswaniSPUJGKP17`. + + Similar to standard `dot` attention but uses + multiple attention distributions simulataneously + to select relevant items. + + .. mermaid:: + + graph BT + A[key] + B[value] + C[query] + O[output] + subgraph Attn + D[Attn 1] + E[Attn 2] + F[Attn N] + end + A --> D + C --> D + A --> E + C --> E + A --> F + C --> F + D --> O + E --> O + F --> O + B --> O + + Also includes several additional tricks. + + Args: + head_count (int): number of parallel heads + model_dim (int): the dimension of keys/values/queries, + must be divisible by head_count + dropout (float): dropout parameter + """ + + def __init__(self, head_count, model_dim, dropout=0.1, use_final_linear=True): + assert model_dim % head_count == 0 + self.dim_per_head = model_dim // head_count + self.model_dim = model_dim + + super(MultiHeadedAttention, self).__init__() + self.head_count = head_count + + self.linear_keys = nn.Linear(model_dim, + head_count * self.dim_per_head) + self.linear_values = nn.Linear(model_dim, + head_count * self.dim_per_head) + self.linear_query = nn.Linear(model_dim, + head_count * self.dim_per_head) + self.softmax = nn.Softmax(dim=-1) + self.dropout = nn.Dropout(dropout) + self.use_final_linear = use_final_linear + if (self.use_final_linear): + self.final_linear = nn.Linear(model_dim, model_dim) + + # @torchsnooper.snoop() + def forward(self, key, value, query, mask=None, + layer_cache=None, type=None, predefined_graph_1=None): + """ + Compute the context vector and the attention vectors. + + Args: + key (`FloatTensor`): set of `key_len` + key vectors `[batch, key_len, dim]` + value (`FloatTensor`): set of `key_len` + value vectors `[batch, key_len, dim]` + query (`FloatTensor`): set of `query_len` + query vectors `[batch, query_len, dim]` + mask: binary mask indicating which keys have + non-zero attention `[batch, query_len, key_len]` + Returns: + (`FloatTensor`, `FloatTensor`) : + + * output context vectors `[batch, query_len, dim]` + * one of the attention vectors `[batch, query_len, key_len]` + """ + + # CHECKS + # batch, k_len, d = key.size() + # batch_, k_len_, d_ = value.size() + # aeq(batch, batch_) + # aeq(k_len, k_len_) + # aeq(d, d_) + # batch_, q_len, d_ = query.size() + # aeq(batch, batch_) + # aeq(d, d_) + # aeq(self.model_dim % 8, 0) + # if mask is not None: + # batch_, q_len_, k_len_ = mask.size() + # aeq(batch_, batch) + # aeq(k_len_, k_len) + # aeq(q_len_ == q_len) + # END CHECKS + batch_size = key.size(0) + dim_per_head = self.dim_per_head + head_count = self.head_count + key_len = key.size(1) + query_len = query.size(1) + + def shape(x): + """ projection """ + return x.view(batch_size, -1, head_count, dim_per_head) \ + .transpose(1, 2) + + def unshape(x): + """ compute context """ + return x.transpose(1, 2).contiguous() \ + .view(batch_size, -1, head_count * dim_per_head) + + # 1) Project key, value, and query. + if layer_cache is not None: + if type == "self": + query, key, value = self.linear_query(query), \ + self.linear_keys(query), \ + self.linear_values(query) + + key = shape(key) + value = shape(value) + + if layer_cache is not None: + device = key.device + if layer_cache["self_keys"] is not None: + key = torch.cat( + (layer_cache["self_keys"].to(device), key), + dim=2) + if layer_cache["self_values"] is not None: + value = torch.cat( + (layer_cache["self_values"].to(device), value), + dim=2) + layer_cache["self_keys"] = key + layer_cache["self_values"] = value + elif type == "context": + query = self.linear_query(query) + if layer_cache is not None: + if layer_cache["memory_keys"] is None: + key, value = self.linear_keys(key), \ + self.linear_values(value) + key = shape(key) + value = shape(value) + else: + key, value = layer_cache["memory_keys"], \ + layer_cache["memory_values"] + layer_cache["memory_keys"] = key + layer_cache["memory_values"] = value + else: + key, value = self.linear_keys(key), \ + self.linear_values(value) + key = shape(key) + value = shape(value) + else: + key = self.linear_keys(key) + value = self.linear_values(value) + query = self.linear_query(query) + key = shape(key) + value = shape(value) + + query = shape(query) + + key_len = key.size(2) + query_len = query.size(2) + + # 2) Calculate and scale scores. + query = query / math.sqrt(dim_per_head) + scores = torch.matmul(query, key.transpose(2, 3)) + + if mask is not None: + mask = mask.unsqueeze(1).expand_as(scores) + scores = scores.masked_fill(mask, -1e18) + + # 3) Apply attention dropout and compute context vectors. + + attn = self.softmax(scores) + + if (not predefined_graph_1 is None): + attn_masked = attn[:, -1] * predefined_graph_1 + attn_masked = attn_masked / (torch.sum(attn_masked, 2).unsqueeze(2) + 1e-9) + + attn = torch.cat([attn[:, :-1], attn_masked.unsqueeze(1)], 1) + + drop_attn = self.dropout(attn) + if (self.use_final_linear): + context = unshape(torch.matmul(drop_attn, value)) + output = self.final_linear(context) + return output + else: + context = torch.matmul(drop_attn, value) + return context + + # CHECK + # batch_, q_len_, d_ = output.size() + # aeq(q_len, q_len_) + # aeq(batch, batch_) + # aeq(d, d_) + + # Return one attn + + + +class DecoderState(object): + """Interface for grouping together the current state of a recurrent + decoder. In the simplest case just represents the hidden state of + the model. But can also be used for implementing various forms of + input_feeding and non-recurrent models. + + Modules need to implement this to utilize beam search decoding. + """ + def detach(self): + """ Need to document this """ + self.hidden = tuple([_.detach() for _ in self.hidden]) + self.input_feed = self.input_feed.detach() + + def beam_update(self, idx, positions, beam_size): + """ Need to document this """ + for e in self._all: + sizes = e.size() + br = sizes[1] + if len(sizes) == 3: + sent_states = e.view(sizes[0], beam_size, br // beam_size, + sizes[2])[:, :, idx] + else: + sent_states = e.view(sizes[0], beam_size, + br // beam_size, + sizes[2], + sizes[3])[:, :, idx] + + sent_states.data.copy_( + sent_states.data.index_select(1, positions)) + + def map_batch_fn(self, fn): + raise NotImplementedError() +>>>>>>> bcb618ae9faf5d35f3147b05b34268a73808238a diff --git a/fastSum/PreSum/models/optimizers.py b/fastSum/PreSum/models/optimizers.py new file mode 100644 index 0000000000000000000000000000000000000000..9ee237d9733e3207a7dc488923883607af96c652 --- /dev/null +++ b/fastSum/PreSum/models/optimizers.py @@ -0,0 +1,221 @@ +import torch +from torch import optim +from torch.nn.utils import clip_grad_norm_ + + +def build_optim(args, model, checkpoint): + if args.sep_optim: + return [build_optim_bert(args, model, checkpoint), build_optim_dec(args, model, checkpoint)] + else: + return [single_optim(args, model, checkpoint)] + + +def single_optim(args, model, checkpoint): + """ Build optimizer """ + + if checkpoint is not None: + optim = checkpoint['optims'][0] + saved_optimizer_state_dict = optim.optimizer.state_dict() + optim.optimizer.load_state_dict(saved_optimizer_state_dict) + if args.visible_gpus != '-1': + for state in optim.optimizer.state.values(): + for k, v in state.items(): + if torch.is_tensor(v): + state[k] = v.cuda() + + if (optim.method == 'adam') and (len(optim.optimizer.state) < 1): + raise RuntimeError( + "Error: loaded Adam optimizer from existing model" + + " but optimizer state is empty") + + else: + optim = Optimizer( + args.optim, args.lr, args.max_grad_norm, + beta1=args.beta1, beta2=args.beta2, + decay_method='noam', + warmup_steps=args.warmup_steps) + + optim.set_parameters(list(model.named_parameters())) + + return optim + + +def build_optim_bert(args, model, checkpoint): + """ Build optimizer """ + + if checkpoint is not None: + optim = checkpoint['optims'][0] + saved_optimizer_state_dict = optim.optimizer.state_dict() + optim.optimizer.load_state_dict(saved_optimizer_state_dict) + if args.visible_gpus != '-1': + for state in optim.optimizer.state.values(): + for k, v in state.items(): + if torch.is_tensor(v): + state[k] = v.cuda() + + if (optim.method == 'adam') and (len(optim.optimizer.state) < 1): + raise RuntimeError( + "Error: loaded Adam optimizer from existing model" + + " but optimizer state is empty") + + else: + optim = Optimizer( + args.optim, args.lr_bert, args.max_grad_norm, + beta1=args.beta1, beta2=args.beta2, + decay_method='noam', + warmup_steps=args.warmup_steps_bert) + + params = [(n, p) for n, p in list(model.named_parameters()) if n.startswith('bert.model')] + optim.set_parameters(params) + + return optim + + +def build_optim_dec(args, model, checkpoint): + """ Build optimizer """ + + if checkpoint is not None: + optim = checkpoint['optims'][1] + saved_optimizer_state_dict = optim.optimizer.state_dict() + optim.optimizer.load_state_dict(saved_optimizer_state_dict) + if args.visible_gpus != '-1': + for state in optim.optimizer.state.values(): + for k, v in state.items(): + if torch.is_tensor(v): + state[k] = v.cuda() + + if (optim.method == 'adam') and (len(optim.optimizer.state) < 1): + raise RuntimeError( + "Error: loaded Adam optimizer from existing model" + + " but optimizer state is empty") + + else: + optim = Optimizer( + args.optim, args.lr_dec, args.max_grad_norm, + beta1=args.beta1, beta2=args.beta2, + decay_method='noam', + warmup_steps=args.warmup_steps_dec) + + params = [(n, p) for n, p in list(model.named_parameters()) if not n.startswith('bert.model')] + optim.set_parameters(params) + + return optim + + +class Optimizer(object): + """ + Controller class for optimization. Mostly a thin + wrapper for `optim`, but also useful for implementing + rate scheduling beyond what is currently available. + Also implements necessary methods for training RNNs such + as grad manipulations. + + Args: + method (:obj:`str`): one of [sgd, adagrad, adadelta, adam] + lr (float): learning rate + lr_decay (float, optional): learning rate decay multiplier + start_decay_steps (int, optional): step to start learning rate decay + beta1, beta2 (float, optional): parameters for adam + adagrad_accum (float, optional): initialization parameter for adagrad + decay_method (str, option): custom decay options + warmup_steps (int, option): parameter for `noam` decay + model_size (int, option): parameter for `noam` decay + + We use the default parameters for Adam that are suggested by + the original paper https://arxiv.org/pdf/1412.6980.pdf + These values are also used by other established implementations, + e.g. https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer + https://keras.io/optimizers/ + Recently there are slightly different values used in the paper + "Attention is all you need" + https://arxiv.org/pdf/1706.03762.pdf, particularly the value beta2=0.98 + was used there however, beta2=0.999 is still arguably the more + established value, so we use that here as well + """ + + def __init__(self, method, learning_rate, max_grad_norm, + lr_decay=1, start_decay_steps=None, decay_steps=None, + beta1=0.9, beta2=0.999, + adagrad_accum=0.0, + decay_method=None, + warmup_steps=4000, weight_decay=0): + self.last_ppl = None + self.learning_rate = learning_rate + self.original_lr = learning_rate + self.max_grad_norm = max_grad_norm + self.method = method + self.lr_decay = lr_decay + self.start_decay_steps = start_decay_steps + self.decay_steps = decay_steps + self.start_decay = False + self._step = 0 + self.betas = [beta1, beta2] + self.adagrad_accum = adagrad_accum + self.decay_method = decay_method + self.warmup_steps = warmup_steps + self.weight_decay = weight_decay + + def set_parameters(self, params): + """ ? """ + self.params = [] + self.sparse_params = [] + for k, p in params: + if p.requires_grad: + if self.method != 'sparseadam' or "embed" not in k: + self.params.append(p) + else: + self.sparse_params.append(p) + if self.method == 'sgd': + self.optimizer = optim.SGD(self.params, lr=self.learning_rate) + elif self.method == 'adagrad': + self.optimizer = optim.Adagrad(self.params, lr=self.learning_rate) + for group in self.optimizer.param_groups: + for p in group['params']: + self.optimizer.state[p]['sum'] = self.optimizer \ + .state[p]['sum'].fill_(self.adagrad_accum) + elif self.method == 'adadelta': + self.optimizer = optim.Adadelta(self.params, lr=self.learning_rate) + elif self.method == 'adam': + self.optimizer = optim.Adam(self.params, lr=self.learning_rate, + betas=self.betas, eps=1e-9) + else: + raise RuntimeError("Invalid optim method: " + self.method) + + def _set_rate(self, learning_rate): + self.learning_rate = learning_rate + if self.method != 'sparseadam': + self.optimizer.param_groups[0]['lr'] = self.learning_rate + else: + for op in self.optimizer.optimizers: + op.param_groups[0]['lr'] = self.learning_rate + + def step(self): + """Update the model parameters based on current gradients. + + Optionally, will employ gradient modification or update learning + rate. + """ + self._step += 1 + + # Decay method used in tensor2tensor. + if self.decay_method == "noam": + self._set_rate( + self.original_lr * + min(self._step ** (-0.5), + self._step * self.warmup_steps ** (-1.5))) + + else: + if ((self.start_decay_steps is not None) and ( + self._step >= self.start_decay_steps)): + self.start_decay = True + if self.start_decay: + if ((self._step - self.start_decay_steps) + % self.decay_steps == 0): + self.learning_rate = self.learning_rate * self.lr_decay + + if self.method != 'sparseadam': + self.optimizer.param_groups[0]['lr'] = self.learning_rate + + if self.max_grad_norm: + clip_grad_norm_(self.params, self.max_grad_norm) + self.optimizer.step() diff --git a/fastSum/PreSum/others/__init__.py b/fastSum/PreSum/others/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/PreSum/others/logging.py b/fastSum/PreSum/others/logging.py new file mode 100644 index 0000000000000000000000000000000000000000..ceaedff0251dd9986176c27b99ec338b1f95adfc --- /dev/null +++ b/fastSum/PreSum/others/logging.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import + +import logging + +logger = logging.getLogger() + + +def init_logger(log_file=None, log_file_level=logging.NOTSET): + log_format = logging.Formatter("[%(asctime)s %(levelname)s] %(message)s") + logger = logging.getLogger() + logger.setLevel(logging.INFO) + + console_handler = logging.StreamHandler() + console_handler.setFormatter(log_format) + logger.handlers = [console_handler] + + if log_file and log_file != '': + file_handler = logging.FileHandler(log_file) + file_handler.setLevel(log_file_level) + file_handler.setFormatter(log_format) + logger.addHandler(file_handler) + + return logger diff --git a/fastSum/PreSum/others/tokenization.py b/fastSum/PreSum/others/tokenization.py new file mode 100644 index 0000000000000000000000000000000000000000..acb9d3e1a2821e042ae1acfbdcb0d44f27af422b --- /dev/null +++ b/fastSum/PreSum/others/tokenization.py @@ -0,0 +1,382 @@ +# coding=utf-8 +# Copyright 2018 The Google AI Language Team Authors and The HugginFace Inc. team. +# +# 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. +"""Tokenization classes.""" + +from __future__ import absolute_import, division, print_function, unicode_literals + +import collections +import logging +import os +import unicodedata +from io import open + +from pytorch_transformers import cached_path + +logger = logging.getLogger(__name__) + +PRETRAINED_VOCAB_ARCHIVE_MAP = { + 'bert-base-uncased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-uncased-vocab.txt", + 'bert-large-uncased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-large-uncased-vocab.txt", + 'bert-base-cased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-cased-vocab.txt", + 'bert-large-cased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-large-cased-vocab.txt", + 'bert-base-multilingual-uncased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-multilingual-uncased-vocab.txt", + 'bert-base-multilingual-cased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-multilingual-cased-vocab.txt", + 'bert-base-chinese': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-vocab.txt", +} +PRETRAINED_VOCAB_POSITIONAL_EMBEDDINGS_SIZE_MAP = { + 'bert-base-uncased': 512, + 'bert-large-uncased': 512, + 'bert-base-cased': 512, + 'bert-large-cased': 512, + 'bert-base-multilingual-uncased': 512, + 'bert-base-multilingual-cased': 512, + 'bert-base-chinese': 512, +} +VOCAB_NAME = 'vocab.txt' + + +def load_vocab(vocab_file): + """Loads a vocabulary file into a dictionary.""" + vocab = collections.OrderedDict() + index = 0 + with open(vocab_file, "r", encoding="utf-8") as reader: + while True: + token = reader.readline() + if not token: + break + token = token.strip() + vocab[token] = index + index += 1 + return vocab + + +def whitespace_tokenize(text): + """Runs basic whitespace cleaning and splitting on a peice of text.""" + text = text.strip() + if not text: + return [] + tokens = text.split() + return tokens + + +class BertTokenizer(object): + """Runs end-to-end tokenization: punctuation splitting + wordpiece""" + + def __init__(self, vocab_file, do_lower_case=True, max_len=None, + never_split=("[UNK]", "[SEP]", "[PAD]", "[CLS]", "[MASK]", "[unused0]", "[unused1]", "[unused2]", "[unused3]", "[unused4]", "[unused5]", "[unused6]")): + + if not os.path.isfile(vocab_file): + raise ValueError( + "Can't find a vocabulary file at path '{}'. To load the vocabulary from a Google pretrained " + "model use `tokenizer = BertTokenizer.from_pretrained(PRETRAINED_MODEL_NAME)`".format(vocab_file)) + self.do_lower_case = do_lower_case + self.vocab = load_vocab(vocab_file) + self.ids_to_tokens = collections.OrderedDict( + [(ids, tok) for tok, ids in self.vocab.items()]) + self.basic_tokenizer = BasicTokenizer(do_lower_case=do_lower_case, + never_split=never_split) + self.wordpiece_tokenizer = WordpieceTokenizer(vocab=self.vocab) + self.max_len = max_len if max_len is not None else int(1e12) + + def tokenize(self, text, use_bert_basic_tokenizer=False): + split_tokens = [] + if(use_bert_basic_tokenizer): + pretokens = self.basic_tokenizer.tokenize(text) + else: + pretokens = list(enumerate(text.split())) + + for i,token in pretokens: + # if(self.do_lower_case): + # token = token.lower() + subtokens = self.wordpiece_tokenizer.tokenize(token) + for sub_token in subtokens: + split_tokens.append(sub_token) + return split_tokens + + def convert_tokens_to_ids(self, tokens): + """Converts a sequence of tokens into ids using the vocab.""" + ids = [] + for token in tokens: + ids.append(self.vocab[token]) + # if len(ids) > self.max_len: + # raise ValueError( + # "Token indices sequence length is longer than the specified maximum " + # " sequence length for this BERT model ({} > {}). Running this" + # " sequence through BERT will result in indexing errors".format(len(ids), self.max_len) + # ) + return ids + + def convert_ids_to_tokens(self, ids): + """Converts a sequence of ids in wordpiece tokens using the vocab.""" + tokens = [] + for i in ids: + tokens.append(self.ids_to_tokens[i]) + return tokens + + @classmethod + def from_pretrained(cls, pretrained_model_name_or_path, cache_dir=None, *inputs, **kwargs): + """ + Instantiate a PreTrainedBertModel from a pre-trained model file. + Download and cache the pre-trained model file if needed. + """ + if pretrained_model_name_or_path in PRETRAINED_VOCAB_ARCHIVE_MAP: + vocab_file = PRETRAINED_VOCAB_ARCHIVE_MAP[pretrained_model_name_or_path] + else: + vocab_file = pretrained_model_name_or_path + if os.path.isdir(vocab_file): + vocab_file = os.path.join(vocab_file, VOCAB_NAME) + # redirect to the cache, if necessary + try: + resolved_vocab_file = cached_path(vocab_file, cache_dir=cache_dir) + except EnvironmentError: + logger.error( + "Model name '{}' was not found in model name list ({}). " + "We assumed '{}' was a path or url but couldn't find any file " + "associated to this path or url.".format( + pretrained_model_name_or_path, + ', '.join(PRETRAINED_VOCAB_ARCHIVE_MAP.keys()), + vocab_file)) + return None + if resolved_vocab_file == vocab_file: + logger.info("loading vocabulary file {}".format(vocab_file)) + else: + logger.info("loading vocabulary file {} from cache at {}".format( + vocab_file, resolved_vocab_file)) + if pretrained_model_name_or_path in PRETRAINED_VOCAB_POSITIONAL_EMBEDDINGS_SIZE_MAP: + # if we're using a pretrained model, ensure the tokenizer wont index sequences longer + # than the number of positional embeddings + max_len = PRETRAINED_VOCAB_POSITIONAL_EMBEDDINGS_SIZE_MAP[pretrained_model_name_or_path] + kwargs['max_len'] = min(kwargs.get('max_len', int(1e12)), max_len) + # Instantiate tokenizer. + tokenizer = cls(resolved_vocab_file, *inputs, **kwargs) + return tokenizer + + +class BasicTokenizer(object): + """Runs basic tokenization (punctuation splitting, lower casing, etc.).""" + + def __init__(self, + do_lower_case=True, + never_split=("[UNK]", "[SEP]", "[PAD]", "[CLS]", "[MASK]")): + """Constructs a BasicTokenizer. + + Args: + do_lower_case: Whether to lower case the input. + """ + self.do_lower_case = do_lower_case + self.never_split = never_split + + def tokenize(self, text): + """Tokenizes a piece of text.""" + text = self._clean_text(text) + # This was added on November 1st, 2018 for the multilingual and Chinese + # models. This is also applied to the English models now, but it doesn't + # matter since the English models were not trained on any Chinese data + # and generally don't have any Chinese data in them (there are Chinese + # characters in the vocabulary because Wikipedia does have some Chinese + # words in the English Wikipedia.). + text = self._tokenize_chinese_chars(text) + orig_tokens = whitespace_tokenize(text) + split_tokens = [] + for i,token in enumerate(orig_tokens): + if self.do_lower_case and token not in self.never_split: + token = token.lower() + token = self._run_strip_accents(token) + # split_tokens.append(token) + split_tokens.extend([(i,t) for t in self._run_split_on_punc(token)]) + + # output_tokens = whitespace_tokenize(" ".join(split_tokens)) + return split_tokens + + def _run_strip_accents(self, text): + """Strips accents from a piece of text.""" + text = unicodedata.normalize("NFD", text) + output = [] + for char in text: + cat = unicodedata.category(char) + if cat == "Mn": + continue + output.append(char) + return "".join(output) + + def _run_split_on_punc(self, text): + """Splits punctuation on a piece of text.""" + if text in self.never_split: + return [text] + chars = list(text) + i = 0 + start_new_word = True + output = [] + while i < len(chars): + char = chars[i] + if _is_punctuation(char): + output.append([char]) + start_new_word = True + else: + if start_new_word: + output.append([]) + start_new_word = False + output[-1].append(char) + i += 1 + + return ["".join(x) for x in output] + + def _tokenize_chinese_chars(self, text): + """Adds whitespace around any CJK character.""" + output = [] + for char in text: + cp = ord(char) + if self._is_chinese_char(cp): + output.append(" ") + output.append(char) + output.append(" ") + else: + output.append(char) + return "".join(output) + + def _is_chinese_char(self, cp): + """Checks whether CP is the codepoint of a CJK character.""" + # This defines a "chinese character" as anything in the CJK Unicode block: + # https://en.wikipedia.org/wiki/CJK_Unified_Ideographs_(Unicode_block) + # + # Note that the CJK Unicode block is NOT all Japanese and Korean characters, + # despite its name. The modern Korean Hangul alphabet is a different block, + # as is Japanese Hiragana and Katakana. Those alphabets are used to write + # space-separated words, so they are not treated specially and handled + # like the all of the other languages. + if ((cp >= 0x4E00 and cp <= 0x9FFF) or # + (cp >= 0x3400 and cp <= 0x4DBF) or # + (cp >= 0x20000 and cp <= 0x2A6DF) or # + (cp >= 0x2A700 and cp <= 0x2B73F) or # + (cp >= 0x2B740 and cp <= 0x2B81F) or # + (cp >= 0x2B820 and cp <= 0x2CEAF) or + (cp >= 0xF900 and cp <= 0xFAFF) or # + (cp >= 0x2F800 and cp <= 0x2FA1F)): # + return True + + return False + + def _clean_text(self, text): + """Performs invalid character removal and whitespace cleanup on text.""" + output = [] + for char in text: + cp = ord(char) + if cp == 0 or cp == 0xfffd or _is_control(char): + continue + if _is_whitespace(char): + output.append(" ") + else: + output.append(char) + return "".join(output) + + +class WordpieceTokenizer(object): + """Runs WordPiece tokenization.""" + + def __init__(self, vocab, unk_token="[UNK]", max_input_chars_per_word=100): + self.vocab = vocab + self.unk_token = unk_token + self.max_input_chars_per_word = max_input_chars_per_word + + def tokenize(self, text): + """Tokenizes a piece of text into its word pieces. + + This uses a greedy longest-match-first algorithm to perform tokenization + using the given vocabulary. + + For example: + input = "unaffable" + output = ["un", "##aff", "##able"] + + Args: + text: A single token or whitespace separated tokens. This should have + already been passed through `BasicTokenizer`. + + Returns: + A list of wordpiece tokens. + """ + + output_tokens = [] + for token in whitespace_tokenize(text): + chars = list(token) + if len(chars) > self.max_input_chars_per_word: + output_tokens.append(self.unk_token) + continue + + is_bad = False + start = 0 + sub_tokens = [] + while start < len(chars): + end = len(chars) + cur_substr = None + while start < end: + substr = "".join(chars[start:end]) + if start > 0: + substr = "##" + substr + if substr in self.vocab: + cur_substr = substr + break + end -= 1 + if cur_substr is None: + is_bad = True + break + sub_tokens.append(cur_substr) + start = end + + if is_bad: + output_tokens.append(self.unk_token) + else: + output_tokens.extend(sub_tokens) + return output_tokens + + +def _is_whitespace(char): + """Checks whether `chars` is a whitespace character.""" + # \t, \n, and \r are technically contorl characters but we treat them + # as whitespace since they are generally considered as such. + if char == " " or char == "\t" or char == "\n" or char == "\r": + return True + cat = unicodedata.category(char) + if cat == "Zs": + return True + return False + + +def _is_control(char): + """Checks whether `chars` is a control character.""" + # These are technically control characters but we count them as whitespace + # characters. + if char == "\t" or char == "\n" or char == "\r": + return False + cat = unicodedata.category(char) + if cat.startswith("C"): + return True + return False + + +def _is_punctuation(char): + """Checks whether `chars` is a punctuation character.""" + cp = ord(char) + # We treat all non-letter/number ASCII as punctuation. + # Characters such as "^", "$", and "`" are not in the Unicode + # Punctuation class but we treat them as punctuation anyways, for + # consistency. + if ((cp >= 33 and cp <= 47) or (cp >= 58 and cp <= 64) or + (cp >= 91 and cp <= 96) or (cp >= 123 and cp <= 126)): + return True + cat = unicodedata.category(char) + if cat.startswith("P"): + return True + return False diff --git a/fastSum/PreSum/others/utils.py b/fastSum/PreSum/others/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..31df5354c9a5509a5e12ddbe975524d501e33daf --- /dev/null +++ b/fastSum/PreSum/others/utils.py @@ -0,0 +1,419 @@ +import os +import re +import shutil +import time + +# from others import pyrouge +# import pyrouge +import argparse + +REMAP = {"-lrb-": "(", "-rrb-": ")", "-lcb-": "{", "-rcb-": "}", + "-lsb-": "[", "-rsb-": "]", "``": '"', "''": '"'} + + +def clean(x): + return re.sub( + r"-lrb-|-rrb-|-lcb-|-rcb-|-lsb-|-rsb-|``|''", + lambda m: REMAP.get(m.group()), x) + +ROOT = "../" +_ROUGE_PATH = '../../resources/ROUGE/RELEASE-1.5.5' + +def mkdir(path): + if not os.path.exists(path): + os.mkdir(path) + + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected.') + + +def _get_ngrams(n, text): + """Calcualtes n-grams. + + Args: + n: which n-grams to calculate + text: An array of tokens + + Returns: + A set of n-grams + """ + ngram_set = set() + text_length = len(text) + max_index_ngram_start = text_length - n + for i in range(max_index_ngram_start + 1): + ngram_set.add(tuple(text[i:i + n])) + return ngram_set + + +def _get_word_ngrams(n, sentences): + """Calculates word n-grams for multiple sentences. + """ + assert len(sentences) > 0 + assert n > 0 + + # words = _split_into_words(sentences) + + words = sum(sentences, []) + # words = [w for w in words if w not in stopwords] + return _get_ngrams(n, words) + + +def process(params): + temp_dir, data = params + candidates, references, pool_id = data + cnt = len(candidates) + current_time = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime()) + tmp_dir = os.path.join(temp_dir, "rouge-tmp-{}-{}".format(current_time, pool_id)) + if not os.path.isdir(tmp_dir): + os.mkdir(tmp_dir) + os.mkdir(tmp_dir + "/candidate") + os.mkdir(tmp_dir + "/reference") + try: + + for i in range(cnt): + if len(references[i]) < 1: + continue + with open(tmp_dir + "/candidate/cand.{}.txt".format(i), "w", + encoding="utf-8") as f: + f.write(candidates[i]) + with open(tmp_dir + "/reference/ref.{}.txt".format(i), "w", + encoding="utf-8") as f: + f.write(references[i]) + r = pyrouge.Rouge155(temp_dir=temp_dir) + r.model_dir = tmp_dir + "/reference/" + r.system_dir = tmp_dir + "/candidate/" + r.model_filename_pattern = 'ref.#ID#.txt' + r.system_filename_pattern = r'cand.(\d+).txt' + rouge_results = r.convert_and_evaluate() + print(rouge_results) + results_dict = r.output_to_dict(rouge_results) + finally: + pass + if os.path.isdir(tmp_dir): + shutil.rmtree(tmp_dir) + return results_dict + + +def test_rouge(temp_dir, cand, ref): + candidates = [line.strip() for line in open(cand, encoding='utf-8')] + references = [line.strip() for line in open(ref, encoding='utf-8')] + print(len(candidates)) + print(len(references)) + assert len(candidates) == len(references) + + cnt = len(candidates) + current_time = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime()) + tmp_dir = os.path.join(temp_dir, "rouge-tmp-{}".format(current_time)) + if not os.path.isdir(tmp_dir): + os.mkdir(tmp_dir) + os.mkdir(tmp_dir + "/candidate") + os.mkdir(tmp_dir + "/reference") + try: + + for i in range(cnt): + if len(references[i]) < 1: + continue + with open(tmp_dir + "/candidate/cand.{}.txt".format(i), "w", + encoding="utf-8") as f: + f.write(candidates[i]) + with open(tmp_dir + "/reference/ref.{}.txt".format(i), "w", + encoding="utf-8") as f: + f.write(references[i]) + r = pyrouge.Rouge155(temp_dir=temp_dir) + r.model_dir = tmp_dir + "/reference/" + r.system_dir = tmp_dir + "/candidate/" + r.model_filename_pattern = 'ref.#ID#.txt' + r.system_filename_pattern = r'cand.(\d+).txt' + rouge_results = r.convert_and_evaluate() + print(rouge_results) + results_dict = r.output_to_dict(rouge_results) + finally: + pass + if os.path.isdir(tmp_dir): + shutil.rmtree(tmp_dir) + return results_dict + + +def tile(x, count, dim=0): + """ + Tiles x on dimension dim count times. + """ + perm = list(range(len(x.size()))) + if dim != 0: + perm[0], perm[dim] = perm[dim], perm[0] + x = x.permute(perm).contiguous() + out_size = list(x.size()) + out_size[0] *= count + batch = x.size(0) + x = x.view(batch, -1) \ + .transpose(0, 1) \ + .repeat(count, 1) \ + .transpose(0, 1) \ + .contiguous() \ + .view(*out_size) + if dim != 0: + x = x.permute(perm).contiguous() + return x + + +def rouge_results_to_str(results_dict): + return ">> ROUGE-F(1/2/3/l): {:.2f}/{:.2f}/{:.2f}\nROUGE-R(1/2/3/l): {:.2f}/{:.2f}/{:.2f}\n".format( + results_dict["rouge_1_f_score"] * 100, + results_dict["rouge_2_f_score"] * 100, + # results_dict["rouge_3_f_score"] * 100, + results_dict["rouge_l_f_score"] * 100, + results_dict["rouge_1_recall"] * 100, + results_dict["rouge_2_recall"] * 100, + # results_dict["rouge_3_f_score"] * 100, + results_dict["rouge_l_recall"] * 100 + + # ,results_dict["rouge_su*_f_score"] * 100 + ) + + +import os +from os.path import exists + + +def get_data_path(mode, label_type): + ''' + :param mode: train, validate or test + :param label_type: dataset dir name + :return: + ''' + paths = {} + if mode == 'train': + paths['train'] = 'data/' + label_type + '/bert.train.jsonl' + paths['val'] = 'data/' + label_type + '/bert.val.jsonl' + else: + paths['test'] = 'data/' + label_type + '/bert.test.jsonl' + return paths + + +def get_rouge_path(label_type): + # if label_type == 'others': + # data_path = 'data/' + label_type + '/bert.test.jsonl' + # else: + # data_path = 'data/' + label_type + '/test.jsonl' + data_path = 'data/' + label_type + '/bert.test.jsonl' + dec_path = 'dec' + ref_path = 'ref' + if not exists(ref_path): + os.makedirs(ref_path) + if not exists(dec_path): + os.makedirs(dec_path) + return data_path, dec_path, ref_path + + +def configure_training(args): + devices = [int(gpu) for gpu in args.visible_gpus.split(',')] + params = {} + params['task'] = args.task + params['encoder'] = args.encoder + params['mode'] = args.mode + params['max_pos'] = args.max_pos + params['sep_optim'] = args.sep_optim + params['beam_size'] = args.beam_size + params['batch_size'] = args.batch_size + params['accum_count'] = args.accum_count + params['lr_bert'] = args.lr_bert + params['lr_dec'] = args.lr_dec + params['lr'] = args.lr + params['warmup_steps'] = args.warmup_steps + params['warmup_steps_bert'] = args.warmup_steps_bert + params['warmup_steps_dec'] = args.warmup_steps_dec + params['n_epochs'] = args.n_epochs + # params['valid_steps'] = args.valid_steps + return devices, params + + +import re +import os +import shutil +import copy +import datetime +import numpy as np +from rouge import Rouge +import random +import tempfile +import os +import pyrouge +import logging +import tensorflow as tf +import datetime + +import sys + +sys.setrecursionlimit(10000) + +REMAP = {"-lrb-": "(", "-rrb-": ")", "-lcb-": "{", "-rcb-": "}", + "-lsb-": "[", "-rsb-": "]", "``": '"', "''": '"'} + + +def ranstr(num): + # 猜猜变量名为啥叫 H,生成随机字符串 + H = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + + salt = '' + for i in range(num): + salt += random.choice(H) + + return salt + + +def clean(x): + return re.sub(r"-lrb-|-rrb-|-lcb-|-rcb-|-lsb-|-rsb-|``|''", lambda m: REMAP.get(m.group()), x) + + +def pyrouge_score_all(hyps_list, refer_list, config, tmp_path, remap=True): + nowTime = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + + tempfile.tempdir = tmp_path + assert not os.path.exists(tmp_path) + os.mkdir(tmp_path) + + PYROUGE_ROOT = os.path.join(ROOT, 'tmp', nowTime + "_" + ranstr(6)) + while os.path.exists(PYROUGE_ROOT): + PYROUGE_ROOT = os.path.join(ROOT, 'tmp', nowTime + "_" + ranstr(6)) + assert not os.path.exists(PYROUGE_ROOT), "pyrouge root already exist!" + + SYSTEM_PATH = os.path.join(PYROUGE_ROOT, 'model') + MODEL_PATH = os.path.join(PYROUGE_ROOT, 'gold') + + os.makedirs(SYSTEM_PATH) + os.makedirs(MODEL_PATH) + + assert len(hyps_list) == len(refer_list) + gold_path = os.path.join(config.decode_path, "gold.txt") + pred_path = os.path.join(config.decode_path, "pred.txt") + + for i in range(len(hyps_list)): + system_file = os.path.join(SYSTEM_PATH, 'Model.%d.txt' % i) + model_file = os.path.join(MODEL_PATH, 'Gold.A.%d.txt' % i) + + refer = clean(refer_list[i]) if remap else refer_list[i] + hyps = clean(hyps_list[i]) if remap else hyps_list[i] + + with open(system_file, 'wb') as f: + f.write(hyps.encode('utf-8')) + with open(model_file, 'wb') as f: + f.write(refer.encode('utf-8')) + + with open(gold_path, 'a') as f: + f.write(refer.replace("\n", " ")) + f.write("\n") + with open(pred_path, 'a') as f: + f.write(hyps.replace("\n", " ")) + f.write("\n") + + r = pyrouge.Rouge155(_ROUGE_PATH) + + r.system_dir = SYSTEM_PATH + r.model_dir = MODEL_PATH + r.system_filename_pattern = 'Model.(\d+).txt' + r.model_filename_pattern = 'Gold.[A-Z].#ID#.txt' + + output = r.convert_and_evaluate(rouge_args="-e {}/data -a -m -n 2 -d".format(_ROUGE_PATH)) + output_dict = r.output_to_dict(output) + + shutil.rmtree(PYROUGE_ROOT) + shutil.rmtree(tmp_path) + + scores = {} + scores['rouge_1_precision'], scores['rouge_1_recall'], scores['rouge_1_f_score'] = output_dict['rouge_1_precision'], \ + output_dict['rouge_1_recall'], \ + output_dict[ + 'rouge_1_f_score'] + scores['rouge_2_precision'], scores['rouge_2_recall'], scores['rouge_2_f_score'] = output_dict['rouge_2_precision'], \ + output_dict['rouge_2_recall'], \ + output_dict[ + 'rouge_2_f_score'] + scores['rouge_l_precision'], scores['rouge_l_recall'], scores['rouge_l_f_score'] = output_dict['rouge_l_precision'], \ + output_dict['rouge_l_recall'], \ + output_dict[ + 'rouge_l_f_score'] + return scores + + +def pyrouge_score_all_multi(hyps_list, refer_list, config, tmp_path, remap=True): + # 暂时不能用,使用时需要检查过 + nowTime = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + + tempfile.tempdir = tmp_path + assert not os.path.exists(tmp_path) + os.mkdir(tmp_path) + + PYROUGE_ROOT = os.path.join(ROOT, 'tmp', nowTime + "_" + ranstr(6)) + while os.path.exists(PYROUGE_ROOT): + PYROUGE_ROOT = os.path.join(ROOT, 'tmp', nowTime + "_" + ranstr(6)) + assert not os.path.exists(PYROUGE_ROOT), "pyrouge root already exist!" + + SYSTEM_PATH = os.path.join(PYROUGE_ROOT, 'model') + MODEL_PATH = os.path.join(PYROUGE_ROOT, 'gold') + + os.makedirs(SYSTEM_PATH) + os.makedirs(MODEL_PATH) + + assert len(hyps_list) == len(refer_list) + + pred_path = os.path.join(config.decode_path, "pred.txt") + + for i in range(len(hyps_list)): + system_file = os.path.join(SYSTEM_PATH, 'Model.%d.txt' % i) + # model_file = os.path.join(MODEL_PATH, 'Reference.A.%d.txt' % i) + + hyps = clean(hyps_list[i]) if remap else hyps_list[i] + + with open(system_file, 'wb') as f: + f.write(hyps.encode('utf-8')) + + referType = ["A", "B", "C", "D", "E", "F", "G"] + + for j in range(len(refer_list[i])): + model_file = os.path.join(MODEL_PATH, "Gold.%s.%d.txt" % (referType[j], i)) + refer = clean(refer_list[i][j]) if remap else refer_list[i][j] + with open(model_file, 'wb') as f: + f.write(refer.encode('utf-8')) + + gold_path = os.path.join(config.decode_path, "gold.%s.txt" % (referType[j])) + with open(gold_path, 'a') as f: + f.write(refer.replace("\n", " ")) + f.write("\n") + + with open(pred_path, 'a') as f: + f.write(hyps.replace("\n", " ")) + f.write("\n") + + r = pyrouge.Rouge155() + + r.system_dir = SYSTEM_PATH + r.model_dir = MODEL_PATH + r.system_filename_pattern = 'Model.(\d+).txt' + r.model_filename_pattern = 'Gold.[A-Z].#ID#.txt' + + output = r.convert_and_evaluate() + output_dict = r.output_to_dict(output) + + shutil.rmtree(PYROUGE_ROOT) + shutil.rmtree(tmp_path) + + scores = {} + scores["rouge_1_precision"], scores['rouge_1_recall'], scores['rouge_1_f_score'] = output_dict['rouge_1_precision'], \ + output_dict['rouge_1_recall'], \ + output_dict[ + 'rouge_1_f_score'] + scores['rouge_2_precision'], scores['rouge_2_recall'], scores['rouge_2_f_score'] = output_dict['rouge_2_precision'], \ + output_dict['rouge_2_recall'], \ + output_dict[ + 'rouge_2_f_score'] + scores['rouge_l_precision'], scores['rouge_l_recall'], scores['rouge_l_f_score'] = output_dict['rouge_l_precision'], \ + output_dict['rouge_l_recall'], \ + output_dict[ + 'rouge_l_f_score'] + return scores diff --git a/fastSum/PreSum/preprocess.py b/fastSum/PreSum/preprocess.py new file mode 100644 index 0000000000000000000000000000000000000000..094ec7af0da9bf4741ec7622e73c48cd24cc91f1 --- /dev/null +++ b/fastSum/PreSum/preprocess.py @@ -0,0 +1,260 @@ +# encoding=utf-8 + +import argparse +import time + +from others.logging import init_logger +from others.utils import str2bool, _get_word_ngrams, mkdir +import gc +import glob +import hashlib +import json +import os +import re +import subprocess +from os.path import join as pjoin +import torch +from multiprocess import Pool +from others.logging import logger +from others.tokenization import BertTokenizer + + +def load_jsonl(data_path): + data = [] + with open(data_path) as f: + for line in f: + data.append(json.loads(line)) + return data + + +def cal_rouge(evaluated_ngrams, reference_ngrams): + reference_count = len(reference_ngrams) + evaluated_count = len(evaluated_ngrams) + + overlapping_ngrams = evaluated_ngrams.intersection(reference_ngrams) + overlapping_count = len(overlapping_ngrams) + + if evaluated_count == 0: + precision = 0.0 + else: + precision = overlapping_count / evaluated_count + + if reference_count == 0: + recall = 0.0 + else: + recall = overlapping_count / reference_count + + f1_score = 2.0 * ((precision * recall) / (precision + recall + 1e-8)) + return {"f": f1_score, "p": precision, "r": recall} + + +def greedy_selection(doc_sent_list, abstract_sent_list, summary_size=3): + def _rouge_clean(s): + return re.sub(r'[^a-zA-Z0-9 ]', '', s) + + max_rouge = 0.0 + abstract = sum(abstract_sent_list, []) + abstract = _rouge_clean(' '.join(abstract)).split() + sents = [_rouge_clean(' '.join(s)).split() for s in doc_sent_list] + evaluated_1grams = [_get_word_ngrams(1, [sent]) for sent in sents] + reference_1grams = _get_word_ngrams(1, [abstract]) + evaluated_2grams = [_get_word_ngrams(2, [sent]) for sent in sents] + reference_2grams = _get_word_ngrams(2, [abstract]) + + selected = [] + # 把for s in range(len(summary_size)) 改成 for s in range(len(abstract_sent_list)) 消除hard code + for s in range(len(abstract_sent_list)): + cur_max_rouge = max_rouge + cur_id = -1 + for i in range(len(sents)): + if (i in selected): + continue + c = selected + [i] + candidates_1 = [evaluated_1grams[idx] for idx in c] + candidates_1 = set.union(*map(set, candidates_1)) + candidates_2 = [evaluated_2grams[idx] for idx in c] + candidates_2 = set.union(*map(set, candidates_2)) + rouge_1 = cal_rouge(candidates_1, reference_1grams)['f'] + rouge_2 = cal_rouge(candidates_2, reference_2grams)['f'] + rouge_score = rouge_1 + rouge_2 + if rouge_score > cur_max_rouge: + cur_max_rouge = rouge_score + cur_id = i + if (cur_id == -1): + return selected + selected.append(cur_id) + max_rouge = cur_max_rouge + + return sorted(selected) + + +def hashhex(s): + """Returns a heximal formated SHA1 hash of the input string.""" + h = hashlib.sha1() + h.update(s.encode('utf-8')) + return h.hexdigest() + + +class BertData(): + def __init__(self, args): + self.args = args + self.tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True) + + self.sep_token = '[SEP]' + self.cls_token = '[CLS]' + self.pad_token = '[PAD]' + self.tgt_bos = '[unused0]' + self.tgt_eos = '[unused1]' + self.tgt_sent_split = '[unused2]' + self.sep_vid = self.tokenizer.vocab[self.sep_token] + self.cls_vid = self.tokenizer.vocab[self.cls_token] + self.pad_vid = self.tokenizer.vocab[self.pad_token] + + def preprocess(self, src, tgt, sent_labels, real_sent_labels, use_bert_basic_tokenizer=False, is_test=False): + + if (not is_test) and len(src) == 0: + return None + + original_src_txt = [' '.join(s) for s in src] + idxs = [i for i, s in enumerate(src) if (len(s) > self.args.min_src_ntokens_per_sent)] + + _sent_labels = [0] * len(src) + for l in sent_labels: + _sent_labels[l] = 1 + + _real_sent_labels = [0] * len(src) + for l in real_sent_labels: + _real_sent_labels[l] = 1 + + # 增加一个real_labels变量 用于保存对应于src_str的label + real_labels = [_real_sent_labels[i] for i in idxs] + + src = [src[i][:self.args.max_src_ntokens_per_sent] for i in idxs] + sent_labels = [_sent_labels[i] for i in idxs] + src = src[:self.args.max_src_nsents] + sent_labels = sent_labels[:self.args.max_src_nsents] + + if (not is_test) and len(src) < self.args.min_src_nsents: + return None + + src_txt = [' '.join(sent) for sent in src] + text = ' {} {} '.format(self.sep_token, self.cls_token).join(src_txt) + + src_subtokens = self.tokenizer.tokenize(text) + + src_subtokens = [self.cls_token] + src_subtokens + [self.sep_token] + src_subtoken_idxs = self.tokenizer.convert_tokens_to_ids(src_subtokens) + _segs = [-1] + [i for i, t in enumerate(src_subtoken_idxs) if t == self.sep_vid] + segs = [_segs[i] - _segs[i - 1] for i in range(1, len(_segs))] + segments_ids = [] + for i, s in enumerate(segs): + if i % 2 == 0: + segments_ids += s * [0] + else: + segments_ids += s * [1] + cls_ids = [i for i, t in enumerate(src_subtoken_idxs) if t == self.cls_vid] + sent_labels = sent_labels[:len(cls_ids)] + + tgt_subtokens_str = '[unused0] ' + ' [unused2] '.join( + [' '.join(self.tokenizer.tokenize(' '.join(tt), use_bert_basic_tokenizer=use_bert_basic_tokenizer)) for tt + in tgt]) + ' [unused1]' + tgt_subtoken = tgt_subtokens_str.split()[:self.args.max_tgt_ntokens] + if (not is_test) and len(tgt_subtoken) < self.args.min_tgt_ntokens: + return None + + tgt_subtoken_idxs = self.tokenizer.convert_tokens_to_ids(tgt_subtoken) + + tgt_txt = ''.join([' '.join(tt) for tt in tgt]) + src_txt = [original_src_txt[i] for i in idxs] + + return src_subtoken_idxs, sent_labels, tgt_subtoken_idxs, segments_ids, cls_ids, src_txt, tgt_txt, real_labels + + +def format_to_bert_mp(args): + if args.dataset != '': + datasets = [args.dataset] + else: + datasets = ['train', 'val', 'test'] + + for corpus_type in datasets: + a_lst = [] + for jsonl_f in glob.glob(pjoin(args.raw_path, '*' + corpus_type + '*.jsonl')): + real_name = jsonl_f.split('/')[-1] + a_lst.append((jsonl_f, pjoin(args.save_path, real_name.replace('jsonl', 'bert.jsonl')))) + if len(a_lst) != 1: + raise RuntimeError(f"文件夹里面包含多个命中为 *{corpus_type}*.jsonl 的文件或无此文件") + + jsonl_file, save_file = a_lst[0] + logger.info('Processing %s' % jsonl_file) + jsonl_insts = load_jsonl(jsonl_file) + is_test = [(corpus_type == 'test')] * len(jsonl_insts) + + with Pool(args.n_cpu) as p: + formatted_insts = p.map(format_to_bert, zip(jsonl_insts, is_test)) + logger.info('Processed instances %d' % len(formatted_insts)) + logger.info('Saving to %s' % save_file) + + with open(save_file, "w") as f: + for inst in formatted_insts: + if inst is not None: + print(json.dumps(inst), file=f) + gc.collect() + + +def format_to_bert(args): + logger.info("Process#: {}".format(os.getppid())) + inst, is_test = args + + source = [sent.split() for sent in inst['text']] + tgt = [sent.split() for sent in inst['summary']] + + sent_labels = greedy_selection(source[:parsed_args.max_src_nsents], tgt) + real_sent_labels = greedy_selection(source, tgt) + if parsed_args.lower: + source = [' '.join(s).lower().split() for s in source] + tgt = [' '.join(s).lower().split() for s in tgt] + + b_data = bert.preprocess(source, tgt, sent_labels, real_sent_labels, + use_bert_basic_tokenizer=parsed_args.use_bert_basic_tokenizer, + is_test=is_test) + + if b_data is None: + return None + + src_subtoken_idxs, sent_labels, tgt_subtoken_idxs, segments_ids, cls_ids, src_txt, tgt_txt, real_labels = b_data + b_data_dict = {"text_ids": src_subtoken_idxs, "summary_ids": tgt_subtoken_idxs, + "label": sent_labels, "segment_ids": segments_ids, 'cls_ids': cls_ids, + 'text': src_txt, "summary": tgt_txt, 'real_label': real_labels} + return b_data_dict + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--raw_path', default='../jsonl_data') + parser.add_argument('--save_path', default='../data/') + # parser.add_argument('--has_label', default=True) + parser.add_argument('--min_src_nsents', default=3, type=int) + parser.add_argument('--max_src_nsents', default=50, type=int) + parser.add_argument('--min_src_ntokens_per_sent', default=5, type=int) + parser.add_argument('--max_src_ntokens_per_sent', default=50, type=int) + parser.add_argument('--min_tgt_ntokens', default=5, type=int) + parser.add_argument('--max_tgt_ntokens', default=400, type=int) + + parser.add_argument("--lower", type=str2bool, nargs='?', const=True, default=False) + parser.add_argument("--use_bert_basic_tokenizer", type=str2bool, nargs='?', const=True, default=False) + + parser.add_argument('--log_file', default='../logs/default.log') + + parser.add_argument('--dataset', default='') + + parser.add_argument('--n_cpu', default=32, type=int) + + parsed_args = parser.parse_args() + + logger = init_logger(parsed_args.log_file) + bert = BertData(parsed_args) + + mkdir(parsed_args.save_path) + logger.info(time.clock()) + format_to_bert_mp(parsed_args) + logger.info(time.clock()) diff --git a/fastSum/PreSum/train_abstractive.py b/fastSum/PreSum/train_abstractive.py new file mode 100644 index 0000000000000000000000000000000000000000..8b1f6bc772dbb9152e9eb19232753486a067785d --- /dev/null +++ b/fastSum/PreSum/train_abstractive.py @@ -0,0 +1,427 @@ +<<<<<<< HEAD +#!/usr/bin/env python +""" + Main training workflow +""" +from __future__ import division + +import argparse +import glob +import os +import random +import signal +import time + +import torch +from pytorch_transformers import BertTokenizer + +import distributed +# from models import data_loader, model_builder +# from models.data_loader import load_dataset +# from models.loss import abs_loss +from models.model_builder import AbsSummarizer +# from models.predictor import build_predictor +# from models.trainer import build_trainer +from others.logging import logger, init_logger +from others.utils import get_data_path, configure_training +import torch.distributed as dist + +import json +from os.path import join, exists +from dataloader import PreSummABSLoader + +from models.optimizers import build_optim +from metrics import MyNLLLoss, ABSLossMetric, FastRougeMetricABS, PyRougeMetricABS +from callback import MyCallback, SaveModelCallback, EarlyStopCallback, FitlogCallback +from fastNLP.core.trainer import Trainer +from trainer import MyTrainer +from fastNLP.core.tester import Tester +from fastNLP import DistTrainer, get_local_rank + +model_flags = ['hidden_size', 'ff_size', 'heads', 'emb_size', 'enc_layers', 'enc_hidden_size', 'enc_ff_size', + 'dec_layers', 'dec_hidden_size', 'dec_ff_size', 'encoder', 'ff_actv', 'use_interval'] + + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected.') + + +# +# def baseline(args, cal_lead=False, cal_oracle=False): +# test_iter = data_loader.Dataloader(args, load_dataset(args, 'test', shuffle=False), +# args.batch_size, 'cpu', +# shuffle=False, is_test=True) +# +# trainer = build_trainer(args, '-1', None, None, None) +# # +# if (cal_lead): +# trainer.test(test_iter, 0, cal_lead=True) +# elif (cal_oracle): +# trainer.test(test_iter, 0, cal_oracle=True) + + +def train_abs(args): + init_logger(args.log_file) + logger.info(str(args)) + + # check if the data_path and save_path exists + data_paths = get_data_path(args.mode, args.label_type) + for name in data_paths: + assert exists(data_paths[name]) + if not exists(args.save_path): + os.makedirs(args.save_path) + + # device = "cpu" if args.visible_gpus == '-1' else "cuda" + # logger.info('Device ID %d' % device_id) + # logger.info('Device %s' % device) + # torch.manual_seed(args.seed) + # random.seed(args.seed) + # torch.backends.cudnn.deterministic = True + # + # if device_id >= 0: + # torch.cuda.set_device(device_id) + # torch.cuda.manual_seed(args.seed) + if args.local_rank not in [-1, 0]: + dist.barrier() + + if args.train_from != '': + logger.info('Loading checkpoint from %s' % args.train_from) + checkpoint = torch.load(args.train_from, + map_location=lambda storage, loc: storage) + opt = vars(checkpoint['opt']) + for k in opt.keys(): + if (k in model_flags): + setattr(args, k, opt[k]) + else: + checkpoint = None + + if (args.load_from_extractive != ''): + logger.info('Loading bert from extractive model %s' % args.load_from_extractive) + bert_from_extractive = torch.load(args.load_from_extractive, map_location=lambda storage, loc: storage) + bert_from_extractive = bert_from_extractive['model'] + else: + bert_from_extractive = None + + # torch.manual_seed(args.seed) + # random.seed(args.seed) + # torch.backends.cudnn.deterministic = True + + # load summarization datasets + datasets = PreSummABSLoader(args).process(data_paths) + print('Information of dataset is:') + print(datasets) + train_set = datasets.datasets['train'] + valid_set = datasets.datasets['val'] + + # configure training + devices, train_params = configure_training(args) + with open(join(args.save_path, 'params.json'), 'w') as f: + json.dump(train_params, f, indent=4) + print('Devices is:') + print(devices) + + tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True, cache_dir=args.temp_dir) + symbols = {'BOS': tokenizer.vocab['[unused0]'], 'EOS': tokenizer.vocab['[unused1]'], + 'PAD': tokenizer.vocab['[PAD]'], 'EOQ': tokenizer.vocab['[unused2]']} + + model = AbsSummarizer(args, checkpoint, bert_from_extractive, symbols, tokenizer) + + logger.info(model) + + # if (args.sep_optim): + # optim_bert = model_builder.build_optim_bert(args, model, checkpoint) + # optim_dec = model_builder.build_optim_dec(args, model, checkpoint) + # optim = [optim_bert, optim_dec] + # else: + # optim = [model_builder.build_optim(args, model, checkpoint)] + + optim = build_optim(args, model, checkpoint) + + if args.local_rank not in [-1, 0]: + dist.barrier() + + # train_loss = abs_loss(model.generator, symbols, model.vocab_size, device, train=True, + # label_smoothing=args.label_smoothing) + train_loss = MyNLLLoss(model.generator, model.vocab_size, pred='pred', target='target', + label_smoothing=args.label_smoothing, + pad_id=symbols['PAD']) + callbacks = [MyCallback(args, optims=optim), + SaveModelCallback(args.save_path, optims=optim, args=args, save_on_exception=True), + EarlyStopCallback(), FitlogCallback(data=valid_set)] + val_metric = [ABSLossMetric(model.generator, model.vocab_size, pred='pred', target='target', + label_smoothing=args.label_smoothing, + pad_id=symbols['PAD'])] + + trainer = MyTrainer(train_data=train_set, model=model, optimizer=None, + loss=train_loss, batch_size=args.batch_size, # sampler=sampler, + update_every=args.accum_count, n_epochs=args.n_epochs, + print_every=100, dev_data=valid_set, metrics=val_metric, + metric_key='-loss', validate_every=args.valid_steps * args.accum_count, + save_path=args.save_path, device=devices, callbacks=callbacks, config=args) + + print('Start training with the following hyper-parameters:') + print(train_params) + trainer.train() + + # trainer = build_trainer(args, device_id, model, optim, train_loss) + # + # trainer.train(train_iter_fct, args.train_steps) + + +def test_abs(args, pt): + if (pt != ''): + test_from = pt + else: + test_from = args.test_from + logger.info('Loading checkpoint from %s' % test_from) + + checkpoint = torch.load(test_from, map_location=lambda storage, loc: storage) + opt = vars(checkpoint['opt']) + for k in opt.keys(): + if (k in model_flags): + setattr(args, k, opt[k]) + print(args) + + # load summarization datasets + data_paths = get_data_path(args.mode, args.label_type) + datasets = PreSummABSLoader(args).process(data_paths) + print('Information of dataset is:') + print(datasets) + test_set = datasets.datasets['test'] + + # only need 1 gpu for testing + device = int(args.visible_gpus) + + tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True, cache_dir=args.temp_dir) + symbols = {'BOS': tokenizer.vocab['[unused0]'], 'EOS': tokenizer.vocab['[unused1]'], + 'PAD': tokenizer.vocab['[PAD]'], 'EOQ': tokenizer.vocab['[unused2]']} + + model = AbsSummarizer(args, checkpoint=checkpoint, symbols=symbols, tokenizer=tokenizer) + model.eval() + + test_metric = PyRougeMetricABS(pred='predictions', tgt_txt='tgt_txt', config=args, vocab=tokenizer, logger=logger) + tester = Tester(data=test_set, model=model, metrics=[test_metric], + batch_size=args.test_batch_size, device=device) + tester.test() + + # predictor = build_predictor(args, tokenizer, symbols, model, logger) + # predictor.translate(test_iter, step) +======= +#!/usr/bin/env python +""" + Main training workflow +""" +from __future__ import division + +import argparse +import glob +import os +import random +import signal +import time + +import torch +from pytorch_transformers import BertTokenizer + +import distributed +# from models import data_loader, model_builder +# from models.data_loader import load_dataset +# from models.loss import abs_loss +from models.model_builder import AbsSummarizer +# from models.predictor import build_predictor +# from models.trainer import build_trainer +from others.logging import logger, init_logger +from others.utils import get_data_path, configure_training +import torch.distributed as dist + +import json +from os.path import join, exists +from dataloader import PreSummABSLoader + +from models.optimizers import build_optim +from metrics import MyNLLLoss, ABSLossMetric, FastRougeMetricABS, PyRougeMetricABS +from callback import MyCallback, SaveModelCallback, EarlyStopCallback, FitlogCallback +from fastNLP.core.trainer import Trainer +from trainer import MyTrainer +from fastNLP.core.tester import Tester +from fastNLP import DistTrainer, get_local_rank + +model_flags = ['hidden_size', 'ff_size', 'heads', 'emb_size', 'enc_layers', 'enc_hidden_size', 'enc_ff_size', + 'dec_layers', 'dec_hidden_size', 'dec_ff_size', 'encoder', 'ff_actv', 'use_interval'] + + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected.') + + +# +# def baseline(args, cal_lead=False, cal_oracle=False): +# test_iter = data_loader.Dataloader(args, load_dataset(args, 'test', shuffle=False), +# args.batch_size, 'cpu', +# shuffle=False, is_test=True) +# +# trainer = build_trainer(args, '-1', None, None, None) +# # +# if (cal_lead): +# trainer.test(test_iter, 0, cal_lead=True) +# elif (cal_oracle): +# trainer.test(test_iter, 0, cal_oracle=True) + + +def train_abs(args): + init_logger(args.log_file) + logger.info(str(args)) + + # check if the data_path and save_path exists + data_paths = get_data_path(args.mode, args.label_type) + for name in data_paths: + assert exists(data_paths[name]) + if not exists(args.save_path): + os.makedirs(args.save_path) + + # device = "cpu" if args.visible_gpus == '-1' else "cuda" + # logger.info('Device ID %d' % device_id) + # logger.info('Device %s' % device) + # torch.manual_seed(args.seed) + # random.seed(args.seed) + # torch.backends.cudnn.deterministic = True + # + # if device_id >= 0: + # torch.cuda.set_device(device_id) + # torch.cuda.manual_seed(args.seed) + if args.local_rank not in [-1, 0]: + dist.barrier() + + if args.train_from != '': + logger.info('Loading checkpoint from %s' % args.train_from) + checkpoint = torch.load(args.train_from, + map_location=lambda storage, loc: storage) + opt = vars(checkpoint['opt']) + for k in opt.keys(): + if (k in model_flags): + setattr(args, k, opt[k]) + else: + checkpoint = None + + if (args.load_from_extractive != ''): + logger.info('Loading bert from extractive model %s' % args.load_from_extractive) + bert_from_extractive = torch.load(args.load_from_extractive, map_location=lambda storage, loc: storage) + bert_from_extractive = bert_from_extractive['model'] + else: + bert_from_extractive = None + + # torch.manual_seed(args.seed) + # random.seed(args.seed) + # torch.backends.cudnn.deterministic = True + + # load summarization datasets + datasets = PreSummABSLoader(args).process(data_paths) + print('Information of dataset is:') + print(datasets) + train_set = datasets.datasets['train'] + valid_set = datasets.datasets['val'] + + # configure training + devices, train_params = configure_training(args) + with open(join(args.save_path, 'params.json'), 'w') as f: + json.dump(train_params, f, indent=4) + print('Devices is:') + print(devices) + + tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True, cache_dir=args.temp_dir) + symbols = {'BOS': tokenizer.vocab['[unused0]'], 'EOS': tokenizer.vocab['[unused1]'], + 'PAD': tokenizer.vocab['[PAD]'], 'EOQ': tokenizer.vocab['[unused2]']} + + model = AbsSummarizer(args, checkpoint, bert_from_extractive, symbols, tokenizer) + + logger.info(model) + + # if (args.sep_optim): + # optim_bert = model_builder.build_optim_bert(args, model, checkpoint) + # optim_dec = model_builder.build_optim_dec(args, model, checkpoint) + # optim = [optim_bert, optim_dec] + # else: + # optim = [model_builder.build_optim(args, model, checkpoint)] + + optim = build_optim(args, model, checkpoint) + + if args.local_rank not in [-1, 0]: + dist.barrier() + + # train_loss = abs_loss(model.generator, symbols, model.vocab_size, device, train=True, + # label_smoothing=args.label_smoothing) + train_loss = MyNLLLoss(model.generator, model.vocab_size, pred='pred', target='target', + label_smoothing=args.label_smoothing, + pad_id=symbols['PAD']) + callbacks = [MyCallback(args, optims=optim), + SaveModelCallback(args.save_path, optims=optim, args=args, save_on_exception=True), + EarlyStopCallback(), FitlogCallback(data=valid_set)] + val_metric = [ABSLossMetric(model.generator, model.vocab_size, pred='pred', target='target', + label_smoothing=args.label_smoothing, + pad_id=symbols['PAD'])] + + trainer = MyTrainer(train_data=train_set, model=model, optimizer=None, + loss=train_loss, batch_size=args.batch_size, # sampler=sampler, + update_every=args.accum_count, n_epochs=args.n_epochs, + print_every=100, dev_data=valid_set, metrics=val_metric, + metric_key='-loss', validate_every=args.valid_steps * args.accum_count, + save_path=args.save_path, device=devices, callbacks=callbacks, config=args) + + print('Start training with the following hyper-parameters:') + print(train_params) + trainer.train() + + # trainer = build_trainer(args, device_id, model, optim, train_loss) + # + # trainer.train(train_iter_fct, args.train_steps) + + +def test_abs(args, pt): + if (pt != ''): + test_from = pt + else: + test_from = args.test_from + logger.info('Loading checkpoint from %s' % test_from) + + checkpoint = torch.load(test_from, map_location=lambda storage, loc: storage) + opt = vars(checkpoint['opt']) + for k in opt.keys(): + if (k in model_flags): + setattr(args, k, opt[k]) + print(args) + + # load summarization datasets + data_paths = get_data_path(args.mode, args.label_type) + datasets = PreSummABSLoader(args).process(data_paths) + print('Information of dataset is:') + print(datasets) + test_set = datasets.datasets['test'] + + # only need 1 gpu for testing + device = int(args.visible_gpus) + + tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True, cache_dir=args.temp_dir) + symbols = {'BOS': tokenizer.vocab['[unused0]'], 'EOS': tokenizer.vocab['[unused1]'], + 'PAD': tokenizer.vocab['[PAD]'], 'EOQ': tokenizer.vocab['[unused2]']} + + model = AbsSummarizer(args, checkpoint=checkpoint, symbols=symbols, tokenizer=tokenizer) + model.eval() + + test_metric = PyRougeMetricABS(pred='predictions', tgt_txt='tgt_txt', config=args, vocab=tokenizer, logger=logger) + tester = Tester(data=test_set, model=model, metrics=[test_metric], + batch_size=args.test_batch_size, device=device) + tester.test() + + # predictor = build_predictor(args, tokenizer, symbols, model, logger) + # predictor.translate(test_iter, step) +>>>>>>> bcb618ae9faf5d35f3147b05b34268a73808238a diff --git a/fastSum/PreSum/train_extractive.py b/fastSum/PreSum/train_extractive.py new file mode 100644 index 0000000000000000000000000000000000000000..08f713a1fdcf29654615e37c5b7e212df5260c1e --- /dev/null +++ b/fastSum/PreSum/train_extractive.py @@ -0,0 +1,321 @@ +<<<<<<< HEAD +#!/usr/bin/env python +""" + Main training workflow +""" +from __future__ import division + +import argparse +import glob +import os +import random +import signal +import time + +import torch + +import distributed +# from models import data_loader, model_builder +# from models.data_loader import load_dataset +from models.model_builder import ExtSummarizer +# from models.trainer_ext import build_trainer +from others.logging import logger, init_logger +from others.utils import get_data_path, configure_training + +import json +from os.path import join, exists + +from models.optimizers import build_optim +from metrics import MyBCELoss, EXTLossMetric, PyRougeMetricEXT, FastRougeMetricEXT +from callback import MyCallback, SaveModelCallback, EarlyStopCallback, FitlogCallback +from fastNLP.core.trainer import Trainer +from trainer import MyTrainer +from fastNLP.core.tester import Tester +from dataloader import PreSummEXTLoader + +model_flags = ['hidden_size', 'ff_size', 'heads', 'inter_layers', 'encoder', 'ff_actv', 'use_interval', 'rnn_size'] + + +# +# def test_ext(args, device_id, pt, step): +# device = "cpu" if args.visible_gpus == '-1' else "cuda" +# if (pt != ''): +# test_from = pt +# else: +# test_from = args.test_from +# logger.info('Loading checkpoint from %s' % test_from) +# checkpoint = torch.load(test_from, map_location=lambda storage, loc: storage) +# opt = vars(checkpoint['opt']) +# for k in opt.keys(): +# if (k in model_flags): +# setattr(args, k, opt[k]) +# print(args) +# +# model = ExtSummarizer(args, device, checkpoint) +# model.eval() +# +# test_iter = data_loader.Dataloader(args, load_dataset(args, 'test', shuffle=False), +# args.test_batch_size, device, +# shuffle=False, is_test=True) +# trainer = build_trainer(args, device_id, model, None) +# trainer.test(test_iter, step) + + +def train_ext(args): + init_logger(args.log_file) + logger.info(str(args)) + + # check if the data_path and save_path exists + data_paths = get_data_path(args.mode, args.label_type) + for name in data_paths: + assert exists(data_paths[name]) + if not exists(args.save_path): + os.makedirs(args.save_path) + + if args.train_from != '': + logger.info('Loading checkpoint from %s' % args.train_from) + checkpoint = torch.load(args.train_from, + map_location=lambda storage, loc: storage) + opt = vars(checkpoint['opt']) + for k in opt.keys(): + if (k in model_flags): + setattr(args, k, opt[k]) + else: + checkpoint = None + + # load summarization datasets + datasets = PreSummEXTLoader(args).process(data_paths) + print('Information of dataset is:') + print(datasets) + train_set = datasets.datasets['train'] + valid_set = datasets.datasets['val'] + + # configure training + devices, train_params = configure_training(args) + with open(join(args.save_path, 'params.json'), 'w') as f: + json.dump(train_params, f, indent=4) + print('Devices is:') + print(devices) + + model = ExtSummarizer(args, checkpoint) + optim = build_optim(args, model, checkpoint) + + train_loss = MyBCELoss() + callbacks = [MyCallback(args, optims=optim), + SaveModelCallback(args.save_path, optims=optim, args=args, save_on_exception=True), + EarlyStopCallback(), FitlogCallback(data=valid_set)] + val_metric = [EXTLossMetric()] + + logger.info(model) + + trainer = MyTrainer(train_data=train_set, model=model, optimizer=None, + loss=train_loss, batch_size=args.batch_size, # sampler=sampler, + update_every=args.accum_count, n_epochs=args.n_epochs, + print_every=100, dev_data=valid_set, metrics=val_metric, + metric_key='-loss', validate_every=args.valid_steps * args.accum_count, + save_path=args.save_path, device=devices, callbacks=callbacks, config=args) + + print('Start training with the following hyper-parameters:') + print(train_params) + trainer.train() + + # trainer = build_trainer(args, device_id, model, optim) + # trainer.train(train_iter_fct, args.train_steps) + + +def test_ext(args, pt): + if (pt != ''): + test_from = pt + else: + test_from = args.test_from + init_logger(args.log_file) + logger.info('Loading checkpoint from %s' % test_from) + checkpoint = torch.load(test_from, map_location=lambda storage, loc: storage) + opt = vars(checkpoint['opt']) + for k in opt.keys(): + if (k in model_flags): + setattr(args, k, opt[k]) + print(args) + + # load summarization datasets + data_paths = get_data_path(args.mode, args.label_type) + datasets = PreSummEXTLoader(args).process(data_paths) + print('Information of dataset is:') + print(datasets) + test_set = datasets.datasets['test'] + + # only need 1 gpu for testing + device = int(args.visible_gpus) + + model = ExtSummarizer(args, checkpoint) + model.eval() + + test_metric = PyRougeMetricEXT(n_ext=3, ngram_block=3, pred='pred', src_txt='src_txt', tgt_txt='tgt_txt', + mask='mask', logger=logger, config=args) + tester = Tester(data=test_set, model=model, metrics=[test_metric], + batch_size=args.test_batch_size, device=device) + tester.test() + + # trainer = build_trainer(args, device_id, model, None) + # trainer.test(test_iter, step) +======= +#!/usr/bin/env python +""" + Main training workflow +""" +from __future__ import division + +import argparse +import glob +import os +import random +import signal +import time + +import torch + +import distributed +# from models import data_loader, model_builder +# from models.data_loader import load_dataset +from models.model_builder import ExtSummarizer +# from models.trainer_ext import build_trainer +from others.logging import logger, init_logger +from others.utils import get_data_path, configure_training + +import json +from os.path import join, exists + +from models.optimizers import build_optim +from metrics import MyBCELoss, EXTLossMetric, PyRougeMetricEXT, FastRougeMetricEXT +from callback import MyCallback, SaveModelCallback, EarlyStopCallback, FitlogCallback +from fastNLP.core.trainer import Trainer +from trainer import MyTrainer +from fastNLP.core.tester import Tester +from dataloader import PreSummEXTLoader + +model_flags = ['hidden_size', 'ff_size', 'heads', 'inter_layers', 'encoder', 'ff_actv', 'use_interval', 'rnn_size'] + + +# +# def test_ext(args, device_id, pt, step): +# device = "cpu" if args.visible_gpus == '-1' else "cuda" +# if (pt != ''): +# test_from = pt +# else: +# test_from = args.test_from +# logger.info('Loading checkpoint from %s' % test_from) +# checkpoint = torch.load(test_from, map_location=lambda storage, loc: storage) +# opt = vars(checkpoint['opt']) +# for k in opt.keys(): +# if (k in model_flags): +# setattr(args, k, opt[k]) +# print(args) +# +# model = ExtSummarizer(args, device, checkpoint) +# model.eval() +# +# test_iter = data_loader.Dataloader(args, load_dataset(args, 'test', shuffle=False), +# args.test_batch_size, device, +# shuffle=False, is_test=True) +# trainer = build_trainer(args, device_id, model, None) +# trainer.test(test_iter, step) + + +def train_ext(args): + init_logger(args.log_file) + logger.info(str(args)) + + # check if the data_path and save_path exists + data_paths = get_data_path(args.mode, args.label_type) + for name in data_paths: + assert exists(data_paths[name]) + if not exists(args.save_path): + os.makedirs(args.save_path) + + if args.train_from != '': + logger.info('Loading checkpoint from %s' % args.train_from) + checkpoint = torch.load(args.train_from, + map_location=lambda storage, loc: storage) + opt = vars(checkpoint['opt']) + for k in opt.keys(): + if (k in model_flags): + setattr(args, k, opt[k]) + else: + checkpoint = None + + # load summarization datasets + datasets = PreSummEXTLoader(args).process(data_paths) + print('Information of dataset is:') + print(datasets) + train_set = datasets.datasets['train'] + valid_set = datasets.datasets['val'] + + # configure training + devices, train_params = configure_training(args) + with open(join(args.save_path, 'params.json'), 'w') as f: + json.dump(train_params, f, indent=4) + print('Devices is:') + print(devices) + + model = ExtSummarizer(args, checkpoint) + optim = build_optim(args, model, checkpoint) + + train_loss = MyBCELoss() + callbacks = [MyCallback(args, optims=optim), + SaveModelCallback(args.save_path, optims=optim, args=args, save_on_exception=True), + EarlyStopCallback(), FitlogCallback(data=valid_set)] + val_metric = [EXTLossMetric()] + + logger.info(model) + + trainer = MyTrainer(train_data=train_set, model=model, optimizer=None, + loss=train_loss, batch_size=args.batch_size, # sampler=sampler, + update_every=args.accum_count, n_epochs=args.n_epochs, + print_every=100, dev_data=valid_set, metrics=val_metric, + metric_key='-loss', validate_every=args.valid_steps * args.accum_count, + save_path=args.save_path, device=devices, callbacks=callbacks, config=args) + + print('Start training with the following hyper-parameters:') + print(train_params) + trainer.train() + + # trainer = build_trainer(args, device_id, model, optim) + # trainer.train(train_iter_fct, args.train_steps) + + +def test_ext(args, pt): + if (pt != ''): + test_from = pt + else: + test_from = args.test_from + init_logger(args.log_file) + logger.info('Loading checkpoint from %s' % test_from) + checkpoint = torch.load(test_from, map_location=lambda storage, loc: storage) + opt = vars(checkpoint['opt']) + for k in opt.keys(): + if (k in model_flags): + setattr(args, k, opt[k]) + print(args) + + # load summarization datasets + data_paths = get_data_path(args.mode, args.label_type) + datasets = PreSummEXTLoader(args).process(data_paths) + print('Information of dataset is:') + print(datasets) + test_set = datasets.datasets['test'] + + # only need 1 gpu for testing + device = int(args.visible_gpus) + + model = ExtSummarizer(args, checkpoint) + model.eval() + + test_metric = PyRougeMetricEXT(n_ext=3, ngram_block=3, pred='pred', src_txt='src_txt', tgt_txt='tgt_txt', + mask='mask', logger=logger, config=args) + tester = Tester(data=test_set, model=model, metrics=[test_metric], + batch_size=args.test_batch_size, device=device) + tester.test() + + # trainer = build_trainer(args, device_id, model, None) + # trainer.test(test_iter, step) +>>>>>>> bcb618ae9faf5d35f3147b05b34268a73808238a diff --git a/fastSum/PreSum/train_presum.py b/fastSum/PreSum/train_presum.py new file mode 100644 index 0000000000000000000000000000000000000000..5b033dc3af7a52d3b9ad1aa95075dd7d0221ed3e --- /dev/null +++ b/fastSum/PreSum/train_presum.py @@ -0,0 +1,387 @@ +<<<<<<< HEAD +#!/usr/bin/env python +""" + Main training workflow +""" +from __future__ import division + +import argparse +import os +from others.logging import init_logger +# from train_abstractive import validate_abs, train_abs, baseline, test_abs, test_text_abs +# from train_extractive import train_ext, validate_ext, test_ext + +from train_abstractive import train_abs, test_abs +from train_extractive import train_ext, test_ext +import torch +import torch.distributed as dist +import numpy as np +import random + +import fitlog + +fitlog.commit(__file__) +fitlog.set_log_dir("fitlogs/") + +model_flags = ['hidden_size', 'ff_size', 'heads', 'emb_size', 'enc_layers', 'enc_hidden_size', 'enc_ff_size', + 'dec_layers', 'dec_hidden_size', 'dec_ff_size', 'encoder', 'ff_actv', 'use_interval'] + + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected.') + + +def set_random_seeds(random_seed): + torch.manual_seed(random_seed) + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + np.random.seed(random_seed) + random.seed(random_seed) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument("-task", default='ext', type=str, choices=['ext', 'abs']) + parser.add_argument("-encoder", default='bert', type=str, choices=['bert', 'baseline']) + parser.add_argument("-mode", default='train', type=str, choices=['train', 'val', 'test']) + # parser.add_argument("-bert_data_path", default='data/CNNDM_bert') + # parser.add_argument("-model_path", default='models') + # parser.add_argument("-result_path", default='results/cnndm') + parser.add_argument("-temp_dir", default='temp') + + parser.add_argument("-batch_size", default=140, type=int) + parser.add_argument("-test_batch_size", default=200, type=int) + + parser.add_argument("-max_pos", default=512, type=int) + # parser.add_argument("-use_interval", type=str2bool, nargs='?', const=True, default=True) + parser.add_argument("-large", type=str2bool, nargs='?', const=True, default=False) + parser.add_argument("-load_from_extractive", default='', type=str) + + parser.add_argument("-sep_optim", type=str2bool, nargs='?', const=True, default=False) + parser.add_argument("-lr_bert", default=2e-3, type=float) + parser.add_argument("-lr_dec", default=2e-3, type=float) + parser.add_argument("-use_bert_emb", type=str2bool, nargs='?', const=True, default=False) + + parser.add_argument("-share_emb", type=str2bool, nargs='?', const=True, default=False) + parser.add_argument("-finetune_bert", type=str2bool, nargs='?', const=True, default=True) + parser.add_argument("-dec_dropout", default=0.2, type=float) + parser.add_argument("-dec_layers", default=6, type=int) + parser.add_argument("-dec_hidden_size", default=768, type=int) + parser.add_argument("-dec_heads", default=8, type=int) + parser.add_argument("-dec_ff_size", default=2048, type=int) + parser.add_argument("-enc_hidden_size", default=768, type=int) + parser.add_argument("-enc_ff_size", default=512, type=int) + parser.add_argument("-enc_dropout", default=0.2, type=float) + parser.add_argument("-enc_layers", default=6, type=int) + + # params for EXT + parser.add_argument("-ext_dropout", default=0.2, type=float) + parser.add_argument("-ext_layers", default=2, type=int) + parser.add_argument("-ext_hidden_size", default=768, type=int) + parser.add_argument("-ext_heads", default=8, type=int) + parser.add_argument("-ext_ff_size", default=2048, type=int) + + parser.add_argument("-label_smoothing", default=0.1, type=float) + parser.add_argument("-generator_shard_size", default=32, type=int) + parser.add_argument("-alpha", default=0.6, type=float) + parser.add_argument("-beam_size", default=5, type=int) + parser.add_argument("-min_length", default=15, type=int) + parser.add_argument("-max_length", default=150, type=int) + parser.add_argument("-max_tgt_len", default=140, type=int) + + parser.add_argument("-param_init", default=0, type=float) + parser.add_argument("-param_init_glorot", type=str2bool, nargs='?', const=True, default=True) + parser.add_argument("-optim", default='adam', type=str) + parser.add_argument("-lr", default=1, type=float) + parser.add_argument("-beta1", default=0.9, type=float) + parser.add_argument("-beta2", default=0.999, type=float) + parser.add_argument("-warmup_steps", default=8000, type=int) + parser.add_argument("-warmup_steps_bert", default=8000, type=int) + parser.add_argument("-warmup_steps_dec", default=8000, type=int) + parser.add_argument("-max_grad_norm", default=0, type=float) + + parser.add_argument("-save_checkpoint_steps", default=5, type=int) + parser.add_argument("-accum_count", default=1, type=int) + # parser.add_argument("-report_every", default=1, type=int) + # parser.add_argument("-train_steps", default=1000, type=int) + parser.add_argument("-recall_eval", type=str2bool, nargs='?', const=True, default=False) + + parser.add_argument('-visible_gpus', default='-1', type=str) + # parser.add_argument('-gpu_ranks', default='0', type=str) + parser.add_argument('-log_file', default='../logs/cnndm.log') + parser.add_argument('-seed', default=666, type=int) + + # parser.add_argument("-test_all", type=str2bool, nargs='?', const=True, default=False) + parser.add_argument("-test_from", default='') + # parser.add_argument("-test_start_from", default=-1, type=int) + + parser.add_argument("-train_from", default='') + # parser.add_argument("-report_rouge", type=str2bool, nargs='?', const=True, default=True) + parser.add_argument("-block_trigram", type=str2bool, nargs='?', const=True, default=True) + parser.add_argument("-label_type", type=str, required=True) + parser.add_argument("-save_path", type=str, default="checkpoints", help="path to saving the params") + parser.add_argument("-valid_steps", type=int, help="how much steps to perform validation") + parser.add_argument("-n_epochs", type=int) + parser.add_argument("-decode_path", type=str, default="results", + help="the path to save gold summary and generated summary, this is only needed when mode is test") + parser.add_argument("-max_summary_len", type=int, required=True, help="max summary length when loading dataset") + parser.add_argument('--local_rank', type=int, default=None) + parser.add_argument('--init_method', type=str, default='env://') + + args = parser.parse_args() + # args.gpu_ranks = [int(i) for i in range(len(args.visible_gpus.split(',')))] + # args.world_size = len(args.gpu_ranks) + # os.environ["CUDA_VISIBLE_DEVICES"] = args.visible_gpus + set_random_seeds(args.seed) + + # if args.local_rank is not None: + # torch.cuda.set_device(args.local_rank) + # dist.init_process_group("nccl", init_method=args.init_method) + # args.dist = True + # else: + # args.dist = False + + init_logger(args.log_file) + # device = "cpu" if args.visible_gpus == '-1' else "cuda" + # device_id = 0 if device == "cuda" else -1 + fitlog.add_hyper(args) + fitlog.add_hyper_in_file(__file__) + + if (args.task == 'abs'): + if (args.mode == 'train'): + train_abs(args) + # elif (args.mode == 'val'): + # validate_abs(args, device_id) + # elif (args.mode == 'lead'): + # baseline(args, cal_lead=True) + # elif (args.mode == 'oracle'): + # baseline(args, cal_oracle=True) + if (args.mode == 'test'): + cp = args.test_from + if not os.path.exists(args.decode_path): + os.mkdir(args.decode_path) + test_abs(args, cp) + # elif (args.mode == 'test_text'): + # cp = args.test_from + # try: + # step = int(cp.split('.')[-2].split('_')[-1]) + # except: + # step = 0 + # test_text_abs(args, device_id, cp, step) + + elif (args.task == 'ext'): + if (args.mode == 'train'): + train_ext(args) + # elif (args.mode == 'val'): + # validate_ext(args, device_id) + if (args.mode == 'test'): + cp = args.test_from + if not os.path.exists(args.decode_path): + os.mkdir(args.decode_path) + test_ext(args, cp) + # elif (args.mode == 'test_text'): + # cp = args.test_from + # try: + # step = int(cp.split('.')[-2].split('_')[-1]) + # except: + # step = 0 + # test_text_abs(args, device_id, cp, step) +======= +#!/usr/bin/env python +""" + Main training workflow +""" +from __future__ import division + +import argparse +import os +from others.logging import init_logger +# from train_abstractive import validate_abs, train_abs, baseline, test_abs, test_text_abs +# from train_extractive import train_ext, validate_ext, test_ext + +from train_abstractive import train_abs, test_abs +from train_extractive import train_ext, test_ext +import torch +import torch.distributed as dist +import numpy as np +import random + +import fitlog + +fitlog.commit(__file__) +fitlog.set_log_dir("fitlogs/") + +model_flags = ['hidden_size', 'ff_size', 'heads', 'emb_size', 'enc_layers', 'enc_hidden_size', 'enc_ff_size', + 'dec_layers', 'dec_hidden_size', 'dec_ff_size', 'encoder', 'ff_actv', 'use_interval'] + + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected.') + + +def set_random_seeds(random_seed): + torch.manual_seed(random_seed) + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + np.random.seed(random_seed) + random.seed(random_seed) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument("-task", default='ext', type=str, choices=['ext', 'abs']) + parser.add_argument("-encoder", default='bert', type=str, choices=['bert', 'baseline']) + parser.add_argument("-mode", default='train', type=str, choices=['train', 'val', 'test']) + # parser.add_argument("-bert_data_path", default='data/CNNDM_bert') + # parser.add_argument("-model_path", default='models') + # parser.add_argument("-result_path", default='results/cnndm') + parser.add_argument("-temp_dir", default='temp') + + parser.add_argument("-batch_size", default=140, type=int) + parser.add_argument("-test_batch_size", default=200, type=int) + + parser.add_argument("-max_pos", default=512, type=int) + # parser.add_argument("-use_interval", type=str2bool, nargs='?', const=True, default=True) + parser.add_argument("-large", type=str2bool, nargs='?', const=True, default=False) + parser.add_argument("-load_from_extractive", default='', type=str) + + parser.add_argument("-sep_optim", type=str2bool, nargs='?', const=True, default=False) + parser.add_argument("-lr_bert", default=2e-3, type=float) + parser.add_argument("-lr_dec", default=2e-3, type=float) + parser.add_argument("-use_bert_emb", type=str2bool, nargs='?', const=True, default=False) + + parser.add_argument("-share_emb", type=str2bool, nargs='?', const=True, default=False) + parser.add_argument("-finetune_bert", type=str2bool, nargs='?', const=True, default=True) + parser.add_argument("-dec_dropout", default=0.2, type=float) + parser.add_argument("-dec_layers", default=6, type=int) + parser.add_argument("-dec_hidden_size", default=768, type=int) + parser.add_argument("-dec_heads", default=8, type=int) + parser.add_argument("-dec_ff_size", default=2048, type=int) + parser.add_argument("-enc_hidden_size", default=768, type=int) + parser.add_argument("-enc_ff_size", default=512, type=int) + parser.add_argument("-enc_dropout", default=0.2, type=float) + parser.add_argument("-enc_layers", default=6, type=int) + + # params for EXT + parser.add_argument("-ext_dropout", default=0.2, type=float) + parser.add_argument("-ext_layers", default=2, type=int) + parser.add_argument("-ext_hidden_size", default=768, type=int) + parser.add_argument("-ext_heads", default=8, type=int) + parser.add_argument("-ext_ff_size", default=2048, type=int) + + parser.add_argument("-label_smoothing", default=0.1, type=float) + parser.add_argument("-generator_shard_size", default=32, type=int) + parser.add_argument("-alpha", default=0.6, type=float) + parser.add_argument("-beam_size", default=5, type=int) + parser.add_argument("-min_length", default=15, type=int) + parser.add_argument("-max_length", default=150, type=int) + parser.add_argument("-max_tgt_len", default=140, type=int) + + parser.add_argument("-param_init", default=0, type=float) + parser.add_argument("-param_init_glorot", type=str2bool, nargs='?', const=True, default=True) + parser.add_argument("-optim", default='adam', type=str) + parser.add_argument("-lr", default=1, type=float) + parser.add_argument("-beta1", default=0.9, type=float) + parser.add_argument("-beta2", default=0.999, type=float) + parser.add_argument("-warmup_steps", default=8000, type=int) + parser.add_argument("-warmup_steps_bert", default=8000, type=int) + parser.add_argument("-warmup_steps_dec", default=8000, type=int) + parser.add_argument("-max_grad_norm", default=0, type=float) + + parser.add_argument("-save_checkpoint_steps", default=5, type=int) + parser.add_argument("-accum_count", default=1, type=int) + # parser.add_argument("-report_every", default=1, type=int) + # parser.add_argument("-train_steps", default=1000, type=int) + parser.add_argument("-recall_eval", type=str2bool, nargs='?', const=True, default=False) + + parser.add_argument('-visible_gpus', default='-1', type=str) + # parser.add_argument('-gpu_ranks', default='0', type=str) + parser.add_argument('-log_file', default='../logs/cnndm.log') + parser.add_argument('-seed', default=666, type=int) + + # parser.add_argument("-test_all", type=str2bool, nargs='?', const=True, default=False) + parser.add_argument("-test_from", default='') + # parser.add_argument("-test_start_from", default=-1, type=int) + + parser.add_argument("-train_from", default='') + # parser.add_argument("-report_rouge", type=str2bool, nargs='?', const=True, default=True) + parser.add_argument("-block_trigram", type=str2bool, nargs='?', const=True, default=True) + parser.add_argument("-label_type", type=str, required=True) + parser.add_argument("-save_path", type=str, default="checkpoints", help="path to saving the params") + parser.add_argument("-valid_steps", type=int, help="how much steps to perform validation") + parser.add_argument("-n_epochs", type=int) + parser.add_argument("-decode_path", type=str, default="results", + help="the path to save gold summary and generated summary, this is only needed when mode is test") + parser.add_argument("-max_summary_len", type=int, required=True, help="max summary length when loading dataset") + parser.add_argument('--local_rank', type=int, default=None) + parser.add_argument('--init_method', type=str, default='env://') + + args = parser.parse_args() + # args.gpu_ranks = [int(i) for i in range(len(args.visible_gpus.split(',')))] + # args.world_size = len(args.gpu_ranks) + # os.environ["CUDA_VISIBLE_DEVICES"] = args.visible_gpus + set_random_seeds(args.seed) + + # if args.local_rank is not None: + # torch.cuda.set_device(args.local_rank) + # dist.init_process_group("nccl", init_method=args.init_method) + # args.dist = True + # else: + # args.dist = False + + init_logger(args.log_file) + # device = "cpu" if args.visible_gpus == '-1' else "cuda" + # device_id = 0 if device == "cuda" else -1 + fitlog.add_hyper(args) + fitlog.add_hyper_in_file(__file__) + + if (args.task == 'abs'): + if (args.mode == 'train'): + train_abs(args) + # elif (args.mode == 'val'): + # validate_abs(args, device_id) + # elif (args.mode == 'lead'): + # baseline(args, cal_lead=True) + # elif (args.mode == 'oracle'): + # baseline(args, cal_oracle=True) + if (args.mode == 'test'): + cp = args.test_from + if not os.path.exists(args.decode_path): + os.mkdir(args.decode_path) + test_abs(args, cp) + # elif (args.mode == 'test_text'): + # cp = args.test_from + # try: + # step = int(cp.split('.')[-2].split('_')[-1]) + # except: + # step = 0 + # test_text_abs(args, device_id, cp, step) + + elif (args.task == 'ext'): + if (args.mode == 'train'): + train_ext(args) + # elif (args.mode == 'val'): + # validate_ext(args, device_id) + if (args.mode == 'test'): + cp = args.test_from + if not os.path.exists(args.decode_path): + os.mkdir(args.decode_path) + test_ext(args, cp) + # elif (args.mode == 'test_text'): + # cp = args.test_from + # try: + # step = int(cp.split('.')[-2].split('_')[-1]) + # except: + # step = 0 + # test_text_abs(args, device_id, cp, step) +>>>>>>> bcb618ae9faf5d35f3147b05b34268a73808238a diff --git a/fastSum/PreSum/trainer.py b/fastSum/PreSum/trainer.py new file mode 100644 index 0000000000000000000000000000000000000000..3e5d5ffbb65c5aae197b4cd934cdc5bf5e175dde --- /dev/null +++ b/fastSum/PreSum/trainer.py @@ -0,0 +1,859 @@ +<<<<<<< HEAD +from fastNLP.core.trainer import Trainer +import torch +from torch import nn +import os +import numpy as np +import warnings +import time +from datetime import datetime, timedelta + +try: + from tqdm.auto import tqdm +except: + from fastNLP.core.utils import _pseudo_tqdm as tqdm + +from fastNLP.core.batch import DataSetIter, BatchIter +from fastNLP.core.callback import CallbackManager, CallbackException, Callback +from fastNLP.core.dataset import DataSet +from fastNLP.core.losses import _prepare_losser +from fastNLP.core.metrics import _prepare_metrics +from fastNLP.core.optimizer import Optimizer +from fastNLP.core.sampler import Sampler +from fastNLP.core.sampler import RandomSampler +from fastNLP.core.tester import Tester +from fastNLP.core.utils import _CheckError +from fastNLP.core.utils import _build_args +from fastNLP.core.utils import _check_forward_error +from fastNLP.core.utils import _check_loss_evaluate +from fastNLP.core.utils import _move_dict_value_to_device +from fastNLP.core.utils import _get_func_signature +from fastNLP.core.utils import _get_model_device +from fastNLP.core.utils import _move_model_to_device +from fastNLP.core._parallel_utils import _model_contains_inner_module +from fastNLP.core._logger import logger + +DEFAULT_CHECK_BATCH_SIZE = 2 +DEFAULT_CHECK_NUM_BATCH = 2 + + +def _model_contains_inner_module(model): + r""" + + :param nn.Module model: 模型文件,判断是否内部包含model.module, 多用于check模型是否是nn.DataParallel, + nn.parallel.DistributedDataParallel。主要是在做形参匹配的时候需要使用最内部的model的function。 + :return: bool + """ + if isinstance(model, nn.Module): + if isinstance(model, (nn.DataParallel, nn.parallel.DistributedDataParallel)): + return True + return False + + +class MyTrainer(Trainer): + def __init__(self, train_data, model, optimizer=None, loss=None, + batch_size=32, sampler=None, drop_last=False, update_every=1, + num_workers=0, n_epochs=10, print_every=5, + dev_data=None, metrics=None, metric_key=None, + validate_every=-1, save_path=None, use_tqdm=True, device=None, + callbacks=None, check_code_level=0, **kwargs): + r""" + :param train_data: 训练集, :class:`~fastNLP.DataSet` 类型或 :class:`~fastNLP.BatchIter` 的子类 + :param nn.modules model: 待训练的模型 + :param optimizer: `torch.optim.Optimizer` 优化器。如果为None,则Trainer使用默认的Adam(model.parameters(), lr=4e-3)这个优化器 + :param int batch_size: 训练和验证的时候的batch大小。 + :param loss: 使用的 :class:`~fastNLP.core.losses.LossBase` 对象。当为None时,默认使用 :class:`~fastNLP.LossInForward` + :param sampler: Batch数据生成的顺序, :class:`~fastNLP.Sampler` 类型。如果为None,默认使用 :class:`~fastNLP.RandomSampler` + :param drop_last: 如果最后一个batch没有正好为batch_size这么多数据,就扔掉最后一个batch + :param num_workers: int, 有多少个线程来进行数据pad处理。 + :param update_every: int, 多少步更新一次梯度。用于希望累计梯度的场景,比如需要128的batch_size, 但是直接设为128 + 会导致内存不足,通过设置batch_size=32, update_every=4达到目的。当optimizer为None时,该参数无效。 + :param int n_epochs: 需要优化迭代多少次。 + :param int print_every: 多少次反向传播更新tqdm显示的loss; 如果use_tqdm=False, 则多少次反向传播打印loss。 + :param dev_data: 用于做验证的DataSet, :class:`~fastNLP.DataSet` 类型。 + :param metrics: 验证的评估函数。可以只使用一个 :class:`Metric` , + 也可以使用多个 :class:`Metric` ,通过列表传入。 + 如验证时取得了更好的验证结果(如果有多个Metric,以列表中第一个Metric为准),且save_path不为None, + 则保存当前模型。Metric种类详见 :mod:`metrics模块 ` 。仅在传入dev_data时有效。 + :param str,None metric_key: :class:`Metric` 有时会有多个指标, + 比如 :class:`~fastNLP.core.metrics.SpanFPreRecMetric` 中包含了'f', 'pre', 'rec'。此时需 + 要指定以哪个指标为准。另外有些指标是越小效果越好,比如语言模型的困惑度,这种情况下,在key前面增加一个'-'来表 + 明验证时,值越小越好(比如: "-ppl")。仅在传入dev_data时有效。 + :param int validate_every: 多少个step在验证集上验证一次; 如果为-1,则每个epoch结束验证一次。仅在传入dev_data时有效。 + :param str,None save_path: 将模型保存路径,如果路径不存在,将自动创建文件夹。如果为None,则不保存模型。如果dev_data为None,则保存 + 最后一次迭代的模型。保存的时候不仅保存了参数,还保存了模型结构。即便使用DataParallel,这里也只保存模型。 + :param bool use_tqdm: 是否使用tqdm来显示训练进度; 如果为False,则将loss打印在终端中。 + :param str,int,torch.device,list(int) device: 将模型load到哪个设备。默认为None,即Trainer不对模型 + 的计算位置进行管理。支持以下的输入: + + 1. str: ['cpu', 'cuda', 'cuda:0', 'cuda:1', ...] 依次为'cpu'中, 可见的第一个GPU中, 可见的第一个GPU中, + 可见的第二个GPU中; + + 2. torch.device:将模型装载到torch.device上。 + + 3. int: 将使用device_id为该值的gpu进行训练 + + 4. list(int):如果多于1个device,将使用torch.nn.DataParallel包裹model, 并使用传入的device。 + + 5. None. 为None则不对模型进行任何处理,如果传入的model为torch.nn.DataParallel该值必须为None。 + + 已知可能会出现的问题:Adagrad优化器可能无法正常使用这个参数,请手动管理模型位置。 + + :param list(callbacks) callbacks: 用于在train过程中起调节作用的回调函数。比如early stop,negative sampling等可以 + 通过callback机制实现。 可使用的callback参见 :mod:`callback模块 ` + :param int check_code_level: 模型检查等级. -1: 不进行检查; 0: 仅出现错误时停止; 1: 如果有field没有被使用, + 报告警告信息; 2: 有任何field没有被使用都报错. 检查的原理是通过使用很小的batch(默认2个sample)来运行代码,但是 + 这个过程理论上不会修改任何参数,只是会检查能否运行。但如果(1)模型中存在将batch_size写为某个固定值的情况; + (2)模型中存在累加前向计算次数的,可能会多计算1次。以上情况建议将check_code_level设置为-1。 + :param kwargs: 支持配置可选参数 + bool test_use_tqdm: 在dev上验证的时候是否开启tqdm + Sampler test_sampler: 在evaluate的时候使用的sampler + + 本trainer是对FastNLP原始Trainer的修改,修改原因: + 1. 原始trainer的保存模型格式和my-presum保存模型格式不符,导致best performance的checkpoint和在固定step保存的checkpoint格式不一致 + 2. 原始trainer默认如果传入的optimizer是None,会自动分配一个Adam的optimizer,并不符合presum中需要有两个optimizer的情况 + 修改内容: + 1. 修改_save_model和_load_model函数,使得和本项目内部存储格式一致 + 2. 修改Trainer的初始化以及_update()函数,使得如果optimizer是None,则trainer不进行self.optimizer.step(), 对应工作由自己设定的callback进行 + """ + super(Trainer, self).__init__() + if not isinstance(model, nn.Module): + raise TypeError(f"The type of model must be torch.nn.Module, got {type(model)}.") + + # check metrics and dev_data + if (not metrics) and dev_data is not None: + raise ValueError("No metric for dev_data evaluation.") + if metrics and (dev_data is None): + raise ValueError("No dev_data for evaluations, pass dev_data or set metrics to None. ") + + # check update every + assert update_every >= 1, "update_every must be no less than 1." + self.update_every = int(update_every) + + # check save_path + if not (save_path is None or isinstance(save_path, str)): + raise ValueError("save_path can only be None or `str`.") + # prepare evaluate + metrics = _prepare_metrics(metrics) + + # parse metric_key + # increase_better is True. It means the exp result gets better if the indicator increases. + # It is true by default. + self.increase_better = True + if metric_key is not None: + self.increase_better = False if metric_key[0] == "-" else True + self.metric_key = metric_key[1:] if metric_key[0] == "+" or metric_key[0] == "-" else metric_key + else: + self.metric_key = None + # prepare loss + losser = _prepare_losser(loss) + + if isinstance(train_data, BatchIter): + if sampler is not None: + warnings.warn("sampler is ignored when train_data is a BatchIter.") + if num_workers > 0: + warnings.warn("num_workers is ignored when train_data is BatchIter.") + if drop_last: + warnings.warn("drop_last is ignored when train_data is BatchIter.") + + if isinstance(model, nn.parallel.DistributedDataParallel): # 如果是分布式的 + # device为None + if device is not None: + warnings.warn("device is ignored when model is nn.parallel.DistributedDataParallel.") + device = None + # Sampler要是分布式的 + if sampler is None: + sampler = torch.utils.data.DistributedSampler(train_data) + elif not isinstance(sampler, torch.utils.data.DistributedSampler): + raise TypeError("When using nn.parallel.DistributedDataParallel, " + "sampler must be None or torch.utils.data.DistributedSampler.") + # 不能保存模型 + if save_path: + raise RuntimeError("Saving model in Distributed situation is not allowed right now.") + else: + # sampler check + if sampler is not None and not isinstance(sampler, (Sampler, torch.utils.data.Sampler)): + raise ValueError( + f"The type of sampler should be fastNLP.BaseSampler or pytorch's Sampler, got {type(sampler)}") + if sampler is None: + sampler = RandomSampler() + elif hasattr(sampler, 'set_batch_size'): + sampler.set_batch_size(batch_size) + + if isinstance(train_data, DataSet): + self.data_iterator = DataSetIter(dataset=train_data, batch_size=batch_size, sampler=sampler, + num_workers=num_workers, drop_last=drop_last) + elif isinstance(train_data, BatchIter): + self.data_iterator = train_data + train_data = train_data.dataset + check_code_level = -1 # 强制跳过校验 + else: + raise TypeError("train_data type {} not support".format(type(train_data))) + + model.train() + self.model = _move_model_to_device(model, device=device) + if _model_contains_inner_module(self.model): + self._forward_func = self.model.module.forward + else: + self._forward_func = self.model.forward + if check_code_level > -1: + # _check_code 是 fastNLP 帮助你检查代码是否正确的方法 。如果你在错误栈中看到这行注释,请认真检查你的field名与模型的输入 + # 名是否匹配 + dev_dataset = dev_data + if isinstance(dev_data, BatchIter): + dev_dataset = None + warnings.warn("dev_data is of BatchIter type, ignore validation checking.") + check_batch_size = min(batch_size, DEFAULT_CHECK_BATCH_SIZE) + if isinstance(self.model, nn.DataParallel): + _num_devices = len(self.model.device_ids) + if batch_size // _num_devices > 1: # 如果多卡是每个卡可以分多个数据的,则用每个卡给两个sample + check_batch_size = max(len(self.model.device_ids) * 2, check_batch_size) + else: + check_batch_size = max(len(self.model.device_ids), check_batch_size) + _check_code(dataset=train_data, model=self.model, losser=losser, forward_func=self._forward_func, + metrics=metrics, + dev_data=dev_dataset, metric_key=self.metric_key, check_level=check_code_level, + batch_size=check_batch_size) + + self.train_data = train_data + self.dev_data = dev_data # If None, No validation. + self.losser = losser + self.metrics = metrics + self.n_epochs = int(n_epochs) + self.batch_size = int(batch_size) + self.save_path = save_path + self.print_every = int(print_every) + self.validate_every = int(validate_every) if validate_every != 0 else -1 + self.best_metric_indicator = None + self.best_dev_epoch = None + self.best_dev_step = None + self.best_dev_perf = None + self.n_steps = len(self.data_iterator) * self.n_epochs + + if isinstance(optimizer, torch.optim.Optimizer): + self.optimizer = optimizer + elif isinstance(optimizer, Optimizer): + self.optimizer = optimizer.construct_from_pytorch(self.model.parameters()) + elif optimizer is None: + # 修改optimizer初始化,使得其不再是如果传入None则默认Adam + # self.optimizer = torch.optim.Adam(self.model.parameters(), lr=4e-3) + self.optimizer = None + else: + raise TypeError("optimizer can only be torch.optim.Optimizer type, not {}.".format(type(optimizer))) + + self.logger = logger + + self.use_tqdm = use_tqdm + if 'test_use_tqdm' in kwargs: + self.test_use_tqdm = kwargs.get('test_use_tqdm') + else: + self.test_use_tqdm = self.use_tqdm + self.pbar = None + self.print_every = abs(self.print_every) + self.kwargs = kwargs + if self.dev_data is not None: + self.tester = Tester(model=self.model, + data=self.dev_data, + metrics=self.metrics, + batch_size=kwargs.get("dev_batch_size", self.batch_size), + device=None, # 由上面的部分处理device + verbose=0, + use_tqdm=self.test_use_tqdm, + sampler=kwargs.get('test_sampler', None)) + + self.start_time = None # start timestamp + + if isinstance(callbacks, Callback): + callbacks = [callbacks] + + self.callback_manager = CallbackManager(env={"trainer": self}, + callbacks=callbacks) + + def _update(self): + r"""Perform weight update on a model. + 修改:增加了只有当self.optimizer is not None的时候才会进行self.optimizer.step() + """ + if self.step % self.update_every == 0 and self.optimizer is not None: + self.optimizer.step() + + def _save_model(self, model, model_name, only_param=True): + r""" 存储不含有显卡信息的state_dict或model + :param model: + :param model_name: + :param only_param: + :return: + """ + config = self.kwargs.get("config") + assert config is not None, "Please pass config to MyTrainer!" + + if self.save_path is not None: + model_path = os.path.join(self.save_path, model_name) + if not os.path.exists(self.save_path): + os.makedirs(self.save_path, exist_ok=True) + if _model_contains_inner_module(model): + model = model.module + + if only_param: + state_dict = model.state_dict() + for key in state_dict: + state_dict[key] = state_dict[key].cpu() + checkpoint = {'model': state_dict, 'opt': config} + torch.save(checkpoint, model_path) + else: + model.cpu() + checkpoint = {'model': model, 'opt': config} + torch.save(checkpoint, model_path) + model.to(self._model_device) + + def _load_model(self, model, model_name, only_param=True): + # 返回bool值指示是否成功reload模型 + if self.save_path is not None: + model_path = os.path.join(self.save_path, model_name) + if only_param: + states = torch.load(model_path)['model'] + else: + states = torch.load(model_path)['model'].state_dict() + if _model_contains_inner_module(model): + model.module.load_state_dict(states) + else: + model.load_state_dict(states) + elif hasattr(self, "_best_model_states"): + model.load_state_dict(self._best_model_states) + else: + return False + return True + + +def _get_value_info(_dict): + # given a dict value, return information about this dict's value. Return list of str + strs = [] + for key, value in _dict.items(): + _str = '' + if isinstance(value, torch.Tensor): + _str += "\t{}: (1)type:torch.Tensor (2)dtype:{}, (3)shape:{} ".format(key, + value.dtype, value.size()) + elif isinstance(value, np.ndarray): + _str += "\t{}: (1)type:numpy.ndarray (2)dtype:{}, (3)shape:{} ".format(key, + value.dtype, value.shape) + else: + _str += "\t{}: type:{}".format(key, type(value)) + strs.append(_str) + return strs + + +def _check_code(dataset, model, losser, metrics, forward_func, batch_size=DEFAULT_CHECK_BATCH_SIZE, + dev_data=None, metric_key=None, check_level=0): + # check get_loss 方法 + model_device = _get_model_device(model=model) + _iter = DataSetIter(dataset, batch_size=batch_size, sampler=None) + + for batch_count, (batch_x, batch_y) in enumerate(_iter): + _move_dict_value_to_device(batch_x, batch_y, device=model_device) + # forward check + if batch_count == 0: + info_str = "" + input_fields = _get_value_info(batch_x) + target_fields = _get_value_info(batch_y) + if len(input_fields) > 0: + info_str += "input fields after batch(if batch size is {}):\n".format(batch_size) + info_str += "\n".join(input_fields) + info_str += '\n' + else: + raise RuntimeError("There is no input field.") + if len(target_fields) > 0: + info_str += "target fields after batch(if batch size is {}):\n".format(batch_size) + info_str += "\n".join(target_fields) + info_str += '\n' + else: + info_str += 'There is no target field.' + logger.info(info_str) + _check_forward_error(forward_func=forward_func, dataset=dataset, + batch_x=batch_x, check_level=check_level) + refined_batch_x = _build_args(forward_func, **batch_x) + pred_dict = model(**refined_batch_x) + func_signature = _get_func_signature(forward_func) + if not isinstance(pred_dict, dict): + raise TypeError(f"The return value of {func_signature} should be `dict`, not `{type(pred_dict)}`.") + + # loss check + try: + loss = losser(pred_dict, batch_y) + # check loss output + if batch_count == 0: + if not isinstance(loss, torch.Tensor): + raise TypeError( + f"The return value of {_get_func_signature(losser.get_loss)} should be `torch.Tensor`, " + f"but got `{type(loss)}`.") + if len(loss.size()) != 0: + raise ValueError( + f"The size of return value of {_get_func_signature(losser.get_loss)} is {loss.size()}, " + f"should be torch.size([])") + loss.backward() + except _CheckError as e: + # TODO: another error raised if _CheckError caught + pre_func_signature = _get_func_signature(forward_func) + _check_loss_evaluate(prev_func_signature=pre_func_signature, func_signature=e.func_signature, + check_res=e.check_res, pred_dict=pred_dict, target_dict=batch_y, + dataset=dataset, check_level=check_level) + model.zero_grad() + if batch_count + 1 >= DEFAULT_CHECK_NUM_BATCH: + break + + if dev_data is not None: + tester = Tester(data=dev_data[:batch_size * DEFAULT_CHECK_NUM_BATCH], model=model, metrics=metrics, + batch_size=batch_size, verbose=-1, use_tqdm=False) + evaluate_results = tester.test() + _check_eval_results(metrics=evaluate_results, metric_key=metric_key, metric_list=metrics) + + +def _check_eval_results(metrics, metric_key, metric_list): + # metrics: tester返回的结果 + # metric_key: 一个用来做筛选的指标,来自Trainer的初始化 + # metric_list: 多个用来做评价的指标,来自Trainer的初始化 + if isinstance(metrics, tuple): + loss, metrics = metrics + + if isinstance(metrics, dict): + metric_dict = list(metrics.values())[0] # 取第一个metric + + if metric_key is None: + indicator_val, indicator = list(metric_dict.values())[0], list(metric_dict.keys())[0] + else: + # metric_key is set + if metric_key not in metric_dict: + raise RuntimeError(f"metric key {metric_key} not found in {metric_dict}") + indicator_val = metric_dict[metric_key] + indicator = metric_key + else: + raise RuntimeError("Invalid metrics type. Expect {}, got {}".format((tuple, dict), type(metrics))) + return indicator, indicator_val +======= +from fastNLP.core.trainer import Trainer +import torch +from torch import nn +import os +import numpy as np +import warnings +import time +from datetime import datetime, timedelta + +try: + from tqdm.auto import tqdm +except: + from fastNLP.core.utils import _pseudo_tqdm as tqdm + +from fastNLP.core.batch import DataSetIter, BatchIter +from fastNLP.core.callback import CallbackManager, CallbackException, Callback +from fastNLP.core.dataset import DataSet +from fastNLP.core.losses import _prepare_losser +from fastNLP.core.metrics import _prepare_metrics +from fastNLP.core.optimizer import Optimizer +from fastNLP.core.sampler import Sampler +from fastNLP.core.sampler import RandomSampler +from fastNLP.core.tester import Tester +from fastNLP.core.utils import _CheckError +from fastNLP.core.utils import _build_args +from fastNLP.core.utils import _check_forward_error +from fastNLP.core.utils import _check_loss_evaluate +from fastNLP.core.utils import _move_dict_value_to_device +from fastNLP.core.utils import _get_func_signature +from fastNLP.core.utils import _get_model_device +from fastNLP.core.utils import _move_model_to_device +from fastNLP.core._parallel_utils import _model_contains_inner_module +from fastNLP.core._logger import logger + +DEFAULT_CHECK_BATCH_SIZE = 2 +DEFAULT_CHECK_NUM_BATCH = 2 + + +def _model_contains_inner_module(model): + r""" + + :param nn.Module model: 模型文件,判断是否内部包含model.module, 多用于check模型是否是nn.DataParallel, + nn.parallel.DistributedDataParallel。主要是在做形参匹配的时候需要使用最内部的model的function。 + :return: bool + """ + if isinstance(model, nn.Module): + if isinstance(model, (nn.DataParallel, nn.parallel.DistributedDataParallel)): + return True + return False + + +class MyTrainer(Trainer): + def __init__(self, train_data, model, optimizer=None, loss=None, + batch_size=32, sampler=None, drop_last=False, update_every=1, + num_workers=0, n_epochs=10, print_every=5, + dev_data=None, metrics=None, metric_key=None, + validate_every=-1, save_path=None, use_tqdm=True, device=None, + callbacks=None, check_code_level=0, **kwargs): + r""" + :param train_data: 训练集, :class:`~fastNLP.DataSet` 类型或 :class:`~fastNLP.BatchIter` 的子类 + :param nn.modules model: 待训练的模型 + :param optimizer: `torch.optim.Optimizer` 优化器。如果为None,则Trainer使用默认的Adam(model.parameters(), lr=4e-3)这个优化器 + :param int batch_size: 训练和验证的时候的batch大小。 + :param loss: 使用的 :class:`~fastNLP.core.losses.LossBase` 对象。当为None时,默认使用 :class:`~fastNLP.LossInForward` + :param sampler: Batch数据生成的顺序, :class:`~fastNLP.Sampler` 类型。如果为None,默认使用 :class:`~fastNLP.RandomSampler` + :param drop_last: 如果最后一个batch没有正好为batch_size这么多数据,就扔掉最后一个batch + :param num_workers: int, 有多少个线程来进行数据pad处理。 + :param update_every: int, 多少步更新一次梯度。用于希望累计梯度的场景,比如需要128的batch_size, 但是直接设为128 + 会导致内存不足,通过设置batch_size=32, update_every=4达到目的。当optimizer为None时,该参数无效。 + :param int n_epochs: 需要优化迭代多少次。 + :param int print_every: 多少次反向传播更新tqdm显示的loss; 如果use_tqdm=False, 则多少次反向传播打印loss。 + :param dev_data: 用于做验证的DataSet, :class:`~fastNLP.DataSet` 类型。 + :param metrics: 验证的评估函数。可以只使用一个 :class:`Metric` , + 也可以使用多个 :class:`Metric` ,通过列表传入。 + 如验证时取得了更好的验证结果(如果有多个Metric,以列表中第一个Metric为准),且save_path不为None, + 则保存当前模型。Metric种类详见 :mod:`metrics模块 ` 。仅在传入dev_data时有效。 + :param str,None metric_key: :class:`Metric` 有时会有多个指标, + 比如 :class:`~fastNLP.core.metrics.SpanFPreRecMetric` 中包含了'f', 'pre', 'rec'。此时需 + 要指定以哪个指标为准。另外有些指标是越小效果越好,比如语言模型的困惑度,这种情况下,在key前面增加一个'-'来表 + 明验证时,值越小越好(比如: "-ppl")。仅在传入dev_data时有效。 + :param int validate_every: 多少个step在验证集上验证一次; 如果为-1,则每个epoch结束验证一次。仅在传入dev_data时有效。 + :param str,None save_path: 将模型保存路径,如果路径不存在,将自动创建文件夹。如果为None,则不保存模型。如果dev_data为None,则保存 + 最后一次迭代的模型。保存的时候不仅保存了参数,还保存了模型结构。即便使用DataParallel,这里也只保存模型。 + :param bool use_tqdm: 是否使用tqdm来显示训练进度; 如果为False,则将loss打印在终端中。 + :param str,int,torch.device,list(int) device: 将模型load到哪个设备。默认为None,即Trainer不对模型 + 的计算位置进行管理。支持以下的输入: + + 1. str: ['cpu', 'cuda', 'cuda:0', 'cuda:1', ...] 依次为'cpu'中, 可见的第一个GPU中, 可见的第一个GPU中, + 可见的第二个GPU中; + + 2. torch.device:将模型装载到torch.device上。 + + 3. int: 将使用device_id为该值的gpu进行训练 + + 4. list(int):如果多于1个device,将使用torch.nn.DataParallel包裹model, 并使用传入的device。 + + 5. None. 为None则不对模型进行任何处理,如果传入的model为torch.nn.DataParallel该值必须为None。 + + 已知可能会出现的问题:Adagrad优化器可能无法正常使用这个参数,请手动管理模型位置。 + + :param list(callbacks) callbacks: 用于在train过程中起调节作用的回调函数。比如early stop,negative sampling等可以 + 通过callback机制实现。 可使用的callback参见 :mod:`callback模块 ` + :param int check_code_level: 模型检查等级. -1: 不进行检查; 0: 仅出现错误时停止; 1: 如果有field没有被使用, + 报告警告信息; 2: 有任何field没有被使用都报错. 检查的原理是通过使用很小的batch(默认2个sample)来运行代码,但是 + 这个过程理论上不会修改任何参数,只是会检查能否运行。但如果(1)模型中存在将batch_size写为某个固定值的情况; + (2)模型中存在累加前向计算次数的,可能会多计算1次。以上情况建议将check_code_level设置为-1。 + :param kwargs: 支持配置可选参数 + bool test_use_tqdm: 在dev上验证的时候是否开启tqdm + Sampler test_sampler: 在evaluate的时候使用的sampler + + 本trainer是对FastNLP原始Trainer的修改,修改原因: + 1. 原始trainer的保存模型格式和my-presum保存模型格式不符,导致best performance的checkpoint和在固定step保存的checkpoint格式不一致 + 2. 原始trainer默认如果传入的optimizer是None,会自动分配一个Adam的optimizer,并不符合presum中需要有两个optimizer的情况 + 修改内容: + 1. 修改_save_model和_load_model函数,使得和本项目内部存储格式一致 + 2. 修改Trainer的初始化以及_update()函数,使得如果optimizer是None,则trainer不进行self.optimizer.step(), 对应工作由自己设定的callback进行 + """ + super(Trainer, self).__init__() + if not isinstance(model, nn.Module): + raise TypeError(f"The type of model must be torch.nn.Module, got {type(model)}.") + + # check metrics and dev_data + if (not metrics) and dev_data is not None: + raise ValueError("No metric for dev_data evaluation.") + if metrics and (dev_data is None): + raise ValueError("No dev_data for evaluations, pass dev_data or set metrics to None. ") + + # check update every + assert update_every >= 1, "update_every must be no less than 1." + self.update_every = int(update_every) + + # check save_path + if not (save_path is None or isinstance(save_path, str)): + raise ValueError("save_path can only be None or `str`.") + # prepare evaluate + metrics = _prepare_metrics(metrics) + + # parse metric_key + # increase_better is True. It means the exp result gets better if the indicator increases. + # It is true by default. + self.increase_better = True + if metric_key is not None: + self.increase_better = False if metric_key[0] == "-" else True + self.metric_key = metric_key[1:] if metric_key[0] == "+" or metric_key[0] == "-" else metric_key + else: + self.metric_key = None + # prepare loss + losser = _prepare_losser(loss) + + if isinstance(train_data, BatchIter): + if sampler is not None: + warnings.warn("sampler is ignored when train_data is a BatchIter.") + if num_workers > 0: + warnings.warn("num_workers is ignored when train_data is BatchIter.") + if drop_last: + warnings.warn("drop_last is ignored when train_data is BatchIter.") + + if isinstance(model, nn.parallel.DistributedDataParallel): # 如果是分布式的 + # device为None + if device is not None: + warnings.warn("device is ignored when model is nn.parallel.DistributedDataParallel.") + device = None + # Sampler要是分布式的 + if sampler is None: + sampler = torch.utils.data.DistributedSampler(train_data) + elif not isinstance(sampler, torch.utils.data.DistributedSampler): + raise TypeError("When using nn.parallel.DistributedDataParallel, " + "sampler must be None or torch.utils.data.DistributedSampler.") + # 不能保存模型 + if save_path: + raise RuntimeError("Saving model in Distributed situation is not allowed right now.") + else: + # sampler check + if sampler is not None and not isinstance(sampler, (Sampler, torch.utils.data.Sampler)): + raise ValueError( + f"The type of sampler should be fastNLP.BaseSampler or pytorch's Sampler, got {type(sampler)}") + if sampler is None: + sampler = RandomSampler() + elif hasattr(sampler, 'set_batch_size'): + sampler.set_batch_size(batch_size) + + if isinstance(train_data, DataSet): + self.data_iterator = DataSetIter(dataset=train_data, batch_size=batch_size, sampler=sampler, + num_workers=num_workers, drop_last=drop_last) + elif isinstance(train_data, BatchIter): + self.data_iterator = train_data + train_data = train_data.dataset + check_code_level = -1 # 强制跳过校验 + else: + raise TypeError("train_data type {} not support".format(type(train_data))) + + model.train() + self.model = _move_model_to_device(model, device=device) + if _model_contains_inner_module(self.model): + self._forward_func = self.model.module.forward + else: + self._forward_func = self.model.forward + if check_code_level > -1: + # _check_code 是 fastNLP 帮助你检查代码是否正确的方法 。如果你在错误栈中看到这行注释,请认真检查你的field名与模型的输入 + # 名是否匹配 + dev_dataset = dev_data + if isinstance(dev_data, BatchIter): + dev_dataset = None + warnings.warn("dev_data is of BatchIter type, ignore validation checking.") + check_batch_size = min(batch_size, DEFAULT_CHECK_BATCH_SIZE) + if isinstance(self.model, nn.DataParallel): + _num_devices = len(self.model.device_ids) + if batch_size // _num_devices > 1: # 如果多卡是每个卡可以分多个数据的,则用每个卡给两个sample + check_batch_size = max(len(self.model.device_ids) * 2, check_batch_size) + else: + check_batch_size = max(len(self.model.device_ids), check_batch_size) + _check_code(dataset=train_data, model=self.model, losser=losser, forward_func=self._forward_func, + metrics=metrics, + dev_data=dev_dataset, metric_key=self.metric_key, check_level=check_code_level, + batch_size=check_batch_size) + + self.train_data = train_data + self.dev_data = dev_data # If None, No validation. + self.losser = losser + self.metrics = metrics + self.n_epochs = int(n_epochs) + self.batch_size = int(batch_size) + self.save_path = save_path + self.print_every = int(print_every) + self.validate_every = int(validate_every) if validate_every != 0 else -1 + self.best_metric_indicator = None + self.best_dev_epoch = None + self.best_dev_step = None + self.best_dev_perf = None + self.n_steps = len(self.data_iterator) * self.n_epochs + + if isinstance(optimizer, torch.optim.Optimizer): + self.optimizer = optimizer + elif isinstance(optimizer, Optimizer): + self.optimizer = optimizer.construct_from_pytorch(self.model.parameters()) + elif optimizer is None: + # 修改optimizer初始化,使得其不再是如果传入None则默认Adam + # self.optimizer = torch.optim.Adam(self.model.parameters(), lr=4e-3) + self.optimizer = None + else: + raise TypeError("optimizer can only be torch.optim.Optimizer type, not {}.".format(type(optimizer))) + + self.logger = logger + + self.use_tqdm = use_tqdm + if 'test_use_tqdm' in kwargs: + self.test_use_tqdm = kwargs.get('test_use_tqdm') + else: + self.test_use_tqdm = self.use_tqdm + self.pbar = None + self.print_every = abs(self.print_every) + self.kwargs = kwargs + if self.dev_data is not None: + self.tester = Tester(model=self.model, + data=self.dev_data, + metrics=self.metrics, + batch_size=kwargs.get("dev_batch_size", self.batch_size), + device=None, # 由上面的部分处理device + verbose=0, + use_tqdm=self.test_use_tqdm, + sampler=kwargs.get('test_sampler', None)) + + self.start_time = None # start timestamp + + if isinstance(callbacks, Callback): + callbacks = [callbacks] + + self.callback_manager = CallbackManager(env={"trainer": self}, + callbacks=callbacks) + + def _update(self): + r"""Perform weight update on a model. + 修改:增加了只有当self.optimizer is not None的时候才会进行self.optimizer.step() + """ + if self.step % self.update_every == 0 and self.optimizer is not None: + self.optimizer.step() + + def _save_model(self, model, model_name, only_param=True): + r""" 存储不含有显卡信息的state_dict或model + :param model: + :param model_name: + :param only_param: + :return: + """ + config = self.kwargs.get("config") + assert config is not None, "Please pass config to MyTrainer!" + + if self.save_path is not None: + model_path = os.path.join(self.save_path, model_name) + if not os.path.exists(self.save_path): + os.makedirs(self.save_path, exist_ok=True) + if _model_contains_inner_module(model): + model = model.module + + if only_param: + state_dict = model.state_dict() + for key in state_dict: + state_dict[key] = state_dict[key].cpu() + checkpoint = {'model': state_dict, 'opt': config} + torch.save(checkpoint, model_path) + else: + model.cpu() + checkpoint = {'model': model, 'opt': config} + torch.save(checkpoint, model_path) + model.to(self._model_device) + + def _load_model(self, model, model_name, only_param=True): + # 返回bool值指示是否成功reload模型 + if self.save_path is not None: + model_path = os.path.join(self.save_path, model_name) + if only_param: + states = torch.load(model_path)['model'] + else: + states = torch.load(model_path)['model'].state_dict() + if _model_contains_inner_module(model): + model.module.load_state_dict(states) + else: + model.load_state_dict(states) + elif hasattr(self, "_best_model_states"): + model.load_state_dict(self._best_model_states) + else: + return False + return True + + +def _get_value_info(_dict): + # given a dict value, return information about this dict's value. Return list of str + strs = [] + for key, value in _dict.items(): + _str = '' + if isinstance(value, torch.Tensor): + _str += "\t{}: (1)type:torch.Tensor (2)dtype:{}, (3)shape:{} ".format(key, + value.dtype, value.size()) + elif isinstance(value, np.ndarray): + _str += "\t{}: (1)type:numpy.ndarray (2)dtype:{}, (3)shape:{} ".format(key, + value.dtype, value.shape) + else: + _str += "\t{}: type:{}".format(key, type(value)) + strs.append(_str) + return strs + + +def _check_code(dataset, model, losser, metrics, forward_func, batch_size=DEFAULT_CHECK_BATCH_SIZE, + dev_data=None, metric_key=None, check_level=0): + # check get_loss 方法 + model_device = _get_model_device(model=model) + _iter = DataSetIter(dataset, batch_size=batch_size, sampler=None) + + for batch_count, (batch_x, batch_y) in enumerate(_iter): + _move_dict_value_to_device(batch_x, batch_y, device=model_device) + # forward check + if batch_count == 0: + info_str = "" + input_fields = _get_value_info(batch_x) + target_fields = _get_value_info(batch_y) + if len(input_fields) > 0: + info_str += "input fields after batch(if batch size is {}):\n".format(batch_size) + info_str += "\n".join(input_fields) + info_str += '\n' + else: + raise RuntimeError("There is no input field.") + if len(target_fields) > 0: + info_str += "target fields after batch(if batch size is {}):\n".format(batch_size) + info_str += "\n".join(target_fields) + info_str += '\n' + else: + info_str += 'There is no target field.' + logger.info(info_str) + _check_forward_error(forward_func=forward_func, dataset=dataset, + batch_x=batch_x, check_level=check_level) + refined_batch_x = _build_args(forward_func, **batch_x) + pred_dict = model(**refined_batch_x) + func_signature = _get_func_signature(forward_func) + if not isinstance(pred_dict, dict): + raise TypeError(f"The return value of {func_signature} should be `dict`, not `{type(pred_dict)}`.") + + # loss check + try: + loss = losser(pred_dict, batch_y) + # check loss output + if batch_count == 0: + if not isinstance(loss, torch.Tensor): + raise TypeError( + f"The return value of {_get_func_signature(losser.get_loss)} should be `torch.Tensor`, " + f"but got `{type(loss)}`.") + if len(loss.size()) != 0: + raise ValueError( + f"The size of return value of {_get_func_signature(losser.get_loss)} is {loss.size()}, " + f"should be torch.size([])") + loss.backward() + except _CheckError as e: + # TODO: another error raised if _CheckError caught + pre_func_signature = _get_func_signature(forward_func) + _check_loss_evaluate(prev_func_signature=pre_func_signature, func_signature=e.func_signature, + check_res=e.check_res, pred_dict=pred_dict, target_dict=batch_y, + dataset=dataset, check_level=check_level) + model.zero_grad() + if batch_count + 1 >= DEFAULT_CHECK_NUM_BATCH: + break + + if dev_data is not None: + tester = Tester(data=dev_data[:batch_size * DEFAULT_CHECK_NUM_BATCH], model=model, metrics=metrics, + batch_size=batch_size, verbose=-1, use_tqdm=False) + evaluate_results = tester.test() + _check_eval_results(metrics=evaluate_results, metric_key=metric_key, metric_list=metrics) + + +def _check_eval_results(metrics, metric_key, metric_list): + # metrics: tester返回的结果 + # metric_key: 一个用来做筛选的指标,来自Trainer的初始化 + # metric_list: 多个用来做评价的指标,来自Trainer的初始化 + if isinstance(metrics, tuple): + loss, metrics = metrics + + if isinstance(metrics, dict): + metric_dict = list(metrics.values())[0] # 取第一个metric + + if metric_key is None: + indicator_val, indicator = list(metric_dict.values())[0], list(metric_dict.keys())[0] + else: + # metric_key is set + if metric_key not in metric_dict: + raise RuntimeError(f"metric key {metric_key} not found in {metric_dict}") + indicator_val = metric_dict[metric_key] + indicator = metric_key + else: + raise RuntimeError("Invalid metrics type. Expect {}, got {}".format((tuple, dict), type(metrics))) + return indicator, indicator_val +>>>>>>> bcb618ae9faf5d35f3147b05b34268a73808238a diff --git a/fastSum/PreSum/translate/__init__.py b/fastSum/PreSum/translate/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/PreSum/translate/beam.py b/fastSum/PreSum/translate/beam.py new file mode 100644 index 0000000000000000000000000000000000000000..daedc60d18e3812ef12ddd33deed52fc879fe29f --- /dev/null +++ b/fastSum/PreSum/translate/beam.py @@ -0,0 +1,208 @@ +from __future__ import division +import torch +from translate import penalties + + +class Beam(object): + """ + Class for managing the internals of the beam search process. + + Takes care of beams, back pointers, and scores. + + Args: + size (int): beam size + pad, bos, eos (int): indices of padding, beginning, and ending. + n_best (int): nbest size to use + cuda (bool): use gpu + global_scorer (:obj:`GlobalScorer`) + """ + + def __init__(self, size, pad, bos, eos, + n_best=1, cuda=False, + global_scorer=None, + min_length=0, + stepwise_penalty=False, + block_ngram_repeat=0, + exclusion_tokens=set()): + + self.size = size + self.tt = torch.cuda if cuda else torch + + # The score for each translation on the beam. + self.scores = self.tt.FloatTensor(size).zero_() + self.all_scores = [] + + # The backpointers at each time-step. + self.prev_ks = [] + + # The outputs at each time-step. + self.next_ys = [self.tt.LongTensor(size) + .fill_(pad)] + self.next_ys[0][0] = bos + + # Has EOS topped the beam yet. + self._eos = eos + self.eos_top = False + + # The attentions (matrix) for each time. + self.attn = [] + + # Time and k pair for finished. + self.finished = [] + self.n_best = n_best + + # Information for global scoring. + self.global_scorer = global_scorer + self.global_state = {} + + # Minimum prediction length + self.min_length = min_length + + # Apply Penalty at every step + self.stepwise_penalty = stepwise_penalty + self.block_ngram_repeat = block_ngram_repeat + self.exclusion_tokens = exclusion_tokens + + def get_current_state(self): + "Get the outputs for the current timestep." + return self.next_ys[-1] + + def get_current_origin(self): + "Get the backpointers for the current timestep." + return self.prev_ks[-1] + + def advance(self, word_probs, attn_out): + """ + Given prob over words for every last beam `wordLk` and attention + `attn_out`: Compute and update the beam search. + + Parameters: + + * `word_probs`- probs of advancing from the last step (K x words) + * `attn_out`- attention at the last step + + Returns: True if beam search is complete. + """ + num_words = word_probs.size(1) + if self.stepwise_penalty: + self.global_scorer.update_score(self, attn_out) + # force the output to be longer than self.min_length + cur_len = len(self.next_ys) + if cur_len < self.min_length: + for k in range(len(word_probs)): + word_probs[k][self._eos] = -1e20 + # Sum the previous scores. + if len(self.prev_ks) > 0: + beam_scores = word_probs + \ + self.scores.unsqueeze(1).expand_as(word_probs) + # Don't let EOS have children. + for i in range(self.next_ys[-1].size(0)): + if self.next_ys[-1][i] == self._eos: + beam_scores[i] = -1e20 + + # Block ngram repeats + if self.block_ngram_repeat > 0: + ngrams = [] + le = len(self.next_ys) + for j in range(self.next_ys[-1].size(0)): + hyp, _ = self.get_hyp(le - 1, j) + ngrams = set() + fail = False + gram = [] + for i in range(le - 1): + # Last n tokens, n = block_ngram_repeat + gram = (gram + + [hyp[i].item()])[-self.block_ngram_repeat:] + # Skip the blocking if it is in the exclusion list + if set(gram) & self.exclusion_tokens: + continue + if tuple(gram) in ngrams: + fail = True + ngrams.add(tuple(gram)) + if fail: + beam_scores[j] = -10e20 + else: + beam_scores = word_probs[0] + flat_beam_scores = beam_scores.view(-1) + best_scores, best_scores_id = flat_beam_scores.topk(self.size, 0, + True, True) + + self.all_scores.append(self.scores) + self.scores = best_scores + + # best_scores_id is flattened beam x word array, so calculate which + # word and beam each score came from + prev_k = best_scores_id / num_words + self.prev_ks.append(prev_k) + self.next_ys.append((best_scores_id - prev_k * num_words)) + self.attn.append(attn_out.index_select(0, prev_k)) + self.global_scorer.update_global_state(self) + + for i in range(self.next_ys[-1].size(0)): + if self.next_ys[-1][i] == self._eos: + global_scores = self.global_scorer.score(self, self.scores) + s = global_scores[i] + self.finished.append((s, len(self.next_ys) - 1, i)) + + # End condition is when top-of-beam is EOS and no global score. + if self.next_ys[-1][0] == self._eos: + self.all_scores.append(self.scores) + self.eos_top = True + + def done(self): + return self.eos_top and len(self.finished) >= self.n_best + + def sort_finished(self, minimum=None): + if minimum is not None: + i = 0 + # Add from beam until we have minimum outputs. + while len(self.finished) < minimum: + global_scores = self.global_scorer.score(self, self.scores) + s = global_scores[i] + self.finished.append((s, len(self.next_ys) - 1, i)) + i += 1 + + self.finished.sort(key=lambda a: -a[0]) + scores = [sc for sc, _, _ in self.finished] + ks = [(t, k) for _, t, k in self.finished] + return scores, ks + + def get_hyp(self, timestep, k): + """ + Walk back to construct the full hypothesis. + """ + hyp, attn = [], [] + for j in range(len(self.prev_ks[:timestep]) - 1, -1, -1): + hyp.append(self.next_ys[j + 1][k]) + attn.append(self.attn[j][k]) + k = self.prev_ks[j][k] + return hyp[::-1], torch.stack(attn[::-1]) + + +class GNMTGlobalScorer(object): + """ + NMT re-ranking score from + "Google's Neural Machine Translation System" :cite:`wu2016google` + + Args: + alpha (float): length parameter + beta (float): coverage parameter + """ + + def __init__(self, alpha, length_penalty): + self.alpha = alpha + penalty_builder = penalties.PenaltyBuilder(length_penalty) + # Term will be subtracted from probability + # Probability will be divided by this + self.length_penalty = penalty_builder.length_penalty() + + def score(self, beam, logprobs): + """ + Rescores a prediction based on penalty functions + """ + normalized_probs = self.length_penalty(beam, + logprobs, + self.alpha) + + return normalized_probs + diff --git a/fastSum/PreSum/translate/penalties.py b/fastSum/PreSum/translate/penalties.py new file mode 100644 index 0000000000000000000000000000000000000000..e2afbb291f777e60ed20148532d3d6e8906c53de --- /dev/null +++ b/fastSum/PreSum/translate/penalties.py @@ -0,0 +1,50 @@ +from __future__ import division +import torch + + +class PenaltyBuilder(object): + """ + Returns the Length and Coverage Penalty function for Beam Search. + + Args: + length_pen (str): option name of length pen + cov_pen (str): option name of cov pen + """ + + def __init__(self, length_pen): + self.length_pen = length_pen + + def length_penalty(self): + if self.length_pen == "wu": + return self.length_wu + elif self.length_pen == "avg": + return self.length_average + else: + return self.length_none + + """ + Below are all the different penalty terms implemented so far + """ + + + def length_wu(self, beam, logprobs, alpha=0.): + """ + NMT length re-ranking score from + "Google's Neural Machine Translation System" :cite:`wu2016google`. + """ + + modifier = (((5 + len(beam.next_ys)) ** alpha) / + ((5 + 1) ** alpha)) + return (logprobs / modifier) + + def length_average(self, beam, logprobs, alpha=0.): + """ + Returns the average probability of tokens in a sequence. + """ + return logprobs / len(beam.next_ys) + + def length_none(self, beam, logprobs, alpha=0., beta=0.): + """ + Returns unmodified scores. + """ + return logprobs \ No newline at end of file diff --git a/fastSum/resources/ROUGE/DB_File-1.835.tar.gz b/fastSum/resources/ROUGE/DB_File-1.835.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..36177e3a15cfd1c17f01d3ec981cccd6521a2cd0 Binary files /dev/null and b/fastSum/resources/ROUGE/DB_File-1.835.tar.gz differ diff --git a/fastSum/resources/ROUGE/DB_File-1.835/Changes b/fastSum/resources/ROUGE/DB_File-1.835/Changes new file mode 100644 index 0000000000000000000000000000000000000000..e653816fa2144974d9b4d17468f9289641c86e2b --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/Changes @@ -0,0 +1,644 @@ + +1.835 23 Dec 2014 + + * Silence more compiler warnings + +1.834 11 Dec 2014 + + * Makefile.PL: version check is missing a zero + RT #100844 + +1.833 9 Dec 2014 + + * More Silence compiler warnings + + * 1.832 breaks bleadperl C89 build + RT #100812 + +1.832 8 Dec 2014 + + * Silence compiler warnings + + * C++ change from blead + +1.831 15 November 2013 + + * C99 comment is a nogo + RT #90383 + +1.830 2 November 2013 + + * Memory leaks when failed to open db + RT #89589 + + * DB_File uses AutoLoader for no reason + RT #88258 + +1.829 7 July 2013 + + * make realclean: removing all files + RT #68214 + + * Documented the issue where the error below + + BDB0588 At least one secondary cursor must be specified to DB->join + + * DB_File installs to wrong place for CPAN version + RT #70420 + Makefile.PL prevents INSTALLDIRS on command line. + RT #68287: Makefile.PL prevents INSTALLDIRS on command line. + + * typo fix + RT #85335 + +1.828 7 May 2013 + + * Minor change to build with Berkeley DB 6.x + +1.827 25 Jan 2012 + + * DB_File.pm - Don't use "@_" construct + [RT #79287] + +1.826 25 Jan 2012 + + * t/db-btree.t - fix use of "length @array" + [RT #74336] + +1.825 24 Jan 2012 + + * t/db-btree.t - fix use of "length @array" + [RT #74336] + +1.824 6 Aug 2011 + + * Amendments to tests to work in blead + [RT #70108] + +1.823 6 Aug 2011 + + * croak if attempt to freeze/thaw DB_File object + [RT #69985] + +1.822 12 March 2011 + + * Link rot + [rt.cpan.org #68739] + +1.822 12 March 2011 + + * Keep DB_File's warnings in sync with perl's + [rt.cpan.org #66339] + +1.821 10 January 2011 + + * Fixed typos & spelling errors. + [perl #81792] + +1.820 28 March 2009 + + * remove MAN3PODS from Makefile.PL to match core. + +1.819 18 February 2009 + + * t/db-recno.t fails if run in a path that contains spaces + [rt.cpan.org #43288] + +1.818 21 January 2009 + + * Updated Makefile.PL for Strawberry Perl. + Patch suggested by David Golden. + + * Remove IRIX notes from README. The page referenced doesn't exist + anymore. + +1.817 27 March 2008 + + * Updated dbinfo + + * Applied core patch 32299 - Re-apply change #30562 + + * Applied core patch 32208 + + * Applied core patch 32884 - use MM->parse_version() in Makefile.PL + + * Applied core patch 32883 - Silence new warning grep in void context warning + + * Applied core patch 32704 to remove use of PL_na in typemap + + * Applied core patch 30562 to fix a build issue on OSF + +1.816 28 October 2007 + + * Clarified the warning about building with a different version of + Berkeley DB that is used at runtime. + + * Also made the boot version check less strict. + [rt.cpan.org #30013] + +1.815 4 February 2007 + + * A few casting cleanups for building with C++ from Steve Peters. + + * Fixed problem with recno which happened if you changed directory after + opening the database. Problem reported by Andrew Pam. + + +1.814 11 November 2005 + + * Fix from Dominic Dunlop to tidy up an OS-X specific warning in + db-btree.t. + + * Silenced a warning about $DB_File::Error only being used once. + Issue spotted by Dominic Dunlop. + +1.813 31st October 2005 + + * Updates for Berkeley DB 4.4 + +1.812 9th October 2005 + + * Added libscan to Makefile.PL + + * Fixed test failing under windows + +1.811 12th March 2005 + + * Fixed DBM filter bug in seq + +1.810 7th August 2004 + + * Fixed db-hash.t for Cygwin + + * Added substr tests to db-hast.t + + * Documented AIX build problem in README. + +1.809 20th June 2004 + + * Merged core patch 22258 + + * Merged core patch 22741 + + * Fixed core bug 30237. + Using substr to pass parameters to the low-level Berkeley DB interface + causes problems with Perl 5.8.1 or better. + typemap fix supplied by Marcus Holland-Moritz. + +1.808 22nd December 2003 + + * Added extra DBM Filter tests. + + * Fixed a memory leak in ParseOpenInfo, which whould occur if the + opening of the database failed. Leak spotted by Adrian Enache. + +1.807 1st November 2003 + + * Fixed minor typos on pod documentation - reported by Jeremy Mates & + Mark Jason Dominus. + + * dbinfo updated to report when a database is encrypted. + +1.806 22nd October 2002 + + * Fixed problem when trying to build with a multi-threaded perl. + + * Tidied up the recursion detection code. + + * merged core patch 17844 - missing dTHX declarations. + + * merged core patch 17838 + +1.805 1st September 2002 + + * Added support to allow DB_File to build with Berkeley DB 4.1.X + + * Tightened up the test harness to test that calls to untie don't generate + the "untie attempted while %d inner references still exist" warning. + + * added code to guard against calling the callbacks (compare,hash & prefix) + recursively. + + * passing undef for the flags and/or mode when opening a database could cause + a "Use of uninitialized value in subroutine entry" warning. Now silenced. + + * DBM filter code beefed up to cope with read-only $_. + +1.804 2nd June 2002 + + * Perl core patch 14939 added a new warning to "splice". This broke the + db-recno test harness. Fixed. + + * merged core patches 16502 & 16540. + +1.803 1st March 2002 + + * Fixed a problem with db-btree.t where it complained about an "our" + variable redeclaration. + + * FETCH, STORE & DELETE don't map the flags parameter into the + equivalent Berkeley DB function anymore. + +1.802 6th January 2002 + + * The message about some test failing in db-recno.t had the wrong test + numbers. Fixed. + + * merged core patch 13942. + +1.801 26th November 2001 + + * Fixed typo in Makefile.PL + + * Added "clean" attribute to Makefile.PL + +1.800 23rd November 2001 + + * use pport.h for perl backward compatibility code. + + * use new ExtUtils::Constant module to generate XS constants. + + * upgrade Makefile.PL upgrade/downgrade code to toggle "our" with + "use vars" + +1.79 22nd October 2001 + + * Added a "local $SIG{__DIE__}" inside the eval that checks for + the presence of XSLoader s suggested by Andrew Hryckowin. + + * merged core patch 12277. + + * Changed NEXTKEY to not initialise the input key. It isn't used anyway. + +1.79 22nd October 2001 + + * Fixed test harness for cygwin + +1.78 30th July 2001 + + * the test in Makefile.PL for AIX used -plthreads. Should have been + -lpthreads + + * merged Core patches + 10372, 10335, 10372, 10534, 10549, 10643, 11051, 11194, 11432 + + * added documentation patch regarding duplicate keys from Andrew Johnson + + +1.77 26th April 2001 + + * AIX is reported to need -lpthreads, so Makefile.PL now checks for + AIX and adds it to the link options. + + * Minor documentation updates. + + * Merged Core patch 9176 + + * Added a patch from Edward Avis that adds support for splice with + recno databases. + + * Modified Makefile.PL to only enable the warnings pragma if using perl + 5.6.1 or better. + +1.76 15th January 2001 + + * Added instructions for using LD_PRELOAD to get Berkeley DB 2.x to work + with DB_File on Linux. Thanks to Norbert Bollow for sending details of + this approach. + + +1.75 17th December 2000 + + * Fixed perl core patch 7703 + + * Added support to allow DB_File to be built with Berkeley DB 3.2 -- + btree_compare, btree_prefix and hash_cb needed to be changed. + + * Updated dbinfo to support Berkeley DB 3.2 file format changes. + + +1.74 10th December 2000 + + * A "close" call in DB_File.xs needed parenthesised to stop win32 from + thinking it was one of its macros. + + * Updated dbinfo to support Berkeley DB 3.1 file format changes. + + * DB_File.pm & the test hasness now use the warnings pragma (when + available). + + * Included Perl core patch 7703 -- size argument for hash_cb is different + for Berkeley DB 3.x + + * Included Perl core patch 7801 -- Give __getBerkeleyDBInfo the ANSI C + treatment. + + * @a = () produced the warning 'Argument "" isn't numeric in entersub' + This has been fixed. Thanks to Edward Avis for spotting this bug. + + * Added note about building under Linux. Included patches. + + * Included Perl core patch 8068 -- fix for bug 20001013.009 + When run with warnings enabled "$hash{XX} = undef " produced an + "Uninitialized value" warning. This has been fixed. + +1.73 31st May 2000 + + * Added support in version.c for building with threaded Perl. + + * Berkeley DB 3.1 has reenabled support for null keys. The test + harness has been updated to reflect this. + +1.72 16th January 2000 + + * Added hints/sco.pl + + * The module will now use XSLoader when it is available. When it + isn't it will use DynaLoader. + + * The locking section in DB_File.pm has been discredited. Many thanks + to David Harris for spotting the underlying problem, contributing + the updates to the documentation and writing DB_File::Lock (available + on CPAN). + +1.71 7th September 1999 + + * Fixed a bug that prevented 1.70 from compiling under win32 + + * Updated to support Berkeley DB 3.x + + * Updated dbinfo for Berkeley DB 3.x file formats. + +1.70 4th August 1999 + + * Initialise $DB_File::db_ver and $DB_File::db_version with + GV_ADD|GV_ADDMULT -- bug spotted by Nick Ing-Simmons. + + * Added a BOOT check to test for equivalent versions of db.h & + libdb.a/so. + +1.69 3rd August 1999 + + * fixed a bug in push -- DB_APPEND wasn't working properly. + + * Fixed the R_SETCURSOR bug introduced in 1.68 + + * Added a new Perl variable $DB_File::db_ver + +1.68 22nd July 1999 + + * Merged changes from 5.005_58 + + * Fixed a bug in R_IBEFORE & R_IAFTER processing in Berkeley DB + 2 databases. + + * Added some of the examples in the POD into the test harness. + +1.67 6th June 1999 + + * Added DBM Filter documentation to DB_File.pm + + * Fixed DBM Filter code to work with 5.004 + + * A few instances of newSVpvn were used in 1.66. This isn't available in + Perl 5.004_04 or earlier. Replaced with newSVpv. + +1.66 15th March 1999 + + * Added DBM Filter code + +1.65 6th March 1999 + + * Fixed a bug in the recno PUSH logic. + * The BOOT version check now needs 2.3.4 when using Berkeley DB version 2 + +1.64 21st February 1999 + + * Tidied the 1.x to 2.x flag mapping code. + * Added a patch from Mark Kettenis to fix a flag + mapping problem with O_RDONLY on the Hurd + * Updated the message that db-recno.t prints when tests 51, 53 or 55 fail. + +1.63 19th December 1998 + + * Fix to allow DB 2.6.x to build with DB_File + * Documentation updated to use push,pop etc in the RECNO example & + to include the find_dup & del_dup methods. + +1.62 30th November 1998 + + Added hints/dynixptx.pl. + Fixed typemap -- 1.61 used PL_na instead of na + +1.61 19th November 1998 + + Added a note to README about how to build Berkeley DB 2.x when + using HP-UX. + Minor modifications to get the module to build with DB 2.5.x + Fixed a typo in the definition of O_RDONLY, courtesy of Mark Kettenis. + +1.60 + Changed the test to check for full tied array support + +1.59 + Updated the license section. + + Berkeley DB 2.4.10 disallows zero length keys. Tests 32 & 42 in + db-btree.t and test 27 in db-hash.t failed because of this change. + Those tests have been zapped. + + Added dbinfo to the distribution. + +1.58 + Tied Array support was enhanced in Perl 5.004_57. DB_File now + supports PUSH,POP,SHIFT,UNSHIFT & STORESIZE. + + Fixed a problem with the use of sv_setpvn. When the size is + specified as 0, it does a strlen on the data. This was ok for DB + 1.x, but isn't for DB 2.x. + +1.57 + If Perl has been compiled with Threads support,the symbol op will be + defined. This clashes with a field name in db.h, so it needs to be + #undef'ed before db.h is included. + +1.56 + Documented the Solaris 2.5 mutex bug + +1.55 + Merged 1.16 changes. + +1.54 + + Fixed a small bug in the test harness when run under win32 + The emulation of fd when useing DB 2.x was busted. + +1.53 + + Added DB_RENUMBER to flags for recno. + +1.52 + + Patch from Nick Ing-Simmons now allows DB_File to build on NT. + Merged 1.15 patch. + +1.51 + + Fixed the test harness so that it doesn't expect DB_File to have + been installed by the main Perl build. + + + Fixed a bug in mapping 1.x O_RDONLY flag to 2.x DB_RDONLY equivalent + +1.50 + + DB_File can now build with either DB 1.x or 2.x, but not both at + the same time. + +1.16 + + A harmless looking tab was causing Makefile.PL to fail on AIX 3.2.5 + + Small fix for the AIX strict C compiler XLC which doesn't like + __attribute__ being defined via proto.h and redefined via db.h. Fix + courtesy of Jarkko Hietaniemi. + +1.15 + + Patch from Gisle Aas to suppress "use of undefined + value" warning with db_get and db_seq. + + Patch from Gisle Aas to make DB_File export only the + O_* constants from Fcntl. + + Removed the DESTROY method from the DB_File::HASHINFO module. + + Previously DB_File hard-wired the class name of any object that it + created to "DB_File". This makes sub-classing difficult. Now + DB_File creats objects in the namespace of the package it has been + inherited into. + + +1.14 + + Made it illegal to tie an associative array to a RECNO database and + an ordinary array to a HASH or BTREE database. + +1.13 + + Minor changes to DB_FIle.xs and DB_File.pm + +1.12 + + Documented the incompatibility with version 2 of Berkeley DB. + +1.11 + + Documented the untie gotcha. + +1.10 + + Fixed fd method so that it still returns -1 for in-memory files + when db 1.86 is used. + +1.09 + + Minor bug fix in DB_File::HASHINFO, DB_File::RECNOINFO and + DB_File::BTREEINFO. + + Changed default mode to 0666. + +1.08 + + Documented operation of bval. + +1.07 + + Fixed bug with RECNO, where bval wasn't defaulting to "\n". + +1.06 + + Minor namespace cleanup: Localized PrintBtree. + +1.05 + + Made all scripts in the documentation strict and -w clean. + + Added logic to DB_File.xs to allow the module to be built after + Perl is installed. + +1.04 + + Minor documentation changes. + + Fixed a bug in hash_cb. Patches supplied by Dave Hammen, + . + + Fixed a bug with the constructors for DB_File::HASHINFO, + DB_File::BTREEINFO and DB_File::RECNOINFO. Also tidied up the + constructors to make them -w clean. + + Reworked part of the test harness to be more locale friendly. + +1.03 + + Documentation update. + + DB_File now imports the constants (O_RDWR, O_CREAT etc.) from Fcntl + automatically. + + The standard hash function exists is now supported. + + Modified the behavior of get_dup. When it returns an associative + array, the value is the count of the number of matching BTREE + values. + +1.02 + + Merged OS/2 specific code into DB_File.xs + + Removed some redundant code in DB_File.xs. + + Documentation update. + + Allow negative subscripts with RECNO interface. + + Changed the default flags from O_RDWR to O_CREAT|O_RDWR. + + The example code which showed how to lock a database needed a call + to sync added. Without it the resultant database file was empty. + + Added get_dup method. + +1.01 + + Fixed a core dump problem with SunOS. + + The return value from TIEHASH wasn't set to NULL when dbopen + returned an error. + +1.0 + + DB_File has been in use for over a year. To reflect that, the + version number has been incremented to 1.0. + + Added complete support for multiple concurrent callbacks. + + Using the push method on an empty list didn't work properly. This + has been fixed. + +0.3 + + Added prototype support for multiple btree compare callbacks. + +0.2 + + When DB_File is opening a database file it no longer terminates the + process if dbopen returned an error. This allows file protection + errors to be caught at run time. Thanks to Judith Grass + for spotting the bug. + +0.1 + + First Release. + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/DB_File.bs b/fastSum/resources/ROUGE/DB_File-1.835/DB_File.bs new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/DB_File-1.835/DB_File.c b/fastSum/resources/ROUGE/DB_File-1.835/DB_File.c new file mode 100644 index 0000000000000000000000000000000000000000..45cec903debad349c2a5d68d9aebf6f192fc68eb --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/DB_File.c @@ -0,0 +1,3152 @@ +/* + * This file was generated automatically by ExtUtils::ParseXS version 3.28 from the + * contents of DB_File.xs. Do not edit this file, edit DB_File.xs instead. + * + * ANY CHANGES MADE HERE WILL BE LOST! + * + */ + +#line 1 "DB_File.xs" +/* + + DB_File.xs -- Perl 5 interface to Berkeley DB + + Written by Paul Marquess + + All comments/suggestions/problems are welcome + + Copyright (c) 1995-2014 Paul Marquess. All rights reserved. + This program is free software; you can redistribute it and/or + modify it under the same terms as Perl itself. + + Changes: + 0.1 - Initial Release + 0.2 - No longer bombs out if dbopen returns an error. + 0.3 - Added some support for multiple btree compares + 1.0 - Complete support for multiple callbacks added. + Fixed a problem with pushing a value onto an empty list. + 1.01 - Fixed a SunOS core dump problem. + The return value from TIEHASH wasn't set to NULL when + dbopen returned an error. + 1.02 - Use ALIAS to define TIEARRAY. + Removed some redundant commented code. + Merged OS2 code into the main distribution. + Allow negative subscripts with RECNO interface. + Changed the default flags to O_CREAT|O_RDWR + 1.03 - Added EXISTS + 1.04 - fixed a couple of bugs in hash_cb. Patches supplied by + Dave Hammen, hammen@gothamcity.jsc.nasa.gov + 1.05 - Added logic to allow prefix & hash types to be specified via + Makefile.PL + 1.06 - Minor namespace cleanup: Localized PrintBtree. + 1.07 - Fixed bug with RECNO, where bval wasn't defaulting to "\n". + 1.08 - No change to DB_File.xs + 1.09 - Default mode for dbopen changed to 0666 + 1.10 - Fixed fd method so that it still returns -1 for + in-memory files when db 1.86 is used. + 1.11 - No change to DB_File.xs + 1.12 - No change to DB_File.xs + 1.13 - Tidied up a few casts. + 1.14 - Made it illegal to tie an associative array to a RECNO + database and an ordinary array to a HASH or BTREE database. + 1.50 - Make work with both DB 1.x or DB 2.x + 1.51 - Fixed a bug in mapping 1.x O_RDONLY flag to 2.x DB_RDONLY equivalent + 1.52 - Patch from Gisle Aas to suppress "use of + undefined value" warning with db_get and db_seq. + 1.53 - Added DB_RENUMBER to flags for recno. + 1.54 - Fixed bug in the fd method + 1.55 - Fix for AIX from Jarkko Hietaniemi + 1.56 - No change to DB_File.xs + 1.57 - added the #undef op to allow building with Threads support. + 1.58 - Fixed a problem with the use of sv_setpvn. When the + size is specified as 0, it does a strlen on the data. + This was ok for DB 1.x, but isn't for DB 2.x. + 1.59 - No change to DB_File.xs + 1.60 - Some code tidy up + 1.61 - added flagSet macro for DB 2.5.x + fixed typo in O_RDONLY test. + 1.62 - No change to DB_File.xs + 1.63 - Fix to alllow DB 2.6.x to build. + 1.64 - Tidied up the 1.x to 2.x flags mapping code. + Added a patch from Mark Kettenis + to fix a flag mapping problem with O_RDONLY on the Hurd + 1.65 - Fixed a bug in the PUSH logic. + Added BOOT check that using 2.3.4 or greater + 1.66 - Added DBM filter code + 1.67 - Backed off the use of newSVpvn. + Fixed DBM Filter code for Perl 5.004. + Fixed a small memory leak in the filter code. + 1.68 - fixed backward compatibility bug with R_IAFTER & R_IBEFORE + merged in the 5.005_58 changes + 1.69 - fixed a bug in push -- DB_APPEND wasn't working properly. + Fixed the R_SETCURSOR bug introduced in 1.68 + Added a new Perl variable $DB_File::db_ver + 1.70 - Initialise $DB_File::db_ver and $DB_File::db_version with + GV_ADD|GV_ADDMULT -- bug spotted by Nick Ing-Simmons. + Added a BOOT check to test for equivalent versions of db.h & + libdb.a/so. + 1.71 - Support for Berkeley DB version 3. + Support for Berkeley DB 2/3's backward compatibility mode. + Rewrote push + 1.72 - No change to DB_File.xs + 1.73 - No change to DB_File.xs + 1.74 - A call to open needed parenthesised to stop it clashing + with a win32 macro. + Added Perl core patches 7703 & 7801. + 1.75 - Fixed Perl core patch 7703. + Added support to allow DB_File to be built with + Berkeley DB 3.2 -- btree_compare, btree_prefix and hash_cb + needed to be changed. + 1.76 - No change to DB_File.xs + 1.77 - Tidied up a few types used in calling newSVpvn. + 1.78 - Core patch 10335, 10372, 10534, 10549, 11051 included. + 1.79 - NEXTKEY ignores the input key. + Added lots of casts + 1.800 - Moved backward compatibility code into ppport.h. + Use the new constants code. + 1.801 - No change to DB_File.xs + 1.802 - No change to DB_File.xs + 1.803 - FETCH, STORE & DELETE don't map the flags parameter + into the equivalent Berkeley DB function anymore. + 1.804 - no change. + 1.805 - recursion detection added to the callbacks + Support for 4.1.X added. + Filter code can now cope with read-only $_ + 1.806 - recursion detection beefed up. + 1.807 - no change + 1.808 - leak fixed in ParseOpenInfo + 1.809 - no change + 1.810 - no change + 1.811 - no change + 1.812 - no change + 1.813 - no change + 1.814 - no change + 1.814 - C++ casting fixes + +*/ + +#define PERL_NO_GET_CONTEXT +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#ifdef _NOT_CORE +# include "ppport.h" +#endif + +int DB_File___unused() { return 0; } + +/* Mention DB_VERSION_MAJOR_CFG, DB_VERSION_MINOR_CFG, and + DB_VERSION_PATCH_CFG here so that Configure pulls them all in. */ + +/* Being the Berkeley DB we prefer the (which will be + * shortly #included by the ) __attribute__ to the possibly + * already defined __attribute__, for example by GNUC or by Perl. */ + +/* #if DB_VERSION_MAJOR_CFG < 2 */ +#ifndef DB_VERSION_MAJOR +# undef __attribute__ +#endif + +#ifdef COMPAT185 +# include +#else + +/* Uncomment one of the lines below */ +/* See the section "At least one secondary cursor must be specified to DB->join" + in the README file for the circumstances where you need to uncomment one + of the two lines below. +*/ + +/* #define time_t __time64_t */ +/* #define time_t __time32_t */ + +# include +#endif + +#ifndef PERL_UNUSED_ARG +# define PERL_UNUSED_ARG(x) ((void)x) +#endif + +/* Wall starts with 5.7.x */ + +#if PERL_REVISION > 5 || (PERL_REVISION == 5 && PERL_VERSION >= 7) + +/* Since we dropped the gccish definition of __attribute__ we will want + * to redefine dNOOP, however (so that dTHX continues to work). Yes, + * all this means that we can't do attribute checking on the DB_File, + * boo, hiss. */ +# ifndef DB_VERSION_MAJOR + +# undef dNOOP +# ifdef __cplusplus +# define dNOOP (void)0 +# else +# define dNOOP extern int DB_File___notused() +# endif + + /* Ditto for dXSARGS. */ +# undef dXSARGS +# define dXSARGS \ + dSP; dMARK; \ + I32 ax = mark - PL_stack_base + 1; \ + I32 items = sp - mark + +# endif + +/* avoid -Wall; DB_File xsubs never make use of `ix' setup for ALIASes */ +# undef dXSI32 +# define dXSI32 dNOOP + +#endif /* Perl >= 5.7 */ + +#include + +/* #define TRACE */ + +#ifdef TRACE +# define Trace(x) printf x +#else +# define Trace(x) +#endif + + +#define DBT_clear(x) Zero(&x, 1, DBT) ; + +#ifdef DB_VERSION_MAJOR + +#if DB_VERSION_MAJOR == 2 +# define BERKELEY_DB_1_OR_2 +#endif + +#if DB_VERSION_MAJOR > 3 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR >= 2) +# define AT_LEAST_DB_3_2 +#endif + +#if DB_VERSION_MAJOR > 3 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR >= 3) +# define AT_LEAST_DB_3_3 +#endif + +#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) +# define AT_LEAST_DB_4_1 +#endif + +#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3) +# define AT_LEAST_DB_4_3 +#endif + +#if DB_VERSION_MAJOR >= 6 +# define AT_LEAST_DB_6_0 +#endif + +#ifdef AT_LEAST_DB_3_3 +# define WANT_ERROR +#endif + +/* map version 2 features & constants onto their version 1 equivalent */ + +#ifdef DB_Prefix_t +# undef DB_Prefix_t +#endif +#define DB_Prefix_t size_t + +#ifdef DB_Hash_t +# undef DB_Hash_t +#endif +#define DB_Hash_t u_int32_t + +/* DBTYPE stays the same */ +/* HASHINFO, RECNOINFO and BTREEINFO map to DB_INFO */ +#if DB_VERSION_MAJOR == 2 + typedef DB_INFO INFO ; +#else /* DB_VERSION_MAJOR > 2 */ +# define DB_FIXEDLEN (0x8000) +#endif /* DB_VERSION_MAJOR == 2 */ + +/* version 2 has db_recno_t in place of recno_t */ +typedef db_recno_t recno_t; + + +#define R_CURSOR DB_SET_RANGE +#define R_FIRST DB_FIRST +#define R_IAFTER DB_AFTER +#define R_IBEFORE DB_BEFORE +#define R_LAST DB_LAST +#define R_NEXT DB_NEXT +#define R_NOOVERWRITE DB_NOOVERWRITE +#define R_PREV DB_PREV + +#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5 +# define R_SETCURSOR 0x800000 +#else +# define R_SETCURSOR (-100) +#endif + +#define R_RECNOSYNC 0 +#define R_FIXEDLEN DB_FIXEDLEN +#define R_DUP DB_DUP + + +#define db_HA_hash h_hash +#define db_HA_ffactor h_ffactor +#define db_HA_nelem h_nelem +#define db_HA_bsize db_pagesize +#define db_HA_cachesize db_cachesize +#define db_HA_lorder db_lorder + +#define db_BT_compare bt_compare +#define db_BT_prefix bt_prefix +#define db_BT_flags flags +#define db_BT_psize db_pagesize +#define db_BT_cachesize db_cachesize +#define db_BT_lorder db_lorder +#define db_BT_maxkeypage +#define db_BT_minkeypage + + +#define db_RE_reclen re_len +#define db_RE_flags flags +#define db_RE_bval re_pad +#define db_RE_bfname re_source +#define db_RE_psize db_pagesize +#define db_RE_cachesize db_cachesize +#define db_RE_lorder db_lorder + +#define TXN NULL, + +#define do_SEQ(db, key, value, flag) (db->cursor->c_get)(db->cursor, &key, &value, flag) + + +#define DBT_flags(x) x.flags = 0 +#define DB_flags(x, v) x |= v + +#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5 +# define flagSet(flags, bitmask) ((flags) & (bitmask)) +#else +# define flagSet(flags, bitmask) (((flags) & DB_OPFLAGS_MASK) == (u_int)(bitmask)) +#endif + +#else /* db version 1.x */ + +#define BERKELEY_DB_1 +#define BERKELEY_DB_1_OR_2 + +typedef union INFO { + HASHINFO hash ; + RECNOINFO recno ; + BTREEINFO btree ; + } INFO ; + + +#ifdef mDB_Prefix_t +# ifdef DB_Prefix_t +# undef DB_Prefix_t +# endif +# define DB_Prefix_t mDB_Prefix_t +#endif + +#ifdef mDB_Hash_t +# ifdef DB_Hash_t +# undef DB_Hash_t +# endif +# define DB_Hash_t mDB_Hash_t +#endif + +#define db_HA_hash hash.hash +#define db_HA_ffactor hash.ffactor +#define db_HA_nelem hash.nelem +#define db_HA_bsize hash.bsize +#define db_HA_cachesize hash.cachesize +#define db_HA_lorder hash.lorder + +#define db_BT_compare btree.compare +#define db_BT_prefix btree.prefix +#define db_BT_flags btree.flags +#define db_BT_psize btree.psize +#define db_BT_cachesize btree.cachesize +#define db_BT_lorder btree.lorder +#define db_BT_maxkeypage btree.maxkeypage +#define db_BT_minkeypage btree.minkeypage + +#define db_RE_reclen recno.reclen +#define db_RE_flags recno.flags +#define db_RE_bval recno.bval +#define db_RE_bfname recno.bfname +#define db_RE_psize recno.psize +#define db_RE_cachesize recno.cachesize +#define db_RE_lorder recno.lorder + +#define TXN + +#define do_SEQ(db, key, value, flag) (db->dbp->seq)(db->dbp, &key, &value, flag) +#define DBT_flags(x) +#define DB_flags(x, v) +#define flagSet(flags, bitmask) ((flags) & (bitmask)) + +#endif /* db version 1 */ + + + +#define db_DELETE(db, key, flags) ((db->dbp)->del)(db->dbp, TXN &key, 0) +#define db_STORE(db, key, value, flags) ((db->dbp)->put)(db->dbp, TXN &key, &value, 0) +#define db_FETCH(db, key, flags) ((db->dbp)->get)(db->dbp, TXN &key, &value, 0) + +#define db_sync(db, flags) ((db->dbp)->sync)(db->dbp, flags) +#define db_get(db, key, value, flags) ((db->dbp)->get)(db->dbp, TXN &key, &value, flags) + +#ifdef DB_VERSION_MAJOR +#define db_DESTROY(db) (!db->aborted && ( db->cursor->c_close(db->cursor),\ + (db->dbp->close)(db->dbp, 0) )) +#define db_close(db) ((db->dbp)->close)(db->dbp, 0) +#define db_del(db, key, flags) (flagSet(flags, R_CURSOR) \ + ? ((db->cursor)->c_del)(db->cursor, 0) \ + : ((db->dbp)->del)(db->dbp, NULL, &key, flags) ) + +#else /* ! DB_VERSION_MAJOR */ + +#define db_DESTROY(db) (!db->aborted && ((db->dbp)->close)(db->dbp)) +#define db_close(db) ((db->dbp)->close)(db->dbp) +#define db_del(db, key, flags) ((db->dbp)->del)(db->dbp, &key, flags) +#define db_put(db, key, value, flags) ((db->dbp)->put)(db->dbp, &key, &value, flags) + +#endif /* ! DB_VERSION_MAJOR */ + + +#define db_seq(db, key, value, flags) do_SEQ(db, key, value, flags) + +typedef struct { + DBTYPE type ; + DB * dbp ; + SV * compare ; + bool in_compare ; + SV * prefix ; + bool in_prefix ; + SV * hash ; + bool in_hash ; + bool aborted ; + int in_memory ; +#ifdef BERKELEY_DB_1_OR_2 + INFO info ; +#endif +#ifdef DB_VERSION_MAJOR + DBC * cursor ; +#endif + SV * filter_fetch_key ; + SV * filter_store_key ; + SV * filter_fetch_value ; + SV * filter_store_value ; + int filtering ; + + } DB_File_type; + +typedef DB_File_type * DB_File ; +typedef DBT DBTKEY ; + +#define my_sv_setpvn(sv, d, s) sv_setpvn(sv, (s ? d : (const char *)""), s) + +#define OutputValue(arg, name) \ + { if (RETVAL == 0) { \ + SvGETMAGIC(arg) ; \ + my_sv_setpvn(arg, (const char *)name.data, name.size) ; \ + TAINT; \ + SvTAINTED_on(arg); \ + SvUTF8_off(arg); \ + DBM_ckFilter(arg, filter_fetch_value,"filter_fetch_value") ; \ + } \ + } + +#define OutputKey(arg, name) \ + { if (RETVAL == 0) \ + { \ + SvGETMAGIC(arg) ; \ + if (db->type != DB_RECNO) { \ + my_sv_setpvn(arg, (const char *)name.data, name.size); \ + } \ + else \ + sv_setiv(arg, (I32)*(I32*)name.data - 1); \ + TAINT; \ + SvTAINTED_on(arg); \ + SvUTF8_off(arg); \ + DBM_ckFilter(arg, filter_fetch_key,"filter_fetch_key") ; \ + } \ + } + +#define my_SvUV32(sv) ((u_int32_t)SvUV(sv)) + +#ifdef CAN_PROTOTYPE +extern void __getBerkeleyDBInfo(void); +#endif + +/* Internal Global Data */ + +#define MY_CXT_KEY "DB_File::_guts" XS_VERSION + +typedef struct { + recno_t x_Value; + recno_t x_zero; + DB_File x_CurrentDB; + DBTKEY x_empty; +} my_cxt_t; + +START_MY_CXT + +#define Value (MY_CXT.x_Value) +#define zero (MY_CXT.x_zero) +#define CurrentDB (MY_CXT.x_CurrentDB) +#define empty (MY_CXT.x_empty) + +#define ERR_BUFF "DB_File::Error" + +#ifdef DB_VERSION_MAJOR + +static int +#ifdef CAN_PROTOTYPE +db_put(DB_File db, DBTKEY key, DBT value, u_int flags) +#else +db_put(db, key, value, flags) +DB_File db ; +DBTKEY key ; +DBT value ; +u_int flags ; +#endif +{ + int status ; + + if (flagSet(flags, R_IAFTER) || flagSet(flags, R_IBEFORE)) { + DBC * temp_cursor ; + DBT l_key, l_value; + +#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 6 + if (((db->dbp)->cursor)(db->dbp, NULL, &temp_cursor) != 0) +#else + if (((db->dbp)->cursor)(db->dbp, NULL, &temp_cursor, 0) != 0) +#endif + return (-1) ; + + memset(&l_key, 0, sizeof(l_key)); + l_key.data = key.data; + l_key.size = key.size; + memset(&l_value, 0, sizeof(l_value)); + l_value.data = value.data; + l_value.size = value.size; + + if ( temp_cursor->c_get(temp_cursor, &l_key, &l_value, DB_SET) != 0) { + (void)temp_cursor->c_close(temp_cursor); + return (-1); + } + + status = temp_cursor->c_put(temp_cursor, &key, &value, flags); + (void)temp_cursor->c_close(temp_cursor); + + return (status) ; + } + + + if (flagSet(flags, R_CURSOR)) { + return ((db->cursor)->c_put)(db->cursor, &key, &value, DB_CURRENT); + } + + if (flagSet(flags, R_SETCURSOR)) { + if ((db->dbp)->put(db->dbp, NULL, &key, &value, 0) != 0) + return -1 ; + return ((db->cursor)->c_get)(db->cursor, &key, &value, DB_SET_RANGE); + + } + + return ((db->dbp)->put)(db->dbp, NULL, &key, &value, flags) ; + +} + +#endif /* DB_VERSION_MAJOR */ + +static void +tidyUp(DB_File db) +{ + db->aborted = TRUE ; +} + + +static int + +#ifdef AT_LEAST_DB_6_0 +#ifdef CAN_PROTOTYPE +btree_compare(DB * db, const DBT *key1, const DBT *key2, size_t* locp) +#else +btree_compare(db, key1, key2, locp) +DB * db ; +const DBT * key1 ; +const DBT * key2 ; +size_t* locp; +#endif /* CAN_PROTOTYPE */ + +#else /* Berkeley DB < 6.0 */ +#ifdef AT_LEAST_DB_3_2 + +#ifdef CAN_PROTOTYPE +btree_compare(DB * db, const DBT *key1, const DBT *key2) +#else +btree_compare(db, key1, key2) +DB * db ; +const DBT * key1 ; +const DBT * key2 ; +#endif /* CAN_PROTOTYPE */ + +#else /* Berkeley DB < 3.2 */ + +#ifdef CAN_PROTOTYPE +btree_compare(const DBT *key1, const DBT *key2) +#else +btree_compare(key1, key2) +const DBT * key1 ; +const DBT * key2 ; +#endif + +#endif +#endif + +{ +#ifdef dTHX + dTHX; +#endif + dSP ; + dMY_CXT ; + void * data1, * data2 ; + int retval ; + int count ; + +#ifdef AT_LEAST_DB_3_2 + PERL_UNUSED_ARG(db); +#endif + + if (CurrentDB->in_compare) { + tidyUp(CurrentDB); + croak ("DB_File btree_compare: recursion detected\n") ; + } + + data1 = (char *) key1->data ; + data2 = (char *) key2->data ; + +#ifndef newSVpvn + /* As newSVpv will assume that the data pointer is a null terminated C + string if the size parameter is 0, make sure that data points to an + empty string if the length is 0 + */ + if (key1->size == 0) + data1 = "" ; + if (key2->size == 0) + data2 = "" ; +#endif + + ENTER ; + SAVETMPS; + SAVESPTR(CurrentDB); + CurrentDB->in_compare = FALSE; + SAVEINT(CurrentDB->in_compare); + CurrentDB->in_compare = TRUE; + + PUSHMARK(SP) ; + EXTEND(SP,2) ; + PUSHs(sv_2mortal(newSVpvn((const char*)data1,key1->size))); + PUSHs(sv_2mortal(newSVpvn((const char*)data2,key2->size))); + PUTBACK ; + + count = perl_call_sv(CurrentDB->compare, G_SCALAR); + + SPAGAIN ; + + if (count != 1){ + tidyUp(CurrentDB); + croak ("DB_File btree_compare: expected 1 return value from compare sub, got %d\n", count) ; + } + + retval = POPi ; + + PUTBACK ; + FREETMPS ; + LEAVE ; + + return (retval) ; + +} + +static DB_Prefix_t +#ifdef AT_LEAST_DB_3_2 + +#ifdef CAN_PROTOTYPE +btree_prefix(DB * db, const DBT *key1, const DBT *key2) +#else +btree_prefix(db, key1, key2) +Db * db ; +const DBT * key1 ; +const DBT * key2 ; +#endif + +#else /* Berkeley DB < 3.2 */ + +#ifdef CAN_PROTOTYPE +btree_prefix(const DBT *key1, const DBT *key2) +#else +btree_prefix(key1, key2) +const DBT * key1 ; +const DBT * key2 ; +#endif + +#endif +{ +#ifdef dTHX + dTHX; +#endif + dSP ; + dMY_CXT ; + char * data1, * data2 ; + int retval ; + int count ; + +#ifdef AT_LEAST_DB_3_2 + PERL_UNUSED_ARG(db); +#endif + + if (CurrentDB->in_prefix){ + tidyUp(CurrentDB); + croak ("DB_File btree_prefix: recursion detected\n") ; + } + + data1 = (char *) key1->data ; + data2 = (char *) key2->data ; + +#ifndef newSVpvn + /* As newSVpv will assume that the data pointer is a null terminated C + string if the size parameter is 0, make sure that data points to an + empty string if the length is 0 + */ + if (key1->size == 0) + data1 = "" ; + if (key2->size == 0) + data2 = "" ; +#endif + + ENTER ; + SAVETMPS; + SAVESPTR(CurrentDB); + CurrentDB->in_prefix = FALSE; + SAVEINT(CurrentDB->in_prefix); + CurrentDB->in_prefix = TRUE; + + PUSHMARK(SP) ; + EXTEND(SP,2) ; + PUSHs(sv_2mortal(newSVpvn(data1,key1->size))); + PUSHs(sv_2mortal(newSVpvn(data2,key2->size))); + PUTBACK ; + + count = perl_call_sv(CurrentDB->prefix, G_SCALAR); + + SPAGAIN ; + + if (count != 1){ + tidyUp(CurrentDB); + croak ("DB_File btree_prefix: expected 1 return value from prefix sub, got %d\n", count) ; + } + + retval = POPi ; + + PUTBACK ; + FREETMPS ; + LEAVE ; + + return (retval) ; +} + + +#ifdef BERKELEY_DB_1 +# define HASH_CB_SIZE_TYPE size_t +#else +# define HASH_CB_SIZE_TYPE u_int32_t +#endif + +static DB_Hash_t +#ifdef AT_LEAST_DB_3_2 + +#ifdef CAN_PROTOTYPE +hash_cb(DB * db, const void *data, u_int32_t size) +#else +hash_cb(db, data, size) +DB * db ; +const void * data ; +HASH_CB_SIZE_TYPE size ; +#endif + +#else /* Berkeley DB < 3.2 */ + +#ifdef CAN_PROTOTYPE +hash_cb(const void *data, HASH_CB_SIZE_TYPE size) +#else +hash_cb(data, size) +const void * data ; +HASH_CB_SIZE_TYPE size ; +#endif + +#endif +{ +#ifdef dTHX + dTHX; +#endif + dSP ; + dMY_CXT; + int retval = 0; + int count ; + +#ifdef AT_LEAST_DB_3_2 + PERL_UNUSED_ARG(db); +#endif + + if (CurrentDB->in_hash){ + tidyUp(CurrentDB); + croak ("DB_File hash callback: recursion detected\n") ; + } + +#ifndef newSVpvn + if (size == 0) + data = "" ; +#endif + + /* DGH - Next two lines added to fix corrupted stack problem */ + ENTER ; + SAVETMPS; + SAVESPTR(CurrentDB); + CurrentDB->in_hash = FALSE; + SAVEINT(CurrentDB->in_hash); + CurrentDB->in_hash = TRUE; + + PUSHMARK(SP) ; + + + XPUSHs(sv_2mortal(newSVpvn((char*)data,size))); + PUTBACK ; + + count = perl_call_sv(CurrentDB->hash, G_SCALAR); + + SPAGAIN ; + + if (count != 1){ + tidyUp(CurrentDB); + croak ("DB_File hash_cb: expected 1 return value from hash sub, got %d\n", count) ; + } + + retval = POPi ; + + PUTBACK ; + FREETMPS ; + LEAVE ; + + return (retval) ; +} + +#ifdef WANT_ERROR + +static void +#ifdef AT_LEAST_DB_4_3 +db_errcall_cb(const DB_ENV* dbenv, const char * db_errpfx, const char * buffer) +#else +db_errcall_cb(const char * db_errpfx, char * buffer) +#endif +{ +#ifdef dTHX + dTHX; +#endif + SV * sv = perl_get_sv(ERR_BUFF, FALSE) ; +#ifdef AT_LEAST_DB_4_3 + PERL_UNUSED_ARG(dbenv); +#endif + if (sv) { + if (db_errpfx) + sv_setpvf(sv, "%s: %s", db_errpfx, buffer) ; + else + sv_setpv(sv, buffer) ; + } +} +#endif + +#if defined(TRACE) && defined(BERKELEY_DB_1_OR_2) + +static void +#ifdef CAN_PROTOTYPE +PrintHash(INFO *hash) +#else +PrintHash(hash) +INFO * hash ; +#endif +{ + printf ("HASH Info\n") ; + printf (" hash = %s\n", + (hash->db_HA_hash != NULL ? "redefined" : "default")) ; + printf (" bsize = %d\n", hash->db_HA_bsize) ; + printf (" ffactor = %d\n", hash->db_HA_ffactor) ; + printf (" nelem = %d\n", hash->db_HA_nelem) ; + printf (" cachesize = %d\n", hash->db_HA_cachesize) ; + printf (" lorder = %d\n", hash->db_HA_lorder) ; + +} + +static void +#ifdef CAN_PROTOTYPE +PrintRecno(INFO *recno) +#else +PrintRecno(recno) +INFO * recno ; +#endif +{ + printf ("RECNO Info\n") ; + printf (" flags = %d\n", recno->db_RE_flags) ; + printf (" cachesize = %d\n", recno->db_RE_cachesize) ; + printf (" psize = %d\n", recno->db_RE_psize) ; + printf (" lorder = %d\n", recno->db_RE_lorder) ; + printf (" reclen = %lu\n", (unsigned long)recno->db_RE_reclen) ; + printf (" bval = %d 0x%x\n", recno->db_RE_bval, recno->db_RE_bval) ; + printf (" bfname = %d [%s]\n", recno->db_RE_bfname, recno->db_RE_bfname) ; +} + +static void +#ifdef CAN_PROTOTYPE +PrintBtree(INFO *btree) +#else +PrintBtree(btree) +INFO * btree ; +#endif +{ + printf ("BTREE Info\n") ; + printf (" compare = %s\n", + (btree->db_BT_compare ? "redefined" : "default")) ; + printf (" prefix = %s\n", + (btree->db_BT_prefix ? "redefined" : "default")) ; + printf (" flags = %d\n", btree->db_BT_flags) ; + printf (" cachesize = %d\n", btree->db_BT_cachesize) ; + printf (" psize = %d\n", btree->db_BT_psize) ; +#ifndef DB_VERSION_MAJOR + printf (" maxkeypage = %d\n", btree->db_BT_maxkeypage) ; + printf (" minkeypage = %d\n", btree->db_BT_minkeypage) ; +#endif + printf (" lorder = %d\n", btree->db_BT_lorder) ; +} + +#else + +#define PrintRecno(recno) +#define PrintHash(hash) +#define PrintBtree(btree) + +#endif /* TRACE */ + + +static I32 +#ifdef CAN_PROTOTYPE +GetArrayLength(pTHX_ DB_File db) +#else +GetArrayLength(db) +DB_File db ; +#endif +{ + DBT key ; + DBT value ; + int RETVAL ; + + DBT_clear(key) ; + DBT_clear(value) ; + RETVAL = do_SEQ(db, key, value, R_LAST) ; + if (RETVAL == 0) + RETVAL = *(I32 *)key.data ; + else /* No key means empty file */ + RETVAL = 0 ; + + return ((I32)RETVAL) ; +} + +static recno_t +#ifdef CAN_PROTOTYPE +GetRecnoKey(pTHX_ DB_File db, I32 value) +#else +GetRecnoKey(db, value) +DB_File db ; +I32 value ; +#endif +{ + if (value < 0) { + /* Get the length of the array */ + I32 length = GetArrayLength(aTHX_ db) ; + + /* check for attempt to write before start of array */ + if (length + value + 1 <= 0) { + tidyUp(db); + croak("Modification of non-creatable array value attempted, subscript %ld", (long)value) ; + } + + value = length + value + 1 ; + } + else + ++ value ; + + return value ; +} + + +static DB_File +#ifdef CAN_PROTOTYPE +ParseOpenInfo(pTHX_ int isHASH, char *name, int flags, int mode, SV *sv) +#else +ParseOpenInfo(isHASH, name, flags, mode, sv) +int isHASH ; +char * name ; +int flags ; +int mode ; +SV * sv ; +#endif +{ + +#ifdef BERKELEY_DB_1_OR_2 /* Berkeley DB Version 1 or 2 */ + + SV ** svp; + HV * action ; + DB_File RETVAL = (DB_File)safemalloc(sizeof(DB_File_type)) ; + void * openinfo = NULL ; + INFO * info = &RETVAL->info ; + STRLEN n_a; + dMY_CXT; + +#ifdef TRACE + printf("In ParseOpenInfo name=[%s] flags=[%d] mode=[%d] SV NULL=[%d]\n", + name, flags, mode, sv == NULL) ; +#endif + Zero(RETVAL, 1, DB_File_type) ; + + /* Default to HASH */ + RETVAL->filtering = 0 ; + RETVAL->filter_fetch_key = RETVAL->filter_store_key = + RETVAL->filter_fetch_value = RETVAL->filter_store_value = + RETVAL->hash = RETVAL->compare = RETVAL->prefix = NULL ; + RETVAL->type = DB_HASH ; + + /* DGH - Next line added to avoid SEGV on existing hash DB */ + CurrentDB = RETVAL; + + /* fd for 1.86 hash in memory files doesn't return -1 like 1.85 */ + RETVAL->in_memory = (name == NULL) ; + + if (sv) + { + if (! SvROK(sv) ) + croak ("type parameter is not a reference") ; + + svp = hv_fetch( (HV*)SvRV(sv), "GOT", 3, FALSE) ; + if (svp && SvOK(*svp)) + action = (HV*) SvRV(*svp) ; + else + croak("internal error") ; + + if (sv_isa(sv, "DB_File::HASHINFO")) + { + + if (!isHASH) + croak("DB_File can only tie an associative array to a DB_HASH database") ; + + RETVAL->type = DB_HASH ; + openinfo = (void*)info ; + + svp = hv_fetch(action, "hash", 4, FALSE); + + if (svp && SvOK(*svp)) + { + info->db_HA_hash = hash_cb ; + RETVAL->hash = newSVsv(*svp) ; + } + else + info->db_HA_hash = NULL ; + + svp = hv_fetch(action, "ffactor", 7, FALSE); + info->db_HA_ffactor = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "nelem", 5, FALSE); + info->db_HA_nelem = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "bsize", 5, FALSE); + info->db_HA_bsize = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "cachesize", 9, FALSE); + info->db_HA_cachesize = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "lorder", 6, FALSE); + info->db_HA_lorder = svp ? SvIV(*svp) : 0; + + PrintHash(info) ; + } + else if (sv_isa(sv, "DB_File::BTREEINFO")) + { + if (!isHASH) + croak("DB_File can only tie an associative array to a DB_BTREE database"); + + RETVAL->type = DB_BTREE ; + openinfo = (void*)info ; + + svp = hv_fetch(action, "compare", 7, FALSE); + if (svp && SvOK(*svp)) + { + info->db_BT_compare = btree_compare ; + RETVAL->compare = newSVsv(*svp) ; + } + else + info->db_BT_compare = NULL ; + + svp = hv_fetch(action, "prefix", 6, FALSE); + if (svp && SvOK(*svp)) + { + info->db_BT_prefix = btree_prefix ; + RETVAL->prefix = newSVsv(*svp) ; + } + else + info->db_BT_prefix = NULL ; + + svp = hv_fetch(action, "flags", 5, FALSE); + info->db_BT_flags = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "cachesize", 9, FALSE); + info->db_BT_cachesize = svp ? SvIV(*svp) : 0; + +#ifndef DB_VERSION_MAJOR + svp = hv_fetch(action, "minkeypage", 10, FALSE); + info->btree.minkeypage = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "maxkeypage", 10, FALSE); + info->btree.maxkeypage = svp ? SvIV(*svp) : 0; +#endif + + svp = hv_fetch(action, "psize", 5, FALSE); + info->db_BT_psize = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "lorder", 6, FALSE); + info->db_BT_lorder = svp ? SvIV(*svp) : 0; + + PrintBtree(info) ; + + } + else if (sv_isa(sv, "DB_File::RECNOINFO")) + { + if (isHASH) + croak("DB_File can only tie an array to a DB_RECNO database"); + + RETVAL->type = DB_RECNO ; + openinfo = (void *)info ; + + info->db_RE_flags = 0 ; + + svp = hv_fetch(action, "flags", 5, FALSE); + info->db_RE_flags = (u_long) (svp ? SvIV(*svp) : 0); + + svp = hv_fetch(action, "reclen", 6, FALSE); + info->db_RE_reclen = (size_t) (svp ? SvIV(*svp) : 0); + + svp = hv_fetch(action, "cachesize", 9, FALSE); + info->db_RE_cachesize = (u_int) (svp ? SvIV(*svp) : 0); + + svp = hv_fetch(action, "psize", 5, FALSE); + info->db_RE_psize = (u_int) (svp ? SvIV(*svp) : 0); + + svp = hv_fetch(action, "lorder", 6, FALSE); + info->db_RE_lorder = (int) (svp ? SvIV(*svp) : 0); + +#ifdef DB_VERSION_MAJOR + info->re_source = name ; + name = NULL ; +#endif + svp = hv_fetch(action, "bfname", 6, FALSE); + if (svp && SvOK(*svp)) { + char * ptr = SvPV(*svp,n_a) ; +#ifdef DB_VERSION_MAJOR + name = (char*) n_a ? ptr : NULL ; +#else + info->db_RE_bfname = (char*) (n_a ? ptr : NULL) ; +#endif + } + else +#ifdef DB_VERSION_MAJOR + name = NULL ; +#else + info->db_RE_bfname = NULL ; +#endif + + svp = hv_fetch(action, "bval", 4, FALSE); +#ifdef DB_VERSION_MAJOR + if (svp && SvOK(*svp)) + { + int value ; + if (SvPOK(*svp)) + value = (int)*SvPV(*svp, n_a) ; + else + value = SvIV(*svp) ; + + if (info->flags & DB_FIXEDLEN) { + info->re_pad = value ; + info->flags |= DB_PAD ; + } + else { + info->re_delim = value ; + info->flags |= DB_DELIMITER ; + } + + } +#else + if (svp && SvOK(*svp)) + { + if (SvPOK(*svp)) + info->db_RE_bval = (u_char)*SvPV(*svp, n_a) ; + else + info->db_RE_bval = (u_char)(unsigned long) SvIV(*svp) ; + DB_flags(info->flags, DB_DELIMITER) ; + + } + else + { + if (info->db_RE_flags & R_FIXEDLEN) + info->db_RE_bval = (u_char) ' ' ; + else + info->db_RE_bval = (u_char) '\n' ; + DB_flags(info->flags, DB_DELIMITER) ; + } +#endif + +#ifdef DB_RENUMBER + info->flags |= DB_RENUMBER ; +#endif + + PrintRecno(info) ; + } + else + croak("type is not of type DB_File::HASHINFO, DB_File::BTREEINFO or DB_File::RECNOINFO"); + } + + + /* OS2 Specific Code */ +#ifdef OS2 +#ifdef __EMX__ + flags |= O_BINARY; +#endif /* __EMX__ */ +#endif /* OS2 */ + +#ifdef DB_VERSION_MAJOR + + { + int Flags = 0 ; + int status ; + + /* Map 1.x flags to 2.x flags */ + if ((flags & O_CREAT) == O_CREAT) + Flags |= DB_CREATE ; + +#if O_RDONLY == 0 + if (flags == O_RDONLY) +#else + if ((flags & O_RDONLY) == O_RDONLY && (flags & O_RDWR) != O_RDWR) +#endif + Flags |= DB_RDONLY ; + +#ifdef O_TRUNC + if ((flags & O_TRUNC) == O_TRUNC) + Flags |= DB_TRUNCATE ; +#endif + + status = db_open(name, RETVAL->type, Flags, mode, NULL, (DB_INFO*)openinfo, &RETVAL->dbp) ; + if (status == 0) +#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 6 + status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor) ; +#else + status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor, + 0) ; +#endif + + if (status) + RETVAL->dbp = NULL ; + + } +#else + +#if defined(DB_LIBRARY_COMPATIBILITY_API) && DB_VERSION_MAJOR > 2 + RETVAL->dbp = __db185_open(name, flags, mode, RETVAL->type, openinfo) ; +#else + RETVAL->dbp = dbopen(name, flags, mode, RETVAL->type, openinfo) ; +#endif /* DB_LIBRARY_COMPATIBILITY_API */ + +#endif + + return (RETVAL) ; + +#else /* Berkeley DB Version > 2 */ + + SV ** svp; + HV * action ; + DB_File RETVAL = (DB_File)safemalloc(sizeof(DB_File_type)) ; + DB * dbp ; + STRLEN n_a; + int status ; + dMY_CXT; + +/* printf("In ParseOpenInfo name=[%s] flags=[%d] mode = [%d]\n", name, flags, mode) ; */ + Zero(RETVAL, 1, DB_File_type) ; + + /* Default to HASH */ + RETVAL->filtering = 0 ; + RETVAL->filter_fetch_key = RETVAL->filter_store_key = + RETVAL->filter_fetch_value = RETVAL->filter_store_value = + RETVAL->hash = RETVAL->compare = RETVAL->prefix = NULL ; + RETVAL->type = DB_HASH ; + + /* DGH - Next line added to avoid SEGV on existing hash DB */ + CurrentDB = RETVAL; + + /* fd for 1.86 hash in memory files doesn't return -1 like 1.85 */ + RETVAL->in_memory = (name == NULL) ; + + status = db_create(&RETVAL->dbp, NULL,0) ; + /* printf("db_create returned %d %s\n", status, db_strerror(status)) ; */ + if (status) { + RETVAL->dbp = NULL ; + return (RETVAL) ; + } + dbp = RETVAL->dbp ; + +#ifdef WANT_ERROR + RETVAL->dbp->set_errcall(RETVAL->dbp, db_errcall_cb) ; +#endif + if (sv) + { + if (! SvROK(sv) ) + croak ("type parameter is not a reference") ; + + svp = hv_fetch( (HV*)SvRV(sv), "GOT", 3, FALSE) ; + if (svp && SvOK(*svp)) + action = (HV*) SvRV(*svp) ; + else + croak("internal error") ; + + if (sv_isa(sv, "DB_File::HASHINFO")) + { + + if (!isHASH) + croak("DB_File can only tie an associative array to a DB_HASH database") ; + + RETVAL->type = DB_HASH ; + + svp = hv_fetch(action, "hash", 4, FALSE); + + if (svp && SvOK(*svp)) + { + (void)dbp->set_h_hash(dbp, hash_cb) ; + RETVAL->hash = newSVsv(*svp) ; + } + + svp = hv_fetch(action, "ffactor", 7, FALSE); + if (svp) + (void)dbp->set_h_ffactor(dbp, my_SvUV32(*svp)) ; + + svp = hv_fetch(action, "nelem", 5, FALSE); + if (svp) + (void)dbp->set_h_nelem(dbp, my_SvUV32(*svp)) ; + + svp = hv_fetch(action, "bsize", 5, FALSE); + if (svp) + (void)dbp->set_pagesize(dbp, my_SvUV32(*svp)); + + svp = hv_fetch(action, "cachesize", 9, FALSE); + if (svp) + (void)dbp->set_cachesize(dbp, 0, my_SvUV32(*svp), 0) ; + + svp = hv_fetch(action, "lorder", 6, FALSE); + if (svp) + (void)dbp->set_lorder(dbp, (int)SvIV(*svp)) ; + + PrintHash(info) ; + } + else if (sv_isa(sv, "DB_File::BTREEINFO")) + { + if (!isHASH) + croak("DB_File can only tie an associative array to a DB_BTREE database"); + + RETVAL->type = DB_BTREE ; + + svp = hv_fetch(action, "compare", 7, FALSE); + if (svp && SvOK(*svp)) + { + (void)dbp->set_bt_compare(dbp, btree_compare) ; + RETVAL->compare = newSVsv(*svp) ; + } + + svp = hv_fetch(action, "prefix", 6, FALSE); + if (svp && SvOK(*svp)) + { + (void)dbp->set_bt_prefix(dbp, btree_prefix) ; + RETVAL->prefix = newSVsv(*svp) ; + } + + svp = hv_fetch(action, "flags", 5, FALSE); + if (svp) + (void)dbp->set_flags(dbp, my_SvUV32(*svp)) ; + + svp = hv_fetch(action, "cachesize", 9, FALSE); + if (svp) + (void)dbp->set_cachesize(dbp, 0, my_SvUV32(*svp), 0) ; + + svp = hv_fetch(action, "psize", 5, FALSE); + if (svp) + (void)dbp->set_pagesize(dbp, my_SvUV32(*svp)) ; + + svp = hv_fetch(action, "lorder", 6, FALSE); + if (svp) + (void)dbp->set_lorder(dbp, (int)SvIV(*svp)) ; + + PrintBtree(info) ; + + } + else if (sv_isa(sv, "DB_File::RECNOINFO")) + { + int fixed = FALSE ; + + if (isHASH) + croak("DB_File can only tie an array to a DB_RECNO database"); + + RETVAL->type = DB_RECNO ; + + svp = hv_fetch(action, "flags", 5, FALSE); + if (svp) { + int flags = SvIV(*svp) ; + /* remove FIXDLEN, if present */ + if (flags & DB_FIXEDLEN) { + fixed = TRUE ; + flags &= ~DB_FIXEDLEN ; + } + } + + svp = hv_fetch(action, "cachesize", 9, FALSE); + if (svp) { + status = dbp->set_cachesize(dbp, 0, my_SvUV32(*svp), 0) ; + } + + svp = hv_fetch(action, "psize", 5, FALSE); + if (svp) { + status = dbp->set_pagesize(dbp, my_SvUV32(*svp)) ; + } + + svp = hv_fetch(action, "lorder", 6, FALSE); + if (svp) { + status = dbp->set_lorder(dbp, (int)SvIV(*svp)) ; + } + + svp = hv_fetch(action, "bval", 4, FALSE); + if (svp && SvOK(*svp)) + { + int value ; + if (SvPOK(*svp)) + value = (int)*SvPV(*svp, n_a) ; + else + value = (int)SvIV(*svp) ; + + if (fixed) { + status = dbp->set_re_pad(dbp, value) ; + } + else { + status = dbp->set_re_delim(dbp, value) ; + } + + } + + if (fixed) { + svp = hv_fetch(action, "reclen", 6, FALSE); + if (svp) { + u_int32_t len = my_SvUV32(*svp) ; + status = dbp->set_re_len(dbp, len) ; + } + } + + if (name != NULL) { + status = dbp->set_re_source(dbp, name) ; + name = NULL ; + } + + svp = hv_fetch(action, "bfname", 6, FALSE); + if (svp && SvOK(*svp)) { + char * ptr = SvPV(*svp,n_a) ; + name = (char*) n_a ? ptr : NULL ; + } + else + name = NULL ; + + + status = dbp->set_flags(dbp, (u_int32_t)DB_RENUMBER) ; + + if (flags){ + (void)dbp->set_flags(dbp, (u_int32_t)flags) ; + } + PrintRecno(info) ; + } + else + croak("type is not of type DB_File::HASHINFO, DB_File::BTREEINFO or DB_File::RECNOINFO"); + } + + { + u_int32_t Flags = 0 ; + int status ; + + /* Map 1.x flags to 3.x flags */ + if ((flags & O_CREAT) == O_CREAT) + Flags |= DB_CREATE ; + +#if O_RDONLY == 0 + if (flags == O_RDONLY) +#else + if ((flags & O_RDONLY) == O_RDONLY && (flags & O_RDWR) != O_RDWR) +#endif + Flags |= DB_RDONLY ; + +#ifdef O_TRUNC + if ((flags & O_TRUNC) == O_TRUNC) + Flags |= DB_TRUNCATE ; +#endif + +#ifdef AT_LEAST_DB_4_4 + /* need this for recno */ + if ((flags & O_TRUNC) == O_TRUNC) + Flags |= DB_CREATE ; +#endif + +#ifdef AT_LEAST_DB_4_1 + status = (RETVAL->dbp->open)(RETVAL->dbp, NULL, name, NULL, RETVAL->type, + Flags, mode) ; +#else + status = (RETVAL->dbp->open)(RETVAL->dbp, name, NULL, RETVAL->type, + Flags, mode) ; +#endif + /* printf("open returned %d %s\n", status, db_strerror(status)) ; */ + + if (status == 0) { + + status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor, + 0) ; + /* printf("cursor returned %d %s\n", status, db_strerror(status)) ; */ + } + + if (status) + { + db_close(RETVAL); /* close **dbp handle to prevent mem.leak */ + RETVAL->dbp = NULL ; + } + + } + + return (RETVAL) ; + +#endif /* Berkeley DB Version > 2 */ + +} /* ParseOpenInfo */ + + +#include "constants.h" + +#line 1550 "DB_File.c" +#ifndef PERL_UNUSED_VAR +# define PERL_UNUSED_VAR(var) if (0) var = var +#endif + +#ifndef dVAR +# define dVAR dNOOP +#endif + + +/* This stuff is not part of the API! You have been warned. */ +#ifndef PERL_VERSION_DECIMAL +# define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s) +#endif +#ifndef PERL_DECIMAL_VERSION +# define PERL_DECIMAL_VERSION \ + PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION) +#endif +#ifndef PERL_VERSION_GE +# define PERL_VERSION_GE(r,v,s) \ + (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s)) +#endif +#ifndef PERL_VERSION_LE +# define PERL_VERSION_LE(r,v,s) \ + (PERL_DECIMAL_VERSION <= PERL_VERSION_DECIMAL(r,v,s)) +#endif + +/* XS_INTERNAL is the explicit static-linkage variant of the default + * XS macro. + * + * XS_EXTERNAL is the same as XS_INTERNAL except it does not include + * "STATIC", ie. it exports XSUB symbols. You probably don't want that + * for anything but the BOOT XSUB. + * + * See XSUB.h in core! + */ + + +/* TODO: This might be compatible further back than 5.10.0. */ +#if PERL_VERSION_GE(5, 10, 0) && PERL_VERSION_LE(5, 15, 1) +# undef XS_EXTERNAL +# undef XS_INTERNAL +# if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING) +# define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name) +# define XS_INTERNAL(name) STATIC XSPROTO(name) +# endif +# if defined(__SYMBIAN32__) +# define XS_EXTERNAL(name) EXPORT_C XSPROTO(name) +# define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name) +# endif +# ifndef XS_EXTERNAL +# if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus) +# define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__) +# define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__) +# else +# ifdef __cplusplus +# define XS_EXTERNAL(name) extern "C" XSPROTO(name) +# define XS_INTERNAL(name) static XSPROTO(name) +# else +# define XS_EXTERNAL(name) XSPROTO(name) +# define XS_INTERNAL(name) STATIC XSPROTO(name) +# endif +# endif +# endif +#endif + +/* perl >= 5.10.0 && perl <= 5.15.1 */ + + +/* The XS_EXTERNAL macro is used for functions that must not be static + * like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL + * macro defined, the best we can do is assume XS is the same. + * Dito for XS_INTERNAL. + */ +#ifndef XS_EXTERNAL +# define XS_EXTERNAL(name) XS(name) +#endif +#ifndef XS_INTERNAL +# define XS_INTERNAL(name) XS(name) +#endif + +/* Now, finally, after all this mess, we want an ExtUtils::ParseXS + * internal macro that we're free to redefine for varying linkage due + * to the EXPORT_XSUB_SYMBOLS XS keyword. This is internal, use + * XS_EXTERNAL(name) or XS_INTERNAL(name) in your code if you need to! + */ + +#undef XS_EUPXS +#if defined(PERL_EUPXS_ALWAYS_EXPORT) +# define XS_EUPXS(name) XS_EXTERNAL(name) +#else + /* default to internal */ +# define XS_EUPXS(name) XS_INTERNAL(name) +#endif + +#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE +#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params) + +/* prototype to pass -Wmissing-prototypes */ +STATIC void +S_croak_xs_usage(const CV *const cv, const char *const params); + +STATIC void +S_croak_xs_usage(const CV *const cv, const char *const params) +{ + const GV *const gv = CvGV(cv); + + PERL_ARGS_ASSERT_CROAK_XS_USAGE; + + if (gv) { + const char *const gvname = GvNAME(gv); + const HV *const stash = GvSTASH(gv); + const char *const hvname = stash ? HvNAME(stash) : NULL; + + if (hvname) + Perl_croak_nocontext("Usage: %s::%s(%s)", hvname, gvname, params); + else + Perl_croak_nocontext("Usage: %s(%s)", gvname, params); + } else { + /* Pants. I don't think that it should be possible to get here. */ + Perl_croak_nocontext("Usage: CODE(0x%"UVxf")(%s)", PTR2UV(cv), params); + } +} +#undef PERL_ARGS_ASSERT_CROAK_XS_USAGE + +#define croak_xs_usage S_croak_xs_usage + +#endif + +/* NOTE: the prototype of newXSproto() is different in versions of perls, + * so we define a portable version of newXSproto() + */ +#ifdef newXS_flags +#define newXSproto_portable(name, c_impl, file, proto) newXS_flags(name, c_impl, file, proto, 0) +#else +#define newXSproto_portable(name, c_impl, file, proto) (PL_Sv=(SV*)newXS(name, c_impl, file), sv_setpv(PL_Sv, proto), (CV*)PL_Sv) +#endif /* !defined(newXS_flags) */ + +#if PERL_VERSION_LE(5, 21, 5) +# define newXS_deffile(a,b) Perl_newXS(aTHX_ a,b,file) +#else +# define newXS_deffile(a,b) Perl_newXS_deffile(aTHX_ a,b) +#endif + +#line 1694 "DB_File.c" + +/* INCLUDE: Including 'constants.xs' from 'DB_File.xs' */ + + +XS_EUPXS(XS_DB_File_constant); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_constant) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "sv"); + PERL_UNUSED_VAR(ax); /* -Wall */ + SP -= items; + { +#line 4 "./constants.xs" +#ifdef dXSTARG + dXSTARG; /* Faster if we have it. */ +#else + dTARGET; +#endif + STRLEN len; + int type; + IV iv; + /* NV nv; Uncomment this if you need to return NVs */ + /* const char *pv; Uncomment this if you need to return PVs */ +#line 1719 "DB_File.c" + SV * sv = ST(0) +; + const char * s = SvPV(sv, len); +#line 18 "./constants.xs" + /* Change this to constant(aTHX_ s, len, &iv, &nv); + if you need to return both NVs and IVs */ + type = constant(aTHX_ s, len, &iv); + /* Return 1 or 2 items. First is error message, or undef if no error. + Second, if present, is found value */ + switch (type) { + case PERL_constant_NOTFOUND: + sv = + sv_2mortal(newSVpvf("%s is not a valid DB_File macro", s)); + PUSHs(sv); + break; + case PERL_constant_NOTDEF: + sv = sv_2mortal(newSVpvf( + "Your vendor has not defined DB_File macro %s, used", + s)); + PUSHs(sv); + break; + case PERL_constant_ISIV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHi(iv); + break; + /* Uncomment this if you need to return NOs + case PERL_constant_ISNO: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(&PL_sv_no); + break; */ + /* Uncomment this if you need to return NVs + case PERL_constant_ISNV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHn(nv); + break; */ + /* Uncomment this if you need to return PVs + case PERL_constant_ISPV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHp(pv, strlen(pv)); + break; */ + /* Uncomment this if you need to return PVNs + case PERL_constant_ISPVN: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHp(pv, iv); + break; */ + /* Uncomment this if you need to return SVs + case PERL_constant_ISSV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(sv); + break; */ + /* Uncomment this if you need to return UNDEFs + case PERL_constant_ISUNDEF: + break; */ + /* Uncomment this if you need to return UVs + case PERL_constant_ISUV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHu((UV)iv); + break; */ + /* Uncomment this if you need to return YESs + case PERL_constant_ISYES: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(&PL_sv_yes); + break; */ + default: + sv = sv_2mortal(newSVpvf( + "Unexpected return type %d while processing DB_File macro %s, used", + type, s)); + PUSHs(sv); + } +#line 1797 "DB_File.c" + PUTBACK; + return; + } +} + + +/* INCLUDE: Returning to 'DB_File.xs' from 'constants.xs' */ + + +XS_EUPXS(XS_DB_File_DoTie_); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_DoTie_) +{ + dVAR; dXSARGS; + if (items < 2 || items > 6) + croak_xs_usage(cv, "isHASH, dbtype, name=undef, flags=O_CREAT|O_RDWR, mode=0666, type=DB_HASH"); + { + int isHASH = (int)SvIV(ST(0)) +; + char * dbtype = (char *)SvPV_nolen(ST(1)) +; + int flags; + int mode; + DB_File RETVAL; + + if (items < 4) + flags = O_CREAT|O_RDWR; + else { + flags = (int)SvIV(ST(3)) +; + } + + if (items < 5) + mode = 0666; + else { + mode = (int)SvIV(ST(4)) +; + } +#line 1572 "DB_File.xs" + { + char * name = (char *) NULL ; + SV * sv = (SV *) NULL ; + STRLEN n_a; + + if (items >= 3 && SvOK(ST(2))) + name = (char*) SvPV(ST(2), n_a) ; + + if (items == 6) + sv = ST(5) ; + + RETVAL = ParseOpenInfo(aTHX_ isHASH, name, flags, mode, sv) ; + Trace(("db_DoTie_ %p\n", RETVAL)); + if (RETVAL->dbp == NULL) { + Safefree(RETVAL); + RETVAL = NULL ; + } + } +#line 1854 "DB_File.c" + { + SV * RETVALSV; + RETVALSV = sv_newmortal(); + sv_setref_pv(RETVALSV, dbtype, (void*)RETVAL); + ST(0) = RETVALSV; + } + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_DESTROY); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_DESTROY) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "db"); + { + DB_File db; +#line 1597 "DB_File.xs" + dMY_CXT; +#line 1876 "DB_File.c" + int RETVAL; + dXSTARG; + + if (SvROK(ST(0))) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not a reference", + "DB_File::DESTROY", + "db") +; +#line 1599 "DB_File.xs" + CurrentDB = db ; + Trace(("DESTROY %p\n", db)); +#line 1892 "DB_File.c" + + RETVAL = db_DESTROY(db); + XSprePUSH; PUSHi((IV)RETVAL); +#line 1602 "DB_File.xs" + Trace(("DESTROY %p done\n", db)); + if (db->hash) + SvREFCNT_dec(db->hash) ; + if (db->compare) + SvREFCNT_dec(db->compare) ; + if (db->prefix) + SvREFCNT_dec(db->prefix) ; + if (db->filter_fetch_key) + SvREFCNT_dec(db->filter_fetch_key) ; + if (db->filter_store_key) + SvREFCNT_dec(db->filter_store_key) ; + if (db->filter_fetch_value) + SvREFCNT_dec(db->filter_fetch_value) ; + if (db->filter_store_value) + SvREFCNT_dec(db->filter_store_value) ; + safefree(db) ; +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; +#endif +#line 1917 "DB_File.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_DELETE); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_DELETE) +{ + dVAR; dXSARGS; + if (items < 2 || items > 3) + croak_xs_usage(cv, "db, key, flags=0"); + { + DB_File db; + DBTKEY key; + u_int flags; +#line 1630 "DB_File.xs" + dMY_CXT; +#line 1935 "DB_File.c" + int RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::DELETE", + "db", "DB_File") +; + + { + SV * my_sv = ST(1); + DBM_ckFilter(my_sv, filter_store_key, "filter_store_key"); + DBT_clear(key) ; + SvGETMAGIC(my_sv) ; + if (db->type == DB_RECNO) { + if (SvOK(my_sv)) + Value = GetRecnoKey(aTHX_ db, SvIV(my_sv)) ; + else + Value = 1 ; + key.data = & Value; + key.size = (int)sizeof(recno_t); + } + else if (SvOK(my_sv)) { + STRLEN len; + key.data = SvPVbyte(my_sv, len); + key.size = (int)len; + } + } +; + + if (items < 3) + flags = 0; + else { + flags = (unsigned int)SvUV(ST(2)) +; + } +#line 1632 "DB_File.xs" + (void)flags; + CurrentDB = db ; +#line 1979 "DB_File.c" + + RETVAL = db_DELETE(db, key, flags); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_EXISTS); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_EXISTS) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "db, key"); + { + DB_File db; + DBTKEY key; +#line 1641 "DB_File.xs" + dMY_CXT; +#line 1999 "DB_File.c" + int RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::EXISTS", + "db", "DB_File") +; + + { + SV * my_sv = ST(1); + DBM_ckFilter(my_sv, filter_store_key, "filter_store_key"); + DBT_clear(key) ; + SvGETMAGIC(my_sv) ; + if (db->type == DB_RECNO) { + if (SvOK(my_sv)) + Value = GetRecnoKey(aTHX_ db, SvIV(my_sv)) ; + else + Value = 1 ; + key.data = & Value; + key.size = (int)sizeof(recno_t); + } + else if (SvOK(my_sv)) { + STRLEN len; + key.data = SvPVbyte(my_sv, len); + key.size = (int)len; + } + } +; +#line 1643 "DB_File.xs" + { + DBT value ; + + DBT_clear(value) ; + CurrentDB = db ; + RETVAL = (((db->dbp)->get)(db->dbp, TXN &key, &value, 0) == 0) ; + } +#line 2041 "DB_File.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_FETCH); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_FETCH) +{ + dVAR; dXSARGS; + if (items < 2 || items > 3) + croak_xs_usage(cv, "db, key, flags=0"); + { + DB_File db; + DBTKEY key; + u_int flags; +#line 1659 "DB_File.xs" + dMY_CXT ; + int RETVAL ; +#line 2061 "DB_File.c" + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::FETCH", + "db", "DB_File") +; + + { + SV * my_sv = ST(1); + DBM_ckFilter(my_sv, filter_store_key, "filter_store_key"); + DBT_clear(key) ; + SvGETMAGIC(my_sv) ; + if (db->type == DB_RECNO) { + if (SvOK(my_sv)) + Value = GetRecnoKey(aTHX_ db, SvIV(my_sv)) ; + else + Value = 1 ; + key.data = & Value; + key.size = (int)sizeof(recno_t); + } + else if (SvOK(my_sv)) { + STRLEN len; + key.data = SvPVbyte(my_sv, len); + key.size = (int)len; + } + } +; + + if (items < 3) + flags = 0; + else { + flags = (unsigned int)SvUV(ST(2)) +; + } +#line 1662 "DB_File.xs" + { + DBT value ; + + DBT_clear(value) ; + CurrentDB = db ; + RETVAL = db_get(db, key, value, flags) ; + ST(0) = sv_newmortal(); + OutputValue(ST(0), value) + } +#line 2110 "DB_File.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_STORE); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_STORE) +{ + dVAR; dXSARGS; + if (items < 3 || items > 4) + croak_xs_usage(cv, "db, key, value, flags=0"); + { + DB_File db; + DBTKEY key; + DBT value; + u_int flags; +#line 1679 "DB_File.xs" + dMY_CXT; +#line 2129 "DB_File.c" + int RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::STORE", + "db", "DB_File") +; + + { + SV * my_sv = ST(1); + DBM_ckFilter(my_sv, filter_store_key, "filter_store_key"); + DBT_clear(key) ; + SvGETMAGIC(my_sv) ; + if (db->type == DB_RECNO) { + if (SvOK(my_sv)) + Value = GetRecnoKey(aTHX_ db, SvIV(my_sv)) ; + else + Value = 1 ; + key.data = & Value; + key.size = (int)sizeof(recno_t); + } + else if (SvOK(my_sv)) { + STRLEN len; + key.data = SvPVbyte(my_sv, len); + key.size = (int)len; + } + } +; + + { + SV * my_sv = ST(2); + DBM_ckFilter(my_sv, filter_store_value, "filter_store_value"); + DBT_clear(value) ; + SvGETMAGIC(my_sv) ; + if (SvOK(my_sv)) { + STRLEN len; + value.data = SvPVbyte(my_sv, len); + value.size = (int)len; + } + } +; + + if (items < 4) + flags = 0; + else { + flags = (unsigned int)SvUV(ST(3)) +; + } +#line 1681 "DB_File.xs" + (void)flags; + CurrentDB = db ; +#line 2186 "DB_File.c" + + RETVAL = db_STORE(db, key, value, flags); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_FIRSTKEY); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_FIRSTKEY) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "db"); + { + DB_File db; +#line 1689 "DB_File.xs" + dMY_CXT ; + int RETVAL ; +#line 2206 "DB_File.c" + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::FIRSTKEY", + "db", "DB_File") +; +#line 1692 "DB_File.xs" + { + DBTKEY key ; + DBT value ; + + DBT_clear(key) ; + DBT_clear(value) ; + CurrentDB = db ; + RETVAL = do_SEQ(db, key, value, R_FIRST) ; + ST(0) = sv_newmortal(); + OutputKey(ST(0), key) ; + } +#line 2229 "DB_File.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_NEXTKEY); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_NEXTKEY) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "db, key"); + { + DB_File db; + DBTKEY key; +#line 1709 "DB_File.xs" + dMY_CXT ; + int RETVAL ; +#line 2247 "DB_File.c" + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::NEXTKEY", + "db", "DB_File") +; +#line 1712 "DB_File.xs" + { + DBT value ; + + DBT_clear(key) ; + DBT_clear(value) ; + CurrentDB = db ; + RETVAL = do_SEQ(db, key, value, R_NEXT) ; + ST(0) = sv_newmortal(); + OutputKey(ST(0), key) ; + } +#line 2269 "DB_File.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_unshift); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_unshift) +{ + dVAR; dXSARGS; + dXSI32; + if (items < 1) + croak_xs_usage(cv, "db, ..."); + { + DB_File db; +#line 1732 "DB_File.xs" + dMY_CXT; +#line 2286 "DB_File.c" + int RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + GvNAME(CvGV(cv)), + "db", "DB_File") +; +#line 1734 "DB_File.xs" + { + DBTKEY key ; + DBT value ; + int i ; + int One ; + STRLEN n_a; + + DBT_clear(key) ; + DBT_clear(value) ; + CurrentDB = db ; +#ifdef DB_VERSION_MAJOR + /* get the first value */ + RETVAL = do_SEQ(db, key, value, DB_FIRST) ; + RETVAL = 0 ; +#else + RETVAL = -1 ; +#endif + for (i = items-1 ; i > 0 ; --i) + { + DBM_ckFilter(ST(i), filter_store_value, "filter_store_value"); + value.data = SvPVbyte(ST(i), n_a) ; + value.size = n_a ; + One = 1 ; + key.data = &One ; + key.size = sizeof(int) ; +#ifdef DB_VERSION_MAJOR + RETVAL = (db->cursor->c_put)(db->cursor, &key, &value, DB_BEFORE) ; +#else + RETVAL = (db->dbp->put)(db->dbp, &key, &value, R_IBEFORE) ; +#endif + if (RETVAL != 0) + break; + } + } +#line 2334 "DB_File.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_pop); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_pop) +{ + dVAR; dXSARGS; + dXSI32; + if (items != 1) + croak_xs_usage(cv, "db"); + { + DB_File db; +#line 1775 "DB_File.xs" + dMY_CXT; +#line 2352 "DB_File.c" +#line 1778 "DB_File.xs" + I32 RETVAL; +#line 2355 "DB_File.c" + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + GvNAME(CvGV(cv)), + "db", "DB_File") +; +#line 1780 "DB_File.xs" + { + DBTKEY key ; + DBT value ; + + DBT_clear(key) ; + DBT_clear(value) ; + CurrentDB = db ; + + /* First get the final value */ + RETVAL = do_SEQ(db, key, value, R_LAST) ; + ST(0) = sv_newmortal(); + /* Now delete it */ + if (RETVAL == 0) + { + /* the call to del will trash value, so take a copy now */ + OutputValue(ST(0), value) ; + RETVAL = db_del(db, key, R_CURSOR) ; + if (RETVAL != 0) + sv_setsv(ST(0), &PL_sv_undef); + } + } +#line 2388 "DB_File.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_shift); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_shift) +{ + dVAR; dXSARGS; + dXSI32; + if (items != 1) + croak_xs_usage(cv, "db"); + { + DB_File db; +#line 1806 "DB_File.xs" + dMY_CXT; +#line 2405 "DB_File.c" +#line 1809 "DB_File.xs" + I32 RETVAL; +#line 2408 "DB_File.c" + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + GvNAME(CvGV(cv)), + "db", "DB_File") +; +#line 1811 "DB_File.xs" + { + DBT value ; + DBTKEY key ; + + DBT_clear(key) ; + DBT_clear(value) ; + CurrentDB = db ; + /* get the first value */ + RETVAL = do_SEQ(db, key, value, R_FIRST) ; + ST(0) = sv_newmortal(); + /* Now delete it */ + if (RETVAL == 0) + { + /* the call to del will trash value, so take a copy now */ + OutputValue(ST(0), value) ; + RETVAL = db_del(db, key, R_CURSOR) ; + if (RETVAL != 0) + sv_setsv (ST(0), &PL_sv_undef) ; + } + } +#line 2440 "DB_File.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_push); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_push) +{ + dVAR; dXSARGS; + dXSI32; + if (items < 1) + croak_xs_usage(cv, "db, ..."); + { + DB_File db; +#line 1837 "DB_File.xs" + dMY_CXT; +#line 2457 "DB_File.c" + I32 RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + GvNAME(CvGV(cv)), + "db", "DB_File") +; +#line 1840 "DB_File.xs" + { + DBTKEY key ; + DBT value ; + DB * Db = db->dbp ; + int i ; + STRLEN n_a; + int keyval ; + + DBT_flags(key) ; + DBT_flags(value) ; + CurrentDB = db ; + /* Set the Cursor to the Last element */ + RETVAL = do_SEQ(db, key, value, R_LAST) ; +#ifndef DB_VERSION_MAJOR + if (RETVAL >= 0) +#endif + { + if (RETVAL == 0) + keyval = *(int*)key.data ; + else + keyval = 0 ; + for (i = 1 ; i < items ; ++i) + { + DBM_ckFilter(ST(i), filter_store_value, "filter_store_value"); + value.data = SvPVbyte(ST(i), n_a) ; + value.size = n_a ; + ++ keyval ; + key.data = &keyval ; + key.size = sizeof(int) ; + RETVAL = (Db->put)(Db, TXN &key, &value, 0) ; + if (RETVAL != 0) + break; + } + } + } +#line 2506 "DB_File.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_length); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_length) +{ + dVAR; dXSARGS; + dXSI32; + if (items != 1) + croak_xs_usage(cv, "db"); + { + DB_File db; +#line 1882 "DB_File.xs" + dMY_CXT; +#line 2524 "DB_File.c" + I32 RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + GvNAME(CvGV(cv)), + "db", "DB_File") +; +#line 1885 "DB_File.xs" + CurrentDB = db ; + RETVAL = GetArrayLength(aTHX_ db) ; +#line 2540 "DB_File.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_del); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_del) +{ + dVAR; dXSARGS; + if (items < 2 || items > 3) + croak_xs_usage(cv, "db, key, flags=0"); + { + DB_File db; + DBTKEY key; + u_int flags; +#line 1901 "DB_File.xs" + dMY_CXT; +#line 2559 "DB_File.c" + int RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::del", + "db", "DB_File") +; + + { + SV * my_sv = ST(1); + DBM_ckFilter(my_sv, filter_store_key, "filter_store_key"); + DBT_clear(key) ; + SvGETMAGIC(my_sv) ; + if (db->type == DB_RECNO) { + if (SvOK(my_sv)) + Value = GetRecnoKey(aTHX_ db, SvIV(my_sv)) ; + else + Value = 1 ; + key.data = & Value; + key.size = (int)sizeof(recno_t); + } + else if (SvOK(my_sv)) { + STRLEN len; + key.data = SvPVbyte(my_sv, len); + key.size = (int)len; + } + } +; + + if (items < 3) + flags = 0; + else { + flags = (unsigned int)SvUV(ST(2)) +; + } +#line 1903 "DB_File.xs" + CurrentDB = db ; + RETVAL = db_del(db, key, flags) ; +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; + else if (RETVAL == DB_NOTFOUND) + RETVAL = 1 ; +#endif +#line 2609 "DB_File.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_get); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_get) +{ + dVAR; dXSARGS; + if (items < 3 || items > 4) + croak_xs_usage(cv, "db, key, value, flags=0"); + { + DB_File db; + DBTKEY key; + DBT value; + u_int flags; +#line 1922 "DB_File.xs" + dMY_CXT; +#line 2629 "DB_File.c" + int RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::get", + "db", "DB_File") +; + + { + SV * my_sv = ST(1); + DBM_ckFilter(my_sv, filter_store_key, "filter_store_key"); + DBT_clear(key) ; + SvGETMAGIC(my_sv) ; + if (db->type == DB_RECNO) { + if (SvOK(my_sv)) + Value = GetRecnoKey(aTHX_ db, SvIV(my_sv)) ; + else + Value = 1 ; + key.data = & Value; + key.size = (int)sizeof(recno_t); + } + else if (SvOK(my_sv)) { + STRLEN len; + key.data = SvPVbyte(my_sv, len); + key.size = (int)len; + } + } +; + + if (items < 4) + flags = 0; + else { + flags = (unsigned int)SvUV(ST(3)) +; + } +#line 1924 "DB_File.xs" + CurrentDB = db ; + DBT_clear(value) ; + RETVAL = db_get(db, key, value, flags) ; +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; + else if (RETVAL == DB_NOTFOUND) + RETVAL = 1 ; +#endif +#line 2680 "DB_File.c" + OutputValue(ST(2), value) + SvSETMAGIC(ST(2)); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_put); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_put) +{ + dVAR; dXSARGS; + if (items < 3 || items > 4) + croak_xs_usage(cv, "db, key, value, flags=0"); + { + DB_File db; + DBTKEY key; + DBT value; + u_int flags; +#line 1944 "DB_File.xs" + dMY_CXT; +#line 2702 "DB_File.c" + int RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::put", + "db", "DB_File") +; + + { + SV * my_sv = ST(1); + DBM_ckFilter(my_sv, filter_store_key, "filter_store_key"); + DBT_clear(key) ; + SvGETMAGIC(my_sv) ; + if (db->type == DB_RECNO) { + if (SvOK(my_sv)) + Value = GetRecnoKey(aTHX_ db, SvIV(my_sv)) ; + else + Value = 1 ; + key.data = & Value; + key.size = (int)sizeof(recno_t); + } + else if (SvOK(my_sv)) { + STRLEN len; + key.data = SvPVbyte(my_sv, len); + key.size = (int)len; + } + } +; + + { + SV * my_sv = ST(2); + DBM_ckFilter(my_sv, filter_store_value, "filter_store_value"); + DBT_clear(value) ; + SvGETMAGIC(my_sv) ; + if (SvOK(my_sv)) { + STRLEN len; + value.data = SvPVbyte(my_sv, len); + value.size = (int)len; + } + } +; + + if (items < 4) + flags = 0; + else { + flags = (unsigned int)SvUV(ST(3)) +; + } +#line 1946 "DB_File.xs" + CurrentDB = db ; + RETVAL = db_put(db, key, value, flags) ; +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; + else if (RETVAL == DB_KEYEXIST) + RETVAL = 1 ; +#endif +#line 2765 "DB_File.c" + if (flagSet(flags, R_IAFTER) || flagSet(flags, R_IBEFORE)) OutputKey(ST(1), key); + SvSETMAGIC(ST(1)); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_fd); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_fd) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "db"); + { + DB_File db; +#line 1962 "DB_File.xs" + dMY_CXT ; +#line 2784 "DB_File.c" + int RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::fd", + "db", "DB_File") +; +#line 1964 "DB_File.xs" + CurrentDB = db ; +#ifdef DB_VERSION_MAJOR + RETVAL = -1 ; + { + int status = 0 ; + status = (db->in_memory + ? -1 + : ((db->dbp)->fd)(db->dbp, &RETVAL) ) ; + if (status != 0) + RETVAL = -1 ; + } +#else + RETVAL = (db->in_memory + ? -1 + : ((db->dbp)->fd)(db->dbp) ) ; +#endif +#line 2814 "DB_File.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_sync); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_sync) +{ + dVAR; dXSARGS; + if (items < 1 || items > 2) + croak_xs_usage(cv, "db, flags=0"); + { + DB_File db; + u_int flags; +#line 1988 "DB_File.xs" + dMY_CXT; +#line 2832 "DB_File.c" + int RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::sync", + "db", "DB_File") +; + + if (items < 2) + flags = 0; + else { + flags = (unsigned int)SvUV(ST(1)) +; + } +#line 1990 "DB_File.xs" + CurrentDB = db ; + RETVAL = db_sync(db, flags) ; +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; +#endif +#line 2859 "DB_File.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_seq); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_seq) +{ + dVAR; dXSARGS; + if (items != 4) + croak_xs_usage(cv, "db, key, value, flags"); + { + DB_File db; + DBTKEY key; + DBT value; + u_int flags = (unsigned int)SvUV(ST(3)) +; +#line 2007 "DB_File.xs" + dMY_CXT; +#line 2880 "DB_File.c" + int RETVAL; + dXSTARG; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::seq", + "db", "DB_File") +; + + { + SV * my_sv = ST(1); + DBM_ckFilter(my_sv, filter_store_key, "filter_store_key"); + DBT_clear(key) ; + SvGETMAGIC(my_sv) ; + if (db->type == DB_RECNO) { + if (SvOK(my_sv)) + Value = GetRecnoKey(aTHX_ db, SvIV(my_sv)) ; + else + Value = 1 ; + key.data = & Value; + key.size = (int)sizeof(recno_t); + } + else if (SvOK(my_sv)) { + STRLEN len; + key.data = SvPVbyte(my_sv, len); + key.size = (int)len; + } + } +; +#line 2009 "DB_File.xs" + CurrentDB = db ; + DBT_clear(value) ; + RETVAL = db_seq(db, key, value, flags); +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; + else if (RETVAL == DB_NOTFOUND) + RETVAL = 1 ; +#endif +#line 2924 "DB_File.c" + OutputKey(ST(1), key) + SvSETMAGIC(ST(1)); + OutputValue(ST(2), value) + SvSETMAGIC(ST(2)); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_filter_fetch_key); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_filter_fetch_key) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "db, code"); + { + DB_File db; + SV * code = ST(1) +; + SV * RETVAL = &PL_sv_undef ; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::filter_fetch_key", + "db", "DB_File") +; +#line 2029 "DB_File.xs" + DBM_setFilter(db->filter_fetch_key, code) ; +#line 2958 "DB_File.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_filter_store_key); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_filter_store_key) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "db, code"); + { + DB_File db; + SV * code = ST(1) +; + SV * RETVAL = &PL_sv_undef ; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::filter_store_key", + "db", "DB_File") +; +#line 2037 "DB_File.xs" + DBM_setFilter(db->filter_store_key, code) ; +#line 2987 "DB_File.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_filter_fetch_value); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_filter_fetch_value) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "db, code"); + { + DB_File db; + SV * code = ST(1) +; + SV * RETVAL = &PL_sv_undef ; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::filter_fetch_value", + "db", "DB_File") +; +#line 2045 "DB_File.xs" + DBM_setFilter(db->filter_fetch_value, code) ; +#line 3016 "DB_File.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_DB_File_filter_store_value); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_DB_File_filter_store_value) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "db, code"); + { + DB_File db; + SV * code = ST(1) +; + SV * RETVAL = &PL_sv_undef ; + + if (SvROK(ST(0)) && sv_derived_from(ST(0), "DB_File")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + db = INT2PTR(DB_File,tmp); + } + else + Perl_croak_nocontext("%s: %s is not of type %s", + "DB_File::filter_store_value", + "db", "DB_File") +; +#line 2053 "DB_File.xs" + DBM_setFilter(db->filter_store_value, code) ; +#line 3045 "DB_File.c" + } + XSRETURN(1); +} + +#ifdef __cplusplus +extern "C" +#endif +XS_EXTERNAL(boot_DB_File); /* prototype to pass -Wmissing-prototypes */ +XS_EXTERNAL(boot_DB_File) +{ +#if PERL_VERSION_LE(5, 21, 5) + dVAR; dXSARGS; +#else + dVAR; dXSBOOTARGSXSAPIVERCHK; +#endif +#if (PERL_REVISION == 5 && PERL_VERSION < 9) + char* file = __FILE__; +#else + const char* file = __FILE__; +#endif + + PERL_UNUSED_VAR(file); + + PERL_UNUSED_VAR(cv); /* -W */ + PERL_UNUSED_VAR(items); /* -W */ +#if PERL_VERSION_LE(5, 21, 5) + XS_VERSION_BOOTCHECK; +# ifdef XS_APIVERSION_BOOTCHECK + XS_APIVERSION_BOOTCHECK; +# endif +#endif + + newXS_deffile("DB_File::constant", XS_DB_File_constant); + newXS_deffile("DB_File::DoTie_", XS_DB_File_DoTie_); + newXS_deffile("DB_File::DESTROY", XS_DB_File_DESTROY); + newXS_deffile("DB_File::DELETE", XS_DB_File_DELETE); + newXS_deffile("DB_File::EXISTS", XS_DB_File_EXISTS); + newXS_deffile("DB_File::FETCH", XS_DB_File_FETCH); + newXS_deffile("DB_File::STORE", XS_DB_File_STORE); + newXS_deffile("DB_File::FIRSTKEY", XS_DB_File_FIRSTKEY); + newXS_deffile("DB_File::NEXTKEY", XS_DB_File_NEXTKEY); + cv = newXS_deffile("DB_File::UNSHIFT", XS_DB_File_unshift); + XSANY.any_i32 = 1; + cv = newXS_deffile("DB_File::unshift", XS_DB_File_unshift); + XSANY.any_i32 = 0; + cv = newXS_deffile("DB_File::POP", XS_DB_File_pop); + XSANY.any_i32 = 1; + cv = newXS_deffile("DB_File::pop", XS_DB_File_pop); + XSANY.any_i32 = 0; + cv = newXS_deffile("DB_File::SHIFT", XS_DB_File_shift); + XSANY.any_i32 = 1; + cv = newXS_deffile("DB_File::shift", XS_DB_File_shift); + XSANY.any_i32 = 0; + cv = newXS_deffile("DB_File::PUSH", XS_DB_File_push); + XSANY.any_i32 = 1; + cv = newXS_deffile("DB_File::push", XS_DB_File_push); + XSANY.any_i32 = 0; + cv = newXS_deffile("DB_File::FETCHSIZE", XS_DB_File_length); + XSANY.any_i32 = 1; + cv = newXS_deffile("DB_File::length", XS_DB_File_length); + XSANY.any_i32 = 0; + newXS_deffile("DB_File::del", XS_DB_File_del); + newXS_deffile("DB_File::get", XS_DB_File_get); + newXS_deffile("DB_File::put", XS_DB_File_put); + newXS_deffile("DB_File::fd", XS_DB_File_fd); + newXS_deffile("DB_File::sync", XS_DB_File_sync); + newXS_deffile("DB_File::seq", XS_DB_File_seq); + newXS_deffile("DB_File::filter_fetch_key", XS_DB_File_filter_fetch_key); + newXS_deffile("DB_File::filter_store_key", XS_DB_File_filter_store_key); + newXS_deffile("DB_File::filter_fetch_value", XS_DB_File_filter_fetch_value); + newXS_deffile("DB_File::filter_store_value", XS_DB_File_filter_store_value); + + /* Initialisation Section */ + +#line 1545 "DB_File.xs" + { +#ifdef dTHX + dTHX; +#endif +#ifdef WANT_ERROR + SV * sv_err = perl_get_sv(ERR_BUFF, GV_ADD|GV_ADDMULTI) ; +#endif + MY_CXT_INIT; +#ifdef WANT_ERROR + PERL_UNUSED_VAR(sv_err); /* huh? we just retrieved it... */ +#endif + __getBerkeleyDBInfo() ; + + DBT_clear(empty) ; + empty.data = &zero ; + empty.size = sizeof(recno_t) ; + } + +#line 3139 "DB_File.c" + + /* End of Initialisation Section */ + +#if PERL_VERSION_LE(5, 21, 5) +# if PERL_VERSION_GE(5, 9, 0) + if (PL_unitcheckav) + call_list(PL_scopestack_ix, PL_unitcheckav); +# endif + XSRETURN_YES; +#else + Perl_xs_boot_epilog(aTHX_ ax); +#endif +} + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/DB_File.o b/fastSum/resources/ROUGE/DB_File-1.835/DB_File.o new file mode 100644 index 0000000000000000000000000000000000000000..2e309dab415e7e47c2774e2dc91840e89c4db906 Binary files /dev/null and b/fastSum/resources/ROUGE/DB_File-1.835/DB_File.o differ diff --git a/fastSum/resources/ROUGE/DB_File-1.835/DB_File.pm b/fastSum/resources/ROUGE/DB_File-1.835/DB_File.pm new file mode 100644 index 0000000000000000000000000000000000000000..9b1f9577386e0d81bd798ad6f9023fe512f36839 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/DB_File.pm @@ -0,0 +1,2310 @@ +# DB_File.pm -- Perl 5 interface to Berkeley DB +# +# Written by Paul Marquess (pmqs@cpan.org) +# +# Copyright (c) 1995-2014 Paul Marquess. All rights reserved. +# This program is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. + + +package DB_File::HASHINFO ; + +require 5.008003; + +use warnings; +use strict; +use Carp; +require Tie::Hash; +@DB_File::HASHINFO::ISA = qw(Tie::Hash); + +sub new +{ + my $pkg = shift ; + my %x ; + tie %x, $pkg ; + bless \%x, $pkg ; +} + + +sub TIEHASH +{ + my $pkg = shift ; + + bless { VALID => { + bsize => 1, + ffactor => 1, + nelem => 1, + cachesize => 1, + hash => 2, + lorder => 1, + }, + GOT => {} + }, $pkg ; +} + + +sub FETCH +{ + my $self = shift ; + my $key = shift ; + + return $self->{GOT}{$key} if exists $self->{VALID}{$key} ; + + my $pkg = ref $self ; + croak "${pkg}::FETCH - Unknown element '$key'" ; +} + + +sub STORE +{ + my $self = shift ; + my $key = shift ; + my $value = shift ; + + my $type = $self->{VALID}{$key}; + + if ( $type ) + { + croak "Key '$key' not associated with a code reference" + if $type == 2 && !ref $value && ref $value ne 'CODE'; + $self->{GOT}{$key} = $value ; + return ; + } + + my $pkg = ref $self ; + croak "${pkg}::STORE - Unknown element '$key'" ; +} + +sub DELETE +{ + my $self = shift ; + my $key = shift ; + + if ( exists $self->{VALID}{$key} ) + { + delete $self->{GOT}{$key} ; + return ; + } + + my $pkg = ref $self ; + croak "DB_File::HASHINFO::DELETE - Unknown element '$key'" ; +} + +sub EXISTS +{ + my $self = shift ; + my $key = shift ; + + exists $self->{VALID}{$key} ; +} + +sub NotHere +{ + my $self = shift ; + my $method = shift ; + + croak ref($self) . " does not define the method ${method}" ; +} + +sub FIRSTKEY { my $self = shift ; $self->NotHere("FIRSTKEY") } +sub NEXTKEY { my $self = shift ; $self->NotHere("NEXTKEY") } +sub CLEAR { my $self = shift ; $self->NotHere("CLEAR") } + +package DB_File::RECNOINFO ; + +use warnings; +use strict ; + +@DB_File::RECNOINFO::ISA = qw(DB_File::HASHINFO) ; + +sub TIEHASH +{ + my $pkg = shift ; + + bless { VALID => { map {$_, 1} + qw( bval cachesize psize flags lorder reclen bfname ) + }, + GOT => {}, + }, $pkg ; +} + +package DB_File::BTREEINFO ; + +use warnings; +use strict ; + +@DB_File::BTREEINFO::ISA = qw(DB_File::HASHINFO) ; + +sub TIEHASH +{ + my $pkg = shift ; + + bless { VALID => { + flags => 1, + cachesize => 1, + maxkeypage => 1, + minkeypage => 1, + psize => 1, + compare => 2, + prefix => 2, + lorder => 1, + }, + GOT => {}, + }, $pkg ; +} + + +package DB_File ; + +use warnings; +use strict; +our ($VERSION, @ISA, @EXPORT, $AUTOLOAD, $DB_BTREE, $DB_HASH, $DB_RECNO); +our ($db_version, $use_XSLoader, $splice_end_array_no_length, $splice_end_array, $Error); +use Carp; + + +$VERSION = "1.835" ; +$VERSION = eval $VERSION; # needed for dev releases + +{ + local $SIG{__WARN__} = sub {$splice_end_array_no_length = join(" ",@_);}; + my @a =(1); splice(@a, 3); + $splice_end_array_no_length = + ($splice_end_array_no_length =~ /^splice\(\) offset past end of array at /); +} +{ + local $SIG{__WARN__} = sub {$splice_end_array = join(" ", @_);}; + my @a =(1); splice(@a, 3, 1); + $splice_end_array = + ($splice_end_array =~ /^splice\(\) offset past end of array at /); +} + +#typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE; +$DB_BTREE = new DB_File::BTREEINFO ; +$DB_HASH = new DB_File::HASHINFO ; +$DB_RECNO = new DB_File::RECNOINFO ; + +require Tie::Hash; +require Exporter; +BEGIN { + $use_XSLoader = 1 ; + { local $SIG{__DIE__} ; eval { require XSLoader } ; } + + if ($@) { + $use_XSLoader = 0 ; + require DynaLoader; + @ISA = qw(DynaLoader); + } +} + +push @ISA, qw(Tie::Hash Exporter); +@EXPORT = qw( + $DB_BTREE $DB_HASH $DB_RECNO + + BTREEMAGIC + BTREEVERSION + DB_LOCK + DB_SHMEM + DB_TXN + HASHMAGIC + HASHVERSION + MAX_PAGE_NUMBER + MAX_PAGE_OFFSET + MAX_REC_NUMBER + RET_ERROR + RET_SPECIAL + RET_SUCCESS + R_CURSOR + R_DUP + R_FIRST + R_FIXEDLEN + R_IAFTER + R_IBEFORE + R_LAST + R_NEXT + R_NOKEY + R_NOOVERWRITE + R_PREV + R_RECNOSYNC + R_SETCURSOR + R_SNAPSHOT + __R_UNUSED + +); + +sub AUTOLOAD { + my($constname); + ($constname = $AUTOLOAD) =~ s/.*:://; + my ($error, $val) = constant($constname); + Carp::croak $error if $error; + no strict 'refs'; + *{$AUTOLOAD} = sub { $val }; + goto &{$AUTOLOAD}; +} + + +eval { + # Make all Fcntl O_XXX constants available for importing + require Fcntl; + my @O = grep /^O_/, @Fcntl::EXPORT; + Fcntl->import(@O); # first we import what we want to export + push(@EXPORT, @O); +}; + +if ($use_XSLoader) + { XSLoader::load("DB_File", $VERSION)} +else + { bootstrap DB_File $VERSION } + +sub tie_hash_or_array +{ + my (@arg) = @_ ; + my $tieHASH = ( (caller(1))[3] =~ /TIEHASH/ ) ; + + use File::Spec; + $arg[1] = File::Spec->rel2abs($arg[1]) + if defined $arg[1] ; + + $arg[4] = tied %{ $arg[4] } + if @arg >= 5 && ref $arg[4] && $arg[4] =~ /=HASH/ && tied %{ $arg[4] } ; + + $arg[2] = O_CREAT()|O_RDWR() if @arg >=3 && ! defined $arg[2]; + $arg[3] = 0666 if @arg >=4 && ! defined $arg[3]; + + # make recno in Berkeley DB version 2 (or better) work like + # recno in version 1. + if ($db_version >= 4 and ! $tieHASH) { + $arg[2] |= O_CREAT(); + } + + if ($db_version > 1 and defined $arg[4] and $arg[4] =~ /RECNO/ and + $arg[1] and ! -e $arg[1]) { + open(FH, ">$arg[1]") or return undef ; + close FH ; + chmod $arg[3] ? $arg[3] : 0666 , $arg[1] ; + } + + DoTie_($tieHASH, @arg) ; +} + +sub TIEHASH +{ + tie_hash_or_array(@_) ; +} + +sub TIEARRAY +{ + tie_hash_or_array(@_) ; +} + +sub CLEAR +{ + my $self = shift; + my $key = 0 ; + my $value = "" ; + my $status = $self->seq($key, $value, R_FIRST()); + my @keys; + + while ($status == 0) { + push @keys, $key; + $status = $self->seq($key, $value, R_NEXT()); + } + foreach $key (reverse @keys) { + my $s = $self->del($key); + } +} + +sub EXTEND { } + +sub STORESIZE +{ + my $self = shift; + my $length = shift ; + my $current_length = $self->length() ; + + if ($length < $current_length) { + my $key ; + for ($key = $current_length - 1 ; $key >= $length ; -- $key) + { $self->del($key) } + } + elsif ($length > $current_length) { + $self->put($length-1, "") ; + } +} + + +sub SPLICE +{ + my $self = shift; + my $offset = shift; + if (not defined $offset) { + warnings::warnif('uninitialized', 'Use of uninitialized value in splice'); + $offset = 0; + } + + my $has_length = @_; + my $length = @_ ? shift : 0; + # Carping about definedness comes _after_ the OFFSET sanity check. + # This is so we get the same error messages as Perl's splice(). + # + + my @list = @_; + + my $size = $self->FETCHSIZE(); + + # 'If OFFSET is negative then it start that far from the end of + # the array.' + # + if ($offset < 0) { + my $new_offset = $size + $offset; + if ($new_offset < 0) { + die "Modification of non-creatable array value attempted, " + . "subscript $offset"; + } + $offset = $new_offset; + } + + if (not defined $length) { + warnings::warnif('uninitialized', 'Use of uninitialized value in splice'); + $length = 0; + } + + if ($offset > $size) { + $offset = $size; + warnings::warnif('misc', 'splice() offset past end of array') + if $has_length ? $splice_end_array : $splice_end_array_no_length; + } + + # 'If LENGTH is omitted, removes everything from OFFSET onward.' + if (not defined $length) { + $length = $size - $offset; + } + + # 'If LENGTH is negative, leave that many elements off the end of + # the array.' + # + if ($length < 0) { + $length = $size - $offset + $length; + + if ($length < 0) { + # The user must have specified a length bigger than the + # length of the array passed in. But perl's splice() + # doesn't catch this, it just behaves as for length=0. + # + $length = 0; + } + } + + if ($length > $size - $offset) { + $length = $size - $offset; + } + + # $num_elems holds the current number of elements in the database. + my $num_elems = $size; + + # 'Removes the elements designated by OFFSET and LENGTH from an + # array,'... + # + my @removed = (); + foreach (0 .. $length - 1) { + my $old; + my $status = $self->get($offset, $old); + if ($status != 0) { + my $msg = "error from Berkeley DB on get($offset, \$old)"; + if ($status == 1) { + $msg .= ' (no such element?)'; + } + else { + $msg .= ": error status $status"; + if (defined $! and $! ne '') { + $msg .= ", message $!"; + } + } + die $msg; + } + push @removed, $old; + + $status = $self->del($offset); + if ($status != 0) { + my $msg = "error from Berkeley DB on del($offset)"; + if ($status == 1) { + $msg .= ' (no such element?)'; + } + else { + $msg .= ": error status $status"; + if (defined $! and $! ne '') { + $msg .= ", message $!"; + } + } + die $msg; + } + + -- $num_elems; + } + + # ...'and replaces them with the elements of LIST, if any.' + my $pos = $offset; + while (defined (my $elem = shift @list)) { + my $old_pos = $pos; + my $status; + if ($pos >= $num_elems) { + $status = $self->put($pos, $elem); + } + else { + $status = $self->put($pos, $elem, $self->R_IBEFORE); + } + + if ($status != 0) { + my $msg = "error from Berkeley DB on put($pos, $elem, ...)"; + if ($status == 1) { + $msg .= ' (no such element?)'; + } + else { + $msg .= ", error status $status"; + if (defined $! and $! ne '') { + $msg .= ", message $!"; + } + } + die $msg; + } + + die "pos unexpectedly changed from $old_pos to $pos with R_IBEFORE" + if $old_pos != $pos; + + ++ $pos; + ++ $num_elems; + } + + if (wantarray) { + # 'In list context, returns the elements removed from the + # array.' + # + return @removed; + } + elsif (defined wantarray and not wantarray) { + # 'In scalar context, returns the last element removed, or + # undef if no elements are removed.' + # + if (@removed) { + my $last = pop @removed; + return "$last"; + } + else { + return undef; + } + } + elsif (not defined wantarray) { + # Void context + } + else { die } +} +sub ::DB_File::splice { &SPLICE } + +sub find_dup +{ + croak "Usage: \$db->find_dup(key,value)\n" + unless @_ == 3 ; + + my $db = shift ; + my ($origkey, $value_wanted) = @_ ; + my ($key, $value) = ($origkey, 0); + my ($status) = 0 ; + + for ($status = $db->seq($key, $value, R_CURSOR() ) ; + $status == 0 ; + $status = $db->seq($key, $value, R_NEXT() ) ) { + + return 0 if $key eq $origkey and $value eq $value_wanted ; + } + + return $status ; +} + +sub del_dup +{ + croak "Usage: \$db->del_dup(key,value)\n" + unless @_ == 3 ; + + my $db = shift ; + my ($key, $value) = @_ ; + my ($status) = $db->find_dup($key, $value) ; + return $status if $status != 0 ; + + $status = $db->del($key, R_CURSOR() ) ; + return $status ; +} + +sub get_dup +{ + croak "Usage: \$db->get_dup(key [,flag])\n" + unless @_ == 2 or @_ == 3 ; + + my $db = shift ; + my $key = shift ; + my $flag = shift ; + my $value = 0 ; + my $origkey = $key ; + my $wantarray = wantarray ; + my %values = () ; + my @values = () ; + my $counter = 0 ; + my $status = 0 ; + + # iterate through the database until either EOF ($status == 0) + # or a different key is encountered ($key ne $origkey). + for ($status = $db->seq($key, $value, R_CURSOR()) ; + $status == 0 and $key eq $origkey ; + $status = $db->seq($key, $value, R_NEXT()) ) { + + # save the value or count number of matches + if ($wantarray) { + if ($flag) + { ++ $values{$value} } + else + { push (@values, $value) } + } + else + { ++ $counter } + + } + + return ($wantarray ? ($flag ? %values : @values) : $counter) ; +} + + +sub STORABLE_freeze +{ + my $type = ref shift; + croak "Cannot freeze $type object\n"; +} + +sub STORABLE_thaw +{ + my $type = ref shift; + croak "Cannot thaw $type object\n"; +} + + + +1; +__END__ + +=head1 NAME + +DB_File - Perl5 access to Berkeley DB version 1.x + +=head1 SYNOPSIS + + use DB_File; + + [$X =] tie %hash, 'DB_File', [$filename, $flags, $mode, $DB_HASH] ; + [$X =] tie %hash, 'DB_File', $filename, $flags, $mode, $DB_BTREE ; + [$X =] tie @array, 'DB_File', $filename, $flags, $mode, $DB_RECNO ; + + $status = $X->del($key [, $flags]) ; + $status = $X->put($key, $value [, $flags]) ; + $status = $X->get($key, $value [, $flags]) ; + $status = $X->seq($key, $value, $flags) ; + $status = $X->sync([$flags]) ; + $status = $X->fd ; + + # BTREE only + $count = $X->get_dup($key) ; + @list = $X->get_dup($key) ; + %list = $X->get_dup($key, 1) ; + $status = $X->find_dup($key, $value) ; + $status = $X->del_dup($key, $value) ; + + # RECNO only + $a = $X->length; + $a = $X->pop ; + $X->push(list); + $a = $X->shift; + $X->unshift(list); + @r = $X->splice(offset, length, elements); + + # DBM Filters + $old_filter = $db->filter_store_key ( sub { ... } ) ; + $old_filter = $db->filter_store_value( sub { ... } ) ; + $old_filter = $db->filter_fetch_key ( sub { ... } ) ; + $old_filter = $db->filter_fetch_value( sub { ... } ) ; + + untie %hash ; + untie @array ; + +=head1 DESCRIPTION + +B is a module which allows Perl programs to make use of the +facilities provided by Berkeley DB version 1.x (if you have a newer +version of DB, see L). +It is assumed that you have a copy of the Berkeley DB manual pages at +hand when reading this documentation. The interface defined here +mirrors the Berkeley DB interface closely. + +Berkeley DB is a C library which provides a consistent interface to a +number of database formats. B provides an interface to all +three of the database types currently supported by Berkeley DB. + +The file types are: + +=over 5 + +=item B + +This database type allows arbitrary key/value pairs to be stored in data +files. This is equivalent to the functionality provided by other +hashing packages like DBM, NDBM, ODBM, GDBM, and SDBM. Remember though, +the files created using DB_HASH are not compatible with any of the +other packages mentioned. + +A default hashing algorithm, which will be adequate for most +applications, is built into Berkeley DB. If you do need to use your own +hashing algorithm it is possible to write your own in Perl and have +B use it instead. + +=item B + +The btree format allows arbitrary key/value pairs to be stored in a +sorted, balanced binary tree. + +As with the DB_HASH format, it is possible to provide a user defined +Perl routine to perform the comparison of keys. By default, though, the +keys are stored in lexical order. + +=item B + +DB_RECNO allows both fixed-length and variable-length flat text files +to be manipulated using the same key/value pair interface as in DB_HASH +and DB_BTREE. In this case the key will consist of a record (line) +number. + +=back + +=head2 Using DB_File with Berkeley DB version 2 or greater + +Although B is intended to be used with Berkeley DB version 1, +it can also be used with version 2, 3 or 4. In this case the interface is +limited to the functionality provided by Berkeley DB 1.x. Anywhere the +version 2 or greater interface differs, B arranges for it to work +like version 1. This feature allows B scripts that were built +with version 1 to be migrated to version 2 or greater without any changes. + +If you want to make use of the new features available in Berkeley DB +2.x or greater, use the Perl module B instead. + +B The database file format has changed multiple times in Berkeley +DB version 2, 3 and 4. If you cannot recreate your databases, you +must dump any existing databases with either the C or the +C utility that comes with Berkeley DB. +Once you have rebuilt DB_File to use Berkeley DB version 2 or greater, +your databases can be recreated using C. Refer to the Berkeley DB +documentation for further details. + +Please read L<"COPYRIGHT"> before using version 2.x or greater of Berkeley +DB with DB_File. + +=head2 Interface to Berkeley DB + +B allows access to Berkeley DB files using the tie() mechanism +in Perl 5 (for full details, see L). This facility +allows B to access Berkeley DB files using either an +associative array (for DB_HASH & DB_BTREE file types) or an ordinary +array (for the DB_RECNO file type). + +In addition to the tie() interface, it is also possible to access most +of the functions provided in the Berkeley DB API directly. +See L. + +=head2 Opening a Berkeley DB Database File + +Berkeley DB uses the function dbopen() to open or create a database. +Here is the C prototype for dbopen(): + + DB* + dbopen (const char * file, int flags, int mode, + DBTYPE type, const void * openinfo) + +The parameter C is an enumeration which specifies which of the 3 +interface methods (DB_HASH, DB_BTREE or DB_RECNO) is to be used. +Depending on which of these is actually chosen, the final parameter, +I points to a data structure which allows tailoring of the +specific interface method. + +This interface is handled slightly differently in B. Here is +an equivalent call using B: + + tie %array, 'DB_File', $filename, $flags, $mode, $DB_HASH ; + +The C, C and C parameters are the direct +equivalent of their dbopen() counterparts. The final parameter $DB_HASH +performs the function of both the C and C parameters in +dbopen(). + +In the example above $DB_HASH is actually a pre-defined reference to a +hash object. B has three of these pre-defined references. +Apart from $DB_HASH, there is also $DB_BTREE and $DB_RECNO. + +The keys allowed in each of these pre-defined references is limited to +the names used in the equivalent C structure. So, for example, the +$DB_HASH reference will only allow keys called C, C, +C, C, C and C. + +To change one of these elements, just assign to it like this: + + $DB_HASH->{'cachesize'} = 10000 ; + +The three predefined variables $DB_HASH, $DB_BTREE and $DB_RECNO are +usually adequate for most applications. If you do need to create extra +instances of these objects, constructors are available for each file +type. + +Here are examples of the constructors and the valid options available +for DB_HASH, DB_BTREE and DB_RECNO respectively. + + $a = new DB_File::HASHINFO ; + $a->{'bsize'} ; + $a->{'cachesize'} ; + $a->{'ffactor'}; + $a->{'hash'} ; + $a->{'lorder'} ; + $a->{'nelem'} ; + + $b = new DB_File::BTREEINFO ; + $b->{'flags'} ; + $b->{'cachesize'} ; + $b->{'maxkeypage'} ; + $b->{'minkeypage'} ; + $b->{'psize'} ; + $b->{'compare'} ; + $b->{'prefix'} ; + $b->{'lorder'} ; + + $c = new DB_File::RECNOINFO ; + $c->{'bval'} ; + $c->{'cachesize'} ; + $c->{'psize'} ; + $c->{'flags'} ; + $c->{'lorder'} ; + $c->{'reclen'} ; + $c->{'bfname'} ; + +The values stored in the hashes above are mostly the direct equivalent +of their C counterpart. Like their C counterparts, all are set to a +default values - that means you don't have to set I of the +values when you only want to change one. Here is an example: + + $a = new DB_File::HASHINFO ; + $a->{'cachesize'} = 12345 ; + tie %y, 'DB_File', "filename", $flags, 0777, $a ; + +A few of the options need extra discussion here. When used, the C +equivalent of the keys C, C and C store pointers +to C functions. In B these keys are used to store references +to Perl subs. Below are templates for each of the subs: + + sub hash + { + my ($data) = @_ ; + ... + # return the hash value for $data + return $hash ; + } + + sub compare + { + my ($key, $key2) = @_ ; + ... + # return 0 if $key1 eq $key2 + # -1 if $key1 lt $key2 + # 1 if $key1 gt $key2 + return (-1 , 0 or 1) ; + } + + sub prefix + { + my ($key, $key2) = @_ ; + ... + # return number of bytes of $key2 which are + # necessary to determine that it is greater than $key1 + return $bytes ; + } + +See L for an example of using the +C template. + +If you are using the DB_RECNO interface and you intend making use of +C, you should check out L. + +=head2 Default Parameters + +It is possible to omit some or all of the final 4 parameters in the +call to C and let them take default values. As DB_HASH is the most +common file format used, the call: + + tie %A, "DB_File", "filename" ; + +is equivalent to: + + tie %A, "DB_File", "filename", O_CREAT|O_RDWR, 0666, $DB_HASH ; + +It is also possible to omit the filename parameter as well, so the +call: + + tie %A, "DB_File" ; + +is equivalent to: + + tie %A, "DB_File", undef, O_CREAT|O_RDWR, 0666, $DB_HASH ; + +See L for a discussion on the use of C +in place of a filename. + +=head2 In Memory Databases + +Berkeley DB allows the creation of in-memory databases by using NULL +(that is, a C<(char *)0> in C) in place of the filename. B +uses C instead of NULL to provide this functionality. + +=head1 DB_HASH + +The DB_HASH file format is probably the most commonly used of the three +file formats that B supports. It is also very straightforward +to use. + +=head2 A Simple Example + +This example shows how to create a database, add key/value pairs to the +database, delete keys/value pairs and finally how to enumerate the +contents of the database. + + use warnings ; + use strict ; + use DB_File ; + our (%h, $k, $v) ; + + unlink "fruit" ; + tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0666, $DB_HASH + or die "Cannot open file 'fruit': $!\n"; + + # Add a few key/value pairs to the file + $h{"apple"} = "red" ; + $h{"orange"} = "orange" ; + $h{"banana"} = "yellow" ; + $h{"tomato"} = "red" ; + + # Check for existence of a key + print "Banana Exists\n\n" if $h{"banana"} ; + + # Delete a key/value pair. + delete $h{"apple"} ; + + # print the contents of the file + while (($k, $v) = each %h) + { print "$k -> $v\n" } + + untie %h ; + +here is the output: + + Banana Exists + + orange -> orange + tomato -> red + banana -> yellow + +Note that the like ordinary associative arrays, the order of the keys +retrieved is in an apparently random order. + +=head1 DB_BTREE + +The DB_BTREE format is useful when you want to store data in a given +order. By default the keys will be stored in lexical order, but as you +will see from the example shown in the next section, it is very easy to +define your own sorting function. + +=head2 Changing the BTREE sort order + +This script shows how to override the default sorting algorithm that +BTREE uses. Instead of using the normal lexical ordering, a case +insensitive compare function will be used. + + use warnings ; + use strict ; + use DB_File ; + + my %h ; + + sub Compare + { + my ($key1, $key2) = @_ ; + "\L$key1" cmp "\L$key2" ; + } + + # specify the Perl sub that will do the comparison + $DB_BTREE->{'compare'} = \&Compare ; + + unlink "tree" ; + tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open file 'tree': $!\n" ; + + # Add a key/value pair to the file + $h{'Wall'} = 'Larry' ; + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + $h{'duck'} = 'donald' ; + + # Delete + delete $h{"duck"} ; + + # Cycle through the keys printing them in order. + # Note it is not necessary to sort the keys as + # the btree will have kept them in order automatically. + foreach (keys %h) + { print "$_\n" } + + untie %h ; + +Here is the output from the code above. + + mouse + Smith + Wall + +There are a few point to bear in mind if you want to change the +ordering in a BTREE database: + +=over 5 + +=item 1. + +The new compare function must be specified when you create the database. + +=item 2. + +You cannot change the ordering once the database has been created. Thus +you must use the same compare function every time you access the +database. + +=item 3 + +Duplicate keys are entirely defined by the comparison function. +In the case-insensitive example above, the keys: 'KEY' and 'key' +would be considered duplicates, and assigning to the second one +would overwrite the first. If duplicates are allowed for (with the +R_DUP flag discussed below), only a single copy of duplicate keys +is stored in the database --- so (again with example above) assigning +three values to the keys: 'KEY', 'Key', and 'key' would leave just +the first key: 'KEY' in the database with three values. For some +situations this results in information loss, so care should be taken +to provide fully qualified comparison functions when necessary. +For example, the above comparison routine could be modified to +additionally compare case-sensitively if two keys are equal in the +case insensitive comparison: + + sub compare { + my($key1, $key2) = @_; + lc $key1 cmp lc $key2 || + $key1 cmp $key2; + } + +And now you will only have duplicates when the keys themselves +are truly the same. (note: in versions of the db library prior to +about November 1996, such duplicate keys were retained so it was +possible to recover the original keys in sets of keys that +compared as equal). + + +=back + +=head2 Handling Duplicate Keys + +The BTREE file type optionally allows a single key to be associated +with an arbitrary number of values. This option is enabled by setting +the flags element of C<$DB_BTREE> to R_DUP when creating the database. + +There are some difficulties in using the tied hash interface if you +want to manipulate a BTREE database with duplicate keys. Consider this +code: + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, %h) ; + + $filename = "tree" ; + unlink $filename ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'Wall'} = 'Larry' ; + $h{'Wall'} = 'Brick' ; # Note the duplicate key + $h{'Wall'} = 'Brick' ; # Note the duplicate key and value + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + + # iterate through the associative array + # and print each key/value pair. + foreach (sort keys %h) + { print "$_ -> $h{$_}\n" } + + untie %h ; + +Here is the output: + + Smith -> John + Wall -> Larry + Wall -> Larry + Wall -> Larry + mouse -> mickey + +As you can see 3 records have been successfully created with key C +- the only thing is, when they are retrieved from the database they +I to have the same value, namely C. The problem is caused +by the way that the associative array interface works. Basically, when +the associative array interface is used to fetch the value associated +with a given key, it will only ever retrieve the first value. + +Although it may not be immediately obvious from the code above, the +associative array interface can be used to write values with duplicate +keys, but it cannot be used to read them back from the database. + +The way to get around this problem is to use the Berkeley DB API method +called C. This method allows sequential access to key/value +pairs. See L for details of both the C method +and the API in general. + +Here is the script above rewritten using the C API method. + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $status, $key, $value) ; + + $filename = "tree" ; + unlink $filename ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'Wall'} = 'Larry' ; + $h{'Wall'} = 'Brick' ; # Note the duplicate key + $h{'Wall'} = 'Brick' ; # Note the duplicate key and value + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + + # iterate through the btree using seq + # and print each key/value pair. + $key = $value = 0 ; + for ($status = $x->seq($key, $value, R_FIRST) ; + $status == 0 ; + $status = $x->seq($key, $value, R_NEXT) ) + { print "$key -> $value\n" } + + undef $x ; + untie %h ; + +that prints: + + Smith -> John + Wall -> Brick + Wall -> Brick + Wall -> Larry + mouse -> mickey + +This time we have got all the key/value pairs, including the multiple +values associated with the key C. + +To make life easier when dealing with duplicate keys, B comes with +a few utility methods. + +=head2 The get_dup() Method + +The C method assists in +reading duplicate values from BTREE databases. The method can take the +following forms: + + $count = $x->get_dup($key) ; + @list = $x->get_dup($key) ; + %list = $x->get_dup($key, 1) ; + +In a scalar context the method returns the number of values associated +with the key, C<$key>. + +In list context, it returns all the values which match C<$key>. Note +that the values will be returned in an apparently random order. + +In list context, if the second parameter is present and evaluates +TRUE, the method returns an associative array. The keys of the +associative array correspond to the values that matched in the BTREE +and the values of the array are a count of the number of times that +particular value occurred in the BTREE. + +So assuming the database created above, we can use C like +this: + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h) ; + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + my $cnt = $x->get_dup("Wall") ; + print "Wall occurred $cnt times\n" ; + + my %hash = $x->get_dup("Wall", 1) ; + print "Larry is there\n" if $hash{'Larry'} ; + print "There are $hash{'Brick'} Brick Walls\n" ; + + my @list = sort $x->get_dup("Wall") ; + print "Wall => [@list]\n" ; + + @list = $x->get_dup("Smith") ; + print "Smith => [@list]\n" ; + + @list = $x->get_dup("Dog") ; + print "Dog => [@list]\n" ; + + +and it will print: + + Wall occurred 3 times + Larry is there + There are 2 Brick Walls + Wall => [Brick Brick Larry] + Smith => [John] + Dog => [] + +=head2 The find_dup() Method + + $status = $X->find_dup($key, $value) ; + +This method checks for the existence of a specific key/value pair. If the +pair exists, the cursor is left pointing to the pair and the method +returns 0. Otherwise the method returns a non-zero value. + +Assuming the database from the previous example: + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $found) ; + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + print "Larry Wall is $found there\n" ; + + $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ; + print "Harry Wall is $found there\n" ; + + undef $x ; + untie %h ; + +prints this + + Larry Wall is there + Harry Wall is not there + + +=head2 The del_dup() Method + + $status = $X->del_dup($key, $value) ; + +This method deletes a specific key/value pair. It returns +0 if they exist and have been deleted successfully. +Otherwise the method returns a non-zero value. + +Again assuming the existence of the C database + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $found) ; + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + $x->del_dup("Wall", "Larry") ; + + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + print "Larry Wall is $found there\n" ; + + undef $x ; + untie %h ; + +prints this + + Larry Wall is not there + +=head2 Matching Partial Keys + +The BTREE interface has a feature which allows partial keys to be +matched. This functionality is I available when the C method +is used along with the R_CURSOR flag. + + $x->seq($key, $value, R_CURSOR) ; + +Here is the relevant quote from the dbopen man page where it defines +the use of the R_CURSOR flag with seq: + + Note, for the DB_BTREE access method, the returned key is not + necessarily an exact match for the specified key. The returned key + is the smallest key greater than or equal to the specified key, + permitting partial key matches and range searches. + +In the example script below, the C sub uses this feature to find +and print the first matching key/value pair given a partial key. + + use warnings ; + use strict ; + use DB_File ; + use Fcntl ; + + my ($filename, $x, %h, $st, $key, $value) ; + + sub match + { + my $key = shift ; + my $value = 0; + my $orig_key = $key ; + $x->seq($key, $value, R_CURSOR) ; + print "$orig_key\t-> $key\t-> $value\n" ; + } + + $filename = "tree" ; + unlink $filename ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'mouse'} = 'mickey' ; + $h{'Wall'} = 'Larry' ; + $h{'Walls'} = 'Brick' ; + $h{'Smith'} = 'John' ; + + + $key = $value = 0 ; + print "IN ORDER\n" ; + for ($st = $x->seq($key, $value, R_FIRST) ; + $st == 0 ; + $st = $x->seq($key, $value, R_NEXT) ) + + { print "$key -> $value\n" } + + print "\nPARTIAL MATCH\n" ; + + match "Wa" ; + match "A" ; + match "a" ; + + undef $x ; + untie %h ; + +Here is the output: + + IN ORDER + Smith -> John + Wall -> Larry + Walls -> Brick + mouse -> mickey + + PARTIAL MATCH + Wa -> Wall -> Larry + A -> Smith -> John + a -> mouse -> mickey + +=head1 DB_RECNO + +DB_RECNO provides an interface to flat text files. Both variable and +fixed length records are supported. + +In order to make RECNO more compatible with Perl, the array offset for +all RECNO arrays begins at 0 rather than 1 as in Berkeley DB. + +As with normal Perl arrays, a RECNO array can be accessed using +negative indexes. The index -1 refers to the last element of the array, +-2 the second last, and so on. Attempting to access an element before +the start of the array will raise a fatal run-time error. + +=head2 The 'bval' Option + +The operation of the bval option warrants some discussion. Here is the +definition of bval from the Berkeley DB 1.85 recno manual page: + + The delimiting byte to be used to mark the end of a + record for variable-length records, and the pad charac- + ter for fixed-length records. If no value is speci- + fied, newlines (``\n'') are used to mark the end of + variable-length records and fixed-length records are + padded with spaces. + +The second sentence is wrong. In actual fact bval will only default to +C<"\n"> when the openinfo parameter in dbopen is NULL. If a non-NULL +openinfo parameter is used at all, the value that happens to be in bval +will be used. That means you always have to specify bval when making +use of any of the options in the openinfo parameter. This documentation +error will be fixed in the next release of Berkeley DB. + +That clarifies the situation with regards Berkeley DB itself. What +about B? Well, the behavior defined in the quote above is +quite useful, so B conforms to it. + +That means that you can specify other options (e.g. cachesize) and +still have bval default to C<"\n"> for variable length records, and +space for fixed length records. + +Also note that the bval option only allows you to specify a single byte +as a delimiter. + +=head2 A Simple Example + +Here is a simple example that uses RECNO (if you are using a version +of Perl earlier than 5.004_57 this example won't work -- see +L for a workaround). + + use warnings ; + use strict ; + use DB_File ; + + my $filename = "text" ; + unlink $filename ; + + my @h ; + tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_RECNO + or die "Cannot open file 'text': $!\n" ; + + # Add a few key/value pairs to the file + $h[0] = "orange" ; + $h[1] = "blue" ; + $h[2] = "yellow" ; + + push @h, "green", "black" ; + + my $elements = scalar @h ; + print "The array contains $elements entries\n" ; + + my $last = pop @h ; + print "popped $last\n" ; + + unshift @h, "white" ; + my $first = shift @h ; + print "shifted $first\n" ; + + # Check for existence of a key + print "Element 1 Exists with value $h[1]\n" if $h[1] ; + + # use a negative index + print "The last element is $h[-1]\n" ; + print "The 2nd last element is $h[-2]\n" ; + + untie @h ; + +Here is the output from the script: + + The array contains 5 entries + popped black + shifted white + Element 1 Exists with value blue + The last element is green + The 2nd last element is yellow + +=head2 Extra RECNO Methods + +If you are using a version of Perl earlier than 5.004_57, the tied +array interface is quite limited. In the example script above +C, C, C, C +or determining the array length will not work with a tied array. + +To make the interface more useful for older versions of Perl, a number +of methods are supplied with B to simulate the missing array +operations. All these methods are accessed via the object returned from +the tie call. + +Here are the methods: + +=over 5 + +=item B<$X-Epush(list) ;> + +Pushes the elements of C to the end of the array. + +=item B<$value = $X-Epop ;> + +Removes and returns the last element of the array. + +=item B<$X-Eshift> + +Removes and returns the first element of the array. + +=item B<$X-Eunshift(list) ;> + +Pushes the elements of C to the start of the array. + +=item B<$X-Elength> + +Returns the number of elements in the array. + +=item B<$X-Esplice(offset, length, elements);> + +Returns a splice of the array. + +=back + +=head2 Another Example + +Here is a more complete example that makes use of some of the methods +described above. It also makes use of the API interface directly (see +L). + + use warnings ; + use strict ; + my (@h, $H, $file, $i) ; + use DB_File ; + use Fcntl ; + + $file = "text" ; + + unlink $file ; + + $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0666, $DB_RECNO + or die "Cannot open file $file: $!\n" ; + + # first create a text file to play with + $h[0] = "zero" ; + $h[1] = "one" ; + $h[2] = "two" ; + $h[3] = "three" ; + $h[4] = "four" ; + + + # Print the records in order. + # + # The length method is needed here because evaluating a tied + # array in a scalar context does not return the number of + # elements in the array. + + print "\nORIGINAL\n" ; + foreach $i (0 .. $H->length - 1) { + print "$i: $h[$i]\n" ; + } + + # use the push & pop methods + $a = $H->pop ; + $H->push("last") ; + print "\nThe last record was [$a]\n" ; + + # and the shift & unshift methods + $a = $H->shift ; + $H->unshift("first") ; + print "The first record was [$a]\n" ; + + # Use the API to add a new record after record 2. + $i = 2 ; + $H->put($i, "Newbie", R_IAFTER) ; + + # and a new record before record 1. + $i = 1 ; + $H->put($i, "New One", R_IBEFORE) ; + + # delete record 3 + $H->del(3) ; + + # now print the records in reverse order + print "\nREVERSE\n" ; + for ($i = $H->length - 1 ; $i >= 0 ; -- $i) + { print "$i: $h[$i]\n" } + + # same again, but use the API functions instead + print "\nREVERSE again\n" ; + my ($s, $k, $v) = (0, 0, 0) ; + for ($s = $H->seq($k, $v, R_LAST) ; + $s == 0 ; + $s = $H->seq($k, $v, R_PREV)) + { print "$k: $v\n" } + + undef $H ; + untie @h ; + +and this is what it outputs: + + ORIGINAL + 0: zero + 1: one + 2: two + 3: three + 4: four + + The last record was [four] + The first record was [zero] + + REVERSE + 5: last + 4: three + 3: Newbie + 2: one + 1: New One + 0: first + + REVERSE again + 5: last + 4: three + 3: Newbie + 2: one + 1: New One + 0: first + +Notes: + +=over 5 + +=item 1. + +Rather than iterating through the array, C<@h> like this: + + foreach $i (@h) + +it is necessary to use either this: + + foreach $i (0 .. $H->length - 1) + +or this: + + for ($a = $H->get($k, $v, R_FIRST) ; + $a == 0 ; + $a = $H->get($k, $v, R_NEXT) ) + +=item 2. + +Notice that both times the C method was used the record index was +specified using a variable, C<$i>, rather than the literal value +itself. This is because C will return the record number of the +inserted line via that parameter. + +=back + +=head1 THE API INTERFACE + +As well as accessing Berkeley DB using a tied hash or array, it is also +possible to make direct use of most of the API functions defined in the +Berkeley DB documentation. + +To do this you need to store a copy of the object returned from the tie. + + $db = tie %hash, "DB_File", "filename" ; + +Once you have done that, you can access the Berkeley DB API functions +as B methods directly like this: + + $db->put($key, $value, R_NOOVERWRITE) ; + +B If you have saved a copy of the object returned from +C, the underlying database file will I be closed until both +the tied variable is untied and all copies of the saved object are +destroyed. + + use DB_File ; + $db = tie %hash, "DB_File", "filename" + or die "Cannot tie filename: $!" ; + ... + undef $db ; + untie %hash ; + +See L for more details. + +All the functions defined in L are available except for +close() and dbopen() itself. The B method interface to the +supported functions have been implemented to mirror the way Berkeley DB +works whenever possible. In particular note that: + +=over 5 + +=item * + +The methods return a status value. All return 0 on success. +All return -1 to signify an error and set C<$!> to the exact +error code. The return code 1 generally (but not always) means that the +key specified did not exist in the database. + +Other return codes are defined. See below and in the Berkeley DB +documentation for details. The Berkeley DB documentation should be used +as the definitive source. + +=item * + +Whenever a Berkeley DB function returns data via one of its parameters, +the equivalent B method does exactly the same. + +=item * + +If you are careful, it is possible to mix API calls with the tied +hash/array interface in the same piece of code. Although only a few of +the methods used to implement the tied interface currently make use of +the cursor, you should always assume that the cursor has been changed +any time the tied hash/array interface is used. As an example, this +code will probably not do what you expect: + + $X = tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE + or die "Cannot tie $filename: $!" ; + + # Get the first key/value pair and set the cursor + $X->seq($key, $value, R_FIRST) ; + + # this line will modify the cursor + $count = scalar keys %x ; + + # Get the second key/value pair. + # oops, it didn't, it got the last key/value pair! + $X->seq($key, $value, R_NEXT) ; + +The code above can be rearranged to get around the problem, like this: + + $X = tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE + or die "Cannot tie $filename: $!" ; + + # this line will modify the cursor + $count = scalar keys %x ; + + # Get the first key/value pair and set the cursor + $X->seq($key, $value, R_FIRST) ; + + # Get the second key/value pair. + # worked this time. + $X->seq($key, $value, R_NEXT) ; + +=back + +All the constants defined in L for use in the flags parameters +in the methods defined below are also available. Refer to the Berkeley +DB documentation for the precise meaning of the flags values. + +Below is a list of the methods available. + +=over 5 + +=item B<$status = $X-Eget($key, $value [, $flags]) ;> + +Given a key (C<$key>) this method reads the value associated with it +from the database. The value read from the database is returned in the +C<$value> parameter. + +If the key does not exist the method returns 1. + +No flags are currently defined for this method. + +=item B<$status = $X-Eput($key, $value [, $flags]) ;> + +Stores the key/value pair in the database. + +If you use either the R_IAFTER or R_IBEFORE flags, the C<$key> parameter +will have the record number of the inserted key/value pair set. + +Valid flags are R_CURSOR, R_IAFTER, R_IBEFORE, R_NOOVERWRITE and +R_SETCURSOR. + +=item B<$status = $X-Edel($key [, $flags]) ;> + +Removes all key/value pairs with key C<$key> from the database. + +A return code of 1 means that the requested key was not in the +database. + +R_CURSOR is the only valid flag at present. + +=item B<$status = $X-Efd ;> + +Returns the file descriptor for the underlying database. + +See L for an explanation for why you should +not use C to lock your database. + +=item B<$status = $X-Eseq($key, $value, $flags) ;> + +This interface allows sequential retrieval from the database. See +L for full details. + +Both the C<$key> and C<$value> parameters will be set to the key/value +pair read from the database. + +The flags parameter is mandatory. The valid flag values are R_CURSOR, +R_FIRST, R_LAST, R_NEXT and R_PREV. + +=item B<$status = $X-Esync([$flags]) ;> + +Flushes any cached buffers to disk. + +R_RECNOSYNC is the only valid flag at present. + +=back + +=head1 DBM FILTERS + +A DBM Filter is a piece of code that is be used when you I +want to make the same transformation to all keys and/or values in a +DBM database. + +There are four methods associated with DBM Filters. All work identically, +and each is used to install (or uninstall) a single DBM Filter. Each +expects a single parameter, namely a reference to a sub. The only +difference between them is the place that the filter is installed. + +To summarise: + +=over 5 + +=item B + +If a filter has been installed with this method, it will be invoked +every time you write a key to a DBM database. + +=item B + +If a filter has been installed with this method, it will be invoked +every time you write a value to a DBM database. + + +=item B + +If a filter has been installed with this method, it will be invoked +every time you read a key from a DBM database. + +=item B + +If a filter has been installed with this method, it will be invoked +every time you read a value from a DBM database. + +=back + +You can use any combination of the methods, from none, to all four. + +All filter methods return the existing filter, if present, or C +in not. + +To delete a filter pass C to it. + +=head2 The Filter + +When each filter is called by Perl, a local copy of C<$_> will contain +the key or value to be filtered. Filtering is achieved by modifying +the contents of C<$_>. The return code from the filter is ignored. + +=head2 An Example -- the NULL termination problem. + +Consider the following scenario. You have a DBM database +that you need to share with a third-party C application. The C application +assumes that I keys and values are NULL terminated. Unfortunately +when Perl writes to DBM databases it doesn't use NULL termination, so +your Perl application will have to manage NULL termination itself. When +you write to the database you will have to use something like this: + + $hash{"$key\0"} = "$value\0" ; + +Similarly the NULL needs to be taken into account when you are considering +the length of existing keys/values. + +It would be much better if you could ignore the NULL terminations issue +in the main application code and have a mechanism that automatically +added the terminating NULL to all keys and values whenever you write to +the database and have them removed when you read from the database. As I'm +sure you have already guessed, this is a problem that DBM Filters can +fix very easily. + + use warnings ; + use strict ; + use DB_File ; + + my %hash ; + my $filename = "filt" ; + unlink $filename ; + + my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH + or die "Cannot open $filename: $!\n" ; + + # Install DBM Filters + $db->filter_fetch_key ( sub { s/\0$// } ) ; + $db->filter_store_key ( sub { $_ .= "\0" } ) ; + $db->filter_fetch_value( sub { s/\0$// } ) ; + $db->filter_store_value( sub { $_ .= "\0" } ) ; + + $hash{"abc"} = "def" ; + my $a = $hash{"ABC"} ; + # ... + undef $db ; + untie %hash ; + +Hopefully the contents of each of the filters should be +self-explanatory. Both "fetch" filters remove the terminating NULL, +and both "store" filters add a terminating NULL. + + +=head2 Another Example -- Key is a C int. + +Here is another real-life example. By default, whenever Perl writes to +a DBM database it always writes the key and value as strings. So when +you use this: + + $hash{12345} = "something" ; + +the key 12345 will get stored in the DBM database as the 5 byte string +"12345". If you actually want the key to be stored in the DBM database +as a C int, you will have to use C when writing, and C +when reading. + +Here is a DBM Filter that does it: + + use warnings ; + use strict ; + use DB_File ; + my %hash ; + my $filename = "filt" ; + unlink $filename ; + + + my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH + or die "Cannot open $filename: $!\n" ; + + $db->filter_fetch_key ( sub { $_ = unpack("i", $_) } ) ; + $db->filter_store_key ( sub { $_ = pack ("i", $_) } ) ; + $hash{123} = "def" ; + # ... + undef $db ; + untie %hash ; + +This time only two filters have been used -- we only need to manipulate +the contents of the key, so it wasn't necessary to install any value +filters. + +=head1 HINTS AND TIPS + + +=head2 Locking: The Trouble with fd + +Until version 1.72 of this module, the recommended technique for locking +B databases was to flock the filehandle returned from the "fd" +function. Unfortunately this technique has been shown to be fundamentally +flawed (Kudos to David Harris for tracking this down). Use it at your own +peril! + +The locking technique went like this. + + $db = tie(%db, 'DB_File', 'foo.db', O_CREAT|O_RDWR, 0644) + || die "dbcreat foo.db $!"; + $fd = $db->fd; + open(DB_FH, "+<&=$fd") || die "dup $!"; + flock (DB_FH, LOCK_EX) || die "flock: $!"; + ... + $db{"Tom"} = "Jerry" ; + ... + flock(DB_FH, LOCK_UN); + undef $db; + untie %db; + close(DB_FH); + +In simple terms, this is what happens: + +=over 5 + +=item 1. + +Use "tie" to open the database. + +=item 2. + +Lock the database with fd & flock. + +=item 3. + +Read & Write to the database. + +=item 4. + +Unlock and close the database. + +=back + +Here is the crux of the problem. A side-effect of opening the B +database in step 2 is that an initial block from the database will get +read from disk and cached in memory. + +To see why this is a problem, consider what can happen when two processes, +say "A" and "B", both want to update the same B database +using the locking steps outlined above. Assume process "A" has already +opened the database and has a write lock, but it hasn't actually updated +the database yet (it has finished step 2, but not started step 3 yet). Now +process "B" tries to open the same database - step 1 will succeed, +but it will block on step 2 until process "A" releases the lock. The +important thing to notice here is that at this point in time both +processes will have cached identical initial blocks from the database. + +Now process "A" updates the database and happens to change some of the +data held in the initial buffer. Process "A" terminates, flushing +all cached data to disk and releasing the database lock. At this point +the database on disk will correctly reflect the changes made by process +"A". + +With the lock released, process "B" can now continue. It also updates the +database and unfortunately it too modifies the data that was in its +initial buffer. Once that data gets flushed to disk it will overwrite +some/all of the changes process "A" made to the database. + +The result of this scenario is at best a database that doesn't contain +what you expect. At worst the database will corrupt. + +The above won't happen every time competing process update the same +B database, but it does illustrate why the technique should +not be used. + +=head2 Safe ways to lock a database + +Starting with version 2.x, Berkeley DB has internal support for locking. +The companion module to this one, B, provides an interface +to this locking functionality. If you are serious about locking +Berkeley DB databases, I strongly recommend using B. + +If using B isn't an option, there are a number of modules +available on CPAN that can be used to implement locking. Each one +implements locking differently and has different goals in mind. It is +therefore worth knowing the difference, so that you can pick the right +one for your application. Here are the three locking wrappers: + +=over 5 + +=item B + +A B wrapper which creates copies of the database file for +read access, so that you have a kind of a multiversioning concurrent read +system. However, updates are still serial. Use for databases where reads +may be lengthy and consistency problems may occur. + +=item B + +A B wrapper that has the ability to lock and unlock the database +while it is being used. Avoids the tie-before-flock problem by simply +re-tie-ing the database when you get or drop a lock. Because of the +flexibility in dropping and re-acquiring the lock in the middle of a +session, this can be massaged into a system that will work with long +updates and/or reads if the application follows the hints in the POD +documentation. + +=item B + +An extremely lightweight B wrapper that simply flocks a lockfile +before tie-ing the database and drops the lock after the untie. Allows +one to use the same lockfile for multiple databases to avoid deadlock +problems, if desired. Use for databases where updates are reads are +quick and simple flock locking semantics are enough. + +=back + +=head2 Sharing Databases With C Applications + +There is no technical reason why a Berkeley DB database cannot be +shared by both a Perl and a C application. + +The vast majority of problems that are reported in this area boil down +to the fact that C strings are NULL terminated, whilst Perl strings are +not. See L for a generic way to work around this problem. + +Here is a real example. Netscape 2.0 keeps a record of the locations you +visit along with the time you last visited them in a DB_HASH database. +This is usually stored in the file F<~/.netscape/history.db>. The key +field in the database is the location string and the value field is the +time the location was last visited stored as a 4 byte binary value. + +If you haven't already guessed, the location string is stored with a +terminating NULL. This means you need to be careful when accessing the +database. + +Here is a snippet of code that is loosely based on Tom Christiansen's +I script (available from your nearest CPAN archive in +F). + + use warnings ; + use strict ; + use DB_File ; + use Fcntl ; + + my ($dotdir, $HISTORY, %hist_db, $href, $binary_time, $date) ; + $dotdir = $ENV{HOME} || $ENV{LOGNAME}; + + $HISTORY = "$dotdir/.netscape/history.db"; + + tie %hist_db, 'DB_File', $HISTORY + or die "Cannot open $HISTORY: $!\n" ;; + + # Dump the complete database + while ( ($href, $binary_time) = each %hist_db ) { + + # remove the terminating NULL + $href =~ s/\x00$// ; + + # convert the binary time into a user friendly string + $date = localtime unpack("V", $binary_time); + print "$date $href\n" ; + } + + # check for the existence of a specific key + # remember to add the NULL + if ( $binary_time = $hist_db{"http://mox.perl.com/\x00"} ) { + $date = localtime unpack("V", $binary_time) ; + print "Last visited mox.perl.com on $date\n" ; + } + else { + print "Never visited mox.perl.com\n" + } + + untie %hist_db ; + +=head2 The untie() Gotcha + +If you make use of the Berkeley DB API, it is I strongly +recommended that you read L. + +Even if you don't currently make use of the API interface, it is still +worth reading it. + +Here is an example which illustrates the problem from a B +perspective: + + use DB_File ; + use Fcntl ; + + my %x ; + my $X ; + + $X = tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_TRUNC + or die "Cannot tie first time: $!" ; + + $x{123} = 456 ; + + untie %x ; + + tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_CREAT + or die "Cannot tie second time: $!" ; + + untie %x ; + +When run, the script will produce this error message: + + Cannot tie second time: Invalid argument at bad.file line 14. + +Although the error message above refers to the second tie() statement +in the script, the source of the problem is really with the untie() +statement that precedes it. + +Having read L you will probably have already guessed that the +error is caused by the extra copy of the tied object stored in C<$X>. +If you haven't, then the problem boils down to the fact that the +B destructor, DESTROY, will not be called until I +references to the tied object are destroyed. Both the tied variable, +C<%x>, and C<$X> above hold a reference to the object. The call to +untie() will destroy the first, but C<$X> still holds a valid +reference, so the destructor will not get called and the database file +F will remain open. The fact that Berkeley DB then reports the +attempt to open a database that is already open via the catch-all +"Invalid argument" doesn't help. + +If you run the script with the C<-w> flag the error message becomes: + + untie attempted while 1 inner references still exist at bad.file line 12. + Cannot tie second time: Invalid argument at bad.file line 14. + +which pinpoints the real problem. Finally the script can now be +modified to fix the original problem by destroying the API object +before the untie: + + ... + $x{123} = 456 ; + + undef $X ; + untie %x ; + + $X = tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_CREAT + ... + + +=head1 COMMON QUESTIONS + +=head2 Why is there Perl source in my database? + +If you look at the contents of a database file created by DB_File, +there can sometimes be part of a Perl script included in it. + +This happens because Berkeley DB uses dynamic memory to allocate +buffers which will subsequently be written to the database file. Being +dynamic, the memory could have been used for anything before DB +malloced it. As Berkeley DB doesn't clear the memory once it has been +allocated, the unused portions will contain random junk. In the case +where a Perl script gets written to the database, the random junk will +correspond to an area of dynamic memory that happened to be used during +the compilation of the script. + +Unless you don't like the possibility of there being part of your Perl +scripts embedded in a database file, this is nothing to worry about. + +=head2 How do I store complex data structures with DB_File? + +Although B cannot do this directly, there is a module which +can layer transparently over B to accomplish this feat. + +Check out the MLDBM module, available on CPAN in the directory +F. + +=head2 What does "Invalid Argument" mean? + +You will get this error message when one of the parameters in the +C call is wrong. Unfortunately there are quite a few parameters to +get wrong, so it can be difficult to figure out which one it is. + +Here are a couple of possibilities: + +=over 5 + +=item 1. + +Attempting to reopen a database without closing it. + +=item 2. + +Using the O_WRONLY flag. + +=back + +=head2 What does "Bareword 'DB_File' not allowed" mean? + +You will encounter this particular error message when you have the +C pragma (or the full strict pragma) in your script. +Consider this script: + + use warnings ; + use strict ; + use DB_File ; + my %x ; + tie %x, DB_File, "filename" ; + +Running it produces the error in question: + + Bareword "DB_File" not allowed while "strict subs" in use + +To get around the error, place the word C in either single or +double quotes, like this: + + tie %x, "DB_File", "filename" ; + +Although it might seem like a real pain, it is really worth the effort +of having a C in all your scripts. + +=head1 REFERENCES + +Articles that are either about B or make use of it. + +=over 5 + +=item 1. + +I, Tim Kientzle (tkientzle@ddj.com), +Dr. Dobb's Journal, Issue 295, January 1999, pp 34-41 + +=back + +=head1 HISTORY + +Moved to the Changes file. + +=head1 BUGS + +Some older versions of Berkeley DB had problems with fixed length +records using the RECNO file format. This problem has been fixed since +version 1.85 of Berkeley DB. + +I am sure there are bugs in the code. If you do find any, or can +suggest any enhancements, I would welcome your comments. + +=head1 AVAILABILITY + +B comes with the standard Perl source distribution. Look in +the directory F. Given the amount of time between releases +of Perl the version that ships with Perl is quite likely to be out of +date, so the most recent version can always be found on CPAN (see +L for details), in the directory +F. + +This version of B will work with either version 1.x, 2.x or +3.x of Berkeley DB, but is limited to the functionality provided by +version 1. + +The official web site for Berkeley DB is F. +All versions of Berkeley DB are available there. + +Alternatively, Berkeley DB version 1 is available at your nearest CPAN +archive in F. + +=head1 COPYRIGHT + +Copyright (c) 1995-2012 Paul Marquess. All rights reserved. This program +is free software; you can redistribute it and/or modify it under the +same terms as Perl itself. + +Although B is covered by the Perl license, the library it +makes use of, namely Berkeley DB, is not. Berkeley DB has its own +copyright and its own license. Please take the time to read it. + +Here are a few words taken from the Berkeley DB FAQ (at +F) regarding the license: + + Do I have to license DB to use it in Perl scripts? + + No. The Berkeley DB license requires that software that uses + Berkeley DB be freely redistributable. In the case of Perl, that + software is Perl, and not your scripts. Any Perl scripts that you + write are your property, including scripts that make use of + Berkeley DB. Neither the Perl license nor the Berkeley DB license + place any restriction on what you may do with them. + +If you are in any doubt about the license situation, contact either the +Berkeley DB authors or the author of DB_File. See L<"AUTHOR"> for details. + + +=head1 SEE ALSO + +L, L, L, L, L, +L + +=head1 AUTHOR + +The DB_File interface was written by Paul Marquess +Epmqs@cpan.orgE. + +=cut diff --git a/fastSum/resources/ROUGE/DB_File-1.835/DB_File.pm.bak b/fastSum/resources/ROUGE/DB_File-1.835/DB_File.pm.bak new file mode 100644 index 0000000000000000000000000000000000000000..9b1f9577386e0d81bd798ad6f9023fe512f36839 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/DB_File.pm.bak @@ -0,0 +1,2310 @@ +# DB_File.pm -- Perl 5 interface to Berkeley DB +# +# Written by Paul Marquess (pmqs@cpan.org) +# +# Copyright (c) 1995-2014 Paul Marquess. All rights reserved. +# This program is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. + + +package DB_File::HASHINFO ; + +require 5.008003; + +use warnings; +use strict; +use Carp; +require Tie::Hash; +@DB_File::HASHINFO::ISA = qw(Tie::Hash); + +sub new +{ + my $pkg = shift ; + my %x ; + tie %x, $pkg ; + bless \%x, $pkg ; +} + + +sub TIEHASH +{ + my $pkg = shift ; + + bless { VALID => { + bsize => 1, + ffactor => 1, + nelem => 1, + cachesize => 1, + hash => 2, + lorder => 1, + }, + GOT => {} + }, $pkg ; +} + + +sub FETCH +{ + my $self = shift ; + my $key = shift ; + + return $self->{GOT}{$key} if exists $self->{VALID}{$key} ; + + my $pkg = ref $self ; + croak "${pkg}::FETCH - Unknown element '$key'" ; +} + + +sub STORE +{ + my $self = shift ; + my $key = shift ; + my $value = shift ; + + my $type = $self->{VALID}{$key}; + + if ( $type ) + { + croak "Key '$key' not associated with a code reference" + if $type == 2 && !ref $value && ref $value ne 'CODE'; + $self->{GOT}{$key} = $value ; + return ; + } + + my $pkg = ref $self ; + croak "${pkg}::STORE - Unknown element '$key'" ; +} + +sub DELETE +{ + my $self = shift ; + my $key = shift ; + + if ( exists $self->{VALID}{$key} ) + { + delete $self->{GOT}{$key} ; + return ; + } + + my $pkg = ref $self ; + croak "DB_File::HASHINFO::DELETE - Unknown element '$key'" ; +} + +sub EXISTS +{ + my $self = shift ; + my $key = shift ; + + exists $self->{VALID}{$key} ; +} + +sub NotHere +{ + my $self = shift ; + my $method = shift ; + + croak ref($self) . " does not define the method ${method}" ; +} + +sub FIRSTKEY { my $self = shift ; $self->NotHere("FIRSTKEY") } +sub NEXTKEY { my $self = shift ; $self->NotHere("NEXTKEY") } +sub CLEAR { my $self = shift ; $self->NotHere("CLEAR") } + +package DB_File::RECNOINFO ; + +use warnings; +use strict ; + +@DB_File::RECNOINFO::ISA = qw(DB_File::HASHINFO) ; + +sub TIEHASH +{ + my $pkg = shift ; + + bless { VALID => { map {$_, 1} + qw( bval cachesize psize flags lorder reclen bfname ) + }, + GOT => {}, + }, $pkg ; +} + +package DB_File::BTREEINFO ; + +use warnings; +use strict ; + +@DB_File::BTREEINFO::ISA = qw(DB_File::HASHINFO) ; + +sub TIEHASH +{ + my $pkg = shift ; + + bless { VALID => { + flags => 1, + cachesize => 1, + maxkeypage => 1, + minkeypage => 1, + psize => 1, + compare => 2, + prefix => 2, + lorder => 1, + }, + GOT => {}, + }, $pkg ; +} + + +package DB_File ; + +use warnings; +use strict; +our ($VERSION, @ISA, @EXPORT, $AUTOLOAD, $DB_BTREE, $DB_HASH, $DB_RECNO); +our ($db_version, $use_XSLoader, $splice_end_array_no_length, $splice_end_array, $Error); +use Carp; + + +$VERSION = "1.835" ; +$VERSION = eval $VERSION; # needed for dev releases + +{ + local $SIG{__WARN__} = sub {$splice_end_array_no_length = join(" ",@_);}; + my @a =(1); splice(@a, 3); + $splice_end_array_no_length = + ($splice_end_array_no_length =~ /^splice\(\) offset past end of array at /); +} +{ + local $SIG{__WARN__} = sub {$splice_end_array = join(" ", @_);}; + my @a =(1); splice(@a, 3, 1); + $splice_end_array = + ($splice_end_array =~ /^splice\(\) offset past end of array at /); +} + +#typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE; +$DB_BTREE = new DB_File::BTREEINFO ; +$DB_HASH = new DB_File::HASHINFO ; +$DB_RECNO = new DB_File::RECNOINFO ; + +require Tie::Hash; +require Exporter; +BEGIN { + $use_XSLoader = 1 ; + { local $SIG{__DIE__} ; eval { require XSLoader } ; } + + if ($@) { + $use_XSLoader = 0 ; + require DynaLoader; + @ISA = qw(DynaLoader); + } +} + +push @ISA, qw(Tie::Hash Exporter); +@EXPORT = qw( + $DB_BTREE $DB_HASH $DB_RECNO + + BTREEMAGIC + BTREEVERSION + DB_LOCK + DB_SHMEM + DB_TXN + HASHMAGIC + HASHVERSION + MAX_PAGE_NUMBER + MAX_PAGE_OFFSET + MAX_REC_NUMBER + RET_ERROR + RET_SPECIAL + RET_SUCCESS + R_CURSOR + R_DUP + R_FIRST + R_FIXEDLEN + R_IAFTER + R_IBEFORE + R_LAST + R_NEXT + R_NOKEY + R_NOOVERWRITE + R_PREV + R_RECNOSYNC + R_SETCURSOR + R_SNAPSHOT + __R_UNUSED + +); + +sub AUTOLOAD { + my($constname); + ($constname = $AUTOLOAD) =~ s/.*:://; + my ($error, $val) = constant($constname); + Carp::croak $error if $error; + no strict 'refs'; + *{$AUTOLOAD} = sub { $val }; + goto &{$AUTOLOAD}; +} + + +eval { + # Make all Fcntl O_XXX constants available for importing + require Fcntl; + my @O = grep /^O_/, @Fcntl::EXPORT; + Fcntl->import(@O); # first we import what we want to export + push(@EXPORT, @O); +}; + +if ($use_XSLoader) + { XSLoader::load("DB_File", $VERSION)} +else + { bootstrap DB_File $VERSION } + +sub tie_hash_or_array +{ + my (@arg) = @_ ; + my $tieHASH = ( (caller(1))[3] =~ /TIEHASH/ ) ; + + use File::Spec; + $arg[1] = File::Spec->rel2abs($arg[1]) + if defined $arg[1] ; + + $arg[4] = tied %{ $arg[4] } + if @arg >= 5 && ref $arg[4] && $arg[4] =~ /=HASH/ && tied %{ $arg[4] } ; + + $arg[2] = O_CREAT()|O_RDWR() if @arg >=3 && ! defined $arg[2]; + $arg[3] = 0666 if @arg >=4 && ! defined $arg[3]; + + # make recno in Berkeley DB version 2 (or better) work like + # recno in version 1. + if ($db_version >= 4 and ! $tieHASH) { + $arg[2] |= O_CREAT(); + } + + if ($db_version > 1 and defined $arg[4] and $arg[4] =~ /RECNO/ and + $arg[1] and ! -e $arg[1]) { + open(FH, ">$arg[1]") or return undef ; + close FH ; + chmod $arg[3] ? $arg[3] : 0666 , $arg[1] ; + } + + DoTie_($tieHASH, @arg) ; +} + +sub TIEHASH +{ + tie_hash_or_array(@_) ; +} + +sub TIEARRAY +{ + tie_hash_or_array(@_) ; +} + +sub CLEAR +{ + my $self = shift; + my $key = 0 ; + my $value = "" ; + my $status = $self->seq($key, $value, R_FIRST()); + my @keys; + + while ($status == 0) { + push @keys, $key; + $status = $self->seq($key, $value, R_NEXT()); + } + foreach $key (reverse @keys) { + my $s = $self->del($key); + } +} + +sub EXTEND { } + +sub STORESIZE +{ + my $self = shift; + my $length = shift ; + my $current_length = $self->length() ; + + if ($length < $current_length) { + my $key ; + for ($key = $current_length - 1 ; $key >= $length ; -- $key) + { $self->del($key) } + } + elsif ($length > $current_length) { + $self->put($length-1, "") ; + } +} + + +sub SPLICE +{ + my $self = shift; + my $offset = shift; + if (not defined $offset) { + warnings::warnif('uninitialized', 'Use of uninitialized value in splice'); + $offset = 0; + } + + my $has_length = @_; + my $length = @_ ? shift : 0; + # Carping about definedness comes _after_ the OFFSET sanity check. + # This is so we get the same error messages as Perl's splice(). + # + + my @list = @_; + + my $size = $self->FETCHSIZE(); + + # 'If OFFSET is negative then it start that far from the end of + # the array.' + # + if ($offset < 0) { + my $new_offset = $size + $offset; + if ($new_offset < 0) { + die "Modification of non-creatable array value attempted, " + . "subscript $offset"; + } + $offset = $new_offset; + } + + if (not defined $length) { + warnings::warnif('uninitialized', 'Use of uninitialized value in splice'); + $length = 0; + } + + if ($offset > $size) { + $offset = $size; + warnings::warnif('misc', 'splice() offset past end of array') + if $has_length ? $splice_end_array : $splice_end_array_no_length; + } + + # 'If LENGTH is omitted, removes everything from OFFSET onward.' + if (not defined $length) { + $length = $size - $offset; + } + + # 'If LENGTH is negative, leave that many elements off the end of + # the array.' + # + if ($length < 0) { + $length = $size - $offset + $length; + + if ($length < 0) { + # The user must have specified a length bigger than the + # length of the array passed in. But perl's splice() + # doesn't catch this, it just behaves as for length=0. + # + $length = 0; + } + } + + if ($length > $size - $offset) { + $length = $size - $offset; + } + + # $num_elems holds the current number of elements in the database. + my $num_elems = $size; + + # 'Removes the elements designated by OFFSET and LENGTH from an + # array,'... + # + my @removed = (); + foreach (0 .. $length - 1) { + my $old; + my $status = $self->get($offset, $old); + if ($status != 0) { + my $msg = "error from Berkeley DB on get($offset, \$old)"; + if ($status == 1) { + $msg .= ' (no such element?)'; + } + else { + $msg .= ": error status $status"; + if (defined $! and $! ne '') { + $msg .= ", message $!"; + } + } + die $msg; + } + push @removed, $old; + + $status = $self->del($offset); + if ($status != 0) { + my $msg = "error from Berkeley DB on del($offset)"; + if ($status == 1) { + $msg .= ' (no such element?)'; + } + else { + $msg .= ": error status $status"; + if (defined $! and $! ne '') { + $msg .= ", message $!"; + } + } + die $msg; + } + + -- $num_elems; + } + + # ...'and replaces them with the elements of LIST, if any.' + my $pos = $offset; + while (defined (my $elem = shift @list)) { + my $old_pos = $pos; + my $status; + if ($pos >= $num_elems) { + $status = $self->put($pos, $elem); + } + else { + $status = $self->put($pos, $elem, $self->R_IBEFORE); + } + + if ($status != 0) { + my $msg = "error from Berkeley DB on put($pos, $elem, ...)"; + if ($status == 1) { + $msg .= ' (no such element?)'; + } + else { + $msg .= ", error status $status"; + if (defined $! and $! ne '') { + $msg .= ", message $!"; + } + } + die $msg; + } + + die "pos unexpectedly changed from $old_pos to $pos with R_IBEFORE" + if $old_pos != $pos; + + ++ $pos; + ++ $num_elems; + } + + if (wantarray) { + # 'In list context, returns the elements removed from the + # array.' + # + return @removed; + } + elsif (defined wantarray and not wantarray) { + # 'In scalar context, returns the last element removed, or + # undef if no elements are removed.' + # + if (@removed) { + my $last = pop @removed; + return "$last"; + } + else { + return undef; + } + } + elsif (not defined wantarray) { + # Void context + } + else { die } +} +sub ::DB_File::splice { &SPLICE } + +sub find_dup +{ + croak "Usage: \$db->find_dup(key,value)\n" + unless @_ == 3 ; + + my $db = shift ; + my ($origkey, $value_wanted) = @_ ; + my ($key, $value) = ($origkey, 0); + my ($status) = 0 ; + + for ($status = $db->seq($key, $value, R_CURSOR() ) ; + $status == 0 ; + $status = $db->seq($key, $value, R_NEXT() ) ) { + + return 0 if $key eq $origkey and $value eq $value_wanted ; + } + + return $status ; +} + +sub del_dup +{ + croak "Usage: \$db->del_dup(key,value)\n" + unless @_ == 3 ; + + my $db = shift ; + my ($key, $value) = @_ ; + my ($status) = $db->find_dup($key, $value) ; + return $status if $status != 0 ; + + $status = $db->del($key, R_CURSOR() ) ; + return $status ; +} + +sub get_dup +{ + croak "Usage: \$db->get_dup(key [,flag])\n" + unless @_ == 2 or @_ == 3 ; + + my $db = shift ; + my $key = shift ; + my $flag = shift ; + my $value = 0 ; + my $origkey = $key ; + my $wantarray = wantarray ; + my %values = () ; + my @values = () ; + my $counter = 0 ; + my $status = 0 ; + + # iterate through the database until either EOF ($status == 0) + # or a different key is encountered ($key ne $origkey). + for ($status = $db->seq($key, $value, R_CURSOR()) ; + $status == 0 and $key eq $origkey ; + $status = $db->seq($key, $value, R_NEXT()) ) { + + # save the value or count number of matches + if ($wantarray) { + if ($flag) + { ++ $values{$value} } + else + { push (@values, $value) } + } + else + { ++ $counter } + + } + + return ($wantarray ? ($flag ? %values : @values) : $counter) ; +} + + +sub STORABLE_freeze +{ + my $type = ref shift; + croak "Cannot freeze $type object\n"; +} + +sub STORABLE_thaw +{ + my $type = ref shift; + croak "Cannot thaw $type object\n"; +} + + + +1; +__END__ + +=head1 NAME + +DB_File - Perl5 access to Berkeley DB version 1.x + +=head1 SYNOPSIS + + use DB_File; + + [$X =] tie %hash, 'DB_File', [$filename, $flags, $mode, $DB_HASH] ; + [$X =] tie %hash, 'DB_File', $filename, $flags, $mode, $DB_BTREE ; + [$X =] tie @array, 'DB_File', $filename, $flags, $mode, $DB_RECNO ; + + $status = $X->del($key [, $flags]) ; + $status = $X->put($key, $value [, $flags]) ; + $status = $X->get($key, $value [, $flags]) ; + $status = $X->seq($key, $value, $flags) ; + $status = $X->sync([$flags]) ; + $status = $X->fd ; + + # BTREE only + $count = $X->get_dup($key) ; + @list = $X->get_dup($key) ; + %list = $X->get_dup($key, 1) ; + $status = $X->find_dup($key, $value) ; + $status = $X->del_dup($key, $value) ; + + # RECNO only + $a = $X->length; + $a = $X->pop ; + $X->push(list); + $a = $X->shift; + $X->unshift(list); + @r = $X->splice(offset, length, elements); + + # DBM Filters + $old_filter = $db->filter_store_key ( sub { ... } ) ; + $old_filter = $db->filter_store_value( sub { ... } ) ; + $old_filter = $db->filter_fetch_key ( sub { ... } ) ; + $old_filter = $db->filter_fetch_value( sub { ... } ) ; + + untie %hash ; + untie @array ; + +=head1 DESCRIPTION + +B is a module which allows Perl programs to make use of the +facilities provided by Berkeley DB version 1.x (if you have a newer +version of DB, see L). +It is assumed that you have a copy of the Berkeley DB manual pages at +hand when reading this documentation. The interface defined here +mirrors the Berkeley DB interface closely. + +Berkeley DB is a C library which provides a consistent interface to a +number of database formats. B provides an interface to all +three of the database types currently supported by Berkeley DB. + +The file types are: + +=over 5 + +=item B + +This database type allows arbitrary key/value pairs to be stored in data +files. This is equivalent to the functionality provided by other +hashing packages like DBM, NDBM, ODBM, GDBM, and SDBM. Remember though, +the files created using DB_HASH are not compatible with any of the +other packages mentioned. + +A default hashing algorithm, which will be adequate for most +applications, is built into Berkeley DB. If you do need to use your own +hashing algorithm it is possible to write your own in Perl and have +B use it instead. + +=item B + +The btree format allows arbitrary key/value pairs to be stored in a +sorted, balanced binary tree. + +As with the DB_HASH format, it is possible to provide a user defined +Perl routine to perform the comparison of keys. By default, though, the +keys are stored in lexical order. + +=item B + +DB_RECNO allows both fixed-length and variable-length flat text files +to be manipulated using the same key/value pair interface as in DB_HASH +and DB_BTREE. In this case the key will consist of a record (line) +number. + +=back + +=head2 Using DB_File with Berkeley DB version 2 or greater + +Although B is intended to be used with Berkeley DB version 1, +it can also be used with version 2, 3 or 4. In this case the interface is +limited to the functionality provided by Berkeley DB 1.x. Anywhere the +version 2 or greater interface differs, B arranges for it to work +like version 1. This feature allows B scripts that were built +with version 1 to be migrated to version 2 or greater without any changes. + +If you want to make use of the new features available in Berkeley DB +2.x or greater, use the Perl module B instead. + +B The database file format has changed multiple times in Berkeley +DB version 2, 3 and 4. If you cannot recreate your databases, you +must dump any existing databases with either the C or the +C utility that comes with Berkeley DB. +Once you have rebuilt DB_File to use Berkeley DB version 2 or greater, +your databases can be recreated using C. Refer to the Berkeley DB +documentation for further details. + +Please read L<"COPYRIGHT"> before using version 2.x or greater of Berkeley +DB with DB_File. + +=head2 Interface to Berkeley DB + +B allows access to Berkeley DB files using the tie() mechanism +in Perl 5 (for full details, see L). This facility +allows B to access Berkeley DB files using either an +associative array (for DB_HASH & DB_BTREE file types) or an ordinary +array (for the DB_RECNO file type). + +In addition to the tie() interface, it is also possible to access most +of the functions provided in the Berkeley DB API directly. +See L. + +=head2 Opening a Berkeley DB Database File + +Berkeley DB uses the function dbopen() to open or create a database. +Here is the C prototype for dbopen(): + + DB* + dbopen (const char * file, int flags, int mode, + DBTYPE type, const void * openinfo) + +The parameter C is an enumeration which specifies which of the 3 +interface methods (DB_HASH, DB_BTREE or DB_RECNO) is to be used. +Depending on which of these is actually chosen, the final parameter, +I points to a data structure which allows tailoring of the +specific interface method. + +This interface is handled slightly differently in B. Here is +an equivalent call using B: + + tie %array, 'DB_File', $filename, $flags, $mode, $DB_HASH ; + +The C, C and C parameters are the direct +equivalent of their dbopen() counterparts. The final parameter $DB_HASH +performs the function of both the C and C parameters in +dbopen(). + +In the example above $DB_HASH is actually a pre-defined reference to a +hash object. B has three of these pre-defined references. +Apart from $DB_HASH, there is also $DB_BTREE and $DB_RECNO. + +The keys allowed in each of these pre-defined references is limited to +the names used in the equivalent C structure. So, for example, the +$DB_HASH reference will only allow keys called C, C, +C, C, C and C. + +To change one of these elements, just assign to it like this: + + $DB_HASH->{'cachesize'} = 10000 ; + +The three predefined variables $DB_HASH, $DB_BTREE and $DB_RECNO are +usually adequate for most applications. If you do need to create extra +instances of these objects, constructors are available for each file +type. + +Here are examples of the constructors and the valid options available +for DB_HASH, DB_BTREE and DB_RECNO respectively. + + $a = new DB_File::HASHINFO ; + $a->{'bsize'} ; + $a->{'cachesize'} ; + $a->{'ffactor'}; + $a->{'hash'} ; + $a->{'lorder'} ; + $a->{'nelem'} ; + + $b = new DB_File::BTREEINFO ; + $b->{'flags'} ; + $b->{'cachesize'} ; + $b->{'maxkeypage'} ; + $b->{'minkeypage'} ; + $b->{'psize'} ; + $b->{'compare'} ; + $b->{'prefix'} ; + $b->{'lorder'} ; + + $c = new DB_File::RECNOINFO ; + $c->{'bval'} ; + $c->{'cachesize'} ; + $c->{'psize'} ; + $c->{'flags'} ; + $c->{'lorder'} ; + $c->{'reclen'} ; + $c->{'bfname'} ; + +The values stored in the hashes above are mostly the direct equivalent +of their C counterpart. Like their C counterparts, all are set to a +default values - that means you don't have to set I of the +values when you only want to change one. Here is an example: + + $a = new DB_File::HASHINFO ; + $a->{'cachesize'} = 12345 ; + tie %y, 'DB_File', "filename", $flags, 0777, $a ; + +A few of the options need extra discussion here. When used, the C +equivalent of the keys C, C and C store pointers +to C functions. In B these keys are used to store references +to Perl subs. Below are templates for each of the subs: + + sub hash + { + my ($data) = @_ ; + ... + # return the hash value for $data + return $hash ; + } + + sub compare + { + my ($key, $key2) = @_ ; + ... + # return 0 if $key1 eq $key2 + # -1 if $key1 lt $key2 + # 1 if $key1 gt $key2 + return (-1 , 0 or 1) ; + } + + sub prefix + { + my ($key, $key2) = @_ ; + ... + # return number of bytes of $key2 which are + # necessary to determine that it is greater than $key1 + return $bytes ; + } + +See L for an example of using the +C template. + +If you are using the DB_RECNO interface and you intend making use of +C, you should check out L. + +=head2 Default Parameters + +It is possible to omit some or all of the final 4 parameters in the +call to C and let them take default values. As DB_HASH is the most +common file format used, the call: + + tie %A, "DB_File", "filename" ; + +is equivalent to: + + tie %A, "DB_File", "filename", O_CREAT|O_RDWR, 0666, $DB_HASH ; + +It is also possible to omit the filename parameter as well, so the +call: + + tie %A, "DB_File" ; + +is equivalent to: + + tie %A, "DB_File", undef, O_CREAT|O_RDWR, 0666, $DB_HASH ; + +See L for a discussion on the use of C +in place of a filename. + +=head2 In Memory Databases + +Berkeley DB allows the creation of in-memory databases by using NULL +(that is, a C<(char *)0> in C) in place of the filename. B +uses C instead of NULL to provide this functionality. + +=head1 DB_HASH + +The DB_HASH file format is probably the most commonly used of the three +file formats that B supports. It is also very straightforward +to use. + +=head2 A Simple Example + +This example shows how to create a database, add key/value pairs to the +database, delete keys/value pairs and finally how to enumerate the +contents of the database. + + use warnings ; + use strict ; + use DB_File ; + our (%h, $k, $v) ; + + unlink "fruit" ; + tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0666, $DB_HASH + or die "Cannot open file 'fruit': $!\n"; + + # Add a few key/value pairs to the file + $h{"apple"} = "red" ; + $h{"orange"} = "orange" ; + $h{"banana"} = "yellow" ; + $h{"tomato"} = "red" ; + + # Check for existence of a key + print "Banana Exists\n\n" if $h{"banana"} ; + + # Delete a key/value pair. + delete $h{"apple"} ; + + # print the contents of the file + while (($k, $v) = each %h) + { print "$k -> $v\n" } + + untie %h ; + +here is the output: + + Banana Exists + + orange -> orange + tomato -> red + banana -> yellow + +Note that the like ordinary associative arrays, the order of the keys +retrieved is in an apparently random order. + +=head1 DB_BTREE + +The DB_BTREE format is useful when you want to store data in a given +order. By default the keys will be stored in lexical order, but as you +will see from the example shown in the next section, it is very easy to +define your own sorting function. + +=head2 Changing the BTREE sort order + +This script shows how to override the default sorting algorithm that +BTREE uses. Instead of using the normal lexical ordering, a case +insensitive compare function will be used. + + use warnings ; + use strict ; + use DB_File ; + + my %h ; + + sub Compare + { + my ($key1, $key2) = @_ ; + "\L$key1" cmp "\L$key2" ; + } + + # specify the Perl sub that will do the comparison + $DB_BTREE->{'compare'} = \&Compare ; + + unlink "tree" ; + tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open file 'tree': $!\n" ; + + # Add a key/value pair to the file + $h{'Wall'} = 'Larry' ; + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + $h{'duck'} = 'donald' ; + + # Delete + delete $h{"duck"} ; + + # Cycle through the keys printing them in order. + # Note it is not necessary to sort the keys as + # the btree will have kept them in order automatically. + foreach (keys %h) + { print "$_\n" } + + untie %h ; + +Here is the output from the code above. + + mouse + Smith + Wall + +There are a few point to bear in mind if you want to change the +ordering in a BTREE database: + +=over 5 + +=item 1. + +The new compare function must be specified when you create the database. + +=item 2. + +You cannot change the ordering once the database has been created. Thus +you must use the same compare function every time you access the +database. + +=item 3 + +Duplicate keys are entirely defined by the comparison function. +In the case-insensitive example above, the keys: 'KEY' and 'key' +would be considered duplicates, and assigning to the second one +would overwrite the first. If duplicates are allowed for (with the +R_DUP flag discussed below), only a single copy of duplicate keys +is stored in the database --- so (again with example above) assigning +three values to the keys: 'KEY', 'Key', and 'key' would leave just +the first key: 'KEY' in the database with three values. For some +situations this results in information loss, so care should be taken +to provide fully qualified comparison functions when necessary. +For example, the above comparison routine could be modified to +additionally compare case-sensitively if two keys are equal in the +case insensitive comparison: + + sub compare { + my($key1, $key2) = @_; + lc $key1 cmp lc $key2 || + $key1 cmp $key2; + } + +And now you will only have duplicates when the keys themselves +are truly the same. (note: in versions of the db library prior to +about November 1996, such duplicate keys were retained so it was +possible to recover the original keys in sets of keys that +compared as equal). + + +=back + +=head2 Handling Duplicate Keys + +The BTREE file type optionally allows a single key to be associated +with an arbitrary number of values. This option is enabled by setting +the flags element of C<$DB_BTREE> to R_DUP when creating the database. + +There are some difficulties in using the tied hash interface if you +want to manipulate a BTREE database with duplicate keys. Consider this +code: + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, %h) ; + + $filename = "tree" ; + unlink $filename ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'Wall'} = 'Larry' ; + $h{'Wall'} = 'Brick' ; # Note the duplicate key + $h{'Wall'} = 'Brick' ; # Note the duplicate key and value + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + + # iterate through the associative array + # and print each key/value pair. + foreach (sort keys %h) + { print "$_ -> $h{$_}\n" } + + untie %h ; + +Here is the output: + + Smith -> John + Wall -> Larry + Wall -> Larry + Wall -> Larry + mouse -> mickey + +As you can see 3 records have been successfully created with key C +- the only thing is, when they are retrieved from the database they +I to have the same value, namely C. The problem is caused +by the way that the associative array interface works. Basically, when +the associative array interface is used to fetch the value associated +with a given key, it will only ever retrieve the first value. + +Although it may not be immediately obvious from the code above, the +associative array interface can be used to write values with duplicate +keys, but it cannot be used to read them back from the database. + +The way to get around this problem is to use the Berkeley DB API method +called C. This method allows sequential access to key/value +pairs. See L for details of both the C method +and the API in general. + +Here is the script above rewritten using the C API method. + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $status, $key, $value) ; + + $filename = "tree" ; + unlink $filename ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'Wall'} = 'Larry' ; + $h{'Wall'} = 'Brick' ; # Note the duplicate key + $h{'Wall'} = 'Brick' ; # Note the duplicate key and value + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + + # iterate through the btree using seq + # and print each key/value pair. + $key = $value = 0 ; + for ($status = $x->seq($key, $value, R_FIRST) ; + $status == 0 ; + $status = $x->seq($key, $value, R_NEXT) ) + { print "$key -> $value\n" } + + undef $x ; + untie %h ; + +that prints: + + Smith -> John + Wall -> Brick + Wall -> Brick + Wall -> Larry + mouse -> mickey + +This time we have got all the key/value pairs, including the multiple +values associated with the key C. + +To make life easier when dealing with duplicate keys, B comes with +a few utility methods. + +=head2 The get_dup() Method + +The C method assists in +reading duplicate values from BTREE databases. The method can take the +following forms: + + $count = $x->get_dup($key) ; + @list = $x->get_dup($key) ; + %list = $x->get_dup($key, 1) ; + +In a scalar context the method returns the number of values associated +with the key, C<$key>. + +In list context, it returns all the values which match C<$key>. Note +that the values will be returned in an apparently random order. + +In list context, if the second parameter is present and evaluates +TRUE, the method returns an associative array. The keys of the +associative array correspond to the values that matched in the BTREE +and the values of the array are a count of the number of times that +particular value occurred in the BTREE. + +So assuming the database created above, we can use C like +this: + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h) ; + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + my $cnt = $x->get_dup("Wall") ; + print "Wall occurred $cnt times\n" ; + + my %hash = $x->get_dup("Wall", 1) ; + print "Larry is there\n" if $hash{'Larry'} ; + print "There are $hash{'Brick'} Brick Walls\n" ; + + my @list = sort $x->get_dup("Wall") ; + print "Wall => [@list]\n" ; + + @list = $x->get_dup("Smith") ; + print "Smith => [@list]\n" ; + + @list = $x->get_dup("Dog") ; + print "Dog => [@list]\n" ; + + +and it will print: + + Wall occurred 3 times + Larry is there + There are 2 Brick Walls + Wall => [Brick Brick Larry] + Smith => [John] + Dog => [] + +=head2 The find_dup() Method + + $status = $X->find_dup($key, $value) ; + +This method checks for the existence of a specific key/value pair. If the +pair exists, the cursor is left pointing to the pair and the method +returns 0. Otherwise the method returns a non-zero value. + +Assuming the database from the previous example: + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $found) ; + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + print "Larry Wall is $found there\n" ; + + $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ; + print "Harry Wall is $found there\n" ; + + undef $x ; + untie %h ; + +prints this + + Larry Wall is there + Harry Wall is not there + + +=head2 The del_dup() Method + + $status = $X->del_dup($key, $value) ; + +This method deletes a specific key/value pair. It returns +0 if they exist and have been deleted successfully. +Otherwise the method returns a non-zero value. + +Again assuming the existence of the C database + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $found) ; + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + $x->del_dup("Wall", "Larry") ; + + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + print "Larry Wall is $found there\n" ; + + undef $x ; + untie %h ; + +prints this + + Larry Wall is not there + +=head2 Matching Partial Keys + +The BTREE interface has a feature which allows partial keys to be +matched. This functionality is I available when the C method +is used along with the R_CURSOR flag. + + $x->seq($key, $value, R_CURSOR) ; + +Here is the relevant quote from the dbopen man page where it defines +the use of the R_CURSOR flag with seq: + + Note, for the DB_BTREE access method, the returned key is not + necessarily an exact match for the specified key. The returned key + is the smallest key greater than or equal to the specified key, + permitting partial key matches and range searches. + +In the example script below, the C sub uses this feature to find +and print the first matching key/value pair given a partial key. + + use warnings ; + use strict ; + use DB_File ; + use Fcntl ; + + my ($filename, $x, %h, $st, $key, $value) ; + + sub match + { + my $key = shift ; + my $value = 0; + my $orig_key = $key ; + $x->seq($key, $value, R_CURSOR) ; + print "$orig_key\t-> $key\t-> $value\n" ; + } + + $filename = "tree" ; + unlink $filename ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'mouse'} = 'mickey' ; + $h{'Wall'} = 'Larry' ; + $h{'Walls'} = 'Brick' ; + $h{'Smith'} = 'John' ; + + + $key = $value = 0 ; + print "IN ORDER\n" ; + for ($st = $x->seq($key, $value, R_FIRST) ; + $st == 0 ; + $st = $x->seq($key, $value, R_NEXT) ) + + { print "$key -> $value\n" } + + print "\nPARTIAL MATCH\n" ; + + match "Wa" ; + match "A" ; + match "a" ; + + undef $x ; + untie %h ; + +Here is the output: + + IN ORDER + Smith -> John + Wall -> Larry + Walls -> Brick + mouse -> mickey + + PARTIAL MATCH + Wa -> Wall -> Larry + A -> Smith -> John + a -> mouse -> mickey + +=head1 DB_RECNO + +DB_RECNO provides an interface to flat text files. Both variable and +fixed length records are supported. + +In order to make RECNO more compatible with Perl, the array offset for +all RECNO arrays begins at 0 rather than 1 as in Berkeley DB. + +As with normal Perl arrays, a RECNO array can be accessed using +negative indexes. The index -1 refers to the last element of the array, +-2 the second last, and so on. Attempting to access an element before +the start of the array will raise a fatal run-time error. + +=head2 The 'bval' Option + +The operation of the bval option warrants some discussion. Here is the +definition of bval from the Berkeley DB 1.85 recno manual page: + + The delimiting byte to be used to mark the end of a + record for variable-length records, and the pad charac- + ter for fixed-length records. If no value is speci- + fied, newlines (``\n'') are used to mark the end of + variable-length records and fixed-length records are + padded with spaces. + +The second sentence is wrong. In actual fact bval will only default to +C<"\n"> when the openinfo parameter in dbopen is NULL. If a non-NULL +openinfo parameter is used at all, the value that happens to be in bval +will be used. That means you always have to specify bval when making +use of any of the options in the openinfo parameter. This documentation +error will be fixed in the next release of Berkeley DB. + +That clarifies the situation with regards Berkeley DB itself. What +about B? Well, the behavior defined in the quote above is +quite useful, so B conforms to it. + +That means that you can specify other options (e.g. cachesize) and +still have bval default to C<"\n"> for variable length records, and +space for fixed length records. + +Also note that the bval option only allows you to specify a single byte +as a delimiter. + +=head2 A Simple Example + +Here is a simple example that uses RECNO (if you are using a version +of Perl earlier than 5.004_57 this example won't work -- see +L for a workaround). + + use warnings ; + use strict ; + use DB_File ; + + my $filename = "text" ; + unlink $filename ; + + my @h ; + tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_RECNO + or die "Cannot open file 'text': $!\n" ; + + # Add a few key/value pairs to the file + $h[0] = "orange" ; + $h[1] = "blue" ; + $h[2] = "yellow" ; + + push @h, "green", "black" ; + + my $elements = scalar @h ; + print "The array contains $elements entries\n" ; + + my $last = pop @h ; + print "popped $last\n" ; + + unshift @h, "white" ; + my $first = shift @h ; + print "shifted $first\n" ; + + # Check for existence of a key + print "Element 1 Exists with value $h[1]\n" if $h[1] ; + + # use a negative index + print "The last element is $h[-1]\n" ; + print "The 2nd last element is $h[-2]\n" ; + + untie @h ; + +Here is the output from the script: + + The array contains 5 entries + popped black + shifted white + Element 1 Exists with value blue + The last element is green + The 2nd last element is yellow + +=head2 Extra RECNO Methods + +If you are using a version of Perl earlier than 5.004_57, the tied +array interface is quite limited. In the example script above +C, C, C, C +or determining the array length will not work with a tied array. + +To make the interface more useful for older versions of Perl, a number +of methods are supplied with B to simulate the missing array +operations. All these methods are accessed via the object returned from +the tie call. + +Here are the methods: + +=over 5 + +=item B<$X-Epush(list) ;> + +Pushes the elements of C to the end of the array. + +=item B<$value = $X-Epop ;> + +Removes and returns the last element of the array. + +=item B<$X-Eshift> + +Removes and returns the first element of the array. + +=item B<$X-Eunshift(list) ;> + +Pushes the elements of C to the start of the array. + +=item B<$X-Elength> + +Returns the number of elements in the array. + +=item B<$X-Esplice(offset, length, elements);> + +Returns a splice of the array. + +=back + +=head2 Another Example + +Here is a more complete example that makes use of some of the methods +described above. It also makes use of the API interface directly (see +L). + + use warnings ; + use strict ; + my (@h, $H, $file, $i) ; + use DB_File ; + use Fcntl ; + + $file = "text" ; + + unlink $file ; + + $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0666, $DB_RECNO + or die "Cannot open file $file: $!\n" ; + + # first create a text file to play with + $h[0] = "zero" ; + $h[1] = "one" ; + $h[2] = "two" ; + $h[3] = "three" ; + $h[4] = "four" ; + + + # Print the records in order. + # + # The length method is needed here because evaluating a tied + # array in a scalar context does not return the number of + # elements in the array. + + print "\nORIGINAL\n" ; + foreach $i (0 .. $H->length - 1) { + print "$i: $h[$i]\n" ; + } + + # use the push & pop methods + $a = $H->pop ; + $H->push("last") ; + print "\nThe last record was [$a]\n" ; + + # and the shift & unshift methods + $a = $H->shift ; + $H->unshift("first") ; + print "The first record was [$a]\n" ; + + # Use the API to add a new record after record 2. + $i = 2 ; + $H->put($i, "Newbie", R_IAFTER) ; + + # and a new record before record 1. + $i = 1 ; + $H->put($i, "New One", R_IBEFORE) ; + + # delete record 3 + $H->del(3) ; + + # now print the records in reverse order + print "\nREVERSE\n" ; + for ($i = $H->length - 1 ; $i >= 0 ; -- $i) + { print "$i: $h[$i]\n" } + + # same again, but use the API functions instead + print "\nREVERSE again\n" ; + my ($s, $k, $v) = (0, 0, 0) ; + for ($s = $H->seq($k, $v, R_LAST) ; + $s == 0 ; + $s = $H->seq($k, $v, R_PREV)) + { print "$k: $v\n" } + + undef $H ; + untie @h ; + +and this is what it outputs: + + ORIGINAL + 0: zero + 1: one + 2: two + 3: three + 4: four + + The last record was [four] + The first record was [zero] + + REVERSE + 5: last + 4: three + 3: Newbie + 2: one + 1: New One + 0: first + + REVERSE again + 5: last + 4: three + 3: Newbie + 2: one + 1: New One + 0: first + +Notes: + +=over 5 + +=item 1. + +Rather than iterating through the array, C<@h> like this: + + foreach $i (@h) + +it is necessary to use either this: + + foreach $i (0 .. $H->length - 1) + +or this: + + for ($a = $H->get($k, $v, R_FIRST) ; + $a == 0 ; + $a = $H->get($k, $v, R_NEXT) ) + +=item 2. + +Notice that both times the C method was used the record index was +specified using a variable, C<$i>, rather than the literal value +itself. This is because C will return the record number of the +inserted line via that parameter. + +=back + +=head1 THE API INTERFACE + +As well as accessing Berkeley DB using a tied hash or array, it is also +possible to make direct use of most of the API functions defined in the +Berkeley DB documentation. + +To do this you need to store a copy of the object returned from the tie. + + $db = tie %hash, "DB_File", "filename" ; + +Once you have done that, you can access the Berkeley DB API functions +as B methods directly like this: + + $db->put($key, $value, R_NOOVERWRITE) ; + +B If you have saved a copy of the object returned from +C, the underlying database file will I be closed until both +the tied variable is untied and all copies of the saved object are +destroyed. + + use DB_File ; + $db = tie %hash, "DB_File", "filename" + or die "Cannot tie filename: $!" ; + ... + undef $db ; + untie %hash ; + +See L for more details. + +All the functions defined in L are available except for +close() and dbopen() itself. The B method interface to the +supported functions have been implemented to mirror the way Berkeley DB +works whenever possible. In particular note that: + +=over 5 + +=item * + +The methods return a status value. All return 0 on success. +All return -1 to signify an error and set C<$!> to the exact +error code. The return code 1 generally (but not always) means that the +key specified did not exist in the database. + +Other return codes are defined. See below and in the Berkeley DB +documentation for details. The Berkeley DB documentation should be used +as the definitive source. + +=item * + +Whenever a Berkeley DB function returns data via one of its parameters, +the equivalent B method does exactly the same. + +=item * + +If you are careful, it is possible to mix API calls with the tied +hash/array interface in the same piece of code. Although only a few of +the methods used to implement the tied interface currently make use of +the cursor, you should always assume that the cursor has been changed +any time the tied hash/array interface is used. As an example, this +code will probably not do what you expect: + + $X = tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE + or die "Cannot tie $filename: $!" ; + + # Get the first key/value pair and set the cursor + $X->seq($key, $value, R_FIRST) ; + + # this line will modify the cursor + $count = scalar keys %x ; + + # Get the second key/value pair. + # oops, it didn't, it got the last key/value pair! + $X->seq($key, $value, R_NEXT) ; + +The code above can be rearranged to get around the problem, like this: + + $X = tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE + or die "Cannot tie $filename: $!" ; + + # this line will modify the cursor + $count = scalar keys %x ; + + # Get the first key/value pair and set the cursor + $X->seq($key, $value, R_FIRST) ; + + # Get the second key/value pair. + # worked this time. + $X->seq($key, $value, R_NEXT) ; + +=back + +All the constants defined in L for use in the flags parameters +in the methods defined below are also available. Refer to the Berkeley +DB documentation for the precise meaning of the flags values. + +Below is a list of the methods available. + +=over 5 + +=item B<$status = $X-Eget($key, $value [, $flags]) ;> + +Given a key (C<$key>) this method reads the value associated with it +from the database. The value read from the database is returned in the +C<$value> parameter. + +If the key does not exist the method returns 1. + +No flags are currently defined for this method. + +=item B<$status = $X-Eput($key, $value [, $flags]) ;> + +Stores the key/value pair in the database. + +If you use either the R_IAFTER or R_IBEFORE flags, the C<$key> parameter +will have the record number of the inserted key/value pair set. + +Valid flags are R_CURSOR, R_IAFTER, R_IBEFORE, R_NOOVERWRITE and +R_SETCURSOR. + +=item B<$status = $X-Edel($key [, $flags]) ;> + +Removes all key/value pairs with key C<$key> from the database. + +A return code of 1 means that the requested key was not in the +database. + +R_CURSOR is the only valid flag at present. + +=item B<$status = $X-Efd ;> + +Returns the file descriptor for the underlying database. + +See L for an explanation for why you should +not use C to lock your database. + +=item B<$status = $X-Eseq($key, $value, $flags) ;> + +This interface allows sequential retrieval from the database. See +L for full details. + +Both the C<$key> and C<$value> parameters will be set to the key/value +pair read from the database. + +The flags parameter is mandatory. The valid flag values are R_CURSOR, +R_FIRST, R_LAST, R_NEXT and R_PREV. + +=item B<$status = $X-Esync([$flags]) ;> + +Flushes any cached buffers to disk. + +R_RECNOSYNC is the only valid flag at present. + +=back + +=head1 DBM FILTERS + +A DBM Filter is a piece of code that is be used when you I +want to make the same transformation to all keys and/or values in a +DBM database. + +There are four methods associated with DBM Filters. All work identically, +and each is used to install (or uninstall) a single DBM Filter. Each +expects a single parameter, namely a reference to a sub. The only +difference between them is the place that the filter is installed. + +To summarise: + +=over 5 + +=item B + +If a filter has been installed with this method, it will be invoked +every time you write a key to a DBM database. + +=item B + +If a filter has been installed with this method, it will be invoked +every time you write a value to a DBM database. + + +=item B + +If a filter has been installed with this method, it will be invoked +every time you read a key from a DBM database. + +=item B + +If a filter has been installed with this method, it will be invoked +every time you read a value from a DBM database. + +=back + +You can use any combination of the methods, from none, to all four. + +All filter methods return the existing filter, if present, or C +in not. + +To delete a filter pass C to it. + +=head2 The Filter + +When each filter is called by Perl, a local copy of C<$_> will contain +the key or value to be filtered. Filtering is achieved by modifying +the contents of C<$_>. The return code from the filter is ignored. + +=head2 An Example -- the NULL termination problem. + +Consider the following scenario. You have a DBM database +that you need to share with a third-party C application. The C application +assumes that I keys and values are NULL terminated. Unfortunately +when Perl writes to DBM databases it doesn't use NULL termination, so +your Perl application will have to manage NULL termination itself. When +you write to the database you will have to use something like this: + + $hash{"$key\0"} = "$value\0" ; + +Similarly the NULL needs to be taken into account when you are considering +the length of existing keys/values. + +It would be much better if you could ignore the NULL terminations issue +in the main application code and have a mechanism that automatically +added the terminating NULL to all keys and values whenever you write to +the database and have them removed when you read from the database. As I'm +sure you have already guessed, this is a problem that DBM Filters can +fix very easily. + + use warnings ; + use strict ; + use DB_File ; + + my %hash ; + my $filename = "filt" ; + unlink $filename ; + + my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH + or die "Cannot open $filename: $!\n" ; + + # Install DBM Filters + $db->filter_fetch_key ( sub { s/\0$// } ) ; + $db->filter_store_key ( sub { $_ .= "\0" } ) ; + $db->filter_fetch_value( sub { s/\0$// } ) ; + $db->filter_store_value( sub { $_ .= "\0" } ) ; + + $hash{"abc"} = "def" ; + my $a = $hash{"ABC"} ; + # ... + undef $db ; + untie %hash ; + +Hopefully the contents of each of the filters should be +self-explanatory. Both "fetch" filters remove the terminating NULL, +and both "store" filters add a terminating NULL. + + +=head2 Another Example -- Key is a C int. + +Here is another real-life example. By default, whenever Perl writes to +a DBM database it always writes the key and value as strings. So when +you use this: + + $hash{12345} = "something" ; + +the key 12345 will get stored in the DBM database as the 5 byte string +"12345". If you actually want the key to be stored in the DBM database +as a C int, you will have to use C when writing, and C +when reading. + +Here is a DBM Filter that does it: + + use warnings ; + use strict ; + use DB_File ; + my %hash ; + my $filename = "filt" ; + unlink $filename ; + + + my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH + or die "Cannot open $filename: $!\n" ; + + $db->filter_fetch_key ( sub { $_ = unpack("i", $_) } ) ; + $db->filter_store_key ( sub { $_ = pack ("i", $_) } ) ; + $hash{123} = "def" ; + # ... + undef $db ; + untie %hash ; + +This time only two filters have been used -- we only need to manipulate +the contents of the key, so it wasn't necessary to install any value +filters. + +=head1 HINTS AND TIPS + + +=head2 Locking: The Trouble with fd + +Until version 1.72 of this module, the recommended technique for locking +B databases was to flock the filehandle returned from the "fd" +function. Unfortunately this technique has been shown to be fundamentally +flawed (Kudos to David Harris for tracking this down). Use it at your own +peril! + +The locking technique went like this. + + $db = tie(%db, 'DB_File', 'foo.db', O_CREAT|O_RDWR, 0644) + || die "dbcreat foo.db $!"; + $fd = $db->fd; + open(DB_FH, "+<&=$fd") || die "dup $!"; + flock (DB_FH, LOCK_EX) || die "flock: $!"; + ... + $db{"Tom"} = "Jerry" ; + ... + flock(DB_FH, LOCK_UN); + undef $db; + untie %db; + close(DB_FH); + +In simple terms, this is what happens: + +=over 5 + +=item 1. + +Use "tie" to open the database. + +=item 2. + +Lock the database with fd & flock. + +=item 3. + +Read & Write to the database. + +=item 4. + +Unlock and close the database. + +=back + +Here is the crux of the problem. A side-effect of opening the B +database in step 2 is that an initial block from the database will get +read from disk and cached in memory. + +To see why this is a problem, consider what can happen when two processes, +say "A" and "B", both want to update the same B database +using the locking steps outlined above. Assume process "A" has already +opened the database and has a write lock, but it hasn't actually updated +the database yet (it has finished step 2, but not started step 3 yet). Now +process "B" tries to open the same database - step 1 will succeed, +but it will block on step 2 until process "A" releases the lock. The +important thing to notice here is that at this point in time both +processes will have cached identical initial blocks from the database. + +Now process "A" updates the database and happens to change some of the +data held in the initial buffer. Process "A" terminates, flushing +all cached data to disk and releasing the database lock. At this point +the database on disk will correctly reflect the changes made by process +"A". + +With the lock released, process "B" can now continue. It also updates the +database and unfortunately it too modifies the data that was in its +initial buffer. Once that data gets flushed to disk it will overwrite +some/all of the changes process "A" made to the database. + +The result of this scenario is at best a database that doesn't contain +what you expect. At worst the database will corrupt. + +The above won't happen every time competing process update the same +B database, but it does illustrate why the technique should +not be used. + +=head2 Safe ways to lock a database + +Starting with version 2.x, Berkeley DB has internal support for locking. +The companion module to this one, B, provides an interface +to this locking functionality. If you are serious about locking +Berkeley DB databases, I strongly recommend using B. + +If using B isn't an option, there are a number of modules +available on CPAN that can be used to implement locking. Each one +implements locking differently and has different goals in mind. It is +therefore worth knowing the difference, so that you can pick the right +one for your application. Here are the three locking wrappers: + +=over 5 + +=item B + +A B wrapper which creates copies of the database file for +read access, so that you have a kind of a multiversioning concurrent read +system. However, updates are still serial. Use for databases where reads +may be lengthy and consistency problems may occur. + +=item B + +A B wrapper that has the ability to lock and unlock the database +while it is being used. Avoids the tie-before-flock problem by simply +re-tie-ing the database when you get or drop a lock. Because of the +flexibility in dropping and re-acquiring the lock in the middle of a +session, this can be massaged into a system that will work with long +updates and/or reads if the application follows the hints in the POD +documentation. + +=item B + +An extremely lightweight B wrapper that simply flocks a lockfile +before tie-ing the database and drops the lock after the untie. Allows +one to use the same lockfile for multiple databases to avoid deadlock +problems, if desired. Use for databases where updates are reads are +quick and simple flock locking semantics are enough. + +=back + +=head2 Sharing Databases With C Applications + +There is no technical reason why a Berkeley DB database cannot be +shared by both a Perl and a C application. + +The vast majority of problems that are reported in this area boil down +to the fact that C strings are NULL terminated, whilst Perl strings are +not. See L for a generic way to work around this problem. + +Here is a real example. Netscape 2.0 keeps a record of the locations you +visit along with the time you last visited them in a DB_HASH database. +This is usually stored in the file F<~/.netscape/history.db>. The key +field in the database is the location string and the value field is the +time the location was last visited stored as a 4 byte binary value. + +If you haven't already guessed, the location string is stored with a +terminating NULL. This means you need to be careful when accessing the +database. + +Here is a snippet of code that is loosely based on Tom Christiansen's +I script (available from your nearest CPAN archive in +F). + + use warnings ; + use strict ; + use DB_File ; + use Fcntl ; + + my ($dotdir, $HISTORY, %hist_db, $href, $binary_time, $date) ; + $dotdir = $ENV{HOME} || $ENV{LOGNAME}; + + $HISTORY = "$dotdir/.netscape/history.db"; + + tie %hist_db, 'DB_File', $HISTORY + or die "Cannot open $HISTORY: $!\n" ;; + + # Dump the complete database + while ( ($href, $binary_time) = each %hist_db ) { + + # remove the terminating NULL + $href =~ s/\x00$// ; + + # convert the binary time into a user friendly string + $date = localtime unpack("V", $binary_time); + print "$date $href\n" ; + } + + # check for the existence of a specific key + # remember to add the NULL + if ( $binary_time = $hist_db{"http://mox.perl.com/\x00"} ) { + $date = localtime unpack("V", $binary_time) ; + print "Last visited mox.perl.com on $date\n" ; + } + else { + print "Never visited mox.perl.com\n" + } + + untie %hist_db ; + +=head2 The untie() Gotcha + +If you make use of the Berkeley DB API, it is I strongly +recommended that you read L. + +Even if you don't currently make use of the API interface, it is still +worth reading it. + +Here is an example which illustrates the problem from a B +perspective: + + use DB_File ; + use Fcntl ; + + my %x ; + my $X ; + + $X = tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_TRUNC + or die "Cannot tie first time: $!" ; + + $x{123} = 456 ; + + untie %x ; + + tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_CREAT + or die "Cannot tie second time: $!" ; + + untie %x ; + +When run, the script will produce this error message: + + Cannot tie second time: Invalid argument at bad.file line 14. + +Although the error message above refers to the second tie() statement +in the script, the source of the problem is really with the untie() +statement that precedes it. + +Having read L you will probably have already guessed that the +error is caused by the extra copy of the tied object stored in C<$X>. +If you haven't, then the problem boils down to the fact that the +B destructor, DESTROY, will not be called until I +references to the tied object are destroyed. Both the tied variable, +C<%x>, and C<$X> above hold a reference to the object. The call to +untie() will destroy the first, but C<$X> still holds a valid +reference, so the destructor will not get called and the database file +F will remain open. The fact that Berkeley DB then reports the +attempt to open a database that is already open via the catch-all +"Invalid argument" doesn't help. + +If you run the script with the C<-w> flag the error message becomes: + + untie attempted while 1 inner references still exist at bad.file line 12. + Cannot tie second time: Invalid argument at bad.file line 14. + +which pinpoints the real problem. Finally the script can now be +modified to fix the original problem by destroying the API object +before the untie: + + ... + $x{123} = 456 ; + + undef $X ; + untie %x ; + + $X = tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_CREAT + ... + + +=head1 COMMON QUESTIONS + +=head2 Why is there Perl source in my database? + +If you look at the contents of a database file created by DB_File, +there can sometimes be part of a Perl script included in it. + +This happens because Berkeley DB uses dynamic memory to allocate +buffers which will subsequently be written to the database file. Being +dynamic, the memory could have been used for anything before DB +malloced it. As Berkeley DB doesn't clear the memory once it has been +allocated, the unused portions will contain random junk. In the case +where a Perl script gets written to the database, the random junk will +correspond to an area of dynamic memory that happened to be used during +the compilation of the script. + +Unless you don't like the possibility of there being part of your Perl +scripts embedded in a database file, this is nothing to worry about. + +=head2 How do I store complex data structures with DB_File? + +Although B cannot do this directly, there is a module which +can layer transparently over B to accomplish this feat. + +Check out the MLDBM module, available on CPAN in the directory +F. + +=head2 What does "Invalid Argument" mean? + +You will get this error message when one of the parameters in the +C call is wrong. Unfortunately there are quite a few parameters to +get wrong, so it can be difficult to figure out which one it is. + +Here are a couple of possibilities: + +=over 5 + +=item 1. + +Attempting to reopen a database without closing it. + +=item 2. + +Using the O_WRONLY flag. + +=back + +=head2 What does "Bareword 'DB_File' not allowed" mean? + +You will encounter this particular error message when you have the +C pragma (or the full strict pragma) in your script. +Consider this script: + + use warnings ; + use strict ; + use DB_File ; + my %x ; + tie %x, DB_File, "filename" ; + +Running it produces the error in question: + + Bareword "DB_File" not allowed while "strict subs" in use + +To get around the error, place the word C in either single or +double quotes, like this: + + tie %x, "DB_File", "filename" ; + +Although it might seem like a real pain, it is really worth the effort +of having a C in all your scripts. + +=head1 REFERENCES + +Articles that are either about B or make use of it. + +=over 5 + +=item 1. + +I, Tim Kientzle (tkientzle@ddj.com), +Dr. Dobb's Journal, Issue 295, January 1999, pp 34-41 + +=back + +=head1 HISTORY + +Moved to the Changes file. + +=head1 BUGS + +Some older versions of Berkeley DB had problems with fixed length +records using the RECNO file format. This problem has been fixed since +version 1.85 of Berkeley DB. + +I am sure there are bugs in the code. If you do find any, or can +suggest any enhancements, I would welcome your comments. + +=head1 AVAILABILITY + +B comes with the standard Perl source distribution. Look in +the directory F. Given the amount of time between releases +of Perl the version that ships with Perl is quite likely to be out of +date, so the most recent version can always be found on CPAN (see +L for details), in the directory +F. + +This version of B will work with either version 1.x, 2.x or +3.x of Berkeley DB, but is limited to the functionality provided by +version 1. + +The official web site for Berkeley DB is F. +All versions of Berkeley DB are available there. + +Alternatively, Berkeley DB version 1 is available at your nearest CPAN +archive in F. + +=head1 COPYRIGHT + +Copyright (c) 1995-2012 Paul Marquess. All rights reserved. This program +is free software; you can redistribute it and/or modify it under the +same terms as Perl itself. + +Although B is covered by the Perl license, the library it +makes use of, namely Berkeley DB, is not. Berkeley DB has its own +copyright and its own license. Please take the time to read it. + +Here are a few words taken from the Berkeley DB FAQ (at +F) regarding the license: + + Do I have to license DB to use it in Perl scripts? + + No. The Berkeley DB license requires that software that uses + Berkeley DB be freely redistributable. In the case of Perl, that + software is Perl, and not your scripts. Any Perl scripts that you + write are your property, including scripts that make use of + Berkeley DB. Neither the Perl license nor the Berkeley DB license + place any restriction on what you may do with them. + +If you are in any doubt about the license situation, contact either the +Berkeley DB authors or the author of DB_File. See L<"AUTHOR"> for details. + + +=head1 SEE ALSO + +L, L, L, L, L, +L + +=head1 AUTHOR + +The DB_File interface was written by Paul Marquess +Epmqs@cpan.orgE. + +=cut diff --git a/fastSum/resources/ROUGE/DB_File-1.835/DB_File.xs b/fastSum/resources/ROUGE/DB_File-1.835/DB_File.xs new file mode 100644 index 0000000000000000000000000000000000000000..151ec31dc64b76e6885a0c904a527da86d99385d --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/DB_File.xs @@ -0,0 +1,2054 @@ +/* + + DB_File.xs -- Perl 5 interface to Berkeley DB + + Written by Paul Marquess + + All comments/suggestions/problems are welcome + + Copyright (c) 1995-2014 Paul Marquess. All rights reserved. + This program is free software; you can redistribute it and/or + modify it under the same terms as Perl itself. + + Changes: + 0.1 - Initial Release + 0.2 - No longer bombs out if dbopen returns an error. + 0.3 - Added some support for multiple btree compares + 1.0 - Complete support for multiple callbacks added. + Fixed a problem with pushing a value onto an empty list. + 1.01 - Fixed a SunOS core dump problem. + The return value from TIEHASH wasn't set to NULL when + dbopen returned an error. + 1.02 - Use ALIAS to define TIEARRAY. + Removed some redundant commented code. + Merged OS2 code into the main distribution. + Allow negative subscripts with RECNO interface. + Changed the default flags to O_CREAT|O_RDWR + 1.03 - Added EXISTS + 1.04 - fixed a couple of bugs in hash_cb. Patches supplied by + Dave Hammen, hammen@gothamcity.jsc.nasa.gov + 1.05 - Added logic to allow prefix & hash types to be specified via + Makefile.PL + 1.06 - Minor namespace cleanup: Localized PrintBtree. + 1.07 - Fixed bug with RECNO, where bval wasn't defaulting to "\n". + 1.08 - No change to DB_File.xs + 1.09 - Default mode for dbopen changed to 0666 + 1.10 - Fixed fd method so that it still returns -1 for + in-memory files when db 1.86 is used. + 1.11 - No change to DB_File.xs + 1.12 - No change to DB_File.xs + 1.13 - Tidied up a few casts. + 1.14 - Made it illegal to tie an associative array to a RECNO + database and an ordinary array to a HASH or BTREE database. + 1.50 - Make work with both DB 1.x or DB 2.x + 1.51 - Fixed a bug in mapping 1.x O_RDONLY flag to 2.x DB_RDONLY equivalent + 1.52 - Patch from Gisle Aas to suppress "use of + undefined value" warning with db_get and db_seq. + 1.53 - Added DB_RENUMBER to flags for recno. + 1.54 - Fixed bug in the fd method + 1.55 - Fix for AIX from Jarkko Hietaniemi + 1.56 - No change to DB_File.xs + 1.57 - added the #undef op to allow building with Threads support. + 1.58 - Fixed a problem with the use of sv_setpvn. When the + size is specified as 0, it does a strlen on the data. + This was ok for DB 1.x, but isn't for DB 2.x. + 1.59 - No change to DB_File.xs + 1.60 - Some code tidy up + 1.61 - added flagSet macro for DB 2.5.x + fixed typo in O_RDONLY test. + 1.62 - No change to DB_File.xs + 1.63 - Fix to alllow DB 2.6.x to build. + 1.64 - Tidied up the 1.x to 2.x flags mapping code. + Added a patch from Mark Kettenis + to fix a flag mapping problem with O_RDONLY on the Hurd + 1.65 - Fixed a bug in the PUSH logic. + Added BOOT check that using 2.3.4 or greater + 1.66 - Added DBM filter code + 1.67 - Backed off the use of newSVpvn. + Fixed DBM Filter code for Perl 5.004. + Fixed a small memory leak in the filter code. + 1.68 - fixed backward compatibility bug with R_IAFTER & R_IBEFORE + merged in the 5.005_58 changes + 1.69 - fixed a bug in push -- DB_APPEND wasn't working properly. + Fixed the R_SETCURSOR bug introduced in 1.68 + Added a new Perl variable $DB_File::db_ver + 1.70 - Initialise $DB_File::db_ver and $DB_File::db_version with + GV_ADD|GV_ADDMULT -- bug spotted by Nick Ing-Simmons. + Added a BOOT check to test for equivalent versions of db.h & + libdb.a/so. + 1.71 - Support for Berkeley DB version 3. + Support for Berkeley DB 2/3's backward compatibility mode. + Rewrote push + 1.72 - No change to DB_File.xs + 1.73 - No change to DB_File.xs + 1.74 - A call to open needed parenthesised to stop it clashing + with a win32 macro. + Added Perl core patches 7703 & 7801. + 1.75 - Fixed Perl core patch 7703. + Added support to allow DB_File to be built with + Berkeley DB 3.2 -- btree_compare, btree_prefix and hash_cb + needed to be changed. + 1.76 - No change to DB_File.xs + 1.77 - Tidied up a few types used in calling newSVpvn. + 1.78 - Core patch 10335, 10372, 10534, 10549, 11051 included. + 1.79 - NEXTKEY ignores the input key. + Added lots of casts + 1.800 - Moved backward compatibility code into ppport.h. + Use the new constants code. + 1.801 - No change to DB_File.xs + 1.802 - No change to DB_File.xs + 1.803 - FETCH, STORE & DELETE don't map the flags parameter + into the equivalent Berkeley DB function anymore. + 1.804 - no change. + 1.805 - recursion detection added to the callbacks + Support for 4.1.X added. + Filter code can now cope with read-only $_ + 1.806 - recursion detection beefed up. + 1.807 - no change + 1.808 - leak fixed in ParseOpenInfo + 1.809 - no change + 1.810 - no change + 1.811 - no change + 1.812 - no change + 1.813 - no change + 1.814 - no change + 1.814 - C++ casting fixes + +*/ + +#define PERL_NO_GET_CONTEXT +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#ifdef _NOT_CORE +# include "ppport.h" +#endif + +int DB_File___unused() { return 0; } + +/* Mention DB_VERSION_MAJOR_CFG, DB_VERSION_MINOR_CFG, and + DB_VERSION_PATCH_CFG here so that Configure pulls them all in. */ + +/* Being the Berkeley DB we prefer the (which will be + * shortly #included by the ) __attribute__ to the possibly + * already defined __attribute__, for example by GNUC or by Perl. */ + +/* #if DB_VERSION_MAJOR_CFG < 2 */ +#ifndef DB_VERSION_MAJOR +# undef __attribute__ +#endif + +#ifdef COMPAT185 +# include +#else + +/* Uncomment one of the lines below */ +/* See the section "At least one secondary cursor must be specified to DB->join" + in the README file for the circumstances where you need to uncomment one + of the two lines below. +*/ + +/* #define time_t __time64_t */ +/* #define time_t __time32_t */ + +# include +#endif + +#ifndef PERL_UNUSED_ARG +# define PERL_UNUSED_ARG(x) ((void)x) +#endif + +/* Wall starts with 5.7.x */ + +#if PERL_REVISION > 5 || (PERL_REVISION == 5 && PERL_VERSION >= 7) + +/* Since we dropped the gccish definition of __attribute__ we will want + * to redefine dNOOP, however (so that dTHX continues to work). Yes, + * all this means that we can't do attribute checking on the DB_File, + * boo, hiss. */ +# ifndef DB_VERSION_MAJOR + +# undef dNOOP +# ifdef __cplusplus +# define dNOOP (void)0 +# else +# define dNOOP extern int DB_File___notused() +# endif + + /* Ditto for dXSARGS. */ +# undef dXSARGS +# define dXSARGS \ + dSP; dMARK; \ + I32 ax = mark - PL_stack_base + 1; \ + I32 items = sp - mark + +# endif + +/* avoid -Wall; DB_File xsubs never make use of `ix' setup for ALIASes */ +# undef dXSI32 +# define dXSI32 dNOOP + +#endif /* Perl >= 5.7 */ + +#include + +/* #define TRACE */ + +#ifdef TRACE +# define Trace(x) printf x +#else +# define Trace(x) +#endif + + +#define DBT_clear(x) Zero(&x, 1, DBT) ; + +#ifdef DB_VERSION_MAJOR + +#if DB_VERSION_MAJOR == 2 +# define BERKELEY_DB_1_OR_2 +#endif + +#if DB_VERSION_MAJOR > 3 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR >= 2) +# define AT_LEAST_DB_3_2 +#endif + +#if DB_VERSION_MAJOR > 3 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR >= 3) +# define AT_LEAST_DB_3_3 +#endif + +#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) +# define AT_LEAST_DB_4_1 +#endif + +#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3) +# define AT_LEAST_DB_4_3 +#endif + +#if DB_VERSION_MAJOR >= 6 +# define AT_LEAST_DB_6_0 +#endif + +#ifdef AT_LEAST_DB_3_3 +# define WANT_ERROR +#endif + +/* map version 2 features & constants onto their version 1 equivalent */ + +#ifdef DB_Prefix_t +# undef DB_Prefix_t +#endif +#define DB_Prefix_t size_t + +#ifdef DB_Hash_t +# undef DB_Hash_t +#endif +#define DB_Hash_t u_int32_t + +/* DBTYPE stays the same */ +/* HASHINFO, RECNOINFO and BTREEINFO map to DB_INFO */ +#if DB_VERSION_MAJOR == 2 + typedef DB_INFO INFO ; +#else /* DB_VERSION_MAJOR > 2 */ +# define DB_FIXEDLEN (0x8000) +#endif /* DB_VERSION_MAJOR == 2 */ + +/* version 2 has db_recno_t in place of recno_t */ +typedef db_recno_t recno_t; + + +#define R_CURSOR DB_SET_RANGE +#define R_FIRST DB_FIRST +#define R_IAFTER DB_AFTER +#define R_IBEFORE DB_BEFORE +#define R_LAST DB_LAST +#define R_NEXT DB_NEXT +#define R_NOOVERWRITE DB_NOOVERWRITE +#define R_PREV DB_PREV + +#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5 +# define R_SETCURSOR 0x800000 +#else +# define R_SETCURSOR (-100) +#endif + +#define R_RECNOSYNC 0 +#define R_FIXEDLEN DB_FIXEDLEN +#define R_DUP DB_DUP + + +#define db_HA_hash h_hash +#define db_HA_ffactor h_ffactor +#define db_HA_nelem h_nelem +#define db_HA_bsize db_pagesize +#define db_HA_cachesize db_cachesize +#define db_HA_lorder db_lorder + +#define db_BT_compare bt_compare +#define db_BT_prefix bt_prefix +#define db_BT_flags flags +#define db_BT_psize db_pagesize +#define db_BT_cachesize db_cachesize +#define db_BT_lorder db_lorder +#define db_BT_maxkeypage +#define db_BT_minkeypage + + +#define db_RE_reclen re_len +#define db_RE_flags flags +#define db_RE_bval re_pad +#define db_RE_bfname re_source +#define db_RE_psize db_pagesize +#define db_RE_cachesize db_cachesize +#define db_RE_lorder db_lorder + +#define TXN NULL, + +#define do_SEQ(db, key, value, flag) (db->cursor->c_get)(db->cursor, &key, &value, flag) + + +#define DBT_flags(x) x.flags = 0 +#define DB_flags(x, v) x |= v + +#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5 +# define flagSet(flags, bitmask) ((flags) & (bitmask)) +#else +# define flagSet(flags, bitmask) (((flags) & DB_OPFLAGS_MASK) == (u_int)(bitmask)) +#endif + +#else /* db version 1.x */ + +#define BERKELEY_DB_1 +#define BERKELEY_DB_1_OR_2 + +typedef union INFO { + HASHINFO hash ; + RECNOINFO recno ; + BTREEINFO btree ; + } INFO ; + + +#ifdef mDB_Prefix_t +# ifdef DB_Prefix_t +# undef DB_Prefix_t +# endif +# define DB_Prefix_t mDB_Prefix_t +#endif + +#ifdef mDB_Hash_t +# ifdef DB_Hash_t +# undef DB_Hash_t +# endif +# define DB_Hash_t mDB_Hash_t +#endif + +#define db_HA_hash hash.hash +#define db_HA_ffactor hash.ffactor +#define db_HA_nelem hash.nelem +#define db_HA_bsize hash.bsize +#define db_HA_cachesize hash.cachesize +#define db_HA_lorder hash.lorder + +#define db_BT_compare btree.compare +#define db_BT_prefix btree.prefix +#define db_BT_flags btree.flags +#define db_BT_psize btree.psize +#define db_BT_cachesize btree.cachesize +#define db_BT_lorder btree.lorder +#define db_BT_maxkeypage btree.maxkeypage +#define db_BT_minkeypage btree.minkeypage + +#define db_RE_reclen recno.reclen +#define db_RE_flags recno.flags +#define db_RE_bval recno.bval +#define db_RE_bfname recno.bfname +#define db_RE_psize recno.psize +#define db_RE_cachesize recno.cachesize +#define db_RE_lorder recno.lorder + +#define TXN + +#define do_SEQ(db, key, value, flag) (db->dbp->seq)(db->dbp, &key, &value, flag) +#define DBT_flags(x) +#define DB_flags(x, v) +#define flagSet(flags, bitmask) ((flags) & (bitmask)) + +#endif /* db version 1 */ + + + +#define db_DELETE(db, key, flags) ((db->dbp)->del)(db->dbp, TXN &key, 0) +#define db_STORE(db, key, value, flags) ((db->dbp)->put)(db->dbp, TXN &key, &value, 0) +#define db_FETCH(db, key, flags) ((db->dbp)->get)(db->dbp, TXN &key, &value, 0) + +#define db_sync(db, flags) ((db->dbp)->sync)(db->dbp, flags) +#define db_get(db, key, value, flags) ((db->dbp)->get)(db->dbp, TXN &key, &value, flags) + +#ifdef DB_VERSION_MAJOR +#define db_DESTROY(db) (!db->aborted && ( db->cursor->c_close(db->cursor),\ + (db->dbp->close)(db->dbp, 0) )) +#define db_close(db) ((db->dbp)->close)(db->dbp, 0) +#define db_del(db, key, flags) (flagSet(flags, R_CURSOR) \ + ? ((db->cursor)->c_del)(db->cursor, 0) \ + : ((db->dbp)->del)(db->dbp, NULL, &key, flags) ) + +#else /* ! DB_VERSION_MAJOR */ + +#define db_DESTROY(db) (!db->aborted && ((db->dbp)->close)(db->dbp)) +#define db_close(db) ((db->dbp)->close)(db->dbp) +#define db_del(db, key, flags) ((db->dbp)->del)(db->dbp, &key, flags) +#define db_put(db, key, value, flags) ((db->dbp)->put)(db->dbp, &key, &value, flags) + +#endif /* ! DB_VERSION_MAJOR */ + + +#define db_seq(db, key, value, flags) do_SEQ(db, key, value, flags) + +typedef struct { + DBTYPE type ; + DB * dbp ; + SV * compare ; + bool in_compare ; + SV * prefix ; + bool in_prefix ; + SV * hash ; + bool in_hash ; + bool aborted ; + int in_memory ; +#ifdef BERKELEY_DB_1_OR_2 + INFO info ; +#endif +#ifdef DB_VERSION_MAJOR + DBC * cursor ; +#endif + SV * filter_fetch_key ; + SV * filter_store_key ; + SV * filter_fetch_value ; + SV * filter_store_value ; + int filtering ; + + } DB_File_type; + +typedef DB_File_type * DB_File ; +typedef DBT DBTKEY ; + +#define my_sv_setpvn(sv, d, s) sv_setpvn(sv, (s ? d : (const char *)""), s) + +#define OutputValue(arg, name) \ + { if (RETVAL == 0) { \ + SvGETMAGIC(arg) ; \ + my_sv_setpvn(arg, (const char *)name.data, name.size) ; \ + TAINT; \ + SvTAINTED_on(arg); \ + SvUTF8_off(arg); \ + DBM_ckFilter(arg, filter_fetch_value,"filter_fetch_value") ; \ + } \ + } + +#define OutputKey(arg, name) \ + { if (RETVAL == 0) \ + { \ + SvGETMAGIC(arg) ; \ + if (db->type != DB_RECNO) { \ + my_sv_setpvn(arg, (const char *)name.data, name.size); \ + } \ + else \ + sv_setiv(arg, (I32)*(I32*)name.data - 1); \ + TAINT; \ + SvTAINTED_on(arg); \ + SvUTF8_off(arg); \ + DBM_ckFilter(arg, filter_fetch_key,"filter_fetch_key") ; \ + } \ + } + +#define my_SvUV32(sv) ((u_int32_t)SvUV(sv)) + +#ifdef CAN_PROTOTYPE +extern void __getBerkeleyDBInfo(void); +#endif + +/* Internal Global Data */ + +#define MY_CXT_KEY "DB_File::_guts" XS_VERSION + +typedef struct { + recno_t x_Value; + recno_t x_zero; + DB_File x_CurrentDB; + DBTKEY x_empty; +} my_cxt_t; + +START_MY_CXT + +#define Value (MY_CXT.x_Value) +#define zero (MY_CXT.x_zero) +#define CurrentDB (MY_CXT.x_CurrentDB) +#define empty (MY_CXT.x_empty) + +#define ERR_BUFF "DB_File::Error" + +#ifdef DB_VERSION_MAJOR + +static int +#ifdef CAN_PROTOTYPE +db_put(DB_File db, DBTKEY key, DBT value, u_int flags) +#else +db_put(db, key, value, flags) +DB_File db ; +DBTKEY key ; +DBT value ; +u_int flags ; +#endif +{ + int status ; + + if (flagSet(flags, R_IAFTER) || flagSet(flags, R_IBEFORE)) { + DBC * temp_cursor ; + DBT l_key, l_value; + +#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 6 + if (((db->dbp)->cursor)(db->dbp, NULL, &temp_cursor) != 0) +#else + if (((db->dbp)->cursor)(db->dbp, NULL, &temp_cursor, 0) != 0) +#endif + return (-1) ; + + memset(&l_key, 0, sizeof(l_key)); + l_key.data = key.data; + l_key.size = key.size; + memset(&l_value, 0, sizeof(l_value)); + l_value.data = value.data; + l_value.size = value.size; + + if ( temp_cursor->c_get(temp_cursor, &l_key, &l_value, DB_SET) != 0) { + (void)temp_cursor->c_close(temp_cursor); + return (-1); + } + + status = temp_cursor->c_put(temp_cursor, &key, &value, flags); + (void)temp_cursor->c_close(temp_cursor); + + return (status) ; + } + + + if (flagSet(flags, R_CURSOR)) { + return ((db->cursor)->c_put)(db->cursor, &key, &value, DB_CURRENT); + } + + if (flagSet(flags, R_SETCURSOR)) { + if ((db->dbp)->put(db->dbp, NULL, &key, &value, 0) != 0) + return -1 ; + return ((db->cursor)->c_get)(db->cursor, &key, &value, DB_SET_RANGE); + + } + + return ((db->dbp)->put)(db->dbp, NULL, &key, &value, flags) ; + +} + +#endif /* DB_VERSION_MAJOR */ + +static void +tidyUp(DB_File db) +{ + db->aborted = TRUE ; +} + + +static int + +#ifdef AT_LEAST_DB_6_0 +#ifdef CAN_PROTOTYPE +btree_compare(DB * db, const DBT *key1, const DBT *key2, size_t* locp) +#else +btree_compare(db, key1, key2, locp) +DB * db ; +const DBT * key1 ; +const DBT * key2 ; +size_t* locp; +#endif /* CAN_PROTOTYPE */ + +#else /* Berkeley DB < 6.0 */ +#ifdef AT_LEAST_DB_3_2 + +#ifdef CAN_PROTOTYPE +btree_compare(DB * db, const DBT *key1, const DBT *key2) +#else +btree_compare(db, key1, key2) +DB * db ; +const DBT * key1 ; +const DBT * key2 ; +#endif /* CAN_PROTOTYPE */ + +#else /* Berkeley DB < 3.2 */ + +#ifdef CAN_PROTOTYPE +btree_compare(const DBT *key1, const DBT *key2) +#else +btree_compare(key1, key2) +const DBT * key1 ; +const DBT * key2 ; +#endif + +#endif +#endif + +{ +#ifdef dTHX + dTHX; +#endif + dSP ; + dMY_CXT ; + void * data1, * data2 ; + int retval ; + int count ; + +#ifdef AT_LEAST_DB_3_2 + PERL_UNUSED_ARG(db); +#endif + + if (CurrentDB->in_compare) { + tidyUp(CurrentDB); + croak ("DB_File btree_compare: recursion detected\n") ; + } + + data1 = (char *) key1->data ; + data2 = (char *) key2->data ; + +#ifndef newSVpvn + /* As newSVpv will assume that the data pointer is a null terminated C + string if the size parameter is 0, make sure that data points to an + empty string if the length is 0 + */ + if (key1->size == 0) + data1 = "" ; + if (key2->size == 0) + data2 = "" ; +#endif + + ENTER ; + SAVETMPS; + SAVESPTR(CurrentDB); + CurrentDB->in_compare = FALSE; + SAVEINT(CurrentDB->in_compare); + CurrentDB->in_compare = TRUE; + + PUSHMARK(SP) ; + EXTEND(SP,2) ; + PUSHs(sv_2mortal(newSVpvn((const char*)data1,key1->size))); + PUSHs(sv_2mortal(newSVpvn((const char*)data2,key2->size))); + PUTBACK ; + + count = perl_call_sv(CurrentDB->compare, G_SCALAR); + + SPAGAIN ; + + if (count != 1){ + tidyUp(CurrentDB); + croak ("DB_File btree_compare: expected 1 return value from compare sub, got %d\n", count) ; + } + + retval = POPi ; + + PUTBACK ; + FREETMPS ; + LEAVE ; + + return (retval) ; + +} + +static DB_Prefix_t +#ifdef AT_LEAST_DB_3_2 + +#ifdef CAN_PROTOTYPE +btree_prefix(DB * db, const DBT *key1, const DBT *key2) +#else +btree_prefix(db, key1, key2) +Db * db ; +const DBT * key1 ; +const DBT * key2 ; +#endif + +#else /* Berkeley DB < 3.2 */ + +#ifdef CAN_PROTOTYPE +btree_prefix(const DBT *key1, const DBT *key2) +#else +btree_prefix(key1, key2) +const DBT * key1 ; +const DBT * key2 ; +#endif + +#endif +{ +#ifdef dTHX + dTHX; +#endif + dSP ; + dMY_CXT ; + char * data1, * data2 ; + int retval ; + int count ; + +#ifdef AT_LEAST_DB_3_2 + PERL_UNUSED_ARG(db); +#endif + + if (CurrentDB->in_prefix){ + tidyUp(CurrentDB); + croak ("DB_File btree_prefix: recursion detected\n") ; + } + + data1 = (char *) key1->data ; + data2 = (char *) key2->data ; + +#ifndef newSVpvn + /* As newSVpv will assume that the data pointer is a null terminated C + string if the size parameter is 0, make sure that data points to an + empty string if the length is 0 + */ + if (key1->size == 0) + data1 = "" ; + if (key2->size == 0) + data2 = "" ; +#endif + + ENTER ; + SAVETMPS; + SAVESPTR(CurrentDB); + CurrentDB->in_prefix = FALSE; + SAVEINT(CurrentDB->in_prefix); + CurrentDB->in_prefix = TRUE; + + PUSHMARK(SP) ; + EXTEND(SP,2) ; + PUSHs(sv_2mortal(newSVpvn(data1,key1->size))); + PUSHs(sv_2mortal(newSVpvn(data2,key2->size))); + PUTBACK ; + + count = perl_call_sv(CurrentDB->prefix, G_SCALAR); + + SPAGAIN ; + + if (count != 1){ + tidyUp(CurrentDB); + croak ("DB_File btree_prefix: expected 1 return value from prefix sub, got %d\n", count) ; + } + + retval = POPi ; + + PUTBACK ; + FREETMPS ; + LEAVE ; + + return (retval) ; +} + + +#ifdef BERKELEY_DB_1 +# define HASH_CB_SIZE_TYPE size_t +#else +# define HASH_CB_SIZE_TYPE u_int32_t +#endif + +static DB_Hash_t +#ifdef AT_LEAST_DB_3_2 + +#ifdef CAN_PROTOTYPE +hash_cb(DB * db, const void *data, u_int32_t size) +#else +hash_cb(db, data, size) +DB * db ; +const void * data ; +HASH_CB_SIZE_TYPE size ; +#endif + +#else /* Berkeley DB < 3.2 */ + +#ifdef CAN_PROTOTYPE +hash_cb(const void *data, HASH_CB_SIZE_TYPE size) +#else +hash_cb(data, size) +const void * data ; +HASH_CB_SIZE_TYPE size ; +#endif + +#endif +{ +#ifdef dTHX + dTHX; +#endif + dSP ; + dMY_CXT; + int retval = 0; + int count ; + +#ifdef AT_LEAST_DB_3_2 + PERL_UNUSED_ARG(db); +#endif + + if (CurrentDB->in_hash){ + tidyUp(CurrentDB); + croak ("DB_File hash callback: recursion detected\n") ; + } + +#ifndef newSVpvn + if (size == 0) + data = "" ; +#endif + + /* DGH - Next two lines added to fix corrupted stack problem */ + ENTER ; + SAVETMPS; + SAVESPTR(CurrentDB); + CurrentDB->in_hash = FALSE; + SAVEINT(CurrentDB->in_hash); + CurrentDB->in_hash = TRUE; + + PUSHMARK(SP) ; + + + XPUSHs(sv_2mortal(newSVpvn((char*)data,size))); + PUTBACK ; + + count = perl_call_sv(CurrentDB->hash, G_SCALAR); + + SPAGAIN ; + + if (count != 1){ + tidyUp(CurrentDB); + croak ("DB_File hash_cb: expected 1 return value from hash sub, got %d\n", count) ; + } + + retval = POPi ; + + PUTBACK ; + FREETMPS ; + LEAVE ; + + return (retval) ; +} + +#ifdef WANT_ERROR + +static void +#ifdef AT_LEAST_DB_4_3 +db_errcall_cb(const DB_ENV* dbenv, const char * db_errpfx, const char * buffer) +#else +db_errcall_cb(const char * db_errpfx, char * buffer) +#endif +{ +#ifdef dTHX + dTHX; +#endif + SV * sv = perl_get_sv(ERR_BUFF, FALSE) ; +#ifdef AT_LEAST_DB_4_3 + PERL_UNUSED_ARG(dbenv); +#endif + if (sv) { + if (db_errpfx) + sv_setpvf(sv, "%s: %s", db_errpfx, buffer) ; + else + sv_setpv(sv, buffer) ; + } +} +#endif + +#if defined(TRACE) && defined(BERKELEY_DB_1_OR_2) + +static void +#ifdef CAN_PROTOTYPE +PrintHash(INFO *hash) +#else +PrintHash(hash) +INFO * hash ; +#endif +{ + printf ("HASH Info\n") ; + printf (" hash = %s\n", + (hash->db_HA_hash != NULL ? "redefined" : "default")) ; + printf (" bsize = %d\n", hash->db_HA_bsize) ; + printf (" ffactor = %d\n", hash->db_HA_ffactor) ; + printf (" nelem = %d\n", hash->db_HA_nelem) ; + printf (" cachesize = %d\n", hash->db_HA_cachesize) ; + printf (" lorder = %d\n", hash->db_HA_lorder) ; + +} + +static void +#ifdef CAN_PROTOTYPE +PrintRecno(INFO *recno) +#else +PrintRecno(recno) +INFO * recno ; +#endif +{ + printf ("RECNO Info\n") ; + printf (" flags = %d\n", recno->db_RE_flags) ; + printf (" cachesize = %d\n", recno->db_RE_cachesize) ; + printf (" psize = %d\n", recno->db_RE_psize) ; + printf (" lorder = %d\n", recno->db_RE_lorder) ; + printf (" reclen = %lu\n", (unsigned long)recno->db_RE_reclen) ; + printf (" bval = %d 0x%x\n", recno->db_RE_bval, recno->db_RE_bval) ; + printf (" bfname = %d [%s]\n", recno->db_RE_bfname, recno->db_RE_bfname) ; +} + +static void +#ifdef CAN_PROTOTYPE +PrintBtree(INFO *btree) +#else +PrintBtree(btree) +INFO * btree ; +#endif +{ + printf ("BTREE Info\n") ; + printf (" compare = %s\n", + (btree->db_BT_compare ? "redefined" : "default")) ; + printf (" prefix = %s\n", + (btree->db_BT_prefix ? "redefined" : "default")) ; + printf (" flags = %d\n", btree->db_BT_flags) ; + printf (" cachesize = %d\n", btree->db_BT_cachesize) ; + printf (" psize = %d\n", btree->db_BT_psize) ; +#ifndef DB_VERSION_MAJOR + printf (" maxkeypage = %d\n", btree->db_BT_maxkeypage) ; + printf (" minkeypage = %d\n", btree->db_BT_minkeypage) ; +#endif + printf (" lorder = %d\n", btree->db_BT_lorder) ; +} + +#else + +#define PrintRecno(recno) +#define PrintHash(hash) +#define PrintBtree(btree) + +#endif /* TRACE */ + + +static I32 +#ifdef CAN_PROTOTYPE +GetArrayLength(pTHX_ DB_File db) +#else +GetArrayLength(db) +DB_File db ; +#endif +{ + DBT key ; + DBT value ; + int RETVAL ; + + DBT_clear(key) ; + DBT_clear(value) ; + RETVAL = do_SEQ(db, key, value, R_LAST) ; + if (RETVAL == 0) + RETVAL = *(I32 *)key.data ; + else /* No key means empty file */ + RETVAL = 0 ; + + return ((I32)RETVAL) ; +} + +static recno_t +#ifdef CAN_PROTOTYPE +GetRecnoKey(pTHX_ DB_File db, I32 value) +#else +GetRecnoKey(db, value) +DB_File db ; +I32 value ; +#endif +{ + if (value < 0) { + /* Get the length of the array */ + I32 length = GetArrayLength(aTHX_ db) ; + + /* check for attempt to write before start of array */ + if (length + value + 1 <= 0) { + tidyUp(db); + croak("Modification of non-creatable array value attempted, subscript %ld", (long)value) ; + } + + value = length + value + 1 ; + } + else + ++ value ; + + return value ; +} + + +static DB_File +#ifdef CAN_PROTOTYPE +ParseOpenInfo(pTHX_ int isHASH, char *name, int flags, int mode, SV *sv) +#else +ParseOpenInfo(isHASH, name, flags, mode, sv) +int isHASH ; +char * name ; +int flags ; +int mode ; +SV * sv ; +#endif +{ + +#ifdef BERKELEY_DB_1_OR_2 /* Berkeley DB Version 1 or 2 */ + + SV ** svp; + HV * action ; + DB_File RETVAL = (DB_File)safemalloc(sizeof(DB_File_type)) ; + void * openinfo = NULL ; + INFO * info = &RETVAL->info ; + STRLEN n_a; + dMY_CXT; + +#ifdef TRACE + printf("In ParseOpenInfo name=[%s] flags=[%d] mode=[%d] SV NULL=[%d]\n", + name, flags, mode, sv == NULL) ; +#endif + Zero(RETVAL, 1, DB_File_type) ; + + /* Default to HASH */ + RETVAL->filtering = 0 ; + RETVAL->filter_fetch_key = RETVAL->filter_store_key = + RETVAL->filter_fetch_value = RETVAL->filter_store_value = + RETVAL->hash = RETVAL->compare = RETVAL->prefix = NULL ; + RETVAL->type = DB_HASH ; + + /* DGH - Next line added to avoid SEGV on existing hash DB */ + CurrentDB = RETVAL; + + /* fd for 1.86 hash in memory files doesn't return -1 like 1.85 */ + RETVAL->in_memory = (name == NULL) ; + + if (sv) + { + if (! SvROK(sv) ) + croak ("type parameter is not a reference") ; + + svp = hv_fetch( (HV*)SvRV(sv), "GOT", 3, FALSE) ; + if (svp && SvOK(*svp)) + action = (HV*) SvRV(*svp) ; + else + croak("internal error") ; + + if (sv_isa(sv, "DB_File::HASHINFO")) + { + + if (!isHASH) + croak("DB_File can only tie an associative array to a DB_HASH database") ; + + RETVAL->type = DB_HASH ; + openinfo = (void*)info ; + + svp = hv_fetch(action, "hash", 4, FALSE); + + if (svp && SvOK(*svp)) + { + info->db_HA_hash = hash_cb ; + RETVAL->hash = newSVsv(*svp) ; + } + else + info->db_HA_hash = NULL ; + + svp = hv_fetch(action, "ffactor", 7, FALSE); + info->db_HA_ffactor = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "nelem", 5, FALSE); + info->db_HA_nelem = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "bsize", 5, FALSE); + info->db_HA_bsize = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "cachesize", 9, FALSE); + info->db_HA_cachesize = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "lorder", 6, FALSE); + info->db_HA_lorder = svp ? SvIV(*svp) : 0; + + PrintHash(info) ; + } + else if (sv_isa(sv, "DB_File::BTREEINFO")) + { + if (!isHASH) + croak("DB_File can only tie an associative array to a DB_BTREE database"); + + RETVAL->type = DB_BTREE ; + openinfo = (void*)info ; + + svp = hv_fetch(action, "compare", 7, FALSE); + if (svp && SvOK(*svp)) + { + info->db_BT_compare = btree_compare ; + RETVAL->compare = newSVsv(*svp) ; + } + else + info->db_BT_compare = NULL ; + + svp = hv_fetch(action, "prefix", 6, FALSE); + if (svp && SvOK(*svp)) + { + info->db_BT_prefix = btree_prefix ; + RETVAL->prefix = newSVsv(*svp) ; + } + else + info->db_BT_prefix = NULL ; + + svp = hv_fetch(action, "flags", 5, FALSE); + info->db_BT_flags = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "cachesize", 9, FALSE); + info->db_BT_cachesize = svp ? SvIV(*svp) : 0; + +#ifndef DB_VERSION_MAJOR + svp = hv_fetch(action, "minkeypage", 10, FALSE); + info->btree.minkeypage = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "maxkeypage", 10, FALSE); + info->btree.maxkeypage = svp ? SvIV(*svp) : 0; +#endif + + svp = hv_fetch(action, "psize", 5, FALSE); + info->db_BT_psize = svp ? SvIV(*svp) : 0; + + svp = hv_fetch(action, "lorder", 6, FALSE); + info->db_BT_lorder = svp ? SvIV(*svp) : 0; + + PrintBtree(info) ; + + } + else if (sv_isa(sv, "DB_File::RECNOINFO")) + { + if (isHASH) + croak("DB_File can only tie an array to a DB_RECNO database"); + + RETVAL->type = DB_RECNO ; + openinfo = (void *)info ; + + info->db_RE_flags = 0 ; + + svp = hv_fetch(action, "flags", 5, FALSE); + info->db_RE_flags = (u_long) (svp ? SvIV(*svp) : 0); + + svp = hv_fetch(action, "reclen", 6, FALSE); + info->db_RE_reclen = (size_t) (svp ? SvIV(*svp) : 0); + + svp = hv_fetch(action, "cachesize", 9, FALSE); + info->db_RE_cachesize = (u_int) (svp ? SvIV(*svp) : 0); + + svp = hv_fetch(action, "psize", 5, FALSE); + info->db_RE_psize = (u_int) (svp ? SvIV(*svp) : 0); + + svp = hv_fetch(action, "lorder", 6, FALSE); + info->db_RE_lorder = (int) (svp ? SvIV(*svp) : 0); + +#ifdef DB_VERSION_MAJOR + info->re_source = name ; + name = NULL ; +#endif + svp = hv_fetch(action, "bfname", 6, FALSE); + if (svp && SvOK(*svp)) { + char * ptr = SvPV(*svp,n_a) ; +#ifdef DB_VERSION_MAJOR + name = (char*) n_a ? ptr : NULL ; +#else + info->db_RE_bfname = (char*) (n_a ? ptr : NULL) ; +#endif + } + else +#ifdef DB_VERSION_MAJOR + name = NULL ; +#else + info->db_RE_bfname = NULL ; +#endif + + svp = hv_fetch(action, "bval", 4, FALSE); +#ifdef DB_VERSION_MAJOR + if (svp && SvOK(*svp)) + { + int value ; + if (SvPOK(*svp)) + value = (int)*SvPV(*svp, n_a) ; + else + value = SvIV(*svp) ; + + if (info->flags & DB_FIXEDLEN) { + info->re_pad = value ; + info->flags |= DB_PAD ; + } + else { + info->re_delim = value ; + info->flags |= DB_DELIMITER ; + } + + } +#else + if (svp && SvOK(*svp)) + { + if (SvPOK(*svp)) + info->db_RE_bval = (u_char)*SvPV(*svp, n_a) ; + else + info->db_RE_bval = (u_char)(unsigned long) SvIV(*svp) ; + DB_flags(info->flags, DB_DELIMITER) ; + + } + else + { + if (info->db_RE_flags & R_FIXEDLEN) + info->db_RE_bval = (u_char) ' ' ; + else + info->db_RE_bval = (u_char) '\n' ; + DB_flags(info->flags, DB_DELIMITER) ; + } +#endif + +#ifdef DB_RENUMBER + info->flags |= DB_RENUMBER ; +#endif + + PrintRecno(info) ; + } + else + croak("type is not of type DB_File::HASHINFO, DB_File::BTREEINFO or DB_File::RECNOINFO"); + } + + + /* OS2 Specific Code */ +#ifdef OS2 +#ifdef __EMX__ + flags |= O_BINARY; +#endif /* __EMX__ */ +#endif /* OS2 */ + +#ifdef DB_VERSION_MAJOR + + { + int Flags = 0 ; + int status ; + + /* Map 1.x flags to 2.x flags */ + if ((flags & O_CREAT) == O_CREAT) + Flags |= DB_CREATE ; + +#if O_RDONLY == 0 + if (flags == O_RDONLY) +#else + if ((flags & O_RDONLY) == O_RDONLY && (flags & O_RDWR) != O_RDWR) +#endif + Flags |= DB_RDONLY ; + +#ifdef O_TRUNC + if ((flags & O_TRUNC) == O_TRUNC) + Flags |= DB_TRUNCATE ; +#endif + + status = db_open(name, RETVAL->type, Flags, mode, NULL, (DB_INFO*)openinfo, &RETVAL->dbp) ; + if (status == 0) +#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 6 + status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor) ; +#else + status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor, + 0) ; +#endif + + if (status) + RETVAL->dbp = NULL ; + + } +#else + +#if defined(DB_LIBRARY_COMPATIBILITY_API) && DB_VERSION_MAJOR > 2 + RETVAL->dbp = __db185_open(name, flags, mode, RETVAL->type, openinfo) ; +#else + RETVAL->dbp = dbopen(name, flags, mode, RETVAL->type, openinfo) ; +#endif /* DB_LIBRARY_COMPATIBILITY_API */ + +#endif + + return (RETVAL) ; + +#else /* Berkeley DB Version > 2 */ + + SV ** svp; + HV * action ; + DB_File RETVAL = (DB_File)safemalloc(sizeof(DB_File_type)) ; + DB * dbp ; + STRLEN n_a; + int status ; + dMY_CXT; + +/* printf("In ParseOpenInfo name=[%s] flags=[%d] mode = [%d]\n", name, flags, mode) ; */ + Zero(RETVAL, 1, DB_File_type) ; + + /* Default to HASH */ + RETVAL->filtering = 0 ; + RETVAL->filter_fetch_key = RETVAL->filter_store_key = + RETVAL->filter_fetch_value = RETVAL->filter_store_value = + RETVAL->hash = RETVAL->compare = RETVAL->prefix = NULL ; + RETVAL->type = DB_HASH ; + + /* DGH - Next line added to avoid SEGV on existing hash DB */ + CurrentDB = RETVAL; + + /* fd for 1.86 hash in memory files doesn't return -1 like 1.85 */ + RETVAL->in_memory = (name == NULL) ; + + status = db_create(&RETVAL->dbp, NULL,0) ; + /* printf("db_create returned %d %s\n", status, db_strerror(status)) ; */ + if (status) { + RETVAL->dbp = NULL ; + return (RETVAL) ; + } + dbp = RETVAL->dbp ; + +#ifdef WANT_ERROR + RETVAL->dbp->set_errcall(RETVAL->dbp, db_errcall_cb) ; +#endif + if (sv) + { + if (! SvROK(sv) ) + croak ("type parameter is not a reference") ; + + svp = hv_fetch( (HV*)SvRV(sv), "GOT", 3, FALSE) ; + if (svp && SvOK(*svp)) + action = (HV*) SvRV(*svp) ; + else + croak("internal error") ; + + if (sv_isa(sv, "DB_File::HASHINFO")) + { + + if (!isHASH) + croak("DB_File can only tie an associative array to a DB_HASH database") ; + + RETVAL->type = DB_HASH ; + + svp = hv_fetch(action, "hash", 4, FALSE); + + if (svp && SvOK(*svp)) + { + (void)dbp->set_h_hash(dbp, hash_cb) ; + RETVAL->hash = newSVsv(*svp) ; + } + + svp = hv_fetch(action, "ffactor", 7, FALSE); + if (svp) + (void)dbp->set_h_ffactor(dbp, my_SvUV32(*svp)) ; + + svp = hv_fetch(action, "nelem", 5, FALSE); + if (svp) + (void)dbp->set_h_nelem(dbp, my_SvUV32(*svp)) ; + + svp = hv_fetch(action, "bsize", 5, FALSE); + if (svp) + (void)dbp->set_pagesize(dbp, my_SvUV32(*svp)); + + svp = hv_fetch(action, "cachesize", 9, FALSE); + if (svp) + (void)dbp->set_cachesize(dbp, 0, my_SvUV32(*svp), 0) ; + + svp = hv_fetch(action, "lorder", 6, FALSE); + if (svp) + (void)dbp->set_lorder(dbp, (int)SvIV(*svp)) ; + + PrintHash(info) ; + } + else if (sv_isa(sv, "DB_File::BTREEINFO")) + { + if (!isHASH) + croak("DB_File can only tie an associative array to a DB_BTREE database"); + + RETVAL->type = DB_BTREE ; + + svp = hv_fetch(action, "compare", 7, FALSE); + if (svp && SvOK(*svp)) + { + (void)dbp->set_bt_compare(dbp, btree_compare) ; + RETVAL->compare = newSVsv(*svp) ; + } + + svp = hv_fetch(action, "prefix", 6, FALSE); + if (svp && SvOK(*svp)) + { + (void)dbp->set_bt_prefix(dbp, btree_prefix) ; + RETVAL->prefix = newSVsv(*svp) ; + } + + svp = hv_fetch(action, "flags", 5, FALSE); + if (svp) + (void)dbp->set_flags(dbp, my_SvUV32(*svp)) ; + + svp = hv_fetch(action, "cachesize", 9, FALSE); + if (svp) + (void)dbp->set_cachesize(dbp, 0, my_SvUV32(*svp), 0) ; + + svp = hv_fetch(action, "psize", 5, FALSE); + if (svp) + (void)dbp->set_pagesize(dbp, my_SvUV32(*svp)) ; + + svp = hv_fetch(action, "lorder", 6, FALSE); + if (svp) + (void)dbp->set_lorder(dbp, (int)SvIV(*svp)) ; + + PrintBtree(info) ; + + } + else if (sv_isa(sv, "DB_File::RECNOINFO")) + { + int fixed = FALSE ; + + if (isHASH) + croak("DB_File can only tie an array to a DB_RECNO database"); + + RETVAL->type = DB_RECNO ; + + svp = hv_fetch(action, "flags", 5, FALSE); + if (svp) { + int flags = SvIV(*svp) ; + /* remove FIXDLEN, if present */ + if (flags & DB_FIXEDLEN) { + fixed = TRUE ; + flags &= ~DB_FIXEDLEN ; + } + } + + svp = hv_fetch(action, "cachesize", 9, FALSE); + if (svp) { + status = dbp->set_cachesize(dbp, 0, my_SvUV32(*svp), 0) ; + } + + svp = hv_fetch(action, "psize", 5, FALSE); + if (svp) { + status = dbp->set_pagesize(dbp, my_SvUV32(*svp)) ; + } + + svp = hv_fetch(action, "lorder", 6, FALSE); + if (svp) { + status = dbp->set_lorder(dbp, (int)SvIV(*svp)) ; + } + + svp = hv_fetch(action, "bval", 4, FALSE); + if (svp && SvOK(*svp)) + { + int value ; + if (SvPOK(*svp)) + value = (int)*SvPV(*svp, n_a) ; + else + value = (int)SvIV(*svp) ; + + if (fixed) { + status = dbp->set_re_pad(dbp, value) ; + } + else { + status = dbp->set_re_delim(dbp, value) ; + } + + } + + if (fixed) { + svp = hv_fetch(action, "reclen", 6, FALSE); + if (svp) { + u_int32_t len = my_SvUV32(*svp) ; + status = dbp->set_re_len(dbp, len) ; + } + } + + if (name != NULL) { + status = dbp->set_re_source(dbp, name) ; + name = NULL ; + } + + svp = hv_fetch(action, "bfname", 6, FALSE); + if (svp && SvOK(*svp)) { + char * ptr = SvPV(*svp,n_a) ; + name = (char*) n_a ? ptr : NULL ; + } + else + name = NULL ; + + + status = dbp->set_flags(dbp, (u_int32_t)DB_RENUMBER) ; + + if (flags){ + (void)dbp->set_flags(dbp, (u_int32_t)flags) ; + } + PrintRecno(info) ; + } + else + croak("type is not of type DB_File::HASHINFO, DB_File::BTREEINFO or DB_File::RECNOINFO"); + } + + { + u_int32_t Flags = 0 ; + int status ; + + /* Map 1.x flags to 3.x flags */ + if ((flags & O_CREAT) == O_CREAT) + Flags |= DB_CREATE ; + +#if O_RDONLY == 0 + if (flags == O_RDONLY) +#else + if ((flags & O_RDONLY) == O_RDONLY && (flags & O_RDWR) != O_RDWR) +#endif + Flags |= DB_RDONLY ; + +#ifdef O_TRUNC + if ((flags & O_TRUNC) == O_TRUNC) + Flags |= DB_TRUNCATE ; +#endif + +#ifdef AT_LEAST_DB_4_4 + /* need this for recno */ + if ((flags & O_TRUNC) == O_TRUNC) + Flags |= DB_CREATE ; +#endif + +#ifdef AT_LEAST_DB_4_1 + status = (RETVAL->dbp->open)(RETVAL->dbp, NULL, name, NULL, RETVAL->type, + Flags, mode) ; +#else + status = (RETVAL->dbp->open)(RETVAL->dbp, name, NULL, RETVAL->type, + Flags, mode) ; +#endif + /* printf("open returned %d %s\n", status, db_strerror(status)) ; */ + + if (status == 0) { + + status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor, + 0) ; + /* printf("cursor returned %d %s\n", status, db_strerror(status)) ; */ + } + + if (status) + { + db_close(RETVAL); /* close **dbp handle to prevent mem.leak */ + RETVAL->dbp = NULL ; + } + + } + + return (RETVAL) ; + +#endif /* Berkeley DB Version > 2 */ + +} /* ParseOpenInfo */ + + +#include "constants.h" + +MODULE = DB_File PACKAGE = DB_File PREFIX = db_ + +INCLUDE: constants.xs + +BOOT: + { +#ifdef dTHX + dTHX; +#endif +#ifdef WANT_ERROR + SV * sv_err = perl_get_sv(ERR_BUFF, GV_ADD|GV_ADDMULTI) ; +#endif + MY_CXT_INIT; +#ifdef WANT_ERROR + PERL_UNUSED_VAR(sv_err); /* huh? we just retrieved it... */ +#endif + __getBerkeleyDBInfo() ; + + DBT_clear(empty) ; + empty.data = &zero ; + empty.size = sizeof(recno_t) ; + } + + + +DB_File +db_DoTie_(isHASH, dbtype, name=undef, flags=O_CREAT|O_RDWR, mode=0666, type=DB_HASH) + int isHASH + char * dbtype + int flags + int mode + CODE: + { + char * name = (char *) NULL ; + SV * sv = (SV *) NULL ; + STRLEN n_a; + + if (items >= 3 && SvOK(ST(2))) + name = (char*) SvPV(ST(2), n_a) ; + + if (items == 6) + sv = ST(5) ; + + RETVAL = ParseOpenInfo(aTHX_ isHASH, name, flags, mode, sv) ; + Trace(("db_DoTie_ %p\n", RETVAL)); + if (RETVAL->dbp == NULL) { + Safefree(RETVAL); + RETVAL = NULL ; + } + } + OUTPUT: + RETVAL + +int +db_DESTROY(db) + DB_File db + PREINIT: + dMY_CXT; + INIT: + CurrentDB = db ; + Trace(("DESTROY %p\n", db)); + CLEANUP: + Trace(("DESTROY %p done\n", db)); + if (db->hash) + SvREFCNT_dec(db->hash) ; + if (db->compare) + SvREFCNT_dec(db->compare) ; + if (db->prefix) + SvREFCNT_dec(db->prefix) ; + if (db->filter_fetch_key) + SvREFCNT_dec(db->filter_fetch_key) ; + if (db->filter_store_key) + SvREFCNT_dec(db->filter_store_key) ; + if (db->filter_fetch_value) + SvREFCNT_dec(db->filter_fetch_value) ; + if (db->filter_store_value) + SvREFCNT_dec(db->filter_store_value) ; + safefree(db) ; +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; +#endif + + +int +db_DELETE(db, key, flags=0) + DB_File db + DBTKEY key + u_int flags + PREINIT: + dMY_CXT; + INIT: + (void)flags; + CurrentDB = db ; + + +int +db_EXISTS(db, key) + DB_File db + DBTKEY key + PREINIT: + dMY_CXT; + CODE: + { + DBT value ; + + DBT_clear(value) ; + CurrentDB = db ; + RETVAL = (((db->dbp)->get)(db->dbp, TXN &key, &value, 0) == 0) ; + } + OUTPUT: + RETVAL + +void +db_FETCH(db, key, flags=0) + DB_File db + DBTKEY key + u_int flags + PREINIT: + dMY_CXT ; + int RETVAL ; + CODE: + { + DBT value ; + + DBT_clear(value) ; + CurrentDB = db ; + RETVAL = db_get(db, key, value, flags) ; + ST(0) = sv_newmortal(); + OutputValue(ST(0), value) + } + +int +db_STORE(db, key, value, flags=0) + DB_File db + DBTKEY key + DBT value + u_int flags + PREINIT: + dMY_CXT; + INIT: + (void)flags; + CurrentDB = db ; + + +void +db_FIRSTKEY(db) + DB_File db + PREINIT: + dMY_CXT ; + int RETVAL ; + CODE: + { + DBTKEY key ; + DBT value ; + + DBT_clear(key) ; + DBT_clear(value) ; + CurrentDB = db ; + RETVAL = do_SEQ(db, key, value, R_FIRST) ; + ST(0) = sv_newmortal(); + OutputKey(ST(0), key) ; + } + +void +db_NEXTKEY(db, key) + DB_File db + DBTKEY key = NO_INIT + PREINIT: + dMY_CXT ; + int RETVAL ; + CODE: + { + DBT value ; + + DBT_clear(key) ; + DBT_clear(value) ; + CurrentDB = db ; + RETVAL = do_SEQ(db, key, value, R_NEXT) ; + ST(0) = sv_newmortal(); + OutputKey(ST(0), key) ; + } + +# +# These would be nice for RECNO +# + +int +unshift(db, ...) + DB_File db + ALIAS: UNSHIFT = 1 + PREINIT: + dMY_CXT; + CODE: + { + DBTKEY key ; + DBT value ; + int i ; + int One ; + STRLEN n_a; + + DBT_clear(key) ; + DBT_clear(value) ; + CurrentDB = db ; +#ifdef DB_VERSION_MAJOR + /* get the first value */ + RETVAL = do_SEQ(db, key, value, DB_FIRST) ; + RETVAL = 0 ; +#else + RETVAL = -1 ; +#endif + for (i = items-1 ; i > 0 ; --i) + { + DBM_ckFilter(ST(i), filter_store_value, "filter_store_value"); + value.data = SvPVbyte(ST(i), n_a) ; + value.size = n_a ; + One = 1 ; + key.data = &One ; + key.size = sizeof(int) ; +#ifdef DB_VERSION_MAJOR + RETVAL = (db->cursor->c_put)(db->cursor, &key, &value, DB_BEFORE) ; +#else + RETVAL = (db->dbp->put)(db->dbp, &key, &value, R_IBEFORE) ; +#endif + if (RETVAL != 0) + break; + } + } + OUTPUT: + RETVAL + +void +pop(db) + DB_File db + PREINIT: + dMY_CXT; + ALIAS: POP = 1 + PREINIT: + I32 RETVAL; + CODE: + { + DBTKEY key ; + DBT value ; + + DBT_clear(key) ; + DBT_clear(value) ; + CurrentDB = db ; + + /* First get the final value */ + RETVAL = do_SEQ(db, key, value, R_LAST) ; + ST(0) = sv_newmortal(); + /* Now delete it */ + if (RETVAL == 0) + { + /* the call to del will trash value, so take a copy now */ + OutputValue(ST(0), value) ; + RETVAL = db_del(db, key, R_CURSOR) ; + if (RETVAL != 0) + sv_setsv(ST(0), &PL_sv_undef); + } + } + +void +shift(db) + DB_File db + PREINIT: + dMY_CXT; + ALIAS: SHIFT = 1 + PREINIT: + I32 RETVAL; + CODE: + { + DBT value ; + DBTKEY key ; + + DBT_clear(key) ; + DBT_clear(value) ; + CurrentDB = db ; + /* get the first value */ + RETVAL = do_SEQ(db, key, value, R_FIRST) ; + ST(0) = sv_newmortal(); + /* Now delete it */ + if (RETVAL == 0) + { + /* the call to del will trash value, so take a copy now */ + OutputValue(ST(0), value) ; + RETVAL = db_del(db, key, R_CURSOR) ; + if (RETVAL != 0) + sv_setsv (ST(0), &PL_sv_undef) ; + } + } + + +I32 +push(db, ...) + DB_File db + PREINIT: + dMY_CXT; + ALIAS: PUSH = 1 + CODE: + { + DBTKEY key ; + DBT value ; + DB * Db = db->dbp ; + int i ; + STRLEN n_a; + int keyval ; + + DBT_flags(key) ; + DBT_flags(value) ; + CurrentDB = db ; + /* Set the Cursor to the Last element */ + RETVAL = do_SEQ(db, key, value, R_LAST) ; +#ifndef DB_VERSION_MAJOR + if (RETVAL >= 0) +#endif + { + if (RETVAL == 0) + keyval = *(int*)key.data ; + else + keyval = 0 ; + for (i = 1 ; i < items ; ++i) + { + DBM_ckFilter(ST(i), filter_store_value, "filter_store_value"); + value.data = SvPVbyte(ST(i), n_a) ; + value.size = n_a ; + ++ keyval ; + key.data = &keyval ; + key.size = sizeof(int) ; + RETVAL = (Db->put)(Db, TXN &key, &value, 0) ; + if (RETVAL != 0) + break; + } + } + } + OUTPUT: + RETVAL + +I32 +length(db) + DB_File db + PREINIT: + dMY_CXT; + ALIAS: FETCHSIZE = 1 + CODE: + CurrentDB = db ; + RETVAL = GetArrayLength(aTHX_ db) ; + OUTPUT: + RETVAL + + +# +# Now provide an interface to the rest of the DB functionality +# + +int +db_del(db, key, flags=0) + DB_File db + DBTKEY key + u_int flags + PREINIT: + dMY_CXT; + CODE: + CurrentDB = db ; + RETVAL = db_del(db, key, flags) ; +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; + else if (RETVAL == DB_NOTFOUND) + RETVAL = 1 ; +#endif + OUTPUT: + RETVAL + + +int +db_get(db, key, value, flags=0) + DB_File db + DBTKEY key + DBT value = NO_INIT + u_int flags + PREINIT: + dMY_CXT; + CODE: + CurrentDB = db ; + DBT_clear(value) ; + RETVAL = db_get(db, key, value, flags) ; +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; + else if (RETVAL == DB_NOTFOUND) + RETVAL = 1 ; +#endif + OUTPUT: + RETVAL + value + +int +db_put(db, key, value, flags=0) + DB_File db + DBTKEY key + DBT value + u_int flags + PREINIT: + dMY_CXT; + CODE: + CurrentDB = db ; + RETVAL = db_put(db, key, value, flags) ; +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; + else if (RETVAL == DB_KEYEXIST) + RETVAL = 1 ; +#endif + OUTPUT: + RETVAL + key if (flagSet(flags, R_IAFTER) || flagSet(flags, R_IBEFORE)) OutputKey(ST(1), key); + +int +db_fd(db) + DB_File db + PREINIT: + dMY_CXT ; + CODE: + CurrentDB = db ; +#ifdef DB_VERSION_MAJOR + RETVAL = -1 ; + { + int status = 0 ; + status = (db->in_memory + ? -1 + : ((db->dbp)->fd)(db->dbp, &RETVAL) ) ; + if (status != 0) + RETVAL = -1 ; + } +#else + RETVAL = (db->in_memory + ? -1 + : ((db->dbp)->fd)(db->dbp) ) ; +#endif + OUTPUT: + RETVAL + +int +db_sync(db, flags=0) + DB_File db + u_int flags + PREINIT: + dMY_CXT; + CODE: + CurrentDB = db ; + RETVAL = db_sync(db, flags) ; +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; +#endif + OUTPUT: + RETVAL + + +int +db_seq(db, key, value, flags) + DB_File db + DBTKEY key + DBT value = NO_INIT + u_int flags + PREINIT: + dMY_CXT; + CODE: + CurrentDB = db ; + DBT_clear(value) ; + RETVAL = db_seq(db, key, value, flags); +#ifdef DB_VERSION_MAJOR + if (RETVAL > 0) + RETVAL = -1 ; + else if (RETVAL == DB_NOTFOUND) + RETVAL = 1 ; +#endif + OUTPUT: + RETVAL + key + value + +SV * +filter_fetch_key(db, code) + DB_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + DBM_setFilter(db->filter_fetch_key, code) ; + +SV * +filter_store_key(db, code) + DB_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + DBM_setFilter(db->filter_store_key, code) ; + +SV * +filter_fetch_value(db, code) + DB_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + DBM_setFilter(db->filter_fetch_value, code) ; + +SV * +filter_store_value(db, code) + DB_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + DBM_setFilter(db->filter_store_value, code) ; + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/DB_File_BS b/fastSum/resources/ROUGE/DB_File-1.835/DB_File_BS new file mode 100644 index 0000000000000000000000000000000000000000..9282c498811d6f5c2d5cfac5bb21ee952097ef95 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/DB_File_BS @@ -0,0 +1,6 @@ +# NeXT needs /usr/lib/libposix.a to load along with DB_File.so +if ( $dlsrc eq "dl_next.xs" ) { + @DynaLoader::dl_resolve_using = ( '/usr/lib/libposix.a' ); +} + +1; diff --git a/fastSum/resources/ROUGE/DB_File-1.835/MANIFEST b/fastSum/resources/ROUGE/DB_File-1.835/MANIFEST new file mode 100644 index 0000000000000000000000000000000000000000..e460e81e936dfe44b3e0fbda1ad1c25b003f785a --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/MANIFEST @@ -0,0 +1,33 @@ +Changes +DB_File.pm +DB_File.xs +DB_File_BS +MANIFEST +Makefile.PL +README +config.in +dbinfo +fallback.h +fallback.xs +hints/dynixptx.pl +hints/sco.pl +patches/5.004 +patches/5.004_01 +patches/5.004_02 +patches/5.004_03 +patches/5.004_04 +patches/5.004_05 +patches/5.005 +patches/5.005_01 +patches/5.005_02 +patches/5.005_03 +patches/5.6.0 +ppport.h +t/db-btree.t +t/db-hash.t +t/db-recno.t +t/pod.t +typemap +version.c +META.yml Module meta-data (added by MakeMaker) +META.json Module JSON meta-data (added by MakeMaker) diff --git a/fastSum/resources/ROUGE/DB_File-1.835/META.json b/fastSum/resources/ROUGE/DB_File-1.835/META.json new file mode 100644 index 0000000000000000000000000000000000000000..7f975610144f9061b2b71ed048bb856ab89b0580 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/META.json @@ -0,0 +1,39 @@ +{ + "abstract" : "Perl5 access to Berkeley DB version 1.x", + "author" : [ + "Paul Marquess " + ], + "dynamic_config" : 1, + "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", + "license" : [ + "perl_5" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "DB_File", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : 0 + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : 0 + } + }, + "runtime" : { + "requires" : {} + } + }, + "release_status" : "stable", + "version" : "1.835" +} diff --git a/fastSum/resources/ROUGE/DB_File-1.835/META.yml b/fastSum/resources/ROUGE/DB_File-1.835/META.yml new file mode 100644 index 0000000000000000000000000000000000000000..9e50fef43eac75e06a4ee6b90115969c4b4b8fb3 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/META.yml @@ -0,0 +1,21 @@ +--- +abstract: 'Perl5 access to Berkeley DB version 1.x' +author: + - 'Paul Marquess ' +build_requires: + ExtUtils::MakeMaker: 0 +configure_requires: + ExtUtils::MakeMaker: 0 +dynamic_config: 1 +generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 +name: DB_File +no_index: + directory: + - t + - inc +requires: {} +version: 1.835 diff --git a/fastSum/resources/ROUGE/DB_File-1.835/MYMETA.json b/fastSum/resources/ROUGE/DB_File-1.835/MYMETA.json new file mode 100644 index 0000000000000000000000000000000000000000..b678a2858b06c789262d8aed8584451db0e15eff --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/MYMETA.json @@ -0,0 +1,39 @@ +{ + "abstract" : "Perl5 access to Berkeley DB version 1.x", + "author" : [ + "Paul Marquess " + ], + "dynamic_config" : 0, + "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150, CPAN::Meta::Converter version 2.150001", + "license" : [ + "perl_5" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "DB_File", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "runtime" : { + "requires" : {} + } + }, + "release_status" : "stable", + "version" : "1.835" +} diff --git a/fastSum/resources/ROUGE/DB_File-1.835/MYMETA.yml b/fastSum/resources/ROUGE/DB_File-1.835/MYMETA.yml new file mode 100644 index 0000000000000000000000000000000000000000..7931fefea2eb7adcf7cdb948dcb64f9bc8337fc2 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/MYMETA.yml @@ -0,0 +1,21 @@ +--- +abstract: 'Perl5 access to Berkeley DB version 1.x' +author: + - 'Paul Marquess ' +build_requires: + ExtUtils::MakeMaker: '0' +configure_requires: + ExtUtils::MakeMaker: '0' +dynamic_config: 0 +generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150, CPAN::Meta::Converter version 2.150001' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: DB_File +no_index: + directory: + - t + - inc +requires: {} +version: '1.835' diff --git a/fastSum/resources/ROUGE/DB_File-1.835/Makefile b/fastSum/resources/ROUGE/DB_File-1.835/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..2c33b520bab393b9a20ea382deddfe245179af9f --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/Makefile @@ -0,0 +1,1082 @@ +# This Makefile is for the DB_File extension to perl. +# +# It was generated automatically by MakeMaker version +# 7.0401 (Revision: 70401) from the contents of +# Makefile.PL. Don't edit this file, edit Makefile.PL instead. +# +# ANY CHANGES MADE HERE WILL BE LOST! +# +# MakeMaker ARGV: () +# + +# MakeMaker Parameters: + +# ABSTRACT_FROM => q[DB_File.pm] +# AUTHOR => [q[Paul Marquess ]] +# BUILD_REQUIRES => { } +# CONFIGURE_REQUIRES => { } +# DEFINE => q[-D_NOT_CORE -DmDB_Prefix_t=size_t -DmDB_Hash_t=u_int32_t ] +# INC => q[-I/usr/local/BerkeleyDB/include] +# INSTALLDIRS => q[site] +# LIBS => [q[-L/usr/local/BerkeleyDB/lib -ldb]] +# LICENSE => q[perl] +# NAME => q[DB_File] +# OBJECT => q[version$(OBJ_EXT) DB_File$(OBJ_EXT)] +# PREREQ_PM => { } +# TEST_REQUIRES => { } +# VERSION_FROM => q[DB_File.pm] +# XSPROTOARG => q[-noprototypes] +# XS_VERSION => q[1.835] +# clean => { FILES=>q[constants.h constants.xs DB_File.pm.bak t/db-btree.t.bak t/db-hash.t.bak t/db-recno.t.bak t/pod.t.bak] } +# depend => { Makefile=>q[config.in], version$(OBJ_EXT)=>q[version.c] } +# dist => { COMPRESS=>q[gzip], DIST_DEFAULT=>q[MyDoubleCheck tardist], SUFFIX=>q[gz] } +# macro => { my_files=>q[DB_File.pm t/db-btree.t t/db-hash.t t/db-recno.t t/pod.t] } + +# --- MakeMaker post_initialize section: + + +# --- MakeMaker const_config section: + +# These definitions are from config.sh (via /usr/lib/x86_64-linux-gnu/perl/5.22/Config.pm). +# They may have been overridden via Makefile.PL or on the command line. +AR = ar +CC = x86_64-linux-gnu-gcc +CCCDLFLAGS = -fPIC +CCDLFLAGS = -Wl,-E +DLEXT = so +DLSRC = dl_dlopen.xs +EXE_EXT = +FULL_AR = /usr/bin/ar +LD = x86_64-linux-gnu-gcc +LDDLFLAGS = -shared -L/usr/local/lib -fstack-protector-strong +LDFLAGS = -fstack-protector-strong -L/usr/local/lib +LIBC = libc-2.23.so +LIB_EXT = .a +OBJ_EXT = .o +OSNAME = linux +OSVERS = 3.16.0 +RANLIB = : +SITELIBEXP = /usr/local/share/perl/5.22.1 +SITEARCHEXP = /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 +SO = so +VENDORARCHEXP = /usr/lib/x86_64-linux-gnu/perl5/5.22 +VENDORLIBEXP = /usr/share/perl5 + + +# --- MakeMaker constants section: +AR_STATIC_ARGS = cr +DIRFILESEP = / +DFSEP = $(DIRFILESEP) +NAME = DB_File +NAME_SYM = DB_File +VERSION = 1.835 +VERSION_MACRO = VERSION +VERSION_SYM = 1_835 +DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\" +XS_VERSION = 1.835 +XS_VERSION_MACRO = XS_VERSION +XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\" +INST_ARCHLIB = blib/arch +INST_SCRIPT = blib/script +INST_BIN = blib/bin +INST_LIB = blib/lib +INST_MAN1DIR = blib/man1 +INST_MAN3DIR = blib/man3 +MAN1EXT = 1p +MAN3EXT = 3pm +INSTALLDIRS = site +DESTDIR = +PREFIX = $(SITEPREFIX) +PERLPREFIX = /usr +SITEPREFIX = /usr/local +VENDORPREFIX = /usr +INSTALLPRIVLIB = /usr/share/perl/5.22 +DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB) +INSTALLSITELIB = /usr/local/share/perl/5.22.1 +DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB) +INSTALLVENDORLIB = /usr/share/perl5 +DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB) +INSTALLARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.22 +DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB) +INSTALLSITEARCH = /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 +DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH) +INSTALLVENDORARCH = /usr/lib/x86_64-linux-gnu/perl5/5.22 +DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH) +INSTALLBIN = /usr/bin +DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN) +INSTALLSITEBIN = /usr/local/bin +DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN) +INSTALLVENDORBIN = /usr/bin +DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN) +INSTALLSCRIPT = /usr/bin +DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT) +INSTALLSITESCRIPT = /usr/local/bin +DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT) +INSTALLVENDORSCRIPT = /usr/bin +DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT) +INSTALLMAN1DIR = /usr/share/man/man1 +DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR) +INSTALLSITEMAN1DIR = /usr/local/man/man1 +DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR) +INSTALLVENDORMAN1DIR = /usr/share/man/man1 +DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR) +INSTALLMAN3DIR = /usr/share/man/man3 +DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR) +INSTALLSITEMAN3DIR = /usr/local/man/man3 +DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR) +INSTALLVENDORMAN3DIR = /usr/share/man/man3 +DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR) +PERL_LIB = /usr/share/perl/5.22 +PERL_ARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.22 +PERL_ARCHLIBDEP = /usr/lib/x86_64-linux-gnu/perl/5.22 +LIBPERL_A = libperl.a +FIRST_MAKEFILE = Makefile +MAKEFILE_OLD = Makefile.old +MAKE_APERL_FILE = Makefile.aperl +PERLMAINCC = $(CC) +PERL_INC = /usr/lib/x86_64-linux-gnu/perl/5.22/CORE +PERL_INCDEP = /usr/lib/x86_64-linux-gnu/perl/5.22/CORE +PERL = "/usr/bin/perl" +FULLPERL = "/usr/bin/perl" +ABSPERL = $(PERL) +PERLRUN = $(PERL) +FULLPERLRUN = $(FULLPERL) +ABSPERLRUN = $(ABSPERL) +PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +PERL_CORE = 0 +PERM_DIR = 755 +PERM_RW = 644 +PERM_RWX = 755 + +MAKEMAKER = /usr/share/perl/5.22/ExtUtils/MakeMaker.pm +MM_VERSION = 7.0401 +MM_REVISION = 70401 + +# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle). +# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle) +# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar) +# DLBASE = Basename part of dynamic library. May be just equal BASEEXT. +MAKE = make +FULLEXT = DB_File +BASEEXT = DB_File +PARENT_NAME = +DLBASE = $(BASEEXT) +VERSION_FROM = DB_File.pm +INC = -I/usr/local/BerkeleyDB/include +DEFINE = -D_NOT_CORE -DmDB_Prefix_t=size_t -DmDB_Hash_t=u_int32_t +OBJECT = version$(OBJ_EXT) DB_File$(OBJ_EXT) +LDFROM = $(OBJECT) +LINKTYPE = dynamic +BOOTDEP = DB_File_BS + +# Handy lists of source code files: +XS_FILES = DB_File.xs \ + constants.xs \ + fallback.xs +C_FILES = DB_File.c \ + constants.c \ + fallback.c \ + version.c +O_FILES = DB_File.o \ + constants.o \ + fallback.o \ + version.o +H_FILES = constants.h \ + fallback.h \ + ppport.h +MAN1PODS = +MAN3PODS = DB_File.pm + +# Where is the Config information that we are using/depend on +CONFIGDEP = $(PERL_ARCHLIBDEP)$(DFSEP)Config.pm $(PERL_INCDEP)$(DFSEP)config.h + +# Where to build things +INST_LIBDIR = $(INST_LIB) +INST_ARCHLIBDIR = $(INST_ARCHLIB) + +INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT) +INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT) + +INST_STATIC = $(INST_ARCHAUTODIR)/$(BASEEXT)$(LIB_EXT) +INST_DYNAMIC = $(INST_ARCHAUTODIR)/$(DLBASE).$(DLEXT) +INST_BOOT = $(INST_ARCHAUTODIR)/$(BASEEXT).bs + +# Extra linker info +EXPORT_LIST = +PERL_ARCHIVE = +PERL_ARCHIVEDEP = +PERL_ARCHIVE_AFTER = + + +TO_INST_PM = DB_File.pm + +PM_TO_BLIB = DB_File.pm \ + $(INST_LIB)/DB_File.pm + + +# --- MakeMaker platform_constants section: +MM_Unix_VERSION = 7.0401 +PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc + + +# --- MakeMaker tool_autosplit section: +# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto +AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$$$ARGV[0], $$$$ARGV[1], 0, 1, 1)' -- + + + +# --- MakeMaker tool_xsubpp section: + +XSUBPPDIR = /usr/share/perl/5.22/ExtUtils +XSUBPP = "$(XSUBPPDIR)$(DFSEP)xsubpp" +XSUBPPRUN = $(PERLRUN) $(XSUBPP) +XSPROTOARG = -noprototypes +XSUBPPDEPS = /usr/share/perl/5.22/ExtUtils/typemap typemap /usr/share/perl/5.22/ExtUtils$(DFSEP)xsubpp +XSUBPPARGS = -typemap "/usr/share/perl/5.22/ExtUtils/typemap" -typemap "typemap" +XSUBPP_EXTRA_ARGS = + + +# --- MakeMaker tools_other section: +SHELL = /bin/sh +CHMOD = chmod +CP = cp +MV = mv +NOOP = $(TRUE) +NOECHO = @ +RM_F = rm -f +RM_RF = rm -rf +TEST_F = test -f +TOUCH = touch +UMASK_NULL = umask 0 +DEV_NULL = > /dev/null 2>&1 +MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' -- +EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' -- +FALSE = false +TRUE = true +ECHO = echo +ECHO_N = echo -n +UNINST = 0 +VERBINST = 0 +MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' -- +DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' -- +UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' -- +WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' -- +MACROSTART = +MACROEND = +USEMAKEFILE = -f +FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' -- +CP_NONEMPTY = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'cp_nonempty' -- + + +# --- MakeMaker makemakerdflt section: +makemakerdflt : all + $(NOECHO) $(NOOP) + + +# --- MakeMaker dist section: +TAR = tar +TARFLAGS = cvf +ZIP = zip +ZIPFLAGS = -r +COMPRESS = gzip +SUFFIX = .gz +SHAR = shar +PREOP = $(NOECHO) $(NOOP) +POSTOP = $(NOECHO) $(NOOP) +TO_UNIX = $(NOECHO) $(NOOP) +CI = ci -u +RCS_LABEL = rcs -Nv$(VERSION_SYM): -q +DIST_CP = best +DIST_DEFAULT = MyDoubleCheck tardist +DISTNAME = DB_File +DISTVNAME = DB_File-1.835 + + +# --- MakeMaker macro section: +my_files = DB_File.pm t/db-btree.t t/db-hash.t t/db-recno.t t/pod.t + + +# --- MakeMaker depend section: +Makefile : config.in +version$(OBJ_EXT) : version.c + + +# --- MakeMaker cflags section: + +CCFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +OPTIMIZE = -O2 -g +PERLTYPE = +MPOLLUTE = + + +# --- MakeMaker const_loadlibs section: + +# DB_File might depend on some other libraries: +# See ExtUtils::Liblist for details +# +EXTRALIBS = -ldb +LDLOADLIBS = -ldb +BSLOADLIBS = + + +# --- MakeMaker const_cccmd section: +CCCMD = $(CC) -c $(PASTHRU_INC) $(INC) \ + $(CCFLAGS) $(OPTIMIZE) \ + $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \ + $(XS_DEFINE_VERSION) + +# --- MakeMaker post_constants section: + + +# --- MakeMaker pasthru section: + +PASTHRU = LIBPERL_A="$(LIBPERL_A)"\ + LINKTYPE="$(LINKTYPE)"\ + OPTIMIZE="$(OPTIMIZE)"\ + LD="$(LD)"\ + PREFIX="$(PREFIX)"\ + PASTHRU_DEFINE="$(PASTHRU_DEFINE)"\ + PASTHRU_INC="$(PASTHRU_INC)" + + +# --- MakeMaker special_targets section: +.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT) + +.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir + + + +# --- MakeMaker c_o section: + +.c.i: + x86_64-linux-gnu-gcc -E -c $(PASTHRU_INC) $(INC) \ + $(CCFLAGS) $(OPTIMIZE) \ + $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \ + $(XS_DEFINE_VERSION) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c > $*.i + +.c.s: + $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + +.c$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + +.cpp$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cpp + +.cxx$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cxx + +.cc$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cc + +.C$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.C + + +# --- MakeMaker xs_c section: + +.xs.c: + $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $(XSUBPP_EXTRA_ARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c + + +# --- MakeMaker xs_o section: + +.xs$(OBJ_EXT): + $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + + +# --- MakeMaker top_targets section: +all :: pure_all manifypods + $(NOECHO) $(NOOP) + + +pure_all :: config pm_to_blib subdirs linkext + $(NOECHO) $(NOOP) + +subdirs :: $(MYEXTLIB) + $(NOECHO) $(NOOP) + +config :: $(FIRST_MAKEFILE) blibdirs + $(NOECHO) $(NOOP) + +$(O_FILES): $(H_FILES) + +help : + perldoc ExtUtils::MakeMaker + + +# --- MakeMaker blibdirs section: +blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists + $(NOECHO) $(NOOP) + +# Backwards compat with 6.18 through 6.25 +blibdirs.ts : blibdirs + $(NOECHO) $(NOOP) + +$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_LIBDIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR) + $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists + +$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHLIB) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB) + $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists + +$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_AUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR) + $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists + +$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR) + $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists + +$(INST_BIN)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_BIN) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN) + $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists + +$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_SCRIPT) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT) + $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists + +$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN1DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR) + $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists + +$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN3DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR) + $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists + + + +# --- MakeMaker linkext section: + +linkext :: $(LINKTYPE) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dlsyms section: + + +# --- MakeMaker dynamic_bs section: +BOOTSTRAP = $(BASEEXT).bs + +# As Mkbootstrap might not write a file (if none is required) +# we use touch to prevent make continually trying to remake it. +# The DynaLoader only reads a non-empty file. +$(BOOTSTRAP) : $(FIRST_MAKEFILE) $(BOOTDEP) $(INST_ARCHAUTODIR)$(DFSEP).exists + $(NOECHO) $(ECHO) "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))" + $(NOECHO) $(PERLRUN) \ + "-MExtUtils::Mkbootstrap" \ + -e "Mkbootstrap('$(BASEEXT)','$(BSLOADLIBS)');" + $(NOECHO) $(TOUCH) "$@" + $(CHMOD) $(PERM_RW) "$@" + + +# --- MakeMaker dynamic section: + +dynamic :: $(FIRST_MAKEFILE) $(BOOTSTRAP) $(INST_DYNAMIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dynamic_lib section: + +# This section creates the dynamically loadable $(INST_DYNAMIC) +# from $(OBJECT) and possibly $(MYEXTLIB). +ARMAYBE = : +OTHERLDFLAGS = +INST_DYNAMIC_DEP = +INST_DYNAMIC_FIX = + +$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP) + $(RM_F) $@ + $(LD) $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) -o $@ $(MYEXTLIB) \ + $(PERL_ARCHIVE) $(LDLOADLIBS) $(PERL_ARCHIVE_AFTER) $(EXPORT_LIST) \ + $(INST_DYNAMIC_FIX) + $(CHMOD) $(PERM_RWX) $@ + $(NOECHO) $(RM_RF) $(BOOTSTRAP) + - $(CP_NONEMPTY) $(BOOTSTRAP) $(INST_BOOT) $(PERM_RW) + + +# --- MakeMaker static section: + +## $(INST_PM) has been moved to the all: target. +## It remains here for awhile to allow for old usage: "make static" +static :: $(FIRST_MAKEFILE) $(INST_STATIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker static_lib section: + +$(INST_STATIC) : $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists + $(RM_RF) $@ + $(FULL_AR) $(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@ + $(CHMOD) $(PERM_RWX) $@ + $(NOECHO) $(ECHO) "$(EXTRALIBS)" > "$(INST_ARCHAUTODIR)/extralibs.ld" + + +# --- MakeMaker manifypods section: + +POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--" +POD2MAN = $(POD2MAN_EXE) + + +manifypods : pure_all \ + DB_File.pm + $(NOECHO) $(POD2MAN) --section=$(MAN3EXT) --perm_rw=$(PERM_RW) -u \ + DB_File.pm $(INST_MAN3DIR)/DB_File.$(MAN3EXT) + + + + +# --- MakeMaker processPL section: + + +# --- MakeMaker installbin section: + + +# --- MakeMaker subdirs section: + +# none + +# --- MakeMaker clean_subdirs section: +clean_subdirs : + $(NOECHO) $(NOOP) + + +# --- MakeMaker clean section: + +# Delete temporary files but do not touch installed files. We don't delete +# the Makefile here so a later make realclean still has a makefile to use. + +clean :: clean_subdirs + - $(RM_F) \ + $(BASEEXT).bso $(BASEEXT).def \ + $(BASEEXT).exp $(BASEEXT).x \ + $(BOOTSTRAP) $(INST_ARCHAUTODIR)/extralibs.all \ + $(INST_ARCHAUTODIR)/extralibs.ld $(MAKE_APERL_FILE) \ + *$(LIB_EXT) *$(OBJ_EXT) \ + *perl.core DB_File.c \ + MYMETA.json MYMETA.yml \ + blibdirs.ts constants.c \ + core core.*perl.*.? \ + core.[0-9] core.[0-9][0-9] \ + core.[0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9] \ + core.[0-9][0-9][0-9][0-9][0-9] fallback.c \ + lib$(BASEEXT).def mon.out \ + perl perl$(EXE_EXT) \ + perl.exe perlmain.c \ + pm_to_blib pm_to_blib.ts \ + so_locations tmon.out + - $(RM_RF) \ + DB_File.pm.bak blib \ + constants.h constants.xs \ + t/db-btree.t.bak t/db-hash.t.bak \ + t/db-recno.t.bak t/pod.t.bak + $(NOECHO) $(RM_F) $(MAKEFILE_OLD) + - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL) + + +# --- MakeMaker realclean_subdirs section: +realclean_subdirs : + $(NOECHO) $(NOOP) + + +# --- MakeMaker realclean section: +# Delete temporary files (via clean) and also delete dist files +realclean purge :: clean realclean_subdirs + - $(RM_F) \ + $(OBJECT) $(FIRST_MAKEFILE) \ + $(MAKEFILE_OLD) + - $(RM_RF) \ + $(DISTVNAME) + + +# --- MakeMaker metafile section: +metafile : create_distdir + $(NOECHO) $(ECHO) Generating META.yml + $(NOECHO) $(ECHO) '---' > META_new.yml + $(NOECHO) $(ECHO) 'abstract: '\''Perl5 access to Berkeley DB version 1.x'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'author:' >> META_new.yml + $(NOECHO) $(ECHO) ' - '\''Paul Marquess '\''' >> META_new.yml + $(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'dynamic_config: 1' >> META_new.yml + $(NOECHO) $(ECHO) 'generated_by: '\''ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'license: perl' >> META_new.yml + $(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml + $(NOECHO) $(ECHO) ' url: http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml + $(NOECHO) $(ECHO) ' version: '\''1.4'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'name: DB_File' >> META_new.yml + $(NOECHO) $(ECHO) 'no_index:' >> META_new.yml + $(NOECHO) $(ECHO) ' directory:' >> META_new.yml + $(NOECHO) $(ECHO) ' - t' >> META_new.yml + $(NOECHO) $(ECHO) ' - inc' >> META_new.yml + $(NOECHO) $(ECHO) 'requires: {}' >> META_new.yml + $(NOECHO) $(ECHO) 'version: '\''1.835'\''' >> META_new.yml + -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml + $(NOECHO) $(ECHO) Generating META.json + $(NOECHO) $(ECHO) '{' > META_new.json + $(NOECHO) $(ECHO) ' "abstract" : "Perl5 access to Berkeley DB version 1.x",' >> META_new.json + $(NOECHO) $(ECHO) ' "author" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "Paul Marquess "' >> META_new.json + $(NOECHO) $(ECHO) ' ],' >> META_new.json + $(NOECHO) $(ECHO) ' "dynamic_config" : 1,' >> META_new.json + $(NOECHO) $(ECHO) ' "generated_by" : "ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001",' >> META_new.json + $(NOECHO) $(ECHO) ' "license" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "perl_5"' >> META_new.json + $(NOECHO) $(ECHO) ' ],' >> META_new.json + $(NOECHO) $(ECHO) ' "meta-spec" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",' >> META_new.json + $(NOECHO) $(ECHO) ' "version" : "2"' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "name" : "DB_File",' >> META_new.json + $(NOECHO) $(ECHO) ' "no_index" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "directory" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "t",' >> META_new.json + $(NOECHO) $(ECHO) ' "inc"' >> META_new.json + $(NOECHO) $(ECHO) ' ]' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "prereqs" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "build" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "ExtUtils::MakeMaker" : "0"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "configure" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "ExtUtils::MakeMaker" : "0"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "runtime" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {}' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "release_status" : "stable",' >> META_new.json + $(NOECHO) $(ECHO) ' "version" : "1.835"' >> META_new.json + $(NOECHO) $(ECHO) '}' >> META_new.json + -$(NOECHO) $(MV) META_new.json $(DISTVNAME)/META.json + + +# --- MakeMaker signature section: +signature : + cpansign -s + + +# --- MakeMaker dist_basics section: +distclean :: realclean distcheck + $(NOECHO) $(NOOP) + +distcheck : + $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck + +skipcheck : + $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck + +manifest : + $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest + +veryclean : realclean + $(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old + + + +# --- MakeMaker dist_core section: + +dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE) + $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \ + -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' -- + +tardist : $(DISTVNAME).tar$(SUFFIX) + $(NOECHO) $(NOOP) + +uutardist : $(DISTVNAME).tar$(SUFFIX) + uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)_uu' + +$(DISTVNAME).tar$(SUFFIX) : distdir + $(PREOP) + $(TO_UNIX) + $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME) + $(RM_RF) $(DISTVNAME) + $(COMPRESS) $(DISTVNAME).tar + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)' + $(POSTOP) + +zipdist : $(DISTVNAME).zip + $(NOECHO) $(NOOP) + +$(DISTVNAME).zip : distdir + $(PREOP) + $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME) + $(RM_RF) $(DISTVNAME) + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).zip' + $(POSTOP) + +shdist : distdir + $(PREOP) + $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar + $(RM_RF) $(DISTVNAME) + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).shar' + $(POSTOP) + + +# --- MakeMaker distdir section: +create_distdir : + $(RM_RF) $(DISTVNAME) + $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \ + -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');" + +distdir : create_distdir distmeta + $(NOECHO) $(NOOP) + + + +# --- MakeMaker dist_test section: +disttest : distdir + cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL + cd $(DISTVNAME) && $(MAKE) $(PASTHRU) + cd $(DISTVNAME) && $(MAKE) test $(PASTHRU) + + + +# --- MakeMaker dist_ci section: + +ci : + $(PERLRUN) "-MExtUtils::Manifest=maniread" \ + -e "@all = keys %{ maniread() };" \ + -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \ + -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});" + + +# --- MakeMaker distmeta section: +distmeta : create_distdir metafile + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -e q{META.yml};' \ + -e 'eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) }' \ + -e ' or print "Could not add META.yml to MANIFEST: $$$${'\''@'\''}\n"' -- + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -f q{META.json};' \ + -e 'eval { maniadd({q{META.json} => q{Module JSON meta-data (added by MakeMaker)}}) }' \ + -e ' or print "Could not add META.json to MANIFEST: $$$${'\''@'\''}\n"' -- + + + +# --- MakeMaker distsignature section: +distsignature : create_distdir + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) }' \ + -e ' or print "Could not add SIGNATURE to MANIFEST: $$$${'\''@'\''}\n"' -- + $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE + cd $(DISTVNAME) && cpansign -s + + + +# --- MakeMaker install section: + +install :: pure_install doc_install + $(NOECHO) $(NOOP) + +install_perl :: pure_perl_install doc_perl_install + $(NOECHO) $(NOOP) + +install_site :: pure_site_install doc_site_install + $(NOECHO) $(NOOP) + +install_vendor :: pure_vendor_install doc_vendor_install + $(NOECHO) $(NOOP) + +pure_install :: pure_$(INSTALLDIRS)_install + $(NOECHO) $(NOOP) + +doc_install :: doc_$(INSTALLDIRS)_install + $(NOECHO) $(NOOP) + +pure__install : pure_site_install + $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site + +doc__install : doc_site_install + $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site + +pure_perl_install :: all + $(NOECHO) umask 022; $(MOD_INSTALL) \ + "$(INST_LIB)" "$(DESTINSTALLPRIVLIB)" \ + "$(INST_ARCHLIB)" "$(DESTINSTALLARCHLIB)" \ + "$(INST_BIN)" "$(DESTINSTALLBIN)" \ + "$(INST_SCRIPT)" "$(DESTINSTALLSCRIPT)" \ + "$(INST_MAN1DIR)" "$(DESTINSTALLMAN1DIR)" \ + "$(INST_MAN3DIR)" "$(DESTINSTALLMAN3DIR)" + $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ + "$(SITEARCHEXP)/auto/$(FULLEXT)" + + +pure_site_install :: all + $(NOECHO) umask 02; $(MOD_INSTALL) \ + read "$(SITEARCHEXP)/auto/$(FULLEXT)/.packlist" \ + write "$(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist" \ + "$(INST_LIB)" "$(DESTINSTALLSITELIB)" \ + "$(INST_ARCHLIB)" "$(DESTINSTALLSITEARCH)" \ + "$(INST_BIN)" "$(DESTINSTALLSITEBIN)" \ + "$(INST_SCRIPT)" "$(DESTINSTALLSITESCRIPT)" \ + "$(INST_MAN1DIR)" "$(DESTINSTALLSITEMAN1DIR)" \ + "$(INST_MAN3DIR)" "$(DESTINSTALLSITEMAN3DIR)" + $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ + "$(PERL_ARCHLIB)/auto/$(FULLEXT)" + +pure_vendor_install :: all + $(NOECHO) umask 022; $(MOD_INSTALL) \ + "$(INST_LIB)" "$(DESTINSTALLVENDORLIB)" \ + "$(INST_ARCHLIB)" "$(DESTINSTALLVENDORARCH)" \ + "$(INST_BIN)" "$(DESTINSTALLVENDORBIN)" \ + "$(INST_SCRIPT)" "$(DESTINSTALLVENDORSCRIPT)" \ + "$(INST_MAN1DIR)" "$(DESTINSTALLVENDORMAN1DIR)" \ + "$(INST_MAN3DIR)" "$(DESTINSTALLVENDORMAN3DIR)" + + +doc_perl_install :: all + +doc_site_install :: all + $(NOECHO) $(ECHO) Appending installation info to "$(DESTINSTALLSITEARCH)/perllocal.pod" + -$(NOECHO) umask 02; $(MKPATH) "$(DESTINSTALLSITEARCH)" + -$(NOECHO) umask 02; $(DOC_INSTALL) \ + "Module" "$(NAME)" \ + "installed into" $(INSTALLSITELIB) \ + LINKTYPE "$(LINKTYPE)" \ + VERSION "$(VERSION)" \ + EXE_FILES "$(EXE_FILES)" \ + >> "$(DESTINSTALLSITEARCH)/perllocal.pod" + +doc_vendor_install :: all + + +uninstall :: uninstall_from_$(INSTALLDIRS)dirs + $(NOECHO) $(NOOP) + +uninstall_from_perldirs :: + +uninstall_from_sitedirs :: + $(NOECHO) $(UNINSTALL) "$(SITEARCHEXP)/auto/$(FULLEXT)/.packlist" + +uninstall_from_vendordirs :: + + +# --- MakeMaker force section: +# Phony target to force checking subdirectories. +FORCE : + $(NOECHO) $(NOOP) + + +# --- MakeMaker perldepend section: +PERL_HDRS = \ + $(PERL_INCDEP)/EXTERN.h \ + $(PERL_INCDEP)/INTERN.h \ + $(PERL_INCDEP)/XSUB.h \ + $(PERL_INCDEP)/av.h \ + $(PERL_INCDEP)/bitcount.h \ + $(PERL_INCDEP)/charclass_invlists.h \ + $(PERL_INCDEP)/config.h \ + $(PERL_INCDEP)/cop.h \ + $(PERL_INCDEP)/cv.h \ + $(PERL_INCDEP)/dosish.h \ + $(PERL_INCDEP)/ebcdic_tables.h \ + $(PERL_INCDEP)/embed.h \ + $(PERL_INCDEP)/embedvar.h \ + $(PERL_INCDEP)/fakesdio.h \ + $(PERL_INCDEP)/feature.h \ + $(PERL_INCDEP)/form.h \ + $(PERL_INCDEP)/git_version.h \ + $(PERL_INCDEP)/gv.h \ + $(PERL_INCDEP)/handy.h \ + $(PERL_INCDEP)/hv.h \ + $(PERL_INCDEP)/hv_func.h \ + $(PERL_INCDEP)/inline.h \ + $(PERL_INCDEP)/intrpvar.h \ + $(PERL_INCDEP)/iperlsys.h \ + $(PERL_INCDEP)/keywords.h \ + $(PERL_INCDEP)/l1_char_class_tab.h \ + $(PERL_INCDEP)/malloc_ctl.h \ + $(PERL_INCDEP)/metaconfig.h \ + $(PERL_INCDEP)/mg.h \ + $(PERL_INCDEP)/mg_data.h \ + $(PERL_INCDEP)/mg_raw.h \ + $(PERL_INCDEP)/mg_vtable.h \ + $(PERL_INCDEP)/mydtrace.h \ + $(PERL_INCDEP)/nostdio.h \ + $(PERL_INCDEP)/op.h \ + $(PERL_INCDEP)/op_reg_common.h \ + $(PERL_INCDEP)/opcode.h \ + $(PERL_INCDEP)/opnames.h \ + $(PERL_INCDEP)/overload.h \ + $(PERL_INCDEP)/pad.h \ + $(PERL_INCDEP)/parser.h \ + $(PERL_INCDEP)/patchlevel-debian.h \ + $(PERL_INCDEP)/patchlevel.h \ + $(PERL_INCDEP)/perl.h \ + $(PERL_INCDEP)/perlapi.h \ + $(PERL_INCDEP)/perlio.h \ + $(PERL_INCDEP)/perliol.h \ + $(PERL_INCDEP)/perlsdio.h \ + $(PERL_INCDEP)/perlvars.h \ + $(PERL_INCDEP)/perly.h \ + $(PERL_INCDEP)/pp.h \ + $(PERL_INCDEP)/pp_proto.h \ + $(PERL_INCDEP)/proto.h \ + $(PERL_INCDEP)/reentr.h \ + $(PERL_INCDEP)/regcharclass.h \ + $(PERL_INCDEP)/regcomp.h \ + $(PERL_INCDEP)/regexp.h \ + $(PERL_INCDEP)/regnodes.h \ + $(PERL_INCDEP)/scope.h \ + $(PERL_INCDEP)/sv.h \ + $(PERL_INCDEP)/thread.h \ + $(PERL_INCDEP)/time64.h \ + $(PERL_INCDEP)/time64_config.h \ + $(PERL_INCDEP)/uconfig.h \ + $(PERL_INCDEP)/unicode_constants.h \ + $(PERL_INCDEP)/unixish.h \ + $(PERL_INCDEP)/utf8.h \ + $(PERL_INCDEP)/utfebcdic.h \ + $(PERL_INCDEP)/util.h \ + $(PERL_INCDEP)/uudmap.h \ + $(PERL_INCDEP)/vutil.h \ + $(PERL_INCDEP)/warnings.h + +$(OBJECT) : $(PERL_HDRS) + +DB_File.c constants.c fallback.c : $(XSUBPPDEPS) + + +# --- MakeMaker makefile section: + +$(OBJECT) : $(FIRST_MAKEFILE) + +# We take a very conservative approach here, but it's worth it. +# We move Makefile to Makefile.old here to avoid gnu make looping. +$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP) + $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?" + $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..." + -$(NOECHO) $(RM_F) $(MAKEFILE_OLD) + -$(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) + - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL) + $(PERLRUN) Makefile.PL + $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <==" + $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <==" + $(FALSE) + + + +# --- MakeMaker staticmake section: + +# --- MakeMaker makeaperl section --- +MAP_TARGET = perl +FULLPERL = "/usr/bin/perl" + +$(MAP_TARGET) :: static $(MAKE_APERL_FILE) + $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@ + +$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib + $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET) + $(NOECHO) $(PERLRUNINST) \ + Makefile.PL DIR="" \ + MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \ + MAKEAPERL=1 NORECURS=1 CCCDLFLAGS= + + +# --- MakeMaker test section: + +TEST_VERBOSE=0 +TEST_TYPE=test_$(LINKTYPE) +TEST_FILE = test.pl +TEST_FILES = t/*.t +TESTDB_SW = -d + +testdb :: testdb_$(LINKTYPE) + +test :: $(TEST_TYPE) subdirs-test + +subdirs-test :: + $(NOECHO) $(NOOP) + + +test_dynamic :: pure_all + PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES) + +testdb_dynamic :: pure_all + PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) + +test_ : test_dynamic + +test_static :: pure_all $(MAP_TARGET) + PERL_DL_NONLAZY=1 ./$(MAP_TARGET) "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES) + +testdb_static :: pure_all $(MAP_TARGET) + PERL_DL_NONLAZY=1 ./$(MAP_TARGET) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) + + + +# --- MakeMaker ppd section: +# Creates a PPD (Perl Package Description) for a binary distribution. +ppd : + $(NOECHO) $(ECHO) '' > $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' Perl5 access to Berkeley DB version 1.x' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' Paul Marquess <pmqs@cpan.org>' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) '' >> $(DISTNAME).ppd + + +# --- MakeMaker pm_to_blib section: + +pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM) + $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \ + DB_File.pm $(INST_LIB)/DB_File.pm + $(NOECHO) $(TOUCH) pm_to_blib + + +# --- MakeMaker selfdocument section: + + +# --- MakeMaker postamble section: + +MyDoubleCheck: + @echo Checking config.in is setup for a release + @(grep "^LIB.*/usr/local/BerkeleyDB" config.in && \ + grep "^INCLUDE.*/usr/local/BerkeleyDB" config.in && \ + grep "^#DBNAME.*" config.in) >/dev/null || \ + (echo config.in needs fixing ; exit 1) + @echo config.in is ok + @echo + @echo Checking DB_File.xs is ok for a release. + @(perl -ne ' exit 1 if /^\s*#\s*define\s+TRACE/ ; ' DB_File.xs || \ + (echo DB_File.xs needs fixing ; exit 1)) + @echo DB_File.xs is ok + @echo + @echo Checking for $$^W in files: $(my_files) + @perl -ne ' \ + exit 1 if /^\s*local\s*\(\s*\$$\^W\s*\)/;' $(my_files) || \ + (echo found unexpected $$^W ; exit 1) + @echo No $$^W found. + @echo + @echo Checking for 'use vars' in files: $(my_files) + @perl -ne ' \ + exit 0 if /^__(DATA|END)__/; \ + exit 1 if /^\s*use\s+vars/;' $(my_files) || \ + (echo found unexpected "use vars"; exit 1) + @echo No 'use vars' found. + @echo + @echo All files are OK for a release. + @echo + + + +# End. diff --git a/fastSum/resources/ROUGE/DB_File-1.835/Makefile.PL b/fastSum/resources/ROUGE/DB_File-1.835/Makefile.PL new file mode 100644 index 0000000000000000000000000000000000000000..f5ef7c85f852dbde4fb17dafd9ca7390359a8966 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/Makefile.PL @@ -0,0 +1,361 @@ +#! perl -w + +use strict ; +use ExtUtils::MakeMaker 5.16 ; +use Config ; + +die "DB_File needs Perl 5.8.3 or better. This is $]\n" + if $] < 5.008003; + +my $VER_INFO ; +my $LIB_DIR ; +my $INC_DIR ; +my $DB_NAME ; +my $LIBS ; +my $COMPAT185 = "" ; + +ParseCONFIG() ; + +my @files = ('DB_File.pm', glob "t/*.t") ; +UpDowngrade(@files); + +if (defined $DB_NAME) + { $LIBS = $DB_NAME } +else { + if ($^O eq 'MSWin32') + { $LIBS = $Config{cc} =~ /gcc/ ? '-ldb' : '-llibdb' } + else + { $LIBS = '-ldb' } +} + +# Solaris is special. +#$LIBS .= " -lthread" if $^O eq 'solaris' ; + +# AIX is special. +$LIBS .= " -lpthread" if $^O eq 'aix' ; + +# OS2 is a special case, so check for it now. +my $OS2 = "" ; +$OS2 = "-DOS2" if $Config{'osname'} eq 'os2' ; + +my $WALL = '' ; +#$WALL = ' -Wall '; + +WriteMakefile( + NAME => 'DB_File', + LIBS => ["-L${LIB_DIR} $LIBS"], + INC => "-I$INC_DIR", + VERSION_FROM => 'DB_File.pm', + XS_VERSION => eval MM->parse_version('DB_File.pm'), + XSPROTOARG => '-noprototypes', + DEFINE => "-D_NOT_CORE $OS2 $VER_INFO $COMPAT185 $WALL", + OBJECT => 'version$(OBJ_EXT) DB_File$(OBJ_EXT)', + ((ExtUtils::MakeMaker->VERSION() gt '6.30') + ? ('LICENSE' => 'perl') + : () + ), + ( + $] >= 5.005 + ? (ABSTRACT_FROM => 'DB_File.pm', + AUTHOR => 'Paul Marquess ') + : () + ), + + ($] < 5.008 || $] > 5.011) + ? (INSTALLDIRS => 'site') + : (INSTALLDIRS => 'perl'), + + #OPTIMIZE => '-g', + 'depend' => { 'Makefile' => 'config.in', + 'version$(OBJ_EXT)' => 'version.c'}, + 'clean' => { FILES => 'constants.h constants.xs DB_File.pm.bak t/db-btree.t.bak t/db-hash.t.bak t/db-recno.t.bak t/pod.t.bak' }, + 'macro' => { my_files => "@files" }, + 'dist' => { COMPRESS => 'gzip', SUFFIX => 'gz', + DIST_DEFAULT => 'MyDoubleCheck tardist'}, + ); + + +my @names = qw( + BTREEMAGIC + BTREEVERSION + DB_LOCK + DB_SHMEM + DB_TXN + HASHMAGIC + HASHVERSION + MAX_PAGE_NUMBER + MAX_PAGE_OFFSET + MAX_REC_NUMBER + RET_ERROR + RET_SPECIAL + RET_SUCCESS + R_CURSOR + R_DUP + R_FIRST + R_FIXEDLEN + R_IAFTER + R_IBEFORE + R_LAST + R_NEXT + R_NOKEY + R_NOOVERWRITE + R_PREV + R_RECNOSYNC + R_SETCURSOR + R_SNAPSHOT + __R_UNUSED + ); + +if (eval {require ExtUtils::Constant; 1}) { + # Check the constants above all appear in @EXPORT in DB_File.pm + my %names = map { $_, 1} @names; + open F, ") + { + last if /^\s*\@EXPORT\s+=\s+qw\(/ ; + } + + while () + { + last if /^\s*\)/ ; + /(\S+)/ ; + delete $names{$1} if defined $1 ; + } + close F ; + + if ( keys %names ) + { + my $missing = join ("\n\t", sort keys %names) ; + die "The following names are missing from \@EXPORT in DB_File.pm\n" . + "\t$missing\n" ; + } + + + ExtUtils::Constant::WriteConstants( + NAME => 'DB_File', + NAMES => \@names, + C_FILE => 'constants.h', + XS_FILE => 'constants.xs', + + ); +} +else { + use File::Copy; + copy ('fallback.h', 'constants.h') + or die "Can't copy fallback.h to constants.h: $!"; + copy ('fallback.xs', 'constants.xs') + or die "Can't copy fallback.xs to constants.xs: $!"; +} + +exit; + + +sub MY::libscan +{ + my $self = shift ; + my $path = shift ; + + return undef + if $path =~ /(~|\.bak)$/ || + $path =~ /^\..*\.swp$/ ; + + return $path; +} + + +sub MY::postamble { <<'EOM' } ; + +MyDoubleCheck: + @echo Checking config.in is setup for a release + @(grep "^LIB.*/usr/local/BerkeleyDB" config.in && \ + grep "^INCLUDE.*/usr/local/BerkeleyDB" config.in && \ + grep "^#DBNAME.*" config.in) >/dev/null || \ + (echo config.in needs fixing ; exit 1) + @echo config.in is ok + @echo + @echo Checking DB_File.xs is ok for a release. + @(perl -ne ' exit 1 if /^\s*#\s*define\s+TRACE/ ; ' DB_File.xs || \ + (echo DB_File.xs needs fixing ; exit 1)) + @echo DB_File.xs is ok + @echo + @echo Checking for $$^W in files: $(my_files) + @perl -ne ' \ + exit 1 if /^\s*local\s*\(\s*\$$\^W\s*\)/;' $(my_files) || \ + (echo found unexpected $$^W ; exit 1) + @echo No $$^W found. + @echo + @echo Checking for 'use vars' in files: $(my_files) + @perl -ne ' \ + exit 0 if /^__(DATA|END)__/; \ + exit 1 if /^\s*use\s+vars/;' $(my_files) || \ + (echo found unexpected "use vars"; exit 1) + @echo No 'use vars' found. + @echo + @echo All files are OK for a release. + @echo + +EOM + + + +sub ParseCONFIG +{ + my ($k, $v) ; + my @badkey = () ; + my %Info = () ; + my @Options = qw( INCLUDE LIB PREFIX HASH DBNAME COMPAT185 ) ; + my %ValidOption = map {$_, 1} @Options ; + my %Parsed = %ValidOption ; + my $CONFIG = 'config.in' ; + + print "Parsing $CONFIG...\n" ; + + # DBNAME & COMPAT185 are optional, so pretend they have + # been parsed. + delete $Parsed{'DBNAME'} ; + delete $Parsed{'COMPAT185'} ; + $Info{COMPAT185} = "No" ; + + + open(F, "$CONFIG") or die "Cannot open file $CONFIG: $!\n" ; + while () { + s/^\s*|\s*$//g ; + next if /^\s*$/ or /^\s*#/ ; + s/\s*#\s*$// ; + + ($k, $v) = split(/\s+=\s+/, $_, 2) ; + $k = uc $k ; + if ($ValidOption{$k}) { + delete $Parsed{$k} ; + $Info{$k} = $v ; + } + else { + push(@badkey, $k) ; + } + } + close F ; + + print "Unknown keys in $CONFIG ignored [@badkey]\n" + if @badkey ; + + # check parsed values + my @missing = () ; + die "The following keys are missing from $CONFIG file: [@missing]\n" + if @missing = keys %Parsed ; + + $INC_DIR = $ENV{'DB_FILE_INCLUDE'} || $Info{'INCLUDE'} ; + $LIB_DIR = $ENV{'DB_FILE_LIB'} || $Info{'LIB'} ; + $DB_NAME = $ENV{'DB_FILE_NAME'} || $Info{'DBNAME'} ; + $COMPAT185 = "-DCOMPAT185 -DDB_LIBRARY_COMPATIBILITY_API" + if (defined $ENV{'DB_FILE_COMPAT185'} && + $ENV{'DB_FILE_COMPAT185'} =~ /^\s*(on|true|1)\s*$/i) || + $Info{'COMPAT185'} =~ /^\s*(on|true|1)\s*$/i ; + my $PREFIX = $Info{'PREFIX'} ; + my $HASH = $Info{'HASH'} ; + + $VER_INFO = "-DmDB_Prefix_t=${PREFIX} -DmDB_Hash_t=${HASH}" ; + + print <) + { + print, last if /^__(END|DATA)__/ ; + + &{ $our_sub }(); + &{ $warn_sub }(); + print ; + } + + return if eof ; + + while (<>) + { print } +} + +# end of file Makefile.PL diff --git a/fastSum/resources/ROUGE/DB_File-1.835/README b/fastSum/resources/ROUGE/DB_File-1.835/README new file mode 100644 index 0000000000000000000000000000000000000000..a28e1088470fa1c7421d1a5dc87b7871a7e37d5a --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/README @@ -0,0 +1,642 @@ + DB_File + + Version 1.835 + + 23 December 2014 + + Copyright (c) 1995-2014 Paul Marquess. All rights reserved. This + program is free software; you can redistribute it and/or modify + it under the same terms as Perl itself. + + +IMPORTANT NOTICE +================ + +If are using the locking technique described in older versions of +DB_File, please read the section called "Locking: The Trouble with fd" +in DB_File.pm immediately. The locking method has been found to be +unsafe. You risk corrupting your data if you continue to use it. + +DESCRIPTION +----------- + +DB_File is a module which allows Perl programs to make use of the +facilities provided by Berkeley DB version 1. (DB_File can be built +version 2, or greater, of Berkeley DB, but it will only support the 1.x +features). + +If you want to make use of the new features available in Berkeley DB +2.x, or greater, use the Perl module BerkeleyDB instead. + +Berkeley DB is a C library which provides a consistent interface to a +number of database formats. DB_File provides an interface to all three +of the database types (hash, btree and recno) currently supported by +Berkeley DB. + +For further details see the documentation included at the end of the +file DB_File.pm. + +PREREQUISITES +------------- + +Before you can build DB_File you must have the following installed on +your system: + + * Perl 5.8.3 or greater. + + * Berkeley DB. + + The official web site for Berkeley DB is + + http://www.oracle.com/technology/products/berkeley-db/db/index.html + + The latest version of Berkeley DB is always available there. It + is recommended that you use the most recent version available. + + The one exception to this advice is where you want to use DB_File + to access database files created by a third-party application, like + Sendmail or Netscape. In these cases you must build DB_File with a + compatible version of Berkeley DB. + + If you want to use Berkeley DB 2.x, you must have version 2.3.4 + or greater. If you want to use Berkeley DB 3.x or 4.x, any version + will do. For Berkeley DB 1.x, use either version 1.85 or 1.86. + + +BUILDING THE MODULE +------------------- + +Assuming you have met all the prerequisites, building the module should +be relatively straightforward. + +Step 1 : If you are running either Solaris 2.5 or HP-UX 10 and want + to use Berkeley DB version 2, 3 or 4, read either the Solaris Notes + or HP-UX Notes sections below. If you are running Linux please + read the Linux Notes section before proceeding. + +Step 2 : Edit the file config.in to suit you local installation. + Instructions are given in the file. + +Step 3 : Build and test the module using this sequence of commands: + + perl Makefile.PL + make + make test + + + NOTE: + If you have a very old version of Berkeley DB (i.e. pre 1.85), + three of the tests in the recno test harness may fail (tests 51, + 53 and 55). You can safely ignore the errors if you're never + going to use the broken functionality (recno databases with a + modified bval). Otherwise you'll have to upgrade your DB + library. + + +INSTALLATION +------------ + + make install + +UPDATES +======= + +The most recent version of DB_File is always available at + + http://www.cpan.org/modules/by-module/DB_File/ + +TROUBLESHOOTING +=============== + +Here are some of the common problems people encounter when building +DB_File. + +Missing db.h or libdb.a +----------------------- + +If you get an error like this: + + cc -c -I/usr/local/include -Dbool=char -DHAS_BOOL + -O2 -DVERSION=\"1.64\" -DXS_VERSION=\"1.64\" -fpic + -I/usr/local/lib/perl5/i586-linux/5.00404/CORE -DmDB_Prefix_t=size_t + -DmDB_Hash_t=u_int32_t DB_File.c + DB_File.xs:101: db.h: No such file or directory + +or this: + + LD_RUN_PATH="/lib" cc -o blib/arch/auto/DB_File/DB_File.so -shared + -L/usr/local/lib DB_File.o -L/usr/local/lib -ldb + ld: cannot open -ldb: No such file or directory + +This symptom can imply: + + 1. You don't have Berkeley DB installed on your system at all. + Solution: get & install Berkeley DB. + + 2. You do have Berkeley DB installed, but it isn't in a standard place. + Solution: Edit config.in and set the LIB and INCLUDE variables to point + to the directories where libdb.a and db.h are installed. + + + + +Undefined symbol db_version +--------------------------- + +DB_File seems to have built correctly, but you get an error like this +when you run the test harness: + + $ make test + PERL_DL_NONLAZY=1 /usr/bin/perl5.00404 -I./blib/arch -I./blib/lib + -I/usr/local/lib/perl5/i586-linux/5.00404 -I/usr/local/lib/perl5 -e 'use + Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t + t/db-btree..........Can't load './blib/arch/auto/DB_File/DB_File.so' for + module DB_File: ./blib/arch/auto/DB_File/DB_File.so: undefined symbol: + db_version at /usr/local/lib/perl5/i586-linux/5.00404/DynaLoader.pm + line 166. + + at t/db-btree.t line 21 + BEGIN failed--compilation aborted at t/db-btree.t line 21. + dubious Test returned status 2 (wstat 512, 0x200) + +This error usually happens when you have two version of Berkeley DB +installed on your system -- specifically, if you have both version 1 and +a newer version (i.e. version 2 or better) of Berkeley DB installed. If +DB_File is built using the db.h for the newer Berkeley DB and the version +1 Berkeley DB library you will trigger this error. Unfortunately the two +versions aren't compatible with each other. The undefined symbol error is +caused because Berkeley DB version 1 doesn't have the symbol db_version. + +Solution: Setting the LIB & INCLUDE variables in config.in to point to the + correct directories can sometimes be enough to fix this + problem. If that doesn't work the easiest way to fix the + problem is to either delete or temporarily rename the copies + of db.h and libdb.a that you don't want DB_File to use. + + +Undefined symbol dbopen +----------------------- + +DB_File seems to have built correctly, but you get an error like this +when you run the test harness: + + ... + t/db-btree..........Can't load 'blib/arch/auto/DB_File/DB_File.so' for + module DB_File: blib/arch/auto/DB_File/DB_File.so: undefined symbol: + dbopen at /usr/local/lib/perl5/5.6.1/i586-linux/DynaLoader.pm line 206. + at t/db-btree.t line 23 + Compilation failed in require at t/db-btree.t line 23. + ... + +This error usually happens when you have both version 1 and a more recent +version of Berkeley DB installed on your system and DB_File attempts +to build using the db.h for Berkeley DB version 1 and the newer version +library. Unfortunately the two versions aren't compatible with each +other. The undefined symbol error is actually caused because versions +of Berkeley DB newer than version 1 doesn't have the symbol dbopen. + +Solution: Setting the LIB & INCLUDE variables in config.in to point to the + correct directories can sometimes be enough to fix this + problem. If that doesn't work the easiest way to fix the + problem is to either delete or temporarily rename the copies + of db.h and libdb.a that you don't want DB_File to use. + + +Incompatible versions of db.h and libdb +--------------------------------------- + +DB_File seems to have built correctly, but you get an error like this +when you run the test harness: + + $ make test + PERL_DL_NONLAZY=1 /home/paul/perl/install/bin/perl5.00560 -Iblib/arch + -Iblib/lib -I/home/paul/perl/install/5.005_60/lib/5.00560/i586-linux + -I/home/paul/perl/install/5.005_60/lib/5.00560 -e 'use Test::Harness + qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t + t/db-btree.......... + DB_File was build with libdb version 2.3.7 + but you are attempting to run it with libdb version 2.7.5 + BEGIN failed--compilation aborted at t/db-btree.t line 21. + ... + +Another variation on the theme of having two versions of Berkeley DB on +your system. + +Solution: Setting the LIB & INCLUDE variables in config.in to point to the + correct directories can sometimes be enough to fix this + problem. If that doesn't work the easiest way to fix the + problem is to either delete or temporarily rename the copies + of db.h and libdb.a that you don't want BerkeleyDB to use. + If you are running Linux, please read the Linux Notes section + below. + +Keep getting "At least one secondary cursor must be specified to DB->join" +-------------------------------------------------------------------------- + +When you either run the DB_File test harness, or attempt to run a script +that uses DB_File you get the error message below. + + BDB0588 At least one secondary cursor must be specified to DB->join. + +To date thus issue has only been reported on Windows. If you encounter this +issue on another platform, please report the issue. See the FEEDBACK +section for details. + +This issue boils down to the size of the C type time_t. + +The typical reason for getting this error is when running a 32-bit Perl +(which will use a 32-bit time_t) along with a 32-bit Berkeley DB library. +The key point is how Berkeley DB has been built. If it has been built with +a newish version of Visual C++, time_t will default to 64-bit, even when +the rest of the library has been built 32-bit. This means that Perl thinks +time_t is 32-bit, but Berkeley DB thinks it is 64-bit. + +More details of how the size of time_t in Windows is shown below (taken +from http://msdn.microsoft.com/en-us/library/w4ddyt9h.aspx) + + In versions of Visual C++ and Microsoft C/C++ before Visual C++ 2005, + time_t was a long int (32 bits) and hence could not be used for dates + past 3:14:07 January 19, 2038, UTC. time_t is now equivalent to + __time64_t by default, but defining _USE_32BIT_TIME_T changes time_t + to __time32_t and forces many time functions to call versions that take + the 32-bit time_t. + + +When DB_File is built, it uses a Berkeley DB header file, called db.h. This +file contains the definition of a number of key data structures used by +Berkeley DB. Unfortunately one of those data structures includes a time_t. +This is the root case for this issue. When you build DB_File, it assumes +time_t is 32-bit, but the Berkeley DB library is expecting it to be 64-bit. + +Solution: + +There are a few options available. + +1. Use a 64-bit Perl along with a 64-bit Berkleley DB. + +2. Use a 32-bit Perl along with a 32-bit Berkeley DB where _USE_32BIT_TIME_T + has been defined. + +3. If you do need to interoperate with a Berkeley DB library that uses a + time_t that is different from Perl you need to edit the file DB_File.xs + and find these lines + + /* #define time_t __time64_t */ + /* #define time_t __time32_t */ + + If your Berkeley DB library uses a 64-bit time_t, uncomment the first line. + If your Berkeley DB library uses a 32-bit time_t, uncomment the second line. + + +Solaris build fails with "language optional software package not installed" +--------------------------------------------------------------------------- + +If you are trying to build this module under Solaris and you get an +error message like this + + /usr/ucb/cc: language optional software package not installed + +it means that Perl cannot find the C compiler on your system. The cryptic +message is just Sun's way of telling you that you haven't bought their +C compiler. + +When you build a Perl module that needs a C compiler, the Perl build +system tries to use the same C compiler that was used to build perl +itself. In this case your Perl binary was built with a C compiler that +lived in /usr/ucb. + +To continue with building this module, you need to get a C compiler, +or tell Perl where your C compiler is, if you already have one. + +Assuming you have now got a C compiler, what you do next will be dependant +on what C compiler you have installed. If you have just installed Sun's +C compiler, you shouldn't have to do anything. Just try rebuilding +this module. + +If you have installed another C compiler, say gcc, you have to tell perl +how to use it instead of /usr/ucb/cc. + +This set of options seems to work if you want to use gcc. Your mileage +may vary. + + perl Makefile.PL CC=gcc CCCDLFLAGS=-fPIC OPTIMIZE=" " + make test + +If that doesn't work for you, it's time to make changes to the Makefile +by hand. Good luck! + + + +Solaris build fails with "gcc: unrecognized option `-KPIC'" +----------------------------------------------------------- + +You are running Solaris and you get an error like this when you try to +build this Perl module + + gcc: unrecognized option `-KPIC' + +This symptom usually means that you are using a Perl binary that has been +built with the Sun C compiler, but you are using gcc to build this module. + +When Perl builds modules that need a C compiler, it will attempt to use +the same C compiler and command line options that was used to build perl +itself. In this case "-KPIC" is a valid option for the Sun C compiler, +but not for gcc. The equivalent option for gcc is "-fPIC". + +The solution is either: + + 1. Build both Perl and this module with the same C compiler, either + by using the Sun C compiler for both or gcc for both. + + 2. Try generating the Makefile for this module like this perl + + perl Makefile.PL CC=gcc CCCDLFLAGS=-fPIC OPTIMIZE=" " LD=gcc + make test + + This second option seems to work when mixing a Perl binary built + with the Sun C compiler and this module built with gcc. Your + mileage may vary. + + + + +Linux Notes +----------- + +Some older versions of Linux (e.g. RedHat 6, SuSe 6) ship with a C library +that has version 2.x of Berkeley DB linked into it. This makes it +difficult to build this module with anything other than the version of +Berkeley DB that shipped with your Linux release. If you do try to use +a different version of Berkeley DB you will most likely get the error +described in the "Incompatible versions of db.h and libdb" section of +this file. + +To make matters worse, prior to Perl 5.6.1, the perl binary itself +*always* included the Berkeley DB library. + +If you want to use a newer version of Berkeley DB with this module, the +easiest solution is to use Perl 5.6.1 (or better) and Berkeley DB 3.x +(or better). + +There are two approaches you can use to get older versions of Perl to +work with specific versions of Berkeley DB. Both have their advantages +and disadvantages. + +The first approach will only work when you want to build a version of +Perl older than 5.6.1 along with Berkeley DB 3.x. If you want to use +Berkeley DB 2.x, you must use the next approach. This approach involves +rebuilding your existing version of Perl after applying an unofficial +patch. The "patches" directory in the this module's source distribution +contains a number of patch files. There is one patch file for every +stable version of Perl since 5.004. Apply the appropriate patch to your +Perl source tree before re-building and installing Perl from scratch. +For example, assuming you are in the top-level source directory for +Perl 5.6.0, the command below will apply the necessary patch. Remember +to replace the path shown below with one that points to this module's +patches directory. + + patch -p1 -N diff --git a/fastSum/resources/ROUGE/DB_File-1.835/blib/arch/.exists b/fastSum/resources/ROUGE/DB_File-1.835/blib/arch/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/DB_File-1.835/blib/arch/auto/DB_File/.exists b/fastSum/resources/ROUGE/DB_File-1.835/blib/arch/auto/DB_File/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/DB_File-1.835/blib/arch/auto/DB_File/DB_File.so b/fastSum/resources/ROUGE/DB_File-1.835/blib/arch/auto/DB_File/DB_File.so new file mode 100644 index 0000000000000000000000000000000000000000..b871f2282c6a09dcb31b172c7947ef9a59741089 Binary files /dev/null and b/fastSum/resources/ROUGE/DB_File-1.835/blib/arch/auto/DB_File/DB_File.so differ diff --git a/fastSum/resources/ROUGE/DB_File-1.835/blib/bin/.exists b/fastSum/resources/ROUGE/DB_File-1.835/blib/bin/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/DB_File-1.835/blib/lib/.exists b/fastSum/resources/ROUGE/DB_File-1.835/blib/lib/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/DB_File-1.835/blib/lib/DB_File.pm b/fastSum/resources/ROUGE/DB_File-1.835/blib/lib/DB_File.pm new file mode 100644 index 0000000000000000000000000000000000000000..9b1f9577386e0d81bd798ad6f9023fe512f36839 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/blib/lib/DB_File.pm @@ -0,0 +1,2310 @@ +# DB_File.pm -- Perl 5 interface to Berkeley DB +# +# Written by Paul Marquess (pmqs@cpan.org) +# +# Copyright (c) 1995-2014 Paul Marquess. All rights reserved. +# This program is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. + + +package DB_File::HASHINFO ; + +require 5.008003; + +use warnings; +use strict; +use Carp; +require Tie::Hash; +@DB_File::HASHINFO::ISA = qw(Tie::Hash); + +sub new +{ + my $pkg = shift ; + my %x ; + tie %x, $pkg ; + bless \%x, $pkg ; +} + + +sub TIEHASH +{ + my $pkg = shift ; + + bless { VALID => { + bsize => 1, + ffactor => 1, + nelem => 1, + cachesize => 1, + hash => 2, + lorder => 1, + }, + GOT => {} + }, $pkg ; +} + + +sub FETCH +{ + my $self = shift ; + my $key = shift ; + + return $self->{GOT}{$key} if exists $self->{VALID}{$key} ; + + my $pkg = ref $self ; + croak "${pkg}::FETCH - Unknown element '$key'" ; +} + + +sub STORE +{ + my $self = shift ; + my $key = shift ; + my $value = shift ; + + my $type = $self->{VALID}{$key}; + + if ( $type ) + { + croak "Key '$key' not associated with a code reference" + if $type == 2 && !ref $value && ref $value ne 'CODE'; + $self->{GOT}{$key} = $value ; + return ; + } + + my $pkg = ref $self ; + croak "${pkg}::STORE - Unknown element '$key'" ; +} + +sub DELETE +{ + my $self = shift ; + my $key = shift ; + + if ( exists $self->{VALID}{$key} ) + { + delete $self->{GOT}{$key} ; + return ; + } + + my $pkg = ref $self ; + croak "DB_File::HASHINFO::DELETE - Unknown element '$key'" ; +} + +sub EXISTS +{ + my $self = shift ; + my $key = shift ; + + exists $self->{VALID}{$key} ; +} + +sub NotHere +{ + my $self = shift ; + my $method = shift ; + + croak ref($self) . " does not define the method ${method}" ; +} + +sub FIRSTKEY { my $self = shift ; $self->NotHere("FIRSTKEY") } +sub NEXTKEY { my $self = shift ; $self->NotHere("NEXTKEY") } +sub CLEAR { my $self = shift ; $self->NotHere("CLEAR") } + +package DB_File::RECNOINFO ; + +use warnings; +use strict ; + +@DB_File::RECNOINFO::ISA = qw(DB_File::HASHINFO) ; + +sub TIEHASH +{ + my $pkg = shift ; + + bless { VALID => { map {$_, 1} + qw( bval cachesize psize flags lorder reclen bfname ) + }, + GOT => {}, + }, $pkg ; +} + +package DB_File::BTREEINFO ; + +use warnings; +use strict ; + +@DB_File::BTREEINFO::ISA = qw(DB_File::HASHINFO) ; + +sub TIEHASH +{ + my $pkg = shift ; + + bless { VALID => { + flags => 1, + cachesize => 1, + maxkeypage => 1, + minkeypage => 1, + psize => 1, + compare => 2, + prefix => 2, + lorder => 1, + }, + GOT => {}, + }, $pkg ; +} + + +package DB_File ; + +use warnings; +use strict; +our ($VERSION, @ISA, @EXPORT, $AUTOLOAD, $DB_BTREE, $DB_HASH, $DB_RECNO); +our ($db_version, $use_XSLoader, $splice_end_array_no_length, $splice_end_array, $Error); +use Carp; + + +$VERSION = "1.835" ; +$VERSION = eval $VERSION; # needed for dev releases + +{ + local $SIG{__WARN__} = sub {$splice_end_array_no_length = join(" ",@_);}; + my @a =(1); splice(@a, 3); + $splice_end_array_no_length = + ($splice_end_array_no_length =~ /^splice\(\) offset past end of array at /); +} +{ + local $SIG{__WARN__} = sub {$splice_end_array = join(" ", @_);}; + my @a =(1); splice(@a, 3, 1); + $splice_end_array = + ($splice_end_array =~ /^splice\(\) offset past end of array at /); +} + +#typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE; +$DB_BTREE = new DB_File::BTREEINFO ; +$DB_HASH = new DB_File::HASHINFO ; +$DB_RECNO = new DB_File::RECNOINFO ; + +require Tie::Hash; +require Exporter; +BEGIN { + $use_XSLoader = 1 ; + { local $SIG{__DIE__} ; eval { require XSLoader } ; } + + if ($@) { + $use_XSLoader = 0 ; + require DynaLoader; + @ISA = qw(DynaLoader); + } +} + +push @ISA, qw(Tie::Hash Exporter); +@EXPORT = qw( + $DB_BTREE $DB_HASH $DB_RECNO + + BTREEMAGIC + BTREEVERSION + DB_LOCK + DB_SHMEM + DB_TXN + HASHMAGIC + HASHVERSION + MAX_PAGE_NUMBER + MAX_PAGE_OFFSET + MAX_REC_NUMBER + RET_ERROR + RET_SPECIAL + RET_SUCCESS + R_CURSOR + R_DUP + R_FIRST + R_FIXEDLEN + R_IAFTER + R_IBEFORE + R_LAST + R_NEXT + R_NOKEY + R_NOOVERWRITE + R_PREV + R_RECNOSYNC + R_SETCURSOR + R_SNAPSHOT + __R_UNUSED + +); + +sub AUTOLOAD { + my($constname); + ($constname = $AUTOLOAD) =~ s/.*:://; + my ($error, $val) = constant($constname); + Carp::croak $error if $error; + no strict 'refs'; + *{$AUTOLOAD} = sub { $val }; + goto &{$AUTOLOAD}; +} + + +eval { + # Make all Fcntl O_XXX constants available for importing + require Fcntl; + my @O = grep /^O_/, @Fcntl::EXPORT; + Fcntl->import(@O); # first we import what we want to export + push(@EXPORT, @O); +}; + +if ($use_XSLoader) + { XSLoader::load("DB_File", $VERSION)} +else + { bootstrap DB_File $VERSION } + +sub tie_hash_or_array +{ + my (@arg) = @_ ; + my $tieHASH = ( (caller(1))[3] =~ /TIEHASH/ ) ; + + use File::Spec; + $arg[1] = File::Spec->rel2abs($arg[1]) + if defined $arg[1] ; + + $arg[4] = tied %{ $arg[4] } + if @arg >= 5 && ref $arg[4] && $arg[4] =~ /=HASH/ && tied %{ $arg[4] } ; + + $arg[2] = O_CREAT()|O_RDWR() if @arg >=3 && ! defined $arg[2]; + $arg[3] = 0666 if @arg >=4 && ! defined $arg[3]; + + # make recno in Berkeley DB version 2 (or better) work like + # recno in version 1. + if ($db_version >= 4 and ! $tieHASH) { + $arg[2] |= O_CREAT(); + } + + if ($db_version > 1 and defined $arg[4] and $arg[4] =~ /RECNO/ and + $arg[1] and ! -e $arg[1]) { + open(FH, ">$arg[1]") or return undef ; + close FH ; + chmod $arg[3] ? $arg[3] : 0666 , $arg[1] ; + } + + DoTie_($tieHASH, @arg) ; +} + +sub TIEHASH +{ + tie_hash_or_array(@_) ; +} + +sub TIEARRAY +{ + tie_hash_or_array(@_) ; +} + +sub CLEAR +{ + my $self = shift; + my $key = 0 ; + my $value = "" ; + my $status = $self->seq($key, $value, R_FIRST()); + my @keys; + + while ($status == 0) { + push @keys, $key; + $status = $self->seq($key, $value, R_NEXT()); + } + foreach $key (reverse @keys) { + my $s = $self->del($key); + } +} + +sub EXTEND { } + +sub STORESIZE +{ + my $self = shift; + my $length = shift ; + my $current_length = $self->length() ; + + if ($length < $current_length) { + my $key ; + for ($key = $current_length - 1 ; $key >= $length ; -- $key) + { $self->del($key) } + } + elsif ($length > $current_length) { + $self->put($length-1, "") ; + } +} + + +sub SPLICE +{ + my $self = shift; + my $offset = shift; + if (not defined $offset) { + warnings::warnif('uninitialized', 'Use of uninitialized value in splice'); + $offset = 0; + } + + my $has_length = @_; + my $length = @_ ? shift : 0; + # Carping about definedness comes _after_ the OFFSET sanity check. + # This is so we get the same error messages as Perl's splice(). + # + + my @list = @_; + + my $size = $self->FETCHSIZE(); + + # 'If OFFSET is negative then it start that far from the end of + # the array.' + # + if ($offset < 0) { + my $new_offset = $size + $offset; + if ($new_offset < 0) { + die "Modification of non-creatable array value attempted, " + . "subscript $offset"; + } + $offset = $new_offset; + } + + if (not defined $length) { + warnings::warnif('uninitialized', 'Use of uninitialized value in splice'); + $length = 0; + } + + if ($offset > $size) { + $offset = $size; + warnings::warnif('misc', 'splice() offset past end of array') + if $has_length ? $splice_end_array : $splice_end_array_no_length; + } + + # 'If LENGTH is omitted, removes everything from OFFSET onward.' + if (not defined $length) { + $length = $size - $offset; + } + + # 'If LENGTH is negative, leave that many elements off the end of + # the array.' + # + if ($length < 0) { + $length = $size - $offset + $length; + + if ($length < 0) { + # The user must have specified a length bigger than the + # length of the array passed in. But perl's splice() + # doesn't catch this, it just behaves as for length=0. + # + $length = 0; + } + } + + if ($length > $size - $offset) { + $length = $size - $offset; + } + + # $num_elems holds the current number of elements in the database. + my $num_elems = $size; + + # 'Removes the elements designated by OFFSET and LENGTH from an + # array,'... + # + my @removed = (); + foreach (0 .. $length - 1) { + my $old; + my $status = $self->get($offset, $old); + if ($status != 0) { + my $msg = "error from Berkeley DB on get($offset, \$old)"; + if ($status == 1) { + $msg .= ' (no such element?)'; + } + else { + $msg .= ": error status $status"; + if (defined $! and $! ne '') { + $msg .= ", message $!"; + } + } + die $msg; + } + push @removed, $old; + + $status = $self->del($offset); + if ($status != 0) { + my $msg = "error from Berkeley DB on del($offset)"; + if ($status == 1) { + $msg .= ' (no such element?)'; + } + else { + $msg .= ": error status $status"; + if (defined $! and $! ne '') { + $msg .= ", message $!"; + } + } + die $msg; + } + + -- $num_elems; + } + + # ...'and replaces them with the elements of LIST, if any.' + my $pos = $offset; + while (defined (my $elem = shift @list)) { + my $old_pos = $pos; + my $status; + if ($pos >= $num_elems) { + $status = $self->put($pos, $elem); + } + else { + $status = $self->put($pos, $elem, $self->R_IBEFORE); + } + + if ($status != 0) { + my $msg = "error from Berkeley DB on put($pos, $elem, ...)"; + if ($status == 1) { + $msg .= ' (no such element?)'; + } + else { + $msg .= ", error status $status"; + if (defined $! and $! ne '') { + $msg .= ", message $!"; + } + } + die $msg; + } + + die "pos unexpectedly changed from $old_pos to $pos with R_IBEFORE" + if $old_pos != $pos; + + ++ $pos; + ++ $num_elems; + } + + if (wantarray) { + # 'In list context, returns the elements removed from the + # array.' + # + return @removed; + } + elsif (defined wantarray and not wantarray) { + # 'In scalar context, returns the last element removed, or + # undef if no elements are removed.' + # + if (@removed) { + my $last = pop @removed; + return "$last"; + } + else { + return undef; + } + } + elsif (not defined wantarray) { + # Void context + } + else { die } +} +sub ::DB_File::splice { &SPLICE } + +sub find_dup +{ + croak "Usage: \$db->find_dup(key,value)\n" + unless @_ == 3 ; + + my $db = shift ; + my ($origkey, $value_wanted) = @_ ; + my ($key, $value) = ($origkey, 0); + my ($status) = 0 ; + + for ($status = $db->seq($key, $value, R_CURSOR() ) ; + $status == 0 ; + $status = $db->seq($key, $value, R_NEXT() ) ) { + + return 0 if $key eq $origkey and $value eq $value_wanted ; + } + + return $status ; +} + +sub del_dup +{ + croak "Usage: \$db->del_dup(key,value)\n" + unless @_ == 3 ; + + my $db = shift ; + my ($key, $value) = @_ ; + my ($status) = $db->find_dup($key, $value) ; + return $status if $status != 0 ; + + $status = $db->del($key, R_CURSOR() ) ; + return $status ; +} + +sub get_dup +{ + croak "Usage: \$db->get_dup(key [,flag])\n" + unless @_ == 2 or @_ == 3 ; + + my $db = shift ; + my $key = shift ; + my $flag = shift ; + my $value = 0 ; + my $origkey = $key ; + my $wantarray = wantarray ; + my %values = () ; + my @values = () ; + my $counter = 0 ; + my $status = 0 ; + + # iterate through the database until either EOF ($status == 0) + # or a different key is encountered ($key ne $origkey). + for ($status = $db->seq($key, $value, R_CURSOR()) ; + $status == 0 and $key eq $origkey ; + $status = $db->seq($key, $value, R_NEXT()) ) { + + # save the value or count number of matches + if ($wantarray) { + if ($flag) + { ++ $values{$value} } + else + { push (@values, $value) } + } + else + { ++ $counter } + + } + + return ($wantarray ? ($flag ? %values : @values) : $counter) ; +} + + +sub STORABLE_freeze +{ + my $type = ref shift; + croak "Cannot freeze $type object\n"; +} + +sub STORABLE_thaw +{ + my $type = ref shift; + croak "Cannot thaw $type object\n"; +} + + + +1; +__END__ + +=head1 NAME + +DB_File - Perl5 access to Berkeley DB version 1.x + +=head1 SYNOPSIS + + use DB_File; + + [$X =] tie %hash, 'DB_File', [$filename, $flags, $mode, $DB_HASH] ; + [$X =] tie %hash, 'DB_File', $filename, $flags, $mode, $DB_BTREE ; + [$X =] tie @array, 'DB_File', $filename, $flags, $mode, $DB_RECNO ; + + $status = $X->del($key [, $flags]) ; + $status = $X->put($key, $value [, $flags]) ; + $status = $X->get($key, $value [, $flags]) ; + $status = $X->seq($key, $value, $flags) ; + $status = $X->sync([$flags]) ; + $status = $X->fd ; + + # BTREE only + $count = $X->get_dup($key) ; + @list = $X->get_dup($key) ; + %list = $X->get_dup($key, 1) ; + $status = $X->find_dup($key, $value) ; + $status = $X->del_dup($key, $value) ; + + # RECNO only + $a = $X->length; + $a = $X->pop ; + $X->push(list); + $a = $X->shift; + $X->unshift(list); + @r = $X->splice(offset, length, elements); + + # DBM Filters + $old_filter = $db->filter_store_key ( sub { ... } ) ; + $old_filter = $db->filter_store_value( sub { ... } ) ; + $old_filter = $db->filter_fetch_key ( sub { ... } ) ; + $old_filter = $db->filter_fetch_value( sub { ... } ) ; + + untie %hash ; + untie @array ; + +=head1 DESCRIPTION + +B is a module which allows Perl programs to make use of the +facilities provided by Berkeley DB version 1.x (if you have a newer +version of DB, see L). +It is assumed that you have a copy of the Berkeley DB manual pages at +hand when reading this documentation. The interface defined here +mirrors the Berkeley DB interface closely. + +Berkeley DB is a C library which provides a consistent interface to a +number of database formats. B provides an interface to all +three of the database types currently supported by Berkeley DB. + +The file types are: + +=over 5 + +=item B + +This database type allows arbitrary key/value pairs to be stored in data +files. This is equivalent to the functionality provided by other +hashing packages like DBM, NDBM, ODBM, GDBM, and SDBM. Remember though, +the files created using DB_HASH are not compatible with any of the +other packages mentioned. + +A default hashing algorithm, which will be adequate for most +applications, is built into Berkeley DB. If you do need to use your own +hashing algorithm it is possible to write your own in Perl and have +B use it instead. + +=item B + +The btree format allows arbitrary key/value pairs to be stored in a +sorted, balanced binary tree. + +As with the DB_HASH format, it is possible to provide a user defined +Perl routine to perform the comparison of keys. By default, though, the +keys are stored in lexical order. + +=item B + +DB_RECNO allows both fixed-length and variable-length flat text files +to be manipulated using the same key/value pair interface as in DB_HASH +and DB_BTREE. In this case the key will consist of a record (line) +number. + +=back + +=head2 Using DB_File with Berkeley DB version 2 or greater + +Although B is intended to be used with Berkeley DB version 1, +it can also be used with version 2, 3 or 4. In this case the interface is +limited to the functionality provided by Berkeley DB 1.x. Anywhere the +version 2 or greater interface differs, B arranges for it to work +like version 1. This feature allows B scripts that were built +with version 1 to be migrated to version 2 or greater without any changes. + +If you want to make use of the new features available in Berkeley DB +2.x or greater, use the Perl module B instead. + +B The database file format has changed multiple times in Berkeley +DB version 2, 3 and 4. If you cannot recreate your databases, you +must dump any existing databases with either the C or the +C utility that comes with Berkeley DB. +Once you have rebuilt DB_File to use Berkeley DB version 2 or greater, +your databases can be recreated using C. Refer to the Berkeley DB +documentation for further details. + +Please read L<"COPYRIGHT"> before using version 2.x or greater of Berkeley +DB with DB_File. + +=head2 Interface to Berkeley DB + +B allows access to Berkeley DB files using the tie() mechanism +in Perl 5 (for full details, see L). This facility +allows B to access Berkeley DB files using either an +associative array (for DB_HASH & DB_BTREE file types) or an ordinary +array (for the DB_RECNO file type). + +In addition to the tie() interface, it is also possible to access most +of the functions provided in the Berkeley DB API directly. +See L. + +=head2 Opening a Berkeley DB Database File + +Berkeley DB uses the function dbopen() to open or create a database. +Here is the C prototype for dbopen(): + + DB* + dbopen (const char * file, int flags, int mode, + DBTYPE type, const void * openinfo) + +The parameter C is an enumeration which specifies which of the 3 +interface methods (DB_HASH, DB_BTREE or DB_RECNO) is to be used. +Depending on which of these is actually chosen, the final parameter, +I points to a data structure which allows tailoring of the +specific interface method. + +This interface is handled slightly differently in B. Here is +an equivalent call using B: + + tie %array, 'DB_File', $filename, $flags, $mode, $DB_HASH ; + +The C, C and C parameters are the direct +equivalent of their dbopen() counterparts. The final parameter $DB_HASH +performs the function of both the C and C parameters in +dbopen(). + +In the example above $DB_HASH is actually a pre-defined reference to a +hash object. B has three of these pre-defined references. +Apart from $DB_HASH, there is also $DB_BTREE and $DB_RECNO. + +The keys allowed in each of these pre-defined references is limited to +the names used in the equivalent C structure. So, for example, the +$DB_HASH reference will only allow keys called C, C, +C, C, C and C. + +To change one of these elements, just assign to it like this: + + $DB_HASH->{'cachesize'} = 10000 ; + +The three predefined variables $DB_HASH, $DB_BTREE and $DB_RECNO are +usually adequate for most applications. If you do need to create extra +instances of these objects, constructors are available for each file +type. + +Here are examples of the constructors and the valid options available +for DB_HASH, DB_BTREE and DB_RECNO respectively. + + $a = new DB_File::HASHINFO ; + $a->{'bsize'} ; + $a->{'cachesize'} ; + $a->{'ffactor'}; + $a->{'hash'} ; + $a->{'lorder'} ; + $a->{'nelem'} ; + + $b = new DB_File::BTREEINFO ; + $b->{'flags'} ; + $b->{'cachesize'} ; + $b->{'maxkeypage'} ; + $b->{'minkeypage'} ; + $b->{'psize'} ; + $b->{'compare'} ; + $b->{'prefix'} ; + $b->{'lorder'} ; + + $c = new DB_File::RECNOINFO ; + $c->{'bval'} ; + $c->{'cachesize'} ; + $c->{'psize'} ; + $c->{'flags'} ; + $c->{'lorder'} ; + $c->{'reclen'} ; + $c->{'bfname'} ; + +The values stored in the hashes above are mostly the direct equivalent +of their C counterpart. Like their C counterparts, all are set to a +default values - that means you don't have to set I of the +values when you only want to change one. Here is an example: + + $a = new DB_File::HASHINFO ; + $a->{'cachesize'} = 12345 ; + tie %y, 'DB_File', "filename", $flags, 0777, $a ; + +A few of the options need extra discussion here. When used, the C +equivalent of the keys C, C and C store pointers +to C functions. In B these keys are used to store references +to Perl subs. Below are templates for each of the subs: + + sub hash + { + my ($data) = @_ ; + ... + # return the hash value for $data + return $hash ; + } + + sub compare + { + my ($key, $key2) = @_ ; + ... + # return 0 if $key1 eq $key2 + # -1 if $key1 lt $key2 + # 1 if $key1 gt $key2 + return (-1 , 0 or 1) ; + } + + sub prefix + { + my ($key, $key2) = @_ ; + ... + # return number of bytes of $key2 which are + # necessary to determine that it is greater than $key1 + return $bytes ; + } + +See L for an example of using the +C template. + +If you are using the DB_RECNO interface and you intend making use of +C, you should check out L. + +=head2 Default Parameters + +It is possible to omit some or all of the final 4 parameters in the +call to C and let them take default values. As DB_HASH is the most +common file format used, the call: + + tie %A, "DB_File", "filename" ; + +is equivalent to: + + tie %A, "DB_File", "filename", O_CREAT|O_RDWR, 0666, $DB_HASH ; + +It is also possible to omit the filename parameter as well, so the +call: + + tie %A, "DB_File" ; + +is equivalent to: + + tie %A, "DB_File", undef, O_CREAT|O_RDWR, 0666, $DB_HASH ; + +See L for a discussion on the use of C +in place of a filename. + +=head2 In Memory Databases + +Berkeley DB allows the creation of in-memory databases by using NULL +(that is, a C<(char *)0> in C) in place of the filename. B +uses C instead of NULL to provide this functionality. + +=head1 DB_HASH + +The DB_HASH file format is probably the most commonly used of the three +file formats that B supports. It is also very straightforward +to use. + +=head2 A Simple Example + +This example shows how to create a database, add key/value pairs to the +database, delete keys/value pairs and finally how to enumerate the +contents of the database. + + use warnings ; + use strict ; + use DB_File ; + our (%h, $k, $v) ; + + unlink "fruit" ; + tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0666, $DB_HASH + or die "Cannot open file 'fruit': $!\n"; + + # Add a few key/value pairs to the file + $h{"apple"} = "red" ; + $h{"orange"} = "orange" ; + $h{"banana"} = "yellow" ; + $h{"tomato"} = "red" ; + + # Check for existence of a key + print "Banana Exists\n\n" if $h{"banana"} ; + + # Delete a key/value pair. + delete $h{"apple"} ; + + # print the contents of the file + while (($k, $v) = each %h) + { print "$k -> $v\n" } + + untie %h ; + +here is the output: + + Banana Exists + + orange -> orange + tomato -> red + banana -> yellow + +Note that the like ordinary associative arrays, the order of the keys +retrieved is in an apparently random order. + +=head1 DB_BTREE + +The DB_BTREE format is useful when you want to store data in a given +order. By default the keys will be stored in lexical order, but as you +will see from the example shown in the next section, it is very easy to +define your own sorting function. + +=head2 Changing the BTREE sort order + +This script shows how to override the default sorting algorithm that +BTREE uses. Instead of using the normal lexical ordering, a case +insensitive compare function will be used. + + use warnings ; + use strict ; + use DB_File ; + + my %h ; + + sub Compare + { + my ($key1, $key2) = @_ ; + "\L$key1" cmp "\L$key2" ; + } + + # specify the Perl sub that will do the comparison + $DB_BTREE->{'compare'} = \&Compare ; + + unlink "tree" ; + tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open file 'tree': $!\n" ; + + # Add a key/value pair to the file + $h{'Wall'} = 'Larry' ; + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + $h{'duck'} = 'donald' ; + + # Delete + delete $h{"duck"} ; + + # Cycle through the keys printing them in order. + # Note it is not necessary to sort the keys as + # the btree will have kept them in order automatically. + foreach (keys %h) + { print "$_\n" } + + untie %h ; + +Here is the output from the code above. + + mouse + Smith + Wall + +There are a few point to bear in mind if you want to change the +ordering in a BTREE database: + +=over 5 + +=item 1. + +The new compare function must be specified when you create the database. + +=item 2. + +You cannot change the ordering once the database has been created. Thus +you must use the same compare function every time you access the +database. + +=item 3 + +Duplicate keys are entirely defined by the comparison function. +In the case-insensitive example above, the keys: 'KEY' and 'key' +would be considered duplicates, and assigning to the second one +would overwrite the first. If duplicates are allowed for (with the +R_DUP flag discussed below), only a single copy of duplicate keys +is stored in the database --- so (again with example above) assigning +three values to the keys: 'KEY', 'Key', and 'key' would leave just +the first key: 'KEY' in the database with three values. For some +situations this results in information loss, so care should be taken +to provide fully qualified comparison functions when necessary. +For example, the above comparison routine could be modified to +additionally compare case-sensitively if two keys are equal in the +case insensitive comparison: + + sub compare { + my($key1, $key2) = @_; + lc $key1 cmp lc $key2 || + $key1 cmp $key2; + } + +And now you will only have duplicates when the keys themselves +are truly the same. (note: in versions of the db library prior to +about November 1996, such duplicate keys were retained so it was +possible to recover the original keys in sets of keys that +compared as equal). + + +=back + +=head2 Handling Duplicate Keys + +The BTREE file type optionally allows a single key to be associated +with an arbitrary number of values. This option is enabled by setting +the flags element of C<$DB_BTREE> to R_DUP when creating the database. + +There are some difficulties in using the tied hash interface if you +want to manipulate a BTREE database with duplicate keys. Consider this +code: + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, %h) ; + + $filename = "tree" ; + unlink $filename ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'Wall'} = 'Larry' ; + $h{'Wall'} = 'Brick' ; # Note the duplicate key + $h{'Wall'} = 'Brick' ; # Note the duplicate key and value + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + + # iterate through the associative array + # and print each key/value pair. + foreach (sort keys %h) + { print "$_ -> $h{$_}\n" } + + untie %h ; + +Here is the output: + + Smith -> John + Wall -> Larry + Wall -> Larry + Wall -> Larry + mouse -> mickey + +As you can see 3 records have been successfully created with key C +- the only thing is, when they are retrieved from the database they +I to have the same value, namely C. The problem is caused +by the way that the associative array interface works. Basically, when +the associative array interface is used to fetch the value associated +with a given key, it will only ever retrieve the first value. + +Although it may not be immediately obvious from the code above, the +associative array interface can be used to write values with duplicate +keys, but it cannot be used to read them back from the database. + +The way to get around this problem is to use the Berkeley DB API method +called C. This method allows sequential access to key/value +pairs. See L for details of both the C method +and the API in general. + +Here is the script above rewritten using the C API method. + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $status, $key, $value) ; + + $filename = "tree" ; + unlink $filename ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'Wall'} = 'Larry' ; + $h{'Wall'} = 'Brick' ; # Note the duplicate key + $h{'Wall'} = 'Brick' ; # Note the duplicate key and value + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + + # iterate through the btree using seq + # and print each key/value pair. + $key = $value = 0 ; + for ($status = $x->seq($key, $value, R_FIRST) ; + $status == 0 ; + $status = $x->seq($key, $value, R_NEXT) ) + { print "$key -> $value\n" } + + undef $x ; + untie %h ; + +that prints: + + Smith -> John + Wall -> Brick + Wall -> Brick + Wall -> Larry + mouse -> mickey + +This time we have got all the key/value pairs, including the multiple +values associated with the key C. + +To make life easier when dealing with duplicate keys, B comes with +a few utility methods. + +=head2 The get_dup() Method + +The C method assists in +reading duplicate values from BTREE databases. The method can take the +following forms: + + $count = $x->get_dup($key) ; + @list = $x->get_dup($key) ; + %list = $x->get_dup($key, 1) ; + +In a scalar context the method returns the number of values associated +with the key, C<$key>. + +In list context, it returns all the values which match C<$key>. Note +that the values will be returned in an apparently random order. + +In list context, if the second parameter is present and evaluates +TRUE, the method returns an associative array. The keys of the +associative array correspond to the values that matched in the BTREE +and the values of the array are a count of the number of times that +particular value occurred in the BTREE. + +So assuming the database created above, we can use C like +this: + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h) ; + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + my $cnt = $x->get_dup("Wall") ; + print "Wall occurred $cnt times\n" ; + + my %hash = $x->get_dup("Wall", 1) ; + print "Larry is there\n" if $hash{'Larry'} ; + print "There are $hash{'Brick'} Brick Walls\n" ; + + my @list = sort $x->get_dup("Wall") ; + print "Wall => [@list]\n" ; + + @list = $x->get_dup("Smith") ; + print "Smith => [@list]\n" ; + + @list = $x->get_dup("Dog") ; + print "Dog => [@list]\n" ; + + +and it will print: + + Wall occurred 3 times + Larry is there + There are 2 Brick Walls + Wall => [Brick Brick Larry] + Smith => [John] + Dog => [] + +=head2 The find_dup() Method + + $status = $X->find_dup($key, $value) ; + +This method checks for the existence of a specific key/value pair. If the +pair exists, the cursor is left pointing to the pair and the method +returns 0. Otherwise the method returns a non-zero value. + +Assuming the database from the previous example: + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $found) ; + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + print "Larry Wall is $found there\n" ; + + $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ; + print "Harry Wall is $found there\n" ; + + undef $x ; + untie %h ; + +prints this + + Larry Wall is there + Harry Wall is not there + + +=head2 The del_dup() Method + + $status = $X->del_dup($key, $value) ; + +This method deletes a specific key/value pair. It returns +0 if they exist and have been deleted successfully. +Otherwise the method returns a non-zero value. + +Again assuming the existence of the C database + + use warnings ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $found) ; + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + $x->del_dup("Wall", "Larry") ; + + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + print "Larry Wall is $found there\n" ; + + undef $x ; + untie %h ; + +prints this + + Larry Wall is not there + +=head2 Matching Partial Keys + +The BTREE interface has a feature which allows partial keys to be +matched. This functionality is I available when the C method +is used along with the R_CURSOR flag. + + $x->seq($key, $value, R_CURSOR) ; + +Here is the relevant quote from the dbopen man page where it defines +the use of the R_CURSOR flag with seq: + + Note, for the DB_BTREE access method, the returned key is not + necessarily an exact match for the specified key. The returned key + is the smallest key greater than or equal to the specified key, + permitting partial key matches and range searches. + +In the example script below, the C sub uses this feature to find +and print the first matching key/value pair given a partial key. + + use warnings ; + use strict ; + use DB_File ; + use Fcntl ; + + my ($filename, $x, %h, $st, $key, $value) ; + + sub match + { + my $key = shift ; + my $value = 0; + my $orig_key = $key ; + $x->seq($key, $value, R_CURSOR) ; + print "$orig_key\t-> $key\t-> $value\n" ; + } + + $filename = "tree" ; + unlink $filename ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'mouse'} = 'mickey' ; + $h{'Wall'} = 'Larry' ; + $h{'Walls'} = 'Brick' ; + $h{'Smith'} = 'John' ; + + + $key = $value = 0 ; + print "IN ORDER\n" ; + for ($st = $x->seq($key, $value, R_FIRST) ; + $st == 0 ; + $st = $x->seq($key, $value, R_NEXT) ) + + { print "$key -> $value\n" } + + print "\nPARTIAL MATCH\n" ; + + match "Wa" ; + match "A" ; + match "a" ; + + undef $x ; + untie %h ; + +Here is the output: + + IN ORDER + Smith -> John + Wall -> Larry + Walls -> Brick + mouse -> mickey + + PARTIAL MATCH + Wa -> Wall -> Larry + A -> Smith -> John + a -> mouse -> mickey + +=head1 DB_RECNO + +DB_RECNO provides an interface to flat text files. Both variable and +fixed length records are supported. + +In order to make RECNO more compatible with Perl, the array offset for +all RECNO arrays begins at 0 rather than 1 as in Berkeley DB. + +As with normal Perl arrays, a RECNO array can be accessed using +negative indexes. The index -1 refers to the last element of the array, +-2 the second last, and so on. Attempting to access an element before +the start of the array will raise a fatal run-time error. + +=head2 The 'bval' Option + +The operation of the bval option warrants some discussion. Here is the +definition of bval from the Berkeley DB 1.85 recno manual page: + + The delimiting byte to be used to mark the end of a + record for variable-length records, and the pad charac- + ter for fixed-length records. If no value is speci- + fied, newlines (``\n'') are used to mark the end of + variable-length records and fixed-length records are + padded with spaces. + +The second sentence is wrong. In actual fact bval will only default to +C<"\n"> when the openinfo parameter in dbopen is NULL. If a non-NULL +openinfo parameter is used at all, the value that happens to be in bval +will be used. That means you always have to specify bval when making +use of any of the options in the openinfo parameter. This documentation +error will be fixed in the next release of Berkeley DB. + +That clarifies the situation with regards Berkeley DB itself. What +about B? Well, the behavior defined in the quote above is +quite useful, so B conforms to it. + +That means that you can specify other options (e.g. cachesize) and +still have bval default to C<"\n"> for variable length records, and +space for fixed length records. + +Also note that the bval option only allows you to specify a single byte +as a delimiter. + +=head2 A Simple Example + +Here is a simple example that uses RECNO (if you are using a version +of Perl earlier than 5.004_57 this example won't work -- see +L for a workaround). + + use warnings ; + use strict ; + use DB_File ; + + my $filename = "text" ; + unlink $filename ; + + my @h ; + tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_RECNO + or die "Cannot open file 'text': $!\n" ; + + # Add a few key/value pairs to the file + $h[0] = "orange" ; + $h[1] = "blue" ; + $h[2] = "yellow" ; + + push @h, "green", "black" ; + + my $elements = scalar @h ; + print "The array contains $elements entries\n" ; + + my $last = pop @h ; + print "popped $last\n" ; + + unshift @h, "white" ; + my $first = shift @h ; + print "shifted $first\n" ; + + # Check for existence of a key + print "Element 1 Exists with value $h[1]\n" if $h[1] ; + + # use a negative index + print "The last element is $h[-1]\n" ; + print "The 2nd last element is $h[-2]\n" ; + + untie @h ; + +Here is the output from the script: + + The array contains 5 entries + popped black + shifted white + Element 1 Exists with value blue + The last element is green + The 2nd last element is yellow + +=head2 Extra RECNO Methods + +If you are using a version of Perl earlier than 5.004_57, the tied +array interface is quite limited. In the example script above +C, C, C, C +or determining the array length will not work with a tied array. + +To make the interface more useful for older versions of Perl, a number +of methods are supplied with B to simulate the missing array +operations. All these methods are accessed via the object returned from +the tie call. + +Here are the methods: + +=over 5 + +=item B<$X-Epush(list) ;> + +Pushes the elements of C to the end of the array. + +=item B<$value = $X-Epop ;> + +Removes and returns the last element of the array. + +=item B<$X-Eshift> + +Removes and returns the first element of the array. + +=item B<$X-Eunshift(list) ;> + +Pushes the elements of C to the start of the array. + +=item B<$X-Elength> + +Returns the number of elements in the array. + +=item B<$X-Esplice(offset, length, elements);> + +Returns a splice of the array. + +=back + +=head2 Another Example + +Here is a more complete example that makes use of some of the methods +described above. It also makes use of the API interface directly (see +L). + + use warnings ; + use strict ; + my (@h, $H, $file, $i) ; + use DB_File ; + use Fcntl ; + + $file = "text" ; + + unlink $file ; + + $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0666, $DB_RECNO + or die "Cannot open file $file: $!\n" ; + + # first create a text file to play with + $h[0] = "zero" ; + $h[1] = "one" ; + $h[2] = "two" ; + $h[3] = "three" ; + $h[4] = "four" ; + + + # Print the records in order. + # + # The length method is needed here because evaluating a tied + # array in a scalar context does not return the number of + # elements in the array. + + print "\nORIGINAL\n" ; + foreach $i (0 .. $H->length - 1) { + print "$i: $h[$i]\n" ; + } + + # use the push & pop methods + $a = $H->pop ; + $H->push("last") ; + print "\nThe last record was [$a]\n" ; + + # and the shift & unshift methods + $a = $H->shift ; + $H->unshift("first") ; + print "The first record was [$a]\n" ; + + # Use the API to add a new record after record 2. + $i = 2 ; + $H->put($i, "Newbie", R_IAFTER) ; + + # and a new record before record 1. + $i = 1 ; + $H->put($i, "New One", R_IBEFORE) ; + + # delete record 3 + $H->del(3) ; + + # now print the records in reverse order + print "\nREVERSE\n" ; + for ($i = $H->length - 1 ; $i >= 0 ; -- $i) + { print "$i: $h[$i]\n" } + + # same again, but use the API functions instead + print "\nREVERSE again\n" ; + my ($s, $k, $v) = (0, 0, 0) ; + for ($s = $H->seq($k, $v, R_LAST) ; + $s == 0 ; + $s = $H->seq($k, $v, R_PREV)) + { print "$k: $v\n" } + + undef $H ; + untie @h ; + +and this is what it outputs: + + ORIGINAL + 0: zero + 1: one + 2: two + 3: three + 4: four + + The last record was [four] + The first record was [zero] + + REVERSE + 5: last + 4: three + 3: Newbie + 2: one + 1: New One + 0: first + + REVERSE again + 5: last + 4: three + 3: Newbie + 2: one + 1: New One + 0: first + +Notes: + +=over 5 + +=item 1. + +Rather than iterating through the array, C<@h> like this: + + foreach $i (@h) + +it is necessary to use either this: + + foreach $i (0 .. $H->length - 1) + +or this: + + for ($a = $H->get($k, $v, R_FIRST) ; + $a == 0 ; + $a = $H->get($k, $v, R_NEXT) ) + +=item 2. + +Notice that both times the C method was used the record index was +specified using a variable, C<$i>, rather than the literal value +itself. This is because C will return the record number of the +inserted line via that parameter. + +=back + +=head1 THE API INTERFACE + +As well as accessing Berkeley DB using a tied hash or array, it is also +possible to make direct use of most of the API functions defined in the +Berkeley DB documentation. + +To do this you need to store a copy of the object returned from the tie. + + $db = tie %hash, "DB_File", "filename" ; + +Once you have done that, you can access the Berkeley DB API functions +as B methods directly like this: + + $db->put($key, $value, R_NOOVERWRITE) ; + +B If you have saved a copy of the object returned from +C, the underlying database file will I be closed until both +the tied variable is untied and all copies of the saved object are +destroyed. + + use DB_File ; + $db = tie %hash, "DB_File", "filename" + or die "Cannot tie filename: $!" ; + ... + undef $db ; + untie %hash ; + +See L for more details. + +All the functions defined in L are available except for +close() and dbopen() itself. The B method interface to the +supported functions have been implemented to mirror the way Berkeley DB +works whenever possible. In particular note that: + +=over 5 + +=item * + +The methods return a status value. All return 0 on success. +All return -1 to signify an error and set C<$!> to the exact +error code. The return code 1 generally (but not always) means that the +key specified did not exist in the database. + +Other return codes are defined. See below and in the Berkeley DB +documentation for details. The Berkeley DB documentation should be used +as the definitive source. + +=item * + +Whenever a Berkeley DB function returns data via one of its parameters, +the equivalent B method does exactly the same. + +=item * + +If you are careful, it is possible to mix API calls with the tied +hash/array interface in the same piece of code. Although only a few of +the methods used to implement the tied interface currently make use of +the cursor, you should always assume that the cursor has been changed +any time the tied hash/array interface is used. As an example, this +code will probably not do what you expect: + + $X = tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE + or die "Cannot tie $filename: $!" ; + + # Get the first key/value pair and set the cursor + $X->seq($key, $value, R_FIRST) ; + + # this line will modify the cursor + $count = scalar keys %x ; + + # Get the second key/value pair. + # oops, it didn't, it got the last key/value pair! + $X->seq($key, $value, R_NEXT) ; + +The code above can be rearranged to get around the problem, like this: + + $X = tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE + or die "Cannot tie $filename: $!" ; + + # this line will modify the cursor + $count = scalar keys %x ; + + # Get the first key/value pair and set the cursor + $X->seq($key, $value, R_FIRST) ; + + # Get the second key/value pair. + # worked this time. + $X->seq($key, $value, R_NEXT) ; + +=back + +All the constants defined in L for use in the flags parameters +in the methods defined below are also available. Refer to the Berkeley +DB documentation for the precise meaning of the flags values. + +Below is a list of the methods available. + +=over 5 + +=item B<$status = $X-Eget($key, $value [, $flags]) ;> + +Given a key (C<$key>) this method reads the value associated with it +from the database. The value read from the database is returned in the +C<$value> parameter. + +If the key does not exist the method returns 1. + +No flags are currently defined for this method. + +=item B<$status = $X-Eput($key, $value [, $flags]) ;> + +Stores the key/value pair in the database. + +If you use either the R_IAFTER or R_IBEFORE flags, the C<$key> parameter +will have the record number of the inserted key/value pair set. + +Valid flags are R_CURSOR, R_IAFTER, R_IBEFORE, R_NOOVERWRITE and +R_SETCURSOR. + +=item B<$status = $X-Edel($key [, $flags]) ;> + +Removes all key/value pairs with key C<$key> from the database. + +A return code of 1 means that the requested key was not in the +database. + +R_CURSOR is the only valid flag at present. + +=item B<$status = $X-Efd ;> + +Returns the file descriptor for the underlying database. + +See L for an explanation for why you should +not use C to lock your database. + +=item B<$status = $X-Eseq($key, $value, $flags) ;> + +This interface allows sequential retrieval from the database. See +L for full details. + +Both the C<$key> and C<$value> parameters will be set to the key/value +pair read from the database. + +The flags parameter is mandatory. The valid flag values are R_CURSOR, +R_FIRST, R_LAST, R_NEXT and R_PREV. + +=item B<$status = $X-Esync([$flags]) ;> + +Flushes any cached buffers to disk. + +R_RECNOSYNC is the only valid flag at present. + +=back + +=head1 DBM FILTERS + +A DBM Filter is a piece of code that is be used when you I +want to make the same transformation to all keys and/or values in a +DBM database. + +There are four methods associated with DBM Filters. All work identically, +and each is used to install (or uninstall) a single DBM Filter. Each +expects a single parameter, namely a reference to a sub. The only +difference between them is the place that the filter is installed. + +To summarise: + +=over 5 + +=item B + +If a filter has been installed with this method, it will be invoked +every time you write a key to a DBM database. + +=item B + +If a filter has been installed with this method, it will be invoked +every time you write a value to a DBM database. + + +=item B + +If a filter has been installed with this method, it will be invoked +every time you read a key from a DBM database. + +=item B + +If a filter has been installed with this method, it will be invoked +every time you read a value from a DBM database. + +=back + +You can use any combination of the methods, from none, to all four. + +All filter methods return the existing filter, if present, or C +in not. + +To delete a filter pass C to it. + +=head2 The Filter + +When each filter is called by Perl, a local copy of C<$_> will contain +the key or value to be filtered. Filtering is achieved by modifying +the contents of C<$_>. The return code from the filter is ignored. + +=head2 An Example -- the NULL termination problem. + +Consider the following scenario. You have a DBM database +that you need to share with a third-party C application. The C application +assumes that I keys and values are NULL terminated. Unfortunately +when Perl writes to DBM databases it doesn't use NULL termination, so +your Perl application will have to manage NULL termination itself. When +you write to the database you will have to use something like this: + + $hash{"$key\0"} = "$value\0" ; + +Similarly the NULL needs to be taken into account when you are considering +the length of existing keys/values. + +It would be much better if you could ignore the NULL terminations issue +in the main application code and have a mechanism that automatically +added the terminating NULL to all keys and values whenever you write to +the database and have them removed when you read from the database. As I'm +sure you have already guessed, this is a problem that DBM Filters can +fix very easily. + + use warnings ; + use strict ; + use DB_File ; + + my %hash ; + my $filename = "filt" ; + unlink $filename ; + + my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH + or die "Cannot open $filename: $!\n" ; + + # Install DBM Filters + $db->filter_fetch_key ( sub { s/\0$// } ) ; + $db->filter_store_key ( sub { $_ .= "\0" } ) ; + $db->filter_fetch_value( sub { s/\0$// } ) ; + $db->filter_store_value( sub { $_ .= "\0" } ) ; + + $hash{"abc"} = "def" ; + my $a = $hash{"ABC"} ; + # ... + undef $db ; + untie %hash ; + +Hopefully the contents of each of the filters should be +self-explanatory. Both "fetch" filters remove the terminating NULL, +and both "store" filters add a terminating NULL. + + +=head2 Another Example -- Key is a C int. + +Here is another real-life example. By default, whenever Perl writes to +a DBM database it always writes the key and value as strings. So when +you use this: + + $hash{12345} = "something" ; + +the key 12345 will get stored in the DBM database as the 5 byte string +"12345". If you actually want the key to be stored in the DBM database +as a C int, you will have to use C when writing, and C +when reading. + +Here is a DBM Filter that does it: + + use warnings ; + use strict ; + use DB_File ; + my %hash ; + my $filename = "filt" ; + unlink $filename ; + + + my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH + or die "Cannot open $filename: $!\n" ; + + $db->filter_fetch_key ( sub { $_ = unpack("i", $_) } ) ; + $db->filter_store_key ( sub { $_ = pack ("i", $_) } ) ; + $hash{123} = "def" ; + # ... + undef $db ; + untie %hash ; + +This time only two filters have been used -- we only need to manipulate +the contents of the key, so it wasn't necessary to install any value +filters. + +=head1 HINTS AND TIPS + + +=head2 Locking: The Trouble with fd + +Until version 1.72 of this module, the recommended technique for locking +B databases was to flock the filehandle returned from the "fd" +function. Unfortunately this technique has been shown to be fundamentally +flawed (Kudos to David Harris for tracking this down). Use it at your own +peril! + +The locking technique went like this. + + $db = tie(%db, 'DB_File', 'foo.db', O_CREAT|O_RDWR, 0644) + || die "dbcreat foo.db $!"; + $fd = $db->fd; + open(DB_FH, "+<&=$fd") || die "dup $!"; + flock (DB_FH, LOCK_EX) || die "flock: $!"; + ... + $db{"Tom"} = "Jerry" ; + ... + flock(DB_FH, LOCK_UN); + undef $db; + untie %db; + close(DB_FH); + +In simple terms, this is what happens: + +=over 5 + +=item 1. + +Use "tie" to open the database. + +=item 2. + +Lock the database with fd & flock. + +=item 3. + +Read & Write to the database. + +=item 4. + +Unlock and close the database. + +=back + +Here is the crux of the problem. A side-effect of opening the B +database in step 2 is that an initial block from the database will get +read from disk and cached in memory. + +To see why this is a problem, consider what can happen when two processes, +say "A" and "B", both want to update the same B database +using the locking steps outlined above. Assume process "A" has already +opened the database and has a write lock, but it hasn't actually updated +the database yet (it has finished step 2, but not started step 3 yet). Now +process "B" tries to open the same database - step 1 will succeed, +but it will block on step 2 until process "A" releases the lock. The +important thing to notice here is that at this point in time both +processes will have cached identical initial blocks from the database. + +Now process "A" updates the database and happens to change some of the +data held in the initial buffer. Process "A" terminates, flushing +all cached data to disk and releasing the database lock. At this point +the database on disk will correctly reflect the changes made by process +"A". + +With the lock released, process "B" can now continue. It also updates the +database and unfortunately it too modifies the data that was in its +initial buffer. Once that data gets flushed to disk it will overwrite +some/all of the changes process "A" made to the database. + +The result of this scenario is at best a database that doesn't contain +what you expect. At worst the database will corrupt. + +The above won't happen every time competing process update the same +B database, but it does illustrate why the technique should +not be used. + +=head2 Safe ways to lock a database + +Starting with version 2.x, Berkeley DB has internal support for locking. +The companion module to this one, B, provides an interface +to this locking functionality. If you are serious about locking +Berkeley DB databases, I strongly recommend using B. + +If using B isn't an option, there are a number of modules +available on CPAN that can be used to implement locking. Each one +implements locking differently and has different goals in mind. It is +therefore worth knowing the difference, so that you can pick the right +one for your application. Here are the three locking wrappers: + +=over 5 + +=item B + +A B wrapper which creates copies of the database file for +read access, so that you have a kind of a multiversioning concurrent read +system. However, updates are still serial. Use for databases where reads +may be lengthy and consistency problems may occur. + +=item B + +A B wrapper that has the ability to lock and unlock the database +while it is being used. Avoids the tie-before-flock problem by simply +re-tie-ing the database when you get or drop a lock. Because of the +flexibility in dropping and re-acquiring the lock in the middle of a +session, this can be massaged into a system that will work with long +updates and/or reads if the application follows the hints in the POD +documentation. + +=item B + +An extremely lightweight B wrapper that simply flocks a lockfile +before tie-ing the database and drops the lock after the untie. Allows +one to use the same lockfile for multiple databases to avoid deadlock +problems, if desired. Use for databases where updates are reads are +quick and simple flock locking semantics are enough. + +=back + +=head2 Sharing Databases With C Applications + +There is no technical reason why a Berkeley DB database cannot be +shared by both a Perl and a C application. + +The vast majority of problems that are reported in this area boil down +to the fact that C strings are NULL terminated, whilst Perl strings are +not. See L for a generic way to work around this problem. + +Here is a real example. Netscape 2.0 keeps a record of the locations you +visit along with the time you last visited them in a DB_HASH database. +This is usually stored in the file F<~/.netscape/history.db>. The key +field in the database is the location string and the value field is the +time the location was last visited stored as a 4 byte binary value. + +If you haven't already guessed, the location string is stored with a +terminating NULL. This means you need to be careful when accessing the +database. + +Here is a snippet of code that is loosely based on Tom Christiansen's +I script (available from your nearest CPAN archive in +F). + + use warnings ; + use strict ; + use DB_File ; + use Fcntl ; + + my ($dotdir, $HISTORY, %hist_db, $href, $binary_time, $date) ; + $dotdir = $ENV{HOME} || $ENV{LOGNAME}; + + $HISTORY = "$dotdir/.netscape/history.db"; + + tie %hist_db, 'DB_File', $HISTORY + or die "Cannot open $HISTORY: $!\n" ;; + + # Dump the complete database + while ( ($href, $binary_time) = each %hist_db ) { + + # remove the terminating NULL + $href =~ s/\x00$// ; + + # convert the binary time into a user friendly string + $date = localtime unpack("V", $binary_time); + print "$date $href\n" ; + } + + # check for the existence of a specific key + # remember to add the NULL + if ( $binary_time = $hist_db{"http://mox.perl.com/\x00"} ) { + $date = localtime unpack("V", $binary_time) ; + print "Last visited mox.perl.com on $date\n" ; + } + else { + print "Never visited mox.perl.com\n" + } + + untie %hist_db ; + +=head2 The untie() Gotcha + +If you make use of the Berkeley DB API, it is I strongly +recommended that you read L. + +Even if you don't currently make use of the API interface, it is still +worth reading it. + +Here is an example which illustrates the problem from a B +perspective: + + use DB_File ; + use Fcntl ; + + my %x ; + my $X ; + + $X = tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_TRUNC + or die "Cannot tie first time: $!" ; + + $x{123} = 456 ; + + untie %x ; + + tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_CREAT + or die "Cannot tie second time: $!" ; + + untie %x ; + +When run, the script will produce this error message: + + Cannot tie second time: Invalid argument at bad.file line 14. + +Although the error message above refers to the second tie() statement +in the script, the source of the problem is really with the untie() +statement that precedes it. + +Having read L you will probably have already guessed that the +error is caused by the extra copy of the tied object stored in C<$X>. +If you haven't, then the problem boils down to the fact that the +B destructor, DESTROY, will not be called until I +references to the tied object are destroyed. Both the tied variable, +C<%x>, and C<$X> above hold a reference to the object. The call to +untie() will destroy the first, but C<$X> still holds a valid +reference, so the destructor will not get called and the database file +F will remain open. The fact that Berkeley DB then reports the +attempt to open a database that is already open via the catch-all +"Invalid argument" doesn't help. + +If you run the script with the C<-w> flag the error message becomes: + + untie attempted while 1 inner references still exist at bad.file line 12. + Cannot tie second time: Invalid argument at bad.file line 14. + +which pinpoints the real problem. Finally the script can now be +modified to fix the original problem by destroying the API object +before the untie: + + ... + $x{123} = 456 ; + + undef $X ; + untie %x ; + + $X = tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_CREAT + ... + + +=head1 COMMON QUESTIONS + +=head2 Why is there Perl source in my database? + +If you look at the contents of a database file created by DB_File, +there can sometimes be part of a Perl script included in it. + +This happens because Berkeley DB uses dynamic memory to allocate +buffers which will subsequently be written to the database file. Being +dynamic, the memory could have been used for anything before DB +malloced it. As Berkeley DB doesn't clear the memory once it has been +allocated, the unused portions will contain random junk. In the case +where a Perl script gets written to the database, the random junk will +correspond to an area of dynamic memory that happened to be used during +the compilation of the script. + +Unless you don't like the possibility of there being part of your Perl +scripts embedded in a database file, this is nothing to worry about. + +=head2 How do I store complex data structures with DB_File? + +Although B cannot do this directly, there is a module which +can layer transparently over B to accomplish this feat. + +Check out the MLDBM module, available on CPAN in the directory +F. + +=head2 What does "Invalid Argument" mean? + +You will get this error message when one of the parameters in the +C call is wrong. Unfortunately there are quite a few parameters to +get wrong, so it can be difficult to figure out which one it is. + +Here are a couple of possibilities: + +=over 5 + +=item 1. + +Attempting to reopen a database without closing it. + +=item 2. + +Using the O_WRONLY flag. + +=back + +=head2 What does "Bareword 'DB_File' not allowed" mean? + +You will encounter this particular error message when you have the +C pragma (or the full strict pragma) in your script. +Consider this script: + + use warnings ; + use strict ; + use DB_File ; + my %x ; + tie %x, DB_File, "filename" ; + +Running it produces the error in question: + + Bareword "DB_File" not allowed while "strict subs" in use + +To get around the error, place the word C in either single or +double quotes, like this: + + tie %x, "DB_File", "filename" ; + +Although it might seem like a real pain, it is really worth the effort +of having a C in all your scripts. + +=head1 REFERENCES + +Articles that are either about B or make use of it. + +=over 5 + +=item 1. + +I, Tim Kientzle (tkientzle@ddj.com), +Dr. Dobb's Journal, Issue 295, January 1999, pp 34-41 + +=back + +=head1 HISTORY + +Moved to the Changes file. + +=head1 BUGS + +Some older versions of Berkeley DB had problems with fixed length +records using the RECNO file format. This problem has been fixed since +version 1.85 of Berkeley DB. + +I am sure there are bugs in the code. If you do find any, or can +suggest any enhancements, I would welcome your comments. + +=head1 AVAILABILITY + +B comes with the standard Perl source distribution. Look in +the directory F. Given the amount of time between releases +of Perl the version that ships with Perl is quite likely to be out of +date, so the most recent version can always be found on CPAN (see +L for details), in the directory +F. + +This version of B will work with either version 1.x, 2.x or +3.x of Berkeley DB, but is limited to the functionality provided by +version 1. + +The official web site for Berkeley DB is F. +All versions of Berkeley DB are available there. + +Alternatively, Berkeley DB version 1 is available at your nearest CPAN +archive in F. + +=head1 COPYRIGHT + +Copyright (c) 1995-2012 Paul Marquess. All rights reserved. This program +is free software; you can redistribute it and/or modify it under the +same terms as Perl itself. + +Although B is covered by the Perl license, the library it +makes use of, namely Berkeley DB, is not. Berkeley DB has its own +copyright and its own license. Please take the time to read it. + +Here are a few words taken from the Berkeley DB FAQ (at +F) regarding the license: + + Do I have to license DB to use it in Perl scripts? + + No. The Berkeley DB license requires that software that uses + Berkeley DB be freely redistributable. In the case of Perl, that + software is Perl, and not your scripts. Any Perl scripts that you + write are your property, including scripts that make use of + Berkeley DB. Neither the Perl license nor the Berkeley DB license + place any restriction on what you may do with them. + +If you are in any doubt about the license situation, contact either the +Berkeley DB authors or the author of DB_File. See L<"AUTHOR"> for details. + + +=head1 SEE ALSO + +L, L, L, L, L, +L + +=head1 AUTHOR + +The DB_File interface was written by Paul Marquess +Epmqs@cpan.orgE. + +=cut diff --git a/fastSum/resources/ROUGE/DB_File-1.835/blib/lib/auto/DB_File/.exists b/fastSum/resources/ROUGE/DB_File-1.835/blib/lib/auto/DB_File/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/DB_File-1.835/blib/man1/.exists b/fastSum/resources/ROUGE/DB_File-1.835/blib/man1/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/DB_File-1.835/blib/man3/.exists b/fastSum/resources/ROUGE/DB_File-1.835/blib/man3/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/DB_File-1.835/blib/man3/DB_File.3pm b/fastSum/resources/ROUGE/DB_File-1.835/blib/man3/DB_File.3pm new file mode 100644 index 0000000000000000000000000000000000000000..f10082724700d6c6e702d2bee085864ed91c0d0e --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/blib/man3/DB_File.3pm @@ -0,0 +1,1783 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "DB_File 3pm" +.TH DB_File 3pm "2019-09-27" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +DB_File \- Perl5 access to Berkeley DB version 1.x +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& use DB_File; +\& +\& [$X =] tie %hash, \*(AqDB_File\*(Aq, [$filename, $flags, $mode, $DB_HASH] ; +\& [$X =] tie %hash, \*(AqDB_File\*(Aq, $filename, $flags, $mode, $DB_BTREE ; +\& [$X =] tie @array, \*(AqDB_File\*(Aq, $filename, $flags, $mode, $DB_RECNO ; +\& +\& $status = $X\->del($key [, $flags]) ; +\& $status = $X\->put($key, $value [, $flags]) ; +\& $status = $X\->get($key, $value [, $flags]) ; +\& $status = $X\->seq($key, $value, $flags) ; +\& $status = $X\->sync([$flags]) ; +\& $status = $X\->fd ; +\& +\& # BTREE only +\& $count = $X\->get_dup($key) ; +\& @list = $X\->get_dup($key) ; +\& %list = $X\->get_dup($key, 1) ; +\& $status = $X\->find_dup($key, $value) ; +\& $status = $X\->del_dup($key, $value) ; +\& +\& # RECNO only +\& $a = $X\->length; +\& $a = $X\->pop ; +\& $X\->push(list); +\& $a = $X\->shift; +\& $X\->unshift(list); +\& @r = $X\->splice(offset, length, elements); +\& +\& # DBM Filters +\& $old_filter = $db\->filter_store_key ( sub { ... } ) ; +\& $old_filter = $db\->filter_store_value( sub { ... } ) ; +\& $old_filter = $db\->filter_fetch_key ( sub { ... } ) ; +\& $old_filter = $db\->filter_fetch_value( sub { ... } ) ; +\& +\& untie %hash ; +\& untie @array ; +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBDB_File\fR is a module which allows Perl programs to make use of the +facilities provided by Berkeley \s-1DB\s0 version 1.x (if you have a newer +version of \s-1DB,\s0 see \*(L"Using DB_File with Berkeley \s-1DB\s0 version 2 or greater\*(R"). +It is assumed that you have a copy of the Berkeley \s-1DB\s0 manual pages at +hand when reading this documentation. The interface defined here +mirrors the Berkeley \s-1DB\s0 interface closely. +.PP +Berkeley \s-1DB\s0 is a C library which provides a consistent interface to a +number of database formats. \fBDB_File\fR provides an interface to all +three of the database types currently supported by Berkeley \s-1DB.\s0 +.PP +The file types are: +.IP "\fB\s-1DB_HASH\s0\fR" 5 +.IX Item "DB_HASH" +This database type allows arbitrary key/value pairs to be stored in data +files. This is equivalent to the functionality provided by other +hashing packages like \s-1DBM, NDBM, ODBM, GDBM,\s0 and \s-1SDBM.\s0 Remember though, +the files created using \s-1DB_HASH\s0 are not compatible with any of the +other packages mentioned. +.Sp +A default hashing algorithm, which will be adequate for most +applications, is built into Berkeley \s-1DB.\s0 If you do need to use your own +hashing algorithm it is possible to write your own in Perl and have +\&\fBDB_File\fR use it instead. +.IP "\fB\s-1DB_BTREE\s0\fR" 5 +.IX Item "DB_BTREE" +The btree format allows arbitrary key/value pairs to be stored in a +sorted, balanced binary tree. +.Sp +As with the \s-1DB_HASH\s0 format, it is possible to provide a user defined +Perl routine to perform the comparison of keys. By default, though, the +keys are stored in lexical order. +.IP "\fB\s-1DB_RECNO\s0\fR" 5 +.IX Item "DB_RECNO" +\&\s-1DB_RECNO\s0 allows both fixed-length and variable-length flat text files +to be manipulated using the same key/value pair interface as in \s-1DB_HASH\s0 +and \s-1DB_BTREE. \s0 In this case the key will consist of a record (line) +number. +.SS "Using DB_File with Berkeley \s-1DB\s0 version 2 or greater" +.IX Subsection "Using DB_File with Berkeley DB version 2 or greater" +Although \fBDB_File\fR is intended to be used with Berkeley \s-1DB\s0 version 1, +it can also be used with version 2, 3 or 4. In this case the interface is +limited to the functionality provided by Berkeley \s-1DB 1\s0.x. Anywhere the +version 2 or greater interface differs, \fBDB_File\fR arranges for it to work +like version 1. This feature allows \fBDB_File\fR scripts that were built +with version 1 to be migrated to version 2 or greater without any changes. +.PP +If you want to make use of the new features available in Berkeley \s-1DB +2\s0.x or greater, use the Perl module \fBBerkeleyDB\fR instead. +.PP +\&\fBNote:\fR The database file format has changed multiple times in Berkeley +\&\s-1DB\s0 version 2, 3 and 4. If you cannot recreate your databases, you +must dump any existing databases with either the \f(CW\*(C`db_dump\*(C'\fR or the +\&\f(CW\*(C`db_dump185\*(C'\fR utility that comes with Berkeley \s-1DB.\s0 +Once you have rebuilt DB_File to use Berkeley \s-1DB\s0 version 2 or greater, +your databases can be recreated using \f(CW\*(C`db_load\*(C'\fR. Refer to the Berkeley \s-1DB\s0 +documentation for further details. +.PP +Please read \*(L"\s-1COPYRIGHT\*(R"\s0 before using version 2.x or greater of Berkeley +\&\s-1DB\s0 with DB_File. +.SS "Interface to Berkeley \s-1DB\s0" +.IX Subsection "Interface to Berkeley DB" +\&\fBDB_File\fR allows access to Berkeley \s-1DB\s0 files using the \fItie()\fR mechanism +in Perl 5 (for full details, see \*(L"\fItie()\fR\*(R" in perlfunc). This facility +allows \fBDB_File\fR to access Berkeley \s-1DB\s0 files using either an +associative array (for \s-1DB_HASH & DB_BTREE\s0 file types) or an ordinary +array (for the \s-1DB_RECNO\s0 file type). +.PP +In addition to the \fItie()\fR interface, it is also possible to access most +of the functions provided in the Berkeley \s-1DB API\s0 directly. +See \*(L"\s-1THE API INTERFACE\*(R"\s0. +.SS "Opening a Berkeley \s-1DB\s0 Database File" +.IX Subsection "Opening a Berkeley DB Database File" +Berkeley \s-1DB\s0 uses the function \fIdbopen()\fR to open or create a database. +Here is the C prototype for \fIdbopen()\fR: +.PP +.Vb 3 +\& DB* +\& dbopen (const char * file, int flags, int mode, +\& DBTYPE type, const void * openinfo) +.Ve +.PP +The parameter \f(CW\*(C`type\*(C'\fR is an enumeration which specifies which of the 3 +interface methods (\s-1DB_HASH, DB_BTREE\s0 or \s-1DB_RECNO\s0) is to be used. +Depending on which of these is actually chosen, the final parameter, +\&\fIopeninfo\fR points to a data structure which allows tailoring of the +specific interface method. +.PP +This interface is handled slightly differently in \fBDB_File\fR. Here is +an equivalent call using \fBDB_File\fR: +.PP +.Vb 1 +\& tie %array, \*(AqDB_File\*(Aq, $filename, $flags, $mode, $DB_HASH ; +.Ve +.PP +The \f(CW\*(C`filename\*(C'\fR, \f(CW\*(C`flags\*(C'\fR and \f(CW\*(C`mode\*(C'\fR parameters are the direct +equivalent of their \fIdbopen()\fR counterparts. The final parameter \f(CW$DB_HASH\fR +performs the function of both the \f(CW\*(C`type\*(C'\fR and \f(CW\*(C`openinfo\*(C'\fR parameters in +\&\fIdbopen()\fR. +.PP +In the example above \f(CW$DB_HASH\fR is actually a pre-defined reference to a +hash object. \fBDB_File\fR has three of these pre-defined references. +Apart from \f(CW$DB_HASH\fR, there is also \f(CW$DB_BTREE\fR and \f(CW$DB_RECNO\fR. +.PP +The keys allowed in each of these pre-defined references is limited to +the names used in the equivalent C structure. So, for example, the +\&\f(CW$DB_HASH\fR reference will only allow keys called \f(CW\*(C`bsize\*(C'\fR, \f(CW\*(C`cachesize\*(C'\fR, +\&\f(CW\*(C`ffactor\*(C'\fR, \f(CW\*(C`hash\*(C'\fR, \f(CW\*(C`lorder\*(C'\fR and \f(CW\*(C`nelem\*(C'\fR. +.PP +To change one of these elements, just assign to it like this: +.PP +.Vb 1 +\& $DB_HASH\->{\*(Aqcachesize\*(Aq} = 10000 ; +.Ve +.PP +The three predefined variables \f(CW$DB_HASH\fR, \f(CW$DB_BTREE\fR and \f(CW$DB_RECNO\fR are +usually adequate for most applications. If you do need to create extra +instances of these objects, constructors are available for each file +type. +.PP +Here are examples of the constructors and the valid options available +for \s-1DB_HASH, DB_BTREE\s0 and \s-1DB_RECNO\s0 respectively. +.PP +.Vb 7 +\& $a = new DB_File::HASHINFO ; +\& $a\->{\*(Aqbsize\*(Aq} ; +\& $a\->{\*(Aqcachesize\*(Aq} ; +\& $a\->{\*(Aqffactor\*(Aq}; +\& $a\->{\*(Aqhash\*(Aq} ; +\& $a\->{\*(Aqlorder\*(Aq} ; +\& $a\->{\*(Aqnelem\*(Aq} ; +\& +\& $b = new DB_File::BTREEINFO ; +\& $b\->{\*(Aqflags\*(Aq} ; +\& $b\->{\*(Aqcachesize\*(Aq} ; +\& $b\->{\*(Aqmaxkeypage\*(Aq} ; +\& $b\->{\*(Aqminkeypage\*(Aq} ; +\& $b\->{\*(Aqpsize\*(Aq} ; +\& $b\->{\*(Aqcompare\*(Aq} ; +\& $b\->{\*(Aqprefix\*(Aq} ; +\& $b\->{\*(Aqlorder\*(Aq} ; +\& +\& $c = new DB_File::RECNOINFO ; +\& $c\->{\*(Aqbval\*(Aq} ; +\& $c\->{\*(Aqcachesize\*(Aq} ; +\& $c\->{\*(Aqpsize\*(Aq} ; +\& $c\->{\*(Aqflags\*(Aq} ; +\& $c\->{\*(Aqlorder\*(Aq} ; +\& $c\->{\*(Aqreclen\*(Aq} ; +\& $c\->{\*(Aqbfname\*(Aq} ; +.Ve +.PP +The values stored in the hashes above are mostly the direct equivalent +of their C counterpart. Like their C counterparts, all are set to a +default values \- that means you don't have to set \fIall\fR of the +values when you only want to change one. Here is an example: +.PP +.Vb 3 +\& $a = new DB_File::HASHINFO ; +\& $a\->{\*(Aqcachesize\*(Aq} = 12345 ; +\& tie %y, \*(AqDB_File\*(Aq, "filename", $flags, 0777, $a ; +.Ve +.PP +A few of the options need extra discussion here. When used, the C +equivalent of the keys \f(CW\*(C`hash\*(C'\fR, \f(CW\*(C`compare\*(C'\fR and \f(CW\*(C`prefix\*(C'\fR store pointers +to C functions. In \fBDB_File\fR these keys are used to store references +to Perl subs. Below are templates for each of the subs: +.PP +.Vb 7 +\& sub hash +\& { +\& my ($data) = @_ ; +\& ... +\& # return the hash value for $data +\& return $hash ; +\& } +\& +\& sub compare +\& { +\& my ($key, $key2) = @_ ; +\& ... +\& # return 0 if $key1 eq $key2 +\& # \-1 if $key1 lt $key2 +\& # 1 if $key1 gt $key2 +\& return (\-1 , 0 or 1) ; +\& } +\& +\& sub prefix +\& { +\& my ($key, $key2) = @_ ; +\& ... +\& # return number of bytes of $key2 which are +\& # necessary to determine that it is greater than $key1 +\& return $bytes ; +\& } +.Ve +.PP +See \*(L"Changing the \s-1BTREE\s0 sort order\*(R" for an example of using the +\&\f(CW\*(C`compare\*(C'\fR template. +.PP +If you are using the \s-1DB_RECNO\s0 interface and you intend making use of +\&\f(CW\*(C`bval\*(C'\fR, you should check out \*(L"The 'bval' Option\*(R". +.SS "Default Parameters" +.IX Subsection "Default Parameters" +It is possible to omit some or all of the final 4 parameters in the +call to \f(CW\*(C`tie\*(C'\fR and let them take default values. As \s-1DB_HASH\s0 is the most +common file format used, the call: +.PP +.Vb 1 +\& tie %A, "DB_File", "filename" ; +.Ve +.PP +is equivalent to: +.PP +.Vb 1 +\& tie %A, "DB_File", "filename", O_CREAT|O_RDWR, 0666, $DB_HASH ; +.Ve +.PP +It is also possible to omit the filename parameter as well, so the +call: +.PP +.Vb 1 +\& tie %A, "DB_File" ; +.Ve +.PP +is equivalent to: +.PP +.Vb 1 +\& tie %A, "DB_File", undef, O_CREAT|O_RDWR, 0666, $DB_HASH ; +.Ve +.PP +See \*(L"In Memory Databases\*(R" for a discussion on the use of \f(CW\*(C`undef\*(C'\fR +in place of a filename. +.SS "In Memory Databases" +.IX Subsection "In Memory Databases" +Berkeley \s-1DB\s0 allows the creation of in-memory databases by using \s-1NULL +\&\s0(that is, a \f(CW\*(C`(char *)0\*(C'\fR in C) in place of the filename. \fBDB_File\fR +uses \f(CW\*(C`undef\*(C'\fR instead of \s-1NULL\s0 to provide this functionality. +.SH "DB_HASH" +.IX Header "DB_HASH" +The \s-1DB_HASH\s0 file format is probably the most commonly used of the three +file formats that \fBDB_File\fR supports. It is also very straightforward +to use. +.SS "A Simple Example" +.IX Subsection "A Simple Example" +This example shows how to create a database, add key/value pairs to the +database, delete keys/value pairs and finally how to enumerate the +contents of the database. +.PP +.Vb 4 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& our (%h, $k, $v) ; +\& +\& unlink "fruit" ; +\& tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0666, $DB_HASH +\& or die "Cannot open file \*(Aqfruit\*(Aq: $!\en"; +\& +\& # Add a few key/value pairs to the file +\& $h{"apple"} = "red" ; +\& $h{"orange"} = "orange" ; +\& $h{"banana"} = "yellow" ; +\& $h{"tomato"} = "red" ; +\& +\& # Check for existence of a key +\& print "Banana Exists\en\en" if $h{"banana"} ; +\& +\& # Delete a key/value pair. +\& delete $h{"apple"} ; +\& +\& # print the contents of the file +\& while (($k, $v) = each %h) +\& { print "$k \-> $v\en" } +\& +\& untie %h ; +.Ve +.PP +here is the output: +.PP +.Vb 1 +\& Banana Exists +\& +\& orange \-> orange +\& tomato \-> red +\& banana \-> yellow +.Ve +.PP +Note that the like ordinary associative arrays, the order of the keys +retrieved is in an apparently random order. +.SH "DB_BTREE" +.IX Header "DB_BTREE" +The \s-1DB_BTREE\s0 format is useful when you want to store data in a given +order. By default the keys will be stored in lexical order, but as you +will see from the example shown in the next section, it is very easy to +define your own sorting function. +.SS "Changing the \s-1BTREE\s0 sort order" +.IX Subsection "Changing the BTREE sort order" +This script shows how to override the default sorting algorithm that +\&\s-1BTREE\s0 uses. Instead of using the normal lexical ordering, a case +insensitive compare function will be used. +.PP +.Vb 3 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& +\& my %h ; +\& +\& sub Compare +\& { +\& my ($key1, $key2) = @_ ; +\& "\eL$key1" cmp "\eL$key2" ; +\& } +\& +\& # specify the Perl sub that will do the comparison +\& $DB_BTREE\->{\*(Aqcompare\*(Aq} = \e&Compare ; +\& +\& unlink "tree" ; +\& tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0666, $DB_BTREE +\& or die "Cannot open file \*(Aqtree\*(Aq: $!\en" ; +\& +\& # Add a key/value pair to the file +\& $h{\*(AqWall\*(Aq} = \*(AqLarry\*(Aq ; +\& $h{\*(AqSmith\*(Aq} = \*(AqJohn\*(Aq ; +\& $h{\*(Aqmouse\*(Aq} = \*(Aqmickey\*(Aq ; +\& $h{\*(Aqduck\*(Aq} = \*(Aqdonald\*(Aq ; +\& +\& # Delete +\& delete $h{"duck"} ; +\& +\& # Cycle through the keys printing them in order. +\& # Note it is not necessary to sort the keys as +\& # the btree will have kept them in order automatically. +\& foreach (keys %h) +\& { print "$_\en" } +\& +\& untie %h ; +.Ve +.PP +Here is the output from the code above. +.PP +.Vb 3 +\& mouse +\& Smith +\& Wall +.Ve +.PP +There are a few point to bear in mind if you want to change the +ordering in a \s-1BTREE\s0 database: +.IP "1." 5 +The new compare function must be specified when you create the database. +.IP "2." 5 +You cannot change the ordering once the database has been created. Thus +you must use the same compare function every time you access the +database. +.IP "3." 5 +Duplicate keys are entirely defined by the comparison function. +In the case-insensitive example above, the keys: '\s-1KEY\s0' and 'key' +would be considered duplicates, and assigning to the second one +would overwrite the first. If duplicates are allowed for (with the +R_DUP flag discussed below), only a single copy of duplicate keys +is stored in the database \-\-\- so (again with example above) assigning +three values to the keys: '\s-1KEY\s0', 'Key', and 'key' would leave just +the first key: '\s-1KEY\s0' in the database with three values. For some +situations this results in information loss, so care should be taken +to provide fully qualified comparison functions when necessary. +For example, the above comparison routine could be modified to +additionally compare case-sensitively if two keys are equal in the +case insensitive comparison: +.Sp +.Vb 5 +\& sub compare { +\& my($key1, $key2) = @_; +\& lc $key1 cmp lc $key2 || +\& $key1 cmp $key2; +\& } +.Ve +.Sp +And now you will only have duplicates when the keys themselves +are truly the same. (note: in versions of the db library prior to +about November 1996, such duplicate keys were retained so it was +possible to recover the original keys in sets of keys that +compared as equal). +.SS "Handling Duplicate Keys" +.IX Subsection "Handling Duplicate Keys" +The \s-1BTREE\s0 file type optionally allows a single key to be associated +with an arbitrary number of values. This option is enabled by setting +the flags element of \f(CW$DB_BTREE\fR to R_DUP when creating the database. +.PP +There are some difficulties in using the tied hash interface if you +want to manipulate a \s-1BTREE\s0 database with duplicate keys. Consider this +code: +.PP +.Vb 3 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& +\& my ($filename, %h) ; +\& +\& $filename = "tree" ; +\& unlink $filename ; +\& +\& # Enable duplicate records +\& $DB_BTREE\->{\*(Aqflags\*(Aq} = R_DUP ; +\& +\& tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE +\& or die "Cannot open $filename: $!\en"; +\& +\& # Add some key/value pairs to the file +\& $h{\*(AqWall\*(Aq} = \*(AqLarry\*(Aq ; +\& $h{\*(AqWall\*(Aq} = \*(AqBrick\*(Aq ; # Note the duplicate key +\& $h{\*(AqWall\*(Aq} = \*(AqBrick\*(Aq ; # Note the duplicate key and value +\& $h{\*(AqSmith\*(Aq} = \*(AqJohn\*(Aq ; +\& $h{\*(Aqmouse\*(Aq} = \*(Aqmickey\*(Aq ; +\& +\& # iterate through the associative array +\& # and print each key/value pair. +\& foreach (sort keys %h) +\& { print "$_ \-> $h{$_}\en" } +\& +\& untie %h ; +.Ve +.PP +Here is the output: +.PP +.Vb 5 +\& Smith \-> John +\& Wall \-> Larry +\& Wall \-> Larry +\& Wall \-> Larry +\& mouse \-> mickey +.Ve +.PP +As you can see 3 records have been successfully created with key \f(CW\*(C`Wall\*(C'\fR +\&\- the only thing is, when they are retrieved from the database they +\&\fIseem\fR to have the same value, namely \f(CW\*(C`Larry\*(C'\fR. The problem is caused +by the way that the associative array interface works. Basically, when +the associative array interface is used to fetch the value associated +with a given key, it will only ever retrieve the first value. +.PP +Although it may not be immediately obvious from the code above, the +associative array interface can be used to write values with duplicate +keys, but it cannot be used to read them back from the database. +.PP +The way to get around this problem is to use the Berkeley \s-1DB API\s0 method +called \f(CW\*(C`seq\*(C'\fR. This method allows sequential access to key/value +pairs. See \*(L"\s-1THE API INTERFACE\*(R"\s0 for details of both the \f(CW\*(C`seq\*(C'\fR method +and the \s-1API\s0 in general. +.PP +Here is the script above rewritten using the \f(CW\*(C`seq\*(C'\fR \s-1API\s0 method. +.PP +.Vb 3 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& +\& my ($filename, $x, %h, $status, $key, $value) ; +\& +\& $filename = "tree" ; +\& unlink $filename ; +\& +\& # Enable duplicate records +\& $DB_BTREE\->{\*(Aqflags\*(Aq} = R_DUP ; +\& +\& $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE +\& or die "Cannot open $filename: $!\en"; +\& +\& # Add some key/value pairs to the file +\& $h{\*(AqWall\*(Aq} = \*(AqLarry\*(Aq ; +\& $h{\*(AqWall\*(Aq} = \*(AqBrick\*(Aq ; # Note the duplicate key +\& $h{\*(AqWall\*(Aq} = \*(AqBrick\*(Aq ; # Note the duplicate key and value +\& $h{\*(AqSmith\*(Aq} = \*(AqJohn\*(Aq ; +\& $h{\*(Aqmouse\*(Aq} = \*(Aqmickey\*(Aq ; +\& +\& # iterate through the btree using seq +\& # and print each key/value pair. +\& $key = $value = 0 ; +\& for ($status = $x\->seq($key, $value, R_FIRST) ; +\& $status == 0 ; +\& $status = $x\->seq($key, $value, R_NEXT) ) +\& { print "$key \-> $value\en" } +\& +\& undef $x ; +\& untie %h ; +.Ve +.PP +that prints: +.PP +.Vb 5 +\& Smith \-> John +\& Wall \-> Brick +\& Wall \-> Brick +\& Wall \-> Larry +\& mouse \-> mickey +.Ve +.PP +This time we have got all the key/value pairs, including the multiple +values associated with the key \f(CW\*(C`Wall\*(C'\fR. +.PP +To make life easier when dealing with duplicate keys, \fBDB_File\fR comes with +a few utility methods. +.SS "The \fIget_dup()\fP Method" +.IX Subsection "The get_dup() Method" +The \f(CW\*(C`get_dup\*(C'\fR method assists in +reading duplicate values from \s-1BTREE\s0 databases. The method can take the +following forms: +.PP +.Vb 3 +\& $count = $x\->get_dup($key) ; +\& @list = $x\->get_dup($key) ; +\& %list = $x\->get_dup($key, 1) ; +.Ve +.PP +In a scalar context the method returns the number of values associated +with the key, \f(CW$key\fR. +.PP +In list context, it returns all the values which match \f(CW$key\fR. Note +that the values will be returned in an apparently random order. +.PP +In list context, if the second parameter is present and evaluates +\&\s-1TRUE,\s0 the method returns an associative array. The keys of the +associative array correspond to the values that matched in the \s-1BTREE\s0 +and the values of the array are a count of the number of times that +particular value occurred in the \s-1BTREE.\s0 +.PP +So assuming the database created above, we can use \f(CW\*(C`get_dup\*(C'\fR like +this: +.PP +.Vb 3 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& +\& my ($filename, $x, %h) ; +\& +\& $filename = "tree" ; +\& +\& # Enable duplicate records +\& $DB_BTREE\->{\*(Aqflags\*(Aq} = R_DUP ; +\& +\& $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE +\& or die "Cannot open $filename: $!\en"; +\& +\& my $cnt = $x\->get_dup("Wall") ; +\& print "Wall occurred $cnt times\en" ; +\& +\& my %hash = $x\->get_dup("Wall", 1) ; +\& print "Larry is there\en" if $hash{\*(AqLarry\*(Aq} ; +\& print "There are $hash{\*(AqBrick\*(Aq} Brick Walls\en" ; +\& +\& my @list = sort $x\->get_dup("Wall") ; +\& print "Wall => [@list]\en" ; +\& +\& @list = $x\->get_dup("Smith") ; +\& print "Smith => [@list]\en" ; +\& +\& @list = $x\->get_dup("Dog") ; +\& print "Dog => [@list]\en" ; +.Ve +.PP +and it will print: +.PP +.Vb 6 +\& Wall occurred 3 times +\& Larry is there +\& There are 2 Brick Walls +\& Wall => [Brick Brick Larry] +\& Smith => [John] +\& Dog => [] +.Ve +.SS "The \fIfind_dup()\fP Method" +.IX Subsection "The find_dup() Method" +.Vb 1 +\& $status = $X\->find_dup($key, $value) ; +.Ve +.PP +This method checks for the existence of a specific key/value pair. If the +pair exists, the cursor is left pointing to the pair and the method +returns 0. Otherwise the method returns a non-zero value. +.PP +Assuming the database from the previous example: +.PP +.Vb 3 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& +\& my ($filename, $x, %h, $found) ; +\& +\& $filename = "tree" ; +\& +\& # Enable duplicate records +\& $DB_BTREE\->{\*(Aqflags\*(Aq} = R_DUP ; +\& +\& $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE +\& or die "Cannot open $filename: $!\en"; +\& +\& $found = ( $x\->find_dup("Wall", "Larry") == 0 ? "" : "not") ; +\& print "Larry Wall is $found there\en" ; +\& +\& $found = ( $x\->find_dup("Wall", "Harry") == 0 ? "" : "not") ; +\& print "Harry Wall is $found there\en" ; +\& +\& undef $x ; +\& untie %h ; +.Ve +.PP +prints this +.PP +.Vb 2 +\& Larry Wall is there +\& Harry Wall is not there +.Ve +.SS "The \fIdel_dup()\fP Method" +.IX Subsection "The del_dup() Method" +.Vb 1 +\& $status = $X\->del_dup($key, $value) ; +.Ve +.PP +This method deletes a specific key/value pair. It returns +0 if they exist and have been deleted successfully. +Otherwise the method returns a non-zero value. +.PP +Again assuming the existence of the \f(CW\*(C`tree\*(C'\fR database +.PP +.Vb 3 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& +\& my ($filename, $x, %h, $found) ; +\& +\& $filename = "tree" ; +\& +\& # Enable duplicate records +\& $DB_BTREE\->{\*(Aqflags\*(Aq} = R_DUP ; +\& +\& $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE +\& or die "Cannot open $filename: $!\en"; +\& +\& $x\->del_dup("Wall", "Larry") ; +\& +\& $found = ( $x\->find_dup("Wall", "Larry") == 0 ? "" : "not") ; +\& print "Larry Wall is $found there\en" ; +\& +\& undef $x ; +\& untie %h ; +.Ve +.PP +prints this +.PP +.Vb 1 +\& Larry Wall is not there +.Ve +.SS "Matching Partial Keys" +.IX Subsection "Matching Partial Keys" +The \s-1BTREE\s0 interface has a feature which allows partial keys to be +matched. This functionality is \fIonly\fR available when the \f(CW\*(C`seq\*(C'\fR method +is used along with the R_CURSOR flag. +.PP +.Vb 1 +\& $x\->seq($key, $value, R_CURSOR) ; +.Ve +.PP +Here is the relevant quote from the dbopen man page where it defines +the use of the R_CURSOR flag with seq: +.PP +.Vb 4 +\& Note, for the DB_BTREE access method, the returned key is not +\& necessarily an exact match for the specified key. The returned key +\& is the smallest key greater than or equal to the specified key, +\& permitting partial key matches and range searches. +.Ve +.PP +In the example script below, the \f(CW\*(C`match\*(C'\fR sub uses this feature to find +and print the first matching key/value pair given a partial key. +.PP +.Vb 4 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& use Fcntl ; +\& +\& my ($filename, $x, %h, $st, $key, $value) ; +\& +\& sub match +\& { +\& my $key = shift ; +\& my $value = 0; +\& my $orig_key = $key ; +\& $x\->seq($key, $value, R_CURSOR) ; +\& print "$orig_key\et\-> $key\et\-> $value\en" ; +\& } +\& +\& $filename = "tree" ; +\& unlink $filename ; +\& +\& $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_BTREE +\& or die "Cannot open $filename: $!\en"; +\& +\& # Add some key/value pairs to the file +\& $h{\*(Aqmouse\*(Aq} = \*(Aqmickey\*(Aq ; +\& $h{\*(AqWall\*(Aq} = \*(AqLarry\*(Aq ; +\& $h{\*(AqWalls\*(Aq} = \*(AqBrick\*(Aq ; +\& $h{\*(AqSmith\*(Aq} = \*(AqJohn\*(Aq ; +\& +\& +\& $key = $value = 0 ; +\& print "IN ORDER\en" ; +\& for ($st = $x\->seq($key, $value, R_FIRST) ; +\& $st == 0 ; +\& $st = $x\->seq($key, $value, R_NEXT) ) +\& +\& { print "$key \-> $value\en" } +\& +\& print "\enPARTIAL MATCH\en" ; +\& +\& match "Wa" ; +\& match "A" ; +\& match "a" ; +\& +\& undef $x ; +\& untie %h ; +.Ve +.PP +Here is the output: +.PP +.Vb 5 +\& IN ORDER +\& Smith \-> John +\& Wall \-> Larry +\& Walls \-> Brick +\& mouse \-> mickey +\& +\& PARTIAL MATCH +\& Wa \-> Wall \-> Larry +\& A \-> Smith \-> John +\& a \-> mouse \-> mickey +.Ve +.SH "DB_RECNO" +.IX Header "DB_RECNO" +\&\s-1DB_RECNO\s0 provides an interface to flat text files. Both variable and +fixed length records are supported. +.PP +In order to make \s-1RECNO\s0 more compatible with Perl, the array offset for +all \s-1RECNO\s0 arrays begins at 0 rather than 1 as in Berkeley \s-1DB.\s0 +.PP +As with normal Perl arrays, a \s-1RECNO\s0 array can be accessed using +negative indexes. The index \-1 refers to the last element of the array, +\&\-2 the second last, and so on. Attempting to access an element before +the start of the array will raise a fatal run-time error. +.SS "The 'bval' Option" +.IX Subsection "The 'bval' Option" +The operation of the bval option warrants some discussion. Here is the +definition of bval from the Berkeley \s-1DB 1.85\s0 recno manual page: +.PP +.Vb 6 +\& The delimiting byte to be used to mark the end of a +\& record for variable\-length records, and the pad charac\- +\& ter for fixed\-length records. If no value is speci\- +\& fied, newlines (\`\`\en\*(Aq\*(Aq) are used to mark the end of +\& variable\-length records and fixed\-length records are +\& padded with spaces. +.Ve +.PP +The second sentence is wrong. In actual fact bval will only default to +\&\f(CW"\en"\fR when the openinfo parameter in dbopen is \s-1NULL.\s0 If a non-NULL +openinfo parameter is used at all, the value that happens to be in bval +will be used. That means you always have to specify bval when making +use of any of the options in the openinfo parameter. This documentation +error will be fixed in the next release of Berkeley \s-1DB.\s0 +.PP +That clarifies the situation with regards Berkeley \s-1DB\s0 itself. What +about \fBDB_File\fR? Well, the behavior defined in the quote above is +quite useful, so \fBDB_File\fR conforms to it. +.PP +That means that you can specify other options (e.g. cachesize) and +still have bval default to \f(CW"\en"\fR for variable length records, and +space for fixed length records. +.PP +Also note that the bval option only allows you to specify a single byte +as a delimiter. +.SS "A Simple Example" +.IX Subsection "A Simple Example" +Here is a simple example that uses \s-1RECNO \s0(if you are using a version +of Perl earlier than 5.004_57 this example won't work \*(-- see +\&\*(L"Extra \s-1RECNO\s0 Methods\*(R" for a workaround). +.PP +.Vb 3 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& +\& my $filename = "text" ; +\& unlink $filename ; +\& +\& my @h ; +\& tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0666, $DB_RECNO +\& or die "Cannot open file \*(Aqtext\*(Aq: $!\en" ; +\& +\& # Add a few key/value pairs to the file +\& $h[0] = "orange" ; +\& $h[1] = "blue" ; +\& $h[2] = "yellow" ; +\& +\& push @h, "green", "black" ; +\& +\& my $elements = scalar @h ; +\& print "The array contains $elements entries\en" ; +\& +\& my $last = pop @h ; +\& print "popped $last\en" ; +\& +\& unshift @h, "white" ; +\& my $first = shift @h ; +\& print "shifted $first\en" ; +\& +\& # Check for existence of a key +\& print "Element 1 Exists with value $h[1]\en" if $h[1] ; +\& +\& # use a negative index +\& print "The last element is $h[\-1]\en" ; +\& print "The 2nd last element is $h[\-2]\en" ; +\& +\& untie @h ; +.Ve +.PP +Here is the output from the script: +.PP +.Vb 6 +\& The array contains 5 entries +\& popped black +\& shifted white +\& Element 1 Exists with value blue +\& The last element is green +\& The 2nd last element is yellow +.Ve +.SS "Extra \s-1RECNO\s0 Methods" +.IX Subsection "Extra RECNO Methods" +If you are using a version of Perl earlier than 5.004_57, the tied +array interface is quite limited. In the example script above +\&\f(CW\*(C`push\*(C'\fR, \f(CW\*(C`pop\*(C'\fR, \f(CW\*(C`shift\*(C'\fR, \f(CW\*(C`unshift\*(C'\fR +or determining the array length will not work with a tied array. +.PP +To make the interface more useful for older versions of Perl, a number +of methods are supplied with \fBDB_File\fR to simulate the missing array +operations. All these methods are accessed via the object returned from +the tie call. +.PP +Here are the methods: +.ie n .IP "\fB\fB$X\fB\->push(list) ;\fR" 5 +.el .IP "\fB\f(CB$X\fB\->push(list) ;\fR" 5 +.IX Item "$X->push(list) ;" +Pushes the elements of \f(CW\*(C`list\*(C'\fR to the end of the array. +.ie n .IP "\fB\fB$value\fB = \f(BI$X\fB\->pop ;\fR" 5 +.el .IP "\fB\f(CB$value\fB = \f(CB$X\fB\->pop ;\fR" 5 +.IX Item "$value = $X->pop ;" +Removes and returns the last element of the array. +.ie n .IP "\fB\fB$X\fB\->shift\fR" 5 +.el .IP "\fB\f(CB$X\fB\->shift\fR" 5 +.IX Item "$X->shift" +Removes and returns the first element of the array. +.ie n .IP "\fB\fB$X\fB\->unshift(list) ;\fR" 5 +.el .IP "\fB\f(CB$X\fB\->unshift(list) ;\fR" 5 +.IX Item "$X->unshift(list) ;" +Pushes the elements of \f(CW\*(C`list\*(C'\fR to the start of the array. +.ie n .IP "\fB\fB$X\fB\->length\fR" 5 +.el .IP "\fB\f(CB$X\fB\->length\fR" 5 +.IX Item "$X->length" +Returns the number of elements in the array. +.ie n .IP "\fB\fB$X\fB\->splice(offset, length, elements);\fR" 5 +.el .IP "\fB\f(CB$X\fB\->splice(offset, length, elements);\fR" 5 +.IX Item "$X->splice(offset, length, elements);" +Returns a splice of the array. +.SS "Another Example" +.IX Subsection "Another Example" +Here is a more complete example that makes use of some of the methods +described above. It also makes use of the \s-1API\s0 interface directly (see +\&\*(L"\s-1THE API INTERFACE\*(R"\s0). +.PP +.Vb 5 +\& use warnings ; +\& use strict ; +\& my (@h, $H, $file, $i) ; +\& use DB_File ; +\& use Fcntl ; +\& +\& $file = "text" ; +\& +\& unlink $file ; +\& +\& $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0666, $DB_RECNO +\& or die "Cannot open file $file: $!\en" ; +\& +\& # first create a text file to play with +\& $h[0] = "zero" ; +\& $h[1] = "one" ; +\& $h[2] = "two" ; +\& $h[3] = "three" ; +\& $h[4] = "four" ; +\& +\& +\& # Print the records in order. +\& # +\& # The length method is needed here because evaluating a tied +\& # array in a scalar context does not return the number of +\& # elements in the array. +\& +\& print "\enORIGINAL\en" ; +\& foreach $i (0 .. $H\->length \- 1) { +\& print "$i: $h[$i]\en" ; +\& } +\& +\& # use the push & pop methods +\& $a = $H\->pop ; +\& $H\->push("last") ; +\& print "\enThe last record was [$a]\en" ; +\& +\& # and the shift & unshift methods +\& $a = $H\->shift ; +\& $H\->unshift("first") ; +\& print "The first record was [$a]\en" ; +\& +\& # Use the API to add a new record after record 2. +\& $i = 2 ; +\& $H\->put($i, "Newbie", R_IAFTER) ; +\& +\& # and a new record before record 1. +\& $i = 1 ; +\& $H\->put($i, "New One", R_IBEFORE) ; +\& +\& # delete record 3 +\& $H\->del(3) ; +\& +\& # now print the records in reverse order +\& print "\enREVERSE\en" ; +\& for ($i = $H\->length \- 1 ; $i >= 0 ; \-\- $i) +\& { print "$i: $h[$i]\en" } +\& +\& # same again, but use the API functions instead +\& print "\enREVERSE again\en" ; +\& my ($s, $k, $v) = (0, 0, 0) ; +\& for ($s = $H\->seq($k, $v, R_LAST) ; +\& $s == 0 ; +\& $s = $H\->seq($k, $v, R_PREV)) +\& { print "$k: $v\en" } +\& +\& undef $H ; +\& untie @h ; +.Ve +.PP +and this is what it outputs: +.PP +.Vb 6 +\& ORIGINAL +\& 0: zero +\& 1: one +\& 2: two +\& 3: three +\& 4: four +\& +\& The last record was [four] +\& The first record was [zero] +\& +\& REVERSE +\& 5: last +\& 4: three +\& 3: Newbie +\& 2: one +\& 1: New One +\& 0: first +\& +\& REVERSE again +\& 5: last +\& 4: three +\& 3: Newbie +\& 2: one +\& 1: New One +\& 0: first +.Ve +.PP +Notes: +.IP "1." 5 +Rather than iterating through the array, \f(CW@h\fR like this: +.Sp +.Vb 1 +\& foreach $i (@h) +.Ve +.Sp +it is necessary to use either this: +.Sp +.Vb 1 +\& foreach $i (0 .. $H\->length \- 1) +.Ve +.Sp +or this: +.Sp +.Vb 3 +\& for ($a = $H\->get($k, $v, R_FIRST) ; +\& $a == 0 ; +\& $a = $H\->get($k, $v, R_NEXT) ) +.Ve +.IP "2." 5 +Notice that both times the \f(CW\*(C`put\*(C'\fR method was used the record index was +specified using a variable, \f(CW$i\fR, rather than the literal value +itself. This is because \f(CW\*(C`put\*(C'\fR will return the record number of the +inserted line via that parameter. +.SH "THE API INTERFACE" +.IX Header "THE API INTERFACE" +As well as accessing Berkeley \s-1DB\s0 using a tied hash or array, it is also +possible to make direct use of most of the \s-1API\s0 functions defined in the +Berkeley \s-1DB\s0 documentation. +.PP +To do this you need to store a copy of the object returned from the tie. +.PP +.Vb 1 +\& $db = tie %hash, "DB_File", "filename" ; +.Ve +.PP +Once you have done that, you can access the Berkeley \s-1DB API\s0 functions +as \fBDB_File\fR methods directly like this: +.PP +.Vb 1 +\& $db\->put($key, $value, R_NOOVERWRITE) ; +.Ve +.PP +\&\fBImportant:\fR If you have saved a copy of the object returned from +\&\f(CW\*(C`tie\*(C'\fR, the underlying database file will \fInot\fR be closed until both +the tied variable is untied and all copies of the saved object are +destroyed. +.PP +.Vb 6 +\& use DB_File ; +\& $db = tie %hash, "DB_File", "filename" +\& or die "Cannot tie filename: $!" ; +\& ... +\& undef $db ; +\& untie %hash ; +.Ve +.PP +See \*(L"The \fIuntie()\fR Gotcha\*(R" for more details. +.PP +All the functions defined in dbopen are available except for +\&\fIclose()\fR and \fIdbopen()\fR itself. The \fBDB_File\fR method interface to the +supported functions have been implemented to mirror the way Berkeley \s-1DB\s0 +works whenever possible. In particular note that: +.IP "\(bu" 5 +The methods return a status value. All return 0 on success. +All return \-1 to signify an error and set \f(CW$!\fR to the exact +error code. The return code 1 generally (but not always) means that the +key specified did not exist in the database. +.Sp +Other return codes are defined. See below and in the Berkeley \s-1DB\s0 +documentation for details. The Berkeley \s-1DB\s0 documentation should be used +as the definitive source. +.IP "\(bu" 5 +Whenever a Berkeley \s-1DB\s0 function returns data via one of its parameters, +the equivalent \fBDB_File\fR method does exactly the same. +.IP "\(bu" 5 +If you are careful, it is possible to mix \s-1API\s0 calls with the tied +hash/array interface in the same piece of code. Although only a few of +the methods used to implement the tied interface currently make use of +the cursor, you should always assume that the cursor has been changed +any time the tied hash/array interface is used. As an example, this +code will probably not do what you expect: +.Sp +.Vb 2 +\& $X = tie %x, \*(AqDB_File\*(Aq, $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE +\& or die "Cannot tie $filename: $!" ; +\& +\& # Get the first key/value pair and set the cursor +\& $X\->seq($key, $value, R_FIRST) ; +\& +\& # this line will modify the cursor +\& $count = scalar keys %x ; +\& +\& # Get the second key/value pair. +\& # oops, it didn\*(Aqt, it got the last key/value pair! +\& $X\->seq($key, $value, R_NEXT) ; +.Ve +.Sp +The code above can be rearranged to get around the problem, like this: +.Sp +.Vb 2 +\& $X = tie %x, \*(AqDB_File\*(Aq, $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE +\& or die "Cannot tie $filename: $!" ; +\& +\& # this line will modify the cursor +\& $count = scalar keys %x ; +\& +\& # Get the first key/value pair and set the cursor +\& $X\->seq($key, $value, R_FIRST) ; +\& +\& # Get the second key/value pair. +\& # worked this time. +\& $X\->seq($key, $value, R_NEXT) ; +.Ve +.PP +All the constants defined in dbopen for use in the flags parameters +in the methods defined below are also available. Refer to the Berkeley +\&\s-1DB\s0 documentation for the precise meaning of the flags values. +.PP +Below is a list of the methods available. +.ie n .IP "\fB\fB$status\fB = \f(BI$X\fB\->get($key, \f(CB$value\fB [, \f(CB$flags\fB]) ;\fR" 5 +.el .IP "\fB\f(CB$status\fB = \f(CB$X\fB\->get($key, \f(CB$value\fB [, \f(CB$flags\fB]) ;\fR" 5 +.IX Item "$status = $X->get($key, $value [, $flags]) ;" +Given a key (\f(CW$key\fR) this method reads the value associated with it +from the database. The value read from the database is returned in the +\&\f(CW$value\fR parameter. +.Sp +If the key does not exist the method returns 1. +.Sp +No flags are currently defined for this method. +.ie n .IP "\fB\fB$status\fB = \f(BI$X\fB\->put($key, \f(CB$value\fB [, \f(CB$flags\fB]) ;\fR" 5 +.el .IP "\fB\f(CB$status\fB = \f(CB$X\fB\->put($key, \f(CB$value\fB [, \f(CB$flags\fB]) ;\fR" 5 +.IX Item "$status = $X->put($key, $value [, $flags]) ;" +Stores the key/value pair in the database. +.Sp +If you use either the R_IAFTER or R_IBEFORE flags, the \f(CW$key\fR parameter +will have the record number of the inserted key/value pair set. +.Sp +Valid flags are R_CURSOR, R_IAFTER, R_IBEFORE, R_NOOVERWRITE and +R_SETCURSOR. +.ie n .IP "\fB\fB$status\fB = \f(BI$X\fB\->del($key [, \f(CB$flags\fB]) ;\fR" 5 +.el .IP "\fB\f(CB$status\fB = \f(CB$X\fB\->del($key [, \f(CB$flags\fB]) ;\fR" 5 +.IX Item "$status = $X->del($key [, $flags]) ;" +Removes all key/value pairs with key \f(CW$key\fR from the database. +.Sp +A return code of 1 means that the requested key was not in the +database. +.Sp +R_CURSOR is the only valid flag at present. +.ie n .IP "\fB\fB$status\fB = \f(BI$X\fB\->fd ;\fR" 5 +.el .IP "\fB\f(CB$status\fB = \f(CB$X\fB\->fd ;\fR" 5 +.IX Item "$status = $X->fd ;" +Returns the file descriptor for the underlying database. +.Sp +See \*(L"Locking: The Trouble with fd\*(R" for an explanation for why you should +not use \f(CW\*(C`fd\*(C'\fR to lock your database. +.ie n .IP "\fB\fB$status\fB = \f(BI$X\fB\->seq($key, \f(CB$value\fB, \f(CB$flags\fB) ;\fR" 5 +.el .IP "\fB\f(CB$status\fB = \f(CB$X\fB\->seq($key, \f(CB$value\fB, \f(CB$flags\fB) ;\fR" 5 +.IX Item "$status = $X->seq($key, $value, $flags) ;" +This interface allows sequential retrieval from the database. See +dbopen for full details. +.Sp +Both the \f(CW$key\fR and \f(CW$value\fR parameters will be set to the key/value +pair read from the database. +.Sp +The flags parameter is mandatory. The valid flag values are R_CURSOR, +R_FIRST, R_LAST, R_NEXT and R_PREV. +.ie n .IP "\fB\fB$status\fB = \f(BI$X\fB\->sync([$flags]) ;\fR" 5 +.el .IP "\fB\f(CB$status\fB = \f(CB$X\fB\->sync([$flags]) ;\fR" 5 +.IX Item "$status = $X->sync([$flags]) ;" +Flushes any cached buffers to disk. +.Sp +R_RECNOSYNC is the only valid flag at present. +.SH "DBM FILTERS" +.IX Header "DBM FILTERS" +A \s-1DBM\s0 Filter is a piece of code that is be used when you \fIalways\fR +want to make the same transformation to all keys and/or values in a +\&\s-1DBM\s0 database. +.PP +There are four methods associated with \s-1DBM\s0 Filters. All work identically, +and each is used to install (or uninstall) a single \s-1DBM\s0 Filter. Each +expects a single parameter, namely a reference to a sub. The only +difference between them is the place that the filter is installed. +.PP +To summarise: +.IP "\fBfilter_store_key\fR" 5 +.IX Item "filter_store_key" +If a filter has been installed with this method, it will be invoked +every time you write a key to a \s-1DBM\s0 database. +.IP "\fBfilter_store_value\fR" 5 +.IX Item "filter_store_value" +If a filter has been installed with this method, it will be invoked +every time you write a value to a \s-1DBM\s0 database. +.IP "\fBfilter_fetch_key\fR" 5 +.IX Item "filter_fetch_key" +If a filter has been installed with this method, it will be invoked +every time you read a key from a \s-1DBM\s0 database. +.IP "\fBfilter_fetch_value\fR" 5 +.IX Item "filter_fetch_value" +If a filter has been installed with this method, it will be invoked +every time you read a value from a \s-1DBM\s0 database. +.PP +You can use any combination of the methods, from none, to all four. +.PP +All filter methods return the existing filter, if present, or \f(CW\*(C`undef\*(C'\fR +in not. +.PP +To delete a filter pass \f(CW\*(C`undef\*(C'\fR to it. +.SS "The Filter" +.IX Subsection "The Filter" +When each filter is called by Perl, a local copy of \f(CW$_\fR will contain +the key or value to be filtered. Filtering is achieved by modifying +the contents of \f(CW$_\fR. The return code from the filter is ignored. +.SS "An Example \*(-- the \s-1NULL\s0 termination problem." +.IX Subsection "An Example the NULL termination problem." +Consider the following scenario. You have a \s-1DBM\s0 database +that you need to share with a third-party C application. The C application +assumes that \fIall\fR keys and values are \s-1NULL\s0 terminated. Unfortunately +when Perl writes to \s-1DBM\s0 databases it doesn't use \s-1NULL\s0 termination, so +your Perl application will have to manage \s-1NULL\s0 termination itself. When +you write to the database you will have to use something like this: +.PP +.Vb 1 +\& $hash{"$key\e0"} = "$value\e0" ; +.Ve +.PP +Similarly the \s-1NULL\s0 needs to be taken into account when you are considering +the length of existing keys/values. +.PP +It would be much better if you could ignore the \s-1NULL\s0 terminations issue +in the main application code and have a mechanism that automatically +added the terminating \s-1NULL\s0 to all keys and values whenever you write to +the database and have them removed when you read from the database. As I'm +sure you have already guessed, this is a problem that \s-1DBM\s0 Filters can +fix very easily. +.PP +.Vb 3 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& +\& my %hash ; +\& my $filename = "filt" ; +\& unlink $filename ; +\& +\& my $db = tie %hash, \*(AqDB_File\*(Aq, $filename, O_CREAT|O_RDWR, 0666, $DB_HASH +\& or die "Cannot open $filename: $!\en" ; +\& +\& # Install DBM Filters +\& $db\->filter_fetch_key ( sub { s/\e0$// } ) ; +\& $db\->filter_store_key ( sub { $_ .= "\e0" } ) ; +\& $db\->filter_fetch_value( sub { s/\e0$// } ) ; +\& $db\->filter_store_value( sub { $_ .= "\e0" } ) ; +\& +\& $hash{"abc"} = "def" ; +\& my $a = $hash{"ABC"} ; +\& # ... +\& undef $db ; +\& untie %hash ; +.Ve +.PP +Hopefully the contents of each of the filters should be +self-explanatory. Both \*(L"fetch\*(R" filters remove the terminating \s-1NULL,\s0 +and both \*(L"store\*(R" filters add a terminating \s-1NULL.\s0 +.SS "Another Example \*(-- Key is a C int." +.IX Subsection "Another Example Key is a C int." +Here is another real-life example. By default, whenever Perl writes to +a \s-1DBM\s0 database it always writes the key and value as strings. So when +you use this: +.PP +.Vb 1 +\& $hash{12345} = "something" ; +.Ve +.PP +the key 12345 will get stored in the \s-1DBM\s0 database as the 5 byte string +\&\*(L"12345\*(R". If you actually want the key to be stored in the \s-1DBM\s0 database +as a C int, you will have to use \f(CW\*(C`pack\*(C'\fR when writing, and \f(CW\*(C`unpack\*(C'\fR +when reading. +.PP +Here is a \s-1DBM\s0 Filter that does it: +.PP +.Vb 6 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& my %hash ; +\& my $filename = "filt" ; +\& unlink $filename ; +\& +\& +\& my $db = tie %hash, \*(AqDB_File\*(Aq, $filename, O_CREAT|O_RDWR, 0666, $DB_HASH +\& or die "Cannot open $filename: $!\en" ; +\& +\& $db\->filter_fetch_key ( sub { $_ = unpack("i", $_) } ) ; +\& $db\->filter_store_key ( sub { $_ = pack ("i", $_) } ) ; +\& $hash{123} = "def" ; +\& # ... +\& undef $db ; +\& untie %hash ; +.Ve +.PP +This time only two filters have been used \*(-- we only need to manipulate +the contents of the key, so it wasn't necessary to install any value +filters. +.SH "HINTS AND TIPS" +.IX Header "HINTS AND TIPS" +.SS "Locking: The Trouble with fd" +.IX Subsection "Locking: The Trouble with fd" +Until version 1.72 of this module, the recommended technique for locking +\&\fBDB_File\fR databases was to flock the filehandle returned from the \*(L"fd\*(R" +function. Unfortunately this technique has been shown to be fundamentally +flawed (Kudos to David Harris for tracking this down). Use it at your own +peril! +.PP +The locking technique went like this. +.PP +.Vb 12 +\& $db = tie(%db, \*(AqDB_File\*(Aq, \*(Aqfoo.db\*(Aq, O_CREAT|O_RDWR, 0644) +\& || die "dbcreat foo.db $!"; +\& $fd = $db\->fd; +\& open(DB_FH, "+<&=$fd") || die "dup $!"; +\& flock (DB_FH, LOCK_EX) || die "flock: $!"; +\& ... +\& $db{"Tom"} = "Jerry" ; +\& ... +\& flock(DB_FH, LOCK_UN); +\& undef $db; +\& untie %db; +\& close(DB_FH); +.Ve +.PP +In simple terms, this is what happens: +.IP "1." 5 +Use \*(L"tie\*(R" to open the database. +.IP "2." 5 +Lock the database with fd & flock. +.IP "3." 5 +Read & Write to the database. +.IP "4." 5 +Unlock and close the database. +.PP +Here is the crux of the problem. A side-effect of opening the \fBDB_File\fR +database in step 2 is that an initial block from the database will get +read from disk and cached in memory. +.PP +To see why this is a problem, consider what can happen when two processes, +say \*(L"A\*(R" and \*(L"B\*(R", both want to update the same \fBDB_File\fR database +using the locking steps outlined above. Assume process \*(L"A\*(R" has already +opened the database and has a write lock, but it hasn't actually updated +the database yet (it has finished step 2, but not started step 3 yet). Now +process \*(L"B\*(R" tries to open the same database \- step 1 will succeed, +but it will block on step 2 until process \*(L"A\*(R" releases the lock. The +important thing to notice here is that at this point in time both +processes will have cached identical initial blocks from the database. +.PP +Now process \*(L"A\*(R" updates the database and happens to change some of the +data held in the initial buffer. Process \*(L"A\*(R" terminates, flushing +all cached data to disk and releasing the database lock. At this point +the database on disk will correctly reflect the changes made by process +\&\*(L"A\*(R". +.PP +With the lock released, process \*(L"B\*(R" can now continue. It also updates the +database and unfortunately it too modifies the data that was in its +initial buffer. Once that data gets flushed to disk it will overwrite +some/all of the changes process \*(L"A\*(R" made to the database. +.PP +The result of this scenario is at best a database that doesn't contain +what you expect. At worst the database will corrupt. +.PP +The above won't happen every time competing process update the same +\&\fBDB_File\fR database, but it does illustrate why the technique should +not be used. +.SS "Safe ways to lock a database" +.IX Subsection "Safe ways to lock a database" +Starting with version 2.x, Berkeley \s-1DB \s0 has internal support for locking. +The companion module to this one, \fBBerkeleyDB\fR, provides an interface +to this locking functionality. If you are serious about locking +Berkeley \s-1DB\s0 databases, I strongly recommend using \fBBerkeleyDB\fR. +.PP +If using \fBBerkeleyDB\fR isn't an option, there are a number of modules +available on \s-1CPAN\s0 that can be used to implement locking. Each one +implements locking differently and has different goals in mind. It is +therefore worth knowing the difference, so that you can pick the right +one for your application. Here are the three locking wrappers: +.IP "\fBTie::DB_Lock\fR" 5 +.IX Item "Tie::DB_Lock" +A \fBDB_File\fR wrapper which creates copies of the database file for +read access, so that you have a kind of a multiversioning concurrent read +system. However, updates are still serial. Use for databases where reads +may be lengthy and consistency problems may occur. +.IP "\fBTie::DB_LockFile\fR" 5 +.IX Item "Tie::DB_LockFile" +A \fBDB_File\fR wrapper that has the ability to lock and unlock the database +while it is being used. Avoids the tie-before-flock problem by simply +re-tie-ing the database when you get or drop a lock. Because of the +flexibility in dropping and re-acquiring the lock in the middle of a +session, this can be massaged into a system that will work with long +updates and/or reads if the application follows the hints in the \s-1POD\s0 +documentation. +.IP "\fBDB_File::Lock\fR" 5 +.IX Item "DB_File::Lock" +An extremely lightweight \fBDB_File\fR wrapper that simply flocks a lockfile +before tie-ing the database and drops the lock after the untie. Allows +one to use the same lockfile for multiple databases to avoid deadlock +problems, if desired. Use for databases where updates are reads are +quick and simple flock locking semantics are enough. +.SS "Sharing Databases With C Applications" +.IX Subsection "Sharing Databases With C Applications" +There is no technical reason why a Berkeley \s-1DB\s0 database cannot be +shared by both a Perl and a C application. +.PP +The vast majority of problems that are reported in this area boil down +to the fact that C strings are \s-1NULL\s0 terminated, whilst Perl strings are +not. See \*(L"\s-1DBM FILTERS\*(R"\s0 for a generic way to work around this problem. +.PP +Here is a real example. Netscape 2.0 keeps a record of the locations you +visit along with the time you last visited them in a \s-1DB_HASH\s0 database. +This is usually stored in the file \fI~/.netscape/history.db\fR. The key +field in the database is the location string and the value field is the +time the location was last visited stored as a 4 byte binary value. +.PP +If you haven't already guessed, the location string is stored with a +terminating \s-1NULL.\s0 This means you need to be careful when accessing the +database. +.PP +Here is a snippet of code that is loosely based on Tom Christiansen's +\&\fIggh\fR script (available from your nearest \s-1CPAN\s0 archive in +\&\fIauthors/id/TOMC/scripts/nshist.gz\fR). +.PP +.Vb 4 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& use Fcntl ; +\& +\& my ($dotdir, $HISTORY, %hist_db, $href, $binary_time, $date) ; +\& $dotdir = $ENV{HOME} || $ENV{LOGNAME}; +\& +\& $HISTORY = "$dotdir/.netscape/history.db"; +\& +\& tie %hist_db, \*(AqDB_File\*(Aq, $HISTORY +\& or die "Cannot open $HISTORY: $!\en" ;; +\& +\& # Dump the complete database +\& while ( ($href, $binary_time) = each %hist_db ) { +\& +\& # remove the terminating NULL +\& $href =~ s/\ex00$// ; +\& +\& # convert the binary time into a user friendly string +\& $date = localtime unpack("V", $binary_time); +\& print "$date $href\en" ; +\& } +\& +\& # check for the existence of a specific key +\& # remember to add the NULL +\& if ( $binary_time = $hist_db{"http://mox.perl.com/\ex00"} ) { +\& $date = localtime unpack("V", $binary_time) ; +\& print "Last visited mox.perl.com on $date\en" ; +\& } +\& else { +\& print "Never visited mox.perl.com\en" +\& } +\& +\& untie %hist_db ; +.Ve +.SS "The \fIuntie()\fP Gotcha" +.IX Subsection "The untie() Gotcha" +If you make use of the Berkeley \s-1DB API,\s0 it is \fIvery\fR strongly +recommended that you read \*(L"The untie Gotcha\*(R" in perltie. +.PP +Even if you don't currently make use of the \s-1API\s0 interface, it is still +worth reading it. +.PP +Here is an example which illustrates the problem from a \fBDB_File\fR +perspective: +.PP +.Vb 2 +\& use DB_File ; +\& use Fcntl ; +\& +\& my %x ; +\& my $X ; +\& +\& $X = tie %x, \*(AqDB_File\*(Aq, \*(Aqtst.fil\*(Aq , O_RDWR|O_TRUNC +\& or die "Cannot tie first time: $!" ; +\& +\& $x{123} = 456 ; +\& +\& untie %x ; +\& +\& tie %x, \*(AqDB_File\*(Aq, \*(Aqtst.fil\*(Aq , O_RDWR|O_CREAT +\& or die "Cannot tie second time: $!" ; +\& +\& untie %x ; +.Ve +.PP +When run, the script will produce this error message: +.PP +.Vb 1 +\& Cannot tie second time: Invalid argument at bad.file line 14. +.Ve +.PP +Although the error message above refers to the second \fItie()\fR statement +in the script, the source of the problem is really with the \fIuntie()\fR +statement that precedes it. +.PP +Having read perltie you will probably have already guessed that the +error is caused by the extra copy of the tied object stored in \f(CW$X\fR. +If you haven't, then the problem boils down to the fact that the +\&\fBDB_File\fR destructor, \s-1DESTROY,\s0 will not be called until \fIall\fR +references to the tied object are destroyed. Both the tied variable, +\&\f(CW%x\fR, and \f(CW$X\fR above hold a reference to the object. The call to +\&\fIuntie()\fR will destroy the first, but \f(CW$X\fR still holds a valid +reference, so the destructor will not get called and the database file +\&\fItst.fil\fR will remain open. The fact that Berkeley \s-1DB\s0 then reports the +attempt to open a database that is already open via the catch-all +\&\*(L"Invalid argument\*(R" doesn't help. +.PP +If you run the script with the \f(CW\*(C`\-w\*(C'\fR flag the error message becomes: +.PP +.Vb 2 +\& untie attempted while 1 inner references still exist at bad.file line 12. +\& Cannot tie second time: Invalid argument at bad.file line 14. +.Ve +.PP +which pinpoints the real problem. Finally the script can now be +modified to fix the original problem by destroying the \s-1API\s0 object +before the untie: +.PP +.Vb 2 +\& ... +\& $x{123} = 456 ; +\& +\& undef $X ; +\& untie %x ; +\& +\& $X = tie %x, \*(AqDB_File\*(Aq, \*(Aqtst.fil\*(Aq , O_RDWR|O_CREAT +\& ... +.Ve +.SH "COMMON QUESTIONS" +.IX Header "COMMON QUESTIONS" +.SS "Why is there Perl source in my database?" +.IX Subsection "Why is there Perl source in my database?" +If you look at the contents of a database file created by DB_File, +there can sometimes be part of a Perl script included in it. +.PP +This happens because Berkeley \s-1DB\s0 uses dynamic memory to allocate +buffers which will subsequently be written to the database file. Being +dynamic, the memory could have been used for anything before \s-1DB\s0 +malloced it. As Berkeley \s-1DB\s0 doesn't clear the memory once it has been +allocated, the unused portions will contain random junk. In the case +where a Perl script gets written to the database, the random junk will +correspond to an area of dynamic memory that happened to be used during +the compilation of the script. +.PP +Unless you don't like the possibility of there being part of your Perl +scripts embedded in a database file, this is nothing to worry about. +.SS "How do I store complex data structures with DB_File?" +.IX Subsection "How do I store complex data structures with DB_File?" +Although \fBDB_File\fR cannot do this directly, there is a module which +can layer transparently over \fBDB_File\fR to accomplish this feat. +.PP +Check out the \s-1MLDBM\s0 module, available on \s-1CPAN\s0 in the directory +\&\fImodules/by\-module/MLDBM\fR. +.ie n .SS "What does ""Invalid Argument"" mean?" +.el .SS "What does ``Invalid Argument'' mean?" +.IX Subsection "What does Invalid Argument mean?" +You will get this error message when one of the parameters in the +\&\f(CW\*(C`tie\*(C'\fR call is wrong. Unfortunately there are quite a few parameters to +get wrong, so it can be difficult to figure out which one it is. +.PP +Here are a couple of possibilities: +.IP "1." 5 +Attempting to reopen a database without closing it. +.IP "2." 5 +Using the O_WRONLY flag. +.ie n .SS "What does ""Bareword 'DB_File' not allowed"" mean?" +.el .SS "What does ``Bareword 'DB_File' not allowed'' mean?" +.IX Subsection "What does Bareword 'DB_File' not allowed mean?" +You will encounter this particular error message when you have the +\&\f(CW\*(C`strict \*(Aqsubs\*(Aq\*(C'\fR pragma (or the full strict pragma) in your script. +Consider this script: +.PP +.Vb 5 +\& use warnings ; +\& use strict ; +\& use DB_File ; +\& my %x ; +\& tie %x, DB_File, "filename" ; +.Ve +.PP +Running it produces the error in question: +.PP +.Vb 1 +\& Bareword "DB_File" not allowed while "strict subs" in use +.Ve +.PP +To get around the error, place the word \f(CW\*(C`DB_File\*(C'\fR in either single or +double quotes, like this: +.PP +.Vb 1 +\& tie %x, "DB_File", "filename" ; +.Ve +.PP +Although it might seem like a real pain, it is really worth the effort +of having a \f(CW\*(C`use strict\*(C'\fR in all your scripts. +.SH "REFERENCES" +.IX Header "REFERENCES" +Articles that are either about \fBDB_File\fR or make use of it. +.IP "1." 5 +\&\fIFull-Text Searching in Perl\fR, Tim Kientzle (tkientzle@ddj.com), +Dr. Dobb's Journal, Issue 295, January 1999, pp 34\-41 +.SH "HISTORY" +.IX Header "HISTORY" +Moved to the Changes file. +.SH "BUGS" +.IX Header "BUGS" +Some older versions of Berkeley \s-1DB\s0 had problems with fixed length +records using the \s-1RECNO\s0 file format. This problem has been fixed since +version 1.85 of Berkeley \s-1DB.\s0 +.PP +I am sure there are bugs in the code. If you do find any, or can +suggest any enhancements, I would welcome your comments. +.SH "AVAILABILITY" +.IX Header "AVAILABILITY" +\&\fBDB_File\fR comes with the standard Perl source distribution. Look in +the directory \fIext/DB_File\fR. Given the amount of time between releases +of Perl the version that ships with Perl is quite likely to be out of +date, so the most recent version can always be found on \s-1CPAN \s0(see +\&\*(L"\s-1CPAN\*(R"\s0 in perlmodlib for details), in the directory +\&\fImodules/by\-module/DB_File\fR. +.PP +This version of \fBDB_File\fR will work with either version 1.x, 2.x or +3.x of Berkeley \s-1DB,\s0 but is limited to the functionality provided by +version 1. +.PP +The official web site for Berkeley \s-1DB\s0 is \fIhttp://www.oracle.com/technology/products/berkeley\-db/db/index.html\fR. +All versions of Berkeley \s-1DB\s0 are available there. +.PP +Alternatively, Berkeley \s-1DB\s0 version 1 is available at your nearest \s-1CPAN\s0 +archive in \fIsrc/misc/db.1.85.tar.gz\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1995\-2012 Paul Marquess. All rights reserved. This program +is free software; you can redistribute it and/or modify it under the +same terms as Perl itself. +.PP +Although \fBDB_File\fR is covered by the Perl license, the library it +makes use of, namely Berkeley \s-1DB,\s0 is not. Berkeley \s-1DB\s0 has its own +copyright and its own license. Please take the time to read it. +.PP +Here are a few words taken from the Berkeley \s-1DB FAQ \s0(at +\&\fIhttp://www.oracle.com/technology/products/berkeley\-db/db/index.html\fR) regarding the license: +.PP +.Vb 1 +\& Do I have to license DB to use it in Perl scripts? +\& +\& No. The Berkeley DB license requires that software that uses +\& Berkeley DB be freely redistributable. In the case of Perl, that +\& software is Perl, and not your scripts. Any Perl scripts that you +\& write are your property, including scripts that make use of +\& Berkeley DB. Neither the Perl license nor the Berkeley DB license +\& place any restriction on what you may do with them. +.Ve +.PP +If you are in any doubt about the license situation, contact either the +Berkeley \s-1DB\s0 authors or the author of DB_File. See \*(L"\s-1AUTHOR\*(R"\s0 for details. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +perl, \fIdbopen\fR\|(3), \fIhash\fR\|(3), \fIrecno\fR\|(3), \fIbtree\fR\|(3), +perldbmfilter +.SH "AUTHOR" +.IX Header "AUTHOR" +The DB_File interface was written by Paul Marquess +. diff --git a/fastSum/resources/ROUGE/DB_File-1.835/blib/script/.exists b/fastSum/resources/ROUGE/DB_File-1.835/blib/script/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/DB_File-1.835/config.in b/fastSum/resources/ROUGE/DB_File-1.835/config.in new file mode 100644 index 0000000000000000000000000000000000000000..292b09a5fb3c197aea2478382ca2d4ab92fadf71 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/config.in @@ -0,0 +1,97 @@ +# Filename: config.in +# +# written by Paul Marquess +# last modified 9th Sept 1997 +# version 1.55 + +# 1. Where is the file db.h? +# +# Change the path below to point to the directory where db.h is +# installed on your system. + +INCLUDE = /usr/local/BerkeleyDB/include +#INCLUDE = /usr/local/include +#INCLUDE = /usr/include + +# 2. Where is libdb? +# +# Change the path below to point to the directory where libdb is +# installed on your system. + +LIB = /usr/local/BerkeleyDB/lib +#LIB = /usr/local/lib +#LIB = /usr/lib + +# 3. What version of Berkely DB have you got? +# +# If you have version 2.0 or greater, you can skip this question. +# +# If you have Berkeley DB 1.78 or greater you shouldn't have to +# change the definitions for PREFIX and HASH below. +# +# For older versions of Berkeley DB change both PREFIX and HASH to int. +# Version 1.71, 1.72 and 1.73 are known to need this change. +# +# If you don't know what version you have have a look in the file db.h. +# +# Search for the string "DB_VERSION_MAJOR". If it is present, you +# have Berkeley DB version 2 (or greater). +# +# If that didn't work, find the definition of the BTREEINFO typedef. +# Check the return type from the prefix element. It should look like +# this in an older copy of db.h: +# +# int (*prefix) __P((const DBT *, const DBT *)); +# +# and like this in a more recent copy: +# +# size_t (*prefix) /* prefix function */ +# __P((const DBT *, const DBT *)); +# +# Change the definition of PREFIX, below, to reflect the return type +# of the prefix function in your db.h. +# +# Now find the definition of the HASHINFO typedef. Check the return +# type of the hash element. Older versions look like this: +# +# int (*hash) __P((const void *, size_t)); +# +# newer like this: +# +# u_int32_t /* hash function */ +# (*hash) __P((const void *, size_t)); +# +# Change the definition of HASH, below, to reflect the return type of +# the hash function in your db.h. +# + +PREFIX = size_t +HASH = u_int32_t + +# 4. Is the library called libdb? +# +# If you have copies of both 1.x and 2.x Berkeley DB installed on +# your system it can sometimes be tricky to make sure you are using +# the correct one. Renaming one (or creating a symbolic link) to +# include the version number of the library can help. +# +# For example, if you have both Berkeley DB 2.3.12 and 1.85 on your +# system and you want to use the Berkeley DB version 2 library you +# could rename the version 2 library from libdb.a to libdb-2.3.12.a and +# change the DBNAME line below to look like this: +# +# DBNAME = -ldb-2.3.12 +# +# That will ensure you are linking the correct version of the DB +# library. +# +# Note: If you are building this module with Win32, -llibdb will be +# used by default. +# +# If you have changed the name of the library, uncomment the line +# below (by removing the leading #) and edit the line to use the name +# you have picked. + +#DBNAME = -ldb-2.4.10 + +# end of file config.in diff --git a/fastSum/resources/ROUGE/DB_File-1.835/constants.h b/fastSum/resources/ROUGE/DB_File-1.835/constants.h new file mode 100644 index 0000000000000000000000000000000000000000..b4dda9308e51093d70e4702619b917a67134f8ec --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/constants.h @@ -0,0 +1,455 @@ +#define PERL_constant_NOTFOUND 1 +#define PERL_constant_NOTDEF 2 +#define PERL_constant_ISIV 3 +#define PERL_constant_ISNO 4 +#define PERL_constant_ISNV 5 +#define PERL_constant_ISPV 6 +#define PERL_constant_ISPVN 7 +#define PERL_constant_ISSV 8 +#define PERL_constant_ISUNDEF 9 +#define PERL_constant_ISUV 10 +#define PERL_constant_ISYES 11 + +#ifndef NVTYPE +typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it. */ +#endif +#ifndef aTHX_ +#define aTHX_ /* 5.6 or later define this for threading support. */ +#endif +#ifndef pTHX_ +#define pTHX_ /* 5.6 or later define this for threading support. */ +#endif + +static int +constant_6 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + DB_TXN R_LAST R_NEXT R_PREV */ + /* Offset 2 gives the best switch position. */ + switch (name[2]) { + case 'L': + if (memEQ(name, "R_LAST", 6)) { + /* ^ */ +#ifdef R_LAST + *iv_return = R_LAST; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'N': + if (memEQ(name, "R_NEXT", 6)) { + /* ^ */ +#ifdef R_NEXT + *iv_return = R_NEXT; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'P': + if (memEQ(name, "R_PREV", 6)) { + /* ^ */ +#ifdef R_PREV + *iv_return = R_PREV; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case '_': + if (memEQ(name, "DB_TXN", 6)) { + /* ^ */ +#ifdef DB_TXN + *iv_return = DB_TXN; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant_7 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + DB_LOCK R_FIRST R_NOKEY */ + /* Offset 3 gives the best switch position. */ + switch (name[3]) { + case 'I': + if (memEQ(name, "R_FIRST", 7)) { + /* ^ */ +#ifdef R_FIRST + *iv_return = R_FIRST; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'L': + if (memEQ(name, "DB_LOCK", 7)) { + /* ^ */ +#ifdef DB_LOCK + *iv_return = DB_LOCK; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'O': + if (memEQ(name, "R_NOKEY", 7)) { + /* ^ */ +#ifdef R_NOKEY + *iv_return = R_NOKEY; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant_8 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + DB_SHMEM R_CURSOR R_IAFTER */ + /* Offset 5 gives the best switch position. */ + switch (name[5]) { + case 'M': + if (memEQ(name, "DB_SHMEM", 8)) { + /* ^ */ +#ifdef DB_SHMEM + *iv_return = DB_SHMEM; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'S': + if (memEQ(name, "R_CURSOR", 8)) { + /* ^ */ +#ifdef R_CURSOR + *iv_return = R_CURSOR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'T': + if (memEQ(name, "R_IAFTER", 8)) { + /* ^ */ +#ifdef R_IAFTER + *iv_return = R_IAFTER; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant_9 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + HASHMAGIC RET_ERROR R_IBEFORE */ + /* Offset 7 gives the best switch position. */ + switch (name[7]) { + case 'I': + if (memEQ(name, "HASHMAGIC", 9)) { + /* ^ */ +#ifdef HASHMAGIC + *iv_return = HASHMAGIC; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'O': + if (memEQ(name, "RET_ERROR", 9)) { + /* ^ */ +#ifdef RET_ERROR + *iv_return = RET_ERROR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'R': + if (memEQ(name, "R_IBEFORE", 9)) { + /* ^ */ +#ifdef R_IBEFORE + *iv_return = R_IBEFORE; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant_10 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + BTREEMAGIC R_FIXEDLEN R_SNAPSHOT __R_UNUSED */ + /* Offset 5 gives the best switch position. */ + switch (name[5]) { + case 'E': + if (memEQ(name, "R_FIXEDLEN", 10)) { + /* ^ */ +#ifdef R_FIXEDLEN + *iv_return = R_FIXEDLEN; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'M': + if (memEQ(name, "BTREEMAGIC", 10)) { + /* ^ */ +#ifdef BTREEMAGIC + *iv_return = BTREEMAGIC; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'N': + if (memEQ(name, "__R_UNUSED", 10)) { + /* ^ */ +#ifdef __R_UNUSED + *iv_return = __R_UNUSED; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'P': + if (memEQ(name, "R_SNAPSHOT", 10)) { + /* ^ */ +#ifdef R_SNAPSHOT + *iv_return = R_SNAPSHOT; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant_11 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + HASHVERSION RET_SPECIAL RET_SUCCESS R_RECNOSYNC R_SETCURSOR */ + /* Offset 10 gives the best switch position. */ + switch (name[10]) { + case 'C': + if (memEQ(name, "R_RECNOSYN", 10)) { + /* C */ +#ifdef R_RECNOSYNC + *iv_return = R_RECNOSYNC; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'L': + if (memEQ(name, "RET_SPECIA", 10)) { + /* L */ +#ifdef RET_SPECIAL + *iv_return = RET_SPECIAL; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'N': + if (memEQ(name, "HASHVERSIO", 10)) { + /* N */ +#ifdef HASHVERSION + *iv_return = HASHVERSION; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'R': + if (memEQ(name, "R_SETCURSO", 10)) { + /* R */ +#ifdef R_SETCURSOR + *iv_return = R_SETCURSOR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'S': + if (memEQ(name, "RET_SUCCES", 10)) { + /* S */ +#ifdef RET_SUCCESS + *iv_return = RET_SUCCESS; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant (pTHX_ const char *name, STRLEN len, IV *iv_return) { + /* Initially switch on the length of the name. */ + /* When generated this function returned values for the list of names given + in this section of perl code. Rather than manually editing these functions + to add or remove constants, which would result in this comment and section + of code becoming inaccurate, we recommend that you edit this section of + code, and use it to regenerate a new set of constant functions which you + then use to replace the originals. + + Regenerate these constant functions by feeding this entire source file to + perl -x + +#!/usr/bin/perl -w +use ExtUtils::Constant qw (constant_types C_constant XS_constant); + +my $types = {map {($_, 1)} qw(IV)}; +my @names = (qw(BTREEMAGIC BTREEVERSION DB_LOCK DB_SHMEM DB_TXN HASHMAGIC + HASHVERSION MAX_PAGE_NUMBER MAX_PAGE_OFFSET MAX_REC_NUMBER + RET_ERROR RET_SPECIAL RET_SUCCESS R_CURSOR R_DUP R_FIRST + R_FIXEDLEN R_IAFTER R_IBEFORE R_LAST R_NEXT R_NOKEY + R_NOOVERWRITE R_PREV R_RECNOSYNC R_SETCURSOR R_SNAPSHOT + __R_UNUSED)); + +print constant_types(), "\n"; # macro defs +foreach (C_constant ("DB_File", 'constant', 'IV', $types, undef, 3, @names) ) { + print $_, "\n"; # C constant subs +} +print "\n#### XS Section:\n"; +print XS_constant ("DB_File", $types); +__END__ + */ + + switch (len) { + case 5: + if (memEQ(name, "R_DUP", 5)) { +#ifdef R_DUP + *iv_return = R_DUP; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 6: + return constant_6 (aTHX_ name, iv_return); + break; + case 7: + return constant_7 (aTHX_ name, iv_return); + break; + case 8: + return constant_8 (aTHX_ name, iv_return); + break; + case 9: + return constant_9 (aTHX_ name, iv_return); + break; + case 10: + return constant_10 (aTHX_ name, iv_return); + break; + case 11: + return constant_11 (aTHX_ name, iv_return); + break; + case 12: + if (memEQ(name, "BTREEVERSION", 12)) { +#ifdef BTREEVERSION + *iv_return = BTREEVERSION; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 13: + if (memEQ(name, "R_NOOVERWRITE", 13)) { +#ifdef R_NOOVERWRITE + *iv_return = R_NOOVERWRITE; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 14: + if (memEQ(name, "MAX_REC_NUMBER", 14)) { +#ifdef MAX_REC_NUMBER + *iv_return = MAX_REC_NUMBER; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 15: + /* Names all of length 15. */ + /* MAX_PAGE_NUMBER MAX_PAGE_OFFSET */ + /* Offset 9 gives the best switch position. */ + switch (name[9]) { + case 'N': + if (memEQ(name, "MAX_PAGE_NUMBER", 15)) { + /* ^ */ +#ifdef MAX_PAGE_NUMBER + *iv_return = MAX_PAGE_NUMBER; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'O': + if (memEQ(name, "MAX_PAGE_OFFSET", 15)) { + /* ^ */ +#ifdef MAX_PAGE_OFFSET + *iv_return = MAX_PAGE_OFFSET; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + break; + } + return PERL_constant_NOTFOUND; +} + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/constants.xs b/fastSum/resources/ROUGE/DB_File-1.835/constants.xs new file mode 100644 index 0000000000000000000000000000000000000000..779aa23ed9b3dd09faf339723b65c4df2f462488 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/constants.xs @@ -0,0 +1,90 @@ +void +constant(sv) + PREINIT: +#ifdef dXSTARG + dXSTARG; /* Faster if we have it. */ +#else + dTARGET; +#endif + STRLEN len; + int type; + IV iv; + /* NV nv; Uncomment this if you need to return NVs */ + /* const char *pv; Uncomment this if you need to return PVs */ + INPUT: + SV * sv; + const char * s = SvPV(sv, len); + PPCODE: + /* Change this to constant(aTHX_ s, len, &iv, &nv); + if you need to return both NVs and IVs */ + type = constant(aTHX_ s, len, &iv); + /* Return 1 or 2 items. First is error message, or undef if no error. + Second, if present, is found value */ + switch (type) { + case PERL_constant_NOTFOUND: + sv = + sv_2mortal(newSVpvf("%s is not a valid DB_File macro", s)); + PUSHs(sv); + break; + case PERL_constant_NOTDEF: + sv = sv_2mortal(newSVpvf( + "Your vendor has not defined DB_File macro %s, used", + s)); + PUSHs(sv); + break; + case PERL_constant_ISIV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHi(iv); + break; + /* Uncomment this if you need to return NOs + case PERL_constant_ISNO: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(&PL_sv_no); + break; */ + /* Uncomment this if you need to return NVs + case PERL_constant_ISNV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHn(nv); + break; */ + /* Uncomment this if you need to return PVs + case PERL_constant_ISPV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHp(pv, strlen(pv)); + break; */ + /* Uncomment this if you need to return PVNs + case PERL_constant_ISPVN: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHp(pv, iv); + break; */ + /* Uncomment this if you need to return SVs + case PERL_constant_ISSV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(sv); + break; */ + /* Uncomment this if you need to return UNDEFs + case PERL_constant_ISUNDEF: + break; */ + /* Uncomment this if you need to return UVs + case PERL_constant_ISUV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHu((UV)iv); + break; */ + /* Uncomment this if you need to return YESs + case PERL_constant_ISYES: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(&PL_sv_yes); + break; */ + default: + sv = sv_2mortal(newSVpvf( + "Unexpected return type %d while processing DB_File macro %s, used", + type, s)); + PUSHs(sv); + } diff --git a/fastSum/resources/ROUGE/DB_File-1.835/dbinfo b/fastSum/resources/ROUGE/DB_File-1.835/dbinfo new file mode 100644 index 0000000000000000000000000000000000000000..e8abc974b3b217b2546cf5b90e60bb7bfdc82abd --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/dbinfo @@ -0,0 +1,133 @@ +#!/usr/local/bin/perl + +# Name: dbinfo -- identify berkeley DB version used to create +# a database file +# +# Author: Paul Marquess +# Version: 1.06 +# Date 27th March 2008 +# +# Copyright (c) 1998-2012 Paul Marquess. All rights reserved. +# This program is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. + +# Todo: Print more stats on a db file, e.g. no of records +# add log/txn/lock files + +use strict ; + +my %Data = + ( + 0x053162 => # DB_BTREEMAGIC + { + Type => "Btree", + Versions => # DB_BTREEVERSION + { + 1 => [0, "Unknown (older than 1.71)"], + 2 => [0, "Unknown (older than 1.71)"], + 3 => [0, "1.71 -> 1.85, 1.86"], + 4 => [0, "Unknown"], + 5 => [0, "2.0.0 -> 2.3.0"], + 6 => [0, "2.3.1 -> 2.7.7"], + 7 => [0, "3.0.x"], + 8 => [0, "3.1.x -> 4.0.x"], + 9 => [1, "4.1.x or greater"], + } + }, + 0x061561 => # DB_HASHMAGIC + { + Type => "Hash", + Versions => # DB_HASHVERSION + { + 1 => [0, "Unknown (older than 1.71)"], + 2 => [0, "1.71 -> 1.85"], + 3 => [0, "1.86"], + 4 => [0, "2.0.0 -> 2.1.0"], + 5 => [0, "2.2.6 -> 2.7.7"], + 6 => [0, "3.0.x"], + 7 => [0, "3.1.x -> 4.0.x"], + 8 => [1, "4.1.x or greater"], + 9 => [1, "4.6.x or greater"], + } + }, + 0x042253 => # DB_QAMMAGIC + { + Type => "Queue", + Versions => # DB_QAMVERSION + { + 1 => [0, "3.0.x"], + 2 => [0, "3.1.x"], + 3 => [0, "3.2.x -> 4.0.x"], + 4 => [1, "4.1.x or greater"], + } + }, + ) ; + +die "Usage: dbinfo file\n" unless @ARGV == 1 ; + +print "testing file $ARGV[0]...\n\n" ; +open (F, "<$ARGV[0]") or die "Cannot open file $ARGV[0]: $!\n" ; + +my $buff ; +read F, $buff, 30 ; + + +my (@info) = unpack("NNNNNNC", $buff) ; +my (@info1) = unpack("VVVVVVC", $buff) ; +my ($magic, $version, $endian, $encrypt) ; + +if ($Data{$info[0]}) # first try DB 1.x format, big endian +{ + $magic = $info[0] ; + $version = $info[1] ; + $endian = "Big Endian" ; + $encrypt = "Not Supported"; +} +elsif ($Data{$info1[0]}) # first try DB 1.x format, little endian +{ + $magic = $info1[0] ; + $version = $info1[1] ; + $endian = "Little Endian" ; + $encrypt = "Not Supported"; +} +elsif ($Data{$info[3]}) # next DB 2.x big endian +{ + $magic = $info[3] ; + $version = $info[4] ; + $endian = "Big Endian" ; +} +elsif ($Data{$info1[3]}) # next DB 2.x little endian +{ + $magic = $info1[3] ; + $version = $info1[4] ; + $endian = "Little Endian" ; +} +else + { die "not a Berkeley DB database file.\n" } + +my $type = $Data{$magic} ; +$magic = sprintf "%06X", $magic ; + +my $ver_string = "Unknown" ; + +if ( defined $type->{Versions}{$version} ) +{ + $ver_string = $type->{Versions}{$version}[1]; + if ($type->{Versions}{$version}[0] ) + { $encrypt = $info[6] ? "Enabled" : "Disabled" } + else + { $encrypt = "Not Supported" } +} + +print <{Type} file. +File Version ID: $version +Built with Berkeley DB: $ver_string +Byte Order: $endian +Magic: $magic +Encryption: $encrypt +EOM + +close F ; + +exit ; diff --git a/fastSum/resources/ROUGE/DB_File-1.835/fallback.h b/fastSum/resources/ROUGE/DB_File-1.835/fallback.h new file mode 100644 index 0000000000000000000000000000000000000000..0213308a0eebf820528d6f303231f6f38a3e47ad --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/fallback.h @@ -0,0 +1,455 @@ +#define PERL_constant_NOTFOUND 1 +#define PERL_constant_NOTDEF 2 +#define PERL_constant_ISIV 3 +#define PERL_constant_ISNO 4 +#define PERL_constant_ISNV 5 +#define PERL_constant_ISPV 6 +#define PERL_constant_ISPVN 7 +#define PERL_constant_ISSV 8 +#define PERL_constant_ISUNDEF 9 +#define PERL_constant_ISUV 10 +#define PERL_constant_ISYES 11 + +#ifndef NVTYPE +typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it. */ +#endif +#ifndef aTHX_ +#define aTHX_ /* 5.6 or later define this for threading support. */ +#endif +#ifndef pTHX_ +#define pTHX_ /* 5.6 or later define this for threading support. */ +#endif + +static int +constant_6 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + DB_TXN R_LAST R_NEXT R_PREV */ + /* Offset 2 gives the best switch position. */ + switch (name[2]) { + case 'L': + if (memEQ(name, "R_LAST", 6)) { + /* ^ */ +#ifdef R_LAST + *iv_return = R_LAST; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'N': + if (memEQ(name, "R_NEXT", 6)) { + /* ^ */ +#ifdef R_NEXT + *iv_return = R_NEXT; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'P': + if (memEQ(name, "R_PREV", 6)) { + /* ^ */ +#ifdef R_PREV + *iv_return = R_PREV; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case '_': + if (memEQ(name, "DB_TXN", 6)) { + /* ^ */ +#ifdef DB_TXN + *iv_return = DB_TXN; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant_7 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + DB_LOCK R_FIRST R_NOKEY */ + /* Offset 3 gives the best switch position. */ + switch (name[3]) { + case 'I': + if (memEQ(name, "R_FIRST", 7)) { + /* ^ */ +#ifdef R_FIRST + *iv_return = R_FIRST; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'L': + if (memEQ(name, "DB_LOCK", 7)) { + /* ^ */ +#ifdef DB_LOCK + *iv_return = DB_LOCK; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'O': + if (memEQ(name, "R_NOKEY", 7)) { + /* ^ */ +#ifdef R_NOKEY + *iv_return = R_NOKEY; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant_8 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + DB_SHMEM R_CURSOR R_IAFTER */ + /* Offset 5 gives the best switch position. */ + switch (name[5]) { + case 'M': + if (memEQ(name, "DB_SHMEM", 8)) { + /* ^ */ +#ifdef DB_SHMEM + *iv_return = DB_SHMEM; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'S': + if (memEQ(name, "R_CURSOR", 8)) { + /* ^ */ +#ifdef R_CURSOR + *iv_return = R_CURSOR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'T': + if (memEQ(name, "R_IAFTER", 8)) { + /* ^ */ +#ifdef R_IAFTER + *iv_return = R_IAFTER; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant_9 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + HASHMAGIC RET_ERROR R_IBEFORE */ + /* Offset 7 gives the best switch position. */ + switch (name[7]) { + case 'I': + if (memEQ(name, "HASHMAGIC", 9)) { + /* ^ */ +#ifdef HASHMAGIC + *iv_return = HASHMAGIC; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'O': + if (memEQ(name, "RET_ERROR", 9)) { + /* ^ */ +#ifdef RET_ERROR + *iv_return = RET_ERROR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'R': + if (memEQ(name, "R_IBEFORE", 9)) { + /* ^ */ +#ifdef R_IBEFORE + *iv_return = R_IBEFORE; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant_10 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + BTREEMAGIC R_FIXEDLEN R_SNAPSHOT __R_UNUSED */ + /* Offset 5 gives the best switch position. */ + switch (name[5]) { + case 'E': + if (memEQ(name, "R_FIXEDLEN", 10)) { + /* ^ */ +#ifdef R_FIXEDLEN + *iv_return = R_FIXEDLEN; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'M': + if (memEQ(name, "BTREEMAGIC", 10)) { + /* ^ */ +#ifdef BTREEMAGIC + *iv_return = BTREEMAGIC; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'N': + if (memEQ(name, "__R_UNUSED", 10)) { + /* ^ */ +#ifdef __R_UNUSED + *iv_return = __R_UNUSED; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'P': + if (memEQ(name, "R_SNAPSHOT", 10)) { + /* ^ */ +#ifdef R_SNAPSHOT + *iv_return = R_SNAPSHOT; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant_11 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + HASHVERSION RET_SPECIAL RET_SUCCESS R_RECNOSYNC R_SETCURSOR */ + /* Offset 10 gives the best switch position. */ + switch (name[10]) { + case 'C': + if (memEQ(name, "R_RECNOSYNC", 11)) { + /* ^ */ +#ifdef R_RECNOSYNC + *iv_return = R_RECNOSYNC; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'L': + if (memEQ(name, "RET_SPECIAL", 11)) { + /* ^ */ +#ifdef RET_SPECIAL + *iv_return = RET_SPECIAL; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'N': + if (memEQ(name, "HASHVERSION", 11)) { + /* ^ */ +#ifdef HASHVERSION + *iv_return = HASHVERSION; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'R': + if (memEQ(name, "R_SETCURSOR", 11)) { + /* ^ */ +#ifdef R_SETCURSOR + *iv_return = R_SETCURSOR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'S': + if (memEQ(name, "RET_SUCCESS", 11)) { + /* ^ */ +#ifdef RET_SUCCESS + *iv_return = RET_SUCCESS; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant (pTHX_ const char *name, STRLEN len, IV *iv_return) { + /* Initially switch on the length of the name. */ + /* When generated this function returned values for the list of names given + in this section of perl code. Rather than manually editing these functions + to add or remove constants, which would result in this comment and section + of code becoming inaccurate, we recommend that you edit this section of + code, and use it to regenerate a new set of constant functions which you + then use to replace the originals. + + Regenerate these constant functions by feeding this entire source file to + perl -x + +#!bleedperl -w +use ExtUtils::Constant qw (constant_types C_constant XS_constant); + +my $types = {map {($_, 1)} qw(IV)}; +my @names = (qw(BTREEMAGIC BTREEVERSION DB_LOCK DB_SHMEM DB_TXN HASHMAGIC + HASHVERSION MAX_PAGE_NUMBER MAX_PAGE_OFFSET MAX_REC_NUMBER + RET_ERROR RET_SPECIAL RET_SUCCESS R_CURSOR R_DUP R_FIRST + R_FIXEDLEN R_IAFTER R_IBEFORE R_LAST R_NEXT R_NOKEY + R_NOOVERWRITE R_PREV R_RECNOSYNC R_SETCURSOR R_SNAPSHOT + __R_UNUSED)); + +print constant_types(); # macro defs +foreach (C_constant ("DB_File", 'constant', 'IV', $types, undef, 3, @names) ) { + print $_, "\n"; # C constant subs +} +print "#### XS Section:\n"; +print XS_constant ("DB_File", $types); +__END__ + */ + + switch (len) { + case 5: + if (memEQ(name, "R_DUP", 5)) { +#ifdef R_DUP + *iv_return = R_DUP; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 6: + return constant_6 (aTHX_ name, iv_return); + break; + case 7: + return constant_7 (aTHX_ name, iv_return); + break; + case 8: + return constant_8 (aTHX_ name, iv_return); + break; + case 9: + return constant_9 (aTHX_ name, iv_return); + break; + case 10: + return constant_10 (aTHX_ name, iv_return); + break; + case 11: + return constant_11 (aTHX_ name, iv_return); + break; + case 12: + if (memEQ(name, "BTREEVERSION", 12)) { +#ifdef BTREEVERSION + *iv_return = BTREEVERSION; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 13: + if (memEQ(name, "R_NOOVERWRITE", 13)) { +#ifdef R_NOOVERWRITE + *iv_return = R_NOOVERWRITE; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 14: + if (memEQ(name, "MAX_REC_NUMBER", 14)) { +#ifdef MAX_REC_NUMBER + *iv_return = MAX_REC_NUMBER; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 15: + /* Names all of length 15. */ + /* MAX_PAGE_NUMBER MAX_PAGE_OFFSET */ + /* Offset 9 gives the best switch position. */ + switch (name[9]) { + case 'N': + if (memEQ(name, "MAX_PAGE_NUMBER", 15)) { + /* ^ */ +#ifdef MAX_PAGE_NUMBER + *iv_return = MAX_PAGE_NUMBER; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'O': + if (memEQ(name, "MAX_PAGE_OFFSET", 15)) { + /* ^ */ +#ifdef MAX_PAGE_OFFSET + *iv_return = MAX_PAGE_OFFSET; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + break; + } + return PERL_constant_NOTFOUND; +} + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/fallback.xs b/fastSum/resources/ROUGE/DB_File-1.835/fallback.xs new file mode 100644 index 0000000000000000000000000000000000000000..8650cdf76466382f3c1503f3be7006cac000889c --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/fallback.xs @@ -0,0 +1,88 @@ +void +constant(sv) + PREINIT: +#ifdef dXSTARG + dXSTARG; /* Faster if we have it. */ +#else + dTARGET; +#endif + STRLEN len; + int type; + IV iv; + /* NV nv; Uncomment this if you need to return NVs */ + /* const char *pv; Uncomment this if you need to return PVs */ + INPUT: + SV * sv; + const char * s = SvPV(sv, len); + PPCODE: + /* Change this to constant(aTHX_ s, len, &iv, &nv); + if you need to return both NVs and IVs */ + type = constant(aTHX_ s, len, &iv); + /* Return 1 or 2 items. First is error message, or undef if no error. + Second, if present, is found value */ + switch (type) { + case PERL_constant_NOTFOUND: + sv = sv_2mortal(newSVpvf("%s is not a valid DB_File macro", s)); + PUSHs(sv); + break; + case PERL_constant_NOTDEF: + sv = sv_2mortal(newSVpvf( + "Your vendor has not defined DB_File macro %s, used", s)); + PUSHs(sv); + break; + case PERL_constant_ISIV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHi(iv); + break; + /* Uncomment this if you need to return NOs + case PERL_constant_ISNO: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(&PL_sv_no); + break; */ + /* Uncomment this if you need to return NVs + case PERL_constant_ISNV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHn(nv); + break; */ + /* Uncomment this if you need to return PVs + case PERL_constant_ISPV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHp(pv, strlen(pv)); + break; */ + /* Uncomment this if you need to return PVNs + case PERL_constant_ISPVN: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHp(pv, iv); + break; */ + /* Uncomment this if you need to return SVs + case PERL_constant_ISSV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(sv); + break; */ + /* Uncomment this if you need to return UNDEFs + case PERL_constant_ISUNDEF: + break; */ + /* Uncomment this if you need to return UVs + case PERL_constant_ISUV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHu((UV)iv); + break; */ + /* Uncomment this if you need to return YESs + case PERL_constant_ISYES: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(&PL_sv_yes); + break; */ + default: + sv = sv_2mortal(newSVpvf( + "Unexpected return type %d while processing DB_File macro %s, used", + type, s)); + PUSHs(sv); + } diff --git a/fastSum/resources/ROUGE/DB_File-1.835/hints/dynixptx.pl b/fastSum/resources/ROUGE/DB_File-1.835/hints/dynixptx.pl new file mode 100644 index 0000000000000000000000000000000000000000..bb5ffa56e6bade544ee13b58838ab7438820e268 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/hints/dynixptx.pl @@ -0,0 +1,3 @@ +# Need to add an extra '-lc' to the end to work around a DYNIX/ptx bug + +$self->{LIBS} = ['-lm -lc']; diff --git a/fastSum/resources/ROUGE/DB_File-1.835/hints/sco.pl b/fastSum/resources/ROUGE/DB_File-1.835/hints/sco.pl new file mode 100644 index 0000000000000000000000000000000000000000..ff604409496e75ada201c013d7802f29fe36ee3c --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/hints/sco.pl @@ -0,0 +1,2 @@ +# osr5 needs to explicitly link against libc to pull in some static symbols +$self->{LIBS} = ['-ldb -lc'] if $Config{'osvers'} =~ '3\.2v5\.0\..' ; diff --git a/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004 b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004 new file mode 100644 index 0000000000000000000000000000000000000000..0665d1f6c4068b56da4f3a2cef17f83fdd81883f --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004 @@ -0,0 +1,93 @@ +diff -rc perl5.004.orig/Configure perl5.004/Configure +*** perl5.004.orig/Configure 1997-05-13 18:20:34.000000000 +0100 +--- perl5.004/Configure 2003-04-26 16:36:53.000000000 +0100 +*************** +*** 188,193 **** +--- 188,194 ---- + mv='' + nroff='' + perl='' ++ perllibs='' + pg='' + pmake='' + pr='' +*************** +*** 9902,9907 **** +--- 9903,9916 ---- + shift + extensions="$*" + ++ : Remove libraries needed only for extensions ++ : The appropriate ext/Foo/Makefile.PL will add them back in, if ++ : necessary. ++ set X `echo " $libs " | ++ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` ++ shift ++ perllibs="$*" ++ + : Remove build directory name from cppstdin so it can be used from + : either the present location or the final installed location. + echo " " +*************** +*** 10370,10375 **** +--- 10379,10385 ---- + patchlevel='$patchlevel' + path_sep='$path_sep' + perl='$perl' ++ perllibs='$perllibs' + perladmin='$perladmin' + perlpath='$perlpath' + pg='$pg' +diff -rc perl5.004.orig/Makefile.SH perl5.004/Makefile.SH +*** perl5.004.orig/Makefile.SH 1997-05-01 15:22:39.000000000 +0100 +--- perl5.004/Makefile.SH 2003-04-26 16:37:23.000000000 +0100 +*************** +*** 119,125 **** + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $libs $cryptlib + + public = perl $suidperl utilities translators + +--- 119,125 ---- + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $perllibs $cryptlib + + public = perl $suidperl utilities translators + +diff -rc perl5.004.orig/myconfig perl5.004/myconfig +*** perl5.004.orig/myconfig 1996-12-21 01:13:20.000000000 +0000 +--- perl5.004/myconfig 2003-04-26 16:37:51.000000000 +0100 +*************** +*** 35,41 **** + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$libs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +--- 35,41 ---- + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$perllibs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +diff -rc perl5.004.orig/patchlevel.h perl5.004/patchlevel.h +*** perl5.004.orig/patchlevel.h 1997-05-15 23:15:17.000000000 +0100 +--- perl5.004/patchlevel.h 2003-04-26 16:38:11.000000000 +0100 +*************** +*** 38,43 **** +--- 38,44 ---- + */ + static char *local_patches[] = { + NULL ++ ,"NODB-1.0 - remove -ldb from core perl binary." + ,NULL + }; + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_01 b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_01 new file mode 100644 index 0000000000000000000000000000000000000000..1b05eb4e02bdf755b73033335a1761c5a4c6d4b1 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_01 @@ -0,0 +1,217 @@ +diff -rc perl5.004_01.orig/Configure perl5.004_01/Configure +*** perl5.004_01.orig/Configure Wed Jun 11 00:28:03 1997 +--- perl5.004_01/Configure Sun Nov 12 22:12:35 2000 +*************** +*** 188,193 **** +--- 188,194 ---- + mv='' + nroff='' + perl='' ++ perllibs='' + pg='' + pmake='' + pr='' +*************** +*** 9907,9912 **** +--- 9908,9921 ---- + shift + extensions="$*" + ++ : Remove libraries needed only for extensions ++ : The appropriate ext/Foo/Makefile.PL will add them back in, if ++ : necessary. ++ set X `echo " $libs " | ++ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` ++ shift ++ perllibs="$*" ++ + : Remove build directory name from cppstdin so it can be used from + : either the present location or the final installed location. + echo " " +*************** +*** 10375,10380 **** +--- 10384,10390 ---- + patchlevel='$patchlevel' + path_sep='$path_sep' + perl='$perl' ++ perllibs='$perllibs' + perladmin='$perladmin' + perlpath='$perlpath' + pg='$pg' +diff -rc perl5.004_01.orig/Makefile.SH perl5.004_01/Makefile.SH +*** perl5.004_01.orig/Makefile.SH Thu Jun 12 23:27:56 1997 +--- perl5.004_01/Makefile.SH Sun Nov 12 22:12:35 2000 +*************** +*** 126,132 **** + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $libs $cryptlib + + public = perl $suidperl utilities translators + +--- 126,132 ---- + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $perllibs $cryptlib + + public = perl $suidperl utilities translators + +diff -rc perl5.004_01.orig/lib/ExtUtils/Embed.pm perl5.004_01/lib/ExtUtils/Embed.pm +*** perl5.004_01.orig/lib/ExtUtils/Embed.pm Wed Apr 2 22:12:04 1997 +--- perl5.004_01/lib/ExtUtils/Embed.pm Sun Nov 12 22:12:35 2000 +*************** +*** 170,176 **** + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{libs}) if defined $std; + + push(@mods, static_ext()) if $std; + +--- 170,176 ---- + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{perllibs}) if defined $std; + + push(@mods, static_ext()) if $std; + +diff -rc perl5.004_01.orig/lib/ExtUtils/Liblist.pm perl5.004_01/lib/ExtUtils/Liblist.pm +*** perl5.004_01.orig/lib/ExtUtils/Liblist.pm Sat Jun 7 01:19:44 1997 +--- perl5.004_01/lib/ExtUtils/Liblist.pm Sun Nov 12 22:13:27 2000 +*************** +*** 16,33 **** + + sub _unix_os2_ext { + my($self,$potential_libs, $Verbose) = @_; +! if ($^O =~ 'os2' and $Config{libs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{libs}; + } + return ("", "", "", "") unless $potential_libs; + print STDOUT "Potential libraries are '$potential_libs':\n" if $Verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +--- 16,33 ---- + + sub _unix_os2_ext { + my($self,$potential_libs, $Verbose) = @_; +! if ($^O =~ 'os2' and $Config{perllibs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{perllibs}; + } + return ("", "", "", "") unless $potential_libs; + print STDOUT "Potential libraries are '$potential_libs':\n" if $Verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +*************** +*** 186,196 **** + my($self, $potential_libs, $Verbose) = @_; + + # If user did not supply a list, we punt. +! # (caller should probably use the list in $Config{libs}) + return ("", "", "", "") unless $potential_libs; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my($libpth) = $Config{'libpth'}; + my($libext) = $Config{'lib_ext'} || ".lib"; + +--- 186,196 ---- + my($self, $potential_libs, $Verbose) = @_; + + # If user did not supply a list, we punt. +! # (caller should probably use the list in $Config{perllibs}) + return ("", "", "", "") unless $potential_libs; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my($libpth) = $Config{'libpth'}; + my($libext) = $Config{'lib_ext'} || ".lib"; + +*************** +*** 540,546 **** + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +--- 540,546 ---- + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +diff -rc perl5.004_01.orig/lib/ExtUtils/MM_Unix.pm perl5.004_01/lib/ExtUtils/MM_Unix.pm +*** perl5.004_01.orig/lib/ExtUtils/MM_Unix.pm Thu Jun 12 22:06:18 1997 +--- perl5.004_01/lib/ExtUtils/MM_Unix.pm Sun Nov 12 22:12:35 2000 +*************** +*** 2137,2143 **** + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +--- 2137,2143 ---- + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +diff -rc perl5.004_01.orig/myconfig perl5.004_01/myconfig +*** perl5.004_01.orig/myconfig Sat Dec 21 01:13:20 1996 +--- perl5.004_01/myconfig Sun Nov 12 22:12:35 2000 +*************** +*** 35,41 **** + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$libs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +--- 35,41 ---- + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$perllibs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +diff -rc perl5.004_01.orig/patchlevel.h perl5.004_01/patchlevel.h +*** perl5.004_01.orig/patchlevel.h Wed Jun 11 03:06:10 1997 +--- perl5.004_01/patchlevel.h Sun Nov 12 22:12:35 2000 +*************** +*** 38,43 **** +--- 38,44 ---- + */ + static char *local_patches[] = { + NULL ++ ,"NODB-1.0 - remove -ldb from core perl binary." + ,NULL + }; + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_02 b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_02 new file mode 100644 index 0000000000000000000000000000000000000000..238f8737941ce5e17489ed1832abcdc289d2a1dd --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_02 @@ -0,0 +1,217 @@ +diff -rc perl5.004_02.orig/Configure perl5.004_02/Configure +*** perl5.004_02.orig/Configure Thu Aug 7 15:08:44 1997 +--- perl5.004_02/Configure Sun Nov 12 22:06:24 2000 +*************** +*** 188,193 **** +--- 188,194 ---- + mv='' + nroff='' + perl='' ++ perllibs='' + pg='' + pmake='' + pr='' +*************** +*** 9911,9916 **** +--- 9912,9925 ---- + shift + extensions="$*" + ++ : Remove libraries needed only for extensions ++ : The appropriate ext/Foo/Makefile.PL will add them back in, if ++ : necessary. ++ set X `echo " $libs " | ++ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` ++ shift ++ perllibs="$*" ++ + : Remove build directory name from cppstdin so it can be used from + : either the present location or the final installed location. + echo " " +*************** +*** 10379,10384 **** +--- 10388,10394 ---- + patchlevel='$patchlevel' + path_sep='$path_sep' + perl='$perl' ++ perllibs='$perllibs' + perladmin='$perladmin' + perlpath='$perlpath' + pg='$pg' +diff -rc perl5.004_02.orig/Makefile.SH perl5.004_02/Makefile.SH +*** perl5.004_02.orig/Makefile.SH Thu Aug 7 13:10:53 1997 +--- perl5.004_02/Makefile.SH Sun Nov 12 22:06:24 2000 +*************** +*** 126,132 **** + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $libs $cryptlib + + public = perl $suidperl utilities translators + +--- 126,132 ---- + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $perllibs $cryptlib + + public = perl $suidperl utilities translators + +diff -rc perl5.004_02.orig/lib/ExtUtils/Embed.pm perl5.004_02/lib/ExtUtils/Embed.pm +*** perl5.004_02.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997 +--- perl5.004_02/lib/ExtUtils/Embed.pm Sun Nov 12 22:06:24 2000 +*************** +*** 178,184 **** + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{libs}) if defined $std; + + push(@mods, static_ext()) if $std; + +--- 178,184 ---- + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{perllibs}) if defined $std; + + push(@mods, static_ext()) if $std; + +diff -rc perl5.004_02.orig/lib/ExtUtils/Liblist.pm perl5.004_02/lib/ExtUtils/Liblist.pm +*** perl5.004_02.orig/lib/ExtUtils/Liblist.pm Fri Aug 1 19:36:58 1997 +--- perl5.004_02/lib/ExtUtils/Liblist.pm Sun Nov 12 22:06:24 2000 +*************** +*** 16,33 **** + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{libs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{libs}; + } + return ("", "", "", "") unless $potential_libs; + print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +--- 16,33 ---- + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{perllibs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{perllibs}; + } + return ("", "", "", "") unless $potential_libs; + print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +*************** +*** 186,196 **** + my($self, $potential_libs, $verbose) = @_; + + # If user did not supply a list, we punt. +! # (caller should probably use the list in $Config{libs}) + return ("", "", "", "") unless $potential_libs; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my($libpth) = $Config{'libpth'}; + my($libext) = $Config{'lib_ext'} || ".lib"; + +--- 186,196 ---- + my($self, $potential_libs, $verbose) = @_; + + # If user did not supply a list, we punt. +! # (caller should probably use the list in $Config{perllibs}) + return ("", "", "", "") unless $potential_libs; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my($libpth) = $Config{'libpth'}; + my($libext) = $Config{'lib_ext'} || ".lib"; + +*************** +*** 540,546 **** + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +--- 540,546 ---- + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +diff -rc perl5.004_02.orig/lib/ExtUtils/MM_Unix.pm perl5.004_02/lib/ExtUtils/MM_Unix.pm +*** perl5.004_02.orig/lib/ExtUtils/MM_Unix.pm Tue Aug 5 14:28:08 1997 +--- perl5.004_02/lib/ExtUtils/MM_Unix.pm Sun Nov 12 22:06:25 2000 +*************** +*** 2224,2230 **** + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +--- 2224,2230 ---- + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +diff -rc perl5.004_02.orig/myconfig perl5.004_02/myconfig +*** perl5.004_02.orig/myconfig Sat Dec 21 01:13:20 1996 +--- perl5.004_02/myconfig Sun Nov 12 22:06:25 2000 +*************** +*** 35,41 **** + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$libs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +--- 35,41 ---- + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$perllibs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +diff -rc perl5.004_02.orig/patchlevel.h perl5.004_02/patchlevel.h +*** perl5.004_02.orig/patchlevel.h Fri Aug 1 15:07:34 1997 +--- perl5.004_02/patchlevel.h Sun Nov 12 22:06:25 2000 +*************** +*** 38,43 **** +--- 38,44 ---- + */ + static char *local_patches[] = { + NULL ++ ,"NODB-1.0 - remove -ldb from core perl binary." + ,NULL + }; + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_03 b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_03 new file mode 100644 index 0000000000000000000000000000000000000000..06331eac9220c25b195904bbdc280301a7af98ab --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_03 @@ -0,0 +1,223 @@ +diff -rc perl5.004_03.orig/Configure perl5.004_03/Configure +*** perl5.004_03.orig/Configure Wed Aug 13 16:09:46 1997 +--- perl5.004_03/Configure Sun Nov 12 21:56:18 2000 +*************** +*** 188,193 **** +--- 188,194 ---- + mv='' + nroff='' + perl='' ++ perllibs='' + pg='' + pmake='' + pr='' +*************** +*** 9911,9916 **** +--- 9912,9925 ---- + shift + extensions="$*" + ++ : Remove libraries needed only for extensions ++ : The appropriate ext/Foo/Makefile.PL will add them back in, if ++ : necessary. ++ set X `echo " $libs " | ++ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` ++ shift ++ perllibs="$*" ++ + : Remove build directory name from cppstdin so it can be used from + : either the present location or the final installed location. + echo " " +*************** +*** 10379,10384 **** +--- 10388,10394 ---- + patchlevel='$patchlevel' + path_sep='$path_sep' + perl='$perl' ++ perllibs='$perllibs' + perladmin='$perladmin' + perlpath='$perlpath' + pg='$pg' +Only in perl5.004_03: Configure.orig +diff -rc perl5.004_03.orig/Makefile.SH perl5.004_03/Makefile.SH +*** perl5.004_03.orig/Makefile.SH Mon Aug 18 19:24:29 1997 +--- perl5.004_03/Makefile.SH Sun Nov 12 21:56:18 2000 +*************** +*** 126,132 **** + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $libs $cryptlib + + public = perl $suidperl utilities translators + +--- 126,132 ---- + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $perllibs $cryptlib + + public = perl $suidperl utilities translators + +Only in perl5.004_03: Makefile.SH.orig +diff -rc perl5.004_03.orig/lib/ExtUtils/Embed.pm perl5.004_03/lib/ExtUtils/Embed.pm +*** perl5.004_03.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997 +--- perl5.004_03/lib/ExtUtils/Embed.pm Sun Nov 12 21:56:18 2000 +*************** +*** 178,184 **** + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{libs}) if defined $std; + + push(@mods, static_ext()) if $std; + +--- 178,184 ---- + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{perllibs}) if defined $std; + + push(@mods, static_ext()) if $std; + +diff -rc perl5.004_03.orig/lib/ExtUtils/Liblist.pm perl5.004_03/lib/ExtUtils/Liblist.pm +*** perl5.004_03.orig/lib/ExtUtils/Liblist.pm Fri Aug 1 19:36:58 1997 +--- perl5.004_03/lib/ExtUtils/Liblist.pm Sun Nov 12 21:57:17 2000 +*************** +*** 16,33 **** + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{libs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{libs}; + } + return ("", "", "", "") unless $potential_libs; + print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +--- 16,33 ---- + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{perllibs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{perllibs}; + } + return ("", "", "", "") unless $potential_libs; + print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +*************** +*** 186,196 **** + my($self, $potential_libs, $verbose) = @_; + + # If user did not supply a list, we punt. +! # (caller should probably use the list in $Config{libs}) + return ("", "", "", "") unless $potential_libs; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my($libpth) = $Config{'libpth'}; + my($libext) = $Config{'lib_ext'} || ".lib"; + +--- 186,196 ---- + my($self, $potential_libs, $verbose) = @_; + + # If user did not supply a list, we punt. +! # (caller should probably use the list in $Config{perllibs}) + return ("", "", "", "") unless $potential_libs; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my($libpth) = $Config{'libpth'}; + my($libext) = $Config{'lib_ext'} || ".lib"; + +*************** +*** 540,546 **** + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +--- 540,546 ---- + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +Only in perl5.004_03/lib/ExtUtils: Liblist.pm.orig +Only in perl5.004_03/lib/ExtUtils: Liblist.pm.rej +diff -rc perl5.004_03.orig/lib/ExtUtils/MM_Unix.pm perl5.004_03/lib/ExtUtils/MM_Unix.pm +*** perl5.004_03.orig/lib/ExtUtils/MM_Unix.pm Mon Aug 18 19:16:12 1997 +--- perl5.004_03/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:56:19 2000 +*************** +*** 2224,2230 **** + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +--- 2224,2230 ---- + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +Only in perl5.004_03/lib/ExtUtils: MM_Unix.pm.orig +diff -rc perl5.004_03.orig/myconfig perl5.004_03/myconfig +*** perl5.004_03.orig/myconfig Sat Dec 21 01:13:20 1996 +--- perl5.004_03/myconfig Sun Nov 12 21:56:19 2000 +*************** +*** 35,41 **** + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$libs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +--- 35,41 ---- + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$perllibs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +diff -rc perl5.004_03.orig/patchlevel.h perl5.004_03/patchlevel.h +*** perl5.004_03.orig/patchlevel.h Wed Aug 13 11:42:01 1997 +--- perl5.004_03/patchlevel.h Sun Nov 12 21:56:19 2000 +*************** +*** 38,43 **** +--- 38,44 ---- + */ + static char *local_patches[] = { + NULL ++ ,"NODB-1.0 - remove -ldb from core perl binary." + ,NULL + }; + +Only in perl5.004_03: patchlevel.h.orig diff --git a/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_04 b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_04 new file mode 100644 index 0000000000000000000000000000000000000000..a227dc700d9e21844c59c97fbb30bf3c1e735852 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_04 @@ -0,0 +1,209 @@ +diff -rc perl5.004_04.orig/Configure perl5.004_04/Configure +*** perl5.004_04.orig/Configure Fri Oct 3 18:57:39 1997 +--- perl5.004_04/Configure Sun Nov 12 21:50:51 2000 +*************** +*** 188,193 **** +--- 188,194 ---- + mv='' + nroff='' + perl='' ++ perllibs='' + pg='' + pmake='' + pr='' +*************** +*** 9910,9915 **** +--- 9911,9924 ---- + shift + extensions="$*" + ++ : Remove libraries needed only for extensions ++ : The appropriate ext/Foo/Makefile.PL will add them back in, if ++ : necessary. ++ set X `echo " $libs " | ++ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` ++ shift ++ perllibs="$*" ++ + : Remove build directory name from cppstdin so it can be used from + : either the present location or the final installed location. + echo " " +*************** +*** 10378,10383 **** +--- 10387,10393 ---- + patchlevel='$patchlevel' + path_sep='$path_sep' + perl='$perl' ++ perllibs='$perllibs' + perladmin='$perladmin' + perlpath='$perlpath' + pg='$pg' +diff -rc perl5.004_04.orig/Makefile.SH perl5.004_04/Makefile.SH +*** perl5.004_04.orig/Makefile.SH Wed Oct 15 10:33:16 1997 +--- perl5.004_04/Makefile.SH Sun Nov 12 21:50:51 2000 +*************** +*** 129,135 **** + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $libs $cryptlib + + public = perl $suidperl utilities translators + +--- 129,135 ---- + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $perllibs $cryptlib + + public = perl $suidperl utilities translators + +diff -rc perl5.004_04.orig/lib/ExtUtils/Embed.pm perl5.004_04/lib/ExtUtils/Embed.pm +*** perl5.004_04.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997 +--- perl5.004_04/lib/ExtUtils/Embed.pm Sun Nov 12 21:50:51 2000 +*************** +*** 178,184 **** + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{libs}) if defined $std; + + push(@mods, static_ext()) if $std; + +--- 178,184 ---- + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{perllibs}) if defined $std; + + push(@mods, static_ext()) if $std; + +diff -rc perl5.004_04.orig/lib/ExtUtils/Liblist.pm perl5.004_04/lib/ExtUtils/Liblist.pm +*** perl5.004_04.orig/lib/ExtUtils/Liblist.pm Tue Sep 9 17:41:32 1997 +--- perl5.004_04/lib/ExtUtils/Liblist.pm Sun Nov 12 21:51:33 2000 +*************** +*** 16,33 **** + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{libs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{libs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +--- 16,33 ---- + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{perllibs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{perllibs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +*************** +*** 189,195 **** + return ("", "", "", "") unless $potential_libs; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my($libpth) = $Config{'libpth'}; + my($libext) = $Config{'lib_ext'} || ".lib"; + +--- 189,195 ---- + return ("", "", "", "") unless $potential_libs; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my($libpth) = $Config{'libpth'}; + my($libext) = $Config{'lib_ext'} || ".lib"; + +*************** +*** 539,545 **** + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +--- 539,545 ---- + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +diff -rc perl5.004_04.orig/lib/ExtUtils/MM_Unix.pm perl5.004_04/lib/ExtUtils/MM_Unix.pm +*** perl5.004_04.orig/lib/ExtUtils/MM_Unix.pm Wed Oct 8 14:13:51 1997 +--- perl5.004_04/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:50:51 2000 +*************** +*** 2229,2235 **** + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +--- 2229,2235 ---- + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +diff -rc perl5.004_04.orig/myconfig perl5.004_04/myconfig +*** perl5.004_04.orig/myconfig Mon Oct 6 18:26:49 1997 +--- perl5.004_04/myconfig Sun Nov 12 21:50:51 2000 +*************** +*** 35,41 **** + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$libs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +--- 35,41 ---- + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$perllibs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +diff -rc perl5.004_04.orig/patchlevel.h perl5.004_04/patchlevel.h +*** perl5.004_04.orig/patchlevel.h Wed Oct 15 10:55:19 1997 +--- perl5.004_04/patchlevel.h Sun Nov 12 21:50:51 2000 +*************** +*** 39,44 **** +--- 39,45 ---- + /* The following line and terminating '};' are read by perlbug.PL. Don't alter. */ + static char *local_patches[] = { + NULL ++ ,"NODB-1.0 - remove -ldb from core perl binary." + ,NULL + }; + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_05 b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_05 new file mode 100644 index 0000000000000000000000000000000000000000..51c8bf35009f3ae65938092964d25dc17bea4433 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.004_05 @@ -0,0 +1,209 @@ +diff -rc perl5.004_05.orig/Configure perl5.004_05/Configure +*** perl5.004_05.orig/Configure Thu Jan 6 22:05:49 2000 +--- perl5.004_05/Configure Sun Nov 12 21:36:25 2000 +*************** +*** 188,193 **** +--- 188,194 ---- + mv='' + nroff='' + perl='' ++ perllibs='' + pg='' + pmake='' + pr='' +*************** +*** 10164,10169 **** +--- 10165,10178 ---- + shift + extensions="$*" + ++ : Remove libraries needed only for extensions ++ : The appropriate ext/Foo/Makefile.PL will add them back in, if ++ : necessary. ++ set X `echo " $libs " | ++ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` ++ shift ++ perllibs="$*" ++ + : Remove build directory name from cppstdin so it can be used from + : either the present location or the final installed location. + echo " " +*************** +*** 10648,10653 **** +--- 10657,10663 ---- + patchlevel='$patchlevel' + path_sep='$path_sep' + perl='$perl' ++ perllibs='$perllibs' + perladmin='$perladmin' + perlpath='$perlpath' + pg='$pg' +diff -rc perl5.004_05.orig/Makefile.SH perl5.004_05/Makefile.SH +*** perl5.004_05.orig/Makefile.SH Thu Jan 6 22:05:49 2000 +--- perl5.004_05/Makefile.SH Sun Nov 12 21:36:25 2000 +*************** +*** 151,157 **** + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $libs $cryptlib + + public = perl $suidperl utilities translators + +--- 151,157 ---- + ext = \$(dynamic_ext) \$(static_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $perllibs $cryptlib + + public = perl $suidperl utilities translators + +diff -rc perl5.004_05.orig/lib/ExtUtils/Embed.pm perl5.004_05/lib/ExtUtils/Embed.pm +*** perl5.004_05.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997 +--- perl5.004_05/lib/ExtUtils/Embed.pm Sun Nov 12 21:36:25 2000 +*************** +*** 178,184 **** + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{libs}) if defined $std; + + push(@mods, static_ext()) if $std; + +--- 178,184 ---- + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{perllibs}) if defined $std; + + push(@mods, static_ext()) if $std; + +diff -rc perl5.004_05.orig/lib/ExtUtils/Liblist.pm perl5.004_05/lib/ExtUtils/Liblist.pm +*** perl5.004_05.orig/lib/ExtUtils/Liblist.pm Thu Jan 6 22:05:54 2000 +--- perl5.004_05/lib/ExtUtils/Liblist.pm Sun Nov 12 21:45:31 2000 +*************** +*** 16,33 **** + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{libs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{libs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +--- 16,33 ---- + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{perllibs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{perllibs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +*************** +*** 196,202 **** + my $BC = 1 if $cc =~ /^bcc/i; + my $GC = 1 if $cc =~ /^gcc/i; + my $so = $Config{'so'}; +! my $libs = $Config{'libs'}; + my $libpth = $Config{'libpth'}; + my $libext = $Config{'lib_ext'} || ".lib"; + +--- 196,202 ---- + my $BC = 1 if $cc =~ /^bcc/i; + my $GC = 1 if $cc =~ /^gcc/i; + my $so = $Config{'so'}; +! my $libs = $Config{'perllibs'}; + my $libpth = $Config{'libpth'}; + my $libext = $Config{'lib_ext'} || ".lib"; + +*************** +*** 590,596 **** + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +--- 590,596 ---- + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +diff -rc perl5.004_05.orig/lib/ExtUtils/MM_Unix.pm perl5.004_05/lib/ExtUtils/MM_Unix.pm +*** perl5.004_05.orig/lib/ExtUtils/MM_Unix.pm Thu Jan 6 22:05:54 2000 +--- perl5.004_05/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:36:25 2000 +*************** +*** 2246,2252 **** + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +--- 2246,2252 ---- + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +diff -rc perl5.004_05.orig/myconfig perl5.004_05/myconfig +*** perl5.004_05.orig/myconfig Thu Jan 6 22:05:55 2000 +--- perl5.004_05/myconfig Sun Nov 12 21:43:54 2000 +*************** +*** 34,40 **** + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$libs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +--- 34,40 ---- + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$perllibs + libc=$libc, so=$so + useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: +diff -rc perl5.004_05.orig/patchlevel.h perl5.004_05/patchlevel.h +*** perl5.004_05.orig/patchlevel.h Thu Jan 6 22:05:48 2000 +--- perl5.004_05/patchlevel.h Sun Nov 12 21:36:25 2000 +*************** +*** 39,44 **** +--- 39,45 ---- + /* The following line and terminating '};' are read by perlbug.PL. Don't alter. */ + static char *local_patches[] = { + NULL ++ ,"NODB-1.0 - remove -ldb from core perl binary." + ,NULL + }; + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005 b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005 new file mode 100644 index 0000000000000000000000000000000000000000..effee3e8275209b96a4c45c599dc0d867824f8d7 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005 @@ -0,0 +1,209 @@ +diff -rc perl5.005.orig/Configure perl5.005/Configure +*** perl5.005.orig/Configure Wed Jul 15 08:05:44 1998 +--- perl5.005/Configure Sun Nov 12 21:30:40 2000 +*************** +*** 234,239 **** +--- 234,240 ---- + nm='' + nroff='' + perl='' ++ perllibs='' + pg='' + pmake='' + pr='' +*************** +*** 11279,11284 **** +--- 11280,11293 ---- + shift + extensions="$*" + ++ : Remove libraries needed only for extensions ++ : The appropriate ext/Foo/Makefile.PL will add them back in, if ++ : necessary. ++ set X `echo " $libs " | ++ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` ++ shift ++ perllibs="$*" ++ + : Remove build directory name from cppstdin so it can be used from + : either the present location or the final installed location. + echo " " +*************** +*** 11804,11809 **** +--- 11813,11819 ---- + patchlevel='$patchlevel' + path_sep='$path_sep' + perl='$perl' ++ perllibs='$perllibs' + perladmin='$perladmin' + perlpath='$perlpath' + pg='$pg' +diff -rc perl5.005.orig/Makefile.SH perl5.005/Makefile.SH +*** perl5.005.orig/Makefile.SH Sun Jul 19 08:06:35 1998 +--- perl5.005/Makefile.SH Sun Nov 12 21:30:40 2000 +*************** +*** 150,156 **** + ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $libs $cryptlib + + public = perl $suidperl utilities translators + +--- 150,156 ---- + ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $perllibs $cryptlib + + public = perl $suidperl utilities translators + +diff -rc perl5.005.orig/lib/ExtUtils/Embed.pm perl5.005/lib/ExtUtils/Embed.pm +*** perl5.005.orig/lib/ExtUtils/Embed.pm Wed Jul 22 07:45:02 1998 +--- perl5.005/lib/ExtUtils/Embed.pm Sun Nov 12 21:30:40 2000 +*************** +*** 194,200 **** + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{libs}) if defined $std; + + push(@mods, static_ext()) if $std; + +--- 194,200 ---- + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{perllibs}) if defined $std; + + push(@mods, static_ext()) if $std; + +diff -rc perl5.005.orig/lib/ExtUtils/Liblist.pm perl5.005/lib/ExtUtils/Liblist.pm +*** perl5.005.orig/lib/ExtUtils/Liblist.pm Wed Jul 22 07:09:42 1998 +--- perl5.005/lib/ExtUtils/Liblist.pm Sun Nov 12 21:30:40 2000 +*************** +*** 16,33 **** + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{libs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{libs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +--- 16,33 ---- + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{perllibs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{perllibs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +*************** +*** 290,296 **** + $self->{CCFLAS} || $Config{'ccflags'}; + @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '') + . 'PerlShr/Share' ); +! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'}); + push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'}); + # In general, we pass through the basic libraries from %Config unchanged. + # The one exception is that if we're building in the Perl source tree, and +--- 290,296 ---- + $self->{CCFLAS} || $Config{'ccflags'}; + @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '') + . 'PerlShr/Share' ); +! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'}); + push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'}); + # In general, we pass through the basic libraries from %Config unchanged. + # The one exception is that if we're building in the Perl source tree, and +*************** +*** 598,604 **** + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +--- 598,604 ---- + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +diff -rc perl5.005.orig/lib/ExtUtils/MM_Unix.pm perl5.005/lib/ExtUtils/MM_Unix.pm +*** perl5.005.orig/lib/ExtUtils/MM_Unix.pm Tue Jul 14 04:39:12 1998 +--- perl5.005/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:30:41 2000 +*************** +*** 2281,2287 **** + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +--- 2281,2287 ---- + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +diff -rc perl5.005.orig/myconfig perl5.005/myconfig +*** perl5.005.orig/myconfig Fri Apr 3 01:20:35 1998 +--- perl5.005/myconfig Sun Nov 12 21:30:41 2000 +*************** +*** 34,40 **** + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$libs + libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: + dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags' +--- 34,40 ---- + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$perllibs + libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: + dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags' +diff -rc perl5.005.orig/patchlevel.h perl5.005/patchlevel.h +*** perl5.005.orig/patchlevel.h Wed Jul 22 19:22:01 1998 +--- perl5.005/patchlevel.h Sun Nov 12 21:30:41 2000 +*************** +*** 39,44 **** +--- 39,45 ---- + */ + static char *local_patches[] = { + NULL ++ ,"NODB-1.0 - remove -ldb from core perl binary." + ,NULL + }; + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005_01 b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005_01 new file mode 100644 index 0000000000000000000000000000000000000000..2a05dd545f654690df69c741ee4fda521509a288 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005_01 @@ -0,0 +1,209 @@ +diff -rc perl5.005_01.orig/Configure perl5.005_01/Configure +*** perl5.005_01.orig/Configure Wed Jul 15 08:05:44 1998 +--- perl5.005_01/Configure Sun Nov 12 20:55:58 2000 +*************** +*** 234,239 **** +--- 234,240 ---- + nm='' + nroff='' + perl='' ++ perllibs='' + pg='' + pmake='' + pr='' +*************** +*** 11279,11284 **** +--- 11280,11293 ---- + shift + extensions="$*" + ++ : Remove libraries needed only for extensions ++ : The appropriate ext/Foo/Makefile.PL will add them back in, if ++ : necessary. ++ set X `echo " $libs " | ++ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` ++ shift ++ perllibs="$*" ++ + : Remove build directory name from cppstdin so it can be used from + : either the present location or the final installed location. + echo " " +*************** +*** 11804,11809 **** +--- 11813,11819 ---- + patchlevel='$patchlevel' + path_sep='$path_sep' + perl='$perl' ++ perllibs='$perllibs' + perladmin='$perladmin' + perlpath='$perlpath' + pg='$pg' +diff -rc perl5.005_01.orig/Makefile.SH perl5.005_01/Makefile.SH +*** perl5.005_01.orig/Makefile.SH Sun Jul 19 08:06:35 1998 +--- perl5.005_01/Makefile.SH Sun Nov 12 20:55:58 2000 +*************** +*** 150,156 **** + ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $libs $cryptlib + + public = perl $suidperl utilities translators + +--- 150,156 ---- + ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $perllibs $cryptlib + + public = perl $suidperl utilities translators + +diff -rc perl5.005_01.orig/lib/ExtUtils/Embed.pm perl5.005_01/lib/ExtUtils/Embed.pm +*** perl5.005_01.orig/lib/ExtUtils/Embed.pm Wed Jul 22 07:45:02 1998 +--- perl5.005_01/lib/ExtUtils/Embed.pm Sun Nov 12 20:55:58 2000 +*************** +*** 194,200 **** + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{libs}) if defined $std; + + push(@mods, static_ext()) if $std; + +--- 194,200 ---- + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{perllibs}) if defined $std; + + push(@mods, static_ext()) if $std; + +diff -rc perl5.005_01.orig/lib/ExtUtils/Liblist.pm perl5.005_01/lib/ExtUtils/Liblist.pm +*** perl5.005_01.orig/lib/ExtUtils/Liblist.pm Wed Jul 22 07:09:42 1998 +--- perl5.005_01/lib/ExtUtils/Liblist.pm Sun Nov 12 20:55:58 2000 +*************** +*** 16,33 **** + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{libs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{libs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +--- 16,33 ---- + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{perllibs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{perllibs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +*************** +*** 290,296 **** + $self->{CCFLAS} || $Config{'ccflags'}; + @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '') + . 'PerlShr/Share' ); +! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'}); + push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'}); + # In general, we pass through the basic libraries from %Config unchanged. + # The one exception is that if we're building in the Perl source tree, and +--- 290,296 ---- + $self->{CCFLAS} || $Config{'ccflags'}; + @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '') + . 'PerlShr/Share' ); +! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'}); + push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'}); + # In general, we pass through the basic libraries from %Config unchanged. + # The one exception is that if we're building in the Perl source tree, and +*************** +*** 598,604 **** + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +--- 598,604 ---- + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +diff -rc perl5.005_01.orig/lib/ExtUtils/MM_Unix.pm perl5.005_01/lib/ExtUtils/MM_Unix.pm +*** perl5.005_01.orig/lib/ExtUtils/MM_Unix.pm Tue Jul 14 04:39:12 1998 +--- perl5.005_01/lib/ExtUtils/MM_Unix.pm Sun Nov 12 20:55:58 2000 +*************** +*** 2281,2287 **** + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +--- 2281,2287 ---- + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +diff -rc perl5.005_01.orig/myconfig perl5.005_01/myconfig +*** perl5.005_01.orig/myconfig Fri Apr 3 01:20:35 1998 +--- perl5.005_01/myconfig Sun Nov 12 20:55:58 2000 +*************** +*** 34,40 **** + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$libs + libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: + dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags' +--- 34,40 ---- + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$perllibs + libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: + dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags' +diff -rc perl5.005_01.orig/patchlevel.h perl5.005_01/patchlevel.h +*** perl5.005_01.orig/patchlevel.h Mon Jan 3 11:07:45 2000 +--- perl5.005_01/patchlevel.h Sun Nov 12 20:55:58 2000 +*************** +*** 39,44 **** +--- 39,45 ---- + */ + static char *local_patches[] = { + NULL ++ ,"NODB-1.0 - remove -ldb from core perl binary." + ,NULL + }; + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005_02 b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005_02 new file mode 100644 index 0000000000000000000000000000000000000000..5dd57ddc03f10b3a6bfaea49cc24c252df9d8388 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005_02 @@ -0,0 +1,264 @@ +diff -rc perl5.005_02.orig/Configure perl5.005_02/Configure +*** perl5.005_02.orig/Configure Mon Jan 3 11:12:20 2000 +--- perl5.005_02/Configure Sun Nov 12 20:50:51 2000 +*************** +*** 234,239 **** +--- 234,240 ---- + nm='' + nroff='' + perl='' ++ perllibs='' + pg='' + pmake='' + pr='' +*************** +*** 11334,11339 **** +--- 11335,11348 ---- + shift + extensions="$*" + ++ : Remove libraries needed only for extensions ++ : The appropriate ext/Foo/Makefile.PL will add them back in, if ++ : necessary. ++ set X `echo " $libs " | ++ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` ++ shift ++ perllibs="$*" ++ + : Remove build directory name from cppstdin so it can be used from + : either the present location or the final installed location. + echo " " +*************** +*** 11859,11864 **** +--- 11868,11874 ---- + patchlevel='$patchlevel' + path_sep='$path_sep' + perl='$perl' ++ perllibs='$perllibs' + perladmin='$perladmin' + perlpath='$perlpath' + pg='$pg' +Only in perl5.005_02: Configure.orig +diff -rc perl5.005_02.orig/Makefile.SH perl5.005_02/Makefile.SH +*** perl5.005_02.orig/Makefile.SH Sun Jul 19 08:06:35 1998 +--- perl5.005_02/Makefile.SH Sun Nov 12 20:50:51 2000 +*************** +*** 150,156 **** + ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $libs $cryptlib + + public = perl $suidperl utilities translators + +--- 150,156 ---- + ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $perllibs $cryptlib + + public = perl $suidperl utilities translators + +Only in perl5.005_02: Makefile.SH.orig +diff -rc perl5.005_02.orig/lib/ExtUtils/Embed.pm perl5.005_02/lib/ExtUtils/Embed.pm +*** perl5.005_02.orig/lib/ExtUtils/Embed.pm Wed Jul 22 07:45:02 1998 +--- perl5.005_02/lib/ExtUtils/Embed.pm Sun Nov 12 20:50:51 2000 +*************** +*** 194,200 **** + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{libs}) if defined $std; + + push(@mods, static_ext()) if $std; + +--- 194,200 ---- + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{perllibs}) if defined $std; + + push(@mods, static_ext()) if $std; + +diff -rc perl5.005_02.orig/lib/ExtUtils/Liblist.pm perl5.005_02/lib/ExtUtils/Liblist.pm +*** perl5.005_02.orig/lib/ExtUtils/Liblist.pm Mon Jan 3 11:12:21 2000 +--- perl5.005_02/lib/ExtUtils/Liblist.pm Sun Nov 12 20:50:51 2000 +*************** +*** 16,33 **** + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{libs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{libs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +--- 16,33 ---- + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{perllibs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{perllibs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +*************** +*** 196,202 **** + my $BC = 1 if $cc =~ /^bcc/i; + my $GC = 1 if $cc =~ /^gcc/i; + my $so = $Config{'so'}; +! my $libs = $Config{'libs'}; + my $libpth = $Config{'libpth'}; + my $libext = $Config{'lib_ext'} || ".lib"; + +--- 196,202 ---- + my $BC = 1 if $cc =~ /^bcc/i; + my $GC = 1 if $cc =~ /^gcc/i; + my $so = $Config{'so'}; +! my $libs = $Config{'perllibs'}; + my $libpth = $Config{'libpth'}; + my $libext = $Config{'lib_ext'} || ".lib"; + +*************** +*** 333,339 **** + $self->{CCFLAS} || $Config{'ccflags'}; + @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '') + . 'PerlShr/Share' ); +! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'}); + push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'}); + # In general, we pass through the basic libraries from %Config unchanged. + # The one exception is that if we're building in the Perl source tree, and +--- 333,339 ---- + $self->{CCFLAS} || $Config{'ccflags'}; + @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '') + . 'PerlShr/Share' ); +! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'}); + push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'}); + # In general, we pass through the basic libraries from %Config unchanged. + # The one exception is that if we're building in the Perl source tree, and +*************** +*** 623,629 **** + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +--- 623,629 ---- + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs> + as well as in C<$Config{libpth}>. For each library that is found, a +*************** +*** 666,672 **** + alphanumeric characters are treated as flags. Unknown flags will be ignored. + + An entry that matches C disables the appending of default +! libraries found in C<$Config{libs}> (this should be only needed very rarely). + + An entry that matches C disables all searching for + the libraries specified after it. Translation of C<-Lfoo> and +--- 666,672 ---- + alphanumeric characters are treated as flags. Unknown flags will be ignored. + + An entry that matches C disables the appending of default +! libraries found in C<$Config{perllibs}> (this should be only needed very rarely). + + An entry that matches C disables all searching for + the libraries specified after it. Translation of C<-Lfoo> and +*************** +*** 676,682 **** + + An entry that matches C reenables searching for + the libraries specified after it. You can put it at the end to +! enable searching for default libraries specified by C<$Config{libs}>. + + =item * + +--- 676,682 ---- + + An entry that matches C reenables searching for + the libraries specified after it. You can put it at the end to +! enable searching for default libraries specified by C<$Config{perllibs}>. + + =item * + +Only in perl5.005_02/lib/ExtUtils: Liblist.pm.orig +diff -rc perl5.005_02.orig/lib/ExtUtils/MM_Unix.pm perl5.005_02/lib/ExtUtils/MM_Unix.pm +*** perl5.005_02.orig/lib/ExtUtils/MM_Unix.pm Tue Jul 14 04:39:12 1998 +--- perl5.005_02/lib/ExtUtils/MM_Unix.pm Sun Nov 12 20:50:51 2000 +*************** +*** 2281,2287 **** + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +--- 2281,2287 ---- + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +Only in perl5.005_02/lib/ExtUtils: MM_Unix.pm.orig +diff -rc perl5.005_02.orig/myconfig perl5.005_02/myconfig +*** perl5.005_02.orig/myconfig Fri Apr 3 01:20:35 1998 +--- perl5.005_02/myconfig Sun Nov 12 20:50:51 2000 +*************** +*** 34,40 **** + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$libs + libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: + dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags' +--- 34,40 ---- + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$perllibs + libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: + dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags' +diff -rc perl5.005_02.orig/patchlevel.h perl5.005_02/patchlevel.h +*** perl5.005_02.orig/patchlevel.h Mon Jan 3 11:12:19 2000 +--- perl5.005_02/patchlevel.h Sun Nov 12 20:50:51 2000 +*************** +*** 40,45 **** +--- 40,46 ---- + */ + static char *local_patches[] = { + NULL ++ ,"NODB-1.0 - remove -ldb from core perl binary." + ,NULL + }; + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005_03 b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005_03 new file mode 100644 index 0000000000000000000000000000000000000000..115f9f5b90988da81b3de1246c77af21aa79580c --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.005_03 @@ -0,0 +1,250 @@ +diff -rc perl5.005_03.orig/Configure perl5.005_03/Configure +*** perl5.005_03.orig/Configure Sun Mar 28 17:12:57 1999 +--- perl5.005_03/Configure Sun Sep 17 22:19:16 2000 +*************** +*** 208,213 **** +--- 208,214 ---- + nm='' + nroff='' + perl='' ++ perllibs='' + pg='' + pmake='' + pr='' +*************** +*** 11642,11647 **** +--- 11643,11656 ---- + shift + extensions="$*" + ++ : Remove libraries needed only for extensions ++ : The appropriate ext/Foo/Makefile.PL will add them back in, if ++ : necessary. ++ set X `echo " $libs " | ++ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` ++ shift ++ perllibs="$*" ++ + : Remove build directory name from cppstdin so it can be used from + : either the present location or the final installed location. + echo " " +*************** +*** 12183,12188 **** +--- 12192,12198 ---- + patchlevel='$patchlevel' + path_sep='$path_sep' + perl='$perl' ++ perllibs='$perllibs' + perladmin='$perladmin' + perlpath='$perlpath' + pg='$pg' +diff -rc perl5.005_03.orig/Makefile.SH perl5.005_03/Makefile.SH +*** perl5.005_03.orig/Makefile.SH Thu Mar 4 02:35:25 1999 +--- perl5.005_03/Makefile.SH Sun Sep 17 22:21:01 2000 +*************** +*** 58,67 **** + shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp" + case "$osvers" in + 3*) +! shrpldflags="$shrpldflags -e _nostart $ldflags $libs $cryptlib" + ;; + *) +! shrpldflags="$shrpldflags -b noentry $ldflags $libs $cryptlib" + ;; + esac + aixinstdir=`pwd | sed 's/\/UU$//'` +--- 58,67 ---- + shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp" + case "$osvers" in + 3*) +! shrpldflags="$shrpldflags -e _nostart $ldflags $perllibs $cryptlib" + ;; + *) +! shrpldflags="$shrpldflags -b noentry $ldflags $perllibs $cryptlib" + ;; + esac + aixinstdir=`pwd | sed 's/\/UU$//'` +*************** +*** 155,161 **** + ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $libs $cryptlib + + public = perl $suidperl utilities translators + +--- 155,161 ---- + ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $perllibs $cryptlib + + public = perl $suidperl utilities translators + +diff -rc perl5.005_03.orig/lib/ExtUtils/Embed.pm perl5.005_03/lib/ExtUtils/Embed.pm +*** perl5.005_03.orig/lib/ExtUtils/Embed.pm Wed Jan 6 02:17:50 1999 +--- perl5.005_03/lib/ExtUtils/Embed.pm Sun Sep 17 22:19:16 2000 +*************** +*** 194,200 **** + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{libs}) if defined $std; + + push(@mods, static_ext()) if $std; + +--- 194,200 ---- + @path = $path ? split(/:/, $path) : @INC; + + push(@potential_libs, @link_args) if scalar @link_args; +! push(@potential_libs, $Config{perllibs}) if defined $std; + + push(@mods, static_ext()) if $std; + +diff -rc perl5.005_03.orig/lib/ExtUtils/Liblist.pm perl5.005_03/lib/ExtUtils/Liblist.pm +*** perl5.005_03.orig/lib/ExtUtils/Liblist.pm Wed Jan 6 02:17:47 1999 +--- perl5.005_03/lib/ExtUtils/Liblist.pm Sun Sep 17 22:19:16 2000 +*************** +*** 16,33 **** + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{libs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{libs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'libs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +--- 16,33 ---- + + sub _unix_os2_ext { + my($self,$potential_libs, $verbose) = @_; +! if ($^O =~ 'os2' and $Config{perllibs}) { + # Dynamic libraries are not transitive, so we may need including + # the libraries linked against perl.dll again. + + $potential_libs .= " " if $potential_libs; +! $potential_libs .= $Config{perllibs}; + } + return ("", "", "", "") unless $potential_libs; + warn "Potential libraries are '$potential_libs':\n" if $verbose; + + my($so) = $Config{'so'}; +! my($libs) = $Config{'perllibs'}; + my $Config_libext = $Config{lib_ext} || ".a"; + + +*************** +*** 196,202 **** + my $BC = 1 if $cc =~ /^bcc/i; + my $GC = 1 if $cc =~ /^gcc/i; + my $so = $Config{'so'}; +! my $libs = $Config{'libs'}; + my $libpth = $Config{'libpth'}; + my $libext = $Config{'lib_ext'} || ".lib"; + +--- 196,202 ---- + my $BC = 1 if $cc =~ /^bcc/i; + my $GC = 1 if $cc =~ /^gcc/i; + my $so = $Config{'so'}; +! my $libs = $Config{'perllibs'}; + my $libpth = $Config{'libpth'}; + my $libext = $Config{'lib_ext'} || ".lib"; + +*************** +*** 336,342 **** + $self->{CCFLAS} || $Config{'ccflags'}; + @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '') + . 'PerlShr/Share' ); +! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'}); + push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'}); + # In general, we pass through the basic libraries from %Config unchanged. + # The one exception is that if we're building in the Perl source tree, and +--- 336,342 ---- + $self->{CCFLAS} || $Config{'ccflags'}; + @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '') + . 'PerlShr/Share' ); +! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'}); + push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'}); + # In general, we pass through the basic libraries from %Config unchanged. + # The one exception is that if we're building in the Perl source tree, and +*************** +*** 626,632 **** + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs>, + C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>. +--- 626,632 ---- + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs>, + C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>. +*************** +*** 670,676 **** + alphanumeric characters are treated as flags. Unknown flags will be ignored. + + An entry that matches C disables the appending of default +! libraries found in C<$Config{libs}> (this should be only needed very rarely). + + An entry that matches C disables all searching for + the libraries specified after it. Translation of C<-Lfoo> and +--- 670,676 ---- + alphanumeric characters are treated as flags. Unknown flags will be ignored. + + An entry that matches C disables the appending of default +! libraries found in C<$Config{perllibs}> (this should be only needed very rarely). + + An entry that matches C disables all searching for + the libraries specified after it. Translation of C<-Lfoo> and +*************** +*** 680,686 **** + + An entry that matches C reenables searching for + the libraries specified after it. You can put it at the end to +! enable searching for default libraries specified by C<$Config{libs}>. + + =item * + +--- 680,686 ---- + + An entry that matches C reenables searching for + the libraries specified after it. You can put it at the end to +! enable searching for default libraries specified by C<$Config{perllibs}>. + + =item * + +diff -rc perl5.005_03.orig/lib/ExtUtils/MM_Unix.pm perl5.005_03/lib/ExtUtils/MM_Unix.pm +*** perl5.005_03.orig/lib/ExtUtils/MM_Unix.pm Fri Mar 5 00:34:20 1999 +--- perl5.005_03/lib/ExtUtils/MM_Unix.pm Sun Sep 17 22:19:16 2000 +*************** +*** 2284,2290 **** + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +--- 2284,2290 ---- + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { diff --git a/fastSum/resources/ROUGE/DB_File-1.835/patches/5.6.0 b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.6.0 new file mode 100644 index 0000000000000000000000000000000000000000..1f9b3b620decfa30e7d069d8895f6ab6c17031fa --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/patches/5.6.0 @@ -0,0 +1,294 @@ +diff -cr perl-5.6.0.orig/Configure perl-5.6.0/Configure +*** perl-5.6.0.orig/Configure Wed Mar 22 20:36:37 2000 +--- perl-5.6.0/Configure Sun Sep 17 23:40:15 2000 +*************** +*** 217,222 **** +--- 217,223 ---- + nm='' + nroff='' + perl='' ++ perllibs='' + pg='' + pmake='' + pr='' +*************** +*** 14971,14976 **** +--- 14972,14985 ---- + shift + extensions="$*" + ++ : Remove libraries needed only for extensions ++ : The appropriate ext/Foo/Makefile.PL will add them back in, if ++ : necessary. ++ set X `echo " $libs " | ++ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` ++ shift ++ perllibs="$*" ++ + : Remove build directory name from cppstdin so it can be used from + : either the present location or the final installed location. + echo " " +*************** +*** 15640,15645 **** +--- 15649,15655 ---- + path_sep='$path_sep' + perl5='$perl5' + perl='$perl' ++ perllibs='$perllibs' + perladmin='$perladmin' + perlpath='$perlpath' + pg='$pg' +diff -cr perl-5.6.0.orig/Makefile.SH perl-5.6.0/Makefile.SH +*** perl-5.6.0.orig/Makefile.SH Sat Mar 11 16:05:24 2000 +--- perl-5.6.0/Makefile.SH Sun Sep 17 23:40:15 2000 +*************** +*** 70,76 **** + *) shrpldflags="$shrpldflags -b noentry" + ;; + esac +! shrpldflags="$shrpldflags $ldflags $libs $cryptlib" + linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl" + ;; + hpux*) +--- 70,76 ---- + *) shrpldflags="$shrpldflags -b noentry" + ;; + esac +! shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib" + linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl" + ;; + hpux*) +*************** +*** 176,182 **** + ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $libs $cryptlib + + public = perl $suidperl utilities translators + +--- 176,182 ---- + ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) + DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) + +! libs = $perllibs $cryptlib + + public = perl $suidperl utilities translators + +*************** +*** 333,339 **** + case "$osname" in + aix) + $spitshell >>Makefile <>Makefile <{CCFLAS} || $Config{'ccflags'}; + @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '') + . 'PerlShr/Share' ); +! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'}); + push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'}); + # In general, we pass through the basic libraries from %Config unchanged. + # The one exception is that if we're building in the Perl source tree, and +--- 338,344 ---- + $self->{CCFLAS} || $Config{'ccflags'}; + @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '') + . 'PerlShr/Share' ); +! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'}); + push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'}); + # In general, we pass through the basic libraries from %Config unchanged. + # The one exception is that if we're building in the Perl source tree, and +*************** +*** 624,630 **** + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs>, + C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>. +--- 624,630 ---- + =item * + + If C<$potential_libs> is empty, the return value will be empty. +! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm) + will be appended to the list of C<$potential_libs>. The libraries + will be searched for in the directories specified in C<$potential_libs>, + C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>. +*************** +*** 668,674 **** + alphanumeric characters are treated as flags. Unknown flags will be ignored. + + An entry that matches C disables the appending of default +! libraries found in C<$Config{libs}> (this should be only needed very rarely). + + An entry that matches C disables all searching for + the libraries specified after it. Translation of C<-Lfoo> and +--- 668,674 ---- + alphanumeric characters are treated as flags. Unknown flags will be ignored. + + An entry that matches C disables the appending of default +! libraries found in C<$Config{perllibs}> (this should be only needed very rarely). + + An entry that matches C disables all searching for + the libraries specified after it. Translation of C<-Lfoo> and +*************** +*** 678,684 **** + + An entry that matches C reenables searching for + the libraries specified after it. You can put it at the end to +! enable searching for default libraries specified by C<$Config{libs}>. + + =item * + +--- 678,684 ---- + + An entry that matches C reenables searching for + the libraries specified after it. You can put it at the end to +! enable searching for default libraries specified by C<$Config{perllibs}>. + + =item * + +diff -cr perl-5.6.0.orig/lib/ExtUtils/MM_Unix.pm perl-5.6.0/lib/ExtUtils/MM_Unix.pm +*** perl-5.6.0.orig/lib/ExtUtils/MM_Unix.pm Thu Mar 2 17:52:52 2000 +--- perl-5.6.0/lib/ExtUtils/MM_Unix.pm Sun Sep 17 23:40:15 2000 +*************** +*** 2450,2456 **** + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +--- 2450,2456 ---- + MAP_STATIC = ", + join(" \\\n\t", reverse sort keys %static), " + +! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib} + "; + + if (defined $libperl) { +diff -cr perl-5.6.0.orig/myconfig.SH perl-5.6.0/myconfig.SH +*** perl-5.6.0.orig/myconfig.SH Sat Feb 26 06:34:49 2000 +--- perl-5.6.0/myconfig.SH Sun Sep 17 23:41:17 2000 +*************** +*** 48,54 **** + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$libs + libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: + dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags' +--- 48,54 ---- + Linker and Libraries: + ld='$ld', ldflags ='$ldflags' + libpth=$libpth +! libs=$perllibs + libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl + Dynamic Linking: + dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags' +diff -cr perl-5.6.0.orig/patchlevel.h perl-5.6.0/patchlevel.h +*** perl-5.6.0.orig/patchlevel.h Wed Mar 22 20:23:11 2000 +--- perl-5.6.0/patchlevel.h Sun Sep 17 23:40:15 2000 +*************** +*** 70,75 **** +--- 70,76 ---- + #if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT) + static char *local_patches[] = { + NULL ++ ,"NODB-1.0 - remove -ldb from core perl binary." + ,NULL + }; + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/pm_to_blib b/fastSum/resources/ROUGE/DB_File-1.835/pm_to_blib new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/DB_File-1.835/ppport.h b/fastSum/resources/ROUGE/DB_File-1.835/ppport.h new file mode 100644 index 0000000000000000000000000000000000000000..8a68d2e6b6ad26bd916a58e5cb201b5b478b7965 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/ppport.h @@ -0,0 +1,7667 @@ +#if 0 +<<'SKIP'; +#endif +/* +---------------------------------------------------------------------- + + ppport.h -- Perl/Pollution/Portability Version 3.25 + + Automatically created by Devel::PPPort running under perl 5.010000. + + Do NOT edit this file directly! -- Edit PPPort_pm.PL and the + includes in parts/inc/ instead. + + Use 'perldoc ppport.h' to view the documentation below. + +---------------------------------------------------------------------- + +SKIP + +=pod + +=head1 NAME + +ppport.h - Perl/Pollution/Portability version 3.25 + +=head1 SYNOPSIS + + perl ppport.h [options] [source files] + + Searches current directory for files if no [source files] are given + + --help show short help + + --version show version + + --patch=file write one patch file with changes + --copy=suffix write changed copies with suffix + --diff=program use diff program and options + + --compat-version=version provide compatibility with Perl version + --cplusplus accept C++ comments + + --quiet don't output anything except fatal errors + --nodiag don't show diagnostics + --nohints don't show hints + --nochanges don't suggest changes + --nofilter don't filter input files + + --strip strip all script and doc functionality from + ppport.h + + --list-provided list provided API + --list-unsupported list unsupported API + --api-info=name show Perl API portability information + +=head1 COMPATIBILITY + +This version of F is designed to support operation with Perl +installations back to 5.003, and has been tested up to 5.20. + +=head1 OPTIONS + +=head2 --help + +Display a brief usage summary. + +=head2 --version + +Display the version of F. + +=head2 --patch=I + +If this option is given, a single patch file will be created if +any changes are suggested. This requires a working diff program +to be installed on your system. + +=head2 --copy=I + +If this option is given, a copy of each file will be saved with +the given suffix that contains the suggested changes. This does +not require any external programs. Note that this does not +automagially add a dot between the original filename and the +suffix. If you want the dot, you have to include it in the option +argument. + +If neither C<--patch> or C<--copy> are given, the default is to +simply print the diffs for each file. This requires either +C or a C program to be installed. + +=head2 --diff=I + +Manually set the diff program and options to use. The default +is to use C, when installed, and output unified +context diffs. + +=head2 --compat-version=I + +Tell F to check for compatibility with the given +Perl version. The default is to check for compatibility with Perl +version 5.003. You can use this option to reduce the output +of F if you intend to be backward compatible only +down to a certain Perl version. + +=head2 --cplusplus + +Usually, F will detect C++ style comments and +replace them with C style comments for portability reasons. +Using this option instructs F to leave C++ +comments untouched. + +=head2 --quiet + +Be quiet. Don't print anything except fatal errors. + +=head2 --nodiag + +Don't output any diagnostic messages. Only portability +alerts will be printed. + +=head2 --nohints + +Don't output any hints. Hints often contain useful portability +notes. Warnings will still be displayed. + +=head2 --nochanges + +Don't suggest any changes. Only give diagnostic output and hints +unless these are also deactivated. + +=head2 --nofilter + +Don't filter the list of input files. By default, files not looking +like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. + +=head2 --strip + +Strip all script and documentation functionality from F. +This reduces the size of F dramatically and may be useful +if you want to include F in smaller modules without +increasing their distribution size too much. + +The stripped F will have a C<--unstrip> option that allows +you to undo the stripping, but only if an appropriate C +module is installed. + +=head2 --list-provided + +Lists the API elements for which compatibility is provided by +F. Also lists if it must be explicitly requested, +if it has dependencies, and if there are hints or warnings for it. + +=head2 --list-unsupported + +Lists the API elements that are known not to be supported by +F and below which version of Perl they probably +won't be available or work. + +=head2 --api-info=I + +Show portability information for API elements matching I. +If I is surrounded by slashes, it is interpreted as a regular +expression. + +=head1 DESCRIPTION + +In order for a Perl extension (XS) module to be as portable as possible +across differing versions of Perl itself, certain steps need to be taken. + +=over 4 + +=item * + +Including this header is the first major one. This alone will give you +access to a large part of the Perl API that hasn't been available in +earlier Perl releases. Use + + perl ppport.h --list-provided + +to see which API elements are provided by ppport.h. + +=item * + +You should avoid using deprecated parts of the API. For example, using +global Perl variables without the C prefix is deprecated. Also, +some API functions used to have a C prefix. Using this form is +also deprecated. You can safely use the supported API, as F +will provide wrappers for older Perl versions. + +=item * + +If you use one of a few functions or variables that were not present in +earlier versions of Perl, and that can't be provided using a macro, you +have to explicitly request support for these functions by adding one or +more C<#define>s in your source code before the inclusion of F. + +These functions or variables will be marked C in the list shown +by C<--list-provided>. + +Depending on whether you module has a single or multiple files that +use such functions or variables, you want either C or global +variants. + +For a C function or variable (used only in a single source +file), use: + + #define NEED_function + #define NEED_variable + +For a global function or variable (used in multiple source files), +use: + + #define NEED_function_GLOBAL + #define NEED_variable_GLOBAL + +Note that you mustn't have more than one global request for the +same function or variable in your project. + + Function / Variable Static Request Global Request + ----------------------------------------------------------------------------------------- + PL_parser NEED_PL_parser NEED_PL_parser_GLOBAL + PL_signals NEED_PL_signals NEED_PL_signals_GLOBAL + caller_cx() NEED_caller_cx NEED_caller_cx_GLOBAL + eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL + grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL + grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL + grok_number() NEED_grok_number NEED_grok_number_GLOBAL + grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL + grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL + load_module() NEED_load_module NEED_load_module_GLOBAL + mg_findext() NEED_mg_findext NEED_mg_findext_GLOBAL + my_snprintf() NEED_my_snprintf NEED_my_snprintf_GLOBAL + my_sprintf() NEED_my_sprintf NEED_my_sprintf_GLOBAL + my_strlcat() NEED_my_strlcat NEED_my_strlcat_GLOBAL + my_strlcpy() NEED_my_strlcpy NEED_my_strlcpy_GLOBAL + newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL + newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL + newSV_type() NEED_newSV_type NEED_newSV_type_GLOBAL + newSVpvn_flags() NEED_newSVpvn_flags NEED_newSVpvn_flags_GLOBAL + newSVpvn_share() NEED_newSVpvn_share NEED_newSVpvn_share_GLOBAL + pv_display() NEED_pv_display NEED_pv_display_GLOBAL + pv_escape() NEED_pv_escape NEED_pv_escape_GLOBAL + pv_pretty() NEED_pv_pretty NEED_pv_pretty_GLOBAL + sv_2pv_flags() NEED_sv_2pv_flags NEED_sv_2pv_flags_GLOBAL + sv_2pvbyte() NEED_sv_2pvbyte NEED_sv_2pvbyte_GLOBAL + sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL + sv_catpvf_mg_nocontext() NEED_sv_catpvf_mg_nocontext NEED_sv_catpvf_mg_nocontext_GLOBAL + sv_pvn_force_flags() NEED_sv_pvn_force_flags NEED_sv_pvn_force_flags_GLOBAL + sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL + sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL + sv_unmagicext() NEED_sv_unmagicext NEED_sv_unmagicext_GLOBAL + vload_module() NEED_vload_module NEED_vload_module_GLOBAL + vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL + warner() NEED_warner NEED_warner_GLOBAL + +To avoid namespace conflicts, you can change the namespace of the +explicitly exported functions / variables using the C +macro. Just C<#define> the macro before including C: + + #define DPPP_NAMESPACE MyOwnNamespace_ + #include "ppport.h" + +The default namespace is C. + +=back + +The good thing is that most of the above can be checked by running +F on your source code. See the next section for +details. + +=head1 EXAMPLES + +To verify whether F is needed for your module, whether you +should make any changes to your code, and whether any special defines +should be used, F can be run as a Perl script to check your +source code. Simply say: + + perl ppport.h + +The result will usually be a list of patches suggesting changes +that should at least be acceptable, if not necessarily the most +efficient solution, or a fix for all possible problems. + +If you know that your XS module uses features only available in +newer Perl releases, if you're aware that it uses C++ comments, +and if you want all suggestions as a single patch file, you could +use something like this: + + perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff + +If you only want your code to be scanned without any suggestions +for changes, use: + + perl ppport.h --nochanges + +You can specify a different C program or options, using +the C<--diff> option: + + perl ppport.h --diff='diff -C 10' + +This would output context diffs with 10 lines of context. + +If you want to create patched copies of your files instead, use: + + perl ppport.h --copy=.new + +To display portability information for the C function, +use: + + perl ppport.h --api-info=newSVpvn + +Since the argument to C<--api-info> can be a regular expression, +you can use + + perl ppport.h --api-info=/_nomg$/ + +to display portability information for all C<_nomg> functions or + + perl ppport.h --api-info=/./ + +to display information for all known API elements. + +=head1 BUGS + +If this version of F is causing failure during +the compilation of this module, please check if newer versions +of either this module or C are available on CPAN +before sending a bug report. + +If F was generated using the latest version of +C and is causing failure of this module, please +file a bug report here: L + +Please include the following information: + +=over 4 + +=item 1. + +The complete output from running "perl -V" + +=item 2. + +This file. + +=item 3. + +The name and version of the module you were trying to build. + +=item 4. + +A full log of the build that failed. + +=item 5. + +Any other information that you think could be relevant. + +=back + +For the latest version of this code, please get the C +module from CPAN. + +=head1 COPYRIGHT + +Version 3.x, Copyright (c) 2004-2013, Marcus Holland-Moritz. + +Version 2.x, Copyright (C) 2001, Paul Marquess. + +Version 1.x, Copyright (C) 1999, Kenneth Albanowski. + +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=head1 SEE ALSO + +See L. + +=cut + +use strict; + +# Disable broken TRIE-optimization +BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 } + +my $VERSION = 3.25; + +my %opt = ( + quiet => 0, + diag => 1, + hints => 1, + changes => 1, + cplusplus => 0, + filter => 1, + strip => 0, + version => 0, +); + +my($ppport) = $0 =~ /([\w.]+)$/; +my $LF = '(?:\r\n|[\r\n])'; # line feed +my $HS = "[ \t]"; # horizontal whitespace + +# Never use C comments in this file! +my $ccs = '/'.'*'; +my $cce = '*'.'/'; +my $rccs = quotemeta $ccs; +my $rcce = quotemeta $cce; + +eval { + require Getopt::Long; + Getopt::Long::GetOptions(\%opt, qw( + help quiet diag! filter! hints! changes! cplusplus strip version + patch=s copy=s diff=s compat-version=s + list-provided list-unsupported api-info=s + )) or usage(); +}; + +if ($@ and grep /^-/, @ARGV) { + usage() if "@ARGV" =~ /^--?h(?:elp)?$/; + die "Getopt::Long not found. Please don't use any options.\n"; +} + +if ($opt{version}) { + print "This is $0 $VERSION.\n"; + exit 0; +} + +usage() if $opt{help}; +strip() if $opt{strip}; + +if (exists $opt{'compat-version'}) { + my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) }; + if ($@) { + die "Invalid version number format: '$opt{'compat-version'}'\n"; + } + die "Only Perl 5 is supported\n" if $r != 5; + die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000; + $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s; +} +else { + $opt{'compat-version'} = 5; +} + +my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ + ? ( $1 => { + ($2 ? ( base => $2 ) : ()), + ($3 ? ( todo => $3 ) : ()), + (index($4, 'v') >= 0 ? ( varargs => 1 ) : ()), + (index($4, 'p') >= 0 ? ( provided => 1 ) : ()), + (index($4, 'n') >= 0 ? ( nothxarg => 1 ) : ()), + } ) + : die "invalid spec: $_" } qw( +AvFILLp|5.004050||p +AvFILL||| +BhkDISABLE||5.019003| +BhkENABLE||5.019003| +BhkENTRY_set||5.019003| +BhkENTRY||| +BhkFLAGS||| +CALL_BLOCK_HOOKS||| +CLASS|||n +CPERLscope|5.005000||p +CX_CURPAD_SAVE||| +CX_CURPAD_SV||| +CopFILEAV|5.006000||p +CopFILEGV_set|5.006000||p +CopFILEGV|5.006000||p +CopFILESV|5.006000||p +CopFILE_set|5.006000||p +CopFILE|5.006000||p +CopSTASHPV_set|5.006000||p +CopSTASHPV|5.006000||p +CopSTASH_eq|5.006000||p +CopSTASH_set|5.006000||p +CopSTASH|5.006000||p +CopyD|5.009002|5.004050|p +Copy||5.004050| +CvPADLIST||5.008001| +CvSTASH||| +CvWEAKOUTSIDE||| +DEFSV_set|5.010001||p +DEFSV|5.004050||p +END_EXTERN_C|5.005000||p +ENTER||| +ERRSV|5.004050||p +EXTEND||| +EXTERN_C|5.005000||p +F0convert|||n +FREETMPS||| +GIMME_V||5.004000|n +GIMME|||n +GROK_NUMERIC_RADIX|5.007002||p +G_ARRAY||| +G_DISCARD||| +G_EVAL||| +G_METHOD|5.006001||p +G_NOARGS||| +G_SCALAR||| +G_VOID||5.004000| +GetVars||| +GvAV||| +GvCV||| +GvHV||| +GvSVn|5.009003||p +GvSV||| +Gv_AMupdate||5.011000| +HEf_SVKEY|5.004000|5.004000|p +HeHASH||5.004000| +HeKEY||5.004000| +HeKLEN||5.004000| +HePV||5.004000| +HeSVKEY_force||5.004000| +HeSVKEY_set||5.004000| +HeSVKEY||5.004000| +HeUTF8|5.010001|5.010001|p +HeVAL||5.004000| +HvENAMELEN||5.015004| +HvENAMEUTF8||5.015004| +HvENAME||5.013007| +HvNAMELEN_get|5.009003||p +HvNAMELEN||5.015004| +HvNAMEUTF8||5.015004| +HvNAME_get|5.009003||p +HvNAME||| +INT2PTR|5.006000||p +IN_LOCALE_COMPILETIME|5.007002||p +IN_LOCALE_RUNTIME|5.007002||p +IN_LOCALE|5.007002||p +IN_PERL_COMPILETIME|5.008001||p +IS_NUMBER_GREATER_THAN_UV_MAX|5.007002||p +IS_NUMBER_INFINITY|5.007002||p +IS_NUMBER_IN_UV|5.007002||p +IS_NUMBER_NAN|5.007003||p +IS_NUMBER_NEG|5.007002||p +IS_NUMBER_NOT_INT|5.007002||p +IVSIZE|5.006000||p +IVTYPE|5.006000||p +IVdf|5.006000||p +LEAVE||| +LINKLIST||5.013006| +LVRET||| +MARK||| +MULTICALL||5.019003| +MUTABLE_PTR|||p +MUTABLE_SV|||p +MY_CXT_CLONE|5.009002||p +MY_CXT_INIT|5.007003||p +MY_CXT|5.007003||p +MoveD|5.009002|5.004050|p +Move||5.004050| +NOOP|5.005000||p +NUM2PTR|5.006000||p +NVTYPE|5.006000||p +NVef|5.006001||p +NVff|5.006001||p +NVgf|5.006001||p +Newxc|5.009003||p +Newxz|5.009003||p +Newx|5.009003||p +Nullav||| +Nullch||| +Nullcv||| +Nullhv||| +Nullsv||| +OP_CLASS||5.013007| +OP_DESC||5.007003| +OP_NAME||5.007003| +ORIGMARK||| +PAD_BASE_SV||| +PAD_CLONE_VARS||| +PAD_COMPNAME_FLAGS||| +PAD_COMPNAME_GEN_set||| +PAD_COMPNAME_GEN||| +PAD_COMPNAME_OURSTASH||| +PAD_COMPNAME_PV||| +PAD_COMPNAME_TYPE||| +PAD_RESTORE_LOCAL||| +PAD_SAVE_LOCAL||| +PAD_SAVE_SETNULLPAD||| +PAD_SETSV||| +PAD_SET_CUR_NOSAVE||| +PAD_SET_CUR||| +PAD_SVl||| +PAD_SV||| +PERLIO_FUNCS_CAST|5.009003||p +PERLIO_FUNCS_DECL|5.009003||p +PERL_ABS|5.008001||p +PERL_BCDVERSION|5.019002||p +PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p +PERL_HASH|5.004000||p +PERL_INT_MAX|5.004000||p +PERL_INT_MIN|5.004000||p +PERL_LONG_MAX|5.004000||p +PERL_LONG_MIN|5.004000||p +PERL_MAGIC_arylen|5.007002||p +PERL_MAGIC_backref|5.007002||p +PERL_MAGIC_bm|5.007002||p +PERL_MAGIC_collxfrm|5.007002||p +PERL_MAGIC_dbfile|5.007002||p +PERL_MAGIC_dbline|5.007002||p +PERL_MAGIC_defelem|5.007002||p +PERL_MAGIC_envelem|5.007002||p +PERL_MAGIC_env|5.007002||p +PERL_MAGIC_ext|5.007002||p +PERL_MAGIC_fm|5.007002||p +PERL_MAGIC_glob|5.019002||p +PERL_MAGIC_isaelem|5.007002||p +PERL_MAGIC_isa|5.007002||p +PERL_MAGIC_mutex|5.019002||p +PERL_MAGIC_nkeys|5.007002||p +PERL_MAGIC_overload_elem|5.019002||p +PERL_MAGIC_overload_table|5.007002||p +PERL_MAGIC_overload|5.019002||p +PERL_MAGIC_pos|5.007002||p +PERL_MAGIC_qr|5.007002||p +PERL_MAGIC_regdata|5.007002||p +PERL_MAGIC_regdatum|5.007002||p +PERL_MAGIC_regex_global|5.007002||p +PERL_MAGIC_shared_scalar|5.007003||p +PERL_MAGIC_shared|5.007003||p +PERL_MAGIC_sigelem|5.007002||p +PERL_MAGIC_sig|5.007002||p +PERL_MAGIC_substr|5.007002||p +PERL_MAGIC_sv|5.007002||p +PERL_MAGIC_taint|5.007002||p +PERL_MAGIC_tiedelem|5.007002||p +PERL_MAGIC_tiedscalar|5.007002||p +PERL_MAGIC_tied|5.007002||p +PERL_MAGIC_utf8|5.008001||p +PERL_MAGIC_uvar_elem|5.007003||p +PERL_MAGIC_uvar|5.007002||p +PERL_MAGIC_vec|5.007002||p +PERL_MAGIC_vstring|5.008001||p +PERL_PV_ESCAPE_ALL|5.009004||p +PERL_PV_ESCAPE_FIRSTCHAR|5.009004||p +PERL_PV_ESCAPE_NOBACKSLASH|5.009004||p +PERL_PV_ESCAPE_NOCLEAR|5.009004||p +PERL_PV_ESCAPE_QUOTE|5.009004||p +PERL_PV_ESCAPE_RE|5.009005||p +PERL_PV_ESCAPE_UNI_DETECT|5.009004||p +PERL_PV_ESCAPE_UNI|5.009004||p +PERL_PV_PRETTY_DUMP|5.009004||p +PERL_PV_PRETTY_ELLIPSES|5.010000||p +PERL_PV_PRETTY_LTGT|5.009004||p +PERL_PV_PRETTY_NOCLEAR|5.010000||p +PERL_PV_PRETTY_QUOTE|5.009004||p +PERL_PV_PRETTY_REGPROP|5.009004||p +PERL_QUAD_MAX|5.004000||p +PERL_QUAD_MIN|5.004000||p +PERL_REVISION|5.006000||p +PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p +PERL_SCAN_DISALLOW_PREFIX|5.007003||p +PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p +PERL_SCAN_SILENT_ILLDIGIT|5.008001||p +PERL_SHORT_MAX|5.004000||p +PERL_SHORT_MIN|5.004000||p +PERL_SIGNALS_UNSAFE_FLAG|5.008001||p +PERL_SUBVERSION|5.006000||p +PERL_SYS_INIT3||5.010000| +PERL_SYS_INIT||5.010000| +PERL_SYS_TERM||5.019003| +PERL_UCHAR_MAX|5.004000||p +PERL_UCHAR_MIN|5.004000||p +PERL_UINT_MAX|5.004000||p +PERL_UINT_MIN|5.004000||p +PERL_ULONG_MAX|5.004000||p +PERL_ULONG_MIN|5.004000||p +PERL_UNUSED_ARG|5.009003||p +PERL_UNUSED_CONTEXT|5.009004||p +PERL_UNUSED_DECL|5.007002||p +PERL_UNUSED_VAR|5.007002||p +PERL_UQUAD_MAX|5.004000||p +PERL_UQUAD_MIN|5.004000||p +PERL_USE_GCC_BRACE_GROUPS|5.009004||p +PERL_USHORT_MAX|5.004000||p +PERL_USHORT_MIN|5.004000||p +PERL_VERSION|5.006000||p +PL_DBsignal|5.005000||p +PL_DBsingle|||pn +PL_DBsub|||pn +PL_DBtrace|||pn +PL_Sv|5.005000||p +PL_bufend|5.019002||p +PL_bufptr|5.019002||p +PL_check||5.006000| +PL_compiling|5.004050||p +PL_comppad_name||5.017004| +PL_comppad||5.008001| +PL_copline|5.019002||p +PL_curcop|5.004050||p +PL_curpad||5.005000| +PL_curstash|5.004050||p +PL_debstash|5.004050||p +PL_defgv|5.004050||p +PL_diehook|5.004050||p +PL_dirty|5.004050||p +PL_dowarn|||pn +PL_errgv|5.004050||p +PL_error_count|5.019002||p +PL_expect|5.019002||p +PL_hexdigit|5.005000||p +PL_hints|5.005000||p +PL_in_my_stash|5.019002||p +PL_in_my|5.019002||p +PL_keyword_plugin||5.011002| +PL_last_in_gv|||n +PL_laststatval|5.005000||p +PL_lex_state|5.019002||p +PL_lex_stuff|5.019002||p +PL_linestr|5.019002||p +PL_modglobal||5.005000|n +PL_na|5.004050||pn +PL_no_modify|5.006000||p +PL_ofsgv|||n +PL_opfreehook||5.011000|n +PL_parser|5.009005|5.009005|p +PL_peepp||5.007003|n +PL_perl_destruct_level|5.004050||p +PL_perldb|5.004050||p +PL_ppaddr|5.006000||p +PL_rpeepp||5.013005|n +PL_rsfp_filters|5.019002||p +PL_rsfp|5.019002||p +PL_rs|||n +PL_signals|5.008001||p +PL_stack_base|5.004050||p +PL_stack_sp|5.004050||p +PL_statcache|5.005000||p +PL_stdingv|5.004050||p +PL_sv_arenaroot|5.004050||p +PL_sv_no|5.004050||pn +PL_sv_undef|5.004050||pn +PL_sv_yes|5.004050||pn +PL_tainted|5.004050||p +PL_tainting|5.004050||p +PL_tokenbuf|5.019002||p +POP_MULTICALL||5.019003| +POPi|||n +POPl|||n +POPn|||n +POPpbytex||5.007001|n +POPpx||5.005030|n +POPp|||n +POPs|||n +PTR2IV|5.006000||p +PTR2NV|5.006000||p +PTR2UV|5.006000||p +PTR2nat|5.009003||p +PTR2ul|5.007001||p +PTRV|5.006000||p +PUSHMARK||| +PUSH_MULTICALL||5.019003| +PUSHi||| +PUSHmortal|5.009002||p +PUSHn||| +PUSHp||| +PUSHs||| +PUSHu|5.004000||p +PUTBACK||| +PadARRAY||5.019003| +PadMAX||5.019003| +PadlistARRAY||5.019003| +PadlistMAX||5.019003| +PadlistNAMESARRAY||5.019003| +PadlistNAMESMAX||5.019003| +PadlistNAMES||5.019003| +PadlistREFCNT||5.017004| +PadnameIsOUR||| +PadnameIsSTATE||| +PadnameLEN||5.019003| +PadnameOURSTASH||| +PadnameOUTER||| +PadnamePV||5.019003| +PadnameSV||5.019003| +PadnameTYPE||| +PadnameUTF8||5.019003| +PadnamelistARRAY||5.019003| +PadnamelistMAX||5.019003| +PerlIO_clearerr||5.007003| +PerlIO_close||5.007003| +PerlIO_context_layers||5.009004| +PerlIO_eof||5.007003| +PerlIO_error||5.007003| +PerlIO_fileno||5.007003| +PerlIO_fill||5.007003| +PerlIO_flush||5.007003| +PerlIO_get_base||5.007003| +PerlIO_get_bufsiz||5.007003| +PerlIO_get_cnt||5.007003| +PerlIO_get_ptr||5.007003| +PerlIO_read||5.007003| +PerlIO_seek||5.007003| +PerlIO_set_cnt||5.007003| +PerlIO_set_ptrcnt||5.007003| +PerlIO_setlinebuf||5.007003| +PerlIO_stderr||5.007003| +PerlIO_stdin||5.007003| +PerlIO_stdout||5.007003| +PerlIO_tell||5.007003| +PerlIO_unread||5.007003| +PerlIO_write||5.007003| +Perl_signbit||5.009005|n +PoisonFree|5.009004||p +PoisonNew|5.009004||p +PoisonWith|5.009004||p +Poison|5.008000||p +READ_XDIGIT||5.017006| +RETVAL|||n +Renewc||| +Renew||| +SAVECLEARSV||| +SAVECOMPPAD||| +SAVEPADSV||| +SAVETMPS||| +SAVE_DEFSV|5.004050||p +SPAGAIN||| +SP||| +START_EXTERN_C|5.005000||p +START_MY_CXT|5.007003||p +STMT_END|||p +STMT_START|||p +STR_WITH_LEN|5.009003||p +ST||| +SV_CONST_RETURN|5.009003||p +SV_COW_DROP_PV|5.008001||p +SV_COW_SHARED_HASH_KEYS|5.009005||p +SV_GMAGIC|5.007002||p +SV_HAS_TRAILING_NUL|5.009004||p +SV_IMMEDIATE_UNREF|5.007001||p +SV_MUTABLE_RETURN|5.009003||p +SV_NOSTEAL|5.009002||p +SV_SMAGIC|5.009003||p +SV_UTF8_NO_ENCODING|5.008001||p +SVfARG|5.009005||p +SVf_UTF8|5.006000||p +SVf|5.006000||p +SVt_INVLIST||5.019002| +SVt_IV||| +SVt_NULL||| +SVt_NV||| +SVt_PVAV||| +SVt_PVCV||| +SVt_PVFM||| +SVt_PVGV||| +SVt_PVHV||| +SVt_PVIO||| +SVt_PVIV||| +SVt_PVLV||| +SVt_PVMG||| +SVt_PVNV||| +SVt_PV||| +SVt_REGEXP||5.011000| +Safefree||| +Slab_Alloc||| +Slab_Free||| +Slab_to_ro||| +Slab_to_rw||| +StructCopy||| +SvCUR_set||| +SvCUR||| +SvEND||| +SvGAMAGIC||5.006001| +SvGETMAGIC|5.004050||p +SvGROW||| +SvIOK_UV||5.006000| +SvIOK_notUV||5.006000| +SvIOK_off||| +SvIOK_only_UV||5.006000| +SvIOK_only||| +SvIOK_on||| +SvIOKp||| +SvIOK||| +SvIVX||| +SvIV_nomg|5.009001||p +SvIV_set||| +SvIVx||| +SvIV||| +SvIsCOW_shared_hash||5.008003| +SvIsCOW||5.008003| +SvLEN_set||| +SvLEN||| +SvLOCK||5.007003| +SvMAGIC_set|5.009003||p +SvNIOK_off||| +SvNIOKp||| +SvNIOK||| +SvNOK_off||| +SvNOK_only||| +SvNOK_on||| +SvNOKp||| +SvNOK||| +SvNVX||| +SvNV_nomg||5.013002| +SvNV_set||| +SvNVx||| +SvNV||| +SvOK||| +SvOOK_offset||5.011000| +SvOOK||| +SvPOK_off||| +SvPOK_only_UTF8||5.006000| +SvPOK_only||| +SvPOK_on||| +SvPOKp||| +SvPOK||| +SvPVX_const|5.009003||p +SvPVX_mutable|5.009003||p +SvPVX||| +SvPV_const|5.009003||p +SvPV_flags_const_nolen|5.009003||p +SvPV_flags_const|5.009003||p +SvPV_flags_mutable|5.009003||p +SvPV_flags|5.007002||p +SvPV_force_flags_mutable|5.009003||p +SvPV_force_flags_nolen|5.009003||p +SvPV_force_flags|5.007002||p +SvPV_force_mutable|5.009003||p +SvPV_force_nolen|5.009003||p +SvPV_force_nomg_nolen|5.009003||p +SvPV_force_nomg|5.007002||p +SvPV_force|||p +SvPV_mutable|5.009003||p +SvPV_nolen_const|5.009003||p +SvPV_nolen|5.006000||p +SvPV_nomg_const_nolen|5.009003||p +SvPV_nomg_const|5.009003||p +SvPV_nomg_nolen|5.013007||p +SvPV_nomg|5.007002||p +SvPV_renew|5.009003||p +SvPV_set||| +SvPVbyte_force||5.009002| +SvPVbyte_nolen||5.006000| +SvPVbytex_force||5.006000| +SvPVbytex||5.006000| +SvPVbyte|5.006000||p +SvPVutf8_force||5.006000| +SvPVutf8_nolen||5.006000| +SvPVutf8x_force||5.006000| +SvPVutf8x||5.006000| +SvPVutf8||5.006000| +SvPVx||| +SvPV||| +SvREFCNT_dec_NN||5.017007| +SvREFCNT_dec||| +SvREFCNT_inc_NN|5.009004||p +SvREFCNT_inc_simple_NN|5.009004||p +SvREFCNT_inc_simple_void_NN|5.009004||p +SvREFCNT_inc_simple_void|5.009004||p +SvREFCNT_inc_simple|5.009004||p +SvREFCNT_inc_void_NN|5.009004||p +SvREFCNT_inc_void|5.009004||p +SvREFCNT_inc|||p +SvREFCNT||| +SvROK_off||| +SvROK_on||| +SvROK||| +SvRV_set|5.009003||p +SvRV||| +SvRXOK||5.009005| +SvRX||5.009005| +SvSETMAGIC||| +SvSHARED_HASH|5.009003||p +SvSHARE||5.007003| +SvSTASH_set|5.009003||p +SvSTASH||| +SvSetMagicSV_nosteal||5.004000| +SvSetMagicSV||5.004000| +SvSetSV_nosteal||5.004000| +SvSetSV||| +SvTAINTED_off||5.004000| +SvTAINTED_on||5.004000| +SvTAINTED||5.004000| +SvTAINT||| +SvTHINKFIRST||| +SvTRUE_nomg||5.013006| +SvTRUE||| +SvTYPE||| +SvUNLOCK||5.007003| +SvUOK|5.007001|5.006000|p +SvUPGRADE||| +SvUTF8_off||5.006000| +SvUTF8_on||5.006000| +SvUTF8||5.006000| +SvUVXx|5.004000||p +SvUVX|5.004000||p +SvUV_nomg|5.009001||p +SvUV_set|5.009003||p +SvUVx|5.004000||p +SvUV|5.004000||p +SvVOK||5.008001| +SvVSTRING_mg|5.009004||p +THIS|||n +UNDERBAR|5.009002||p +UTF8_MAXBYTES|5.009002||p +UVSIZE|5.006000||p +UVTYPE|5.006000||p +UVXf|5.007001||p +UVof|5.006000||p +UVuf|5.006000||p +UVxf|5.006000||p +WARN_ALL|5.006000||p +WARN_AMBIGUOUS|5.006000||p +WARN_ASSERTIONS|5.019002||p +WARN_BAREWORD|5.006000||p +WARN_CLOSED|5.006000||p +WARN_CLOSURE|5.006000||p +WARN_DEBUGGING|5.006000||p +WARN_DEPRECATED|5.006000||p +WARN_DIGIT|5.006000||p +WARN_EXEC|5.006000||p +WARN_EXITING|5.006000||p +WARN_GLOB|5.006000||p +WARN_INPLACE|5.006000||p +WARN_INTERNAL|5.006000||p +WARN_IO|5.006000||p +WARN_LAYER|5.008000||p +WARN_MALLOC|5.006000||p +WARN_MISC|5.006000||p +WARN_NEWLINE|5.006000||p +WARN_NUMERIC|5.006000||p +WARN_ONCE|5.006000||p +WARN_OVERFLOW|5.006000||p +WARN_PACK|5.006000||p +WARN_PARENTHESIS|5.006000||p +WARN_PIPE|5.006000||p +WARN_PORTABLE|5.006000||p +WARN_PRECEDENCE|5.006000||p +WARN_PRINTF|5.006000||p +WARN_PROTOTYPE|5.006000||p +WARN_QW|5.006000||p +WARN_RECURSION|5.006000||p +WARN_REDEFINE|5.006000||p +WARN_REGEXP|5.006000||p +WARN_RESERVED|5.006000||p +WARN_SEMICOLON|5.006000||p +WARN_SEVERE|5.006000||p +WARN_SIGNAL|5.006000||p +WARN_SUBSTR|5.006000||p +WARN_SYNTAX|5.006000||p +WARN_TAINT|5.006000||p +WARN_THREADS|5.008000||p +WARN_UNINITIALIZED|5.006000||p +WARN_UNOPENED|5.006000||p +WARN_UNPACK|5.006000||p +WARN_UNTIE|5.006000||p +WARN_UTF8|5.006000||p +WARN_VOID|5.006000||p +WIDEST_UTYPE|5.015004||p +XCPT_CATCH|5.009002||p +XCPT_RETHROW|5.009002|5.007001|p +XCPT_TRY_END|5.009002|5.004000|p +XCPT_TRY_START|5.009002|5.004000|p +XPUSHi||| +XPUSHmortal|5.009002||p +XPUSHn||| +XPUSHp||| +XPUSHs||| +XPUSHu|5.004000||p +XSPROTO|5.010000||p +XSRETURN_EMPTY||| +XSRETURN_IV||| +XSRETURN_NO||| +XSRETURN_NV||| +XSRETURN_PV||| +XSRETURN_UNDEF||| +XSRETURN_UV|5.008001||p +XSRETURN_YES||| +XSRETURN|||p +XST_mIV||| +XST_mNO||| +XST_mNV||| +XST_mPV||| +XST_mUNDEF||| +XST_mUV|5.008001||p +XST_mYES||| +XS_APIVERSION_BOOTCHECK||5.013004| +XS_EXTERNAL||5.019003| +XS_INTERNAL||5.019003| +XS_VERSION_BOOTCHECK||| +XS_VERSION||| +XSprePUSH|5.006000||p +XS||| +XopDISABLE||5.019003| +XopENABLE||5.019003| +XopENTRY_set||5.019003| +XopENTRY||5.019003| +XopFLAGS||5.013007| +ZeroD|5.009002||p +Zero||| +_aMY_CXT|5.007003||p +_add_range_to_invlist||| +_append_range_to_invlist||| +_core_swash_init||| +_get_swash_invlist||| +_invlist_array_init||| +_invlist_contains_cp||| +_invlist_contents||| +_invlist_dump||| +_invlist_intersection_maybe_complement_2nd||| +_invlist_intersection||| +_invlist_invert_prop||| +_invlist_invert||| +_invlist_len||| +_invlist_populate_swatch||| +_invlist_search||| +_invlist_subtract||| +_invlist_union_maybe_complement_2nd||| +_invlist_union||| +_is_uni_FOO||5.017008| +_is_uni_perl_idcont||5.017008| +_is_uni_perl_idstart||5.017007| +_is_utf8_FOO||5.017008| +_is_utf8_mark||5.017008| +_is_utf8_perl_idcont||5.017008| +_is_utf8_perl_idstart||5.017007| +_new_invlist_C_array||| +_new_invlist||| +_pMY_CXT|5.007003||p +_swash_inversion_hash||| +_swash_to_invlist||| +_to_fold_latin1||| +_to_uni_fold_flags||5.013011| +_to_upper_title_latin1||| +_to_utf8_fold_flags||5.015006| +_to_utf8_lower_flags||5.015006| +_to_utf8_title_flags||5.015006| +_to_utf8_upper_flags||5.015006| +aMY_CXT_|5.007003||p +aMY_CXT|5.007003||p +aTHXR_|5.019002||p +aTHXR|5.019002||p +aTHX_|5.006000||p +aTHX|5.006000||p +aassign_common_vars||| +add_cp_to_invlist||| +add_data|||n +add_utf16_textfilter||| +addmad||| +adjust_size_and_find_bucket|||n +adjust_stack_on_leave||| +alloc_maybe_populate_EXACT||| +alloccopstash||| +allocmy||| +amagic_call||| +amagic_cmp_locale||| +amagic_cmp||| +amagic_deref_call||5.013007| +amagic_i_ncmp||| +amagic_is_enabled||| +amagic_ncmp||| +anonymise_cv_maybe||| +any_dup||| +ao||| +append_madprops||| +apply_attrs_my||| +apply_attrs_string||5.006001| +apply_attrs||| +apply||| +assert_uft8_cache_coherent||| +atfork_lock||5.007003|n +atfork_unlock||5.007003|n +av_arylen_p||5.009003| +av_clear||| +av_create_and_push||5.009005| +av_create_and_unshift_one||5.009005| +av_delete||5.006000| +av_exists||5.006000| +av_extend_guts||| +av_extend||| +av_fetch||| +av_fill||| +av_iter_p||5.011000| +av_len||| +av_make||| +av_pop||| +av_push||| +av_reify||| +av_shift||| +av_store||| +av_tindex||5.017009| +av_top_index||5.017009| +av_undef||| +av_unshift||| +ax|||n +bad_type_gv||| +bad_type_pv||| +bind_match||| +block_end||| +block_gimme||5.004000| +block_start||| +blockhook_register||5.013003| +boolSV|5.004000||p +boot_core_PerlIO||| +boot_core_UNIVERSAL||| +boot_core_mro||| +bytes_cmp_utf8||5.013007| +bytes_from_utf8||5.007001| +bytes_to_uni|||n +bytes_to_utf8||5.006001| +call_argv|5.006000||p +call_atexit||5.006000| +call_list||5.004000| +call_method|5.006000||p +call_pv|5.006000||p +call_sv|5.006000||p +caller_cx|5.013005|5.013005|p +calloc||5.007002|n +cando||| +cast_i32||5.006000| +cast_iv||5.006000| +cast_ulong||5.006000| +cast_uv||5.006000| +check_locale_boundary_crossing||| +check_type_and_open||| +check_uni||| +check_utf8_print||| +checkcomma||| +ckWARN|5.006000||p +ck_entersub_args_core||| +ck_entersub_args_list||5.013006| +ck_entersub_args_proto_or_list||5.013006| +ck_entersub_args_proto||5.013006| +ck_warner_d||5.011001|v +ck_warner||5.011001|v +ckwarn_common||| +ckwarn_d||5.009003| +ckwarn||5.009003| +cl_and|||n +cl_anything|||n +cl_init|||n +cl_is_anything|||n +cl_or|||n +clear_placeholders||| +clone_params_del|||n +clone_params_new|||n +closest_cop||| +compute_EXACTish||| +convert||| +cop_fetch_label||5.015001| +cop_free||| +cop_hints_2hv||5.013007| +cop_hints_fetch_pvn||5.013007| +cop_hints_fetch_pvs||5.013007| +cop_hints_fetch_pv||5.013007| +cop_hints_fetch_sv||5.013007| +cop_store_label||5.015001| +cophh_2hv||5.013007| +cophh_copy||5.013007| +cophh_delete_pvn||5.013007| +cophh_delete_pvs||5.013007| +cophh_delete_pv||5.013007| +cophh_delete_sv||5.013007| +cophh_fetch_pvn||5.013007| +cophh_fetch_pvs||5.013007| +cophh_fetch_pv||5.013007| +cophh_fetch_sv||5.013007| +cophh_free||5.013007| +cophh_new_empty||5.019003| +cophh_store_pvn||5.013007| +cophh_store_pvs||5.013007| +cophh_store_pv||5.013007| +cophh_store_sv||5.013007| +core_prototype||| +core_regclass_swash||| +coresub_op||| +could_it_be_a_POSIX_class||| +cr_textfilter||| +create_eval_scope||| +croak_memory_wrap||5.019003|n +croak_no_mem|||n +croak_no_modify||5.013003|n +croak_nocontext|||vn +croak_popstack|||n +croak_sv||5.013001| +croak_xs_usage||5.010001|n +croak|||v +csighandler||5.009003|n +curmad||| +current_re_engine||| +curse||| +custom_op_desc||5.007003| +custom_op_name||5.007003| +custom_op_register||5.013007| +custom_op_xop||5.013007| +cv_ckproto_len_flags||| +cv_clone_into||| +cv_clone||| +cv_const_sv_or_av||| +cv_const_sv||5.004000| +cv_dump||| +cv_forget_slab||| +cv_get_call_checker||5.013006| +cv_set_call_checker||5.013006| +cv_undef||| +cvgv_set||| +cvstash_set||| +cx_dump||5.005000| +cx_dup||| +cxinc||| +dAXMARK|5.009003||p +dAX|5.007002||p +dITEMS|5.007002||p +dMARK||| +dMULTICALL||5.009003| +dMY_CXT_SV|5.007003||p +dMY_CXT|5.007003||p +dNOOP|5.006000||p +dORIGMARK||| +dSP||| +dTHR|5.004050||p +dTHXR|5.019002||p +dTHXa|5.006000||p +dTHXoa|5.006000||p +dTHX|5.006000||p +dUNDERBAR|5.009002||p +dVAR|5.009003||p +dXCPT|5.009002||p +dXSARGS||| +dXSI32||| +dXSTARG|5.006000||p +deb_curcv||| +deb_nocontext|||vn +deb_stack_all||| +deb_stack_n||| +debop||5.005000| +debprofdump||5.005000| +debprof||| +debstackptrs||5.007003| +debstack||5.007003| +debug_start_match||| +deb||5.007003|v +defelem_target||| +del_sv||| +delete_eval_scope||| +delimcpy||5.004000|n +deprecate_commaless_var_list||| +despatch_signals||5.007001| +destroy_matcher||| +die_nocontext|||vn +die_sv||5.013001| +die_unwind||| +die|||v +dirp_dup||| +div128||| +djSP||| +do_aexec5||| +do_aexec||| +do_aspawn||| +do_binmode||5.004050| +do_chomp||| +do_close||| +do_delete_local||| +do_dump_pad||| +do_eof||| +do_exec3||| +do_execfree||| +do_exec||| +do_gv_dump||5.006000| +do_gvgv_dump||5.006000| +do_hv_dump||5.006000| +do_ipcctl||| +do_ipcget||| +do_join||| +do_magic_dump||5.006000| +do_msgrcv||| +do_msgsnd||| +do_ncmp||| +do_oddball||| +do_op_dump||5.006000| +do_op_xmldump||| +do_open9||5.006000| +do_openn||5.007001| +do_open||5.004000| +do_pmop_dump||5.006000| +do_pmop_xmldump||| +do_print||| +do_readline||| +do_seek||| +do_semop||| +do_shmio||| +do_smartmatch||| +do_spawn_nowait||| +do_spawn||| +do_sprintf||| +do_sv_dump||5.006000| +do_sysseek||| +do_tell||| +do_trans_complex_utf8||| +do_trans_complex||| +do_trans_count_utf8||| +do_trans_count||| +do_trans_simple_utf8||| +do_trans_simple||| +do_trans||| +do_vecget||| +do_vecset||| +do_vop||| +docatch||| +doeval||| +dofile||| +dofindlabel||| +doform||| +doing_taint||5.008001|n +dooneliner||| +doopen_pm||| +doparseform||| +dopoptoeval||| +dopoptogiven||| +dopoptolabel||| +dopoptoloop||| +dopoptosub_at||| +dopoptowhen||| +doref||5.009003| +dounwind||| +dowantarray||| +dump_all_perl||| +dump_all||5.006000| +dump_eval||5.006000| +dump_exec_pos||| +dump_fds||| +dump_form||5.006000| +dump_indent||5.006000|v +dump_mstats||| +dump_packsubs_perl||| +dump_packsubs||5.006000| +dump_sub_perl||| +dump_sub||5.006000| +dump_sv_child||| +dump_trie_interim_list||| +dump_trie_interim_table||| +dump_trie||| +dump_vindent||5.006000| +dumpuntil||| +dup_attrlist||| +emulate_cop_io||| +eval_pv|5.006000||p +eval_sv|5.006000||p +exec_failed||| +expect_number||| +fbm_compile||5.005000| +fbm_instr||5.005000| +feature_is_enabled||| +filter_add||| +filter_del||| +filter_gets||| +filter_read||| +finalize_optree||| +finalize_op||| +find_and_forget_pmops||| +find_array_subscript||| +find_beginning||| +find_byclass||| +find_hash_subscript||| +find_in_my_stash||| +find_lexical_cv||| +find_runcv_where||| +find_runcv||5.008001| +find_rundefsv2||| +find_rundefsvoffset||5.009002| +find_rundefsv||5.013002| +find_script||| +find_uninit_var||| +first_symbol|||n +foldEQ_latin1||5.013008|n +foldEQ_locale||5.013002|n +foldEQ_utf8_flags||5.013010| +foldEQ_utf8||5.013002| +foldEQ||5.013002|n +fold_constants||| +forbid_setid||| +force_ident_maybe_lex||| +force_ident||| +force_list||| +force_next||| +force_strict_version||| +force_version||| +force_word||| +forget_pmop||| +form_nocontext|||vn +form_short_octal_warning||| +form||5.004000|v +fp_dup||| +fprintf_nocontext|||vn +free_global_struct||| +free_tied_hv_pool||| +free_tmps||| +gen_constant_list||| +get_and_check_backslash_N_name||| +get_aux_mg||| +get_av|5.006000||p +get_context||5.006000|n +get_cvn_flags|5.009005||p +get_cvs|5.011000||p +get_cv|5.006000||p +get_db_sub||| +get_debug_opts||| +get_hash_seed||| +get_hv|5.006000||p +get_invlist_iter_addr||| +get_invlist_offset_addr||| +get_invlist_previous_index_addr||| +get_mstats||| +get_no_modify||| +get_num||| +get_op_descs||5.005000| +get_op_names||5.005000| +get_opargs||| +get_ppaddr||5.006000| +get_re_arg||| +get_sv|5.006000||p +get_vtbl||5.005030| +getcwd_sv||5.007002| +getenv_len||| +glob_2number||| +glob_assign_glob||| +glob_assign_ref||| +gp_dup||| +gp_free||| +gp_ref||| +grok_bin|5.007003||p +grok_bslash_N||| +grok_bslash_c||| +grok_bslash_o||| +grok_bslash_x||| +grok_hex|5.007003||p +grok_number|5.007002||p +grok_numeric_radix|5.007002||p +grok_oct|5.007003||p +group_end||| +gv_AVadd||| +gv_HVadd||| +gv_IOadd||| +gv_SVadd||| +gv_add_by_type||5.011000| +gv_autoload4||5.004000| +gv_autoload_pvn||5.015004| +gv_autoload_pv||5.015004| +gv_autoload_sv||5.015004| +gv_check||| +gv_const_sv||5.009003| +gv_dump||5.006000| +gv_efullname3||5.004000| +gv_efullname4||5.006001| +gv_efullname||| +gv_ename||| +gv_fetchfile_flags||5.009005| +gv_fetchfile||| +gv_fetchmeth_autoload||5.007003| +gv_fetchmeth_pv_autoload||5.015004| +gv_fetchmeth_pvn_autoload||5.015004| +gv_fetchmeth_pvn||5.015004| +gv_fetchmeth_pv||5.015004| +gv_fetchmeth_sv_autoload||5.015004| +gv_fetchmeth_sv||5.015004| +gv_fetchmethod_autoload||5.004000| +gv_fetchmethod_pv_flags||5.015004| +gv_fetchmethod_pvn_flags||5.015004| +gv_fetchmethod_sv_flags||5.015004| +gv_fetchmethod||| +gv_fetchmeth||| +gv_fetchpvn_flags|5.009002||p +gv_fetchpvs|5.009004||p +gv_fetchpv||| +gv_fetchsv|5.009002||p +gv_fullname3||5.004000| +gv_fullname4||5.006001| +gv_fullname||| +gv_handler||5.007001| +gv_init_pvn||5.015004| +gv_init_pv||5.015004| +gv_init_svtype||| +gv_init_sv||5.015004| +gv_init||| +gv_magicalize_isa||| +gv_name_set||5.009004| +gv_stashpvn|5.004000||p +gv_stashpvs|5.009003||p +gv_stashpv||| +gv_stashsv||| +gv_try_downgrade||| +handle_regex_sets||| +he_dup||| +hek_dup||| +hfree_next_entry||| +hfreeentries||| +hsplit||| +hv_assert||| +hv_auxinit||| +hv_backreferences_p||| +hv_clear_placeholders||5.009001| +hv_clear||| +hv_common_key_len||5.010000| +hv_common||5.010000| +hv_copy_hints_hv||5.009004| +hv_delayfree_ent||5.004000| +hv_delete_common||| +hv_delete_ent||5.004000| +hv_delete||| +hv_eiter_p||5.009003| +hv_eiter_set||5.009003| +hv_ename_add||| +hv_ename_delete||| +hv_exists_ent||5.004000| +hv_exists||| +hv_fetch_ent||5.004000| +hv_fetchs|5.009003||p +hv_fetch||| +hv_fill||5.013002| +hv_free_ent_ret||| +hv_free_ent||5.004000| +hv_iterinit||| +hv_iterkeysv||5.004000| +hv_iterkey||| +hv_iternext_flags||5.008000| +hv_iternextsv||| +hv_iternext||| +hv_iterval||| +hv_kill_backrefs||| +hv_ksplit||5.004000| +hv_magic_check|||n +hv_magic||| +hv_name_set||5.009003| +hv_notallowed||| +hv_placeholders_get||5.009003| +hv_placeholders_p||| +hv_placeholders_set||5.009003| +hv_rand_set||5.017011| +hv_riter_p||5.009003| +hv_riter_set||5.009003| +hv_scalar||5.009001| +hv_store_ent||5.004000| +hv_store_flags||5.008000| +hv_stores|5.009004||p +hv_store||| +hv_undef_flags||| +hv_undef||| +ibcmp_locale||5.004000| +ibcmp_utf8||5.007003| +ibcmp||| +incline||| +incpush_if_exists||| +incpush_use_sep||| +incpush||| +ingroup||| +init_argv_symbols||| +init_constants||| +init_dbargs||| +init_debugger||| +init_global_struct||| +init_i18nl10n||5.006000| +init_i18nl14n||5.006000| +init_ids||| +init_interp||| +init_main_stash||| +init_perllib||| +init_postdump_symbols||| +init_predump_symbols||| +init_stacks||5.005000| +init_tm||5.007002| +inplace_aassign||| +instr|||n +intro_my||| +intuit_method||| +intuit_more||| +invert||| +invlist_array||| +invlist_clone||| +invlist_extend||| +invlist_highest||| +invlist_is_iterating||| +invlist_iterfinish||| +invlist_iterinit||| +invlist_iternext||| +invlist_max||| +invlist_previous_index||| +invlist_set_len||| +invlist_set_previous_index||| +invlist_trim||| +invoke_exception_hook||| +io_close||| +isALNUMC|5.006000||p +isALNUM_lazy||| +isALPHANUMERIC||5.017008| +isALPHA||| +isASCII|5.006000|5.006000|p +isBLANK|5.006001||p +isCNTRL|5.006000|5.006000|p +isDIGIT||| +isFOO_lc||| +isFOO_utf8_lc||| +isGRAPH|5.006000||p +isGV_with_GP|5.009004||p +isIDCONT||5.017008| +isIDFIRST_lazy||| +isIDFIRST||| +isLOWER||| +isOCTAL||5.013005| +isPRINT|5.004000||p +isPSXSPC|5.006001||p +isPUNCT|5.006000||p +isSPACE||| +isUPPER||| +isWORDCHAR||5.013006| +isXDIGIT|5.006000||p +is_an_int||| +is_ascii_string||5.011000|n +is_cur_LC_category_utf8||| +is_handle_constructor|||n +is_list_assignment||| +is_lvalue_sub||5.007001| +is_uni_alnum_lc||5.006000| +is_uni_alnumc_lc||5.017007| +is_uni_alnumc||5.017007| +is_uni_alnum||5.006000| +is_uni_alpha_lc||5.006000| +is_uni_alpha||5.006000| +is_uni_ascii_lc||5.006000| +is_uni_ascii||5.006000| +is_uni_blank_lc||5.017002| +is_uni_blank||5.017002| +is_uni_cntrl_lc||5.006000| +is_uni_cntrl||5.006000| +is_uni_digit_lc||5.006000| +is_uni_digit||5.006000| +is_uni_graph_lc||5.006000| +is_uni_graph||5.006000| +is_uni_idfirst_lc||5.006000| +is_uni_idfirst||5.006000| +is_uni_lower_lc||5.006000| +is_uni_lower||5.006000| +is_uni_print_lc||5.006000| +is_uni_print||5.006000| +is_uni_punct_lc||5.006000| +is_uni_punct||5.006000| +is_uni_space_lc||5.006000| +is_uni_space||5.006000| +is_uni_upper_lc||5.006000| +is_uni_upper||5.006000| +is_uni_xdigit_lc||5.006000| +is_uni_xdigit||5.006000| +is_utf8_alnumc||5.017007| +is_utf8_alnum||5.006000| +is_utf8_alpha||5.006000| +is_utf8_ascii||5.006000| +is_utf8_blank||5.017002| +is_utf8_char_buf||5.015008|n +is_utf8_char_slow|||n +is_utf8_char||5.006000|n +is_utf8_cntrl||5.006000| +is_utf8_common||| +is_utf8_digit||5.006000| +is_utf8_graph||5.006000| +is_utf8_idcont||5.008000| +is_utf8_idfirst||5.006000| +is_utf8_lower||5.006000| +is_utf8_mark||5.006000| +is_utf8_perl_space||5.011001| +is_utf8_perl_word||5.011001| +is_utf8_posix_digit||5.011001| +is_utf8_print||5.006000| +is_utf8_punct||5.006000| +is_utf8_space||5.006000| +is_utf8_string_loclen||5.009003|n +is_utf8_string_loc||5.008001|n +is_utf8_string||5.006001|n +is_utf8_upper||5.006000| +is_utf8_xdigit||5.006000| +is_utf8_xidcont||5.013010| +is_utf8_xidfirst||5.013010| +isa_lookup||| +items|||n +ix|||n +jmaybe||| +join_exact||| +keyword_plugin_standard||| +keyword||| +leave_scope||| +lex_bufutf8||5.011002| +lex_discard_to||5.011002| +lex_grow_linestr||5.011002| +lex_next_chunk||5.011002| +lex_peek_unichar||5.011002| +lex_read_space||5.011002| +lex_read_to||5.011002| +lex_read_unichar||5.011002| +lex_start||5.009005| +lex_stuff_pvn||5.011002| +lex_stuff_pvs||5.013005| +lex_stuff_pv||5.013006| +lex_stuff_sv||5.011002| +lex_unstuff||5.011002| +listkids||| +list||| +load_module_nocontext|||vn +load_module|5.006000||pv +localize||| +looks_like_bool||| +looks_like_number||| +lop||| +mPUSHi|5.009002||p +mPUSHn|5.009002||p +mPUSHp|5.009002||p +mPUSHs|5.010001||p +mPUSHu|5.009002||p +mXPUSHi|5.009002||p +mXPUSHn|5.009002||p +mXPUSHp|5.009002||p +mXPUSHs|5.010001||p +mXPUSHu|5.009002||p +mad_free||| +madlex||| +madparse||| +magic_clear_all_env||| +magic_cleararylen_p||| +magic_clearenv||| +magic_clearhints||| +magic_clearhint||| +magic_clearisa||| +magic_clearpack||| +magic_clearsig||| +magic_copycallchecker||| +magic_dump||5.006000| +magic_existspack||| +magic_freearylen_p||| +magic_freeovrld||| +magic_getarylen||| +magic_getdefelem||| +magic_getnkeys||| +magic_getpack||| +magic_getpos||| +magic_getsig||| +magic_getsubstr||| +magic_gettaint||| +magic_getuvar||| +magic_getvec||| +magic_get||| +magic_killbackrefs||| +magic_methcall1||| +magic_methcall|||v +magic_methpack||| +magic_nextpack||| +magic_regdata_cnt||| +magic_regdatum_get||| +magic_regdatum_set||| +magic_scalarpack||| +magic_set_all_env||| +magic_setarylen||| +magic_setcollxfrm||| +magic_setdbline||| +magic_setdefelem||| +magic_setenv||| +magic_sethint||| +magic_setisa||| +magic_setmglob||| +magic_setnkeys||| +magic_setpack||| +magic_setpos||| +magic_setregexp||| +magic_setsig||| +magic_setsubstr||| +magic_settaint||| +magic_setutf8||| +magic_setuvar||| +magic_setvec||| +magic_set||| +magic_sizepack||| +magic_wipepack||| +make_matcher||| +make_trie_failtable||| +make_trie||| +malloc_good_size|||n +malloced_size|||n +malloc||5.007002|n +markstack_grow||| +matcher_matches_sv||| +mayberelocate||| +measure_struct||| +memEQs|5.009005||p +memEQ|5.004000||p +memNEs|5.009005||p +memNE|5.004000||p +mem_collxfrm||| +mem_log_common|||n +mess_alloc||| +mess_nocontext|||vn +mess_sv||5.013001| +mess||5.006000|v +method_common||| +mfree||5.007002|n +mg_clear||| +mg_copy||| +mg_dup||| +mg_find_mglob||| +mg_findext|5.013008|5.013008|p +mg_find||| +mg_free_type||5.013006| +mg_free||| +mg_get||| +mg_length||5.005000| +mg_localize||| +mg_magical||| +mg_set||| +mg_size||5.005000| +mini_mktime||5.007002| +minus_v||| +missingterm||| +mode_from_discipline||| +modkids||| +more_bodies||| +more_sv||| +moreswitches||| +mro_clean_isarev||| +mro_gather_and_rename||| +mro_get_from_name||5.010001| +mro_get_linear_isa_dfs||| +mro_get_linear_isa||5.009005| +mro_get_private_data||5.010001| +mro_isa_changed_in||| +mro_meta_dup||| +mro_meta_init||| +mro_method_changed_in||5.009005| +mro_package_moved||| +mro_register||5.010001| +mro_set_mro||5.010001| +mro_set_private_data||5.010001| +mul128||| +mulexp10|||n +my_atof2||5.007002| +my_atof||5.006000| +my_attrs||| +my_bcopy|||n +my_bzero|||n +my_chsize||| +my_clearenv||| +my_cxt_index||| +my_cxt_init||| +my_dirfd||5.009005| +my_exit_jump||| +my_exit||| +my_failure_exit||5.004000| +my_fflush_all||5.006000| +my_fork||5.007003|n +my_kid||| +my_lstat_flags||| +my_lstat||5.019003| +my_memcmp|||n +my_memset||5.004000|n +my_pclose||5.004000| +my_popen_list||5.007001| +my_popen||5.004000| +my_setenv||| +my_snprintf|5.009004||pvn +my_socketpair||5.007003|n +my_sprintf|5.009003||pvn +my_stat_flags||| +my_stat||5.019003| +my_strftime||5.007002| +my_strlcat|5.009004||pn +my_strlcpy|5.009004||pn +my_unexec||| +my_vsnprintf||5.009004|n +need_utf8|||n +newANONATTRSUB||5.006000| +newANONHASH||| +newANONLIST||| +newANONSUB||| +newASSIGNOP||| +newATTRSUB_flags||| +newATTRSUB||5.006000| +newAVREF||| +newAV||| +newBINOP||| +newCONDOP||| +newCONSTSUB_flags||5.015006| +newCONSTSUB|5.004050||p +newCVREF||| +newDEFSVOP||| +newFORM||| +newFOROP||5.013007| +newGIVENOP||5.009003| +newGIVWHENOP||| +newGP||| +newGVOP||| +newGVREF||| +newGVgen_flags||5.015004| +newGVgen||| +newHVREF||| +newHVhv||5.005000| +newHV||| +newIO||| +newLISTOP||| +newLOGOP||| +newLOOPEX||| +newLOOPOP||| +newMADPROP||| +newMADsv||| +newMYSUB||5.017004| +newNULLLIST||| +newOP||| +newPADOP||| +newPMOP||| +newPROG||| +newPVOP||| +newRANGE||| +newRV_inc|5.004000||p +newRV_noinc|5.004000||p +newRV||| +newSLICEOP||| +newSTATEOP||| +newSTUB||| +newSUB||| +newSVOP||| +newSVREF||| +newSV_type|5.009005||p +newSVhek||5.009003| +newSViv||| +newSVnv||| +newSVpadname||5.017004| +newSVpv_share||5.013006| +newSVpvf_nocontext|||vn +newSVpvf||5.004000|v +newSVpvn_flags|5.010001||p +newSVpvn_share|5.007001||p +newSVpvn_utf8|5.010001||p +newSVpvn|5.004050||p +newSVpvs_flags|5.010001||p +newSVpvs_share|5.009003||p +newSVpvs|5.009003||p +newSVpv||| +newSVrv||| +newSVsv||| +newSVuv|5.006000||p +newSV||| +newTOKEN||| +newUNOP||| +newWHENOP||5.009003| +newWHILEOP||5.013007| +newXS_flags||5.009004| +newXS_len_flags||| +newXSproto||5.006000| +newXS||5.006000| +new_collate||5.006000| +new_constant||| +new_ctype||5.006000| +new_he||| +new_logop||| +new_numeric||5.006000| +new_stackinfo||5.005000| +new_version||5.009000| +new_warnings_bitfield||| +next_symbol||| +nextargv||| +nextchar||| +ninstr|||n +no_bareword_allowed||| +no_fh_allowed||| +no_op||| +not_a_number||| +not_incrementable||| +nothreadhook||5.008000| +nuke_stacks||| +num_overflow|||n +oopsAV||| +oopsHV||| +op_append_elem||5.013006| +op_append_list||5.013006| +op_clear||| +op_const_sv||| +op_contextualize||5.013006| +op_dump||5.006000| +op_free||| +op_getmad_weak||| +op_getmad||| +op_integerize||| +op_linklist||5.013006| +op_lvalue_flags||| +op_lvalue||5.013007| +op_null||5.007002| +op_prepend_elem||5.013006| +op_refcnt_dec||| +op_refcnt_inc||| +op_refcnt_lock||5.009002| +op_refcnt_unlock||5.009002| +op_scope||5.013007| +op_std_init||| +op_unscope||| +op_xmldump||| +open_script||| +opslab_force_free||| +opslab_free_nopad||| +opslab_free||| +pMY_CXT_|5.007003||p +pMY_CXT|5.007003||p +pTHX_|5.006000||p +pTHX|5.006000||p +packWARN|5.007003||p +pack_cat||5.007003| +pack_rec||| +package_version||| +package||| +packlist||5.008001| +pad_add_anon||5.008001| +pad_add_name_pvn||5.015001| +pad_add_name_pvs||5.015001| +pad_add_name_pv||5.015001| +pad_add_name_sv||5.015001| +pad_alloc_name||| +pad_alloc||| +pad_block_start||| +pad_check_dup||| +pad_compname_type||5.009003| +pad_findlex||| +pad_findmy_pvn||5.015001| +pad_findmy_pvs||5.015001| +pad_findmy_pv||5.015001| +pad_findmy_sv||5.015001| +pad_fixup_inner_anons||| +pad_free||| +pad_leavemy||| +pad_new||5.008001| +pad_peg|||n +pad_push||| +pad_reset||| +pad_setsv||| +pad_sv||| +pad_swipe||| +pad_tidy||5.008001| +padlist_dup||| +padlist_store||| +parse_arithexpr||5.013008| +parse_barestmt||5.013007| +parse_block||5.013007| +parse_body||| +parse_fullexpr||5.013008| +parse_fullstmt||5.013005| +parse_ident||| +parse_label||5.013007| +parse_listexpr||5.013008| +parse_lparen_question_flags||| +parse_stmtseq||5.013006| +parse_termexpr||5.013008| +parse_unicode_opts||| +parser_dup||| +parser_free_nexttoke_ops||| +parser_free||| +path_is_searchable|||n +peep||| +pending_ident||| +perl_alloc_using|||n +perl_alloc|||n +perl_clone_using|||n +perl_clone|||n +perl_construct|||n +perl_destruct||5.007003|n +perl_free|||n +perl_parse||5.006000|n +perl_run|||n +pidgone||| +pm_description||| +pmop_dump||5.006000| +pmop_xmldump||| +pmruntime||| +pmtrans||| +pop_scope||| +populate_isa|||v +pregcomp||5.009005| +pregexec||| +pregfree2||5.011000| +pregfree||| +prepend_madprops||| +prescan_version||5.011004| +printbuf||| +printf_nocontext|||vn +process_special_blocks||| +ptr_hash|||n +ptr_table_clear||5.009005| +ptr_table_fetch||5.009005| +ptr_table_find|||n +ptr_table_free||5.009005| +ptr_table_new||5.009005| +ptr_table_split||5.009005| +ptr_table_store||5.009005| +push_scope||| +put_byte||| +put_latin1_charclass_innards||| +pv_display|5.006000||p +pv_escape|5.009004||p +pv_pretty|5.009004||p +pv_uni_display||5.007003| +qerror||| +qsortsvu||| +re_compile||5.009005| +re_croak2||| +re_dup_guts||| +re_intuit_start||5.019001| +re_intuit_string||5.006000| +re_op_compile||| +readpipe_override||| +realloc||5.007002|n +reentrant_free||5.019003| +reentrant_init||5.019003| +reentrant_retry||5.019003|vn +reentrant_size||5.019003| +ref_array_or_hash||| +refcounted_he_chain_2hv||| +refcounted_he_fetch_pvn||| +refcounted_he_fetch_pvs||| +refcounted_he_fetch_pv||| +refcounted_he_fetch_sv||| +refcounted_he_free||| +refcounted_he_inc||| +refcounted_he_new_pvn||| +refcounted_he_new_pvs||| +refcounted_he_new_pv||| +refcounted_he_new_sv||| +refcounted_he_value||| +refkids||| +refto||| +ref||5.019003| +reg_check_named_buff_matched||| +reg_named_buff_all||5.009005| +reg_named_buff_exists||5.009005| +reg_named_buff_fetch||5.009005| +reg_named_buff_firstkey||5.009005| +reg_named_buff_iter||| +reg_named_buff_nextkey||5.009005| +reg_named_buff_scalar||5.009005| +reg_named_buff||| +reg_node||| +reg_numbered_buff_fetch||| +reg_numbered_buff_length||| +reg_numbered_buff_store||| +reg_qr_package||| +reg_recode||| +reg_scan_name||| +reg_skipcomment||| +reg_temp_copy||| +reganode||| +regatom||| +regbranch||| +regclass_swash||5.009004| +regclass||| +regcppop||| +regcppush||| +regcurly||| +regdump_extflags||| +regdump_intflags||| +regdump||5.005000| +regdupe_internal||| +regexec_flags||5.005000| +regfree_internal||5.009005| +reghop3|||n +reghop4|||n +reghopmaybe3|||n +reginclass||| +reginitcolors||5.006000| +reginsert||| +regmatch||| +regnext||5.005000| +regpatws|||n +regpiece||| +regpposixcc||| +regprop||| +regrepeat||| +regtail_study||| +regtail||| +regtry||| +reguni||| +regwhite|||n +reg||| +repeatcpy|||n +report_evil_fh||| +report_redefined_cv||| +report_uninit||| +report_wrongway_fh||| +require_pv||5.006000| +require_tie_mod||| +restore_magic||| +rninstr|||n +rpeep||| +rsignal_restore||| +rsignal_save||| +rsignal_state||5.004000| +rsignal||5.004000| +run_body||| +run_user_filter||| +runops_debug||5.005000| +runops_standard||5.005000| +rv2cv_op_cv||5.013006| +rvpv_dup||| +rxres_free||| +rxres_restore||| +rxres_save||| +safesyscalloc||5.006000|n +safesysfree||5.006000|n +safesysmalloc||5.006000|n +safesysrealloc||5.006000|n +same_dirent||| +save_I16||5.004000| +save_I32||| +save_I8||5.006000| +save_adelete||5.011000| +save_aelem_flags||5.011000| +save_aelem||5.004050| +save_alloc||5.006000| +save_aptr||| +save_ary||| +save_bool||5.008001| +save_clearsv||| +save_delete||| +save_destructor_x||5.006000| +save_destructor||5.006000| +save_freeop||| +save_freepv||| +save_freesv||| +save_generic_pvref||5.006001| +save_generic_svref||5.005030| +save_gp||5.004000| +save_hash||| +save_hdelete||5.011000| +save_hek_flags|||n +save_helem_flags||5.011000| +save_helem||5.004050| +save_hints||5.010001| +save_hptr||| +save_int||| +save_item||| +save_iv||5.005000| +save_lines||| +save_list||| +save_long||| +save_magic_flags||| +save_mortalizesv||5.007001| +save_nogv||| +save_op||5.005000| +save_padsv_and_mortalize||5.010001| +save_pptr||| +save_pushi32ptr||5.010001| +save_pushptri32ptr||| +save_pushptrptr||5.010001| +save_pushptr||5.010001| +save_re_context||5.006000| +save_scalar_at||| +save_scalar||| +save_set_svflags||5.009000| +save_shared_pvref||5.007003| +save_sptr||| +save_svref||| +save_vptr||5.006000| +savepvn||| +savepvs||5.009003| +savepv||| +savesharedpvn||5.009005| +savesharedpvs||5.013006| +savesharedpv||5.007003| +savesharedsvpv||5.013006| +savestack_grow_cnt||5.008001| +savestack_grow||| +savesvpv||5.009002| +sawparens||| +scalar_mod_type|||n +scalarboolean||| +scalarkids||| +scalarseq||| +scalarvoid||| +scalar||| +scan_bin||5.006000| +scan_commit||| +scan_const||| +scan_formline||| +scan_heredoc||| +scan_hex||| +scan_ident||| +scan_inputsymbol||| +scan_num||5.007001| +scan_oct||| +scan_pat||| +scan_str||| +scan_subst||| +scan_trans||| +scan_version||5.009001| +scan_vstring||5.009005| +scan_word||| +screaminstr||5.005000| +search_const||| +seed||5.008001| +sequence_num||| +set_context||5.006000|n +set_numeric_local||5.006000| +set_numeric_radix||5.006000| +set_numeric_standard||5.006000| +setdefout||| +share_hek_flags||| +share_hek||5.004000| +si_dup||| +sighandler|||n +simplify_sort||| +skipspace0||| +skipspace1||| +skipspace2||| +skipspace_flags||| +softref2xv||| +sortcv_stacked||| +sortcv_xsub||| +sortcv||| +sortsv_flags||5.009003| +sortsv||5.007003| +space_join_names_mortal||| +ss_dup||| +stack_grow||| +start_force||| +start_glob||| +start_subparse||5.004000| +stdize_locale||| +strEQ||| +strGE||| +strGT||| +strLE||| +strLT||| +strNE||| +str_to_version||5.006000| +strip_return||| +strnEQ||| +strnNE||| +study_chunk||| +sub_crush_depth||| +sublex_done||| +sublex_push||| +sublex_start||| +sv_2bool_flags||5.013006| +sv_2bool||| +sv_2cv||| +sv_2io||| +sv_2iuv_common||| +sv_2iuv_non_preserve||| +sv_2iv_flags||5.009001| +sv_2iv||| +sv_2mortal||| +sv_2num||| +sv_2nv_flags||5.013001| +sv_2pv_flags|5.007002||p +sv_2pv_nolen|5.006000||p +sv_2pvbyte_nolen|5.006000||p +sv_2pvbyte|5.006000||p +sv_2pvutf8_nolen||5.006000| +sv_2pvutf8||5.006000| +sv_2pv||| +sv_2uv_flags||5.009001| +sv_2uv|5.004000||p +sv_add_arena||| +sv_add_backref||| +sv_backoff||| +sv_bless||| +sv_cat_decode||5.008001| +sv_catpv_flags||5.013006| +sv_catpv_mg|5.004050||p +sv_catpv_nomg||5.013006| +sv_catpvf_mg_nocontext|||pvn +sv_catpvf_mg|5.006000|5.004000|pv +sv_catpvf_nocontext|||vn +sv_catpvf||5.004000|v +sv_catpvn_flags||5.007002| +sv_catpvn_mg|5.004050||p +sv_catpvn_nomg|5.007002||p +sv_catpvn||| +sv_catpvs_flags||5.013006| +sv_catpvs_mg||5.013006| +sv_catpvs_nomg||5.013006| +sv_catpvs|5.009003||p +sv_catpv||| +sv_catsv_flags||5.007002| +sv_catsv_mg|5.004050||p +sv_catsv_nomg|5.007002||p +sv_catsv||| +sv_catxmlpvn||| +sv_catxmlpv||| +sv_catxmlsv||| +sv_chop||| +sv_clean_all||| +sv_clean_objs||| +sv_clear||| +sv_cmp_flags||5.013006| +sv_cmp_locale_flags||5.013006| +sv_cmp_locale||5.004000| +sv_cmp||| +sv_collxfrm_flags||5.013006| +sv_collxfrm||| +sv_copypv_flags||5.017002| +sv_copypv_nomg||5.017002| +sv_copypv||| +sv_dec_nomg||5.013002| +sv_dec||| +sv_del_backref||| +sv_derived_from_pvn||5.015004| +sv_derived_from_pv||5.015004| +sv_derived_from_sv||5.015004| +sv_derived_from||5.004000| +sv_destroyable||5.010000| +sv_display||| +sv_does_pvn||5.015004| +sv_does_pv||5.015004| +sv_does_sv||5.015004| +sv_does||5.009004| +sv_dump||| +sv_dup_common||| +sv_dup_inc_multiple||| +sv_dup_inc||| +sv_dup||| +sv_eq_flags||5.013006| +sv_eq||| +sv_exp_grow||| +sv_force_normal_flags||5.007001| +sv_force_normal||5.006000| +sv_free2||| +sv_free_arenas||| +sv_free||| +sv_gets||5.004000| +sv_grow||| +sv_i_ncmp||| +sv_inc_nomg||5.013002| +sv_inc||| +sv_insert_flags||5.010001| +sv_insert||| +sv_isa||| +sv_isobject||| +sv_iv||5.005000| +sv_kill_backrefs||| +sv_len_utf8_nomg||| +sv_len_utf8||5.006000| +sv_len||| +sv_magic_portable|5.019003|5.004000|p +sv_magicext_mglob||| +sv_magicext||5.007003| +sv_magic||| +sv_mortalcopy_flags||| +sv_mortalcopy||| +sv_ncmp||| +sv_newmortal||| +sv_newref||| +sv_nolocking||5.007003| +sv_nosharing||5.007003| +sv_nounlocking||| +sv_nv||5.005000| +sv_peek||5.005000| +sv_pos_b2u_flags||5.019003| +sv_pos_b2u_midway||| +sv_pos_b2u||5.006000| +sv_pos_u2b_cached||| +sv_pos_u2b_flags||5.011005| +sv_pos_u2b_forwards|||n +sv_pos_u2b_midway|||n +sv_pos_u2b||5.006000| +sv_pvbyten_force||5.006000| +sv_pvbyten||5.006000| +sv_pvbyte||5.006000| +sv_pvn_force_flags|5.007002||p +sv_pvn_force||| +sv_pvn_nomg|5.007003|5.005000|p +sv_pvn||5.005000| +sv_pvutf8n_force||5.006000| +sv_pvutf8n||5.006000| +sv_pvutf8||5.006000| +sv_pv||5.006000| +sv_recode_to_utf8||5.007003| +sv_reftype||| +sv_ref||| +sv_release_COW||| +sv_replace||| +sv_report_used||| +sv_resetpvn||| +sv_reset||| +sv_rvweaken||5.006000| +sv_sethek||| +sv_setiv_mg|5.004050||p +sv_setiv||| +sv_setnv_mg|5.006000||p +sv_setnv||| +sv_setpv_mg|5.004050||p +sv_setpvf_mg_nocontext|||pvn +sv_setpvf_mg|5.006000|5.004000|pv +sv_setpvf_nocontext|||vn +sv_setpvf||5.004000|v +sv_setpviv_mg||5.008001| +sv_setpviv||5.008001| +sv_setpvn_mg|5.004050||p +sv_setpvn||| +sv_setpvs_mg||5.013006| +sv_setpvs|5.009004||p +sv_setpv||| +sv_setref_iv||| +sv_setref_nv||| +sv_setref_pvn||| +sv_setref_pvs||5.019003| +sv_setref_pv||| +sv_setref_uv||5.007001| +sv_setsv_cow||| +sv_setsv_flags||5.007002| +sv_setsv_mg|5.004050||p +sv_setsv_nomg|5.007002||p +sv_setsv||| +sv_setuv_mg|5.004050||p +sv_setuv|5.004000||p +sv_tainted||5.004000| +sv_taint||5.004000| +sv_true||5.005000| +sv_unglob||| +sv_uni_display||5.007003| +sv_unmagicext|5.013008|5.013008|p +sv_unmagic||| +sv_unref_flags||5.007001| +sv_unref||| +sv_untaint||5.004000| +sv_upgrade||| +sv_usepvn_flags||5.009004| +sv_usepvn_mg|5.004050||p +sv_usepvn||| +sv_utf8_decode||5.006000| +sv_utf8_downgrade||5.006000| +sv_utf8_encode||5.006000| +sv_utf8_upgrade_flags_grow||5.011000| +sv_utf8_upgrade_flags||5.007002| +sv_utf8_upgrade_nomg||5.007002| +sv_utf8_upgrade||5.007001| +sv_uv|5.005000||p +sv_vcatpvf_mg|5.006000|5.004000|p +sv_vcatpvfn_flags||5.017002| +sv_vcatpvfn||5.004000| +sv_vcatpvf|5.006000|5.004000|p +sv_vsetpvf_mg|5.006000|5.004000|p +sv_vsetpvfn||5.004000| +sv_vsetpvf|5.006000|5.004000|p +sv_xmlpeek||| +svtype||| +swallow_bom||| +swash_fetch||5.007002| +swash_init||5.006000| +swatch_get||| +sys_init3||5.010000|n +sys_init||5.010000|n +sys_intern_clear||| +sys_intern_dup||| +sys_intern_init||| +sys_term||5.010000|n +taint_env||| +taint_proper||| +tied_method|||v +tmps_grow||5.006000| +toFOLD_uni||5.007003| +toFOLD_utf8||5.019001| +toFOLD||5.019001| +toLOWER_L1||5.019001| +toLOWER_LC||5.004000| +toLOWER_uni||5.007003| +toLOWER_utf8||5.015007| +toLOWER||| +toTITLE_uni||5.007003| +toTITLE_utf8||5.015007| +toTITLE||5.019001| +toUPPER_uni||5.007003| +toUPPER_utf8||5.015007| +toUPPER||5.004000| +to_byte_substr||| +to_lower_latin1||| +to_uni_fold||5.007003| +to_uni_lower_lc||5.006000| +to_uni_lower||5.007003| +to_uni_title_lc||5.006000| +to_uni_title||5.007003| +to_uni_upper_lc||5.006000| +to_uni_upper||5.007003| +to_utf8_case||5.007003| +to_utf8_fold||5.015007| +to_utf8_lower||5.015007| +to_utf8_substr||| +to_utf8_title||5.015007| +to_utf8_upper||5.015007| +token_free||| +token_getmad||| +tokenize_use||| +tokeq||| +tokereport||| +too_few_arguments_pv||| +too_few_arguments_sv||| +too_many_arguments_pv||| +too_many_arguments_sv||| +translate_substr_offsets||| +try_amagic_bin||| +try_amagic_un||| +uiv_2buf|||n +unlnk||| +unpack_rec||| +unpack_str||5.007003| +unpackstring||5.008001| +unreferenced_to_tmp_stack||| +unshare_hek_or_pvn||| +unshare_hek||| +unsharepvn||5.004000| +unwind_handler_stack||| +update_debugger_info||| +upg_version||5.009005| +usage||| +utf16_textfilter||| +utf16_to_utf8_reversed||5.006001| +utf16_to_utf8||5.006001| +utf8_distance||5.006000| +utf8_hop||5.006000| +utf8_length||5.007001| +utf8_mg_len_cache_update||| +utf8_mg_pos_cache_update||| +utf8_to_bytes||5.006001| +utf8_to_uvchr_buf||5.015009| +utf8_to_uvchr||5.007001| +utf8_to_uvuni_buf||5.015009| +utf8_to_uvuni||5.007001| +utf8n_to_uvchr||| +utf8n_to_uvuni||5.007001| +utilize||| +uvchr_to_utf8_flags||5.007003| +uvchr_to_utf8||| +uvuni_to_utf8_flags||5.007003| +uvuni_to_utf8||5.007001| +valid_utf8_to_uvchr||| +valid_utf8_to_uvuni||5.015009| +validate_proto||| +validate_suid||| +varname||| +vcmp||5.009000| +vcroak||5.006000| +vdeb||5.007003| +vform||5.006000| +visit||| +vivify_defelem||| +vivify_ref||| +vload_module|5.006000||p +vmess||5.006000| +vnewSVpvf|5.006000|5.004000|p +vnormal||5.009002| +vnumify||5.009000| +vstringify||5.009000| +vverify||5.009003| +vwarner||5.006000| +vwarn||5.006000| +wait4pid||| +warn_nocontext|||vn +warn_sv||5.013001| +warner_nocontext|||vn +warner|5.006000|5.004000|pv +warn|||v +was_lvalue_sub||| +watch||| +whichsig_pvn||5.015004| +whichsig_pv||5.015004| +whichsig_sv||5.015004| +whichsig||| +win32_croak_not_implemented|||n +with_queued_errors||| +wrap_op_checker||5.015008| +write_to_stderr||| +xmldump_all_perl||| +xmldump_all||| +xmldump_attr||| +xmldump_eval||| +xmldump_form||| +xmldump_indent|||v +xmldump_packsubs_perl||| +xmldump_packsubs||| +xmldump_sub_perl||| +xmldump_sub||| +xmldump_vindent||| +xs_apiversion_bootcheck||| +xs_version_bootcheck||| +yyerror_pvn||| +yyerror_pv||| +yyerror||| +yylex||| +yyparse||| +yyunlex||| +yywarn||| +); + +if (exists $opt{'list-unsupported'}) { + my $f; + for $f (sort { lc $a cmp lc $b } keys %API) { + next unless $API{$f}{todo}; + print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n"; + } + exit 0; +} + +# Scan for possible replacement candidates + +my(%replace, %need, %hints, %warnings, %depends); +my $replace = 0; +my($hint, $define, $function); + +sub find_api +{ + my $code = shift; + $code =~ s{ + / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*) + | "[^"\\]*(?:\\.[^"\\]*)*" + | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx; + grep { exists $API{$_} } $code =~ /(\w+)/mg; +} + +while () { + if ($hint) { + my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings; + if (m{^\s*\*\s(.*?)\s*$}) { + for (@{$hint->[1]}) { + $h->{$_} ||= ''; # suppress warning with older perls + $h->{$_} .= "$1\n"; + } + } + else { undef $hint } + } + + $hint = [$1, [split /,?\s+/, $2]] + if m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$}; + + if ($define) { + if ($define->[1] =~ /\\$/) { + $define->[1] .= $_; + } + else { + if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) { + my @n = find_api($define->[1]); + push @{$depends{$define->[0]}}, @n if @n + } + undef $define; + } + } + + $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)}; + + if ($function) { + if (/^}/) { + if (exists $API{$function->[0]}) { + my @n = find_api($function->[1]); + push @{$depends{$function->[0]}}, @n if @n + } + undef $function; + } + else { + $function->[1] .= $_; + } + } + + $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)}; + + $replace = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; + $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)}; + $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce}; + $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$}; + + if (m{^\s*$rccs\s+(\w+(\s*,\s*\w+)*)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) { + my @deps = map { s/\s+//g; $_ } split /,/, $3; + my $d; + for $d (map { s/\s+//g; $_ } split /,/, $1) { + push @{$depends{$d}}, @deps; + } + } + + $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)}; +} + +for (values %depends) { + my %s; + $_ = [sort grep !$s{$_}++, @$_]; +} + +if (exists $opt{'api-info'}) { + my $f; + my $count = 0; + my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$"; + for $f (sort { lc $a cmp lc $b } keys %API) { + next unless $f =~ /$match/; + print "\n=== $f ===\n\n"; + my $info = 0; + if ($API{$f}{base} || $API{$f}{todo}) { + my $base = format_version($API{$f}{base} || $API{$f}{todo}); + print "Supported at least starting from perl-$base.\n"; + $info++; + } + if ($API{$f}{provided}) { + my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003"; + print "Support by $ppport provided back to perl-$todo.\n"; + print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f}; + print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f}; + print "\n$hints{$f}" if exists $hints{$f}; + print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f}; + $info++; + } + print "No portability information available.\n" unless $info; + $count++; + } + $count or print "Found no API matching '$opt{'api-info'}'."; + print "\n"; + exit 0; +} + +if (exists $opt{'list-provided'}) { + my $f; + for $f (sort { lc $a cmp lc $b } keys %API) { + next unless $API{$f}{provided}; + my @flags; + push @flags, 'explicit' if exists $need{$f}; + push @flags, 'depend' if exists $depends{$f}; + push @flags, 'hint' if exists $hints{$f}; + push @flags, 'warning' if exists $warnings{$f}; + my $flags = @flags ? ' ['.join(', ', @flags).']' : ''; + print "$f$flags\n"; + } + exit 0; +} + +my @files; +my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc ); +my $srcext = join '|', map { quotemeta $_ } @srcext; + +if (@ARGV) { + my %seen; + for (@ARGV) { + if (-e) { + if (-f) { + push @files, $_ unless $seen{$_}++; + } + else { warn "'$_' is not a file.\n" } + } + else { + my @new = grep { -f } glob $_ + or warn "'$_' does not exist.\n"; + push @files, grep { !$seen{$_}++ } @new; + } + } +} +else { + eval { + require File::Find; + File::Find::find(sub { + $File::Find::name =~ /($srcext)$/i + and push @files, $File::Find::name; + }, '.'); + }; + if ($@) { + @files = map { glob "*$_" } @srcext; + } +} + +if (!@ARGV || $opt{filter}) { + my(@in, @out); + my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files; + for (@files) { + my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i; + push @{ $out ? \@out : \@in }, $_; + } + if (@ARGV && @out) { + warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out); + } + @files = @in; +} + +die "No input files given!\n" unless @files; + +my(%files, %global, %revreplace); +%revreplace = reverse %replace; +my $filename; +my $patch_opened = 0; + +for $filename (@files) { + unless (open IN, "<$filename") { + warn "Unable to read from $filename: $!\n"; + next; + } + + info("Scanning $filename ..."); + + my $c = do { local $/; }; + close IN; + + my %file = (orig => $c, changes => 0); + + # Temporarily remove C/XS comments and strings from the code + my @ccom; + + $c =~ s{ + ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]* + | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* ) + | ( ^$HS*\#[^\r\n]* + | "[^"\\]*(?:\\.[^"\\]*)*" + | '[^'\\]*(?:\\.[^'\\]*)*' + | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) ) + }{ defined $2 and push @ccom, $2; + defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex; + + $file{ccom} = \@ccom; + $file{code} = $c; + $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m; + + my $func; + + for $func (keys %API) { + my $match = $func; + $match .= "|$revreplace{$func}" if exists $revreplace{$func}; + if ($c =~ /\b(?:Perl_)?($match)\b/) { + $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func}; + $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/; + if (exists $API{$func}{provided}) { + $file{uses_provided}{$func}++; + if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) { + $file{uses}{$func}++; + my @deps = rec_depend($func); + if (@deps) { + $file{uses_deps}{$func} = \@deps; + for (@deps) { + $file{uses}{$_} = 0 unless exists $file{uses}{$_}; + } + } + for ($func, @deps) { + $file{needs}{$_} = 'static' if exists $need{$_}; + } + } + } + if (exists $API{$func}{todo} && $API{$func}{todo} > $opt{'compat-version'}) { + if ($c =~ /\b$func\b/) { + $file{uses_todo}{$func}++; + } + } + } + } + + while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) { + if (exists $need{$2}) { + $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++; + } + else { warning("Possibly wrong #define $1 in $filename") } + } + + for (qw(uses needs uses_todo needed_global needed_static)) { + for $func (keys %{$file{$_}}) { + push @{$global{$_}{$func}}, $filename; + } + } + + $files{$filename} = \%file; +} + +# Globally resolve NEED_'s +my $need; +for $need (keys %{$global{needs}}) { + if (@{$global{needs}{$need}} > 1) { + my @targets = @{$global{needs}{$need}}; + my @t = grep $files{$_}{needed_global}{$need}, @targets; + @targets = @t if @t; + @t = grep /\.xs$/i, @targets; + @targets = @t if @t; + my $target = shift @targets; + $files{$target}{needs}{$need} = 'global'; + for (@{$global{needs}{$need}}) { + $files{$_}{needs}{$need} = 'extern' if $_ ne $target; + } + } +} + +for $filename (@files) { + exists $files{$filename} or next; + + info("=== Analyzing $filename ==="); + + my %file = %{$files{$filename}}; + my $func; + my $c = $file{code}; + my $warnings = 0; + + for $func (sort keys %{$file{uses_Perl}}) { + if ($API{$func}{varargs}) { + unless ($API{$func}{nothxarg}) { + my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} + { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); + if ($changes) { + warning("Doesn't pass interpreter argument aTHX to Perl_$func"); + $file{changes} += $changes; + } + } + } + else { + warning("Uses Perl_$func instead of $func"); + $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*} + {$func$1(}g); + } + } + + for $func (sort keys %{$file{uses_replace}}) { + warning("Uses $func instead of $replace{$func}"); + $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g); + } + + for $func (sort keys %{$file{uses_provided}}) { + if ($file{uses}{$func}) { + if (exists $file{uses_deps}{$func}) { + diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}})); + } + else { + diag("Uses $func"); + } + } + $warnings += hint($func); + } + + unless ($opt{quiet}) { + for $func (sort keys %{$file{uses_todo}}) { + print "*** WARNING: Uses $func, which may not be portable below perl ", + format_version($API{$func}{todo}), ", even with '$ppport'\n"; + $warnings++; + } + } + + for $func (sort keys %{$file{needed_static}}) { + my $message = ''; + if (not exists $file{uses}{$func}) { + $message = "No need to define NEED_$func if $func is never used"; + } + elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') { + $message = "No need to define NEED_$func when already needed globally"; + } + if ($message) { + diag($message); + $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg); + } + } + + for $func (sort keys %{$file{needed_global}}) { + my $message = ''; + if (not exists $global{uses}{$func}) { + $message = "No need to define NEED_${func}_GLOBAL if $func is never used"; + } + elsif (exists $file{needs}{$func}) { + if ($file{needs}{$func} eq 'extern') { + $message = "No need to define NEED_${func}_GLOBAL when already needed globally"; + } + elsif ($file{needs}{$func} eq 'static') { + $message = "No need to define NEED_${func}_GLOBAL when only used in this file"; + } + } + if ($message) { + diag($message); + $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg); + } + } + + $file{needs_inc_ppport} = keys %{$file{uses}}; + + if ($file{needs_inc_ppport}) { + my $pp = ''; + + for $func (sort keys %{$file{needs}}) { + my $type = $file{needs}{$func}; + next if $type eq 'extern'; + my $suffix = $type eq 'global' ? '_GLOBAL' : ''; + unless (exists $file{"needed_$type"}{$func}) { + if ($type eq 'global') { + diag("Files [@{$global{needs}{$func}}] need $func, adding global request"); + } + else { + diag("File needs $func, adding static request"); + } + $pp .= "#define NEED_$func$suffix\n"; + } + } + + if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) { + $pp = ''; + $file{changes}++; + } + + unless ($file{has_inc_ppport}) { + diag("Needs to include '$ppport'"); + $pp .= qq(#include "$ppport"\n) + } + + if ($pp) { + $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms) + || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m) + || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m) + || ($c =~ s/^/$pp/); + } + } + else { + if ($file{has_inc_ppport}) { + diag("No need to include '$ppport'"); + $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m); + } + } + + # put back in our C comments + my $ix; + my $cppc = 0; + my @ccom = @{$file{ccom}}; + for $ix (0 .. $#ccom) { + if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) { + $cppc++; + $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/; + } + else { + $c =~ s/$rccs$ix$rcce/$ccom[$ix]/; + } + } + + if ($cppc) { + my $s = $cppc != 1 ? 's' : ''; + warning("Uses $cppc C++ style comment$s, which is not portable"); + } + + my $s = $warnings != 1 ? 's' : ''; + my $warn = $warnings ? " ($warnings warning$s)" : ''; + info("Analysis completed$warn"); + + if ($file{changes}) { + if (exists $opt{copy}) { + my $newfile = "$filename$opt{copy}"; + if (-e $newfile) { + error("'$newfile' already exists, refusing to write copy of '$filename'"); + } + else { + local *F; + if (open F, ">$newfile") { + info("Writing copy of '$filename' with changes to '$newfile'"); + print F $c; + close F; + } + else { + error("Cannot open '$newfile' for writing: $!"); + } + } + } + elsif (exists $opt{patch} || $opt{changes}) { + if (exists $opt{patch}) { + unless ($patch_opened) { + if (open PATCH, ">$opt{patch}") { + $patch_opened = 1; + } + else { + error("Cannot open '$opt{patch}' for writing: $!"); + delete $opt{patch}; + $opt{changes} = 1; + goto fallback; + } + } + mydiff(\*PATCH, $filename, $c); + } + else { +fallback: + info("Suggested changes:"); + mydiff(\*STDOUT, $filename, $c); + } + } + else { + my $s = $file{changes} == 1 ? '' : 's'; + info("$file{changes} potentially required change$s detected"); + } + } + else { + info("Looks good"); + } +} + +close PATCH if $patch_opened; + +exit 0; + + +sub try_use { eval "use @_;"; return $@ eq '' } + +sub mydiff +{ + local *F = shift; + my($file, $str) = @_; + my $diff; + + if (exists $opt{diff}) { + $diff = run_diff($opt{diff}, $file, $str); + } + + if (!defined $diff and try_use('Text::Diff')) { + $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' }); + $diff = <
$tmp") { + print F $str; + close F; + + if (open F, "$prog $file $tmp |") { + while () { + s/\Q$tmp\E/$file.patched/; + $diff .= $_; + } + close F; + unlink $tmp; + return $diff; + } + + unlink $tmp; + } + else { + error("Cannot open '$tmp' for writing: $!"); + } + + return undef; +} + +sub rec_depend +{ + my($func, $seen) = @_; + return () unless exists $depends{$func}; + $seen = {%{$seen||{}}}; + return () if $seen->{$func}++; + my %s; + grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}}; +} + +sub parse_version +{ + my $ver = shift; + + if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) { + return ($1, $2, $3); + } + elsif ($ver !~ /^\d+\.[\d_]+$/) { + die "cannot parse version '$ver'\n"; + } + + $ver =~ s/_//g; + $ver =~ s/$/000000/; + + my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; + + $v = int $v; + $s = int $s; + + if ($r < 5 || ($r == 5 && $v < 6)) { + if ($s % 10) { + die "cannot parse version '$ver'\n"; + } + } + + return ($r, $v, $s); +} + +sub format_version +{ + my $ver = shift; + + $ver =~ s/$/000000/; + my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; + + $v = int $v; + $s = int $s; + + if ($r < 5 || ($r == 5 && $v < 6)) { + if ($s % 10) { + die "invalid version '$ver'\n"; + } + $s /= 10; + + $ver = sprintf "%d.%03d", $r, $v; + $s > 0 and $ver .= sprintf "_%02d", $s; + + return $ver; + } + + return sprintf "%d.%d.%d", $r, $v, $s; +} + +sub info +{ + $opt{quiet} and return; + print @_, "\n"; +} + +sub diag +{ + $opt{quiet} and return; + $opt{diag} and print @_, "\n"; +} + +sub warning +{ + $opt{quiet} and return; + print "*** ", @_, "\n"; +} + +sub error +{ + print "*** ERROR: ", @_, "\n"; +} + +my %given_hints; +my %given_warnings; +sub hint +{ + $opt{quiet} and return; + my $func = shift; + my $rv = 0; + if (exists $warnings{$func} && !$given_warnings{$func}++) { + my $warn = $warnings{$func}; + $warn =~ s!^!*** !mg; + print "*** WARNING: $func\n", $warn; + $rv++; + } + if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) { + my $hint = $hints{$func}; + $hint =~ s/^/ /mg; + print " --- hint for $func ---\n", $hint; + } + $rv; +} + +sub usage +{ + my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms; + my %M = ( 'I' => '*' ); + $usage =~ s/^\s*perl\s+\S+/$^X $0/; + $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g; + + print < }; + my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms; + $copy =~ s/^(?=\S+)/ /gms; + $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms; + $self =~ s/^SKIP.*(?=^__DATA__)/SKIP +if (\@ARGV && \$ARGV[0] eq '--unstrip') { + eval { require Devel::PPPort }; + \$@ and die "Cannot require Devel::PPPort, please install.\\n"; + if (eval \$Devel::PPPort::VERSION < $VERSION) { + die "$0 was originally generated with Devel::PPPort $VERSION.\\n" + . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n" + . "Please install a newer version, or --unstrip will not work.\\n"; + } + Devel::PPPort::WriteFile(\$0); + exit 0; +} +print <$0" or die "cannot strip $0: $!\n"; + print OUT "$pl$c\n"; + + exit 0; +} + +__DATA__ +*/ + +#ifndef _P_P_PORTABILITY_H_ +#define _P_P_PORTABILITY_H_ + +#ifndef DPPP_NAMESPACE +# define DPPP_NAMESPACE DPPP_ +#endif + +#define DPPP_CAT2(x,y) CAT2(x,y) +#define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name) + +#ifndef PERL_REVISION +# if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION)) +# define PERL_PATCHLEVEL_H_IMPLICIT +# include +# endif +# if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL))) +# include +# endif +# ifndef PERL_REVISION +# define PERL_REVISION (5) + /* Replace: 1 */ +# define PERL_VERSION PATCHLEVEL +# define PERL_SUBVERSION SUBVERSION + /* Replace PERL_PATCHLEVEL with PERL_VERSION */ + /* Replace: 0 */ +# endif +#endif + +#define _dpppDEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10)) +#define PERL_BCDVERSION ((_dpppDEC2BCD(PERL_REVISION)<<24)|(_dpppDEC2BCD(PERL_VERSION)<<12)|_dpppDEC2BCD(PERL_SUBVERSION)) + +/* It is very unlikely that anyone will try to use this with Perl 6 + (or greater), but who knows. + */ +#if PERL_REVISION != 5 +# error ppport.h only works with Perl version 5 +#endif /* PERL_REVISION != 5 */ +#ifndef dTHR +# define dTHR dNOOP +#endif +#ifndef dTHX +# define dTHX dNOOP +#endif + +#ifndef dTHXa +# define dTHXa(x) dNOOP +#endif +#ifndef pTHX +# define pTHX void +#endif + +#ifndef pTHX_ +# define pTHX_ +#endif + +#ifndef aTHX +# define aTHX +#endif + +#ifndef aTHX_ +# define aTHX_ +#endif + +#if (PERL_BCDVERSION < 0x5006000) +# ifdef USE_THREADS +# define aTHXR thr +# define aTHXR_ thr, +# else +# define aTHXR +# define aTHXR_ +# endif +# define dTHXR dTHR +#else +# define aTHXR aTHX +# define aTHXR_ aTHX_ +# define dTHXR dTHX +#endif +#ifndef dTHXoa +# define dTHXoa(x) dTHXa(x) +#endif + +#ifdef I_LIMITS +# include +#endif + +#ifndef PERL_UCHAR_MIN +# define PERL_UCHAR_MIN ((unsigned char)0) +#endif + +#ifndef PERL_UCHAR_MAX +# ifdef UCHAR_MAX +# define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX) +# else +# ifdef MAXUCHAR +# define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR) +# else +# define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0) +# endif +# endif +#endif + +#ifndef PERL_USHORT_MIN +# define PERL_USHORT_MIN ((unsigned short)0) +#endif + +#ifndef PERL_USHORT_MAX +# ifdef USHORT_MAX +# define PERL_USHORT_MAX ((unsigned short)USHORT_MAX) +# else +# ifdef MAXUSHORT +# define PERL_USHORT_MAX ((unsigned short)MAXUSHORT) +# else +# ifdef USHRT_MAX +# define PERL_USHORT_MAX ((unsigned short)USHRT_MAX) +# else +# define PERL_USHORT_MAX ((unsigned short)~(unsigned)0) +# endif +# endif +# endif +#endif + +#ifndef PERL_SHORT_MAX +# ifdef SHORT_MAX +# define PERL_SHORT_MAX ((short)SHORT_MAX) +# else +# ifdef MAXSHORT /* Often used in */ +# define PERL_SHORT_MAX ((short)MAXSHORT) +# else +# ifdef SHRT_MAX +# define PERL_SHORT_MAX ((short)SHRT_MAX) +# else +# define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1)) +# endif +# endif +# endif +#endif + +#ifndef PERL_SHORT_MIN +# ifdef SHORT_MIN +# define PERL_SHORT_MIN ((short)SHORT_MIN) +# else +# ifdef MINSHORT +# define PERL_SHORT_MIN ((short)MINSHORT) +# else +# ifdef SHRT_MIN +# define PERL_SHORT_MIN ((short)SHRT_MIN) +# else +# define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3)) +# endif +# endif +# endif +#endif + +#ifndef PERL_UINT_MAX +# ifdef UINT_MAX +# define PERL_UINT_MAX ((unsigned int)UINT_MAX) +# else +# ifdef MAXUINT +# define PERL_UINT_MAX ((unsigned int)MAXUINT) +# else +# define PERL_UINT_MAX (~(unsigned int)0) +# endif +# endif +#endif + +#ifndef PERL_UINT_MIN +# define PERL_UINT_MIN ((unsigned int)0) +#endif + +#ifndef PERL_INT_MAX +# ifdef INT_MAX +# define PERL_INT_MAX ((int)INT_MAX) +# else +# ifdef MAXINT /* Often used in */ +# define PERL_INT_MAX ((int)MAXINT) +# else +# define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1)) +# endif +# endif +#endif + +#ifndef PERL_INT_MIN +# ifdef INT_MIN +# define PERL_INT_MIN ((int)INT_MIN) +# else +# ifdef MININT +# define PERL_INT_MIN ((int)MININT) +# else +# define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3)) +# endif +# endif +#endif + +#ifndef PERL_ULONG_MAX +# ifdef ULONG_MAX +# define PERL_ULONG_MAX ((unsigned long)ULONG_MAX) +# else +# ifdef MAXULONG +# define PERL_ULONG_MAX ((unsigned long)MAXULONG) +# else +# define PERL_ULONG_MAX (~(unsigned long)0) +# endif +# endif +#endif + +#ifndef PERL_ULONG_MIN +# define PERL_ULONG_MIN ((unsigned long)0L) +#endif + +#ifndef PERL_LONG_MAX +# ifdef LONG_MAX +# define PERL_LONG_MAX ((long)LONG_MAX) +# else +# ifdef MAXLONG +# define PERL_LONG_MAX ((long)MAXLONG) +# else +# define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1)) +# endif +# endif +#endif + +#ifndef PERL_LONG_MIN +# ifdef LONG_MIN +# define PERL_LONG_MIN ((long)LONG_MIN) +# else +# ifdef MINLONG +# define PERL_LONG_MIN ((long)MINLONG) +# else +# define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3)) +# endif +# endif +#endif + +#if defined(HAS_QUAD) && (defined(convex) || defined(uts)) +# ifndef PERL_UQUAD_MAX +# ifdef ULONGLONG_MAX +# define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX) +# else +# ifdef MAXULONGLONG +# define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG) +# else +# define PERL_UQUAD_MAX (~(unsigned long long)0) +# endif +# endif +# endif + +# ifndef PERL_UQUAD_MIN +# define PERL_UQUAD_MIN ((unsigned long long)0L) +# endif + +# ifndef PERL_QUAD_MAX +# ifdef LONGLONG_MAX +# define PERL_QUAD_MAX ((long long)LONGLONG_MAX) +# else +# ifdef MAXLONGLONG +# define PERL_QUAD_MAX ((long long)MAXLONGLONG) +# else +# define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1)) +# endif +# endif +# endif + +# ifndef PERL_QUAD_MIN +# ifdef LONGLONG_MIN +# define PERL_QUAD_MIN ((long long)LONGLONG_MIN) +# else +# ifdef MINLONGLONG +# define PERL_QUAD_MIN ((long long)MINLONGLONG) +# else +# define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3)) +# endif +# endif +# endif +#endif + +/* This is based on code from 5.003 perl.h */ +#ifdef HAS_QUAD +# ifdef cray +#ifndef IVTYPE +# define IVTYPE int +#endif + +#ifndef IV_MIN +# define IV_MIN PERL_INT_MIN +#endif + +#ifndef IV_MAX +# define IV_MAX PERL_INT_MAX +#endif + +#ifndef UV_MIN +# define UV_MIN PERL_UINT_MIN +#endif + +#ifndef UV_MAX +# define UV_MAX PERL_UINT_MAX +#endif + +# ifdef INTSIZE +#ifndef IVSIZE +# define IVSIZE INTSIZE +#endif + +# endif +# else +# if defined(convex) || defined(uts) +#ifndef IVTYPE +# define IVTYPE long long +#endif + +#ifndef IV_MIN +# define IV_MIN PERL_QUAD_MIN +#endif + +#ifndef IV_MAX +# define IV_MAX PERL_QUAD_MAX +#endif + +#ifndef UV_MIN +# define UV_MIN PERL_UQUAD_MIN +#endif + +#ifndef UV_MAX +# define UV_MAX PERL_UQUAD_MAX +#endif + +# ifdef LONGLONGSIZE +#ifndef IVSIZE +# define IVSIZE LONGLONGSIZE +#endif + +# endif +# else +#ifndef IVTYPE +# define IVTYPE long +#endif + +#ifndef IV_MIN +# define IV_MIN PERL_LONG_MIN +#endif + +#ifndef IV_MAX +# define IV_MAX PERL_LONG_MAX +#endif + +#ifndef UV_MIN +# define UV_MIN PERL_ULONG_MIN +#endif + +#ifndef UV_MAX +# define UV_MAX PERL_ULONG_MAX +#endif + +# ifdef LONGSIZE +#ifndef IVSIZE +# define IVSIZE LONGSIZE +#endif + +# endif +# endif +# endif +#ifndef IVSIZE +# define IVSIZE 8 +#endif + +#ifndef LONGSIZE +# define LONGSIZE 8 +#endif + +#ifndef PERL_QUAD_MIN +# define PERL_QUAD_MIN IV_MIN +#endif + +#ifndef PERL_QUAD_MAX +# define PERL_QUAD_MAX IV_MAX +#endif + +#ifndef PERL_UQUAD_MIN +# define PERL_UQUAD_MIN UV_MIN +#endif + +#ifndef PERL_UQUAD_MAX +# define PERL_UQUAD_MAX UV_MAX +#endif + +#else +#ifndef IVTYPE +# define IVTYPE long +#endif + +#ifndef LONGSIZE +# define LONGSIZE 4 +#endif + +#ifndef IV_MIN +# define IV_MIN PERL_LONG_MIN +#endif + +#ifndef IV_MAX +# define IV_MAX PERL_LONG_MAX +#endif + +#ifndef UV_MIN +# define UV_MIN PERL_ULONG_MIN +#endif + +#ifndef UV_MAX +# define UV_MAX PERL_ULONG_MAX +#endif + +#endif + +#ifndef IVSIZE +# ifdef LONGSIZE +# define IVSIZE LONGSIZE +# else +# define IVSIZE 4 /* A bold guess, but the best we can make. */ +# endif +#endif +#ifndef UVTYPE +# define UVTYPE unsigned IVTYPE +#endif + +#ifndef UVSIZE +# define UVSIZE IVSIZE +#endif +#ifndef sv_setuv +# define sv_setuv(sv, uv) \ + STMT_START { \ + UV TeMpUv = uv; \ + if (TeMpUv <= IV_MAX) \ + sv_setiv(sv, TeMpUv); \ + else \ + sv_setnv(sv, (double)TeMpUv); \ + } STMT_END +#endif +#ifndef newSVuv +# define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) +#endif +#ifndef sv_2uv +# define sv_2uv(sv) ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv))) +#endif + +#ifndef SvUVX +# define SvUVX(sv) ((UV)SvIVX(sv)) +#endif + +#ifndef SvUVXx +# define SvUVXx(sv) SvUVX(sv) +#endif + +#ifndef SvUV +# define SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv)) +#endif + +#ifndef SvUVx +# define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv)) +#endif + +/* Hint: sv_uv + * Always use the SvUVx() macro instead of sv_uv(). + */ +#ifndef sv_uv +# define sv_uv(sv) SvUVx(sv) +#endif + +#if !defined(SvUOK) && defined(SvIOK_UV) +# define SvUOK(sv) SvIOK_UV(sv) +#endif +#ifndef XST_mUV +# define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) ) +#endif + +#ifndef XSRETURN_UV +# define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END +#endif +#ifndef PUSHu +# define PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END +#endif + +#ifndef XPUSHu +# define XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END +#endif + +#ifdef HAS_MEMCMP +#ifndef memNE +# define memNE(s1,s2,l) (memcmp(s1,s2,l)) +#endif + +#ifndef memEQ +# define memEQ(s1,s2,l) (!memcmp(s1,s2,l)) +#endif + +#else +#ifndef memNE +# define memNE(s1,s2,l) (bcmp(s1,s2,l)) +#endif + +#ifndef memEQ +# define memEQ(s1,s2,l) (!bcmp(s1,s2,l)) +#endif + +#endif +#ifndef memEQs +# define memEQs(s1, l, s2) \ + (sizeof(s2)-1 == l && memEQ(s1, (s2 ""), (sizeof(s2)-1))) +#endif + +#ifndef memNEs +# define memNEs(s1, l, s2) !memEQs(s1, l, s2) +#endif +#ifndef MoveD +# define MoveD(s,d,n,t) memmove((char*)(d),(char*)(s), (n) * sizeof(t)) +#endif + +#ifndef CopyD +# define CopyD(s,d,n,t) memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) +#endif + +#ifdef HAS_MEMSET +#ifndef ZeroD +# define ZeroD(d,n,t) memzero((char*)(d), (n) * sizeof(t)) +#endif + +#else +#ifndef ZeroD +# define ZeroD(d,n,t) ((void)memzero((char*)(d), (n) * sizeof(t)), d) +#endif + +#endif +#ifndef PoisonWith +# define PoisonWith(d,n,t,b) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t)) +#endif + +#ifndef PoisonNew +# define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB) +#endif + +#ifndef PoisonFree +# define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF) +#endif + +#ifndef Poison +# define Poison(d,n,t) PoisonFree(d,n,t) +#endif +#ifndef Newx +# define Newx(v,n,t) New(0,v,n,t) +#endif + +#ifndef Newxc +# define Newxc(v,n,t,c) Newc(0,v,n,t,c) +#endif + +#ifndef Newxz +# define Newxz(v,n,t) Newz(0,v,n,t) +#endif + +#ifndef PERL_UNUSED_DECL +# ifdef HASATTRIBUTE +# if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) +# define PERL_UNUSED_DECL +# else +# define PERL_UNUSED_DECL __attribute__((unused)) +# endif +# else +# define PERL_UNUSED_DECL +# endif +#endif + +#ifndef PERL_UNUSED_ARG +# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ +# include +# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) +# else +# define PERL_UNUSED_ARG(x) ((void)x) +# endif +#endif + +#ifndef PERL_UNUSED_VAR +# define PERL_UNUSED_VAR(x) ((void)x) +#endif + +#ifndef PERL_UNUSED_CONTEXT +# ifdef USE_ITHREADS +# define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) +# else +# define PERL_UNUSED_CONTEXT +# endif +#endif +#ifndef NOOP +# define NOOP /*EMPTY*/(void)0 +#endif + +#ifndef dNOOP +# define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL +#endif + +#ifndef NVTYPE +# if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) +# define NVTYPE long double +# else +# define NVTYPE double +# endif +typedef NVTYPE NV; +#endif + +#ifndef INT2PTR +# if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) +# define PTRV UV +# define INT2PTR(any,d) (any)(d) +# else +# if PTRSIZE == LONGSIZE +# define PTRV unsigned long +# else +# define PTRV unsigned +# endif +# define INT2PTR(any,d) (any)(PTRV)(d) +# endif +#endif + +#ifndef PTR2ul +# if PTRSIZE == LONGSIZE +# define PTR2ul(p) (unsigned long)(p) +# else +# define PTR2ul(p) INT2PTR(unsigned long,p) +# endif +#endif +#ifndef PTR2nat +# define PTR2nat(p) (PTRV)(p) +#endif + +#ifndef NUM2PTR +# define NUM2PTR(any,d) (any)PTR2nat(d) +#endif + +#ifndef PTR2IV +# define PTR2IV(p) INT2PTR(IV,p) +#endif + +#ifndef PTR2UV +# define PTR2UV(p) INT2PTR(UV,p) +#endif + +#ifndef PTR2NV +# define PTR2NV(p) NUM2PTR(NV,p) +#endif + +#undef START_EXTERN_C +#undef END_EXTERN_C +#undef EXTERN_C +#ifdef __cplusplus +# define START_EXTERN_C extern "C" { +# define END_EXTERN_C } +# define EXTERN_C extern "C" +#else +# define START_EXTERN_C +# define END_EXTERN_C +# define EXTERN_C extern +#endif + +#if defined(PERL_GCC_PEDANTIC) +# ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN +# define PERL_GCC_BRACE_GROUPS_FORBIDDEN +# endif +#endif + +#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) +# ifndef PERL_USE_GCC_BRACE_GROUPS +# define PERL_USE_GCC_BRACE_GROUPS +# endif +#endif + +#undef STMT_START +#undef STMT_END +#ifdef PERL_USE_GCC_BRACE_GROUPS +# define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */ +# define STMT_END ) +#else +# if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) +# define STMT_START if (1) +# define STMT_END else (void)0 +# else +# define STMT_START do +# define STMT_END while (0) +# endif +#endif +#ifndef boolSV +# define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no) +#endif + +/* DEFSV appears first in 5.004_56 */ +#ifndef DEFSV +# define DEFSV GvSV(PL_defgv) +#endif + +#ifndef SAVE_DEFSV +# define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv)) +#endif + +#ifndef DEFSV_set +# define DEFSV_set(sv) (DEFSV = (sv)) +#endif + +/* Older perls (<=5.003) lack AvFILLp */ +#ifndef AvFILLp +# define AvFILLp AvFILL +#endif +#ifndef ERRSV +# define ERRSV get_sv("@",FALSE) +#endif + +/* Hint: gv_stashpvn + * This function's backport doesn't support the length parameter, but + * rather ignores it. Portability can only be ensured if the length + * parameter is used for speed reasons, but the length can always be + * correctly computed from the string argument. + */ +#ifndef gv_stashpvn +# define gv_stashpvn(str,len,create) gv_stashpv(str,create) +#endif + +/* Replace: 1 */ +#ifndef get_cv +# define get_cv perl_get_cv +#endif + +#ifndef get_sv +# define get_sv perl_get_sv +#endif + +#ifndef get_av +# define get_av perl_get_av +#endif + +#ifndef get_hv +# define get_hv perl_get_hv +#endif + +/* Replace: 0 */ +#ifndef dUNDERBAR +# define dUNDERBAR dNOOP +#endif + +#ifndef UNDERBAR +# define UNDERBAR DEFSV +#endif +#ifndef dAX +# define dAX I32 ax = MARK - PL_stack_base + 1 +#endif + +#ifndef dITEMS +# define dITEMS I32 items = SP - MARK +#endif +#ifndef dXSTARG +# define dXSTARG SV * targ = sv_newmortal() +#endif +#ifndef dAXMARK +# define dAXMARK I32 ax = POPMARK; \ + register SV ** const mark = PL_stack_base + ax++ +#endif +#ifndef XSprePUSH +# define XSprePUSH (sp = PL_stack_base + ax - 1) +#endif + +#if (PERL_BCDVERSION < 0x5005000) +# undef XSRETURN +# define XSRETURN(off) \ + STMT_START { \ + PL_stack_sp = PL_stack_base + ax + ((off) - 1); \ + return; \ + } STMT_END +#endif +#ifndef XSPROTO +# define XSPROTO(name) void name(pTHX_ CV* cv) +#endif + +#ifndef SVfARG +# define SVfARG(p) ((void*)(p)) +#endif +#ifndef PERL_ABS +# define PERL_ABS(x) ((x) < 0 ? -(x) : (x)) +#endif +#ifndef dVAR +# define dVAR dNOOP +#endif +#ifndef SVf +# define SVf "_" +#endif +#ifndef UTF8_MAXBYTES +# define UTF8_MAXBYTES UTF8_MAXLEN +#endif +#ifndef CPERLscope +# define CPERLscope(x) x +#endif +#ifndef PERL_HASH +# define PERL_HASH(hash,str,len) \ + STMT_START { \ + const char *s_PeRlHaSh = str; \ + I32 i_PeRlHaSh = len; \ + U32 hash_PeRlHaSh = 0; \ + while (i_PeRlHaSh--) \ + hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \ + (hash) = hash_PeRlHaSh; \ + } STMT_END +#endif + +#ifndef PERLIO_FUNCS_DECL +# ifdef PERLIO_FUNCS_CONST +# define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs +# define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs) +# else +# define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs +# define PERLIO_FUNCS_CAST(funcs) (funcs) +# endif +#endif + +/* provide these typedefs for older perls */ +#if (PERL_BCDVERSION < 0x5009003) + +# ifdef ARGSproto +typedef OP* (CPERLscope(*Perl_ppaddr_t))(ARGSproto); +# else +typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX); +# endif + +typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*); + +#endif +#ifndef isPSXSPC +# define isPSXSPC(c) (isSPACE(c) || (c) == '\v') +#endif + +#ifndef isBLANK +# define isBLANK(c) ((c) == ' ' || (c) == '\t') +#endif + +#ifdef EBCDIC +#ifndef isALNUMC +# define isALNUMC(c) isalnum(c) +#endif + +#ifndef isASCII +# define isASCII(c) isascii(c) +#endif + +#ifndef isCNTRL +# define isCNTRL(c) iscntrl(c) +#endif + +#ifndef isGRAPH +# define isGRAPH(c) isgraph(c) +#endif + +#ifndef isPRINT +# define isPRINT(c) isprint(c) +#endif + +#ifndef isPUNCT +# define isPUNCT(c) ispunct(c) +#endif + +#ifndef isXDIGIT +# define isXDIGIT(c) isxdigit(c) +#endif + +#else +# if (PERL_BCDVERSION < 0x5010000) +/* Hint: isPRINT + * The implementation in older perl versions includes all of the + * isSPACE() characters, which is wrong. The version provided by + * Devel::PPPort always overrides a present buggy version. + */ +# undef isPRINT +# endif + +#ifdef HAS_QUAD +# define WIDEST_UTYPE U64TYPE +#else +# define WIDEST_UTYPE U32 +#endif +#ifndef isALNUMC +# define isALNUMC(c) (isALPHA(c) || isDIGIT(c)) +#endif + +#ifndef isASCII +# define isASCII(c) ((WIDEST_UTYPE) (c) <= 127) +#endif + +#ifndef isCNTRL +# define isCNTRL(c) ((WIDEST_UTYPE) (c) < ' ' || (c) == 127) +#endif + +#ifndef isGRAPH +# define isGRAPH(c) (isALNUM(c) || isPUNCT(c)) +#endif + +#ifndef isPRINT +# define isPRINT(c) (((c) >= 32 && (c) < 127)) +#endif + +#ifndef isPUNCT +# define isPUNCT(c) (((c) >= 33 && (c) <= 47) || ((c) >= 58 && (c) <= 64) || ((c) >= 91 && (c) <= 96) || ((c) >= 123 && (c) <= 126)) +#endif + +#ifndef isXDIGIT +# define isXDIGIT(c) (isDIGIT(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) +#endif + +#endif + +/* Until we figure out how to support this in older perls... */ +#if (PERL_BCDVERSION >= 0x5008000) +#ifndef HeUTF8 +# define HeUTF8(he) ((HeKLEN(he) == HEf_SVKEY) ? \ + SvUTF8(HeKEY_sv(he)) : \ + (U32)HeKUTF8(he)) +#endif + +#endif + +#ifndef PERL_SIGNALS_UNSAFE_FLAG + +#define PERL_SIGNALS_UNSAFE_FLAG 0x0001 + +#if (PERL_BCDVERSION < 0x5008000) +# define D_PPP_PERL_SIGNALS_INIT PERL_SIGNALS_UNSAFE_FLAG +#else +# define D_PPP_PERL_SIGNALS_INIT 0 +#endif + +#if defined(NEED_PL_signals) +static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; +#elif defined(NEED_PL_signals_GLOBAL) +U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; +#else +extern U32 DPPP_(my_PL_signals); +#endif +#define PL_signals DPPP_(my_PL_signals) + +#endif + +/* Hint: PL_ppaddr + * Calling an op via PL_ppaddr requires passing a context argument + * for threaded builds. Since the context argument is different for + * 5.005 perls, you can use aTHXR (supplied by ppport.h), which will + * automatically be defined as the correct argument. + */ + +#if (PERL_BCDVERSION <= 0x5005005) +/* Replace: 1 */ +# define PL_ppaddr ppaddr +# define PL_no_modify no_modify +/* Replace: 0 */ +#endif + +#if (PERL_BCDVERSION <= 0x5004005) +/* Replace: 1 */ +# define PL_DBsignal DBsignal +# define PL_DBsingle DBsingle +# define PL_DBsub DBsub +# define PL_DBtrace DBtrace +# define PL_Sv Sv +# define PL_bufend bufend +# define PL_bufptr bufptr +# define PL_compiling compiling +# define PL_copline copline +# define PL_curcop curcop +# define PL_curstash curstash +# define PL_debstash debstash +# define PL_defgv defgv +# define PL_diehook diehook +# define PL_dirty dirty +# define PL_dowarn dowarn +# define PL_errgv errgv +# define PL_error_count error_count +# define PL_expect expect +# define PL_hexdigit hexdigit +# define PL_hints hints +# define PL_in_my in_my +# define PL_laststatval laststatval +# define PL_lex_state lex_state +# define PL_lex_stuff lex_stuff +# define PL_linestr linestr +# define PL_na na +# define PL_perl_destruct_level perl_destruct_level +# define PL_perldb perldb +# define PL_rsfp_filters rsfp_filters +# define PL_rsfp rsfp +# define PL_stack_base stack_base +# define PL_stack_sp stack_sp +# define PL_statcache statcache +# define PL_stdingv stdingv +# define PL_sv_arenaroot sv_arenaroot +# define PL_sv_no sv_no +# define PL_sv_undef sv_undef +# define PL_sv_yes sv_yes +# define PL_tainted tainted +# define PL_tainting tainting +# define PL_tokenbuf tokenbuf +/* Replace: 0 */ +#endif + +/* Warning: PL_parser + * For perl versions earlier than 5.9.5, this is an always + * non-NULL dummy. Also, it cannot be dereferenced. Don't + * use it if you can avoid is and unless you absolutely know + * what you're doing. + * If you always check that PL_parser is non-NULL, you can + * define DPPP_PL_parser_NO_DUMMY to avoid the creation of + * a dummy parser structure. + */ + +#if (PERL_BCDVERSION >= 0x5009005) +# ifdef DPPP_PL_parser_NO_DUMMY +# define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ + (croak("panic: PL_parser == NULL in %s:%d", \ + __FILE__, __LINE__), (yy_parser *) NULL))->var) +# else +# ifdef DPPP_PL_parser_NO_DUMMY_WARNING +# define D_PPP_parser_dummy_warning(var) +# else +# define D_PPP_parser_dummy_warning(var) \ + warn("warning: dummy PL_" #var " used in %s:%d", __FILE__, __LINE__), +# endif +# define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ + (D_PPP_parser_dummy_warning(var) &DPPP_(dummy_PL_parser)))->var) +#if defined(NEED_PL_parser) +static yy_parser DPPP_(dummy_PL_parser); +#elif defined(NEED_PL_parser_GLOBAL) +yy_parser DPPP_(dummy_PL_parser); +#else +extern yy_parser DPPP_(dummy_PL_parser); +#endif + +# endif + +/* PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf depends on PL_parser */ +/* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf + * Do not use this variable unless you know exactly what you're + * doint. It is internal to the perl parser and may change or even + * be removed in the future. As of perl 5.9.5, you have to check + * for (PL_parser != NULL) for this variable to have any effect. + * An always non-NULL PL_parser dummy is provided for earlier + * perl versions. + * If PL_parser is NULL when you try to access this variable, a + * dummy is being accessed instead and a warning is issued unless + * you define DPPP_PL_parser_NO_DUMMY_WARNING. + * If DPPP_PL_parser_NO_DUMMY is defined, the code trying to access + * this variable will croak with a panic message. + */ + +# define PL_expect D_PPP_my_PL_parser_var(expect) +# define PL_copline D_PPP_my_PL_parser_var(copline) +# define PL_rsfp D_PPP_my_PL_parser_var(rsfp) +# define PL_rsfp_filters D_PPP_my_PL_parser_var(rsfp_filters) +# define PL_linestr D_PPP_my_PL_parser_var(linestr) +# define PL_bufptr D_PPP_my_PL_parser_var(bufptr) +# define PL_bufend D_PPP_my_PL_parser_var(bufend) +# define PL_lex_state D_PPP_my_PL_parser_var(lex_state) +# define PL_lex_stuff D_PPP_my_PL_parser_var(lex_stuff) +# define PL_tokenbuf D_PPP_my_PL_parser_var(tokenbuf) +# define PL_in_my D_PPP_my_PL_parser_var(in_my) +# define PL_in_my_stash D_PPP_my_PL_parser_var(in_my_stash) +# define PL_error_count D_PPP_my_PL_parser_var(error_count) + + +#else + +/* ensure that PL_parser != NULL and cannot be dereferenced */ +# define PL_parser ((void *) 1) + +#endif +#ifndef mPUSHs +# define mPUSHs(s) PUSHs(sv_2mortal(s)) +#endif + +#ifndef PUSHmortal +# define PUSHmortal PUSHs(sv_newmortal()) +#endif + +#ifndef mPUSHp +# define mPUSHp(p,l) sv_setpvn(PUSHmortal, (p), (l)) +#endif + +#ifndef mPUSHn +# define mPUSHn(n) sv_setnv(PUSHmortal, (NV)(n)) +#endif + +#ifndef mPUSHi +# define mPUSHi(i) sv_setiv(PUSHmortal, (IV)(i)) +#endif + +#ifndef mPUSHu +# define mPUSHu(u) sv_setuv(PUSHmortal, (UV)(u)) +#endif +#ifndef mXPUSHs +# define mXPUSHs(s) XPUSHs(sv_2mortal(s)) +#endif + +#ifndef XPUSHmortal +# define XPUSHmortal XPUSHs(sv_newmortal()) +#endif + +#ifndef mXPUSHp +# define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn(PUSHmortal, (p), (l)); } STMT_END +#endif + +#ifndef mXPUSHn +# define mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv(PUSHmortal, (NV)(n)); } STMT_END +#endif + +#ifndef mXPUSHi +# define mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv(PUSHmortal, (IV)(i)); } STMT_END +#endif + +#ifndef mXPUSHu +# define mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv(PUSHmortal, (UV)(u)); } STMT_END +#endif + +/* Replace: 1 */ +#ifndef call_sv +# define call_sv perl_call_sv +#endif + +#ifndef call_pv +# define call_pv perl_call_pv +#endif + +#ifndef call_argv +# define call_argv perl_call_argv +#endif + +#ifndef call_method +# define call_method perl_call_method +#endif +#ifndef eval_sv +# define eval_sv perl_eval_sv +#endif + +/* Replace: 0 */ +#ifndef PERL_LOADMOD_DENY +# define PERL_LOADMOD_DENY 0x1 +#endif + +#ifndef PERL_LOADMOD_NOIMPORT +# define PERL_LOADMOD_NOIMPORT 0x2 +#endif + +#ifndef PERL_LOADMOD_IMPORT_OPS +# define PERL_LOADMOD_IMPORT_OPS 0x4 +#endif + +#ifndef G_METHOD +# define G_METHOD 64 +# ifdef call_sv +# undef call_sv +# endif +# if (PERL_BCDVERSION < 0x5006000) +# define call_sv(sv, flags) ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \ + (flags) & ~G_METHOD) : perl_call_sv(sv, flags)) +# else +# define call_sv(sv, flags) ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \ + (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags)) +# endif +#endif + +/* Replace perl_eval_pv with eval_pv */ + +#ifndef eval_pv +#if defined(NEED_eval_pv) +static SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); +static +#else +extern SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); +#endif + +#ifdef eval_pv +# undef eval_pv +#endif +#define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b) +#define Perl_eval_pv DPPP_(my_eval_pv) + +#if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL) + +SV* +DPPP_(my_eval_pv)(char *p, I32 croak_on_error) +{ + dSP; + SV* sv = newSVpv(p, 0); + + PUSHMARK(sp); + eval_sv(sv, G_SCALAR); + SvREFCNT_dec(sv); + + SPAGAIN; + sv = POPs; + PUTBACK; + + if (croak_on_error && SvTRUE(GvSV(errgv))) + croak(SvPVx(GvSV(errgv), na)); + + return sv; +} + +#endif +#endif + +#ifndef vload_module +#if defined(NEED_vload_module) +static void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); +static +#else +extern void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); +#endif + +#ifdef vload_module +# undef vload_module +#endif +#define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d) +#define Perl_vload_module DPPP_(my_vload_module) + +#if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL) + +void +DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args) +{ + dTHR; + dVAR; + OP *veop, *imop; + + OP * const modname = newSVOP(OP_CONST, 0, name); + /* 5.005 has a somewhat hacky force_normal that doesn't croak on + SvREADONLY() if PL_compling is true. Current perls take care in + ck_require() to correctly turn off SvREADONLY before calling + force_normal_flags(). This seems a better fix than fudging PL_compling + */ + SvREADONLY_off(((SVOP*)modname)->op_sv); + modname->op_private |= OPpCONST_BARE; + if (ver) { + veop = newSVOP(OP_CONST, 0, ver); + } + else + veop = NULL; + if (flags & PERL_LOADMOD_NOIMPORT) { + imop = sawparens(newNULLLIST()); + } + else if (flags & PERL_LOADMOD_IMPORT_OPS) { + imop = va_arg(*args, OP*); + } + else { + SV *sv; + imop = NULL; + sv = va_arg(*args, SV*); + while (sv) { + imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv)); + sv = va_arg(*args, SV*); + } + } + { + const line_t ocopline = PL_copline; + COP * const ocurcop = PL_curcop; + const int oexpect = PL_expect; + +#if (PERL_BCDVERSION >= 0x5004000) + utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0), + veop, modname, imop); +#elif (PERL_BCDVERSION > 0x5003000) + utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(), + veop, modname, imop); +#else + utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(), + modname, imop); +#endif + PL_expect = oexpect; + PL_copline = ocopline; + PL_curcop = ocurcop; + } +} + +#endif +#endif + +#ifndef load_module +#if defined(NEED_load_module) +static void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); +static +#else +extern void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); +#endif + +#ifdef load_module +# undef load_module +#endif +#define load_module DPPP_(my_load_module) +#define Perl_load_module DPPP_(my_load_module) + +#if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL) + +void +DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...) +{ + va_list args; + va_start(args, ver); + vload_module(flags, name, ver, &args); + va_end(args); +} + +#endif +#endif +#ifndef newRV_inc +# define newRV_inc(sv) newRV(sv) /* Replace */ +#endif + +#ifndef newRV_noinc +#if defined(NEED_newRV_noinc) +static SV * DPPP_(my_newRV_noinc)(SV *sv); +static +#else +extern SV * DPPP_(my_newRV_noinc)(SV *sv); +#endif + +#ifdef newRV_noinc +# undef newRV_noinc +#endif +#define newRV_noinc(a) DPPP_(my_newRV_noinc)(aTHX_ a) +#define Perl_newRV_noinc DPPP_(my_newRV_noinc) + +#if defined(NEED_newRV_noinc) || defined(NEED_newRV_noinc_GLOBAL) +SV * +DPPP_(my_newRV_noinc)(SV *sv) +{ + SV *rv = (SV *)newRV(sv); + SvREFCNT_dec(sv); + return rv; +} +#endif +#endif + +/* Hint: newCONSTSUB + * Returns a CV* as of perl-5.7.1. This return value is not supported + * by Devel::PPPort. + */ + +/* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */ +#if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005) +#if defined(NEED_newCONSTSUB) +static void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); +static +#else +extern void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); +#endif + +#ifdef newCONSTSUB +# undef newCONSTSUB +#endif +#define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c) +#define Perl_newCONSTSUB DPPP_(my_newCONSTSUB) + +#if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL) + +/* This is just a trick to avoid a dependency of newCONSTSUB on PL_parser */ +/* (There's no PL_parser in perl < 5.005, so this is completely safe) */ +#define D_PPP_PL_copline PL_copline + +void +DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv) +{ + U32 oldhints = PL_hints; + HV *old_cop_stash = PL_curcop->cop_stash; + HV *old_curstash = PL_curstash; + line_t oldline = PL_curcop->cop_line; + PL_curcop->cop_line = D_PPP_PL_copline; + + PL_hints &= ~HINT_BLOCK_SCOPE; + if (stash) + PL_curstash = PL_curcop->cop_stash = stash; + + newSUB( + +#if (PERL_BCDVERSION < 0x5003022) + start_subparse(), +#elif (PERL_BCDVERSION == 0x5003022) + start_subparse(0), +#else /* 5.003_23 onwards */ + start_subparse(FALSE, 0), +#endif + + newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)), + newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */ + newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv)) + ); + + PL_hints = oldhints; + PL_curcop->cop_stash = old_cop_stash; + PL_curstash = old_curstash; + PL_curcop->cop_line = oldline; +} +#endif +#endif + +/* + * Boilerplate macros for initializing and accessing interpreter-local + * data from C. All statics in extensions should be reworked to use + * this, if you want to make the extension thread-safe. See ext/re/re.xs + * for an example of the use of these macros. + * + * Code that uses these macros is responsible for the following: + * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts" + * 2. Declare a typedef named my_cxt_t that is a structure that contains + * all the data that needs to be interpreter-local. + * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t. + * 4. Use the MY_CXT_INIT macro such that it is called exactly once + * (typically put in the BOOT: section). + * 5. Use the members of the my_cxt_t structure everywhere as + * MY_CXT.member. + * 6. Use the dMY_CXT macro (a declaration) in all the functions that + * access MY_CXT. + */ + +#if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \ + defined(PERL_CAPI) || defined(PERL_IMPLICIT_CONTEXT) + +#ifndef START_MY_CXT + +/* This must appear in all extensions that define a my_cxt_t structure, + * right after the definition (i.e. at file scope). The non-threads + * case below uses it to declare the data as static. */ +#define START_MY_CXT + +#if (PERL_BCDVERSION < 0x5004068) +/* Fetches the SV that keeps the per-interpreter data. */ +#define dMY_CXT_SV \ + SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE) +#else /* >= perl5.004_68 */ +#define dMY_CXT_SV \ + SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY, \ + sizeof(MY_CXT_KEY)-1, TRUE) +#endif /* < perl5.004_68 */ + +/* This declaration should be used within all functions that use the + * interpreter-local data. */ +#define dMY_CXT \ + dMY_CXT_SV; \ + my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv)) + +/* Creates and zeroes the per-interpreter data. + * (We allocate my_cxtp in a Perl SV so that it will be released when + * the interpreter goes away.) */ +#define MY_CXT_INIT \ + dMY_CXT_SV; \ + /* newSV() allocates one more than needed */ \ + my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ + Zero(my_cxtp, 1, my_cxt_t); \ + sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) + +/* This macro must be used to access members of the my_cxt_t structure. + * e.g. MYCXT.some_data */ +#define MY_CXT (*my_cxtp) + +/* Judicious use of these macros can reduce the number of times dMY_CXT + * is used. Use is similar to pTHX, aTHX etc. */ +#define pMY_CXT my_cxt_t *my_cxtp +#define pMY_CXT_ pMY_CXT, +#define _pMY_CXT ,pMY_CXT +#define aMY_CXT my_cxtp +#define aMY_CXT_ aMY_CXT, +#define _aMY_CXT ,aMY_CXT + +#endif /* START_MY_CXT */ + +#ifndef MY_CXT_CLONE +/* Clones the per-interpreter data. */ +#define MY_CXT_CLONE \ + dMY_CXT_SV; \ + my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ + Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\ + sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) +#endif + +#else /* single interpreter */ + +#ifndef START_MY_CXT + +#define START_MY_CXT static my_cxt_t my_cxt; +#define dMY_CXT_SV dNOOP +#define dMY_CXT dNOOP +#define MY_CXT_INIT NOOP +#define MY_CXT my_cxt + +#define pMY_CXT void +#define pMY_CXT_ +#define _pMY_CXT +#define aMY_CXT +#define aMY_CXT_ +#define _aMY_CXT + +#endif /* START_MY_CXT */ + +#ifndef MY_CXT_CLONE +#define MY_CXT_CLONE NOOP +#endif + +#endif + +#ifndef IVdf +# if IVSIZE == LONGSIZE +# define IVdf "ld" +# define UVuf "lu" +# define UVof "lo" +# define UVxf "lx" +# define UVXf "lX" +# elif IVSIZE == INTSIZE +# define IVdf "d" +# define UVuf "u" +# define UVof "o" +# define UVxf "x" +# define UVXf "X" +# else +# error "cannot define IV/UV formats" +# endif +#endif + +#ifndef NVef +# if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \ + defined(PERL_PRIfldbl) && (PERL_BCDVERSION != 0x5006000) + /* Not very likely, but let's try anyway. */ +# define NVef PERL_PRIeldbl +# define NVff PERL_PRIfldbl +# define NVgf PERL_PRIgldbl +# else +# define NVef "e" +# define NVff "f" +# define NVgf "g" +# endif +#endif + +#ifndef SvREFCNT_inc +# ifdef PERL_USE_GCC_BRACE_GROUPS +# define SvREFCNT_inc(sv) \ + ({ \ + SV * const _sv = (SV*)(sv); \ + if (_sv) \ + (SvREFCNT(_sv))++; \ + _sv; \ + }) +# else +# define SvREFCNT_inc(sv) \ + ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL) +# endif +#endif + +#ifndef SvREFCNT_inc_simple +# ifdef PERL_USE_GCC_BRACE_GROUPS +# define SvREFCNT_inc_simple(sv) \ + ({ \ + if (sv) \ + (SvREFCNT(sv))++; \ + (SV *)(sv); \ + }) +# else +# define SvREFCNT_inc_simple(sv) \ + ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL) +# endif +#endif + +#ifndef SvREFCNT_inc_NN +# ifdef PERL_USE_GCC_BRACE_GROUPS +# define SvREFCNT_inc_NN(sv) \ + ({ \ + SV * const _sv = (SV*)(sv); \ + SvREFCNT(_sv)++; \ + _sv; \ + }) +# else +# define SvREFCNT_inc_NN(sv) \ + (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv) +# endif +#endif + +#ifndef SvREFCNT_inc_void +# ifdef PERL_USE_GCC_BRACE_GROUPS +# define SvREFCNT_inc_void(sv) \ + ({ \ + SV * const _sv = (SV*)(sv); \ + if (_sv) \ + (void)(SvREFCNT(_sv)++); \ + }) +# else +# define SvREFCNT_inc_void(sv) \ + (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0) +# endif +#endif +#ifndef SvREFCNT_inc_simple_void +# define SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END +#endif + +#ifndef SvREFCNT_inc_simple_NN +# define SvREFCNT_inc_simple_NN(sv) (++SvREFCNT(sv), (SV*)(sv)) +#endif + +#ifndef SvREFCNT_inc_void_NN +# define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) +#endif + +#ifndef SvREFCNT_inc_simple_void_NN +# define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) +#endif + +#ifndef newSV_type + +#if defined(NEED_newSV_type) +static SV* DPPP_(my_newSV_type)(pTHX_ svtype const t); +static +#else +extern SV* DPPP_(my_newSV_type)(pTHX_ svtype const t); +#endif + +#ifdef newSV_type +# undef newSV_type +#endif +#define newSV_type(a) DPPP_(my_newSV_type)(aTHX_ a) +#define Perl_newSV_type DPPP_(my_newSV_type) + +#if defined(NEED_newSV_type) || defined(NEED_newSV_type_GLOBAL) + +SV* +DPPP_(my_newSV_type)(pTHX_ svtype const t) +{ + SV* const sv = newSV(0); + sv_upgrade(sv, t); + return sv; +} + +#endif + +#endif + +#if (PERL_BCDVERSION < 0x5006000) +# define D_PPP_CONSTPV_ARG(x) ((char *) (x)) +#else +# define D_PPP_CONSTPV_ARG(x) (x) +#endif +#ifndef newSVpvn +# define newSVpvn(data,len) ((data) \ + ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ + : newSV(0)) +#endif +#ifndef newSVpvn_utf8 +# define newSVpvn_utf8(s, len, u) newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0) +#endif +#ifndef SVf_UTF8 +# define SVf_UTF8 0 +#endif + +#ifndef newSVpvn_flags + +#if defined(NEED_newSVpvn_flags) +static SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags); +static +#else +extern SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags); +#endif + +#ifdef newSVpvn_flags +# undef newSVpvn_flags +#endif +#define newSVpvn_flags(a,b,c) DPPP_(my_newSVpvn_flags)(aTHX_ a,b,c) +#define Perl_newSVpvn_flags DPPP_(my_newSVpvn_flags) + +#if defined(NEED_newSVpvn_flags) || defined(NEED_newSVpvn_flags_GLOBAL) + +SV * +DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags) +{ + SV *sv = newSVpvn(D_PPP_CONSTPV_ARG(s), len); + SvFLAGS(sv) |= (flags & SVf_UTF8); + return (flags & SVs_TEMP) ? sv_2mortal(sv) : sv; +} + +#endif + +#endif + +/* Backwards compatibility stuff... :-( */ +#if !defined(NEED_sv_2pv_flags) && defined(NEED_sv_2pv_nolen) +# define NEED_sv_2pv_flags +#endif +#if !defined(NEED_sv_2pv_flags_GLOBAL) && defined(NEED_sv_2pv_nolen_GLOBAL) +# define NEED_sv_2pv_flags_GLOBAL +#endif + +/* Hint: sv_2pv_nolen + * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen(). + */ +#ifndef sv_2pv_nolen +# define sv_2pv_nolen(sv) SvPV_nolen(sv) +#endif + +#ifdef SvPVbyte + +/* Hint: SvPVbyte + * Does not work in perl-5.6.1, ppport.h implements a version + * borrowed from perl-5.7.3. + */ + +#if (PERL_BCDVERSION < 0x5007000) + +#if defined(NEED_sv_2pvbyte) +static char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp); +static +#else +extern char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp); +#endif + +#ifdef sv_2pvbyte +# undef sv_2pvbyte +#endif +#define sv_2pvbyte(a,b) DPPP_(my_sv_2pvbyte)(aTHX_ a,b) +#define Perl_sv_2pvbyte DPPP_(my_sv_2pvbyte) + +#if defined(NEED_sv_2pvbyte) || defined(NEED_sv_2pvbyte_GLOBAL) + +char * +DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp) +{ + sv_utf8_downgrade(sv,0); + return SvPV(sv,*lp); +} + +#endif + +/* Hint: sv_2pvbyte + * Use the SvPVbyte() macro instead of sv_2pvbyte(). + */ + +#undef SvPVbyte + +#define SvPVbyte(sv, lp) \ + ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \ + ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp)) + +#endif + +#else + +# define SvPVbyte SvPV +# define sv_2pvbyte sv_2pv + +#endif +#ifndef sv_2pvbyte_nolen +# define sv_2pvbyte_nolen(sv) sv_2pv_nolen(sv) +#endif + +/* Hint: sv_pvn + * Always use the SvPV() macro instead of sv_pvn(). + */ + +/* Hint: sv_pvn_force + * Always use the SvPV_force() macro instead of sv_pvn_force(). + */ + +/* If these are undefined, they're not handled by the core anyway */ +#ifndef SV_IMMEDIATE_UNREF +# define SV_IMMEDIATE_UNREF 0 +#endif + +#ifndef SV_GMAGIC +# define SV_GMAGIC 0 +#endif + +#ifndef SV_COW_DROP_PV +# define SV_COW_DROP_PV 0 +#endif + +#ifndef SV_UTF8_NO_ENCODING +# define SV_UTF8_NO_ENCODING 0 +#endif + +#ifndef SV_NOSTEAL +# define SV_NOSTEAL 0 +#endif + +#ifndef SV_CONST_RETURN +# define SV_CONST_RETURN 0 +#endif + +#ifndef SV_MUTABLE_RETURN +# define SV_MUTABLE_RETURN 0 +#endif + +#ifndef SV_SMAGIC +# define SV_SMAGIC 0 +#endif + +#ifndef SV_HAS_TRAILING_NUL +# define SV_HAS_TRAILING_NUL 0 +#endif + +#ifndef SV_COW_SHARED_HASH_KEYS +# define SV_COW_SHARED_HASH_KEYS 0 +#endif + +#if (PERL_BCDVERSION < 0x5007002) + +#if defined(NEED_sv_2pv_flags) +static char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); +static +#else +extern char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); +#endif + +#ifdef sv_2pv_flags +# undef sv_2pv_flags +#endif +#define sv_2pv_flags(a,b,c) DPPP_(my_sv_2pv_flags)(aTHX_ a,b,c) +#define Perl_sv_2pv_flags DPPP_(my_sv_2pv_flags) + +#if defined(NEED_sv_2pv_flags) || defined(NEED_sv_2pv_flags_GLOBAL) + +char * +DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) +{ + STRLEN n_a = (STRLEN) flags; + return sv_2pv(sv, lp ? lp : &n_a); +} + +#endif + +#if defined(NEED_sv_pvn_force_flags) +static char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); +static +#else +extern char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); +#endif + +#ifdef sv_pvn_force_flags +# undef sv_pvn_force_flags +#endif +#define sv_pvn_force_flags(a,b,c) DPPP_(my_sv_pvn_force_flags)(aTHX_ a,b,c) +#define Perl_sv_pvn_force_flags DPPP_(my_sv_pvn_force_flags) + +#if defined(NEED_sv_pvn_force_flags) || defined(NEED_sv_pvn_force_flags_GLOBAL) + +char * +DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) +{ + STRLEN n_a = (STRLEN) flags; + return sv_pvn_force(sv, lp ? lp : &n_a); +} + +#endif + +#endif + +#if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) ) +# define DPPP_SVPV_NOLEN_LP_ARG &PL_na +#else +# define DPPP_SVPV_NOLEN_LP_ARG 0 +#endif +#ifndef SvPV_const +# define SvPV_const(sv, lp) SvPV_flags_const(sv, lp, SV_GMAGIC) +#endif + +#ifndef SvPV_mutable +# define SvPV_mutable(sv, lp) SvPV_flags_mutable(sv, lp, SV_GMAGIC) +#endif +#ifndef SvPV_flags +# define SvPV_flags(sv, lp, flags) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags)) +#endif +#ifndef SvPV_flags_const +# define SvPV_flags_const(sv, lp, flags) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \ + (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN)) +#endif +#ifndef SvPV_flags_const_nolen +# define SvPV_flags_const_nolen(sv, flags) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? SvPVX_const(sv) : \ + (const char*) sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN)) +#endif +#ifndef SvPV_flags_mutable +# define SvPV_flags_mutable(sv, lp, flags) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \ + sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) +#endif +#ifndef SvPV_force +# define SvPV_force(sv, lp) SvPV_force_flags(sv, lp, SV_GMAGIC) +#endif + +#ifndef SvPV_force_nolen +# define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC) +#endif + +#ifndef SvPV_force_mutable +# define SvPV_force_mutable(sv, lp) SvPV_force_flags_mutable(sv, lp, SV_GMAGIC) +#endif + +#ifndef SvPV_force_nomg +# define SvPV_force_nomg(sv, lp) SvPV_force_flags(sv, lp, 0) +#endif + +#ifndef SvPV_force_nomg_nolen +# define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0) +#endif +#ifndef SvPV_force_flags +# define SvPV_force_flags(sv, lp, flags) \ + ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ + ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags)) +#endif +#ifndef SvPV_force_flags_nolen +# define SvPV_force_flags_nolen(sv, flags) \ + ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ + ? SvPVX(sv) : sv_pvn_force_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags)) +#endif +#ifndef SvPV_force_flags_mutable +# define SvPV_force_flags_mutable(sv, lp, flags) \ + ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ + ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \ + : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) +#endif +#ifndef SvPV_nolen +# define SvPV_nolen(sv) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC)) +#endif +#ifndef SvPV_nolen_const +# define SvPV_nolen_const(sv) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? SvPVX_const(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN)) +#endif +#ifndef SvPV_nomg +# define SvPV_nomg(sv, lp) SvPV_flags(sv, lp, 0) +#endif + +#ifndef SvPV_nomg_const +# define SvPV_nomg_const(sv, lp) SvPV_flags_const(sv, lp, 0) +#endif + +#ifndef SvPV_nomg_const_nolen +# define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0) +#endif + +#ifndef SvPV_nomg_nolen +# define SvPV_nomg_nolen(sv) ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, 0)) +#endif +#ifndef SvPV_renew +# define SvPV_renew(sv,n) STMT_START { SvLEN_set(sv, n); \ + SvPV_set((sv), (char *) saferealloc( \ + (Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \ + } STMT_END +#endif +#ifndef SvMAGIC_set +# define SvMAGIC_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ + (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END +#endif + +#if (PERL_BCDVERSION < 0x5009003) +#ifndef SvPVX_const +# define SvPVX_const(sv) ((const char*) (0 + SvPVX(sv))) +#endif + +#ifndef SvPVX_mutable +# define SvPVX_mutable(sv) (0 + SvPVX(sv)) +#endif +#ifndef SvRV_set +# define SvRV_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ + (((XRV*) SvANY(sv))->xrv_rv = (val)); } STMT_END +#endif + +#else +#ifndef SvPVX_const +# define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv)) +#endif + +#ifndef SvPVX_mutable +# define SvPVX_mutable(sv) ((sv)->sv_u.svu_pv) +#endif +#ifndef SvRV_set +# define SvRV_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ + ((sv)->sv_u.svu_rv = (val)); } STMT_END +#endif + +#endif +#ifndef SvSTASH_set +# define SvSTASH_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ + (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END +#endif + +#if (PERL_BCDVERSION < 0x5004000) +#ifndef SvUV_set +# define SvUV_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ + (((XPVIV*) SvANY(sv))->xiv_iv = (IV) (val)); } STMT_END +#endif + +#else +#ifndef SvUV_set +# define SvUV_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ + (((XPVUV*) SvANY(sv))->xuv_uv = (val)); } STMT_END +#endif + +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(vnewSVpvf) +#if defined(NEED_vnewSVpvf) +static SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args); +static +#else +extern SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args); +#endif + +#ifdef vnewSVpvf +# undef vnewSVpvf +#endif +#define vnewSVpvf(a,b) DPPP_(my_vnewSVpvf)(aTHX_ a,b) +#define Perl_vnewSVpvf DPPP_(my_vnewSVpvf) + +#if defined(NEED_vnewSVpvf) || defined(NEED_vnewSVpvf_GLOBAL) + +SV * +DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args) +{ + register SV *sv = newSV(0); + sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); + return sv; +} + +#endif +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf) +# define sv_vcatpvf(sv, pat, args) sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf) +# define sv_vsetpvf(sv, pat, args) sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg) +#if defined(NEED_sv_catpvf_mg) +static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...); +static +#else +extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...); +#endif + +#define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg) + +#if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL) + +void +DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...) +{ + va_list args; + va_start(args, pat); + sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); + SvSETMAGIC(sv); + va_end(args); +} + +#endif +#endif + +#ifdef PERL_IMPLICIT_CONTEXT +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg_nocontext) +#if defined(NEED_sv_catpvf_mg_nocontext) +static void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...); +static +#else +extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...); +#endif + +#define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) +#define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) + +#if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL) + +void +DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...) +{ + dTHX; + va_list args; + va_start(args, pat); + sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); + SvSETMAGIC(sv); + va_end(args); +} + +#endif +#endif +#endif + +/* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */ +#ifndef sv_catpvf_mg +# ifdef PERL_IMPLICIT_CONTEXT +# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext +# else +# define sv_catpvf_mg Perl_sv_catpvf_mg +# endif +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf_mg) +# define sv_vcatpvf_mg(sv, pat, args) \ + STMT_START { \ + sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ + SvSETMAGIC(sv); \ + } STMT_END +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg) +#if defined(NEED_sv_setpvf_mg) +static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...); +static +#else +extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...); +#endif + +#define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg) + +#if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL) + +void +DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...) +{ + va_list args; + va_start(args, pat); + sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); + SvSETMAGIC(sv); + va_end(args); +} + +#endif +#endif + +#ifdef PERL_IMPLICIT_CONTEXT +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg_nocontext) +#if defined(NEED_sv_setpvf_mg_nocontext) +static void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...); +static +#else +extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...); +#endif + +#define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) +#define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) + +#if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL) + +void +DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...) +{ + dTHX; + va_list args; + va_start(args, pat); + sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); + SvSETMAGIC(sv); + va_end(args); +} + +#endif +#endif +#endif + +/* sv_setpvf_mg depends on sv_setpvf_mg_nocontext */ +#ifndef sv_setpvf_mg +# ifdef PERL_IMPLICIT_CONTEXT +# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext +# else +# define sv_setpvf_mg Perl_sv_setpvf_mg +# endif +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf_mg) +# define sv_vsetpvf_mg(sv, pat, args) \ + STMT_START { \ + sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ + SvSETMAGIC(sv); \ + } STMT_END +#endif + +/* Hint: newSVpvn_share + * The SVs created by this function only mimic the behaviour of + * shared PVs without really being shared. Only use if you know + * what you're doing. + */ + +#ifndef newSVpvn_share + +#if defined(NEED_newSVpvn_share) +static SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); +static +#else +extern SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); +#endif + +#ifdef newSVpvn_share +# undef newSVpvn_share +#endif +#define newSVpvn_share(a,b,c) DPPP_(my_newSVpvn_share)(aTHX_ a,b,c) +#define Perl_newSVpvn_share DPPP_(my_newSVpvn_share) + +#if defined(NEED_newSVpvn_share) || defined(NEED_newSVpvn_share_GLOBAL) + +SV * +DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash) +{ + SV *sv; + if (len < 0) + len = -len; + if (!hash) + PERL_HASH(hash, (char*) src, len); + sv = newSVpvn((char *) src, len); + sv_upgrade(sv, SVt_PVIV); + SvIVX(sv) = hash; + SvREADONLY_on(sv); + SvPOK_on(sv); + return sv; +} + +#endif + +#endif +#ifndef SvSHARED_HASH +# define SvSHARED_HASH(sv) (0 + SvUVX(sv)) +#endif +#ifndef HvNAME_get +# define HvNAME_get(hv) HvNAME(hv) +#endif +#ifndef HvNAMELEN_get +# define HvNAMELEN_get(hv) (HvNAME_get(hv) ? (I32)strlen(HvNAME_get(hv)) : 0) +#endif +#ifndef GvSVn +# define GvSVn(gv) GvSV(gv) +#endif + +#ifndef isGV_with_GP +# define isGV_with_GP(gv) isGV(gv) +#endif + +#ifndef gv_fetchpvn_flags +# define gv_fetchpvn_flags(name, len, flags, svt) gv_fetchpv(name, flags, svt) +#endif + +#ifndef gv_fetchsv +# define gv_fetchsv(name, flags, svt) gv_fetchpv(SvPV_nolen_const(name), flags, svt) +#endif +#ifndef get_cvn_flags +# define get_cvn_flags(name, namelen, flags) get_cv(name, flags) +#endif +#ifndef WARN_ALL +# define WARN_ALL 0 +#endif + +#ifndef WARN_CLOSURE +# define WARN_CLOSURE 1 +#endif + +#ifndef WARN_DEPRECATED +# define WARN_DEPRECATED 2 +#endif + +#ifndef WARN_EXITING +# define WARN_EXITING 3 +#endif + +#ifndef WARN_GLOB +# define WARN_GLOB 4 +#endif + +#ifndef WARN_IO +# define WARN_IO 5 +#endif + +#ifndef WARN_CLOSED +# define WARN_CLOSED 6 +#endif + +#ifndef WARN_EXEC +# define WARN_EXEC 7 +#endif + +#ifndef WARN_LAYER +# define WARN_LAYER 8 +#endif + +#ifndef WARN_NEWLINE +# define WARN_NEWLINE 9 +#endif + +#ifndef WARN_PIPE +# define WARN_PIPE 10 +#endif + +#ifndef WARN_UNOPENED +# define WARN_UNOPENED 11 +#endif + +#ifndef WARN_MISC +# define WARN_MISC 12 +#endif + +#ifndef WARN_NUMERIC +# define WARN_NUMERIC 13 +#endif + +#ifndef WARN_ONCE +# define WARN_ONCE 14 +#endif + +#ifndef WARN_OVERFLOW +# define WARN_OVERFLOW 15 +#endif + +#ifndef WARN_PACK +# define WARN_PACK 16 +#endif + +#ifndef WARN_PORTABLE +# define WARN_PORTABLE 17 +#endif + +#ifndef WARN_RECURSION +# define WARN_RECURSION 18 +#endif + +#ifndef WARN_REDEFINE +# define WARN_REDEFINE 19 +#endif + +#ifndef WARN_REGEXP +# define WARN_REGEXP 20 +#endif + +#ifndef WARN_SEVERE +# define WARN_SEVERE 21 +#endif + +#ifndef WARN_DEBUGGING +# define WARN_DEBUGGING 22 +#endif + +#ifndef WARN_INPLACE +# define WARN_INPLACE 23 +#endif + +#ifndef WARN_INTERNAL +# define WARN_INTERNAL 24 +#endif + +#ifndef WARN_MALLOC +# define WARN_MALLOC 25 +#endif + +#ifndef WARN_SIGNAL +# define WARN_SIGNAL 26 +#endif + +#ifndef WARN_SUBSTR +# define WARN_SUBSTR 27 +#endif + +#ifndef WARN_SYNTAX +# define WARN_SYNTAX 28 +#endif + +#ifndef WARN_AMBIGUOUS +# define WARN_AMBIGUOUS 29 +#endif + +#ifndef WARN_BAREWORD +# define WARN_BAREWORD 30 +#endif + +#ifndef WARN_DIGIT +# define WARN_DIGIT 31 +#endif + +#ifndef WARN_PARENTHESIS +# define WARN_PARENTHESIS 32 +#endif + +#ifndef WARN_PRECEDENCE +# define WARN_PRECEDENCE 33 +#endif + +#ifndef WARN_PRINTF +# define WARN_PRINTF 34 +#endif + +#ifndef WARN_PROTOTYPE +# define WARN_PROTOTYPE 35 +#endif + +#ifndef WARN_QW +# define WARN_QW 36 +#endif + +#ifndef WARN_RESERVED +# define WARN_RESERVED 37 +#endif + +#ifndef WARN_SEMICOLON +# define WARN_SEMICOLON 38 +#endif + +#ifndef WARN_TAINT +# define WARN_TAINT 39 +#endif + +#ifndef WARN_THREADS +# define WARN_THREADS 40 +#endif + +#ifndef WARN_UNINITIALIZED +# define WARN_UNINITIALIZED 41 +#endif + +#ifndef WARN_UNPACK +# define WARN_UNPACK 42 +#endif + +#ifndef WARN_UNTIE +# define WARN_UNTIE 43 +#endif + +#ifndef WARN_UTF8 +# define WARN_UTF8 44 +#endif + +#ifndef WARN_VOID +# define WARN_VOID 45 +#endif + +#ifndef WARN_ASSERTIONS +# define WARN_ASSERTIONS 46 +#endif +#ifndef packWARN +# define packWARN(a) (a) +#endif + +#ifndef ckWARN +# ifdef G_WARN_ON +# define ckWARN(a) (PL_dowarn & G_WARN_ON) +# else +# define ckWARN(a) PL_dowarn +# endif +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(warner) +#if defined(NEED_warner) +static void DPPP_(my_warner)(U32 err, const char *pat, ...); +static +#else +extern void DPPP_(my_warner)(U32 err, const char *pat, ...); +#endif + +#define Perl_warner DPPP_(my_warner) + +#if defined(NEED_warner) || defined(NEED_warner_GLOBAL) + +void +DPPP_(my_warner)(U32 err, const char *pat, ...) +{ + SV *sv; + va_list args; + + PERL_UNUSED_ARG(err); + + va_start(args, pat); + sv = vnewSVpvf(pat, &args); + va_end(args); + sv_2mortal(sv); + warn("%s", SvPV_nolen(sv)); +} + +#define warner Perl_warner + +#define Perl_warner_nocontext Perl_warner + +#endif +#endif + +/* concatenating with "" ensures that only literal strings are accepted as argument + * note that STR_WITH_LEN() can't be used as argument to macros or functions that + * under some configurations might be macros + */ +#ifndef STR_WITH_LEN +# define STR_WITH_LEN(s) (s ""), (sizeof(s)-1) +#endif +#ifndef newSVpvs +# define newSVpvs(str) newSVpvn(str "", sizeof(str) - 1) +#endif + +#ifndef newSVpvs_flags +# define newSVpvs_flags(str, flags) newSVpvn_flags(str "", sizeof(str) - 1, flags) +#endif + +#ifndef newSVpvs_share +# define newSVpvs_share(str) newSVpvn_share(str "", sizeof(str) - 1, 0) +#endif + +#ifndef sv_catpvs +# define sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1) +#endif + +#ifndef sv_setpvs +# define sv_setpvs(sv, str) sv_setpvn(sv, str "", sizeof(str) - 1) +#endif + +#ifndef hv_fetchs +# define hv_fetchs(hv, key, lval) hv_fetch(hv, key "", sizeof(key) - 1, lval) +#endif + +#ifndef hv_stores +# define hv_stores(hv, key, val) hv_store(hv, key "", sizeof(key) - 1, val, 0) +#endif +#ifndef gv_fetchpvs +# define gv_fetchpvs(name, flags, svt) gv_fetchpvn_flags(name "", sizeof(name) - 1, flags, svt) +#endif + +#ifndef gv_stashpvs +# define gv_stashpvs(name, flags) gv_stashpvn(name "", sizeof(name) - 1, flags) +#endif +#ifndef get_cvs +# define get_cvs(name, flags) get_cvn_flags(name "", sizeof(name)-1, flags) +#endif +#ifndef SvGETMAGIC +# define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END +#endif + +/* Some random bits for sv_unmagicext. These should probably be pulled in for + real and organized at some point */ +#ifndef HEf_SVKEY +# define HEf_SVKEY -2 +#endif + +#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +# define MUTABLE_PTR(p) ({ void *_p = (p); _p; }) +#else +# define MUTABLE_PTR(p) ((void *) (p)) +#endif + +#define MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p)) + +/* end of random bits */ +#ifndef PERL_MAGIC_sv +# define PERL_MAGIC_sv '\0' +#endif + +#ifndef PERL_MAGIC_overload +# define PERL_MAGIC_overload 'A' +#endif + +#ifndef PERL_MAGIC_overload_elem +# define PERL_MAGIC_overload_elem 'a' +#endif + +#ifndef PERL_MAGIC_overload_table +# define PERL_MAGIC_overload_table 'c' +#endif + +#ifndef PERL_MAGIC_bm +# define PERL_MAGIC_bm 'B' +#endif + +#ifndef PERL_MAGIC_regdata +# define PERL_MAGIC_regdata 'D' +#endif + +#ifndef PERL_MAGIC_regdatum +# define PERL_MAGIC_regdatum 'd' +#endif + +#ifndef PERL_MAGIC_env +# define PERL_MAGIC_env 'E' +#endif + +#ifndef PERL_MAGIC_envelem +# define PERL_MAGIC_envelem 'e' +#endif + +#ifndef PERL_MAGIC_fm +# define PERL_MAGIC_fm 'f' +#endif + +#ifndef PERL_MAGIC_regex_global +# define PERL_MAGIC_regex_global 'g' +#endif + +#ifndef PERL_MAGIC_isa +# define PERL_MAGIC_isa 'I' +#endif + +#ifndef PERL_MAGIC_isaelem +# define PERL_MAGIC_isaelem 'i' +#endif + +#ifndef PERL_MAGIC_nkeys +# define PERL_MAGIC_nkeys 'k' +#endif + +#ifndef PERL_MAGIC_dbfile +# define PERL_MAGIC_dbfile 'L' +#endif + +#ifndef PERL_MAGIC_dbline +# define PERL_MAGIC_dbline 'l' +#endif + +#ifndef PERL_MAGIC_mutex +# define PERL_MAGIC_mutex 'm' +#endif + +#ifndef PERL_MAGIC_shared +# define PERL_MAGIC_shared 'N' +#endif + +#ifndef PERL_MAGIC_shared_scalar +# define PERL_MAGIC_shared_scalar 'n' +#endif + +#ifndef PERL_MAGIC_collxfrm +# define PERL_MAGIC_collxfrm 'o' +#endif + +#ifndef PERL_MAGIC_tied +# define PERL_MAGIC_tied 'P' +#endif + +#ifndef PERL_MAGIC_tiedelem +# define PERL_MAGIC_tiedelem 'p' +#endif + +#ifndef PERL_MAGIC_tiedscalar +# define PERL_MAGIC_tiedscalar 'q' +#endif + +#ifndef PERL_MAGIC_qr +# define PERL_MAGIC_qr 'r' +#endif + +#ifndef PERL_MAGIC_sig +# define PERL_MAGIC_sig 'S' +#endif + +#ifndef PERL_MAGIC_sigelem +# define PERL_MAGIC_sigelem 's' +#endif + +#ifndef PERL_MAGIC_taint +# define PERL_MAGIC_taint 't' +#endif + +#ifndef PERL_MAGIC_uvar +# define PERL_MAGIC_uvar 'U' +#endif + +#ifndef PERL_MAGIC_uvar_elem +# define PERL_MAGIC_uvar_elem 'u' +#endif + +#ifndef PERL_MAGIC_vstring +# define PERL_MAGIC_vstring 'V' +#endif + +#ifndef PERL_MAGIC_vec +# define PERL_MAGIC_vec 'v' +#endif + +#ifndef PERL_MAGIC_utf8 +# define PERL_MAGIC_utf8 'w' +#endif + +#ifndef PERL_MAGIC_substr +# define PERL_MAGIC_substr 'x' +#endif + +#ifndef PERL_MAGIC_defelem +# define PERL_MAGIC_defelem 'y' +#endif + +#ifndef PERL_MAGIC_glob +# define PERL_MAGIC_glob '*' +#endif + +#ifndef PERL_MAGIC_arylen +# define PERL_MAGIC_arylen '#' +#endif + +#ifndef PERL_MAGIC_pos +# define PERL_MAGIC_pos '.' +#endif + +#ifndef PERL_MAGIC_backref +# define PERL_MAGIC_backref '<' +#endif + +#ifndef PERL_MAGIC_ext +# define PERL_MAGIC_ext '~' +#endif + +/* That's the best we can do... */ +#ifndef sv_catpvn_nomg +# define sv_catpvn_nomg sv_catpvn +#endif + +#ifndef sv_catsv_nomg +# define sv_catsv_nomg sv_catsv +#endif + +#ifndef sv_setsv_nomg +# define sv_setsv_nomg sv_setsv +#endif + +#ifndef sv_pvn_nomg +# define sv_pvn_nomg sv_pvn +#endif + +#ifndef SvIV_nomg +# define SvIV_nomg SvIV +#endif + +#ifndef SvUV_nomg +# define SvUV_nomg SvUV +#endif + +#ifndef sv_catpv_mg +# define sv_catpv_mg(sv, ptr) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_catpv(TeMpSv,ptr); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_catpvn_mg +# define sv_catpvn_mg(sv, ptr, len) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_catpvn(TeMpSv,ptr,len); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_catsv_mg +# define sv_catsv_mg(dsv, ssv) \ + STMT_START { \ + SV *TeMpSv = dsv; \ + sv_catsv(TeMpSv,ssv); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setiv_mg +# define sv_setiv_mg(sv, i) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_setiv(TeMpSv,i); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setnv_mg +# define sv_setnv_mg(sv, num) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_setnv(TeMpSv,num); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setpv_mg +# define sv_setpv_mg(sv, ptr) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_setpv(TeMpSv,ptr); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setpvn_mg +# define sv_setpvn_mg(sv, ptr, len) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_setpvn(TeMpSv,ptr,len); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setsv_mg +# define sv_setsv_mg(dsv, ssv) \ + STMT_START { \ + SV *TeMpSv = dsv; \ + sv_setsv(TeMpSv,ssv); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setuv_mg +# define sv_setuv_mg(sv, i) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_setuv(TeMpSv,i); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_usepvn_mg +# define sv_usepvn_mg(sv, ptr, len) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_usepvn(TeMpSv,ptr,len); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif +#ifndef SvVSTRING_mg +# define SvVSTRING_mg(sv) (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL) +#endif + +/* Hint: sv_magic_portable + * This is a compatibility function that is only available with + * Devel::PPPort. It is NOT in the perl core. + * Its purpose is to mimic the 5.8.0 behaviour of sv_magic() when + * it is being passed a name pointer with namlen == 0. In that + * case, perl 5.8.0 and later store the pointer, not a copy of it. + * The compatibility can be provided back to perl 5.004. With + * earlier versions, the code will not compile. + */ + +#if (PERL_BCDVERSION < 0x5004000) + + /* code that uses sv_magic_portable will not compile */ + +#elif (PERL_BCDVERSION < 0x5008000) + +# define sv_magic_portable(sv, obj, how, name, namlen) \ + STMT_START { \ + SV *SvMp_sv = (sv); \ + char *SvMp_name = (char *) (name); \ + I32 SvMp_namlen = (namlen); \ + if (SvMp_name && SvMp_namlen == 0) \ + { \ + MAGIC *mg; \ + sv_magic(SvMp_sv, obj, how, 0, 0); \ + mg = SvMAGIC(SvMp_sv); \ + mg->mg_len = -42; /* XXX: this is the tricky part */ \ + mg->mg_ptr = SvMp_name; \ + } \ + else \ + { \ + sv_magic(SvMp_sv, obj, how, SvMp_name, SvMp_namlen); \ + } \ + } STMT_END + +#else + +# define sv_magic_portable(a, b, c, d, e) sv_magic(a, b, c, d, e) + +#endif + +#if !defined(mg_findext) +#if defined(NEED_mg_findext) +static MAGIC * DPPP_(my_mg_findext)(pTHX_ SV * sv, int type, const MGVTBL *vtbl); +static +#else +extern MAGIC * DPPP_(my_mg_findext)(pTHX_ SV * sv, int type, const MGVTBL *vtbl); +#endif + +#ifdef mg_findext +# undef mg_findext +#endif +#define mg_findext(a,b,c) DPPP_(my_mg_findext)(aTHX_ a,b,c) +#define Perl_mg_findext DPPP_(my_mg_findext) + +#if defined(NEED_mg_findext) || defined(NEED_mg_findext_GLOBAL) + +MAGIC * +DPPP_(my_mg_findext)(pTHX_ SV * sv, int type, const MGVTBL *vtbl) { + if (sv) { + MAGIC *mg; + +#ifdef AvPAD_NAMELIST + assert(!(SvTYPE(sv) == SVt_PVAV && AvPAD_NAMELIST(sv))); +#endif + + for (mg = SvMAGIC (sv); mg; mg = mg->mg_moremagic) { + if (mg->mg_type == type && mg->mg_virtual == vtbl) + return mg; + } + } + + return NULL; +} + +#endif +#endif + +#if !defined(sv_unmagicext) +#if defined(NEED_sv_unmagicext) +static int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl); +static +#else +extern int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl); +#endif + +#ifdef sv_unmagicext +# undef sv_unmagicext +#endif +#define sv_unmagicext(a,b,c) DPPP_(my_sv_unmagicext)(aTHX_ a,b,c) +#define Perl_sv_unmagicext DPPP_(my_sv_unmagicext) + +#if defined(NEED_sv_unmagicext) || defined(NEED_sv_unmagicext_GLOBAL) + +int +DPPP_(my_sv_unmagicext)(pTHX_ SV *const sv, const int type, MGVTBL *vtbl) +{ + MAGIC* mg; + MAGIC** mgp; + + if (SvTYPE(sv) < SVt_PVMG || !SvMAGIC(sv)) + return 0; + mgp = &(SvMAGIC(sv)); + for (mg = *mgp; mg; mg = *mgp) { + const MGVTBL* const virt = mg->mg_virtual; + if (mg->mg_type == type && virt == vtbl) { + *mgp = mg->mg_moremagic; + if (virt && virt->svt_free) + virt->svt_free(aTHX_ sv, mg); + if (mg->mg_ptr && mg->mg_type != PERL_MAGIC_regex_global) { + if (mg->mg_len > 0) + Safefree(mg->mg_ptr); + else if (mg->mg_len == HEf_SVKEY) /* Questionable on older perls... */ + SvREFCNT_dec(MUTABLE_SV(mg->mg_ptr)); + else if (mg->mg_type == PERL_MAGIC_utf8) + Safefree(mg->mg_ptr); + } + if (mg->mg_flags & MGf_REFCOUNTED) + SvREFCNT_dec(mg->mg_obj); + Safefree(mg); + } + else + mgp = &mg->mg_moremagic; + } + if (SvMAGIC(sv)) { + if (SvMAGICAL(sv)) /* if we're under save_magic, wait for restore_magic; */ + mg_magical(sv); /* else fix the flags now */ + } + else { + SvMAGICAL_off(sv); + SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT; + } + return 0; +} + +#endif +#endif + +#ifdef USE_ITHREADS +#ifndef CopFILE +# define CopFILE(c) ((c)->cop_file) +#endif + +#ifndef CopFILEGV +# define CopFILEGV(c) (CopFILE(c) ? gv_fetchfile(CopFILE(c)) : Nullgv) +#endif + +#ifndef CopFILE_set +# define CopFILE_set(c,pv) ((c)->cop_file = savepv(pv)) +#endif + +#ifndef CopFILESV +# define CopFILESV(c) (CopFILE(c) ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv) +#endif + +#ifndef CopFILEAV +# define CopFILEAV(c) (CopFILE(c) ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav) +#endif + +#ifndef CopSTASHPV +# define CopSTASHPV(c) ((c)->cop_stashpv) +#endif + +#ifndef CopSTASHPV_set +# define CopSTASHPV_set(c,pv) ((c)->cop_stashpv = ((pv) ? savepv(pv) : Nullch)) +#endif + +#ifndef CopSTASH +# define CopSTASH(c) (CopSTASHPV(c) ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv) +#endif + +#ifndef CopSTASH_set +# define CopSTASH_set(c,hv) CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch) +#endif + +#ifndef CopSTASH_eq +# define CopSTASH_eq(c,hv) ((hv) && (CopSTASHPV(c) == HvNAME(hv) \ + || (CopSTASHPV(c) && HvNAME(hv) \ + && strEQ(CopSTASHPV(c), HvNAME(hv))))) +#endif + +#else +#ifndef CopFILEGV +# define CopFILEGV(c) ((c)->cop_filegv) +#endif + +#ifndef CopFILEGV_set +# define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) +#endif + +#ifndef CopFILE_set +# define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) +#endif + +#ifndef CopFILESV +# define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv) +#endif + +#ifndef CopFILEAV +# define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav) +#endif + +#ifndef CopFILE +# define CopFILE(c) (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch) +#endif + +#ifndef CopSTASH +# define CopSTASH(c) ((c)->cop_stash) +#endif + +#ifndef CopSTASH_set +# define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) +#endif + +#ifndef CopSTASHPV +# define CopSTASHPV(c) (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch) +#endif + +#ifndef CopSTASHPV_set +# define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD)) +#endif + +#ifndef CopSTASH_eq +# define CopSTASH_eq(c,hv) (CopSTASH(c) == (hv)) +#endif + +#endif /* USE_ITHREADS */ + +#if (PERL_BCDVERSION >= 0x5006000) +#ifndef caller_cx + +# if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL) +static I32 +DPPP_dopoptosub_at(const PERL_CONTEXT *cxstk, I32 startingblock) +{ + I32 i; + + for (i = startingblock; i >= 0; i--) { + register const PERL_CONTEXT * const cx = &cxstk[i]; + switch (CxTYPE(cx)) { + default: + continue; + case CXt_EVAL: + case CXt_SUB: + case CXt_FORMAT: + return i; + } + } + return i; +} +# endif + +# if defined(NEED_caller_cx) +static const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp); +static +#else +extern const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp); +#endif + +#ifdef caller_cx +# undef caller_cx +#endif +#define caller_cx(a,b) DPPP_(my_caller_cx)(aTHX_ a,b) +#define Perl_caller_cx DPPP_(my_caller_cx) + +#if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL) + +const PERL_CONTEXT * +DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp) +{ + register I32 cxix = DPPP_dopoptosub_at(cxstack, cxstack_ix); + register const PERL_CONTEXT *cx; + register const PERL_CONTEXT *ccstack = cxstack; + const PERL_SI *top_si = PL_curstackinfo; + + for (;;) { + /* we may be in a higher stacklevel, so dig down deeper */ + while (cxix < 0 && top_si->si_type != PERLSI_MAIN) { + top_si = top_si->si_prev; + ccstack = top_si->si_cxstack; + cxix = DPPP_dopoptosub_at(ccstack, top_si->si_cxix); + } + if (cxix < 0) + return NULL; + /* caller() should not report the automatic calls to &DB::sub */ + if (PL_DBsub && GvCV(PL_DBsub) && cxix >= 0 && + ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub)) + count++; + if (!count--) + break; + cxix = DPPP_dopoptosub_at(ccstack, cxix - 1); + } + + cx = &ccstack[cxix]; + if (dbcxp) *dbcxp = cx; + + if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) { + const I32 dbcxix = DPPP_dopoptosub_at(ccstack, cxix - 1); + /* We expect that ccstack[dbcxix] is CXt_SUB, anyway, the + field below is defined for any cx. */ + /* caller() should not report the automatic calls to &DB::sub */ + if (PL_DBsub && GvCV(PL_DBsub) && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub)) + cx = &ccstack[dbcxix]; + } + + return cx; +} + +# endif +#endif /* caller_cx */ +#endif /* 5.6.0 */ +#ifndef IN_PERL_COMPILETIME +# define IN_PERL_COMPILETIME (PL_curcop == &PL_compiling) +#endif + +#ifndef IN_LOCALE_RUNTIME +# define IN_LOCALE_RUNTIME (PL_curcop->op_private & HINT_LOCALE) +#endif + +#ifndef IN_LOCALE_COMPILETIME +# define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE) +#endif + +#ifndef IN_LOCALE +# define IN_LOCALE (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME) +#endif +#ifndef IS_NUMBER_IN_UV +# define IS_NUMBER_IN_UV 0x01 +#endif + +#ifndef IS_NUMBER_GREATER_THAN_UV_MAX +# define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 +#endif + +#ifndef IS_NUMBER_NOT_INT +# define IS_NUMBER_NOT_INT 0x04 +#endif + +#ifndef IS_NUMBER_NEG +# define IS_NUMBER_NEG 0x08 +#endif + +#ifndef IS_NUMBER_INFINITY +# define IS_NUMBER_INFINITY 0x10 +#endif + +#ifndef IS_NUMBER_NAN +# define IS_NUMBER_NAN 0x20 +#endif +#ifndef GROK_NUMERIC_RADIX +# define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send) +#endif +#ifndef PERL_SCAN_GREATER_THAN_UV_MAX +# define PERL_SCAN_GREATER_THAN_UV_MAX 0x02 +#endif + +#ifndef PERL_SCAN_SILENT_ILLDIGIT +# define PERL_SCAN_SILENT_ILLDIGIT 0x04 +#endif + +#ifndef PERL_SCAN_ALLOW_UNDERSCORES +# define PERL_SCAN_ALLOW_UNDERSCORES 0x01 +#endif + +#ifndef PERL_SCAN_DISALLOW_PREFIX +# define PERL_SCAN_DISALLOW_PREFIX 0x02 +#endif + +#ifndef grok_numeric_radix +#if defined(NEED_grok_numeric_radix) +static bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); +static +#else +extern bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); +#endif + +#ifdef grok_numeric_radix +# undef grok_numeric_radix +#endif +#define grok_numeric_radix(a,b) DPPP_(my_grok_numeric_radix)(aTHX_ a,b) +#define Perl_grok_numeric_radix DPPP_(my_grok_numeric_radix) + +#if defined(NEED_grok_numeric_radix) || defined(NEED_grok_numeric_radix_GLOBAL) +bool +DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char *send) +{ +#ifdef USE_LOCALE_NUMERIC +#ifdef PL_numeric_radix_sv + if (PL_numeric_radix_sv && IN_LOCALE) { + STRLEN len; + char* radix = SvPV(PL_numeric_radix_sv, len); + if (*sp + len <= send && memEQ(*sp, radix, len)) { + *sp += len; + return TRUE; + } + } +#else + /* older perls don't have PL_numeric_radix_sv so the radix + * must manually be requested from locale.h + */ +#include + dTHR; /* needed for older threaded perls */ + struct lconv *lc = localeconv(); + char *radix = lc->decimal_point; + if (radix && IN_LOCALE) { + STRLEN len = strlen(radix); + if (*sp + len <= send && memEQ(*sp, radix, len)) { + *sp += len; + return TRUE; + } + } +#endif +#endif /* USE_LOCALE_NUMERIC */ + /* always try "." if numeric radix didn't match because + * we may have data from different locales mixed */ + if (*sp < send && **sp == '.') { + ++*sp; + return TRUE; + } + return FALSE; +} +#endif +#endif + +#ifndef grok_number +#if defined(NEED_grok_number) +static int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); +static +#else +extern int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); +#endif + +#ifdef grok_number +# undef grok_number +#endif +#define grok_number(a,b,c) DPPP_(my_grok_number)(aTHX_ a,b,c) +#define Perl_grok_number DPPP_(my_grok_number) + +#if defined(NEED_grok_number) || defined(NEED_grok_number_GLOBAL) +int +DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep) +{ + const char *s = pv; + const char *send = pv + len; + const UV max_div_10 = UV_MAX / 10; + const char max_mod_10 = UV_MAX % 10; + int numtype = 0; + int sawinf = 0; + int sawnan = 0; + + while (s < send && isSPACE(*s)) + s++; + if (s == send) { + return 0; + } else if (*s == '-') { + s++; + numtype = IS_NUMBER_NEG; + } + else if (*s == '+') + s++; + + if (s == send) + return 0; + + /* next must be digit or the radix separator or beginning of infinity */ + if (isDIGIT(*s)) { + /* UVs are at least 32 bits, so the first 9 decimal digits cannot + overflow. */ + UV value = *s - '0'; + /* This construction seems to be more optimiser friendly. + (without it gcc does the isDIGIT test and the *s - '0' separately) + With it gcc on arm is managing 6 instructions (6 cycles) per digit. + In theory the optimiser could deduce how far to unroll the loop + before checking for overflow. */ + if (++s < send) { + int digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + /* Now got 9 digits, so need to check + each time for overflow. */ + digit = *s - '0'; + while (digit >= 0 && digit <= 9 + && (value < max_div_10 + || (value == max_div_10 + && digit <= max_mod_10))) { + value = value * 10 + digit; + if (++s < send) + digit = *s - '0'; + else + break; + } + if (digit >= 0 && digit <= 9 + && (s < send)) { + /* value overflowed. + skip the remaining digits, don't + worry about setting *valuep. */ + do { + s++; + } while (s < send && isDIGIT(*s)); + numtype |= + IS_NUMBER_GREATER_THAN_UV_MAX; + goto skip_value; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + numtype |= IS_NUMBER_IN_UV; + if (valuep) + *valuep = value; + + skip_value: + if (GROK_NUMERIC_RADIX(&s, send)) { + numtype |= IS_NUMBER_NOT_INT; + while (s < send && isDIGIT(*s)) /* optional digits after the radix */ + s++; + } + } + else if (GROK_NUMERIC_RADIX(&s, send)) { + numtype |= IS_NUMBER_NOT_INT | IS_NUMBER_IN_UV; /* valuep assigned below */ + /* no digits before the radix means we need digits after it */ + if (s < send && isDIGIT(*s)) { + do { + s++; + } while (s < send && isDIGIT(*s)); + if (valuep) { + /* integer approximation is valid - it's 0. */ + *valuep = 0; + } + } + else + return 0; + } else if (*s == 'I' || *s == 'i') { + s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; + s++; if (s == send || (*s != 'F' && *s != 'f')) return 0; + s++; if (s < send && (*s == 'I' || *s == 'i')) { + s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; + s++; if (s == send || (*s != 'I' && *s != 'i')) return 0; + s++; if (s == send || (*s != 'T' && *s != 't')) return 0; + s++; if (s == send || (*s != 'Y' && *s != 'y')) return 0; + s++; + } + sawinf = 1; + } else if (*s == 'N' || *s == 'n') { + /* XXX TODO: There are signaling NaNs and quiet NaNs. */ + s++; if (s == send || (*s != 'A' && *s != 'a')) return 0; + s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; + s++; + sawnan = 1; + } else + return 0; + + if (sawinf) { + numtype &= IS_NUMBER_NEG; /* Keep track of sign */ + numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT; + } else if (sawnan) { + numtype &= IS_NUMBER_NEG; /* Keep track of sign */ + numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT; + } else if (s < send) { + /* we can have an optional exponent part */ + if (*s == 'e' || *s == 'E') { + /* The only flag we keep is sign. Blow away any "it's UV" */ + numtype &= IS_NUMBER_NEG; + numtype |= IS_NUMBER_NOT_INT; + s++; + if (s < send && (*s == '-' || *s == '+')) + s++; + if (s < send && isDIGIT(*s)) { + do { + s++; + } while (s < send && isDIGIT(*s)); + } + else + return 0; + } + } + while (s < send && isSPACE(*s)) + s++; + if (s >= send) + return numtype; + if (len == 10 && memEQ(pv, "0 but true", 10)) { + if (valuep) + *valuep = 0; + return IS_NUMBER_IN_UV; + } + return 0; +} +#endif +#endif + +/* + * The grok_* routines have been modified to use warn() instead of + * Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit, + * which is why the stack variable has been renamed to 'xdigit'. + */ + +#ifndef grok_bin +#if defined(NEED_grok_bin) +static UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +static +#else +extern UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +#endif + +#ifdef grok_bin +# undef grok_bin +#endif +#define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d) +#define Perl_grok_bin DPPP_(my_grok_bin) + +#if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL) +UV +DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) +{ + const char *s = start; + STRLEN len = *len_p; + UV value = 0; + NV value_nv = 0; + + const UV max_div_2 = UV_MAX / 2; + bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; + bool overflowed = FALSE; + + if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { + /* strip off leading b or 0b. + for compatibility silently suffer "b" and "0b" as valid binary + numbers. */ + if (len >= 1) { + if (s[0] == 'b') { + s++; + len--; + } + else if (len >= 2 && s[0] == '0' && s[1] == 'b') { + s+=2; + len-=2; + } + } + } + + for (; len-- && *s; s++) { + char bit = *s; + if (bit == '0' || bit == '1') { + /* Write it in this wonky order with a goto to attempt to get the + compiler to make the common case integer-only loop pretty tight. + With gcc seems to be much straighter code than old scan_bin. */ + redo: + if (!overflowed) { + if (value <= max_div_2) { + value = (value << 1) | (bit - '0'); + continue; + } + /* Bah. We're just overflowed. */ + warn("Integer overflow in binary number"); + overflowed = TRUE; + value_nv = (NV) value; + } + value_nv *= 2.0; + /* If an NV has not enough bits in its mantissa to + * represent a UV this summing of small low-order numbers + * is a waste of time (because the NV cannot preserve + * the low-order bits anyway): we could just remember when + * did we overflow and in the end just multiply value_nv by the + * right amount. */ + value_nv += (NV)(bit - '0'); + continue; + } + if (bit == '_' && len && allow_underscores && (bit = s[1]) + && (bit == '0' || bit == '1')) + { + --len; + ++s; + goto redo; + } + if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) + warn("Illegal binary digit '%c' ignored", *s); + break; + } + + if ( ( overflowed && value_nv > 4294967295.0) +#if UVSIZE > 4 + || (!overflowed && value > 0xffffffff ) +#endif + ) { + warn("Binary number > 0b11111111111111111111111111111111 non-portable"); + } + *len_p = s - start; + if (!overflowed) { + *flags = 0; + return value; + } + *flags = PERL_SCAN_GREATER_THAN_UV_MAX; + if (result) + *result = value_nv; + return UV_MAX; +} +#endif +#endif + +#ifndef grok_hex +#if defined(NEED_grok_hex) +static UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +static +#else +extern UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +#endif + +#ifdef grok_hex +# undef grok_hex +#endif +#define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d) +#define Perl_grok_hex DPPP_(my_grok_hex) + +#if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL) +UV +DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) +{ + const char *s = start; + STRLEN len = *len_p; + UV value = 0; + NV value_nv = 0; + + const UV max_div_16 = UV_MAX / 16; + bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; + bool overflowed = FALSE; + const char *xdigit; + + if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { + /* strip off leading x or 0x. + for compatibility silently suffer "x" and "0x" as valid hex numbers. + */ + if (len >= 1) { + if (s[0] == 'x') { + s++; + len--; + } + else if (len >= 2 && s[0] == '0' && s[1] == 'x') { + s+=2; + len-=2; + } + } + } + + for (; len-- && *s; s++) { + xdigit = strchr((char *) PL_hexdigit, *s); + if (xdigit) { + /* Write it in this wonky order with a goto to attempt to get the + compiler to make the common case integer-only loop pretty tight. + With gcc seems to be much straighter code than old scan_hex. */ + redo: + if (!overflowed) { + if (value <= max_div_16) { + value = (value << 4) | ((xdigit - PL_hexdigit) & 15); + continue; + } + warn("Integer overflow in hexadecimal number"); + overflowed = TRUE; + value_nv = (NV) value; + } + value_nv *= 16.0; + /* If an NV has not enough bits in its mantissa to + * represent a UV this summing of small low-order numbers + * is a waste of time (because the NV cannot preserve + * the low-order bits anyway): we could just remember when + * did we overflow and in the end just multiply value_nv by the + * right amount of 16-tuples. */ + value_nv += (NV)((xdigit - PL_hexdigit) & 15); + continue; + } + if (*s == '_' && len && allow_underscores && s[1] + && (xdigit = strchr((char *) PL_hexdigit, s[1]))) + { + --len; + ++s; + goto redo; + } + if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) + warn("Illegal hexadecimal digit '%c' ignored", *s); + break; + } + + if ( ( overflowed && value_nv > 4294967295.0) +#if UVSIZE > 4 + || (!overflowed && value > 0xffffffff ) +#endif + ) { + warn("Hexadecimal number > 0xffffffff non-portable"); + } + *len_p = s - start; + if (!overflowed) { + *flags = 0; + return value; + } + *flags = PERL_SCAN_GREATER_THAN_UV_MAX; + if (result) + *result = value_nv; + return UV_MAX; +} +#endif +#endif + +#ifndef grok_oct +#if defined(NEED_grok_oct) +static UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +static +#else +extern UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +#endif + +#ifdef grok_oct +# undef grok_oct +#endif +#define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d) +#define Perl_grok_oct DPPP_(my_grok_oct) + +#if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL) +UV +DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) +{ + const char *s = start; + STRLEN len = *len_p; + UV value = 0; + NV value_nv = 0; + + const UV max_div_8 = UV_MAX / 8; + bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; + bool overflowed = FALSE; + + for (; len-- && *s; s++) { + /* gcc 2.95 optimiser not smart enough to figure that this subtraction + out front allows slicker code. */ + int digit = *s - '0'; + if (digit >= 0 && digit <= 7) { + /* Write it in this wonky order with a goto to attempt to get the + compiler to make the common case integer-only loop pretty tight. + */ + redo: + if (!overflowed) { + if (value <= max_div_8) { + value = (value << 3) | digit; + continue; + } + /* Bah. We're just overflowed. */ + warn("Integer overflow in octal number"); + overflowed = TRUE; + value_nv = (NV) value; + } + value_nv *= 8.0; + /* If an NV has not enough bits in its mantissa to + * represent a UV this summing of small low-order numbers + * is a waste of time (because the NV cannot preserve + * the low-order bits anyway): we could just remember when + * did we overflow and in the end just multiply value_nv by the + * right amount of 8-tuples. */ + value_nv += (NV)digit; + continue; + } + if (digit == ('_' - '0') && len && allow_underscores + && (digit = s[1] - '0') && (digit >= 0 && digit <= 7)) + { + --len; + ++s; + goto redo; + } + /* Allow \octal to work the DWIM way (that is, stop scanning + * as soon as non-octal characters are seen, complain only iff + * someone seems to want to use the digits eight and nine). */ + if (digit == 8 || digit == 9) { + if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) + warn("Illegal octal digit '%c' ignored", *s); + } + break; + } + + if ( ( overflowed && value_nv > 4294967295.0) +#if UVSIZE > 4 + || (!overflowed && value > 0xffffffff ) +#endif + ) { + warn("Octal number > 037777777777 non-portable"); + } + *len_p = s - start; + if (!overflowed) { + *flags = 0; + return value; + } + *flags = PERL_SCAN_GREATER_THAN_UV_MAX; + if (result) + *result = value_nv; + return UV_MAX; +} +#endif +#endif + +#if !defined(my_snprintf) +#if defined(NEED_my_snprintf) +static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); +static +#else +extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); +#endif + +#define my_snprintf DPPP_(my_my_snprintf) +#define Perl_my_snprintf DPPP_(my_my_snprintf) + +#if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL) + +int +DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...) +{ + dTHX; + int retval; + va_list ap; + va_start(ap, format); +#ifdef HAS_VSNPRINTF + retval = vsnprintf(buffer, len, format, ap); +#else + retval = vsprintf(buffer, format, ap); +#endif + va_end(ap); + if (retval < 0 || (len > 0 && (Size_t)retval >= len)) + Perl_croak(aTHX_ "panic: my_snprintf buffer overflow"); + return retval; +} + +#endif +#endif + +#if !defined(my_sprintf) +#if defined(NEED_my_sprintf) +static int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); +static +#else +extern int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); +#endif + +#define my_sprintf DPPP_(my_my_sprintf) +#define Perl_my_sprintf DPPP_(my_my_sprintf) + +#if defined(NEED_my_sprintf) || defined(NEED_my_sprintf_GLOBAL) + +int +DPPP_(my_my_sprintf)(char *buffer, const char* pat, ...) +{ + va_list args; + va_start(args, pat); + vsprintf(buffer, pat, args); + va_end(args); + return strlen(buffer); +} + +#endif +#endif + +#ifdef NO_XSLOCKS +# ifdef dJMPENV +# define dXCPT dJMPENV; int rEtV = 0 +# define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0) +# define XCPT_TRY_END JMPENV_POP; +# define XCPT_CATCH if (rEtV != 0) +# define XCPT_RETHROW JMPENV_JUMP(rEtV) +# else +# define dXCPT Sigjmp_buf oldTOP; int rEtV = 0 +# define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0) +# define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf); +# define XCPT_CATCH if (rEtV != 0) +# define XCPT_RETHROW Siglongjmp(top_env, rEtV) +# endif +#endif + +#if !defined(my_strlcat) +#if defined(NEED_my_strlcat) +static Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); +static +#else +extern Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); +#endif + +#define my_strlcat DPPP_(my_my_strlcat) +#define Perl_my_strlcat DPPP_(my_my_strlcat) + +#if defined(NEED_my_strlcat) || defined(NEED_my_strlcat_GLOBAL) + +Size_t +DPPP_(my_my_strlcat)(char *dst, const char *src, Size_t size) +{ + Size_t used, length, copy; + + used = strlen(dst); + length = strlen(src); + if (size > 0 && used < size - 1) { + copy = (length >= size - used) ? size - used - 1 : length; + memcpy(dst + used, src, copy); + dst[used + copy] = '\0'; + } + return used + length; +} +#endif +#endif + +#if !defined(my_strlcpy) +#if defined(NEED_my_strlcpy) +static Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); +static +#else +extern Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); +#endif + +#define my_strlcpy DPPP_(my_my_strlcpy) +#define Perl_my_strlcpy DPPP_(my_my_strlcpy) + +#if defined(NEED_my_strlcpy) || defined(NEED_my_strlcpy_GLOBAL) + +Size_t +DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size) +{ + Size_t length, copy; + + length = strlen(src); + if (size > 0) { + copy = (length >= size) ? size - 1 : length; + memcpy(dst, src, copy); + dst[copy] = '\0'; + } + return length; +} + +#endif +#endif +#ifndef PERL_PV_ESCAPE_QUOTE +# define PERL_PV_ESCAPE_QUOTE 0x0001 +#endif + +#ifndef PERL_PV_PRETTY_QUOTE +# define PERL_PV_PRETTY_QUOTE PERL_PV_ESCAPE_QUOTE +#endif + +#ifndef PERL_PV_PRETTY_ELLIPSES +# define PERL_PV_PRETTY_ELLIPSES 0x0002 +#endif + +#ifndef PERL_PV_PRETTY_LTGT +# define PERL_PV_PRETTY_LTGT 0x0004 +#endif + +#ifndef PERL_PV_ESCAPE_FIRSTCHAR +# define PERL_PV_ESCAPE_FIRSTCHAR 0x0008 +#endif + +#ifndef PERL_PV_ESCAPE_UNI +# define PERL_PV_ESCAPE_UNI 0x0100 +#endif + +#ifndef PERL_PV_ESCAPE_UNI_DETECT +# define PERL_PV_ESCAPE_UNI_DETECT 0x0200 +#endif + +#ifndef PERL_PV_ESCAPE_ALL +# define PERL_PV_ESCAPE_ALL 0x1000 +#endif + +#ifndef PERL_PV_ESCAPE_NOBACKSLASH +# define PERL_PV_ESCAPE_NOBACKSLASH 0x2000 +#endif + +#ifndef PERL_PV_ESCAPE_NOCLEAR +# define PERL_PV_ESCAPE_NOCLEAR 0x4000 +#endif + +#ifndef PERL_PV_ESCAPE_RE +# define PERL_PV_ESCAPE_RE 0x8000 +#endif + +#ifndef PERL_PV_PRETTY_NOCLEAR +# define PERL_PV_PRETTY_NOCLEAR PERL_PV_ESCAPE_NOCLEAR +#endif +#ifndef PERL_PV_PRETTY_DUMP +# define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE +#endif + +#ifndef PERL_PV_PRETTY_REGPROP +# define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE +#endif + +/* Hint: pv_escape + * Note that unicode functionality is only backported to + * those perl versions that support it. For older perl + * versions, the implementation will fall back to bytes. + */ + +#ifndef pv_escape +#if defined(NEED_pv_escape) +static char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); +static +#else +extern char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); +#endif + +#ifdef pv_escape +# undef pv_escape +#endif +#define pv_escape(a,b,c,d,e,f) DPPP_(my_pv_escape)(aTHX_ a,b,c,d,e,f) +#define Perl_pv_escape DPPP_(my_pv_escape) + +#if defined(NEED_pv_escape) || defined(NEED_pv_escape_GLOBAL) + +char * +DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str, + const STRLEN count, const STRLEN max, + STRLEN * const escaped, const U32 flags) +{ + const char esc = flags & PERL_PV_ESCAPE_RE ? '%' : '\\'; + const char dq = flags & PERL_PV_ESCAPE_QUOTE ? '"' : esc; + char octbuf[32] = "%123456789ABCDF"; + STRLEN wrote = 0; + STRLEN chsize = 0; + STRLEN readsize = 1; +#if defined(is_utf8_string) && defined(utf8_to_uvchr) + bool isuni = flags & PERL_PV_ESCAPE_UNI ? 1 : 0; +#endif + const char *pv = str; + const char * const end = pv + count; + octbuf[0] = esc; + + if (!(flags & PERL_PV_ESCAPE_NOCLEAR)) + sv_setpvs(dsv, ""); + +#if defined(is_utf8_string) && defined(utf8_to_uvchr) + if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count)) + isuni = 1; +#endif + + for (; pv < end && (!max || wrote < max) ; pv += readsize) { + const UV u = +#if defined(is_utf8_string) && defined(utf8_to_uvchr) + isuni ? utf8_to_uvchr((U8*)pv, &readsize) : +#endif + (U8)*pv; + const U8 c = (U8)u & 0xFF; + + if (u > 255 || (flags & PERL_PV_ESCAPE_ALL)) { + if (flags & PERL_PV_ESCAPE_FIRSTCHAR) + chsize = my_snprintf(octbuf, sizeof octbuf, + "%" UVxf, u); + else + chsize = my_snprintf(octbuf, sizeof octbuf, + "%cx{%" UVxf "}", esc, u); + } else if (flags & PERL_PV_ESCAPE_NOBACKSLASH) { + chsize = 1; + } else { + if (c == dq || c == esc || !isPRINT(c)) { + chsize = 2; + switch (c) { + case '\\' : /* fallthrough */ + case '%' : if (c == esc) + octbuf[1] = esc; + else + chsize = 1; + break; + case '\v' : octbuf[1] = 'v'; break; + case '\t' : octbuf[1] = 't'; break; + case '\r' : octbuf[1] = 'r'; break; + case '\n' : octbuf[1] = 'n'; break; + case '\f' : octbuf[1] = 'f'; break; + case '"' : if (dq == '"') + octbuf[1] = '"'; + else + chsize = 1; + break; + default: chsize = my_snprintf(octbuf, sizeof octbuf, + pv < end && isDIGIT((U8)*(pv+readsize)) + ? "%c%03o" : "%c%o", esc, c); + } + } else { + chsize = 1; + } + } + if (max && wrote + chsize > max) { + break; + } else if (chsize > 1) { + sv_catpvn(dsv, octbuf, chsize); + wrote += chsize; + } else { + char tmp[2]; + my_snprintf(tmp, sizeof tmp, "%c", c); + sv_catpvn(dsv, tmp, 1); + wrote++; + } + if (flags & PERL_PV_ESCAPE_FIRSTCHAR) + break; + } + if (escaped != NULL) + *escaped= pv - str; + return SvPVX(dsv); +} + +#endif +#endif + +#ifndef pv_pretty +#if defined(NEED_pv_pretty) +static char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); +static +#else +extern char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); +#endif + +#ifdef pv_pretty +# undef pv_pretty +#endif +#define pv_pretty(a,b,c,d,e,f,g) DPPP_(my_pv_pretty)(aTHX_ a,b,c,d,e,f,g) +#define Perl_pv_pretty DPPP_(my_pv_pretty) + +#if defined(NEED_pv_pretty) || defined(NEED_pv_pretty_GLOBAL) + +char * +DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count, + const STRLEN max, char const * const start_color, char const * const end_color, + const U32 flags) +{ + const U8 dq = (flags & PERL_PV_PRETTY_QUOTE) ? '"' : '%'; + STRLEN escaped; + + if (!(flags & PERL_PV_PRETTY_NOCLEAR)) + sv_setpvs(dsv, ""); + + if (dq == '"') + sv_catpvs(dsv, "\""); + else if (flags & PERL_PV_PRETTY_LTGT) + sv_catpvs(dsv, "<"); + + if (start_color != NULL) + sv_catpv(dsv, D_PPP_CONSTPV_ARG(start_color)); + + pv_escape(dsv, str, count, max, &escaped, flags | PERL_PV_ESCAPE_NOCLEAR); + + if (end_color != NULL) + sv_catpv(dsv, D_PPP_CONSTPV_ARG(end_color)); + + if (dq == '"') + sv_catpvs(dsv, "\""); + else if (flags & PERL_PV_PRETTY_LTGT) + sv_catpvs(dsv, ">"); + + if ((flags & PERL_PV_PRETTY_ELLIPSES) && escaped < count) + sv_catpvs(dsv, "..."); + + return SvPVX(dsv); +} + +#endif +#endif + +#ifndef pv_display +#if defined(NEED_pv_display) +static char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); +static +#else +extern char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); +#endif + +#ifdef pv_display +# undef pv_display +#endif +#define pv_display(a,b,c,d,e) DPPP_(my_pv_display)(aTHX_ a,b,c,d,e) +#define Perl_pv_display DPPP_(my_pv_display) + +#if defined(NEED_pv_display) || defined(NEED_pv_display_GLOBAL) + +char * +DPPP_(my_pv_display)(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) +{ + pv_pretty(dsv, pv, cur, pvlim, NULL, NULL, PERL_PV_PRETTY_DUMP); + if (len > cur && pv[cur] == '\0') + sv_catpvs(dsv, "\\0"); + return SvPVX(dsv); +} + +#endif +#endif + +#endif /* _P_P_PORTABILITY_H_ */ + +/* End of File ppport.h */ diff --git a/fastSum/resources/ROUGE/DB_File-1.835/t/db-btree.t b/fastSum/resources/ROUGE/DB_File-1.835/t/db-btree.t new file mode 100644 index 0000000000000000000000000000000000000000..fb89a408556fd755027bc9969197b717b5d68b6c --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/t/db-btree.t @@ -0,0 +1,1657 @@ +#!./perl -w + +use warnings; +use strict; +use Config; + +BEGIN { + if(-d "lib" && -f "TEST") { + if ($Config{'extensions'} !~ /\bDB_File\b/ ) { + print "1..0 # Skip: DB_File was not built\n"; + exit 0; + } + } +} + +BEGIN +{ + if ($^O eq 'darwin' + && (split(/\./, $Config{osvers}))[0] < 7 # Mac OS X 10.3 == Darwin 7 + && $Config{db_version_major} == 1 + && $Config{db_version_minor} == 0 + && $Config{db_version_patch} == 0) { + warn < @b ? @b : @a) ; + my $i = 0 ; + + foreach $i ( 0 .. $len -1) { + return $a[$i] - $b[$i] if $a[$i] != $b[$i] ; + } + + return @a - @b ; +} + +{ + package Redirect ; + use Symbol ; + + sub new + { + my $class = shift ; + my $filename = shift ; + my $fh = gensym ; + open ($fh, ">$filename") || die "Cannot open $filename: $!" ; + my $real_stdout = select($fh) ; + return bless [$fh, $real_stdout ] ; + + } + sub DESTROY + { + my $self = shift ; + close $self->[0] ; + select($self->[1]) ; + } +} + +sub docat +{ + my $file = shift; + local $/ = undef ; + open(CAT,$file) || die "Cannot open $file: $!"; + my $result = ; + close(CAT); + $result = normalise($result) ; + return $result ; +} + +sub docat_del +{ + my $file = shift; + my $result = docat($file); + unlink $file ; + return $result ; +} + +sub normalise +{ + my $data = shift ; + $data =~ s#\r\n#\n#g + if $^O eq 'cygwin' ; + + return $data ; +} + +sub safeUntie +{ + my $hashref = shift ; + my $no_inner = 1; + local $SIG{__WARN__} = sub {-- $no_inner } ; + untie %$hashref; + return $no_inner; +} + + + +my $db185mode = ($DB_File::db_version == 1 && ! $DB_File::db_185_compat) ; +my $null_keys_allowed = ($DB_File::db_ver < 2.004010 + || $DB_File::db_ver >= 3.1 ); + +my $Dfile = "dbbtree.tmp"; +unlink $Dfile; + +umask(0); + +# Check the interface to BTREEINFO + +my $dbh = new DB_File::BTREEINFO ; +ok(1, ! defined $dbh->{flags}) ; +ok(2, ! defined $dbh->{cachesize}) ; +ok(3, ! defined $dbh->{psize}) ; +ok(4, ! defined $dbh->{lorder}) ; +ok(5, ! defined $dbh->{minkeypage}) ; +ok(6, ! defined $dbh->{maxkeypage}) ; +ok(7, ! defined $dbh->{compare}) ; +ok(8, ! defined $dbh->{prefix}) ; + +$dbh->{flags} = 3000 ; +ok(9, $dbh->{flags} == 3000) ; + +$dbh->{cachesize} = 9000 ; +ok(10, $dbh->{cachesize} == 9000); + +$dbh->{psize} = 400 ; +ok(11, $dbh->{psize} == 400) ; + +$dbh->{lorder} = 65 ; +ok(12, $dbh->{lorder} == 65) ; + +$dbh->{minkeypage} = 123 ; +ok(13, $dbh->{minkeypage} == 123) ; + +$dbh->{maxkeypage} = 1234 ; +ok(14, $dbh->{maxkeypage} == 1234 ); + +# Check that an invalid entry is caught both for store & fetch +eval '$dbh->{fred} = 1234' ; +ok(15, $@ =~ /^DB_File::BTREEINFO::STORE - Unknown element 'fred' at/ ) ; +eval 'my $q = $dbh->{fred}' ; +ok(16, $@ =~ /^DB_File::BTREEINFO::FETCH - Unknown element 'fred' at/ ) ; + +# Now check the interface to BTREE + +my ($X, %h) ; +ok(17, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE )) ; +die "Could not tie: $!" unless $X; + +my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat($Dfile); + +my %noMode = map { $_, 1} qw( amigaos MSWin32 NetWare cygwin ) ; + +ok(18, ($mode & 0777) == (($^O eq 'os2' || $^O eq 'MacOS') ? 0666 : 0640) + || $noMode{$^O} ); + +my ($key, $value, $i); +while (($key,$value) = each(%h)) { + $i++; +} +ok(19, !$i ) ; + +$h{'goner1'} = 'snork'; + +$h{'abc'} = 'ABC'; +ok(20, $h{'abc'} eq 'ABC' ); +ok(21, ! defined $h{'jimmy'} ) ; +ok(22, ! exists $h{'jimmy'} ) ; +ok(23, defined $h{'abc'} ) ; + +$h{'def'} = 'DEF'; +$h{'jkl','mno'} = "JKL\034MNO"; +$h{'a',2,3,4,5} = join("\034",'A',2,3,4,5); +$h{'a'} = 'A'; + +#$h{'b'} = 'B'; +$X->STORE('b', 'B') ; + +$h{'c'} = 'C'; + +#$h{'d'} = 'D'; +$X->put('d', 'D') ; + +$h{'e'} = 'E'; +$h{'f'} = 'F'; +$h{'g'} = 'X'; +$h{'h'} = 'H'; +$h{'i'} = 'I'; + +$h{'goner2'} = 'snork'; +delete $h{'goner2'}; + + +# IMPORTANT - $X must be undefined before the untie otherwise the +# underlying DB close routine will not get called. +undef $X ; +untie(%h); + +# tie to the same file again +ok(24, $X = tie(%h,'DB_File',$Dfile, O_RDWR, 0640, $DB_BTREE)) ; + +# Modify an entry from the previous tie +$h{'g'} = 'G'; + +$h{'j'} = 'J'; +$h{'k'} = 'K'; +$h{'l'} = 'L'; +$h{'m'} = 'M'; +$h{'n'} = 'N'; +$h{'o'} = 'O'; +$h{'p'} = 'P'; +$h{'q'} = 'Q'; +$h{'r'} = 'R'; +$h{'s'} = 'S'; +$h{'t'} = 'T'; +$h{'u'} = 'U'; +$h{'v'} = 'V'; +$h{'w'} = 'W'; +$h{'x'} = 'X'; +$h{'y'} = 'Y'; +$h{'z'} = 'Z'; + +$h{'goner3'} = 'snork'; + +delete $h{'goner1'}; +$X->DELETE('goner3'); + +my @keys = keys(%h); +my @values = values(%h); + +ok(25, $#keys == 29 && $#values == 29) ; + +$i = 0 ; +while (($key,$value) = each(%h)) { + if ($key eq $keys[$i] && $value eq $values[$i] && $key eq lc($value)) { + $key =~ y/a-z/A-Z/; + $i++ if $key eq $value; + } +} + +ok(26, $i == 30) ; + +@keys = ('blurfl', keys(%h), 'dyick'); +ok(27, $#keys == 31) ; + +#Check that the keys can be retrieved in order +my @b = keys %h ; +my @c = sort lexical @b ; +ok(28, ArrayCompare(\@b, \@c)) ; + +$h{'foo'} = ''; +ok(29, $h{'foo'} eq '' ) ; + +# Berkeley DB from version 2.4.10 to 3.0 does not allow null keys. +# This feature was reenabled in version 3.1 of Berkeley DB. +my $result = 0 ; +if ($null_keys_allowed) { + $h{''} = 'bar'; + $result = ( $h{''} eq 'bar' ); +} +else + { $result = 1 } +ok(30, $result) ; + +# check cache overflow and numeric keys and contents +my $ok = 1; +for ($i = 1; $i < 200; $i++) { $h{$i + 0} = $i + 0; } +for ($i = 1; $i < 200; $i++) { $ok = 0 unless $h{$i} == $i; } +ok(31, $ok); + +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat($Dfile); +ok(32, $size > 0 ); + +@h{0..200} = 200..400; +my @foo = @h{0..200}; +ok(33, join(':',200..400) eq join(':',@foo) ); + +# Now check all the non-tie specific stuff + + +# Check R_NOOVERWRITE flag will make put fail when attempting to overwrite +# an existing record. + +my $status = $X->put( 'x', 'newvalue', R_NOOVERWRITE) ; +ok(34, $status == 1 ); + +# check that the value of the key 'x' has not been changed by the +# previous test +ok(35, $h{'x'} eq 'X' ); + +# standard put +$status = $X->put('key', 'value') ; +ok(36, $status == 0 ); + +#check that previous put can be retrieved +$value = 0 ; +$status = $X->get('key', $value) ; +ok(37, $status == 0 ); +ok(38, $value eq 'value' ); + +# Attempting to delete an existing key should work + +$status = $X->del('q') ; +ok(39, $status == 0 ); +if ($null_keys_allowed) { + $status = $X->del('') ; +} else { + $status = 0 ; +} +ok(40, $status == 0 ); + +# Make sure that the key deleted, cannot be retrieved +ok(41, ! defined $h{'q'}) ; +ok(42, ! defined $h{''}) ; + +undef $X ; +untie %h ; + +ok(43, $X = tie(%h, 'DB_File',$Dfile, O_RDWR, 0640, $DB_BTREE )); + +# Attempting to delete a non-existent key should fail + +$status = $X->del('joe') ; +ok(44, $status == 1 ); + +# Check the get interface + +# First a non-existing key +$status = $X->get('aaaa', $value) ; +ok(45, $status == 1 ); + +# Next an existing key +$status = $X->get('a', $value) ; +ok(46, $status == 0 ); +ok(47, $value eq 'A' ); + +# seq +# ### + +# use seq to find an approximate match +$key = 'ke' ; +$value = '' ; +$status = $X->seq($key, $value, R_CURSOR) ; +ok(48, $status == 0 ); +ok(49, $key eq 'key' ); +ok(50, $value eq 'value' ); + +# seq when the key does not match +$key = 'zzz' ; +$value = '' ; +$status = $X->seq($key, $value, R_CURSOR) ; +ok(51, $status == 1 ); + + +# use seq to set the cursor, then delete the record @ the cursor. + +$key = 'x' ; +$value = '' ; +$status = $X->seq($key, $value, R_CURSOR) ; +ok(52, $status == 0 ); +ok(53, $key eq 'x' ); +ok(54, $value eq 'X' ); +$status = $X->del(0, R_CURSOR) ; +ok(55, $status == 0 ); +$status = $X->get('x', $value) ; +ok(56, $status == 1 ); + +# ditto, but use put to replace the key/value pair. +$key = 'y' ; +$value = '' ; +$status = $X->seq($key, $value, R_CURSOR) ; +ok(57, $status == 0 ); +ok(58, $key eq 'y' ); +ok(59, $value eq 'Y' ); + +$key = "replace key" ; +$value = "replace value" ; +$status = $X->put($key, $value, R_CURSOR) ; +ok(60, $status == 0 ); +ok(61, $key eq 'replace key' ); +ok(62, $value eq 'replace value' ); +$status = $X->get('y', $value) ; +ok(63, 1) ; # hard-wire to always pass. the previous test ($status == 1) + # only worked because of a bug in 1.85/6 + +# use seq to walk forwards through a file + +$status = $X->seq($key, $value, R_FIRST) ; +ok(64, $status == 0 ); +my $previous = $key ; + +$ok = 1 ; +while (($status = $X->seq($key, $value, R_NEXT)) == 0) +{ + ($ok = 0), last if ($previous cmp $key) == 1 ; +} + +ok(65, $status == 1 ); +ok(66, $ok == 1 ); + +# use seq to walk backwards through a file +$status = $X->seq($key, $value, R_LAST) ; +ok(67, $status == 0 ); +$previous = $key ; + +$ok = 1 ; +while (($status = $X->seq($key, $value, R_PREV)) == 0) +{ + ($ok = 0), last if ($previous cmp $key) == -1 ; + #print "key = [$key] value = [$value]\n" ; +} + +ok(68, $status == 1 ); +ok(69, $ok == 1 ); + + +# check seq FIRST/LAST + +# sync +# #### + +$status = $X->sync ; +ok(70, $status == 0 ); + + +# fd +# ## + +$status = $X->fd ; +ok(71, 1 ); +#ok(71, $status != 0 ); + + +undef $X ; +untie %h ; + +unlink $Dfile; + +# Now try an in memory file +my $Y; +ok(72, $Y = tie(%h, 'DB_File',undef, O_RDWR|O_CREAT, 0640, $DB_BTREE )); + +# fd with an in memory file should return failure +$status = $Y->fd ; +ok(73, $status == -1 ); + + +undef $Y ; +untie %h ; + +# Duplicate keys +my $bt = new DB_File::BTREEINFO ; +$bt->{flags} = R_DUP ; +my ($YY, %hh); +ok(74, $YY = tie(%hh, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $bt )) ; + +$hh{'Wall'} = 'Larry' ; +$hh{'Wall'} = 'Stone' ; # Note the duplicate key +$hh{'Wall'} = 'Brick' ; # Note the duplicate key +$hh{'Wall'} = 'Brick' ; # Note the duplicate key and value +$hh{'Smith'} = 'John' ; +$hh{'mouse'} = 'mickey' ; + +# first work in scalar context +ok(75, scalar $YY->get_dup('Unknown') == 0 ); +ok(76, scalar $YY->get_dup('Smith') == 1 ); +ok(77, scalar $YY->get_dup('Wall') == 4 ); + +# now in list context +my @unknown = $YY->get_dup('Unknown') ; +ok(78, "@unknown" eq "" ); + +my @smith = $YY->get_dup('Smith') ; +ok(79, "@smith" eq "John" ); + +{ +my @wall = $YY->get_dup('Wall') ; +my %wall ; +@wall{@wall} = @wall ; +ok(80, (@wall == 4 && $wall{'Larry'} && $wall{'Stone'} && $wall{'Brick'}) ); +} + +# hash +my %unknown = $YY->get_dup('Unknown', 1) ; +ok(81, keys %unknown == 0 ); + +my %smith = $YY->get_dup('Smith', 1) ; +ok(82, keys %smith == 1 && $smith{'John'}) ; + +my %wall = $YY->get_dup('Wall', 1) ; +ok(83, keys %wall == 3 && $wall{'Larry'} == 1 && $wall{'Stone'} == 1 + && $wall{'Brick'} == 2); + +undef $YY ; +untie %hh ; +unlink $Dfile; + + +# test multiple callbacks +my $Dfile1 = "btree1" ; +my $Dfile2 = "btree2" ; +my $Dfile3 = "btree3" ; + +my $dbh1 = new DB_File::BTREEINFO ; +$dbh1->{compare} = sub { + no warnings 'numeric' ; + $_[0] <=> $_[1] } ; + +my $dbh2 = new DB_File::BTREEINFO ; +$dbh2->{compare} = sub { $_[0] cmp $_[1] } ; + +my $dbh3 = new DB_File::BTREEINFO ; +$dbh3->{compare} = sub { length $_[0] <=> length $_[1] } ; + + +my (%g, %k); +tie(%h, 'DB_File',$Dfile1, O_RDWR|O_CREAT, 0640, $dbh1 ) or die $!; +tie(%g, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) or die $!; +tie(%k, 'DB_File',$Dfile3, O_RDWR|O_CREAT, 0640, $dbh3 ) or die $!; + +my @Keys = qw( 0123 12 -1234 9 987654321 def ) ; +my (@srt_1, @srt_2, @srt_3); +{ + no warnings 'numeric' ; + @srt_1 = sort { $a <=> $b } @Keys ; +} +@srt_2 = sort { $a cmp $b } @Keys ; +@srt_3 = sort { length $a <=> length $b } @Keys ; + +foreach (@Keys) { + $h{$_} = 1 ; + $g{$_} = 1 ; + $k{$_} = 1 ; +} + +sub ArrayCompare +{ + my($a, $b) = @_ ; + + return 0 if @$a != @$b ; + + foreach (0 .. @$a - 1) + { + return 0 unless $$a[$_] eq $$b[$_]; + } + + 1 ; +} + +ok(84, ArrayCompare (\@srt_1, [keys %h]) ); +ok(85, ArrayCompare (\@srt_2, [keys %g]) ); +ok(86, ArrayCompare (\@srt_3, [keys %k]) ); + +untie %h ; +untie %g ; +untie %k ; +unlink $Dfile1, $Dfile2, $Dfile3 ; + +# clear +# ##### + +ok(87, tie(%h, 'DB_File', $Dfile1, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); +foreach (1 .. 10) + { $h{$_} = $_ * 100 } + +# check that there are 10 elements in the hash +$i = 0 ; +while (($key,$value) = each(%h)) { + $i++; +} +ok(88, $i == 10); + +# now clear the hash +%h = () ; + +# check it is empty +$i = 0 ; +while (($key,$value) = each(%h)) { + $i++; +} +ok(89, $i == 0); + +untie %h ; +unlink $Dfile1 ; + +{ + # check that attempting to tie an array to a DB_BTREE will fail + + my $filename = "xyz" ; + my @x ; + eval { tie @x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE ; } ; + ok(90, $@ =~ /^DB_File can only tie an associative array to a DB_BTREE database/) ; + unlink $filename ; +} + +{ + # sub-class test + + package Another ; + + use warnings ; + use strict ; + + open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ; + print FILE <<'EOM' ; + + package SubDB ; + + use warnings ; + use strict ; + our (@ISA, @EXPORT); + + require Exporter ; + use DB_File; + @ISA=qw(DB_File); + @EXPORT = @DB_File::EXPORT ; + + sub STORE { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::STORE($key, $value * 2) ; + } + + sub FETCH { + my $self = shift ; + my $key = shift ; + $self->SUPER::FETCH($key) - 1 ; + } + + sub put { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::put($key, $value * 3) ; + } + + sub get { + my $self = shift ; + $self->SUPER::get($_[0], $_[1]) ; + $_[1] -= 2 ; + } + + sub A_new_method + { + my $self = shift ; + my $key = shift ; + my $value = $self->FETCH($key) ; + return "[[$value]]" ; + } + + 1 ; +EOM + + close FILE ; + + BEGIN { push @INC, '.'; } + eval 'use SubDB ; '; + main::ok(91, $@ eq "") ; + my %h ; + my $X ; + eval ' + $X = tie(%h, "SubDB","dbbtree.tmp", O_RDWR|O_CREAT, 0640, $DB_BTREE ); + ' ; + + main::ok(92, $@ eq "") ; + + my $ret = eval '$h{"fred"} = 3 ; return $h{"fred"} ' ; + main::ok(93, $@ eq "") ; + main::ok(94, $ret == 5) ; + + my $value = 0; + $ret = eval '$X->put("joe", 4) ; $X->get("joe", $value) ; return $value' ; + main::ok(95, $@ eq "") ; + main::ok(96, $ret == 10) ; + + $ret = eval ' R_NEXT eq main::R_NEXT ' ; + main::ok(97, $@ eq "" ) ; + main::ok(98, $ret == 1) ; + + $ret = eval '$X->A_new_method("joe") ' ; + main::ok(99, $@ eq "") ; + main::ok(100, $ret eq "[[11]]") ; + + undef $X; + untie(%h); + unlink "SubDB.pm", "dbbtree.tmp" ; + +} + +{ + # DBM Filter tests + use warnings ; + use strict ; + my (%h, $db) ; + my ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + unlink $Dfile; + + sub checkOutput + { + my($fk, $sk, $fv, $sv) = @_ ; + return + $fetch_key eq $fk && $store_key eq $sk && + $fetch_value eq $fv && $store_value eq $sv && + $_ eq 'original' ; + } + + ok(101, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + + $db->filter_fetch_key (sub { $fetch_key = $_ }) ; + $db->filter_store_key (sub { $store_key = $_ }) ; + $db->filter_fetch_value (sub { $fetch_value = $_}) ; + $db->filter_store_value (sub { $store_value = $_ }) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + # fk sk fv sv + ok(102, checkOutput( "", "fred", "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(103, $h{"fred"} eq "joe"); + # fk sk fv sv + ok(104, checkOutput( "", "fred", "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(105, $db->FIRSTKEY() eq "fred") ; + # fk sk fv sv + ok(106, checkOutput( "fred", "", "", "")) ; + + # replace the filters, but remember the previous set + my ($old_fk) = $db->filter_fetch_key + (sub { $_ = uc $_ ; $fetch_key = $_ }) ; + my ($old_sk) = $db->filter_store_key + (sub { $_ = lc $_ ; $store_key = $_ }) ; + my ($old_fv) = $db->filter_fetch_value + (sub { $_ = "[$_]"; $fetch_value = $_ }) ; + my ($old_sv) = $db->filter_store_value + (sub { s/o/x/g; $store_value = $_ }) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"Fred"} = "Joe" ; + # fk sk fv sv + ok(107, checkOutput( "", "fred", "", "Jxe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(108, $h{"Fred"} eq "[Jxe]"); + # fk sk fv sv + ok(109, checkOutput( "", "fred", "[Jxe]", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(110, $db->FIRSTKEY() eq "FRED") ; + # fk sk fv sv + ok(111, checkOutput( "FRED", "", "", "")) ; + + # put the original filters back + $db->filter_fetch_key ($old_fk); + $db->filter_store_key ($old_sk); + $db->filter_fetch_value ($old_fv); + $db->filter_store_value ($old_sv); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"fred"} = "joe" ; + ok(112, checkOutput( "", "fred", "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(113, $h{"fred"} eq "joe"); + ok(114, checkOutput( "", "fred", "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(115, $db->FIRSTKEY() eq "fred") ; + ok(116, checkOutput( "fred", "", "", "")) ; + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"fred"} = "joe" ; + ok(117, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(118, $h{"fred"} eq "joe"); + ok(119, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(120, $db->FIRSTKEY() eq "fred") ; + ok(121, checkOutput( "", "", "", "")) ; + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # DBM Filter with a closure + + use warnings ; + use strict ; + my (%h, $db) ; + + unlink $Dfile; + ok(122, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + + my %result = () ; + + sub Closure + { + my ($name) = @_ ; + my $count = 0 ; + my @kept = () ; + + return sub { ++$count ; + push @kept, $_ ; + $result{$name} = "$name - $count: [@kept]" ; + } + } + + $db->filter_store_key(Closure("store key")) ; + $db->filter_store_value(Closure("store value")) ; + $db->filter_fetch_key(Closure("fetch key")) ; + $db->filter_fetch_value(Closure("fetch value")) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + ok(123, $result{"store key"} eq "store key - 1: [fred]"); + ok(124, $result{"store value"} eq "store value - 1: [joe]"); + ok(125, ! defined $result{"fetch key"} ); + ok(126, ! defined $result{"fetch value"} ); + ok(127, $_ eq "original") ; + + ok(128, $db->FIRSTKEY() eq "fred") ; + ok(129, $result{"store key"} eq "store key - 1: [fred]"); + ok(130, $result{"store value"} eq "store value - 1: [joe]"); + ok(131, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(132, ! defined $result{"fetch value"} ); + ok(133, $_ eq "original") ; + + $h{"jim"} = "john" ; + ok(134, $result{"store key"} eq "store key - 2: [fred jim]"); + ok(135, $result{"store value"} eq "store value - 2: [joe john]"); + ok(136, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(137, ! defined $result{"fetch value"} ); + ok(138, $_ eq "original") ; + + ok(139, $h{"fred"} eq "joe"); + ok(140, $result{"store key"} eq "store key - 3: [fred jim fred]"); + ok(141, $result{"store value"} eq "store value - 2: [joe john]"); + ok(142, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(143, $result{"fetch value"} eq "fetch value - 1: [joe]"); + ok(144, $_ eq "original") ; + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # DBM Filter recursion detection + use warnings ; + use strict ; + my (%h, $db) ; + unlink $Dfile; + + ok(145, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + + $db->filter_store_key (sub { $_ = $h{$_} }) ; + + eval '$h{1} = 1234' ; + ok(146, $@ =~ /^recursion detected in filter_store_key at/ ); + + undef $db ; + untie %h; + unlink $Dfile; +} + + +{ + # Examples from the POD + + + my $file = "xyzt" ; + { + my $redirect = new Redirect $file ; + + # BTREE example 1 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my %h ; + + sub Compare + { + my ($key1, $key2) = @_ ; + "\L$key1" cmp "\L$key2" ; + } + + # specify the Perl sub that will do the comparison + $DB_BTREE->{'compare'} = \&Compare ; + + unlink "tree" ; + tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open file 'tree': $!\n" ; + + # Add a key/value pair to the file + $h{'Wall'} = 'Larry' ; + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + $h{'duck'} = 'donald' ; + + # Delete + delete $h{"duck"} ; + + # Cycle through the keys printing them in order. + # Note it is not necessary to sort the keys as + # the btree will have kept them in order automatically. + foreach (keys %h) + { print "$_\n" } + + untie %h ; + + unlink "tree" ; + } + + delete $DB_BTREE->{'compare'} ; + + ok(147, docat_del($file) eq <<'EOM') ; +mouse +Smith +Wall +EOM + + { + my $redirect = new Redirect $file ; + + # BTREE example 2 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my ($filename, %h); + + $filename = "tree" ; + unlink $filename ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'Wall'} = 'Larry' ; + $h{'Wall'} = 'Brick' ; # Note the duplicate key + $h{'Wall'} = 'Brick' ; # Note the duplicate key and value + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + + # iterate through the associative array + # and print each key/value pair. + foreach (keys %h) + { print "$_ -> $h{$_}\n" } + + untie %h ; + + unlink $filename ; + } + + ok(148, docat_del($file) eq ($db185mode ? <<'EOM' : <<'EOM') ) ; +Smith -> John +Wall -> Brick +Wall -> Brick +Wall -> Brick +mouse -> mickey +EOM +Smith -> John +Wall -> Larry +Wall -> Larry +Wall -> Larry +mouse -> mickey +EOM + + { + my $redirect = new Redirect $file ; + + # BTREE example 3 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $status, $key, $value); + + $filename = "tree" ; + unlink $filename ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'Wall'} = 'Larry' ; + $h{'Wall'} = 'Brick' ; # Note the duplicate key + $h{'Wall'} = 'Brick' ; # Note the duplicate key and value + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + + # iterate through the btree using seq + # and print each key/value pair. + $key = $value = 0 ; + for ($status = $x->seq($key, $value, R_FIRST) ; + $status == 0 ; + $status = $x->seq($key, $value, R_NEXT) ) + { print "$key -> $value\n" } + + + undef $x ; + untie %h ; + } + + ok(149, docat_del($file) eq ($db185mode == 1 ? <<'EOM' : <<'EOM') ) ; +Smith -> John +Wall -> Brick +Wall -> Brick +Wall -> Larry +mouse -> mickey +EOM +Smith -> John +Wall -> Larry +Wall -> Brick +Wall -> Brick +mouse -> mickey +EOM + + + { + my $redirect = new Redirect $file ; + + # BTREE example 4 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my ($filename, $x, %h); + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + my $cnt = $x->get_dup("Wall") ; + print "Wall occurred $cnt times\n" ; + + my %hash = $x->get_dup("Wall", 1) ; + print "Larry is there\n" if $hash{'Larry'} ; + print "There are $hash{'Brick'} Brick Walls\n" ; + + my @list = sort $x->get_dup("Wall") ; + print "Wall => [@list]\n" ; + + @list = $x->get_dup("Smith") ; + print "Smith => [@list]\n" ; + + @list = $x->get_dup("Dog") ; + print "Dog => [@list]\n" ; + + undef $x ; + untie %h ; + } + + ok(150, docat_del($file) eq <<'EOM') ; +Wall occurred 3 times +Larry is there +There are 2 Brick Walls +Wall => [Brick Brick Larry] +Smith => [John] +Dog => [] +EOM + + { + my $redirect = new Redirect $file ; + + # BTREE example 5 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $found); + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + print "Larry Wall is $found there\n" ; + + $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ; + print "Harry Wall is $found there\n" ; + + undef $x ; + untie %h ; + } + + ok(151, docat_del($file) eq <<'EOM') ; +Larry Wall is there +Harry Wall is not there +EOM + + { + my $redirect = new Redirect $file ; + + # BTREE example 6 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $found); + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + $x->del_dup("Wall", "Larry") ; + + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + print "Larry Wall is $found there\n" ; + + undef $x ; + untie %h ; + + unlink $filename ; + } + + ok(152, docat_del($file) eq <<'EOM') ; +Larry Wall is not there +EOM + + { + my $redirect = new Redirect $file ; + + # BTREE example 7 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + use Fcntl ; + + my ($filename, $x, %h, $st, $key, $value); + + sub match + { + my $key = shift ; + my $value = 0; + my $orig_key = $key ; + $x->seq($key, $value, R_CURSOR) ; + print "$orig_key\t-> $key\t-> $value\n" ; + } + + $filename = "tree" ; + unlink $filename ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'mouse'} = 'mickey' ; + $h{'Wall'} = 'Larry' ; + $h{'Walls'} = 'Brick' ; + $h{'Smith'} = 'John' ; + + + $key = $value = 0 ; + print "IN ORDER\n" ; + for ($st = $x->seq($key, $value, R_FIRST) ; + $st == 0 ; + $st = $x->seq($key, $value, R_NEXT) ) + + { print "$key -> $value\n" } + + print "\nPARTIAL MATCH\n" ; + + match "Wa" ; + match "A" ; + match "a" ; + + undef $x ; + untie %h ; + + unlink $filename ; + + } + + ok(153, docat_del($file) eq <<'EOM') ; +IN ORDER +Smith -> John +Wall -> Larry +Walls -> Brick +mouse -> mickey + +PARTIAL MATCH +Wa -> Wall -> Larry +A -> Smith -> John +a -> mouse -> mickey +EOM + +} + +#{ +# # R_SETCURSOR +# use strict ; +# my (%h, $db) ; +# unlink $Dfile; +# +# ok(156, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); +# +# $h{abc} = 33 ; +# my $k = "newest" ; +# my $v = 44 ; +# my $status = $db->put($k, $v, R_SETCURSOR) ; +# print "status = [$status]\n" ; +# ok(157, $status == 0) ; +# $status = $db->del($k, R_CURSOR) ; +# print "status = [$status]\n" ; +# ok(158, $status == 0) ; +# $k = "newest" ; +# ok(159, $db->get($k, $v, R_CURSOR)) ; +# +# ok(160, keys %h == 1) ; +# +# undef $db ; +# untie %h; +# unlink $Dfile; +#} + +{ + # Bug ID 20001013.009 + # + # test that $hash{KEY} = undef doesn't produce the warning + # Use of uninitialized value in null operation + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my %h ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + tie %h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_BTREE + or die "Can't open file: $!\n" ; + $h{ABC} = undef; + ok(154, $a eq "") ; + untie %h ; + unlink $Dfile; +} + +{ + # test that %hash = () doesn't produce the warning + # Argument "" isn't numeric in entersub + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my %h ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + tie %h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_BTREE + or die "Can't open file: $!\n" ; + %h = (); ; + ok(155, $a eq "") ; + untie %h ; + unlink $Dfile; +} + +{ + # When iterating over a tied hash using "each", the key passed to FETCH + # will be recycled and passed to NEXTKEY. If a Source Filter modifies the + # key in FETCH via a filter_fetch_key method we need to check that the + # modified key doesn't get passed to NEXTKEY. + # Also Test "keys" & "values" while we are at it. + + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my $bad_key = 0 ; + my %h = () ; + my $db ; + ok(156, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + $db->filter_fetch_key (sub { $_ =~ s/^Beta_/Alpha_/ if defined $_}) ; + $db->filter_store_key (sub { $bad_key = 1 if /^Beta_/ ; $_ =~ s/^Alpha_/Beta_/}) ; + + $h{'Alpha_ABC'} = 2 ; + $h{'Alpha_DEF'} = 5 ; + + ok(157, $h{'Alpha_ABC'} == 2); + ok(158, $h{'Alpha_DEF'} == 5); + + my ($k, $v) = ("",""); + while (($k, $v) = each %h) {} + ok(159, $bad_key == 0); + + $bad_key = 0 ; + foreach $k (keys %h) {} + ok(160, $bad_key == 0); + + $bad_key = 0 ; + foreach $v (values %h) {} + ok(161, $bad_key == 0); + + undef $db ; + untie %h ; + unlink $Dfile; +} + +{ + # now an error to pass 'compare' a non-code reference + my $dbh = new DB_File::BTREEINFO ; + + eval { $dbh->{compare} = 2 }; + ok(162, $@ =~ /^Key 'compare' not associated with a code reference at/); + + eval { $dbh->{prefix} = 2 }; + ok(163, $@ =~ /^Key 'prefix' not associated with a code reference at/); + +} + + +#{ +# # recursion detection in btree +# my %hash ; +# unlink $Dfile; +# my $dbh = new DB_File::BTREEINFO ; +# $dbh->{compare} = sub { $hash{3} = 4 ; length $_[0] } ; +# +# +# my (%h); +# ok(164, tie(%hash, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ); +# +# eval { $hash{1} = 2; +# $hash{4} = 5; +# }; +# +# ok(165, $@ =~ /^DB_File btree_compare: recursion detected/); +# { +# no warnings; +# untie %hash; +# } +# unlink $Dfile; +#} +ok(164,1); +ok(165,1); + +{ + # Check that two callbacks don't interact + my %hash1 ; + my %hash2 ; + my $h1_count = 0; + my $h2_count = 0; + unlink $Dfile, $Dfile2; + my $dbh1 = new DB_File::BTREEINFO ; + $dbh1->{compare} = sub { ++ $h1_count ; $_[0] cmp $_[1] } ; + + my $dbh2 = new DB_File::BTREEINFO ; + $dbh2->{compare} = sub { ;++ $h2_count ; $_[0] cmp $_[1] } ; + + + + my (%h); + ok(166, tie(%hash1, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh1 ) ); + ok(167, tie(%hash2, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) ); + + $hash1{DEFG} = 5; + $hash1{XYZ} = 2; + $hash1{ABCDE} = 5; + + $hash2{defg} = 5; + $hash2{xyz} = 2; + $hash2{abcde} = 5; + + ok(168, $h1_count > 0); + ok(169, $h1_count == $h2_count); + + ok(170, safeUntie \%hash1); + ok(171, safeUntie \%hash2); + unlink $Dfile, $Dfile2; +} + +{ + # Check that DBM Filter can cope with read-only $_ + + use warnings ; + use strict ; + my (%h, $db) ; + unlink $Dfile; + + ok(172, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + + $db->filter_fetch_key (sub { }) ; + $db->filter_store_key (sub { }) ; + $db->filter_fetch_value (sub { }) ; + $db->filter_store_value (sub { }) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + ok(173, $h{"fred"} eq "joe"); + + eval { my @r= grep { $h{$_} } (1, 2, 3) }; + ok (174, ! $@); + + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + $h{"fred"} = "joe" ; + + ok(175, $h{"fred"} eq "joe"); + + ok(176, $db->FIRSTKEY() eq "fred") ; + + eval { my @r= grep { $h{$_} } (1, 2, 3) }; + ok (177, ! $@); + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # Check low-level API works with filter + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(178, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + + + $db->filter_fetch_key (sub { $_ = unpack("i", $_) } ); + $db->filter_store_key (sub { $_ = pack("i", $_) } ); + $db->filter_fetch_value (sub { $_ = unpack("i", $_) } ); + $db->filter_store_value (sub { $_ = pack("i", $_) } ); + + $_ = 'fred'; + + my $key = 22 ; + my $value = 34 ; + + $db->put($key, $value) ; + ok 179, $key == 22; + ok 180, $value == 34 ; + ok 181, $_ eq 'fred'; + #print "k [$key][$value]\n" ; + + my $val ; + $db->get($key, $val) ; + ok 182, $key == 22; + ok 183, $val == 34 ; + ok 184, $_ eq 'fred'; + + $key = 51 ; + $value = 454; + $h{$key} = $value ; + ok 185, $key == 51; + ok 186, $value == 454 ; + ok 187, $_ eq 'fred'; + + undef $db ; + untie %h; + unlink $Dfile; +} + + + +{ + # Regression Test for bug 30237 + # Check that substr can be used in the key to db_put + # and that db_put does not trigger the warning + # + # Use of uninitialized value in subroutine entry + + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(188, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE )); + + my $warned = ''; + local $SIG{__WARN__} = sub {$warned = $_[0]} ; + + # db-put with substr of key + my %remember = () ; + for my $ix ( 10 .. 12 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $db->put(substr($key,0), $value) ; + } + + ok 189, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # db-put with substr of value + $warned = ''; + for my $ix ( 20 .. 22 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $db->put($key, substr($value,0)) ; + } + + ok 190, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied hash is not a problem, but check anyway + # substr of key + $warned = ''; + for my $ix ( 30 .. 32 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $h{substr($key,0)} = $value ; + } + + ok 191, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied hash is not a problem, but check anyway + # substr of value + $warned = ''; + for my $ix ( 40 .. 42 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $h{$key} = substr($value,0) ; + } + + ok 192, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + my %bad = () ; + $key = ''; + for ($status = $db->seq($key, $value, R_FIRST ) ; + $status == 0 ; + $status = $db->seq($key, $value, R_NEXT ) ) { + + #print "# key [$key] value [$value]\n" ; + if (defined $remember{$key} && defined $value && + $remember{$key} eq $value) { + delete $remember{$key} ; + } + else { + $bad{$key} = $value ; + } + } + + ok 193, keys %bad == 0 ; + ok 194, keys %remember == 0 ; + + print "# missing -- $key $value\n" while ($key, $value) = each %remember; + print "# bad -- $key $value\n" while ($key, $value) = each %bad; + + # Make sure this fix does not break code to handle an undef key + # Berkeley DB undef key is bron between versions 2.3.16 and + my $value = 'fred'; + $warned = ''; + $db->put(undef, $value) ; + ok 195, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + my $no_NULL = ($DB_File::db_ver >= 2.003016 && $DB_File::db_ver < 3.001) ; + print "# db_ver $DB_File::db_ver\n"; + $value = '' ; + $db->get(undef, $value) ; + ok 196, $no_NULL || $value eq 'fred' or print "# got [$value]\n" ; + ok 197, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + undef $db ; + untie %h; + unlink $Dfile; +} +exit ; diff --git a/fastSum/resources/ROUGE/DB_File-1.835/t/db-btree.t.bak b/fastSum/resources/ROUGE/DB_File-1.835/t/db-btree.t.bak new file mode 100644 index 0000000000000000000000000000000000000000..fb89a408556fd755027bc9969197b717b5d68b6c --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/t/db-btree.t.bak @@ -0,0 +1,1657 @@ +#!./perl -w + +use warnings; +use strict; +use Config; + +BEGIN { + if(-d "lib" && -f "TEST") { + if ($Config{'extensions'} !~ /\bDB_File\b/ ) { + print "1..0 # Skip: DB_File was not built\n"; + exit 0; + } + } +} + +BEGIN +{ + if ($^O eq 'darwin' + && (split(/\./, $Config{osvers}))[0] < 7 # Mac OS X 10.3 == Darwin 7 + && $Config{db_version_major} == 1 + && $Config{db_version_minor} == 0 + && $Config{db_version_patch} == 0) { + warn < @b ? @b : @a) ; + my $i = 0 ; + + foreach $i ( 0 .. $len -1) { + return $a[$i] - $b[$i] if $a[$i] != $b[$i] ; + } + + return @a - @b ; +} + +{ + package Redirect ; + use Symbol ; + + sub new + { + my $class = shift ; + my $filename = shift ; + my $fh = gensym ; + open ($fh, ">$filename") || die "Cannot open $filename: $!" ; + my $real_stdout = select($fh) ; + return bless [$fh, $real_stdout ] ; + + } + sub DESTROY + { + my $self = shift ; + close $self->[0] ; + select($self->[1]) ; + } +} + +sub docat +{ + my $file = shift; + local $/ = undef ; + open(CAT,$file) || die "Cannot open $file: $!"; + my $result = ; + close(CAT); + $result = normalise($result) ; + return $result ; +} + +sub docat_del +{ + my $file = shift; + my $result = docat($file); + unlink $file ; + return $result ; +} + +sub normalise +{ + my $data = shift ; + $data =~ s#\r\n#\n#g + if $^O eq 'cygwin' ; + + return $data ; +} + +sub safeUntie +{ + my $hashref = shift ; + my $no_inner = 1; + local $SIG{__WARN__} = sub {-- $no_inner } ; + untie %$hashref; + return $no_inner; +} + + + +my $db185mode = ($DB_File::db_version == 1 && ! $DB_File::db_185_compat) ; +my $null_keys_allowed = ($DB_File::db_ver < 2.004010 + || $DB_File::db_ver >= 3.1 ); + +my $Dfile = "dbbtree.tmp"; +unlink $Dfile; + +umask(0); + +# Check the interface to BTREEINFO + +my $dbh = new DB_File::BTREEINFO ; +ok(1, ! defined $dbh->{flags}) ; +ok(2, ! defined $dbh->{cachesize}) ; +ok(3, ! defined $dbh->{psize}) ; +ok(4, ! defined $dbh->{lorder}) ; +ok(5, ! defined $dbh->{minkeypage}) ; +ok(6, ! defined $dbh->{maxkeypage}) ; +ok(7, ! defined $dbh->{compare}) ; +ok(8, ! defined $dbh->{prefix}) ; + +$dbh->{flags} = 3000 ; +ok(9, $dbh->{flags} == 3000) ; + +$dbh->{cachesize} = 9000 ; +ok(10, $dbh->{cachesize} == 9000); + +$dbh->{psize} = 400 ; +ok(11, $dbh->{psize} == 400) ; + +$dbh->{lorder} = 65 ; +ok(12, $dbh->{lorder} == 65) ; + +$dbh->{minkeypage} = 123 ; +ok(13, $dbh->{minkeypage} == 123) ; + +$dbh->{maxkeypage} = 1234 ; +ok(14, $dbh->{maxkeypage} == 1234 ); + +# Check that an invalid entry is caught both for store & fetch +eval '$dbh->{fred} = 1234' ; +ok(15, $@ =~ /^DB_File::BTREEINFO::STORE - Unknown element 'fred' at/ ) ; +eval 'my $q = $dbh->{fred}' ; +ok(16, $@ =~ /^DB_File::BTREEINFO::FETCH - Unknown element 'fred' at/ ) ; + +# Now check the interface to BTREE + +my ($X, %h) ; +ok(17, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE )) ; +die "Could not tie: $!" unless $X; + +my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat($Dfile); + +my %noMode = map { $_, 1} qw( amigaos MSWin32 NetWare cygwin ) ; + +ok(18, ($mode & 0777) == (($^O eq 'os2' || $^O eq 'MacOS') ? 0666 : 0640) + || $noMode{$^O} ); + +my ($key, $value, $i); +while (($key,$value) = each(%h)) { + $i++; +} +ok(19, !$i ) ; + +$h{'goner1'} = 'snork'; + +$h{'abc'} = 'ABC'; +ok(20, $h{'abc'} eq 'ABC' ); +ok(21, ! defined $h{'jimmy'} ) ; +ok(22, ! exists $h{'jimmy'} ) ; +ok(23, defined $h{'abc'} ) ; + +$h{'def'} = 'DEF'; +$h{'jkl','mno'} = "JKL\034MNO"; +$h{'a',2,3,4,5} = join("\034",'A',2,3,4,5); +$h{'a'} = 'A'; + +#$h{'b'} = 'B'; +$X->STORE('b', 'B') ; + +$h{'c'} = 'C'; + +#$h{'d'} = 'D'; +$X->put('d', 'D') ; + +$h{'e'} = 'E'; +$h{'f'} = 'F'; +$h{'g'} = 'X'; +$h{'h'} = 'H'; +$h{'i'} = 'I'; + +$h{'goner2'} = 'snork'; +delete $h{'goner2'}; + + +# IMPORTANT - $X must be undefined before the untie otherwise the +# underlying DB close routine will not get called. +undef $X ; +untie(%h); + +# tie to the same file again +ok(24, $X = tie(%h,'DB_File',$Dfile, O_RDWR, 0640, $DB_BTREE)) ; + +# Modify an entry from the previous tie +$h{'g'} = 'G'; + +$h{'j'} = 'J'; +$h{'k'} = 'K'; +$h{'l'} = 'L'; +$h{'m'} = 'M'; +$h{'n'} = 'N'; +$h{'o'} = 'O'; +$h{'p'} = 'P'; +$h{'q'} = 'Q'; +$h{'r'} = 'R'; +$h{'s'} = 'S'; +$h{'t'} = 'T'; +$h{'u'} = 'U'; +$h{'v'} = 'V'; +$h{'w'} = 'W'; +$h{'x'} = 'X'; +$h{'y'} = 'Y'; +$h{'z'} = 'Z'; + +$h{'goner3'} = 'snork'; + +delete $h{'goner1'}; +$X->DELETE('goner3'); + +my @keys = keys(%h); +my @values = values(%h); + +ok(25, $#keys == 29 && $#values == 29) ; + +$i = 0 ; +while (($key,$value) = each(%h)) { + if ($key eq $keys[$i] && $value eq $values[$i] && $key eq lc($value)) { + $key =~ y/a-z/A-Z/; + $i++ if $key eq $value; + } +} + +ok(26, $i == 30) ; + +@keys = ('blurfl', keys(%h), 'dyick'); +ok(27, $#keys == 31) ; + +#Check that the keys can be retrieved in order +my @b = keys %h ; +my @c = sort lexical @b ; +ok(28, ArrayCompare(\@b, \@c)) ; + +$h{'foo'} = ''; +ok(29, $h{'foo'} eq '' ) ; + +# Berkeley DB from version 2.4.10 to 3.0 does not allow null keys. +# This feature was reenabled in version 3.1 of Berkeley DB. +my $result = 0 ; +if ($null_keys_allowed) { + $h{''} = 'bar'; + $result = ( $h{''} eq 'bar' ); +} +else + { $result = 1 } +ok(30, $result) ; + +# check cache overflow and numeric keys and contents +my $ok = 1; +for ($i = 1; $i < 200; $i++) { $h{$i + 0} = $i + 0; } +for ($i = 1; $i < 200; $i++) { $ok = 0 unless $h{$i} == $i; } +ok(31, $ok); + +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat($Dfile); +ok(32, $size > 0 ); + +@h{0..200} = 200..400; +my @foo = @h{0..200}; +ok(33, join(':',200..400) eq join(':',@foo) ); + +# Now check all the non-tie specific stuff + + +# Check R_NOOVERWRITE flag will make put fail when attempting to overwrite +# an existing record. + +my $status = $X->put( 'x', 'newvalue', R_NOOVERWRITE) ; +ok(34, $status == 1 ); + +# check that the value of the key 'x' has not been changed by the +# previous test +ok(35, $h{'x'} eq 'X' ); + +# standard put +$status = $X->put('key', 'value') ; +ok(36, $status == 0 ); + +#check that previous put can be retrieved +$value = 0 ; +$status = $X->get('key', $value) ; +ok(37, $status == 0 ); +ok(38, $value eq 'value' ); + +# Attempting to delete an existing key should work + +$status = $X->del('q') ; +ok(39, $status == 0 ); +if ($null_keys_allowed) { + $status = $X->del('') ; +} else { + $status = 0 ; +} +ok(40, $status == 0 ); + +# Make sure that the key deleted, cannot be retrieved +ok(41, ! defined $h{'q'}) ; +ok(42, ! defined $h{''}) ; + +undef $X ; +untie %h ; + +ok(43, $X = tie(%h, 'DB_File',$Dfile, O_RDWR, 0640, $DB_BTREE )); + +# Attempting to delete a non-existent key should fail + +$status = $X->del('joe') ; +ok(44, $status == 1 ); + +# Check the get interface + +# First a non-existing key +$status = $X->get('aaaa', $value) ; +ok(45, $status == 1 ); + +# Next an existing key +$status = $X->get('a', $value) ; +ok(46, $status == 0 ); +ok(47, $value eq 'A' ); + +# seq +# ### + +# use seq to find an approximate match +$key = 'ke' ; +$value = '' ; +$status = $X->seq($key, $value, R_CURSOR) ; +ok(48, $status == 0 ); +ok(49, $key eq 'key' ); +ok(50, $value eq 'value' ); + +# seq when the key does not match +$key = 'zzz' ; +$value = '' ; +$status = $X->seq($key, $value, R_CURSOR) ; +ok(51, $status == 1 ); + + +# use seq to set the cursor, then delete the record @ the cursor. + +$key = 'x' ; +$value = '' ; +$status = $X->seq($key, $value, R_CURSOR) ; +ok(52, $status == 0 ); +ok(53, $key eq 'x' ); +ok(54, $value eq 'X' ); +$status = $X->del(0, R_CURSOR) ; +ok(55, $status == 0 ); +$status = $X->get('x', $value) ; +ok(56, $status == 1 ); + +# ditto, but use put to replace the key/value pair. +$key = 'y' ; +$value = '' ; +$status = $X->seq($key, $value, R_CURSOR) ; +ok(57, $status == 0 ); +ok(58, $key eq 'y' ); +ok(59, $value eq 'Y' ); + +$key = "replace key" ; +$value = "replace value" ; +$status = $X->put($key, $value, R_CURSOR) ; +ok(60, $status == 0 ); +ok(61, $key eq 'replace key' ); +ok(62, $value eq 'replace value' ); +$status = $X->get('y', $value) ; +ok(63, 1) ; # hard-wire to always pass. the previous test ($status == 1) + # only worked because of a bug in 1.85/6 + +# use seq to walk forwards through a file + +$status = $X->seq($key, $value, R_FIRST) ; +ok(64, $status == 0 ); +my $previous = $key ; + +$ok = 1 ; +while (($status = $X->seq($key, $value, R_NEXT)) == 0) +{ + ($ok = 0), last if ($previous cmp $key) == 1 ; +} + +ok(65, $status == 1 ); +ok(66, $ok == 1 ); + +# use seq to walk backwards through a file +$status = $X->seq($key, $value, R_LAST) ; +ok(67, $status == 0 ); +$previous = $key ; + +$ok = 1 ; +while (($status = $X->seq($key, $value, R_PREV)) == 0) +{ + ($ok = 0), last if ($previous cmp $key) == -1 ; + #print "key = [$key] value = [$value]\n" ; +} + +ok(68, $status == 1 ); +ok(69, $ok == 1 ); + + +# check seq FIRST/LAST + +# sync +# #### + +$status = $X->sync ; +ok(70, $status == 0 ); + + +# fd +# ## + +$status = $X->fd ; +ok(71, 1 ); +#ok(71, $status != 0 ); + + +undef $X ; +untie %h ; + +unlink $Dfile; + +# Now try an in memory file +my $Y; +ok(72, $Y = tie(%h, 'DB_File',undef, O_RDWR|O_CREAT, 0640, $DB_BTREE )); + +# fd with an in memory file should return failure +$status = $Y->fd ; +ok(73, $status == -1 ); + + +undef $Y ; +untie %h ; + +# Duplicate keys +my $bt = new DB_File::BTREEINFO ; +$bt->{flags} = R_DUP ; +my ($YY, %hh); +ok(74, $YY = tie(%hh, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $bt )) ; + +$hh{'Wall'} = 'Larry' ; +$hh{'Wall'} = 'Stone' ; # Note the duplicate key +$hh{'Wall'} = 'Brick' ; # Note the duplicate key +$hh{'Wall'} = 'Brick' ; # Note the duplicate key and value +$hh{'Smith'} = 'John' ; +$hh{'mouse'} = 'mickey' ; + +# first work in scalar context +ok(75, scalar $YY->get_dup('Unknown') == 0 ); +ok(76, scalar $YY->get_dup('Smith') == 1 ); +ok(77, scalar $YY->get_dup('Wall') == 4 ); + +# now in list context +my @unknown = $YY->get_dup('Unknown') ; +ok(78, "@unknown" eq "" ); + +my @smith = $YY->get_dup('Smith') ; +ok(79, "@smith" eq "John" ); + +{ +my @wall = $YY->get_dup('Wall') ; +my %wall ; +@wall{@wall} = @wall ; +ok(80, (@wall == 4 && $wall{'Larry'} && $wall{'Stone'} && $wall{'Brick'}) ); +} + +# hash +my %unknown = $YY->get_dup('Unknown', 1) ; +ok(81, keys %unknown == 0 ); + +my %smith = $YY->get_dup('Smith', 1) ; +ok(82, keys %smith == 1 && $smith{'John'}) ; + +my %wall = $YY->get_dup('Wall', 1) ; +ok(83, keys %wall == 3 && $wall{'Larry'} == 1 && $wall{'Stone'} == 1 + && $wall{'Brick'} == 2); + +undef $YY ; +untie %hh ; +unlink $Dfile; + + +# test multiple callbacks +my $Dfile1 = "btree1" ; +my $Dfile2 = "btree2" ; +my $Dfile3 = "btree3" ; + +my $dbh1 = new DB_File::BTREEINFO ; +$dbh1->{compare} = sub { + no warnings 'numeric' ; + $_[0] <=> $_[1] } ; + +my $dbh2 = new DB_File::BTREEINFO ; +$dbh2->{compare} = sub { $_[0] cmp $_[1] } ; + +my $dbh3 = new DB_File::BTREEINFO ; +$dbh3->{compare} = sub { length $_[0] <=> length $_[1] } ; + + +my (%g, %k); +tie(%h, 'DB_File',$Dfile1, O_RDWR|O_CREAT, 0640, $dbh1 ) or die $!; +tie(%g, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) or die $!; +tie(%k, 'DB_File',$Dfile3, O_RDWR|O_CREAT, 0640, $dbh3 ) or die $!; + +my @Keys = qw( 0123 12 -1234 9 987654321 def ) ; +my (@srt_1, @srt_2, @srt_3); +{ + no warnings 'numeric' ; + @srt_1 = sort { $a <=> $b } @Keys ; +} +@srt_2 = sort { $a cmp $b } @Keys ; +@srt_3 = sort { length $a <=> length $b } @Keys ; + +foreach (@Keys) { + $h{$_} = 1 ; + $g{$_} = 1 ; + $k{$_} = 1 ; +} + +sub ArrayCompare +{ + my($a, $b) = @_ ; + + return 0 if @$a != @$b ; + + foreach (0 .. @$a - 1) + { + return 0 unless $$a[$_] eq $$b[$_]; + } + + 1 ; +} + +ok(84, ArrayCompare (\@srt_1, [keys %h]) ); +ok(85, ArrayCompare (\@srt_2, [keys %g]) ); +ok(86, ArrayCompare (\@srt_3, [keys %k]) ); + +untie %h ; +untie %g ; +untie %k ; +unlink $Dfile1, $Dfile2, $Dfile3 ; + +# clear +# ##### + +ok(87, tie(%h, 'DB_File', $Dfile1, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); +foreach (1 .. 10) + { $h{$_} = $_ * 100 } + +# check that there are 10 elements in the hash +$i = 0 ; +while (($key,$value) = each(%h)) { + $i++; +} +ok(88, $i == 10); + +# now clear the hash +%h = () ; + +# check it is empty +$i = 0 ; +while (($key,$value) = each(%h)) { + $i++; +} +ok(89, $i == 0); + +untie %h ; +unlink $Dfile1 ; + +{ + # check that attempting to tie an array to a DB_BTREE will fail + + my $filename = "xyz" ; + my @x ; + eval { tie @x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE ; } ; + ok(90, $@ =~ /^DB_File can only tie an associative array to a DB_BTREE database/) ; + unlink $filename ; +} + +{ + # sub-class test + + package Another ; + + use warnings ; + use strict ; + + open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ; + print FILE <<'EOM' ; + + package SubDB ; + + use warnings ; + use strict ; + our (@ISA, @EXPORT); + + require Exporter ; + use DB_File; + @ISA=qw(DB_File); + @EXPORT = @DB_File::EXPORT ; + + sub STORE { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::STORE($key, $value * 2) ; + } + + sub FETCH { + my $self = shift ; + my $key = shift ; + $self->SUPER::FETCH($key) - 1 ; + } + + sub put { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::put($key, $value * 3) ; + } + + sub get { + my $self = shift ; + $self->SUPER::get($_[0], $_[1]) ; + $_[1] -= 2 ; + } + + sub A_new_method + { + my $self = shift ; + my $key = shift ; + my $value = $self->FETCH($key) ; + return "[[$value]]" ; + } + + 1 ; +EOM + + close FILE ; + + BEGIN { push @INC, '.'; } + eval 'use SubDB ; '; + main::ok(91, $@ eq "") ; + my %h ; + my $X ; + eval ' + $X = tie(%h, "SubDB","dbbtree.tmp", O_RDWR|O_CREAT, 0640, $DB_BTREE ); + ' ; + + main::ok(92, $@ eq "") ; + + my $ret = eval '$h{"fred"} = 3 ; return $h{"fred"} ' ; + main::ok(93, $@ eq "") ; + main::ok(94, $ret == 5) ; + + my $value = 0; + $ret = eval '$X->put("joe", 4) ; $X->get("joe", $value) ; return $value' ; + main::ok(95, $@ eq "") ; + main::ok(96, $ret == 10) ; + + $ret = eval ' R_NEXT eq main::R_NEXT ' ; + main::ok(97, $@ eq "" ) ; + main::ok(98, $ret == 1) ; + + $ret = eval '$X->A_new_method("joe") ' ; + main::ok(99, $@ eq "") ; + main::ok(100, $ret eq "[[11]]") ; + + undef $X; + untie(%h); + unlink "SubDB.pm", "dbbtree.tmp" ; + +} + +{ + # DBM Filter tests + use warnings ; + use strict ; + my (%h, $db) ; + my ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + unlink $Dfile; + + sub checkOutput + { + my($fk, $sk, $fv, $sv) = @_ ; + return + $fetch_key eq $fk && $store_key eq $sk && + $fetch_value eq $fv && $store_value eq $sv && + $_ eq 'original' ; + } + + ok(101, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + + $db->filter_fetch_key (sub { $fetch_key = $_ }) ; + $db->filter_store_key (sub { $store_key = $_ }) ; + $db->filter_fetch_value (sub { $fetch_value = $_}) ; + $db->filter_store_value (sub { $store_value = $_ }) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + # fk sk fv sv + ok(102, checkOutput( "", "fred", "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(103, $h{"fred"} eq "joe"); + # fk sk fv sv + ok(104, checkOutput( "", "fred", "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(105, $db->FIRSTKEY() eq "fred") ; + # fk sk fv sv + ok(106, checkOutput( "fred", "", "", "")) ; + + # replace the filters, but remember the previous set + my ($old_fk) = $db->filter_fetch_key + (sub { $_ = uc $_ ; $fetch_key = $_ }) ; + my ($old_sk) = $db->filter_store_key + (sub { $_ = lc $_ ; $store_key = $_ }) ; + my ($old_fv) = $db->filter_fetch_value + (sub { $_ = "[$_]"; $fetch_value = $_ }) ; + my ($old_sv) = $db->filter_store_value + (sub { s/o/x/g; $store_value = $_ }) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"Fred"} = "Joe" ; + # fk sk fv sv + ok(107, checkOutput( "", "fred", "", "Jxe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(108, $h{"Fred"} eq "[Jxe]"); + # fk sk fv sv + ok(109, checkOutput( "", "fred", "[Jxe]", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(110, $db->FIRSTKEY() eq "FRED") ; + # fk sk fv sv + ok(111, checkOutput( "FRED", "", "", "")) ; + + # put the original filters back + $db->filter_fetch_key ($old_fk); + $db->filter_store_key ($old_sk); + $db->filter_fetch_value ($old_fv); + $db->filter_store_value ($old_sv); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"fred"} = "joe" ; + ok(112, checkOutput( "", "fred", "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(113, $h{"fred"} eq "joe"); + ok(114, checkOutput( "", "fred", "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(115, $db->FIRSTKEY() eq "fred") ; + ok(116, checkOutput( "fred", "", "", "")) ; + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"fred"} = "joe" ; + ok(117, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(118, $h{"fred"} eq "joe"); + ok(119, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(120, $db->FIRSTKEY() eq "fred") ; + ok(121, checkOutput( "", "", "", "")) ; + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # DBM Filter with a closure + + use warnings ; + use strict ; + my (%h, $db) ; + + unlink $Dfile; + ok(122, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + + my %result = () ; + + sub Closure + { + my ($name) = @_ ; + my $count = 0 ; + my @kept = () ; + + return sub { ++$count ; + push @kept, $_ ; + $result{$name} = "$name - $count: [@kept]" ; + } + } + + $db->filter_store_key(Closure("store key")) ; + $db->filter_store_value(Closure("store value")) ; + $db->filter_fetch_key(Closure("fetch key")) ; + $db->filter_fetch_value(Closure("fetch value")) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + ok(123, $result{"store key"} eq "store key - 1: [fred]"); + ok(124, $result{"store value"} eq "store value - 1: [joe]"); + ok(125, ! defined $result{"fetch key"} ); + ok(126, ! defined $result{"fetch value"} ); + ok(127, $_ eq "original") ; + + ok(128, $db->FIRSTKEY() eq "fred") ; + ok(129, $result{"store key"} eq "store key - 1: [fred]"); + ok(130, $result{"store value"} eq "store value - 1: [joe]"); + ok(131, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(132, ! defined $result{"fetch value"} ); + ok(133, $_ eq "original") ; + + $h{"jim"} = "john" ; + ok(134, $result{"store key"} eq "store key - 2: [fred jim]"); + ok(135, $result{"store value"} eq "store value - 2: [joe john]"); + ok(136, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(137, ! defined $result{"fetch value"} ); + ok(138, $_ eq "original") ; + + ok(139, $h{"fred"} eq "joe"); + ok(140, $result{"store key"} eq "store key - 3: [fred jim fred]"); + ok(141, $result{"store value"} eq "store value - 2: [joe john]"); + ok(142, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(143, $result{"fetch value"} eq "fetch value - 1: [joe]"); + ok(144, $_ eq "original") ; + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # DBM Filter recursion detection + use warnings ; + use strict ; + my (%h, $db) ; + unlink $Dfile; + + ok(145, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + + $db->filter_store_key (sub { $_ = $h{$_} }) ; + + eval '$h{1} = 1234' ; + ok(146, $@ =~ /^recursion detected in filter_store_key at/ ); + + undef $db ; + untie %h; + unlink $Dfile; +} + + +{ + # Examples from the POD + + + my $file = "xyzt" ; + { + my $redirect = new Redirect $file ; + + # BTREE example 1 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my %h ; + + sub Compare + { + my ($key1, $key2) = @_ ; + "\L$key1" cmp "\L$key2" ; + } + + # specify the Perl sub that will do the comparison + $DB_BTREE->{'compare'} = \&Compare ; + + unlink "tree" ; + tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open file 'tree': $!\n" ; + + # Add a key/value pair to the file + $h{'Wall'} = 'Larry' ; + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + $h{'duck'} = 'donald' ; + + # Delete + delete $h{"duck"} ; + + # Cycle through the keys printing them in order. + # Note it is not necessary to sort the keys as + # the btree will have kept them in order automatically. + foreach (keys %h) + { print "$_\n" } + + untie %h ; + + unlink "tree" ; + } + + delete $DB_BTREE->{'compare'} ; + + ok(147, docat_del($file) eq <<'EOM') ; +mouse +Smith +Wall +EOM + + { + my $redirect = new Redirect $file ; + + # BTREE example 2 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my ($filename, %h); + + $filename = "tree" ; + unlink $filename ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'Wall'} = 'Larry' ; + $h{'Wall'} = 'Brick' ; # Note the duplicate key + $h{'Wall'} = 'Brick' ; # Note the duplicate key and value + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + + # iterate through the associative array + # and print each key/value pair. + foreach (keys %h) + { print "$_ -> $h{$_}\n" } + + untie %h ; + + unlink $filename ; + } + + ok(148, docat_del($file) eq ($db185mode ? <<'EOM' : <<'EOM') ) ; +Smith -> John +Wall -> Brick +Wall -> Brick +Wall -> Brick +mouse -> mickey +EOM +Smith -> John +Wall -> Larry +Wall -> Larry +Wall -> Larry +mouse -> mickey +EOM + + { + my $redirect = new Redirect $file ; + + # BTREE example 3 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $status, $key, $value); + + $filename = "tree" ; + unlink $filename ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'Wall'} = 'Larry' ; + $h{'Wall'} = 'Brick' ; # Note the duplicate key + $h{'Wall'} = 'Brick' ; # Note the duplicate key and value + $h{'Smith'} = 'John' ; + $h{'mouse'} = 'mickey' ; + + # iterate through the btree using seq + # and print each key/value pair. + $key = $value = 0 ; + for ($status = $x->seq($key, $value, R_FIRST) ; + $status == 0 ; + $status = $x->seq($key, $value, R_NEXT) ) + { print "$key -> $value\n" } + + + undef $x ; + untie %h ; + } + + ok(149, docat_del($file) eq ($db185mode == 1 ? <<'EOM' : <<'EOM') ) ; +Smith -> John +Wall -> Brick +Wall -> Brick +Wall -> Larry +mouse -> mickey +EOM +Smith -> John +Wall -> Larry +Wall -> Brick +Wall -> Brick +mouse -> mickey +EOM + + + { + my $redirect = new Redirect $file ; + + # BTREE example 4 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my ($filename, $x, %h); + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + my $cnt = $x->get_dup("Wall") ; + print "Wall occurred $cnt times\n" ; + + my %hash = $x->get_dup("Wall", 1) ; + print "Larry is there\n" if $hash{'Larry'} ; + print "There are $hash{'Brick'} Brick Walls\n" ; + + my @list = sort $x->get_dup("Wall") ; + print "Wall => [@list]\n" ; + + @list = $x->get_dup("Smith") ; + print "Smith => [@list]\n" ; + + @list = $x->get_dup("Dog") ; + print "Dog => [@list]\n" ; + + undef $x ; + untie %h ; + } + + ok(150, docat_del($file) eq <<'EOM') ; +Wall occurred 3 times +Larry is there +There are 2 Brick Walls +Wall => [Brick Brick Larry] +Smith => [John] +Dog => [] +EOM + + { + my $redirect = new Redirect $file ; + + # BTREE example 5 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $found); + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + print "Larry Wall is $found there\n" ; + + $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ; + print "Harry Wall is $found there\n" ; + + undef $x ; + untie %h ; + } + + ok(151, docat_del($file) eq <<'EOM') ; +Larry Wall is there +Harry Wall is not there +EOM + + { + my $redirect = new Redirect $file ; + + # BTREE example 6 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + + my ($filename, $x, %h, $found); + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + $x->del_dup("Wall", "Larry") ; + + $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ; + print "Larry Wall is $found there\n" ; + + undef $x ; + untie %h ; + + unlink $filename ; + } + + ok(152, docat_del($file) eq <<'EOM') ; +Larry Wall is not there +EOM + + { + my $redirect = new Redirect $file ; + + # BTREE example 7 + ### + + use warnings FATAL => qw(all) ; + use strict ; + use DB_File ; + use Fcntl ; + + my ($filename, $x, %h, $st, $key, $value); + + sub match + { + my $key = shift ; + my $value = 0; + my $orig_key = $key ; + $x->seq($key, $value, R_CURSOR) ; + print "$orig_key\t-> $key\t-> $value\n" ; + } + + $filename = "tree" ; + unlink $filename ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + + # Add some key/value pairs to the file + $h{'mouse'} = 'mickey' ; + $h{'Wall'} = 'Larry' ; + $h{'Walls'} = 'Brick' ; + $h{'Smith'} = 'John' ; + + + $key = $value = 0 ; + print "IN ORDER\n" ; + for ($st = $x->seq($key, $value, R_FIRST) ; + $st == 0 ; + $st = $x->seq($key, $value, R_NEXT) ) + + { print "$key -> $value\n" } + + print "\nPARTIAL MATCH\n" ; + + match "Wa" ; + match "A" ; + match "a" ; + + undef $x ; + untie %h ; + + unlink $filename ; + + } + + ok(153, docat_del($file) eq <<'EOM') ; +IN ORDER +Smith -> John +Wall -> Larry +Walls -> Brick +mouse -> mickey + +PARTIAL MATCH +Wa -> Wall -> Larry +A -> Smith -> John +a -> mouse -> mickey +EOM + +} + +#{ +# # R_SETCURSOR +# use strict ; +# my (%h, $db) ; +# unlink $Dfile; +# +# ok(156, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); +# +# $h{abc} = 33 ; +# my $k = "newest" ; +# my $v = 44 ; +# my $status = $db->put($k, $v, R_SETCURSOR) ; +# print "status = [$status]\n" ; +# ok(157, $status == 0) ; +# $status = $db->del($k, R_CURSOR) ; +# print "status = [$status]\n" ; +# ok(158, $status == 0) ; +# $k = "newest" ; +# ok(159, $db->get($k, $v, R_CURSOR)) ; +# +# ok(160, keys %h == 1) ; +# +# undef $db ; +# untie %h; +# unlink $Dfile; +#} + +{ + # Bug ID 20001013.009 + # + # test that $hash{KEY} = undef doesn't produce the warning + # Use of uninitialized value in null operation + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my %h ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + tie %h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_BTREE + or die "Can't open file: $!\n" ; + $h{ABC} = undef; + ok(154, $a eq "") ; + untie %h ; + unlink $Dfile; +} + +{ + # test that %hash = () doesn't produce the warning + # Argument "" isn't numeric in entersub + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my %h ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + tie %h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_BTREE + or die "Can't open file: $!\n" ; + %h = (); ; + ok(155, $a eq "") ; + untie %h ; + unlink $Dfile; +} + +{ + # When iterating over a tied hash using "each", the key passed to FETCH + # will be recycled and passed to NEXTKEY. If a Source Filter modifies the + # key in FETCH via a filter_fetch_key method we need to check that the + # modified key doesn't get passed to NEXTKEY. + # Also Test "keys" & "values" while we are at it. + + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my $bad_key = 0 ; + my %h = () ; + my $db ; + ok(156, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + $db->filter_fetch_key (sub { $_ =~ s/^Beta_/Alpha_/ if defined $_}) ; + $db->filter_store_key (sub { $bad_key = 1 if /^Beta_/ ; $_ =~ s/^Alpha_/Beta_/}) ; + + $h{'Alpha_ABC'} = 2 ; + $h{'Alpha_DEF'} = 5 ; + + ok(157, $h{'Alpha_ABC'} == 2); + ok(158, $h{'Alpha_DEF'} == 5); + + my ($k, $v) = ("",""); + while (($k, $v) = each %h) {} + ok(159, $bad_key == 0); + + $bad_key = 0 ; + foreach $k (keys %h) {} + ok(160, $bad_key == 0); + + $bad_key = 0 ; + foreach $v (values %h) {} + ok(161, $bad_key == 0); + + undef $db ; + untie %h ; + unlink $Dfile; +} + +{ + # now an error to pass 'compare' a non-code reference + my $dbh = new DB_File::BTREEINFO ; + + eval { $dbh->{compare} = 2 }; + ok(162, $@ =~ /^Key 'compare' not associated with a code reference at/); + + eval { $dbh->{prefix} = 2 }; + ok(163, $@ =~ /^Key 'prefix' not associated with a code reference at/); + +} + + +#{ +# # recursion detection in btree +# my %hash ; +# unlink $Dfile; +# my $dbh = new DB_File::BTREEINFO ; +# $dbh->{compare} = sub { $hash{3} = 4 ; length $_[0] } ; +# +# +# my (%h); +# ok(164, tie(%hash, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ); +# +# eval { $hash{1} = 2; +# $hash{4} = 5; +# }; +# +# ok(165, $@ =~ /^DB_File btree_compare: recursion detected/); +# { +# no warnings; +# untie %hash; +# } +# unlink $Dfile; +#} +ok(164,1); +ok(165,1); + +{ + # Check that two callbacks don't interact + my %hash1 ; + my %hash2 ; + my $h1_count = 0; + my $h2_count = 0; + unlink $Dfile, $Dfile2; + my $dbh1 = new DB_File::BTREEINFO ; + $dbh1->{compare} = sub { ++ $h1_count ; $_[0] cmp $_[1] } ; + + my $dbh2 = new DB_File::BTREEINFO ; + $dbh2->{compare} = sub { ;++ $h2_count ; $_[0] cmp $_[1] } ; + + + + my (%h); + ok(166, tie(%hash1, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh1 ) ); + ok(167, tie(%hash2, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) ); + + $hash1{DEFG} = 5; + $hash1{XYZ} = 2; + $hash1{ABCDE} = 5; + + $hash2{defg} = 5; + $hash2{xyz} = 2; + $hash2{abcde} = 5; + + ok(168, $h1_count > 0); + ok(169, $h1_count == $h2_count); + + ok(170, safeUntie \%hash1); + ok(171, safeUntie \%hash2); + unlink $Dfile, $Dfile2; +} + +{ + # Check that DBM Filter can cope with read-only $_ + + use warnings ; + use strict ; + my (%h, $db) ; + unlink $Dfile; + + ok(172, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + + $db->filter_fetch_key (sub { }) ; + $db->filter_store_key (sub { }) ; + $db->filter_fetch_value (sub { }) ; + $db->filter_store_value (sub { }) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + ok(173, $h{"fred"} eq "joe"); + + eval { my @r= grep { $h{$_} } (1, 2, 3) }; + ok (174, ! $@); + + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + $h{"fred"} = "joe" ; + + ok(175, $h{"fred"} eq "joe"); + + ok(176, $db->FIRSTKEY() eq "fred") ; + + eval { my @r= grep { $h{$_} } (1, 2, 3) }; + ok (177, ! $@); + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # Check low-level API works with filter + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(178, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + + + $db->filter_fetch_key (sub { $_ = unpack("i", $_) } ); + $db->filter_store_key (sub { $_ = pack("i", $_) } ); + $db->filter_fetch_value (sub { $_ = unpack("i", $_) } ); + $db->filter_store_value (sub { $_ = pack("i", $_) } ); + + $_ = 'fred'; + + my $key = 22 ; + my $value = 34 ; + + $db->put($key, $value) ; + ok 179, $key == 22; + ok 180, $value == 34 ; + ok 181, $_ eq 'fred'; + #print "k [$key][$value]\n" ; + + my $val ; + $db->get($key, $val) ; + ok 182, $key == 22; + ok 183, $val == 34 ; + ok 184, $_ eq 'fred'; + + $key = 51 ; + $value = 454; + $h{$key} = $value ; + ok 185, $key == 51; + ok 186, $value == 454 ; + ok 187, $_ eq 'fred'; + + undef $db ; + untie %h; + unlink $Dfile; +} + + + +{ + # Regression Test for bug 30237 + # Check that substr can be used in the key to db_put + # and that db_put does not trigger the warning + # + # Use of uninitialized value in subroutine entry + + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(188, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE )); + + my $warned = ''; + local $SIG{__WARN__} = sub {$warned = $_[0]} ; + + # db-put with substr of key + my %remember = () ; + for my $ix ( 10 .. 12 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $db->put(substr($key,0), $value) ; + } + + ok 189, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # db-put with substr of value + $warned = ''; + for my $ix ( 20 .. 22 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $db->put($key, substr($value,0)) ; + } + + ok 190, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied hash is not a problem, but check anyway + # substr of key + $warned = ''; + for my $ix ( 30 .. 32 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $h{substr($key,0)} = $value ; + } + + ok 191, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied hash is not a problem, but check anyway + # substr of value + $warned = ''; + for my $ix ( 40 .. 42 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $h{$key} = substr($value,0) ; + } + + ok 192, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + my %bad = () ; + $key = ''; + for ($status = $db->seq($key, $value, R_FIRST ) ; + $status == 0 ; + $status = $db->seq($key, $value, R_NEXT ) ) { + + #print "# key [$key] value [$value]\n" ; + if (defined $remember{$key} && defined $value && + $remember{$key} eq $value) { + delete $remember{$key} ; + } + else { + $bad{$key} = $value ; + } + } + + ok 193, keys %bad == 0 ; + ok 194, keys %remember == 0 ; + + print "# missing -- $key $value\n" while ($key, $value) = each %remember; + print "# bad -- $key $value\n" while ($key, $value) = each %bad; + + # Make sure this fix does not break code to handle an undef key + # Berkeley DB undef key is bron between versions 2.3.16 and + my $value = 'fred'; + $warned = ''; + $db->put(undef, $value) ; + ok 195, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + my $no_NULL = ($DB_File::db_ver >= 2.003016 && $DB_File::db_ver < 3.001) ; + print "# db_ver $DB_File::db_ver\n"; + $value = '' ; + $db->get(undef, $value) ; + ok 196, $no_NULL || $value eq 'fred' or print "# got [$value]\n" ; + ok 197, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + undef $db ; + untie %h; + unlink $Dfile; +} +exit ; diff --git a/fastSum/resources/ROUGE/DB_File-1.835/t/db-hash.t b/fastSum/resources/ROUGE/DB_File-1.835/t/db-hash.t new file mode 100644 index 0000000000000000000000000000000000000000..f4c8f957b020acc9271ce7c76f12ac6d51278b96 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/t/db-hash.t @@ -0,0 +1,1225 @@ +#!./perl + +use warnings; +use strict; +use Config; + +BEGIN { + if(-d "lib" && -f "TEST") { + if ($Config{'extensions'} !~ /\bDB_File\b/ ) { + print "1..0 # Skip: DB_File was not built\n"; + exit 0; + } + } +} + +use DB_File; +use Fcntl; + +print "1..166\n"; + +unlink glob "__db.*"; + +sub ok +{ + my $no = shift ; + my $result = shift ; + + print "not " unless $result ; + print "ok $no\n" ; + + return $result ; +} + +{ + package Redirect ; + use Symbol ; + + sub new + { + my $class = shift ; + my $filename = shift ; + my $fh = gensym ; + open ($fh, ">$filename") || die "Cannot open $filename: $!" ; + my $real_stdout = select($fh) ; + return bless [$fh, $real_stdout ] ; + + } + sub DESTROY + { + my $self = shift ; + close $self->[0] ; + select($self->[1]) ; + } +} + +sub docat_del +{ + my $file = shift; + local $/ = undef; + open(CAT,$file) || die "Cannot open $file: $!"; + my $result = ; + close(CAT); + $result = normalise($result) ; + unlink $file ; + return $result; +} + +sub normalise +{ + my $data = shift ; + $data =~ s#\r\n#\n#g + if $^O eq 'cygwin' ; + return $data ; +} + +sub safeUntie +{ + my $hashref = shift ; + my $no_inner = 1; + local $SIG{__WARN__} = sub {-- $no_inner } ; + untie %$hashref; + return $no_inner; +} + + +my $Dfile = "dbhash.tmp"; +my $Dfile2 = "dbhash2.tmp"; +my $null_keys_allowed = ($DB_File::db_ver < 2.004010 + || $DB_File::db_ver >= 3.1 ); + +unlink $Dfile; + +umask(0); + +# Check the interface to HASHINFO + +my $dbh = new DB_File::HASHINFO ; + +ok(1, ! defined $dbh->{bsize}) ; +ok(2, ! defined $dbh->{ffactor}) ; +ok(3, ! defined $dbh->{nelem}) ; +ok(4, ! defined $dbh->{cachesize}) ; +ok(5, ! defined $dbh->{hash}) ; +ok(6, ! defined $dbh->{lorder}) ; + +$dbh->{bsize} = 3000 ; +ok(7, $dbh->{bsize} == 3000 ); + +$dbh->{ffactor} = 9000 ; +ok(8, $dbh->{ffactor} == 9000 ); + +$dbh->{nelem} = 400 ; +ok(9, $dbh->{nelem} == 400 ); + +$dbh->{cachesize} = 65 ; +ok(10, $dbh->{cachesize} == 65 ); + +my $some_sub = sub {} ; +$dbh->{hash} = $some_sub; +ok(11, $dbh->{hash} eq $some_sub ); + +$dbh->{lorder} = 1234 ; +ok(12, $dbh->{lorder} == 1234 ); + +# Check that an invalid entry is caught both for store & fetch +eval '$dbh->{fred} = 1234' ; +ok(13, $@ =~ /^DB_File::HASHINFO::STORE - Unknown element 'fred' at/ ); +eval 'my $q = $dbh->{fred}' ; +ok(14, $@ =~ /^DB_File::HASHINFO::FETCH - Unknown element 'fred' at/ ); + + +# Now check the interface to HASH +my ($X, %h); +ok(15, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); +die "Could not tie: $!" unless $X; + +my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat($Dfile); + +my %noMode = map { $_, 1} qw( amigaos MSWin32 NetWare cygwin ) ; + +ok(16, ($mode & 0777) == (($^O eq 'os2' || $^O eq 'MacOS') ? 0666 : 0640) || + $noMode{$^O} ); + +my ($key, $value, $i); +while (($key,$value) = each(%h)) { + $i++; +} +ok(17, !$i ); + +$h{'goner1'} = 'snork'; + +$h{'abc'} = 'ABC'; +ok(18, $h{'abc'} eq 'ABC' ); +ok(19, !defined $h{'jimmy'} ); +ok(20, !exists $h{'jimmy'} ); +ok(21, exists $h{'abc'} ); + +$h{'def'} = 'DEF'; +$h{'jkl','mno'} = "JKL\034MNO"; +$h{'a',2,3,4,5} = join("\034",'A',2,3,4,5); +$h{'a'} = 'A'; + +#$h{'b'} = 'B'; +$X->STORE('b', 'B') ; + +$h{'c'} = 'C'; + +#$h{'d'} = 'D'; +$X->put('d', 'D') ; + +$h{'e'} = 'E'; +$h{'f'} = 'F'; +$h{'g'} = 'X'; +$h{'h'} = 'H'; +$h{'i'} = 'I'; + +$h{'goner2'} = 'snork'; +delete $h{'goner2'}; + + +# IMPORTANT - $X must be undefined before the untie otherwise the +# underlying DB close routine will not get called. +undef $X ; +untie(%h); + + +# tie to the same file again, do not supply a type - should default to HASH +ok(22, $X = tie(%h,'DB_File',$Dfile, O_RDWR, 0640) ); + +# Modify an entry from the previous tie +$h{'g'} = 'G'; + +$h{'j'} = 'J'; +$h{'k'} = 'K'; +$h{'l'} = 'L'; +$h{'m'} = 'M'; +$h{'n'} = 'N'; +$h{'o'} = 'O'; +$h{'p'} = 'P'; +$h{'q'} = 'Q'; +$h{'r'} = 'R'; +$h{'s'} = 'S'; +$h{'t'} = 'T'; +$h{'u'} = 'U'; +$h{'v'} = 'V'; +$h{'w'} = 'W'; +$h{'x'} = 'X'; +$h{'y'} = 'Y'; +$h{'z'} = 'Z'; + +$h{'goner3'} = 'snork'; + +delete $h{'goner1'}; +$X->DELETE('goner3'); + +my @keys = keys(%h); +my @values = values(%h); + +ok(23, $#keys == 29 && $#values == 29) ; + +$i = 0 ; +while (($key,$value) = each(%h)) { + if ($key eq $keys[$i] && $value eq $values[$i] && $key eq lc($value)) { + $key =~ y/a-z/A-Z/; + $i++ if $key eq $value; + } +} + +ok(24, $i == 30) ; + +@keys = ('blurfl', keys(%h), 'dyick'); +ok(25, $#keys == 31) ; + +$h{'foo'} = ''; +ok(26, $h{'foo'} eq '' ); + +# Berkeley DB from version 2.4.10 to 3.0 does not allow null keys. +# This feature was reenabled in version 3.1 of Berkeley DB. +my $result = 0 ; +if ($null_keys_allowed) { + $h{''} = 'bar'; + $result = ( $h{''} eq 'bar' ); +} +else + { $result = 1 } +ok(27, $result) ; + +# check cache overflow and numeric keys and contents +my $ok = 1; +for ($i = 1; $i < 200; $i++) { $h{$i + 0} = $i + 0; } +for ($i = 1; $i < 200; $i++) { $ok = 0 unless $h{$i} == $i; } +ok(28, $ok ); + +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat($Dfile); +ok(29, $size > 0 ); + +@h{0..200} = 200..400; +my @foo = @h{0..200}; +ok(30, join(':',200..400) eq join(':',@foo) ); + + +# Now check all the non-tie specific stuff + +# Check NOOVERWRITE will make put fail when attempting to overwrite +# an existing record. + +my $status = $X->put( 'x', 'newvalue', R_NOOVERWRITE) ; +ok(31, $status == 1 ); + +# check that the value of the key 'x' has not been changed by the +# previous test +ok(32, $h{'x'} eq 'X' ); + +# standard put +$status = $X->put('key', 'value') ; +ok(33, $status == 0 ); + +#check that previous put can be retrieved +$value = 0 ; +$status = $X->get('key', $value) ; +ok(34, $status == 0 ); +ok(35, $value eq 'value' ); + +# Attempting to delete an existing key should work + +$status = $X->del('q') ; +ok(36, $status == 0 ); + +# Make sure that the key deleted, cannot be retrieved +{ + no warnings 'uninitialized' ; + ok(37, $h{'q'} eq undef ); +} + +# Attempting to delete a non-existent key should fail + +$status = $X->del('joe') ; +ok(38, $status == 1 ); + +# Check the get interface + +# First a non-existing key +$status = $X->get('aaaa', $value) ; +ok(39, $status == 1 ); + +# Next an existing key +$status = $X->get('a', $value) ; +ok(40, $status == 0 ); +ok(41, $value eq 'A' ); + +# seq +# ### + +# ditto, but use put to replace the key/value pair. + +# use seq to walk backwards through a file - check that this reversed is + +# check seq FIRST/LAST + +# sync +# #### + +$status = $X->sync ; +ok(42, $status == 0 ); + + +# fd +# ## + +$status = $X->fd ; +ok(43, 1 ); +#ok(43, $status != 0 ); + +undef $X ; +untie %h ; + +unlink $Dfile; + +# clear +# ##### + +ok(44, tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); +foreach (1 .. 10) + { $h{$_} = $_ * 100 } + +# check that there are 10 elements in the hash +$i = 0 ; +while (($key,$value) = each(%h)) { + $i++; +} +ok(45, $i == 10); + +# now clear the hash +%h = () ; + +# check it is empty +$i = 0 ; +while (($key,$value) = each(%h)) { + $i++; +} +ok(46, $i == 0); + +untie %h ; +unlink $Dfile ; + + +# Now try an in memory file +ok(47, $X = tie(%h, 'DB_File',undef, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + +# fd with an in memory file should return fail +$status = $X->fd ; +ok(48, $status == -1 ); + +undef $X ; +untie %h ; + +{ + # check ability to override the default hashing + my %x ; + my $filename = "xyz" ; + my $hi = new DB_File::HASHINFO ; + $::count = 0 ; + $hi->{hash} = sub { ++$::count ; length $_[0] } ; + ok(49, tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $hi ) ; + $h{"abc"} = 123 ; + ok(50, $h{"abc"} == 123) ; + untie %x ; + unlink $filename ; + ok(51, $::count >0) ; +} + +{ + # check that attempting to tie an array to a DB_HASH will fail + + my $filename = "xyz" ; + my @x ; + eval { tie @x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $DB_HASH ; } ; + ok(52, $@ =~ /^DB_File can only tie an associative array to a DB_HASH database/) ; + unlink $filename ; +} + +{ + # sub-class test + + package Another ; + + use warnings ; + use strict ; + + open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ; + print FILE <<'EOM' ; + + package SubDB ; + + use warnings ; + use strict ; + our (@ISA, @EXPORT); + + require Exporter ; + use DB_File; + @ISA=qw(DB_File); + @EXPORT = @DB_File::EXPORT ; + + sub STORE { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::STORE($key, $value * 2) ; + } + + sub FETCH { + my $self = shift ; + my $key = shift ; + $self->SUPER::FETCH($key) - 1 ; + } + + sub put { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::put($key, $value * 3) ; + } + + sub get { + my $self = shift ; + $self->SUPER::get($_[0], $_[1]) ; + $_[1] -= 2 ; + } + + sub A_new_method + { + my $self = shift ; + my $key = shift ; + my $value = $self->FETCH($key) ; + return "[[$value]]" ; + } + + 1 ; +EOM + + close FILE ; + + BEGIN { push @INC, '.'; } + eval 'use SubDB ; '; + main::ok(53, $@ eq "") ; + my %h ; + my $X ; + eval ' + $X = tie(%h, "SubDB","dbhash.tmp", O_RDWR|O_CREAT, 0640, $DB_HASH ); + ' ; + + main::ok(54, $@ eq "") ; + + my $ret = eval '$h{"fred"} = 3 ; return $h{"fred"} ' ; + main::ok(55, $@ eq "") ; + main::ok(56, $ret == 5) ; + + my $value = 0; + $ret = eval '$X->put("joe", 4) ; $X->get("joe", $value) ; return $value' ; + main::ok(57, $@ eq "") ; + main::ok(58, $ret == 10) ; + + $ret = eval ' R_NEXT eq main::R_NEXT ' ; + main::ok(59, $@ eq "" ) ; + main::ok(60, $ret == 1) ; + + $ret = eval '$X->A_new_method("joe") ' ; + main::ok(61, $@ eq "") ; + main::ok(62, $ret eq "[[11]]") ; + + undef $X; + untie(%h); + unlink "SubDB.pm", "dbhash.tmp" ; + +} + +{ + # DBM Filter tests + use warnings ; + use strict ; + my (%h, $db) ; + my ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + unlink $Dfile; + + sub checkOutput + { + no warnings 'uninitialized'; + my($fk, $sk, $fv, $sv) = @_ ; + + print "# Fetch Key : expected '$fk' got '$fetch_key'\n" + if $fetch_key ne $fk ; + print "# Fetch Value : expected '$fv' got '$fetch_value'\n" + if $fetch_value ne $fv ; + print "# Store Key : expected '$sk' got '$store_key'\n" + if $store_key ne $sk ; + print "# Store Value : expected '$sv' got '$store_value'\n" + if $store_value ne $sv ; + print "# \$_ : expected 'original' got '$_'\n" + if $_ ne 'original' ; + + return + $fetch_key eq $fk && $store_key eq $sk && + $fetch_value eq $fv && $store_value eq $sv && + $_ eq 'original' ; + } + + ok(63, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + $db->filter_fetch_key (sub { $fetch_key = $_ }) ; + $db->filter_store_key (sub { $store_key = $_ }) ; + $db->filter_fetch_value (sub { $fetch_value = $_}) ; + $db->filter_store_value (sub { $store_value = $_ }) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + # fk sk fv sv + ok(64, checkOutput( "", "fred", "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(65, $h{"fred"} eq "joe"); + # fk sk fv sv + ok(66, checkOutput( "", "fred", "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + my ($k, $v) ; + $k = 'fred'; + ok(67, ! $db->seq($k, $v, R_FIRST) ) ; + ok(68, $k eq "fred") ; + ok(69, $v eq "joe") ; + # fk sk fv sv + ok(70, checkOutput( "fred", "fred", "joe", "")) ; + + # replace the filters, but remember the previous set + my ($old_fk) = $db->filter_fetch_key + (sub { $_ = uc $_ ; $fetch_key = $_ }) ; + my ($old_sk) = $db->filter_store_key + (sub { $_ = lc $_ ; $store_key = $_ }) ; + my ($old_fv) = $db->filter_fetch_value + (sub { $_ = "[$_]"; $fetch_value = $_ }) ; + my ($old_sv) = $db->filter_store_value + (sub { s/o/x/g; $store_value = $_ }) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"Fred"} = "Joe" ; + # fk sk fv sv + ok(71, checkOutput( "", "fred", "", "Jxe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(72, $h{"Fred"} eq "[Jxe]"); + # fk sk fv sv + ok(73, checkOutput( "", "fred", "[Jxe]", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $k = 'Fred'; $v =''; + ok(74, ! $db->seq($k, $v, R_FIRST) ) ; + ok(75, $k eq "FRED") or + print "# k [$k]\n" ; + ok(76, $v eq "[Jxe]") ; + # fk sk fv sv + ok(77, checkOutput( "FRED", "fred", "[Jxe]", "")) ; + + # put the original filters back + $db->filter_fetch_key ($old_fk); + $db->filter_store_key ($old_sk); + $db->filter_fetch_value ($old_fv); + $db->filter_store_value ($old_sv); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"fred"} = "joe" ; + ok(78, checkOutput( "", "fred", "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(79, $h{"fred"} eq "joe"); + ok(80, checkOutput( "", "fred", "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + #ok(77, $db->FIRSTKEY() eq "fred") ; + $k = 'fred'; + ok(81, ! $db->seq($k, $v, R_FIRST) ) ; + ok(82, $k eq "fred") ; + ok(83, $v eq "joe") ; + # fk sk fv sv + ok(84, checkOutput( "fred", "fred", "joe", "")) ; + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"fred"} = "joe" ; + ok(85, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(86, $h{"fred"} eq "joe"); + ok(87, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $k = 'fred'; + ok(88, ! $db->seq($k, $v, R_FIRST) ) ; + ok(89, $k eq "fred") ; + ok(90, $v eq "joe") ; + ok(91, checkOutput( "", "", "", "")) ; + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # DBM Filter with a closure + + use warnings ; + use strict ; + my (%h, $db) ; + + unlink $Dfile; + ok(92, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + my %result = () ; + + sub Closure + { + my ($name) = @_ ; + my $count = 0 ; + my @kept = () ; + + return sub { ++$count ; + push @kept, $_ ; + $result{$name} = "$name - $count: [@kept]" ; + } + } + + $db->filter_store_key(Closure("store key")) ; + $db->filter_store_value(Closure("store value")) ; + $db->filter_fetch_key(Closure("fetch key")) ; + $db->filter_fetch_value(Closure("fetch value")) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + ok(93, $result{"store key"} eq "store key - 1: [fred]"); + ok(94, $result{"store value"} eq "store value - 1: [joe]"); + ok(95, ! defined $result{"fetch key"} ); + ok(96, ! defined $result{"fetch value"} ); + ok(97, $_ eq "original") ; + + ok(98, $db->FIRSTKEY() eq "fred") ; + ok(99, $result{"store key"} eq "store key - 1: [fred]"); + ok(100, $result{"store value"} eq "store value - 1: [joe]"); + ok(101, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(102, ! defined $result{"fetch value"} ); + ok(103, $_ eq "original") ; + + $h{"jim"} = "john" ; + ok(104, $result{"store key"} eq "store key - 2: [fred jim]"); + ok(105, $result{"store value"} eq "store value - 2: [joe john]"); + ok(106, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(107, ! defined $result{"fetch value"} ); + ok(108, $_ eq "original") ; + + ok(109, $h{"fred"} eq "joe"); + ok(110, $result{"store key"} eq "store key - 3: [fred jim fred]"); + ok(111, $result{"store value"} eq "store value - 2: [joe john]"); + ok(112, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(113, $result{"fetch value"} eq "fetch value - 1: [joe]"); + ok(114, $_ eq "original") ; + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # DBM Filter recursion detection + use warnings ; + use strict ; + my (%h, $db) ; + unlink $Dfile; + + ok(115, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + $db->filter_store_key (sub { $_ = $h{$_} }) ; + + eval '$h{1} = 1234' ; + ok(116, $@ =~ /^recursion detected in filter_store_key at/ ); + + undef $db ; + untie %h; + unlink $Dfile; +} + + +{ + # Examples from the POD + + my $file = "xyzt" ; + { + my $redirect = new Redirect $file ; + + use warnings FATAL => qw(all); + use strict ; + use DB_File ; + our (%h, $k, $v); + + unlink "fruit" ; + tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0640, $DB_HASH + or die "Cannot open file 'fruit': $!\n"; + + # Add a few key/value pairs to the file + $h{"apple"} = "red" ; + $h{"orange"} = "orange" ; + $h{"banana"} = "yellow" ; + $h{"tomato"} = "red" ; + + # Check for existence of a key + print "Banana Exists\n\n" if $h{"banana"} ; + + # Delete a key/value pair. + delete $h{"apple"} ; + + # print the contents of the file + while (($k, $v) = each %h) + { print "$k -> $v\n" } + + untie %h ; + + unlink "fruit" ; + } + + ok(117, docat_del($file) eq <<'EOM') ; +Banana Exists + +orange -> orange +tomato -> red +banana -> yellow +EOM + +} + +{ + # Bug ID 20001013.009 + # + # test that $hash{KEY} = undef doesn't produce the warning + # Use of uninitialized value in null operation + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my %h ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + tie %h, 'DB_File', $Dfile or die "Can't open file: $!\n" ; + $h{ABC} = undef; + ok(118, $a eq "") ; + untie %h ; + unlink $Dfile; +} + +{ + # test that %hash = () doesn't produce the warning + # Argument "" isn't numeric in entersub + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my %h ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + tie %h, 'DB_File', $Dfile or die "Can't open file: $!\n" ; + %h = (); ; + ok(119, $a eq "") ; + untie %h ; + unlink $Dfile; +} + +{ + # When iterating over a tied hash using "each", the key passed to FETCH + # will be recycled and passed to NEXTKEY. If a Source Filter modifies the + # key in FETCH via a filter_fetch_key method we need to check that the + # modified key doesn't get passed to NEXTKEY. + # Also Test "keys" & "values" while we are at it. + + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my $bad_key = 0 ; + my %h = () ; + my $db ; + ok(120, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + $db->filter_fetch_key (sub { $_ =~ s/^Beta_/Alpha_/ if defined $_}) ; + $db->filter_store_key (sub { $bad_key = 1 if /^Beta_/ ; $_ =~ s/^Alpha_/Beta_/}) ; + + $h{'Alpha_ABC'} = 2 ; + $h{'Alpha_DEF'} = 5 ; + + ok(121, $h{'Alpha_ABC'} == 2); + ok(122, $h{'Alpha_DEF'} == 5); + + my ($k, $v) = ("",""); + while (($k, $v) = each %h) {} + ok(123, $bad_key == 0); + + $bad_key = 0 ; + foreach $k (keys %h) {} + ok(124, $bad_key == 0); + + $bad_key = 0 ; + foreach $v (values %h) {} + ok(125, $bad_key == 0); + + undef $db ; + untie %h ; + unlink $Dfile; +} + +{ + # now an error to pass 'hash' a non-code reference + my $dbh = new DB_File::HASHINFO ; + + eval { $dbh->{hash} = 2 }; + ok(126, $@ =~ /^Key 'hash' not associated with a code reference at/); + +} + + +#{ +# # recursion detection in hash +# my %hash ; +# my $Dfile = "xxx.db"; +# unlink $Dfile; +# my $dbh = new DB_File::HASHINFO ; +# $dbh->{hash} = sub { $hash{3} = 4 ; length $_[0] } ; +# +# +# ok(127, tie(%hash, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ); +# +# eval { $hash{1} = 2; +# $hash{4} = 5; +# }; +# +# ok(128, $@ =~ /^DB_File hash callback: recursion detected/); +# { +# no warnings; +# untie %hash; +# } +# unlink $Dfile; +#} + +#ok(127, 1); +#ok(128, 1); + +{ + # Check that two hash's don't interact + my %hash1 ; + my %hash2 ; + my $h1_count = 0; + my $h2_count = 0; + unlink $Dfile, $Dfile2; + my $dbh1 = new DB_File::HASHINFO ; + $dbh1->{hash} = sub { ++ $h1_count ; length $_[0] } ; + + my $dbh2 = new DB_File::HASHINFO ; + $dbh2->{hash} = sub { ++ $h2_count ; length $_[0] } ; + + + + my (%h); + ok(127, tie(%hash1, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh1 ) ); + ok(128, tie(%hash2, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) ); + + $hash1{DEFG} = 5; + $hash1{XYZ} = 2; + $hash1{ABCDE} = 5; + + $hash2{defg} = 5; + $hash2{xyz} = 2; + $hash2{abcde} = 5; + + ok(129, $h1_count > 0); + ok(130, $h1_count == $h2_count); + + ok(131, safeUntie \%hash1); + ok(132, safeUntie \%hash2); + unlink $Dfile, $Dfile2; +} + +{ + # Passing undef for flags and/or mode when calling tie could cause + # Use of uninitialized value in subroutine entry + + + my $warn_count = 0 ; + #local $SIG{__WARN__} = sub { ++ $warn_count }; + my %hash1; + unlink $Dfile; + + tie %hash1, 'DB_File',$Dfile, undef; + ok(133, $warn_count == 0); + $warn_count = 0; + untie %hash1; + unlink $Dfile; + tie %hash1, 'DB_File',$Dfile, O_RDWR|O_CREAT, undef; + ok(134, $warn_count == 0); + untie %hash1; + unlink $Dfile; + tie %hash1, 'DB_File',$Dfile, undef, undef; + ok(135, $warn_count == 0); + $warn_count = 0; + + untie %hash1; + unlink $Dfile; +} + +{ + # Check that DBM Filter can cope with read-only $_ + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(136, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + $db->filter_fetch_key (sub { }) ; + $db->filter_store_key (sub { }) ; + $db->filter_fetch_value (sub { }) ; + $db->filter_store_value (sub { }) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + ok(137, $h{"fred"} eq "joe"); + + eval { my @r= grep { $h{$_} } (1, 2, 3) }; + ok (138, ! $@); + + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + $h{"fred"} = "joe" ; + + ok(139, $h{"fred"} eq "joe"); + + ok(140, $db->FIRSTKEY() eq "fred") ; + + eval { my @r= grep { $h{$_} } (1, 2, 3) }; + ok (141, ! $@); + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # Check low-level API works with filter + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(142, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + + $db->filter_fetch_key (sub { $_ = unpack("i", $_) } ); + $db->filter_store_key (sub { $_ = pack("i", $_) } ); + $db->filter_fetch_value (sub { $_ = unpack("i", $_) } ); + $db->filter_store_value (sub { $_ = pack("i", $_) } ); + + $_ = 'fred'; + + my $key = 22 ; + my $value = 34 ; + + $db->put($key, $value) ; + ok 143, $key == 22; + ok 144, $value == 34 ; + ok 145, $_ eq 'fred'; + #print "k [$key][$value]\n" ; + + my $val ; + $db->get($key, $val) ; + ok 146, $key == 22; + ok 147, $val == 34 ; + ok 148, $_ eq 'fred'; + + $key = 51 ; + $value = 454; + $h{$key} = $value ; + ok 149, $key == 51; + ok 150, $value == 454 ; + ok 151, $_ eq 'fred'; + + undef $db ; + untie %h; + unlink $Dfile; +} + + +{ + # Regression Test for bug 30237 + # Check that substr can be used in the key to db_put + # and that db_put does not trigger the warning + # + # Use of uninitialized value in subroutine entry + + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(152, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + my $warned = ''; + local $SIG{__WARN__} = sub {$warned = $_[0]} ; + + # db-put with substr of key + my %remember = () ; + for my $ix ( 1 .. 2 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $db->put(substr($key,0), $value) ; + } + + ok 153, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # db-put with substr of value + $warned = ''; + for my $ix ( 10 .. 12 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $db->put($key, substr($value,0)) ; + } + + ok 154, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied hash is not a problem, but check anyway + # substr of key + $warned = ''; + for my $ix ( 30 .. 32 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $h{substr($key,0)} = $value ; + } + + ok 155, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied hash is not a problem, but check anyway + # substr of value + $warned = ''; + for my $ix ( 40 .. 42 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $h{$key} = substr($value,0) ; + } + + ok 156, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + my %bad = () ; + $key = ''; + for ($status = $db->seq(substr($key,0), substr($value,0), R_FIRST ) ; + $status == 0 ; + $status = $db->seq(substr($key,0), substr($value,0), R_NEXT ) ) { + + #print "# key [$key] value [$value]\n" ; + if (defined $remember{$key} && defined $value && + $remember{$key} eq $value) { + delete $remember{$key} ; + } + else { + $bad{$key} = $value ; + } + } + + ok 157, keys %bad == 0 ; + ok 158, keys %remember == 0 ; + + print "# missing -- $key=>$value\n" while ($key, $value) = each %remember; + print "# bad -- $key=>$value\n" while ($key, $value) = each %bad; + + # Make sure this fix does not break code to handle an undef key + # Berkeley DB undef key is broken between versions 2.3.16 and 3.1 + my $value = 'fred'; + $warned = ''; + $db->put(undef, $value) ; + ok 159, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + my $no_NULL = ($DB_File::db_ver >= 2.003016 && $DB_File::db_ver < 3.001) ; + print "# db_ver $DB_File::db_ver\n"; + $value = '' ; + $db->get(undef, $value) ; + ok 160, $no_NULL || $value eq 'fred' or print "# got [$value]\n" ; + ok 161, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # Check filter + substr + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(162, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + + { + $db->filter_fetch_key (sub { lc $_ } ); + $db->filter_store_key (sub { uc $_ } ); + $db->filter_fetch_value (sub { lc $_ } ); + $db->filter_store_value (sub { uc $_ } ); + } + + $_ = 'fred'; + + # db-put with substr of key + my %remember = () ; + my $status = 0 ; + for my $ix ( 1 .. 2 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $status += $db->put(substr($key,0), substr($value,0)) ; + } + + ok 163, $status == 0 or print "# Status $status\n" ; + + if (1) + { + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + } + + my %bad = () ; + my $key = ''; + my $value = ''; + for ($status = $db->seq($key, $value, R_FIRST ) ; + $status == 0 ; + $status = $db->seq($key, $value, R_NEXT ) ) { + + #print "# key [$key] value [$value]\n" ; + if (defined $remember{$key} && defined $value && + $remember{$key} eq $value) { + delete $remember{$key} ; + } + else { + $bad{$key} = $value ; + } + } + + ok 164, $_ eq 'fred'; + ok 165, keys %bad == 0 ; + ok 166, keys %remember == 0 ; + + print "# missing -- $key $value\n" while ($key, $value) = each %remember; + print "# bad -- $key $value\n" while ($key, $value) = each %bad; + undef $db ; + untie %h; + unlink $Dfile; +} + +exit ; diff --git a/fastSum/resources/ROUGE/DB_File-1.835/t/db-hash.t.bak b/fastSum/resources/ROUGE/DB_File-1.835/t/db-hash.t.bak new file mode 100644 index 0000000000000000000000000000000000000000..f4c8f957b020acc9271ce7c76f12ac6d51278b96 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/t/db-hash.t.bak @@ -0,0 +1,1225 @@ +#!./perl + +use warnings; +use strict; +use Config; + +BEGIN { + if(-d "lib" && -f "TEST") { + if ($Config{'extensions'} !~ /\bDB_File\b/ ) { + print "1..0 # Skip: DB_File was not built\n"; + exit 0; + } + } +} + +use DB_File; +use Fcntl; + +print "1..166\n"; + +unlink glob "__db.*"; + +sub ok +{ + my $no = shift ; + my $result = shift ; + + print "not " unless $result ; + print "ok $no\n" ; + + return $result ; +} + +{ + package Redirect ; + use Symbol ; + + sub new + { + my $class = shift ; + my $filename = shift ; + my $fh = gensym ; + open ($fh, ">$filename") || die "Cannot open $filename: $!" ; + my $real_stdout = select($fh) ; + return bless [$fh, $real_stdout ] ; + + } + sub DESTROY + { + my $self = shift ; + close $self->[0] ; + select($self->[1]) ; + } +} + +sub docat_del +{ + my $file = shift; + local $/ = undef; + open(CAT,$file) || die "Cannot open $file: $!"; + my $result = ; + close(CAT); + $result = normalise($result) ; + unlink $file ; + return $result; +} + +sub normalise +{ + my $data = shift ; + $data =~ s#\r\n#\n#g + if $^O eq 'cygwin' ; + return $data ; +} + +sub safeUntie +{ + my $hashref = shift ; + my $no_inner = 1; + local $SIG{__WARN__} = sub {-- $no_inner } ; + untie %$hashref; + return $no_inner; +} + + +my $Dfile = "dbhash.tmp"; +my $Dfile2 = "dbhash2.tmp"; +my $null_keys_allowed = ($DB_File::db_ver < 2.004010 + || $DB_File::db_ver >= 3.1 ); + +unlink $Dfile; + +umask(0); + +# Check the interface to HASHINFO + +my $dbh = new DB_File::HASHINFO ; + +ok(1, ! defined $dbh->{bsize}) ; +ok(2, ! defined $dbh->{ffactor}) ; +ok(3, ! defined $dbh->{nelem}) ; +ok(4, ! defined $dbh->{cachesize}) ; +ok(5, ! defined $dbh->{hash}) ; +ok(6, ! defined $dbh->{lorder}) ; + +$dbh->{bsize} = 3000 ; +ok(7, $dbh->{bsize} == 3000 ); + +$dbh->{ffactor} = 9000 ; +ok(8, $dbh->{ffactor} == 9000 ); + +$dbh->{nelem} = 400 ; +ok(9, $dbh->{nelem} == 400 ); + +$dbh->{cachesize} = 65 ; +ok(10, $dbh->{cachesize} == 65 ); + +my $some_sub = sub {} ; +$dbh->{hash} = $some_sub; +ok(11, $dbh->{hash} eq $some_sub ); + +$dbh->{lorder} = 1234 ; +ok(12, $dbh->{lorder} == 1234 ); + +# Check that an invalid entry is caught both for store & fetch +eval '$dbh->{fred} = 1234' ; +ok(13, $@ =~ /^DB_File::HASHINFO::STORE - Unknown element 'fred' at/ ); +eval 'my $q = $dbh->{fred}' ; +ok(14, $@ =~ /^DB_File::HASHINFO::FETCH - Unknown element 'fred' at/ ); + + +# Now check the interface to HASH +my ($X, %h); +ok(15, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); +die "Could not tie: $!" unless $X; + +my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat($Dfile); + +my %noMode = map { $_, 1} qw( amigaos MSWin32 NetWare cygwin ) ; + +ok(16, ($mode & 0777) == (($^O eq 'os2' || $^O eq 'MacOS') ? 0666 : 0640) || + $noMode{$^O} ); + +my ($key, $value, $i); +while (($key,$value) = each(%h)) { + $i++; +} +ok(17, !$i ); + +$h{'goner1'} = 'snork'; + +$h{'abc'} = 'ABC'; +ok(18, $h{'abc'} eq 'ABC' ); +ok(19, !defined $h{'jimmy'} ); +ok(20, !exists $h{'jimmy'} ); +ok(21, exists $h{'abc'} ); + +$h{'def'} = 'DEF'; +$h{'jkl','mno'} = "JKL\034MNO"; +$h{'a',2,3,4,5} = join("\034",'A',2,3,4,5); +$h{'a'} = 'A'; + +#$h{'b'} = 'B'; +$X->STORE('b', 'B') ; + +$h{'c'} = 'C'; + +#$h{'d'} = 'D'; +$X->put('d', 'D') ; + +$h{'e'} = 'E'; +$h{'f'} = 'F'; +$h{'g'} = 'X'; +$h{'h'} = 'H'; +$h{'i'} = 'I'; + +$h{'goner2'} = 'snork'; +delete $h{'goner2'}; + + +# IMPORTANT - $X must be undefined before the untie otherwise the +# underlying DB close routine will not get called. +undef $X ; +untie(%h); + + +# tie to the same file again, do not supply a type - should default to HASH +ok(22, $X = tie(%h,'DB_File',$Dfile, O_RDWR, 0640) ); + +# Modify an entry from the previous tie +$h{'g'} = 'G'; + +$h{'j'} = 'J'; +$h{'k'} = 'K'; +$h{'l'} = 'L'; +$h{'m'} = 'M'; +$h{'n'} = 'N'; +$h{'o'} = 'O'; +$h{'p'} = 'P'; +$h{'q'} = 'Q'; +$h{'r'} = 'R'; +$h{'s'} = 'S'; +$h{'t'} = 'T'; +$h{'u'} = 'U'; +$h{'v'} = 'V'; +$h{'w'} = 'W'; +$h{'x'} = 'X'; +$h{'y'} = 'Y'; +$h{'z'} = 'Z'; + +$h{'goner3'} = 'snork'; + +delete $h{'goner1'}; +$X->DELETE('goner3'); + +my @keys = keys(%h); +my @values = values(%h); + +ok(23, $#keys == 29 && $#values == 29) ; + +$i = 0 ; +while (($key,$value) = each(%h)) { + if ($key eq $keys[$i] && $value eq $values[$i] && $key eq lc($value)) { + $key =~ y/a-z/A-Z/; + $i++ if $key eq $value; + } +} + +ok(24, $i == 30) ; + +@keys = ('blurfl', keys(%h), 'dyick'); +ok(25, $#keys == 31) ; + +$h{'foo'} = ''; +ok(26, $h{'foo'} eq '' ); + +# Berkeley DB from version 2.4.10 to 3.0 does not allow null keys. +# This feature was reenabled in version 3.1 of Berkeley DB. +my $result = 0 ; +if ($null_keys_allowed) { + $h{''} = 'bar'; + $result = ( $h{''} eq 'bar' ); +} +else + { $result = 1 } +ok(27, $result) ; + +# check cache overflow and numeric keys and contents +my $ok = 1; +for ($i = 1; $i < 200; $i++) { $h{$i + 0} = $i + 0; } +for ($i = 1; $i < 200; $i++) { $ok = 0 unless $h{$i} == $i; } +ok(28, $ok ); + +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat($Dfile); +ok(29, $size > 0 ); + +@h{0..200} = 200..400; +my @foo = @h{0..200}; +ok(30, join(':',200..400) eq join(':',@foo) ); + + +# Now check all the non-tie specific stuff + +# Check NOOVERWRITE will make put fail when attempting to overwrite +# an existing record. + +my $status = $X->put( 'x', 'newvalue', R_NOOVERWRITE) ; +ok(31, $status == 1 ); + +# check that the value of the key 'x' has not been changed by the +# previous test +ok(32, $h{'x'} eq 'X' ); + +# standard put +$status = $X->put('key', 'value') ; +ok(33, $status == 0 ); + +#check that previous put can be retrieved +$value = 0 ; +$status = $X->get('key', $value) ; +ok(34, $status == 0 ); +ok(35, $value eq 'value' ); + +# Attempting to delete an existing key should work + +$status = $X->del('q') ; +ok(36, $status == 0 ); + +# Make sure that the key deleted, cannot be retrieved +{ + no warnings 'uninitialized' ; + ok(37, $h{'q'} eq undef ); +} + +# Attempting to delete a non-existent key should fail + +$status = $X->del('joe') ; +ok(38, $status == 1 ); + +# Check the get interface + +# First a non-existing key +$status = $X->get('aaaa', $value) ; +ok(39, $status == 1 ); + +# Next an existing key +$status = $X->get('a', $value) ; +ok(40, $status == 0 ); +ok(41, $value eq 'A' ); + +# seq +# ### + +# ditto, but use put to replace the key/value pair. + +# use seq to walk backwards through a file - check that this reversed is + +# check seq FIRST/LAST + +# sync +# #### + +$status = $X->sync ; +ok(42, $status == 0 ); + + +# fd +# ## + +$status = $X->fd ; +ok(43, 1 ); +#ok(43, $status != 0 ); + +undef $X ; +untie %h ; + +unlink $Dfile; + +# clear +# ##### + +ok(44, tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); +foreach (1 .. 10) + { $h{$_} = $_ * 100 } + +# check that there are 10 elements in the hash +$i = 0 ; +while (($key,$value) = each(%h)) { + $i++; +} +ok(45, $i == 10); + +# now clear the hash +%h = () ; + +# check it is empty +$i = 0 ; +while (($key,$value) = each(%h)) { + $i++; +} +ok(46, $i == 0); + +untie %h ; +unlink $Dfile ; + + +# Now try an in memory file +ok(47, $X = tie(%h, 'DB_File',undef, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + +# fd with an in memory file should return fail +$status = $X->fd ; +ok(48, $status == -1 ); + +undef $X ; +untie %h ; + +{ + # check ability to override the default hashing + my %x ; + my $filename = "xyz" ; + my $hi = new DB_File::HASHINFO ; + $::count = 0 ; + $hi->{hash} = sub { ++$::count ; length $_[0] } ; + ok(49, tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $hi ) ; + $h{"abc"} = 123 ; + ok(50, $h{"abc"} == 123) ; + untie %x ; + unlink $filename ; + ok(51, $::count >0) ; +} + +{ + # check that attempting to tie an array to a DB_HASH will fail + + my $filename = "xyz" ; + my @x ; + eval { tie @x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $DB_HASH ; } ; + ok(52, $@ =~ /^DB_File can only tie an associative array to a DB_HASH database/) ; + unlink $filename ; +} + +{ + # sub-class test + + package Another ; + + use warnings ; + use strict ; + + open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ; + print FILE <<'EOM' ; + + package SubDB ; + + use warnings ; + use strict ; + our (@ISA, @EXPORT); + + require Exporter ; + use DB_File; + @ISA=qw(DB_File); + @EXPORT = @DB_File::EXPORT ; + + sub STORE { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::STORE($key, $value * 2) ; + } + + sub FETCH { + my $self = shift ; + my $key = shift ; + $self->SUPER::FETCH($key) - 1 ; + } + + sub put { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::put($key, $value * 3) ; + } + + sub get { + my $self = shift ; + $self->SUPER::get($_[0], $_[1]) ; + $_[1] -= 2 ; + } + + sub A_new_method + { + my $self = shift ; + my $key = shift ; + my $value = $self->FETCH($key) ; + return "[[$value]]" ; + } + + 1 ; +EOM + + close FILE ; + + BEGIN { push @INC, '.'; } + eval 'use SubDB ; '; + main::ok(53, $@ eq "") ; + my %h ; + my $X ; + eval ' + $X = tie(%h, "SubDB","dbhash.tmp", O_RDWR|O_CREAT, 0640, $DB_HASH ); + ' ; + + main::ok(54, $@ eq "") ; + + my $ret = eval '$h{"fred"} = 3 ; return $h{"fred"} ' ; + main::ok(55, $@ eq "") ; + main::ok(56, $ret == 5) ; + + my $value = 0; + $ret = eval '$X->put("joe", 4) ; $X->get("joe", $value) ; return $value' ; + main::ok(57, $@ eq "") ; + main::ok(58, $ret == 10) ; + + $ret = eval ' R_NEXT eq main::R_NEXT ' ; + main::ok(59, $@ eq "" ) ; + main::ok(60, $ret == 1) ; + + $ret = eval '$X->A_new_method("joe") ' ; + main::ok(61, $@ eq "") ; + main::ok(62, $ret eq "[[11]]") ; + + undef $X; + untie(%h); + unlink "SubDB.pm", "dbhash.tmp" ; + +} + +{ + # DBM Filter tests + use warnings ; + use strict ; + my (%h, $db) ; + my ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + unlink $Dfile; + + sub checkOutput + { + no warnings 'uninitialized'; + my($fk, $sk, $fv, $sv) = @_ ; + + print "# Fetch Key : expected '$fk' got '$fetch_key'\n" + if $fetch_key ne $fk ; + print "# Fetch Value : expected '$fv' got '$fetch_value'\n" + if $fetch_value ne $fv ; + print "# Store Key : expected '$sk' got '$store_key'\n" + if $store_key ne $sk ; + print "# Store Value : expected '$sv' got '$store_value'\n" + if $store_value ne $sv ; + print "# \$_ : expected 'original' got '$_'\n" + if $_ ne 'original' ; + + return + $fetch_key eq $fk && $store_key eq $sk && + $fetch_value eq $fv && $store_value eq $sv && + $_ eq 'original' ; + } + + ok(63, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + $db->filter_fetch_key (sub { $fetch_key = $_ }) ; + $db->filter_store_key (sub { $store_key = $_ }) ; + $db->filter_fetch_value (sub { $fetch_value = $_}) ; + $db->filter_store_value (sub { $store_value = $_ }) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + # fk sk fv sv + ok(64, checkOutput( "", "fred", "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(65, $h{"fred"} eq "joe"); + # fk sk fv sv + ok(66, checkOutput( "", "fred", "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + my ($k, $v) ; + $k = 'fred'; + ok(67, ! $db->seq($k, $v, R_FIRST) ) ; + ok(68, $k eq "fred") ; + ok(69, $v eq "joe") ; + # fk sk fv sv + ok(70, checkOutput( "fred", "fred", "joe", "")) ; + + # replace the filters, but remember the previous set + my ($old_fk) = $db->filter_fetch_key + (sub { $_ = uc $_ ; $fetch_key = $_ }) ; + my ($old_sk) = $db->filter_store_key + (sub { $_ = lc $_ ; $store_key = $_ }) ; + my ($old_fv) = $db->filter_fetch_value + (sub { $_ = "[$_]"; $fetch_value = $_ }) ; + my ($old_sv) = $db->filter_store_value + (sub { s/o/x/g; $store_value = $_ }) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"Fred"} = "Joe" ; + # fk sk fv sv + ok(71, checkOutput( "", "fred", "", "Jxe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(72, $h{"Fred"} eq "[Jxe]"); + # fk sk fv sv + ok(73, checkOutput( "", "fred", "[Jxe]", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $k = 'Fred'; $v =''; + ok(74, ! $db->seq($k, $v, R_FIRST) ) ; + ok(75, $k eq "FRED") or + print "# k [$k]\n" ; + ok(76, $v eq "[Jxe]") ; + # fk sk fv sv + ok(77, checkOutput( "FRED", "fred", "[Jxe]", "")) ; + + # put the original filters back + $db->filter_fetch_key ($old_fk); + $db->filter_store_key ($old_sk); + $db->filter_fetch_value ($old_fv); + $db->filter_store_value ($old_sv); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"fred"} = "joe" ; + ok(78, checkOutput( "", "fred", "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(79, $h{"fred"} eq "joe"); + ok(80, checkOutput( "", "fred", "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + #ok(77, $db->FIRSTKEY() eq "fred") ; + $k = 'fred'; + ok(81, ! $db->seq($k, $v, R_FIRST) ) ; + ok(82, $k eq "fred") ; + ok(83, $v eq "joe") ; + # fk sk fv sv + ok(84, checkOutput( "fred", "fred", "joe", "")) ; + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h{"fred"} = "joe" ; + ok(85, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(86, $h{"fred"} eq "joe"); + ok(87, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $k = 'fred'; + ok(88, ! $db->seq($k, $v, R_FIRST) ) ; + ok(89, $k eq "fred") ; + ok(90, $v eq "joe") ; + ok(91, checkOutput( "", "", "", "")) ; + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # DBM Filter with a closure + + use warnings ; + use strict ; + my (%h, $db) ; + + unlink $Dfile; + ok(92, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + my %result = () ; + + sub Closure + { + my ($name) = @_ ; + my $count = 0 ; + my @kept = () ; + + return sub { ++$count ; + push @kept, $_ ; + $result{$name} = "$name - $count: [@kept]" ; + } + } + + $db->filter_store_key(Closure("store key")) ; + $db->filter_store_value(Closure("store value")) ; + $db->filter_fetch_key(Closure("fetch key")) ; + $db->filter_fetch_value(Closure("fetch value")) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + ok(93, $result{"store key"} eq "store key - 1: [fred]"); + ok(94, $result{"store value"} eq "store value - 1: [joe]"); + ok(95, ! defined $result{"fetch key"} ); + ok(96, ! defined $result{"fetch value"} ); + ok(97, $_ eq "original") ; + + ok(98, $db->FIRSTKEY() eq "fred") ; + ok(99, $result{"store key"} eq "store key - 1: [fred]"); + ok(100, $result{"store value"} eq "store value - 1: [joe]"); + ok(101, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(102, ! defined $result{"fetch value"} ); + ok(103, $_ eq "original") ; + + $h{"jim"} = "john" ; + ok(104, $result{"store key"} eq "store key - 2: [fred jim]"); + ok(105, $result{"store value"} eq "store value - 2: [joe john]"); + ok(106, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(107, ! defined $result{"fetch value"} ); + ok(108, $_ eq "original") ; + + ok(109, $h{"fred"} eq "joe"); + ok(110, $result{"store key"} eq "store key - 3: [fred jim fred]"); + ok(111, $result{"store value"} eq "store value - 2: [joe john]"); + ok(112, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(113, $result{"fetch value"} eq "fetch value - 1: [joe]"); + ok(114, $_ eq "original") ; + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # DBM Filter recursion detection + use warnings ; + use strict ; + my (%h, $db) ; + unlink $Dfile; + + ok(115, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + $db->filter_store_key (sub { $_ = $h{$_} }) ; + + eval '$h{1} = 1234' ; + ok(116, $@ =~ /^recursion detected in filter_store_key at/ ); + + undef $db ; + untie %h; + unlink $Dfile; +} + + +{ + # Examples from the POD + + my $file = "xyzt" ; + { + my $redirect = new Redirect $file ; + + use warnings FATAL => qw(all); + use strict ; + use DB_File ; + our (%h, $k, $v); + + unlink "fruit" ; + tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0640, $DB_HASH + or die "Cannot open file 'fruit': $!\n"; + + # Add a few key/value pairs to the file + $h{"apple"} = "red" ; + $h{"orange"} = "orange" ; + $h{"banana"} = "yellow" ; + $h{"tomato"} = "red" ; + + # Check for existence of a key + print "Banana Exists\n\n" if $h{"banana"} ; + + # Delete a key/value pair. + delete $h{"apple"} ; + + # print the contents of the file + while (($k, $v) = each %h) + { print "$k -> $v\n" } + + untie %h ; + + unlink "fruit" ; + } + + ok(117, docat_del($file) eq <<'EOM') ; +Banana Exists + +orange -> orange +tomato -> red +banana -> yellow +EOM + +} + +{ + # Bug ID 20001013.009 + # + # test that $hash{KEY} = undef doesn't produce the warning + # Use of uninitialized value in null operation + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my %h ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + tie %h, 'DB_File', $Dfile or die "Can't open file: $!\n" ; + $h{ABC} = undef; + ok(118, $a eq "") ; + untie %h ; + unlink $Dfile; +} + +{ + # test that %hash = () doesn't produce the warning + # Argument "" isn't numeric in entersub + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my %h ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + tie %h, 'DB_File', $Dfile or die "Can't open file: $!\n" ; + %h = (); ; + ok(119, $a eq "") ; + untie %h ; + unlink $Dfile; +} + +{ + # When iterating over a tied hash using "each", the key passed to FETCH + # will be recycled and passed to NEXTKEY. If a Source Filter modifies the + # key in FETCH via a filter_fetch_key method we need to check that the + # modified key doesn't get passed to NEXTKEY. + # Also Test "keys" & "values" while we are at it. + + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my $bad_key = 0 ; + my %h = () ; + my $db ; + ok(120, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + $db->filter_fetch_key (sub { $_ =~ s/^Beta_/Alpha_/ if defined $_}) ; + $db->filter_store_key (sub { $bad_key = 1 if /^Beta_/ ; $_ =~ s/^Alpha_/Beta_/}) ; + + $h{'Alpha_ABC'} = 2 ; + $h{'Alpha_DEF'} = 5 ; + + ok(121, $h{'Alpha_ABC'} == 2); + ok(122, $h{'Alpha_DEF'} == 5); + + my ($k, $v) = ("",""); + while (($k, $v) = each %h) {} + ok(123, $bad_key == 0); + + $bad_key = 0 ; + foreach $k (keys %h) {} + ok(124, $bad_key == 0); + + $bad_key = 0 ; + foreach $v (values %h) {} + ok(125, $bad_key == 0); + + undef $db ; + untie %h ; + unlink $Dfile; +} + +{ + # now an error to pass 'hash' a non-code reference + my $dbh = new DB_File::HASHINFO ; + + eval { $dbh->{hash} = 2 }; + ok(126, $@ =~ /^Key 'hash' not associated with a code reference at/); + +} + + +#{ +# # recursion detection in hash +# my %hash ; +# my $Dfile = "xxx.db"; +# unlink $Dfile; +# my $dbh = new DB_File::HASHINFO ; +# $dbh->{hash} = sub { $hash{3} = 4 ; length $_[0] } ; +# +# +# ok(127, tie(%hash, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ); +# +# eval { $hash{1} = 2; +# $hash{4} = 5; +# }; +# +# ok(128, $@ =~ /^DB_File hash callback: recursion detected/); +# { +# no warnings; +# untie %hash; +# } +# unlink $Dfile; +#} + +#ok(127, 1); +#ok(128, 1); + +{ + # Check that two hash's don't interact + my %hash1 ; + my %hash2 ; + my $h1_count = 0; + my $h2_count = 0; + unlink $Dfile, $Dfile2; + my $dbh1 = new DB_File::HASHINFO ; + $dbh1->{hash} = sub { ++ $h1_count ; length $_[0] } ; + + my $dbh2 = new DB_File::HASHINFO ; + $dbh2->{hash} = sub { ++ $h2_count ; length $_[0] } ; + + + + my (%h); + ok(127, tie(%hash1, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh1 ) ); + ok(128, tie(%hash2, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) ); + + $hash1{DEFG} = 5; + $hash1{XYZ} = 2; + $hash1{ABCDE} = 5; + + $hash2{defg} = 5; + $hash2{xyz} = 2; + $hash2{abcde} = 5; + + ok(129, $h1_count > 0); + ok(130, $h1_count == $h2_count); + + ok(131, safeUntie \%hash1); + ok(132, safeUntie \%hash2); + unlink $Dfile, $Dfile2; +} + +{ + # Passing undef for flags and/or mode when calling tie could cause + # Use of uninitialized value in subroutine entry + + + my $warn_count = 0 ; + #local $SIG{__WARN__} = sub { ++ $warn_count }; + my %hash1; + unlink $Dfile; + + tie %hash1, 'DB_File',$Dfile, undef; + ok(133, $warn_count == 0); + $warn_count = 0; + untie %hash1; + unlink $Dfile; + tie %hash1, 'DB_File',$Dfile, O_RDWR|O_CREAT, undef; + ok(134, $warn_count == 0); + untie %hash1; + unlink $Dfile; + tie %hash1, 'DB_File',$Dfile, undef, undef; + ok(135, $warn_count == 0); + $warn_count = 0; + + untie %hash1; + unlink $Dfile; +} + +{ + # Check that DBM Filter can cope with read-only $_ + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(136, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + $db->filter_fetch_key (sub { }) ; + $db->filter_store_key (sub { }) ; + $db->filter_fetch_value (sub { }) ; + $db->filter_store_value (sub { }) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + ok(137, $h{"fred"} eq "joe"); + + eval { my @r= grep { $h{$_} } (1, 2, 3) }; + ok (138, ! $@); + + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + $h{"fred"} = "joe" ; + + ok(139, $h{"fred"} eq "joe"); + + ok(140, $db->FIRSTKEY() eq "fred") ; + + eval { my @r= grep { $h{$_} } (1, 2, 3) }; + ok (141, ! $@); + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # Check low-level API works with filter + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(142, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + + $db->filter_fetch_key (sub { $_ = unpack("i", $_) } ); + $db->filter_store_key (sub { $_ = pack("i", $_) } ); + $db->filter_fetch_value (sub { $_ = unpack("i", $_) } ); + $db->filter_store_value (sub { $_ = pack("i", $_) } ); + + $_ = 'fred'; + + my $key = 22 ; + my $value = 34 ; + + $db->put($key, $value) ; + ok 143, $key == 22; + ok 144, $value == 34 ; + ok 145, $_ eq 'fred'; + #print "k [$key][$value]\n" ; + + my $val ; + $db->get($key, $val) ; + ok 146, $key == 22; + ok 147, $val == 34 ; + ok 148, $_ eq 'fred'; + + $key = 51 ; + $value = 454; + $h{$key} = $value ; + ok 149, $key == 51; + ok 150, $value == 454 ; + ok 151, $_ eq 'fred'; + + undef $db ; + untie %h; + unlink $Dfile; +} + + +{ + # Regression Test for bug 30237 + # Check that substr can be used in the key to db_put + # and that db_put does not trigger the warning + # + # Use of uninitialized value in subroutine entry + + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(152, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + my $warned = ''; + local $SIG{__WARN__} = sub {$warned = $_[0]} ; + + # db-put with substr of key + my %remember = () ; + for my $ix ( 1 .. 2 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $db->put(substr($key,0), $value) ; + } + + ok 153, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # db-put with substr of value + $warned = ''; + for my $ix ( 10 .. 12 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $db->put($key, substr($value,0)) ; + } + + ok 154, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied hash is not a problem, but check anyway + # substr of key + $warned = ''; + for my $ix ( 30 .. 32 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $h{substr($key,0)} = $value ; + } + + ok 155, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied hash is not a problem, but check anyway + # substr of value + $warned = ''; + for my $ix ( 40 .. 42 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $h{$key} = substr($value,0) ; + } + + ok 156, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + my %bad = () ; + $key = ''; + for ($status = $db->seq(substr($key,0), substr($value,0), R_FIRST ) ; + $status == 0 ; + $status = $db->seq(substr($key,0), substr($value,0), R_NEXT ) ) { + + #print "# key [$key] value [$value]\n" ; + if (defined $remember{$key} && defined $value && + $remember{$key} eq $value) { + delete $remember{$key} ; + } + else { + $bad{$key} = $value ; + } + } + + ok 157, keys %bad == 0 ; + ok 158, keys %remember == 0 ; + + print "# missing -- $key=>$value\n" while ($key, $value) = each %remember; + print "# bad -- $key=>$value\n" while ($key, $value) = each %bad; + + # Make sure this fix does not break code to handle an undef key + # Berkeley DB undef key is broken between versions 2.3.16 and 3.1 + my $value = 'fred'; + $warned = ''; + $db->put(undef, $value) ; + ok 159, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + my $no_NULL = ($DB_File::db_ver >= 2.003016 && $DB_File::db_ver < 3.001) ; + print "# db_ver $DB_File::db_ver\n"; + $value = '' ; + $db->get(undef, $value) ; + ok 160, $no_NULL || $value eq 'fred' or print "# got [$value]\n" ; + ok 161, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + undef $db ; + untie %h; + unlink $Dfile; +} + +{ + # Check filter + substr + + use warnings ; + use strict ; + my (%h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(162, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + + { + $db->filter_fetch_key (sub { lc $_ } ); + $db->filter_store_key (sub { uc $_ } ); + $db->filter_fetch_value (sub { lc $_ } ); + $db->filter_store_value (sub { uc $_ } ); + } + + $_ = 'fred'; + + # db-put with substr of key + my %remember = () ; + my $status = 0 ; + for my $ix ( 1 .. 2 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$key} = $value ; + $status += $db->put(substr($key,0), substr($value,0)) ; + } + + ok 163, $status == 0 or print "# Status $status\n" ; + + if (1) + { + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + } + + my %bad = () ; + my $key = ''; + my $value = ''; + for ($status = $db->seq($key, $value, R_FIRST ) ; + $status == 0 ; + $status = $db->seq($key, $value, R_NEXT ) ) { + + #print "# key [$key] value [$value]\n" ; + if (defined $remember{$key} && defined $value && + $remember{$key} eq $value) { + delete $remember{$key} ; + } + else { + $bad{$key} = $value ; + } + } + + ok 164, $_ eq 'fred'; + ok 165, keys %bad == 0 ; + ok 166, keys %remember == 0 ; + + print "# missing -- $key $value\n" while ($key, $value) = each %remember; + print "# bad -- $key $value\n" while ($key, $value) = each %bad; + undef $db ; + untie %h; + unlink $Dfile; +} + +exit ; diff --git a/fastSum/resources/ROUGE/DB_File-1.835/t/db-recno.t b/fastSum/resources/ROUGE/DB_File-1.835/t/db-recno.t new file mode 100644 index 0000000000000000000000000000000000000000..bd198dcf2ff0189af0a3ba55ebca31f58cf507c1 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/t/db-recno.t @@ -0,0 +1,1595 @@ +#!./perl -w + +use strict; +use Config; + +BEGIN { + if(-d "lib" && -f "TEST") { + if ($Config{'extensions'} !~ /\bDB_File\b/ ) { + print "1..0 # Skip: DB_File was not built\n"; + exit 0; + } + } +} + +use DB_File; +use Fcntl; +our ($dbh, $Dfile, $bad_ones, $FA); + +# full tied array support started in Perl 5.004_57 +# Double check to see if it is available. + +{ + sub try::TIEARRAY { bless [], "try" } + sub try::FETCHSIZE { $FA = 1 } + $FA = 0 ; + my @a ; + tie @a, 'try' ; + my $a = @a ; +} + + +sub ok +{ + my $no = shift ; + my $result = shift ; + + print "not " unless $result ; + print "ok $no\n" ; + + return $result ; +} + +{ + package Redirect ; + use Symbol ; + + sub new + { + my $class = shift ; + my $filename = shift ; + my $fh = gensym ; + open ($fh, ">$filename") || die "Cannot open $filename: $!" ; + my $real_stdout = select($fh) ; + return bless [$fh, $real_stdout ] ; + + } + sub DESTROY + { + my $self = shift ; + close $self->[0] ; + select($self->[1]) ; + } +} + +sub docat +{ + my $file = shift; + local $/ = undef; + open(CAT,$file) || die "Cannot open $file:$!"; + my $result = ; + close(CAT); + normalise($result) ; + return $result; +} + +sub docat_del +{ + my $file = shift; + my $result = docat($file); + unlink $file ; + return $result; +} + +sub safeUntie +{ + my $hashref = shift ; + my $no_inner = 1; + local $SIG{__WARN__} = sub {-- $no_inner } ; + untie @$hashref; + return $no_inner; +} + +sub bad_one +{ + unless ($bad_ones++) { + print STDERR <{bval}) ; +ok(2, ! defined $dbh->{cachesize}) ; +ok(3, ! defined $dbh->{psize}) ; +ok(4, ! defined $dbh->{flags}) ; +ok(5, ! defined $dbh->{lorder}) ; +ok(6, ! defined $dbh->{reclen}) ; +ok(7, ! defined $dbh->{bfname}) ; + +$dbh->{bval} = 3000 ; +ok(8, $dbh->{bval} == 3000 ); + +$dbh->{cachesize} = 9000 ; +ok(9, $dbh->{cachesize} == 9000 ); + +$dbh->{psize} = 400 ; +ok(10, $dbh->{psize} == 400 ); + +$dbh->{flags} = 65 ; +ok(11, $dbh->{flags} == 65 ); + +$dbh->{lorder} = 123 ; +ok(12, $dbh->{lorder} == 123 ); + +$dbh->{reclen} = 1234 ; +ok(13, $dbh->{reclen} == 1234 ); + +$dbh->{bfname} = 1234 ; +ok(14, $dbh->{bfname} == 1234 ); + + +# Check that an invalid entry is caught both for store & fetch +eval '$dbh->{fred} = 1234' ; +ok(15, $@ =~ /^DB_File::RECNOINFO::STORE - Unknown element 'fred' at/ ); +eval 'my $q = $dbh->{fred}' ; +ok(16, $@ =~ /^DB_File::RECNOINFO::FETCH - Unknown element 'fred' at/ ); + +# Now check the interface to RECNOINFO + +my $X ; +my @h ; +ok(17, $X = tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ; + +my %noMode = map { $_, 1} qw( amigaos MSWin32 NetWare cygwin ) ; + +ok(18, ((stat($Dfile))[2] & 0777) == (($^O eq 'os2' || $^O eq 'MacOS') ? 0666 : 0640) + || $noMode{$^O} ); + +#my $l = @h ; +my $l = $X->length ; +ok(19, ($FA ? @h == 0 : !$l) ); + +my @data = qw( a b c d ever f g h i j k longername m n o p) ; + +$h[0] = shift @data ; +ok(20, $h[0] eq 'a' ); + +my $ i; +foreach (@data) + { $h[++$i] = $_ } + +unshift (@data, 'a') ; + +ok(21, defined $h[1] ); +ok(22, ! defined $h[16] ); +ok(23, $FA ? @h == @data : $X->length == @data ); + + +# Overwrite an entry & check fetch it +$h[3] = 'replaced' ; +$data[3] = 'replaced' ; +ok(24, $h[3] eq 'replaced' ); + +#PUSH +my @push_data = qw(added to the end) ; +($FA ? push(@h, @push_data) : $X->push(@push_data)) ; +push (@data, @push_data) ; +ok(25, $h[++$i] eq 'added' ); +ok(26, $h[++$i] eq 'to' ); +ok(27, $h[++$i] eq 'the' ); +ok(28, $h[++$i] eq 'end' ); + +# POP +my $popped = pop (@data) ; +my $value = ($FA ? pop @h : $X->pop) ; +ok(29, $value eq $popped) ; + +# SHIFT +$value = ($FA ? shift @h : $X->shift) ; +my $shifted = shift @data ; +ok(30, $value eq $shifted ); + +# UNSHIFT + +# empty list +($FA ? unshift @h,() : $X->unshift) ; +ok(31, ($FA ? @h == @data : $X->length == @data )); + +my @new_data = qw(add this to the start of the array) ; +$FA ? unshift (@h, @new_data) : $X->unshift (@new_data) ; +unshift (@data, @new_data) ; +ok(32, $FA ? @h == @data : $X->length == @data ); +ok(33, $h[0] eq "add") ; +ok(34, $h[1] eq "this") ; +ok(35, $h[2] eq "to") ; +ok(36, $h[3] eq "the") ; +ok(37, $h[4] eq "start") ; +ok(38, $h[5] eq "of") ; +ok(39, $h[6] eq "the") ; +ok(40, $h[7] eq "array") ; +ok(41, $h[8] eq $data[8]) ; + +# Brief test for SPLICE - more thorough 'soak test' is later. +my @old; +if ($FA) { + @old = splice(@h, 1, 2, qw(bananas just before)); +} +else { + @old = $X->splice(1, 2, qw(bananas just before)); +} +ok(42, $h[0] eq "add") ; +ok(43, $h[1] eq "bananas") ; +ok(44, $h[2] eq "just") ; +ok(45, $h[3] eq "before") ; +ok(46, $h[4] eq "the") ; +ok(47, $h[5] eq "start") ; +ok(48, $h[6] eq "of") ; +ok(49, $h[7] eq "the") ; +ok(50, $h[8] eq "array") ; +ok(51, $h[9] eq $data[8]) ; +$FA ? splice(@h, 1, 3, @old) : $X->splice(1, 3, @old); + +# Now both arrays should be identical + +my $ok = 1 ; +my $j = 0 ; +foreach (@data) +{ + $ok = 0, last if $_ ne $h[$j ++] ; +} +ok(52, $ok ); + +# Neagtive subscripts + +# get the last element of the array +ok(53, $h[-1] eq $data[-1] ); +ok(54, $h[-1] eq $h[ ($FA ? @h : $X->length) -1] ); + +# get the first element using a negative subscript +eval '$h[ - ( $FA ? @h : $X->length)] = "abcd"' ; +ok(55, $@ eq "" ); +ok(56, $h[0] eq "abcd" ); + +# now try to read before the start of the array +eval '$h[ - (1 + ($FA ? @h : $X->length))] = 1234' ; +ok(57, $@ =~ '^Modification of non-creatable array value attempted' ); + +# IMPORTANT - $X must be undefined before the untie otherwise the +# underlying DB close routine will not get called. +undef $X ; +ok(58, safeUntie \@h); + +unlink $Dfile; + + +{ + # Check bval defaults to \n + + my @h = () ; + my $dbh = new DB_File::RECNOINFO ; + ok(59, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + $h[0] = "abc" ; + $h[1] = "def" ; + $h[3] = "ghi" ; + ok(60, safeUntie \@h); + my $x = docat($Dfile) ; + unlink $Dfile; + ok(61, $x eq "abc\ndef\n\nghi\n") ; +} + +{ + # Change bval + + my @h = () ; + my $dbh = new DB_File::RECNOINFO ; + $dbh->{bval} = "-" ; + ok(62, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + $h[0] = "abc" ; + $h[1] = "def" ; + $h[3] = "ghi" ; + ok(63, safeUntie \@h); + my $x = docat($Dfile) ; + unlink $Dfile; + my $ok = ($x eq "abc-def--ghi-") ; + bad_one() unless $ok ; + ok(64, $ok) ; +} + +{ + # Check R_FIXEDLEN with default bval (space) + + my @h = () ; + my $dbh = new DB_File::RECNOINFO ; + $dbh->{flags} = R_FIXEDLEN ; + $dbh->{reclen} = 5 ; + ok(65, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + $h[0] = "abc" ; + $h[1] = "def" ; + $h[3] = "ghi" ; + ok(66, safeUntie \@h); + my $x = docat($Dfile) ; + unlink $Dfile; + my $ok = ($x eq "abc def ghi ") ; + bad_one() unless $ok ; + ok(67, $ok) ; +} + +{ + # Check R_FIXEDLEN with user-defined bval + + my @h = () ; + my $dbh = new DB_File::RECNOINFO ; + $dbh->{flags} = R_FIXEDLEN ; + $dbh->{bval} = "-" ; + $dbh->{reclen} = 5 ; + ok(68, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + $h[0] = "abc" ; + $h[1] = "def" ; + $h[3] = "ghi" ; + ok(69, safeUntie \@h); + my $x = docat($Dfile) ; + unlink $Dfile; + my $ok = ($x eq "abc--def-------ghi--") ; + bad_one() unless $ok ; + ok(70, $ok) ; +} + +{ + # check that attempting to tie an associative array to a DB_RECNO will fail + + my $filename = "xyz" ; + my %x ; + eval { tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO ; } ; + ok(71, $@ =~ /^DB_File can only tie an array to a DB_RECNO database/) ; + unlink $filename ; +} + +{ + # sub-class test + + package Another ; + + use warnings ; + use strict ; + + open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ; + print FILE <<'EOM' ; + + package SubDB ; + + use warnings ; + use strict ; + our (@ISA, @EXPORT); + + require Exporter ; + use DB_File; + @ISA=qw(DB_File); + @EXPORT = @DB_File::EXPORT ; + + sub STORE { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::STORE($key, $value * 2) ; + } + + sub FETCH { + my $self = shift ; + my $key = shift ; + $self->SUPER::FETCH($key) - 1 ; + } + + sub put { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::put($key, $value * 3) ; + } + + sub get { + my $self = shift ; + $self->SUPER::get($_[0], $_[1]) ; + $_[1] -= 2 ; + } + + sub A_new_method + { + my $self = shift ; + my $key = shift ; + my $value = $self->FETCH($key) ; + return "[[$value]]" ; + } + + 1 ; +EOM + + close FILE or die "Could not close: $!"; + + BEGIN { push @INC, '.'; } + eval 'use SubDB ; '; + main::ok(72, $@ eq "") ; + my @h ; + my $X ; + eval ' + $X = tie(@h, "SubDB","recno.tmp", O_RDWR|O_CREAT, 0640, $DB_RECNO ); + ' ; + die "Could not tie: $!" unless $X; + + main::ok(73, $@ eq "") ; + + my $ret = eval '$h[3] = 3 ; return $h[3] ' ; + main::ok(74, $@ eq "") ; + main::ok(75, $ret == 5) ; + + my $value = 0; + $ret = eval '$X->put(1, 4) ; $X->get(1, $value) ; return $value' ; + main::ok(76, $@ eq "") ; + main::ok(77, $ret == 10) ; + + $ret = eval ' R_NEXT eq main::R_NEXT ' ; + main::ok(78, $@ eq "" ) ; + main::ok(79, $ret == 1) ; + + $ret = eval '$X->A_new_method(1) ' ; + main::ok(80, $@ eq "") ; + main::ok(81, $ret eq "[[11]]") ; + + undef $X; + main::ok(82, main::safeUntie \@h); + unlink "SubDB.pm", "recno.tmp" ; + +} + +{ + + # test $# + my $self ; + unlink $Dfile; + ok(83, $self = tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ; + $h[0] = "abc" ; + $h[1] = "def" ; + $h[2] = "ghi" ; + $h[3] = "jkl" ; + ok(84, $FA ? $#h == 3 : $self->length() == 4) ; + undef $self ; + ok(85, safeUntie \@h); + my $x = docat($Dfile) ; + ok(86, $x eq "abc\ndef\nghi\njkl\n") ; + + # $# sets array to same length + $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ; + ok(87, $self) + or warn "# $DB_File::Error\n"; + if ($FA) + { $#h = 3 } + else + { $self->STORESIZE(4) } + ok(88, $FA ? $#h == 3 : $self->length() == 4) ; + undef $self ; + ok(89, safeUntie \@h); + $x = docat($Dfile) ; + ok(90, $x eq "abc\ndef\nghi\njkl\n") ; + + # $# sets array to bigger + ok(91, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; + if ($FA) + { $#h = 6 } + else + { $self->STORESIZE(7) } + ok(92, $FA ? $#h == 6 : $self->length() == 7) ; + undef $self ; + ok(93, safeUntie \@h); + $x = docat($Dfile) ; + ok(94, $x eq "abc\ndef\nghi\njkl\n\n\n\n") ; + + # $# sets array smaller + ok(95, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; + if ($FA) + { $#h = 2 } + else + { $self->STORESIZE(3) } + ok(96, $FA ? $#h == 2 : $self->length() == 3) ; + undef $self ; + ok(97, safeUntie \@h); + $x = docat($Dfile) ; + ok(98, $x eq "abc\ndef\nghi\n") ; + + unlink $Dfile; + + +} + +{ + # DBM Filter tests + use warnings ; + use strict ; + my (@h, $db) ; + my ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + unlink $Dfile; + + sub checkOutput + { + my($fk, $sk, $fv, $sv) = @_ ; + + print "# Fetch Key : expected '$fk' got '$fetch_key'\n" + if $fetch_key ne $fk ; + print "# Fetch Value : expected '$fv' got '$fetch_value'\n" + if $fetch_value ne $fv ; + print "# Store Key : expected '$sk' got '$store_key'\n" + if $store_key ne $sk ; + print "# Store Value : expected '$sv' got '$store_value'\n" + if $store_value ne $sv ; + print "# \$_ : expected 'original' got '$_'\n" + if $_ ne 'original' ; + + return + $fetch_key eq $fk && $store_key eq $sk && + $fetch_value eq $fv && $store_value eq $sv && + $_ eq 'original' ; + } + + ok(99, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + + $db->filter_fetch_key (sub { $fetch_key = $_ }) ; + $db->filter_store_key (sub { $store_key = $_ }) ; + $db->filter_fetch_value (sub { $fetch_value = $_}) ; + $db->filter_store_value (sub { $store_value = $_ }) ; + + $_ = "original" ; + + $h[0] = "joe" ; + # fk sk fv sv + ok(100, checkOutput( "", 0, "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(101, $h[0] eq "joe"); + # fk sk fv sv + ok(102, checkOutput( "", 0, "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(103, $db->FIRSTKEY() == 0) ; + # fk sk fv sv + ok(104, checkOutput( 0, "", "", "")) ; + + # replace the filters, but remember the previous set + my ($old_fk) = $db->filter_fetch_key + (sub { ++ $_ ; $fetch_key = $_ }) ; + my ($old_sk) = $db->filter_store_key + (sub { $_ *= 2 ; $store_key = $_ }) ; + my ($old_fv) = $db->filter_fetch_value + (sub { $_ = "[$_]"; $fetch_value = $_ }) ; + my ($old_sv) = $db->filter_store_value + (sub { s/o/x/g; $store_value = $_ }) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h[1] = "Joe" ; + # fk sk fv sv + ok(105, checkOutput( "", 2, "", "Jxe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(106, $h[1] eq "[Jxe]"); + # fk sk fv sv + ok(107, checkOutput( "", 2, "[Jxe]", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(108, $db->FIRSTKEY() == 1) ; + # fk sk fv sv + ok(109, checkOutput( 1, "", "", "")) ; + + # put the original filters back + $db->filter_fetch_key ($old_fk); + $db->filter_store_key ($old_sk); + $db->filter_fetch_value ($old_fv); + $db->filter_store_value ($old_sv); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h[0] = "joe" ; + ok(110, checkOutput( "", 0, "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(111, $h[0] eq "joe"); + ok(112, checkOutput( "", 0, "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(113, $db->FIRSTKEY() == 0) ; + ok(114, checkOutput( 0, "", "", "")) ; + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h[0] = "joe" ; + ok(115, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(116, $h[0] eq "joe"); + ok(117, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(118, $db->FIRSTKEY() == 0) ; + ok(119, checkOutput( "", "", "", "")) ; + + undef $db ; + ok(120, safeUntie \@h); + unlink $Dfile; +} + +{ + # DBM Filter with a closure + + use warnings ; + use strict ; + my (@h, $db) ; + + unlink $Dfile; + ok(121, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + + my %result = () ; + + sub Closure + { + my ($name) = @_ ; + my $count = 0 ; + my @kept = () ; + + return sub { ++$count ; + push @kept, $_ ; + $result{$name} = "$name - $count: [@kept]" ; + } + } + + $db->filter_store_key(Closure("store key")) ; + $db->filter_store_value(Closure("store value")) ; + $db->filter_fetch_key(Closure("fetch key")) ; + $db->filter_fetch_value(Closure("fetch value")) ; + + $_ = "original" ; + + $h[0] = "joe" ; + ok(122, $result{"store key"} eq "store key - 1: [0]"); + ok(123, $result{"store value"} eq "store value - 1: [joe]"); + ok(124, ! defined $result{"fetch key"} ); + ok(125, ! defined $result{"fetch value"} ); + ok(126, $_ eq "original") ; + + ok(127, $db->FIRSTKEY() == 0 ) ; + ok(128, $result{"store key"} eq "store key - 1: [0]"); + ok(129, $result{"store value"} eq "store value - 1: [joe]"); + ok(130, $result{"fetch key"} eq "fetch key - 1: [0]"); + ok(131, ! defined $result{"fetch value"} ); + ok(132, $_ eq "original") ; + + $h[7] = "john" ; + ok(133, $result{"store key"} eq "store key - 2: [0 7]"); + ok(134, $result{"store value"} eq "store value - 2: [joe john]"); + ok(135, $result{"fetch key"} eq "fetch key - 1: [0]"); + ok(136, ! defined $result{"fetch value"} ); + ok(137, $_ eq "original") ; + + ok(138, $h[0] eq "joe"); + ok(139, $result{"store key"} eq "store key - 3: [0 7 0]"); + ok(140, $result{"store value"} eq "store value - 2: [joe john]"); + ok(141, $result{"fetch key"} eq "fetch key - 1: [0]"); + ok(142, $result{"fetch value"} eq "fetch value - 1: [joe]"); + ok(143, $_ eq "original") ; + + undef $db ; + ok(144, safeUntie \@h); + unlink $Dfile; +} + +{ + # DBM Filter recursion detection + use warnings ; + use strict ; + my (@h, $db) ; + unlink $Dfile; + + ok(145, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + + $db->filter_store_key (sub { $_ = $h[0] }) ; + + eval '$h[1] = 1234' ; + ok(146, $@ =~ /^recursion detected in filter_store_key at/ ); + + undef $db ; + ok(147, safeUntie \@h); + unlink $Dfile; +} + + +{ + # Examples from the POD + + my $file = "xyzt" ; + { + my $redirect = new Redirect $file ; + + use warnings FATAL => qw(all); + use strict ; + use DB_File ; + + my $filename = "text" ; + unlink $filename ; + + my @h ; + my $x = tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO + or die "Cannot open file 'text': $!\n" ; + + # Add a few key/value pairs to the file + $h[0] = "orange" ; + $h[1] = "blue" ; + $h[2] = "yellow" ; + + $FA ? push @h, "green", "black" + : $x->push("green", "black") ; + + my $elements = $FA ? scalar @h : $x->length ; + print "The array contains $elements entries\n" ; + + my $last = $FA ? pop @h : $x->pop ; + print "popped $last\n" ; + + $FA ? unshift @h, "white" + : $x->unshift("white") ; + my $first = $FA ? shift @h : $x->shift ; + print "shifted $first\n" ; + + # Check for existence of a key + print "Element 1 Exists with value $h[1]\n" if $h[1] ; + + # use a negative index + print "The last element is $h[-1]\n" ; + print "The 2nd last element is $h[-2]\n" ; + + undef $x ; + untie @h ; + + unlink $filename ; + } + + ok(148, docat_del($file) eq <<'EOM') ; +The array contains 5 entries +popped black +shifted white +Element 1 Exists with value blue +The last element is green +The 2nd last element is yellow +EOM + + my $save_output = "xyzt" ; + { + my $redirect = new Redirect $save_output ; + + use warnings FATAL => qw(all); + use strict ; + our (@h, $H, $file, $i); + use DB_File ; + use Fcntl ; + + $file = "text" ; + + unlink $file ; + + $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0640, $DB_RECNO + or die "Cannot open file $file: $!\n" ; + + # first create a text file to play with + $h[0] = "zero" ; + $h[1] = "one" ; + $h[2] = "two" ; + $h[3] = "three" ; + $h[4] = "four" ; + + + # Print the records in order. + # + # The length method is needed here because evaluating a tied + # array in a scalar context does not return the number of + # elements in the array. + + print "\nORIGINAL\n" ; + foreach $i (0 .. $H->length - 1) { + print "$i: $h[$i]\n" ; + } + + # use the push & pop methods + $a = $H->pop ; + $H->push("last") ; + print "\nThe last record was [$a]\n" ; + + # and the shift & unshift methods + $a = $H->shift ; + $H->unshift("first") ; + print "The first record was [$a]\n" ; + + # Use the API to add a new record after record 2. + $i = 2 ; + $H->put($i, "Newbie", R_IAFTER) ; + + # and a new record before record 1. + $i = 1 ; + $H->put($i, "New One", R_IBEFORE) ; + + # delete record 3 + $H->del(3) ; + + # now print the records in reverse order + print "\nREVERSE\n" ; + for ($i = $H->length - 1 ; $i >= 0 ; -- $i) + { print "$i: $h[$i]\n" } + + # same again, but use the API functions instead + print "\nREVERSE again\n" ; + my ($s, $k, $v) = (0, 0, 0) ; + for ($s = $H->seq($k, $v, R_LAST) ; + $s == 0 ; + $s = $H->seq($k, $v, R_PREV)) + { print "$k: $v\n" } + + undef $H ; + untie @h ; + + unlink $file ; + } + + ok(149, docat_del($save_output) eq <<'EOM') ; + +ORIGINAL +0: zero +1: one +2: two +3: three +4: four + +The last record was [four] +The first record was [zero] + +REVERSE +5: last +4: three +3: Newbie +2: one +1: New One +0: first + +REVERSE again +5: last +4: three +3: Newbie +2: one +1: New One +0: first +EOM + +} + +{ + # Bug ID 20001013.009 + # + # test that $hash{KEY} = undef doesn't produce the warning + # Use of uninitialized value in null operation + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my @h ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO + or die "Can't open file: $!\n" ; + $h[0] = undef; + ok(150, $a eq "") ; + ok(151, safeUntie \@h); + unlink $Dfile; +} + +{ + # test that %hash = () doesn't produce the warning + # Argument "" isn't numeric in entersub + use warnings ; + use strict ; + use DB_File ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + unlink $Dfile; + my @h ; + + tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO + or die "Can't open file: $!\n" ; + @h = (); ; + ok(152, $a eq "") ; + ok(153, safeUntie \@h); + unlink $Dfile; +} + +{ + # Check that DBM Filter can cope with read-only $_ + + use warnings ; + use strict ; + my (@h, $db) ; + unlink $Dfile; + + ok(154, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + + $db->filter_fetch_key (sub { }) ; + $db->filter_store_key (sub { }) ; + $db->filter_fetch_value (sub { }) ; + $db->filter_store_value (sub { }) ; + + $_ = "original" ; + + $h[0] = "joe" ; + ok(155, $h[0] eq "joe"); + + eval { my @r= grep { $h[$_] } (1, 2, 3) }; + ok (156, ! $@); + + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + $h[1] = "joe" ; + + ok(157, $h[1] eq "joe"); + + eval { my @r= grep { $h[$_] } (1, 2, 3) }; + ok (158, ! $@); + + undef $db ; + untie @h; + unlink $Dfile; +} + +{ + # Check low-level API works with filter + + use warnings ; + use strict ; + my (@h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(159, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + + + $db->filter_fetch_key (sub { ++ $_ } ); + $db->filter_store_key (sub { -- $_ } ); + $db->filter_fetch_value (sub { $_ = unpack("i", $_) } ); + $db->filter_store_value (sub { $_ = pack("i", $_) } ); + + $_ = 'fred'; + + my $key = 22 ; + my $value = 34 ; + + $db->put($key, $value) ; + ok 160, $key == 22; + ok 161, $value == 34 ; + ok 162, $_ eq 'fred'; + #print "k [$key][$value]\n" ; + + my $val ; + $db->get($key, $val) ; + ok 163, $key == 22; + ok 164, $val == 34 ; + ok 165, $_ eq 'fred'; + + $key = 51 ; + $value = 454; + $h[$key] = $value ; + ok 166, $key == 51; + ok 167, $value == 454 ; + ok 168, $_ eq 'fred'; + + undef $db ; + untie @h; + unlink $Dfile; +} + + +{ + # Regression Test for bug 30237 + # Check that substr can be used in the key to db_put + # and that db_put does not trigger the warning + # + # Use of uninitialized value in subroutine entry + + + use warnings ; + use strict ; + my (@h, $db) ; + my $status ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(169, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO) ); + + my $warned = ''; + local $SIG{__WARN__} = sub {$warned = $_[0]} ; + + # db-put with substr of key + my %remember = () ; + for my $ix ( 0 .. 2 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{substr($key,0, 1)} = $value ; + $db->put(substr($key,0, 1), $value) ; + } + + ok 170, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # db-put with substr of value + $warned = ''; + for my $ix ( 3 .. 5 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$ix} = $value ; + $db->put($ix, substr($value,0)) ; + } + + ok 171, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied array is not a problem, but check anyway + # substr of key + $warned = ''; + for my $ix ( 6 .. 8 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{substr($key,0,1)} = $value ; + $h[substr($key,0,1)] = $value ; + } + + ok 172, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied array is not a problem, but check anyway + # substr of value + $warned = ''; + for my $ix ( 9 .. 10 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$ix} = $value ; + $h[$ix] = substr($value,0) ; + } + + ok 173, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + my %bad = () ; + my $key = ''; + for (my $status = $db->seq($key, $value, R_FIRST ) ; + $status == 0 ; + $status = $db->seq($key, $value, R_NEXT ) ) { + + #print "# key [$key] value [$value]\n" ; + if (defined $remember{$key} && defined $value && + $remember{$key} eq $value) { + delete $remember{$key} ; + } + else { + $bad{$key} = $value ; + } + } + + ok 174, keys %bad == 0 ; + ok 175, keys %remember == 0 ; + + print "# missing -- $key $value\n" while ($key, $value) = each %remember; + print "# bad -- $key $value\n" while ($key, $value) = each %bad; + + # Make sure this fix does not break code to handle an undef key + my $value = 'fred'; + $warned = ''; + $status = $db->put(undef, $value) ; + ok 176, $status == 0 + or print "# put failed - status $status\n"; + ok 177, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + print "# db_ver $DB_File::db_ver\n"; + $value = '' ; + $status = $db->get(undef, $value) ; + ok 178, $status == 0 + or print "# get failed - status $status\n" ; + ok(179, $db->get(undef, $value) == 0) or print "# get failed\n" ; + ok 180, $value eq 'fred' or print "# got [$value]\n" ; + ok 181, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + undef $db ; + untie @h; + unlink $Dfile; +} + +# Only test splice if this is a newish version of Perl +exit unless $FA ; + +# Test SPLICE + +{ + # check that the splice warnings are under the same lexical control + # as their non-tied counterparts. + + use warnings; + use strict; + + my $a = ''; + my @a = (1); + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + unlink $Dfile; + my @tied ; + + tie @tied, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO + or die "Can't open file: $!\n" ; + + # uninitialized offset + use warnings; + my $offset ; + $a = ''; + splice(@a, $offset); + ok(182, $a =~ /^Use of uninitialized value /); + $a = ''; + splice(@tied, $offset); + ok(183, $a =~ /^Use of uninitialized value in splice/); + + no warnings 'uninitialized'; + $a = ''; + splice(@a, $offset); + ok(184, $a eq ''); + $a = ''; + splice(@tied, $offset); + ok(185, $a eq ''); + + # uninitialized length + use warnings; + my $length ; + $a = ''; + splice(@a, 0, $length); + ok(186, $a =~ /^Use of uninitialized value /); + $a = ''; + splice(@tied, 0, $length); + ok(187, $a =~ /^Use of uninitialized value in splice/); + + no warnings 'uninitialized'; + $a = ''; + splice(@a, 0, $length); + ok(188, $a eq ''); + $a = ''; + splice(@tied, 0, $length); + ok(189, $a eq ''); + + # offset past end of array + use warnings; + $a = ''; + splice(@a, 3); + my $splice_end_array = ($a =~ /^splice\(\) offset past end of array/); + $a = ''; + splice(@tied, 3); + ok(190, !$splice_end_array || $a =~ /^splice\(\) offset past end of array/); + + no warnings 'misc'; + $a = ''; + splice(@a, 3); + ok(191, $a eq ''); + $a = ''; + splice(@tied, 3); + ok(192, $a eq ''); + + ok(193, safeUntie \@tied); + unlink $Dfile; +} + +# +# These are a few regression tests: bundles of five arguments to pass +# to test_splice(). The first four arguments correspond to those +# given to splice(), and the last says which context to call it in +# (scalar, list or void). +# +# The expected result is not needed because we get that by running +# Perl's built-in splice(). +# +my @tests = ([ [ 'falsely', 'dinosaur', 'remedy', 'commotion', + 'rarely', 'paleness' ], + -4, -2, + [ 'redoubled', 'Taylorize', 'Zoe', 'halogen' ], + 'void' ], + + [ [ 'a' ], -2, 1, [ 'B' ], 'void' ], + + [ [ 'Hartley', 'Islandia', 'assents', 'wishful' ], + 0, -4, + [ 'maids' ], + 'void' ], + + [ [ 'visibility', 'pocketful', 'rectangles' ], + -10, 0, + [ 'garbages' ], + 'void' ], + + [ [ 'sleeplessly' ], + 8, -4, + [ 'Margery', 'clearing', 'repercussion', 'clubs', + 'arise' ], + 'void' ], + + [ [ 'chastises', 'recalculates' ], + 0, 0, + [ 'momentariness', 'mediates', 'accents', 'toils', + 'regaled' ], + 'void' ], + + [ [ 'b', '' ], + 9, 8, + [ 'otrb', 'stje', 'ixrpw', 'vxfx', 'lhhf' ], + 'scalar' ], + + [ [ 'b', '' ], + undef, undef, + [ 'otrb', 'stje', 'ixrpw', 'vxfx', 'lhhf' ], + 'scalar' ], + + [ [ 'riheb' ], -8, undef, [], 'void' ], + + [ [ 'uft', 'qnxs', '' ], + 6, -2, + [ 'znp', 'mhnkh', 'bn' ], + 'void' ], + ); + +my $testnum = 194; +my $failed = 0; +my $tmp = "dbr$$"; +foreach my $test (@tests) { + my $err = test_splice(@$test); + if (defined $err) { + print STDERR "# failed: ", Dumper($test); + print STDERR "# error: $err\n"; + $failed = 1; + ok($testnum++, 0); + } + else { ok($testnum++, 1) } +} + +if ($failed) { + # Not worth running the random ones + print STDERR '# skipping ', $testnum++, "\n"; +} +else { + # A thousand randomly-generated tests + $failed = 0; + srand(0); + foreach (0 .. 1000 - 1) { + my $test = rand_test(); + my $err = test_splice(@$test); + if (defined $err) { + print STDERR "# failed: ", Dumper($test); + print STDERR "# error: $err\n"; + $failed = 1; + print STDERR "# skipping any remaining random tests\n"; + last; + } + } + + ok($testnum++, not $failed); +} + +die "testnum ($testnum) != total_tests ($total_tests) + 1" + if $testnum != $total_tests + 1; + +exit ; + +# Subroutines for SPLICE testing + +# test_splice() +# +# Test the new splice() against Perl's built-in one. The first four +# parameters are those passed to splice(), except that the lists must +# be (explicitly) passed by reference, and are not actually modified. +# (It's just a test!) The last argument specifies the context in +# which to call the functions: 'list', 'scalar', or 'void'. +# +# Returns: +# undef, if the two splices give the same results for the given +# arguments and context; +# +# an error message showing the difference, otherwise. +# +# Reads global variable $tmp. +# +sub test_splice { + die 'usage: test_splice(array, offset, length, list, context)' if @_ != 5; + my ($array, $offset, $length, $list, $context) = @_; + my @array = @$array; + my @list = @$list; + + unlink $tmp; + + my @h; + my $H = tie @h, 'DB_File', $tmp, O_CREAT|O_RDWR, 0644, $DB_RECNO + or die "cannot open $tmp: $!"; + + my $i = 0; + foreach ( @array ) { $h[$i++] = $_ } + + return "basic DB_File sanity check failed" + if list_diff(\@array, \@h); + + # Output from splice(): + # Returned value (munged a bit), error msg, warnings + # + my ($s_r, $s_error, @s_warnings); + + my $gather_warning = sub { push @s_warnings, $_[0] }; + if ($context eq 'list') { + my @r; + eval { + local $SIG{__WARN__} = $gather_warning; + @r = splice @array, $offset, $length, @list; + }; + $s_error = $@; + $s_r = \@r; + } + elsif ($context eq 'scalar') { + my $r; + eval { + local $SIG{__WARN__} = $gather_warning; + $r = splice @array, $offset, $length, @list; + }; + $s_error = $@; + $s_r = [ $r ]; + } + elsif ($context eq 'void') { + eval { + local $SIG{__WARN__} = $gather_warning; + splice @array, $offset, $length, @list; + }; + $s_error = $@; + $s_r = []; + } + else { + die "bad context $context"; + } + + foreach ($s_error, @s_warnings) { + chomp; + s/ at \S+ line \d+\.$//; + # only built-in splice identifies name of uninit value + s/(uninitialized value) \$\w+/$1/; + } + + # Now do the same for DB_File's version of splice + my ($ms_r, $ms_error, @ms_warnings); + $gather_warning = sub { push @ms_warnings, $_[0] }; + if ($context eq 'list') { + my @r; + eval { + local $SIG{__WARN__} = $gather_warning; + @r = splice @h, $offset, $length, @list; + }; + $ms_error = $@; + $ms_r = \@r; + } + elsif ($context eq 'scalar') { + my $r; + eval { + local $SIG{__WARN__} = $gather_warning; + $r = splice @h, $offset, $length, @list; + }; + $ms_error = $@; + $ms_r = [ $r ]; + } + elsif ($context eq 'void') { + eval { + local $SIG{__WARN__} = $gather_warning; + splice @h, $offset, $length, @list; + }; + $ms_error = $@; + $ms_r = []; + } + else { + die "bad context $context"; + } + + foreach ($ms_error, @ms_warnings) { + chomp; + s/ at \S+(\s+\S+)*? line \d+\.?.*//s; + } + + return "different errors: '$s_error' vs '$ms_error'" + if $s_error ne $ms_error; + return('different return values: ' . Dumper($s_r) . ' vs ' . Dumper($ms_r)) + if list_diff($s_r, $ms_r); + return('different changed list: ' . Dumper(\@array) . ' vs ' . Dumper(\@h)) + if list_diff(\@array, \@h); + + if ((scalar @s_warnings) != (scalar @ms_warnings)) { + return 'different number of warnings'; + } + + while (@s_warnings) { + my $sw = shift @s_warnings; + my $msw = shift @ms_warnings; + + if (defined $sw and defined $msw) { + $msw =~ s/ \(.+\)$//; + $msw =~ s/ in splice$// if $] < 5.006; + if ($sw ne $msw) { + return "different warning: '$sw' vs '$msw'"; + } + } + elsif (not defined $sw and not defined $msw) { + # Okay. + } + else { + return "one warning defined, another undef"; + } + } + + undef $H; + untie @h; + + open(TEXT, $tmp) or die "cannot open $tmp: $!"; + @h = ; normalise @h; chomp @h; + close TEXT or die "cannot close $tmp: $!"; + return('list is different when re-read from disk: ' + . Dumper(\@array) . ' vs ' . Dumper(\@h)) + if list_diff(\@array, \@h); + + unlink $tmp; + + return undef; # success +} + + +# list_diff() +# +# Do two lists differ? +# +# Parameters: +# reference to first list +# reference to second list +# +# Returns true iff they differ. Only works for lists of (string or +# undef). +# +# Surely there is a better way to do this? +# +sub list_diff { + die 'usage: list_diff(ref to first list, ref to second list)' + if @_ != 2; + my ($a, $b) = @_; + my @a = @$a; my @b = @$b; + return 1 if (scalar @a) != (scalar @b); + for (my $i = 0; $i < @a; $i++) { + my ($ae, $be) = ($a[$i], $b[$i]); + if (defined $ae and defined $be) { + return 1 if $ae ne $be; + } + elsif (not defined $ae and not defined $be) { + # Two undefined values are 'equal' + } + else { + return 1; + } + } + return 0; +} + + +# rand_test() +# +# Think up a random ARRAY, OFFSET, LENGTH, LIST, and context. +# ARRAY or LIST might be empty, and OFFSET or LENGTH might be +# undefined. Return a 'test' - a listref of these five things. +# +sub rand_test { + die 'usage: rand_test()' if @_; + my @contexts = qw; + my $context = $contexts[int(rand @contexts)]; + return [ rand_list(), + (rand() < 0.5) ? (int(rand(20)) - 10) : undef, + (rand() < 0.5) ? (int(rand(20)) - 10) : undef, + rand_list(), + $context ]; +} + + +sub rand_list { + die 'usage: rand_list()' if @_; + my @r; + + while (rand() > 0.1 * (scalar @r + 1)) { + push @r, rand_word(); + } + return \@r; +} + + +sub rand_word { + die 'usage: rand_word()' if @_; + my $r = ''; + my @chars = qw; + while (rand() > 0.1 * (length($r) + 1)) { + $r .= $chars[int(rand(scalar @chars))]; + } + return $r; +} + + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/t/db-recno.t.bak b/fastSum/resources/ROUGE/DB_File-1.835/t/db-recno.t.bak new file mode 100644 index 0000000000000000000000000000000000000000..bd198dcf2ff0189af0a3ba55ebca31f58cf507c1 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/t/db-recno.t.bak @@ -0,0 +1,1595 @@ +#!./perl -w + +use strict; +use Config; + +BEGIN { + if(-d "lib" && -f "TEST") { + if ($Config{'extensions'} !~ /\bDB_File\b/ ) { + print "1..0 # Skip: DB_File was not built\n"; + exit 0; + } + } +} + +use DB_File; +use Fcntl; +our ($dbh, $Dfile, $bad_ones, $FA); + +# full tied array support started in Perl 5.004_57 +# Double check to see if it is available. + +{ + sub try::TIEARRAY { bless [], "try" } + sub try::FETCHSIZE { $FA = 1 } + $FA = 0 ; + my @a ; + tie @a, 'try' ; + my $a = @a ; +} + + +sub ok +{ + my $no = shift ; + my $result = shift ; + + print "not " unless $result ; + print "ok $no\n" ; + + return $result ; +} + +{ + package Redirect ; + use Symbol ; + + sub new + { + my $class = shift ; + my $filename = shift ; + my $fh = gensym ; + open ($fh, ">$filename") || die "Cannot open $filename: $!" ; + my $real_stdout = select($fh) ; + return bless [$fh, $real_stdout ] ; + + } + sub DESTROY + { + my $self = shift ; + close $self->[0] ; + select($self->[1]) ; + } +} + +sub docat +{ + my $file = shift; + local $/ = undef; + open(CAT,$file) || die "Cannot open $file:$!"; + my $result = ; + close(CAT); + normalise($result) ; + return $result; +} + +sub docat_del +{ + my $file = shift; + my $result = docat($file); + unlink $file ; + return $result; +} + +sub safeUntie +{ + my $hashref = shift ; + my $no_inner = 1; + local $SIG{__WARN__} = sub {-- $no_inner } ; + untie @$hashref; + return $no_inner; +} + +sub bad_one +{ + unless ($bad_ones++) { + print STDERR <{bval}) ; +ok(2, ! defined $dbh->{cachesize}) ; +ok(3, ! defined $dbh->{psize}) ; +ok(4, ! defined $dbh->{flags}) ; +ok(5, ! defined $dbh->{lorder}) ; +ok(6, ! defined $dbh->{reclen}) ; +ok(7, ! defined $dbh->{bfname}) ; + +$dbh->{bval} = 3000 ; +ok(8, $dbh->{bval} == 3000 ); + +$dbh->{cachesize} = 9000 ; +ok(9, $dbh->{cachesize} == 9000 ); + +$dbh->{psize} = 400 ; +ok(10, $dbh->{psize} == 400 ); + +$dbh->{flags} = 65 ; +ok(11, $dbh->{flags} == 65 ); + +$dbh->{lorder} = 123 ; +ok(12, $dbh->{lorder} == 123 ); + +$dbh->{reclen} = 1234 ; +ok(13, $dbh->{reclen} == 1234 ); + +$dbh->{bfname} = 1234 ; +ok(14, $dbh->{bfname} == 1234 ); + + +# Check that an invalid entry is caught both for store & fetch +eval '$dbh->{fred} = 1234' ; +ok(15, $@ =~ /^DB_File::RECNOINFO::STORE - Unknown element 'fred' at/ ); +eval 'my $q = $dbh->{fred}' ; +ok(16, $@ =~ /^DB_File::RECNOINFO::FETCH - Unknown element 'fred' at/ ); + +# Now check the interface to RECNOINFO + +my $X ; +my @h ; +ok(17, $X = tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ; + +my %noMode = map { $_, 1} qw( amigaos MSWin32 NetWare cygwin ) ; + +ok(18, ((stat($Dfile))[2] & 0777) == (($^O eq 'os2' || $^O eq 'MacOS') ? 0666 : 0640) + || $noMode{$^O} ); + +#my $l = @h ; +my $l = $X->length ; +ok(19, ($FA ? @h == 0 : !$l) ); + +my @data = qw( a b c d ever f g h i j k longername m n o p) ; + +$h[0] = shift @data ; +ok(20, $h[0] eq 'a' ); + +my $ i; +foreach (@data) + { $h[++$i] = $_ } + +unshift (@data, 'a') ; + +ok(21, defined $h[1] ); +ok(22, ! defined $h[16] ); +ok(23, $FA ? @h == @data : $X->length == @data ); + + +# Overwrite an entry & check fetch it +$h[3] = 'replaced' ; +$data[3] = 'replaced' ; +ok(24, $h[3] eq 'replaced' ); + +#PUSH +my @push_data = qw(added to the end) ; +($FA ? push(@h, @push_data) : $X->push(@push_data)) ; +push (@data, @push_data) ; +ok(25, $h[++$i] eq 'added' ); +ok(26, $h[++$i] eq 'to' ); +ok(27, $h[++$i] eq 'the' ); +ok(28, $h[++$i] eq 'end' ); + +# POP +my $popped = pop (@data) ; +my $value = ($FA ? pop @h : $X->pop) ; +ok(29, $value eq $popped) ; + +# SHIFT +$value = ($FA ? shift @h : $X->shift) ; +my $shifted = shift @data ; +ok(30, $value eq $shifted ); + +# UNSHIFT + +# empty list +($FA ? unshift @h,() : $X->unshift) ; +ok(31, ($FA ? @h == @data : $X->length == @data )); + +my @new_data = qw(add this to the start of the array) ; +$FA ? unshift (@h, @new_data) : $X->unshift (@new_data) ; +unshift (@data, @new_data) ; +ok(32, $FA ? @h == @data : $X->length == @data ); +ok(33, $h[0] eq "add") ; +ok(34, $h[1] eq "this") ; +ok(35, $h[2] eq "to") ; +ok(36, $h[3] eq "the") ; +ok(37, $h[4] eq "start") ; +ok(38, $h[5] eq "of") ; +ok(39, $h[6] eq "the") ; +ok(40, $h[7] eq "array") ; +ok(41, $h[8] eq $data[8]) ; + +# Brief test for SPLICE - more thorough 'soak test' is later. +my @old; +if ($FA) { + @old = splice(@h, 1, 2, qw(bananas just before)); +} +else { + @old = $X->splice(1, 2, qw(bananas just before)); +} +ok(42, $h[0] eq "add") ; +ok(43, $h[1] eq "bananas") ; +ok(44, $h[2] eq "just") ; +ok(45, $h[3] eq "before") ; +ok(46, $h[4] eq "the") ; +ok(47, $h[5] eq "start") ; +ok(48, $h[6] eq "of") ; +ok(49, $h[7] eq "the") ; +ok(50, $h[8] eq "array") ; +ok(51, $h[9] eq $data[8]) ; +$FA ? splice(@h, 1, 3, @old) : $X->splice(1, 3, @old); + +# Now both arrays should be identical + +my $ok = 1 ; +my $j = 0 ; +foreach (@data) +{ + $ok = 0, last if $_ ne $h[$j ++] ; +} +ok(52, $ok ); + +# Neagtive subscripts + +# get the last element of the array +ok(53, $h[-1] eq $data[-1] ); +ok(54, $h[-1] eq $h[ ($FA ? @h : $X->length) -1] ); + +# get the first element using a negative subscript +eval '$h[ - ( $FA ? @h : $X->length)] = "abcd"' ; +ok(55, $@ eq "" ); +ok(56, $h[0] eq "abcd" ); + +# now try to read before the start of the array +eval '$h[ - (1 + ($FA ? @h : $X->length))] = 1234' ; +ok(57, $@ =~ '^Modification of non-creatable array value attempted' ); + +# IMPORTANT - $X must be undefined before the untie otherwise the +# underlying DB close routine will not get called. +undef $X ; +ok(58, safeUntie \@h); + +unlink $Dfile; + + +{ + # Check bval defaults to \n + + my @h = () ; + my $dbh = new DB_File::RECNOINFO ; + ok(59, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + $h[0] = "abc" ; + $h[1] = "def" ; + $h[3] = "ghi" ; + ok(60, safeUntie \@h); + my $x = docat($Dfile) ; + unlink $Dfile; + ok(61, $x eq "abc\ndef\n\nghi\n") ; +} + +{ + # Change bval + + my @h = () ; + my $dbh = new DB_File::RECNOINFO ; + $dbh->{bval} = "-" ; + ok(62, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + $h[0] = "abc" ; + $h[1] = "def" ; + $h[3] = "ghi" ; + ok(63, safeUntie \@h); + my $x = docat($Dfile) ; + unlink $Dfile; + my $ok = ($x eq "abc-def--ghi-") ; + bad_one() unless $ok ; + ok(64, $ok) ; +} + +{ + # Check R_FIXEDLEN with default bval (space) + + my @h = () ; + my $dbh = new DB_File::RECNOINFO ; + $dbh->{flags} = R_FIXEDLEN ; + $dbh->{reclen} = 5 ; + ok(65, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + $h[0] = "abc" ; + $h[1] = "def" ; + $h[3] = "ghi" ; + ok(66, safeUntie \@h); + my $x = docat($Dfile) ; + unlink $Dfile; + my $ok = ($x eq "abc def ghi ") ; + bad_one() unless $ok ; + ok(67, $ok) ; +} + +{ + # Check R_FIXEDLEN with user-defined bval + + my @h = () ; + my $dbh = new DB_File::RECNOINFO ; + $dbh->{flags} = R_FIXEDLEN ; + $dbh->{bval} = "-" ; + $dbh->{reclen} = 5 ; + ok(68, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + $h[0] = "abc" ; + $h[1] = "def" ; + $h[3] = "ghi" ; + ok(69, safeUntie \@h); + my $x = docat($Dfile) ; + unlink $Dfile; + my $ok = ($x eq "abc--def-------ghi--") ; + bad_one() unless $ok ; + ok(70, $ok) ; +} + +{ + # check that attempting to tie an associative array to a DB_RECNO will fail + + my $filename = "xyz" ; + my %x ; + eval { tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO ; } ; + ok(71, $@ =~ /^DB_File can only tie an array to a DB_RECNO database/) ; + unlink $filename ; +} + +{ + # sub-class test + + package Another ; + + use warnings ; + use strict ; + + open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ; + print FILE <<'EOM' ; + + package SubDB ; + + use warnings ; + use strict ; + our (@ISA, @EXPORT); + + require Exporter ; + use DB_File; + @ISA=qw(DB_File); + @EXPORT = @DB_File::EXPORT ; + + sub STORE { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::STORE($key, $value * 2) ; + } + + sub FETCH { + my $self = shift ; + my $key = shift ; + $self->SUPER::FETCH($key) - 1 ; + } + + sub put { + my $self = shift ; + my $key = shift ; + my $value = shift ; + $self->SUPER::put($key, $value * 3) ; + } + + sub get { + my $self = shift ; + $self->SUPER::get($_[0], $_[1]) ; + $_[1] -= 2 ; + } + + sub A_new_method + { + my $self = shift ; + my $key = shift ; + my $value = $self->FETCH($key) ; + return "[[$value]]" ; + } + + 1 ; +EOM + + close FILE or die "Could not close: $!"; + + BEGIN { push @INC, '.'; } + eval 'use SubDB ; '; + main::ok(72, $@ eq "") ; + my @h ; + my $X ; + eval ' + $X = tie(@h, "SubDB","recno.tmp", O_RDWR|O_CREAT, 0640, $DB_RECNO ); + ' ; + die "Could not tie: $!" unless $X; + + main::ok(73, $@ eq "") ; + + my $ret = eval '$h[3] = 3 ; return $h[3] ' ; + main::ok(74, $@ eq "") ; + main::ok(75, $ret == 5) ; + + my $value = 0; + $ret = eval '$X->put(1, 4) ; $X->get(1, $value) ; return $value' ; + main::ok(76, $@ eq "") ; + main::ok(77, $ret == 10) ; + + $ret = eval ' R_NEXT eq main::R_NEXT ' ; + main::ok(78, $@ eq "" ) ; + main::ok(79, $ret == 1) ; + + $ret = eval '$X->A_new_method(1) ' ; + main::ok(80, $@ eq "") ; + main::ok(81, $ret eq "[[11]]") ; + + undef $X; + main::ok(82, main::safeUntie \@h); + unlink "SubDB.pm", "recno.tmp" ; + +} + +{ + + # test $# + my $self ; + unlink $Dfile; + ok(83, $self = tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ; + $h[0] = "abc" ; + $h[1] = "def" ; + $h[2] = "ghi" ; + $h[3] = "jkl" ; + ok(84, $FA ? $#h == 3 : $self->length() == 4) ; + undef $self ; + ok(85, safeUntie \@h); + my $x = docat($Dfile) ; + ok(86, $x eq "abc\ndef\nghi\njkl\n") ; + + # $# sets array to same length + $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ; + ok(87, $self) + or warn "# $DB_File::Error\n"; + if ($FA) + { $#h = 3 } + else + { $self->STORESIZE(4) } + ok(88, $FA ? $#h == 3 : $self->length() == 4) ; + undef $self ; + ok(89, safeUntie \@h); + $x = docat($Dfile) ; + ok(90, $x eq "abc\ndef\nghi\njkl\n") ; + + # $# sets array to bigger + ok(91, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; + if ($FA) + { $#h = 6 } + else + { $self->STORESIZE(7) } + ok(92, $FA ? $#h == 6 : $self->length() == 7) ; + undef $self ; + ok(93, safeUntie \@h); + $x = docat($Dfile) ; + ok(94, $x eq "abc\ndef\nghi\njkl\n\n\n\n") ; + + # $# sets array smaller + ok(95, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; + if ($FA) + { $#h = 2 } + else + { $self->STORESIZE(3) } + ok(96, $FA ? $#h == 2 : $self->length() == 3) ; + undef $self ; + ok(97, safeUntie \@h); + $x = docat($Dfile) ; + ok(98, $x eq "abc\ndef\nghi\n") ; + + unlink $Dfile; + + +} + +{ + # DBM Filter tests + use warnings ; + use strict ; + my (@h, $db) ; + my ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + unlink $Dfile; + + sub checkOutput + { + my($fk, $sk, $fv, $sv) = @_ ; + + print "# Fetch Key : expected '$fk' got '$fetch_key'\n" + if $fetch_key ne $fk ; + print "# Fetch Value : expected '$fv' got '$fetch_value'\n" + if $fetch_value ne $fv ; + print "# Store Key : expected '$sk' got '$store_key'\n" + if $store_key ne $sk ; + print "# Store Value : expected '$sv' got '$store_value'\n" + if $store_value ne $sv ; + print "# \$_ : expected 'original' got '$_'\n" + if $_ ne 'original' ; + + return + $fetch_key eq $fk && $store_key eq $sk && + $fetch_value eq $fv && $store_value eq $sv && + $_ eq 'original' ; + } + + ok(99, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + + $db->filter_fetch_key (sub { $fetch_key = $_ }) ; + $db->filter_store_key (sub { $store_key = $_ }) ; + $db->filter_fetch_value (sub { $fetch_value = $_}) ; + $db->filter_store_value (sub { $store_value = $_ }) ; + + $_ = "original" ; + + $h[0] = "joe" ; + # fk sk fv sv + ok(100, checkOutput( "", 0, "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(101, $h[0] eq "joe"); + # fk sk fv sv + ok(102, checkOutput( "", 0, "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(103, $db->FIRSTKEY() == 0) ; + # fk sk fv sv + ok(104, checkOutput( 0, "", "", "")) ; + + # replace the filters, but remember the previous set + my ($old_fk) = $db->filter_fetch_key + (sub { ++ $_ ; $fetch_key = $_ }) ; + my ($old_sk) = $db->filter_store_key + (sub { $_ *= 2 ; $store_key = $_ }) ; + my ($old_fv) = $db->filter_fetch_value + (sub { $_ = "[$_]"; $fetch_value = $_ }) ; + my ($old_sv) = $db->filter_store_value + (sub { s/o/x/g; $store_value = $_ }) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h[1] = "Joe" ; + # fk sk fv sv + ok(105, checkOutput( "", 2, "", "Jxe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(106, $h[1] eq "[Jxe]"); + # fk sk fv sv + ok(107, checkOutput( "", 2, "[Jxe]", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(108, $db->FIRSTKEY() == 1) ; + # fk sk fv sv + ok(109, checkOutput( 1, "", "", "")) ; + + # put the original filters back + $db->filter_fetch_key ($old_fk); + $db->filter_store_key ($old_sk); + $db->filter_fetch_value ($old_fv); + $db->filter_store_value ($old_sv); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h[0] = "joe" ; + ok(110, checkOutput( "", 0, "", "joe")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(111, $h[0] eq "joe"); + ok(112, checkOutput( "", 0, "joe", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(113, $db->FIRSTKEY() == 0) ; + ok(114, checkOutput( 0, "", "", "")) ; + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + $h[0] = "joe" ; + ok(115, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(116, $h[0] eq "joe"); + ok(117, checkOutput( "", "", "", "")) ; + + ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; + ok(118, $db->FIRSTKEY() == 0) ; + ok(119, checkOutput( "", "", "", "")) ; + + undef $db ; + ok(120, safeUntie \@h); + unlink $Dfile; +} + +{ + # DBM Filter with a closure + + use warnings ; + use strict ; + my (@h, $db) ; + + unlink $Dfile; + ok(121, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + + my %result = () ; + + sub Closure + { + my ($name) = @_ ; + my $count = 0 ; + my @kept = () ; + + return sub { ++$count ; + push @kept, $_ ; + $result{$name} = "$name - $count: [@kept]" ; + } + } + + $db->filter_store_key(Closure("store key")) ; + $db->filter_store_value(Closure("store value")) ; + $db->filter_fetch_key(Closure("fetch key")) ; + $db->filter_fetch_value(Closure("fetch value")) ; + + $_ = "original" ; + + $h[0] = "joe" ; + ok(122, $result{"store key"} eq "store key - 1: [0]"); + ok(123, $result{"store value"} eq "store value - 1: [joe]"); + ok(124, ! defined $result{"fetch key"} ); + ok(125, ! defined $result{"fetch value"} ); + ok(126, $_ eq "original") ; + + ok(127, $db->FIRSTKEY() == 0 ) ; + ok(128, $result{"store key"} eq "store key - 1: [0]"); + ok(129, $result{"store value"} eq "store value - 1: [joe]"); + ok(130, $result{"fetch key"} eq "fetch key - 1: [0]"); + ok(131, ! defined $result{"fetch value"} ); + ok(132, $_ eq "original") ; + + $h[7] = "john" ; + ok(133, $result{"store key"} eq "store key - 2: [0 7]"); + ok(134, $result{"store value"} eq "store value - 2: [joe john]"); + ok(135, $result{"fetch key"} eq "fetch key - 1: [0]"); + ok(136, ! defined $result{"fetch value"} ); + ok(137, $_ eq "original") ; + + ok(138, $h[0] eq "joe"); + ok(139, $result{"store key"} eq "store key - 3: [0 7 0]"); + ok(140, $result{"store value"} eq "store value - 2: [joe john]"); + ok(141, $result{"fetch key"} eq "fetch key - 1: [0]"); + ok(142, $result{"fetch value"} eq "fetch value - 1: [joe]"); + ok(143, $_ eq "original") ; + + undef $db ; + ok(144, safeUntie \@h); + unlink $Dfile; +} + +{ + # DBM Filter recursion detection + use warnings ; + use strict ; + my (@h, $db) ; + unlink $Dfile; + + ok(145, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + + $db->filter_store_key (sub { $_ = $h[0] }) ; + + eval '$h[1] = 1234' ; + ok(146, $@ =~ /^recursion detected in filter_store_key at/ ); + + undef $db ; + ok(147, safeUntie \@h); + unlink $Dfile; +} + + +{ + # Examples from the POD + + my $file = "xyzt" ; + { + my $redirect = new Redirect $file ; + + use warnings FATAL => qw(all); + use strict ; + use DB_File ; + + my $filename = "text" ; + unlink $filename ; + + my @h ; + my $x = tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO + or die "Cannot open file 'text': $!\n" ; + + # Add a few key/value pairs to the file + $h[0] = "orange" ; + $h[1] = "blue" ; + $h[2] = "yellow" ; + + $FA ? push @h, "green", "black" + : $x->push("green", "black") ; + + my $elements = $FA ? scalar @h : $x->length ; + print "The array contains $elements entries\n" ; + + my $last = $FA ? pop @h : $x->pop ; + print "popped $last\n" ; + + $FA ? unshift @h, "white" + : $x->unshift("white") ; + my $first = $FA ? shift @h : $x->shift ; + print "shifted $first\n" ; + + # Check for existence of a key + print "Element 1 Exists with value $h[1]\n" if $h[1] ; + + # use a negative index + print "The last element is $h[-1]\n" ; + print "The 2nd last element is $h[-2]\n" ; + + undef $x ; + untie @h ; + + unlink $filename ; + } + + ok(148, docat_del($file) eq <<'EOM') ; +The array contains 5 entries +popped black +shifted white +Element 1 Exists with value blue +The last element is green +The 2nd last element is yellow +EOM + + my $save_output = "xyzt" ; + { + my $redirect = new Redirect $save_output ; + + use warnings FATAL => qw(all); + use strict ; + our (@h, $H, $file, $i); + use DB_File ; + use Fcntl ; + + $file = "text" ; + + unlink $file ; + + $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0640, $DB_RECNO + or die "Cannot open file $file: $!\n" ; + + # first create a text file to play with + $h[0] = "zero" ; + $h[1] = "one" ; + $h[2] = "two" ; + $h[3] = "three" ; + $h[4] = "four" ; + + + # Print the records in order. + # + # The length method is needed here because evaluating a tied + # array in a scalar context does not return the number of + # elements in the array. + + print "\nORIGINAL\n" ; + foreach $i (0 .. $H->length - 1) { + print "$i: $h[$i]\n" ; + } + + # use the push & pop methods + $a = $H->pop ; + $H->push("last") ; + print "\nThe last record was [$a]\n" ; + + # and the shift & unshift methods + $a = $H->shift ; + $H->unshift("first") ; + print "The first record was [$a]\n" ; + + # Use the API to add a new record after record 2. + $i = 2 ; + $H->put($i, "Newbie", R_IAFTER) ; + + # and a new record before record 1. + $i = 1 ; + $H->put($i, "New One", R_IBEFORE) ; + + # delete record 3 + $H->del(3) ; + + # now print the records in reverse order + print "\nREVERSE\n" ; + for ($i = $H->length - 1 ; $i >= 0 ; -- $i) + { print "$i: $h[$i]\n" } + + # same again, but use the API functions instead + print "\nREVERSE again\n" ; + my ($s, $k, $v) = (0, 0, 0) ; + for ($s = $H->seq($k, $v, R_LAST) ; + $s == 0 ; + $s = $H->seq($k, $v, R_PREV)) + { print "$k: $v\n" } + + undef $H ; + untie @h ; + + unlink $file ; + } + + ok(149, docat_del($save_output) eq <<'EOM') ; + +ORIGINAL +0: zero +1: one +2: two +3: three +4: four + +The last record was [four] +The first record was [zero] + +REVERSE +5: last +4: three +3: Newbie +2: one +1: New One +0: first + +REVERSE again +5: last +4: three +3: Newbie +2: one +1: New One +0: first +EOM + +} + +{ + # Bug ID 20001013.009 + # + # test that $hash{KEY} = undef doesn't produce the warning + # Use of uninitialized value in null operation + use warnings ; + use strict ; + use DB_File ; + + unlink $Dfile; + my @h ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO + or die "Can't open file: $!\n" ; + $h[0] = undef; + ok(150, $a eq "") ; + ok(151, safeUntie \@h); + unlink $Dfile; +} + +{ + # test that %hash = () doesn't produce the warning + # Argument "" isn't numeric in entersub + use warnings ; + use strict ; + use DB_File ; + my $a = ""; + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + unlink $Dfile; + my @h ; + + tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO + or die "Can't open file: $!\n" ; + @h = (); ; + ok(152, $a eq "") ; + ok(153, safeUntie \@h); + unlink $Dfile; +} + +{ + # Check that DBM Filter can cope with read-only $_ + + use warnings ; + use strict ; + my (@h, $db) ; + unlink $Dfile; + + ok(154, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + + $db->filter_fetch_key (sub { }) ; + $db->filter_store_key (sub { }) ; + $db->filter_fetch_value (sub { }) ; + $db->filter_store_value (sub { }) ; + + $_ = "original" ; + + $h[0] = "joe" ; + ok(155, $h[0] eq "joe"); + + eval { my @r= grep { $h[$_] } (1, 2, 3) }; + ok (156, ! $@); + + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + $h[1] = "joe" ; + + ok(157, $h[1] eq "joe"); + + eval { my @r= grep { $h[$_] } (1, 2, 3) }; + ok (158, ! $@); + + undef $db ; + untie @h; + unlink $Dfile; +} + +{ + # Check low-level API works with filter + + use warnings ; + use strict ; + my (@h, $db) ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(159, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + + + $db->filter_fetch_key (sub { ++ $_ } ); + $db->filter_store_key (sub { -- $_ } ); + $db->filter_fetch_value (sub { $_ = unpack("i", $_) } ); + $db->filter_store_value (sub { $_ = pack("i", $_) } ); + + $_ = 'fred'; + + my $key = 22 ; + my $value = 34 ; + + $db->put($key, $value) ; + ok 160, $key == 22; + ok 161, $value == 34 ; + ok 162, $_ eq 'fred'; + #print "k [$key][$value]\n" ; + + my $val ; + $db->get($key, $val) ; + ok 163, $key == 22; + ok 164, $val == 34 ; + ok 165, $_ eq 'fred'; + + $key = 51 ; + $value = 454; + $h[$key] = $value ; + ok 166, $key == 51; + ok 167, $value == 454 ; + ok 168, $_ eq 'fred'; + + undef $db ; + untie @h; + unlink $Dfile; +} + + +{ + # Regression Test for bug 30237 + # Check that substr can be used in the key to db_put + # and that db_put does not trigger the warning + # + # Use of uninitialized value in subroutine entry + + + use warnings ; + use strict ; + my (@h, $db) ; + my $status ; + my $Dfile = "xxy.db"; + unlink $Dfile; + + ok(169, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO) ); + + my $warned = ''; + local $SIG{__WARN__} = sub {$warned = $_[0]} ; + + # db-put with substr of key + my %remember = () ; + for my $ix ( 0 .. 2 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{substr($key,0, 1)} = $value ; + $db->put(substr($key,0, 1), $value) ; + } + + ok 170, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # db-put with substr of value + $warned = ''; + for my $ix ( 3 .. 5 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$ix} = $value ; + $db->put($ix, substr($value,0)) ; + } + + ok 171, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied array is not a problem, but check anyway + # substr of key + $warned = ''; + for my $ix ( 6 .. 8 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{substr($key,0,1)} = $value ; + $h[substr($key,0,1)] = $value ; + } + + ok 172, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + # via the tied array is not a problem, but check anyway + # substr of value + $warned = ''; + for my $ix ( 9 .. 10 ) + { + my $key = $ix . "data" ; + my $value = "value$ix" ; + $remember{$ix} = $value ; + $h[$ix] = substr($value,0) ; + } + + ok 173, $warned eq '' + or print "# Caught warning [$warned]\n" ; + + my %bad = () ; + my $key = ''; + for (my $status = $db->seq($key, $value, R_FIRST ) ; + $status == 0 ; + $status = $db->seq($key, $value, R_NEXT ) ) { + + #print "# key [$key] value [$value]\n" ; + if (defined $remember{$key} && defined $value && + $remember{$key} eq $value) { + delete $remember{$key} ; + } + else { + $bad{$key} = $value ; + } + } + + ok 174, keys %bad == 0 ; + ok 175, keys %remember == 0 ; + + print "# missing -- $key $value\n" while ($key, $value) = each %remember; + print "# bad -- $key $value\n" while ($key, $value) = each %bad; + + # Make sure this fix does not break code to handle an undef key + my $value = 'fred'; + $warned = ''; + $status = $db->put(undef, $value) ; + ok 176, $status == 0 + or print "# put failed - status $status\n"; + ok 177, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + print "# db_ver $DB_File::db_ver\n"; + $value = '' ; + $status = $db->get(undef, $value) ; + ok 178, $status == 0 + or print "# get failed - status $status\n" ; + ok(179, $db->get(undef, $value) == 0) or print "# get failed\n" ; + ok 180, $value eq 'fred' or print "# got [$value]\n" ; + ok 181, $warned eq '' + or print "# Caught warning [$warned]\n" ; + $warned = ''; + + undef $db ; + untie @h; + unlink $Dfile; +} + +# Only test splice if this is a newish version of Perl +exit unless $FA ; + +# Test SPLICE + +{ + # check that the splice warnings are under the same lexical control + # as their non-tied counterparts. + + use warnings; + use strict; + + my $a = ''; + my @a = (1); + local $SIG{__WARN__} = sub {$a = $_[0]} ; + + unlink $Dfile; + my @tied ; + + tie @tied, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO + or die "Can't open file: $!\n" ; + + # uninitialized offset + use warnings; + my $offset ; + $a = ''; + splice(@a, $offset); + ok(182, $a =~ /^Use of uninitialized value /); + $a = ''; + splice(@tied, $offset); + ok(183, $a =~ /^Use of uninitialized value in splice/); + + no warnings 'uninitialized'; + $a = ''; + splice(@a, $offset); + ok(184, $a eq ''); + $a = ''; + splice(@tied, $offset); + ok(185, $a eq ''); + + # uninitialized length + use warnings; + my $length ; + $a = ''; + splice(@a, 0, $length); + ok(186, $a =~ /^Use of uninitialized value /); + $a = ''; + splice(@tied, 0, $length); + ok(187, $a =~ /^Use of uninitialized value in splice/); + + no warnings 'uninitialized'; + $a = ''; + splice(@a, 0, $length); + ok(188, $a eq ''); + $a = ''; + splice(@tied, 0, $length); + ok(189, $a eq ''); + + # offset past end of array + use warnings; + $a = ''; + splice(@a, 3); + my $splice_end_array = ($a =~ /^splice\(\) offset past end of array/); + $a = ''; + splice(@tied, 3); + ok(190, !$splice_end_array || $a =~ /^splice\(\) offset past end of array/); + + no warnings 'misc'; + $a = ''; + splice(@a, 3); + ok(191, $a eq ''); + $a = ''; + splice(@tied, 3); + ok(192, $a eq ''); + + ok(193, safeUntie \@tied); + unlink $Dfile; +} + +# +# These are a few regression tests: bundles of five arguments to pass +# to test_splice(). The first four arguments correspond to those +# given to splice(), and the last says which context to call it in +# (scalar, list or void). +# +# The expected result is not needed because we get that by running +# Perl's built-in splice(). +# +my @tests = ([ [ 'falsely', 'dinosaur', 'remedy', 'commotion', + 'rarely', 'paleness' ], + -4, -2, + [ 'redoubled', 'Taylorize', 'Zoe', 'halogen' ], + 'void' ], + + [ [ 'a' ], -2, 1, [ 'B' ], 'void' ], + + [ [ 'Hartley', 'Islandia', 'assents', 'wishful' ], + 0, -4, + [ 'maids' ], + 'void' ], + + [ [ 'visibility', 'pocketful', 'rectangles' ], + -10, 0, + [ 'garbages' ], + 'void' ], + + [ [ 'sleeplessly' ], + 8, -4, + [ 'Margery', 'clearing', 'repercussion', 'clubs', + 'arise' ], + 'void' ], + + [ [ 'chastises', 'recalculates' ], + 0, 0, + [ 'momentariness', 'mediates', 'accents', 'toils', + 'regaled' ], + 'void' ], + + [ [ 'b', '' ], + 9, 8, + [ 'otrb', 'stje', 'ixrpw', 'vxfx', 'lhhf' ], + 'scalar' ], + + [ [ 'b', '' ], + undef, undef, + [ 'otrb', 'stje', 'ixrpw', 'vxfx', 'lhhf' ], + 'scalar' ], + + [ [ 'riheb' ], -8, undef, [], 'void' ], + + [ [ 'uft', 'qnxs', '' ], + 6, -2, + [ 'znp', 'mhnkh', 'bn' ], + 'void' ], + ); + +my $testnum = 194; +my $failed = 0; +my $tmp = "dbr$$"; +foreach my $test (@tests) { + my $err = test_splice(@$test); + if (defined $err) { + print STDERR "# failed: ", Dumper($test); + print STDERR "# error: $err\n"; + $failed = 1; + ok($testnum++, 0); + } + else { ok($testnum++, 1) } +} + +if ($failed) { + # Not worth running the random ones + print STDERR '# skipping ', $testnum++, "\n"; +} +else { + # A thousand randomly-generated tests + $failed = 0; + srand(0); + foreach (0 .. 1000 - 1) { + my $test = rand_test(); + my $err = test_splice(@$test); + if (defined $err) { + print STDERR "# failed: ", Dumper($test); + print STDERR "# error: $err\n"; + $failed = 1; + print STDERR "# skipping any remaining random tests\n"; + last; + } + } + + ok($testnum++, not $failed); +} + +die "testnum ($testnum) != total_tests ($total_tests) + 1" + if $testnum != $total_tests + 1; + +exit ; + +# Subroutines for SPLICE testing + +# test_splice() +# +# Test the new splice() against Perl's built-in one. The first four +# parameters are those passed to splice(), except that the lists must +# be (explicitly) passed by reference, and are not actually modified. +# (It's just a test!) The last argument specifies the context in +# which to call the functions: 'list', 'scalar', or 'void'. +# +# Returns: +# undef, if the two splices give the same results for the given +# arguments and context; +# +# an error message showing the difference, otherwise. +# +# Reads global variable $tmp. +# +sub test_splice { + die 'usage: test_splice(array, offset, length, list, context)' if @_ != 5; + my ($array, $offset, $length, $list, $context) = @_; + my @array = @$array; + my @list = @$list; + + unlink $tmp; + + my @h; + my $H = tie @h, 'DB_File', $tmp, O_CREAT|O_RDWR, 0644, $DB_RECNO + or die "cannot open $tmp: $!"; + + my $i = 0; + foreach ( @array ) { $h[$i++] = $_ } + + return "basic DB_File sanity check failed" + if list_diff(\@array, \@h); + + # Output from splice(): + # Returned value (munged a bit), error msg, warnings + # + my ($s_r, $s_error, @s_warnings); + + my $gather_warning = sub { push @s_warnings, $_[0] }; + if ($context eq 'list') { + my @r; + eval { + local $SIG{__WARN__} = $gather_warning; + @r = splice @array, $offset, $length, @list; + }; + $s_error = $@; + $s_r = \@r; + } + elsif ($context eq 'scalar') { + my $r; + eval { + local $SIG{__WARN__} = $gather_warning; + $r = splice @array, $offset, $length, @list; + }; + $s_error = $@; + $s_r = [ $r ]; + } + elsif ($context eq 'void') { + eval { + local $SIG{__WARN__} = $gather_warning; + splice @array, $offset, $length, @list; + }; + $s_error = $@; + $s_r = []; + } + else { + die "bad context $context"; + } + + foreach ($s_error, @s_warnings) { + chomp; + s/ at \S+ line \d+\.$//; + # only built-in splice identifies name of uninit value + s/(uninitialized value) \$\w+/$1/; + } + + # Now do the same for DB_File's version of splice + my ($ms_r, $ms_error, @ms_warnings); + $gather_warning = sub { push @ms_warnings, $_[0] }; + if ($context eq 'list') { + my @r; + eval { + local $SIG{__WARN__} = $gather_warning; + @r = splice @h, $offset, $length, @list; + }; + $ms_error = $@; + $ms_r = \@r; + } + elsif ($context eq 'scalar') { + my $r; + eval { + local $SIG{__WARN__} = $gather_warning; + $r = splice @h, $offset, $length, @list; + }; + $ms_error = $@; + $ms_r = [ $r ]; + } + elsif ($context eq 'void') { + eval { + local $SIG{__WARN__} = $gather_warning; + splice @h, $offset, $length, @list; + }; + $ms_error = $@; + $ms_r = []; + } + else { + die "bad context $context"; + } + + foreach ($ms_error, @ms_warnings) { + chomp; + s/ at \S+(\s+\S+)*? line \d+\.?.*//s; + } + + return "different errors: '$s_error' vs '$ms_error'" + if $s_error ne $ms_error; + return('different return values: ' . Dumper($s_r) . ' vs ' . Dumper($ms_r)) + if list_diff($s_r, $ms_r); + return('different changed list: ' . Dumper(\@array) . ' vs ' . Dumper(\@h)) + if list_diff(\@array, \@h); + + if ((scalar @s_warnings) != (scalar @ms_warnings)) { + return 'different number of warnings'; + } + + while (@s_warnings) { + my $sw = shift @s_warnings; + my $msw = shift @ms_warnings; + + if (defined $sw and defined $msw) { + $msw =~ s/ \(.+\)$//; + $msw =~ s/ in splice$// if $] < 5.006; + if ($sw ne $msw) { + return "different warning: '$sw' vs '$msw'"; + } + } + elsif (not defined $sw and not defined $msw) { + # Okay. + } + else { + return "one warning defined, another undef"; + } + } + + undef $H; + untie @h; + + open(TEXT, $tmp) or die "cannot open $tmp: $!"; + @h = ; normalise @h; chomp @h; + close TEXT or die "cannot close $tmp: $!"; + return('list is different when re-read from disk: ' + . Dumper(\@array) . ' vs ' . Dumper(\@h)) + if list_diff(\@array, \@h); + + unlink $tmp; + + return undef; # success +} + + +# list_diff() +# +# Do two lists differ? +# +# Parameters: +# reference to first list +# reference to second list +# +# Returns true iff they differ. Only works for lists of (string or +# undef). +# +# Surely there is a better way to do this? +# +sub list_diff { + die 'usage: list_diff(ref to first list, ref to second list)' + if @_ != 2; + my ($a, $b) = @_; + my @a = @$a; my @b = @$b; + return 1 if (scalar @a) != (scalar @b); + for (my $i = 0; $i < @a; $i++) { + my ($ae, $be) = ($a[$i], $b[$i]); + if (defined $ae and defined $be) { + return 1 if $ae ne $be; + } + elsif (not defined $ae and not defined $be) { + # Two undefined values are 'equal' + } + else { + return 1; + } + } + return 0; +} + + +# rand_test() +# +# Think up a random ARRAY, OFFSET, LENGTH, LIST, and context. +# ARRAY or LIST might be empty, and OFFSET or LENGTH might be +# undefined. Return a 'test' - a listref of these five things. +# +sub rand_test { + die 'usage: rand_test()' if @_; + my @contexts = qw; + my $context = $contexts[int(rand @contexts)]; + return [ rand_list(), + (rand() < 0.5) ? (int(rand(20)) - 10) : undef, + (rand() < 0.5) ? (int(rand(20)) - 10) : undef, + rand_list(), + $context ]; +} + + +sub rand_list { + die 'usage: rand_list()' if @_; + my @r; + + while (rand() > 0.1 * (scalar @r + 1)) { + push @r, rand_word(); + } + return \@r; +} + + +sub rand_word { + die 'usage: rand_word()' if @_; + my $r = ''; + my @chars = qw; + while (rand() > 0.1 * (length($r) + 1)) { + $r .= $chars[int(rand(scalar @chars))]; + } + return $r; +} + + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/t/pod.t b/fastSum/resources/ROUGE/DB_File-1.835/t/pod.t new file mode 100644 index 0000000000000000000000000000000000000000..230df4bd9c3d04eb5fa60bb367a3065a02e24485 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/t/pod.t @@ -0,0 +1,18 @@ +eval " use Test::More " ; + +if ($@) +{ + print "1..0 # Skip: Test::More required for testing POD\n" ; + exit 0; +} + +eval "use Test::Pod 1.00"; + +if ($@) +{ + print "1..0 # Skip: Test::Pod 1.00 required for testing POD\n" ; + exit 0; +} + +all_pod_files_ok(); + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/t/pod.t.bak b/fastSum/resources/ROUGE/DB_File-1.835/t/pod.t.bak new file mode 100644 index 0000000000000000000000000000000000000000..230df4bd9c3d04eb5fa60bb367a3065a02e24485 --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/t/pod.t.bak @@ -0,0 +1,18 @@ +eval " use Test::More " ; + +if ($@) +{ + print "1..0 # Skip: Test::More required for testing POD\n" ; + exit 0; +} + +eval "use Test::Pod 1.00"; + +if ($@) +{ + print "1..0 # Skip: Test::Pod 1.00 required for testing POD\n" ; + exit 0; +} + +all_pod_files_ok(); + diff --git a/fastSum/resources/ROUGE/DB_File-1.835/typemap b/fastSum/resources/ROUGE/DB_File-1.835/typemap new file mode 100644 index 0000000000000000000000000000000000000000..c46b6851d764753cf64138a9def6df539ee303da --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/typemap @@ -0,0 +1,57 @@ +# typemap for Perl 5 interface to Berkeley +# +# written by Paul Marquess +# last modified 20th June 2004 +# version 1.809 +# +#################################### DB SECTION +# +# + +u_int T_U_INT +DB_File T_PTROBJ +DBT T_dbtdatum +DBTKEY T_dbtkeydatum + +INPUT +T_dbtkeydatum + { + SV * my_sv = $arg; + DBM_ckFilter(my_sv, filter_store_key, \"filter_store_key\"); + DBT_clear($var) ; + SvGETMAGIC(my_sv) ; + if (db->type == DB_RECNO) { + if (SvOK(my_sv)) + Value = GetRecnoKey(aTHX_ db, SvIV(my_sv)) ; + else + Value = 1 ; + $var.data = & Value; + $var.size = (int)sizeof(recno_t); + } + else if (SvOK(my_sv)) { + STRLEN len; + $var.data = SvPVbyte(my_sv, len); + $var.size = (int)len; + } + } +T_dbtdatum + { + SV * my_sv = $arg; + DBM_ckFilter(my_sv, filter_store_value, \"filter_store_value\"); + DBT_clear($var) ; + SvGETMAGIC(my_sv) ; + if (SvOK(my_sv)) { + STRLEN len; + $var.data = SvPVbyte(my_sv, len); + $var.size = (int)len; + } + } + +OUTPUT + +T_dbtkeydatum + OutputKey($arg, $var) +T_dbtdatum + OutputValue($arg, $var) +T_PTROBJ + sv_setref_pv($arg, dbtype, (void*)$var); diff --git a/fastSum/resources/ROUGE/DB_File-1.835/version.c b/fastSum/resources/ROUGE/DB_File-1.835/version.c new file mode 100644 index 0000000000000000000000000000000000000000..e01f6f6fa3dc7687ac605364558b6aef9b92726b --- /dev/null +++ b/fastSum/resources/ROUGE/DB_File-1.835/version.c @@ -0,0 +1,83 @@ +/* + + version.c -- Perl 5 interface to Berkeley DB + + written by Paul Marquess + last modified 2nd Jan 2002 + version 1.802 + + All comments/suggestions/problems are welcome + + Copyright (c) 1995-2002 Paul Marquess. All rights reserved. + This program is free software; you can redistribute it and/or + modify it under the same terms as Perl itself. + + Changes: + 1.71 - Support for Berkeley DB version 3. + Support for Berkeley DB 2/3's backward compatibility mode. + 1.72 - No change. + 1.73 - Added support for threading + 1.74 - Added Perl core patch 7801. + + +*/ + +#define PERL_NO_GET_CONTEXT +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#include + +void +#ifdef CAN_PROTOTYPE +__getBerkeleyDBInfo(void) +#else +__getBerkeleyDBInfo() +#endif +{ +#ifdef dTHX + dTHX; +#endif + SV * version_sv = perl_get_sv("DB_File::db_version", GV_ADD|GV_ADDMULTI) ; + SV * ver_sv = perl_get_sv("DB_File::db_ver", GV_ADD|GV_ADDMULTI) ; + SV * compat_sv = perl_get_sv("DB_File::db_185_compat", GV_ADD|GV_ADDMULTI) ; + +#ifdef DB_VERSION_MAJOR + int Major, Minor, Patch ; + + (void)db_version(&Major, &Minor, &Patch) ; + + /* Check that the versions of db.h and libdb.a are the same */ + if (Major != DB_VERSION_MAJOR || Minor != DB_VERSION_MINOR ) + /* || Patch != DB_VERSION_PATCH) */ + + croak("\nDB_File was build with libdb version %d.%d.%d,\nbut you are attempting to run it with libdb version %d.%d.%d\n", + DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, + Major, Minor, Patch) ; + + /* check that libdb is recent enough -- we need 2.3.4 or greater */ + if (Major == 2 && (Minor < 3 || (Minor == 3 && Patch < 4))) + croak("DB_File needs Berkeley DB 2.3.4 or greater, you have %d.%d.%d\n", + Major, Minor, Patch) ; + + { + char buffer[40] ; + sprintf(buffer, "%d.%d", Major, Minor) ; + sv_setpv(version_sv, buffer) ; + sprintf(buffer, "%d.%03d%03d", Major, Minor, Patch) ; + sv_setpv(ver_sv, buffer) ; + } + +#else /* ! DB_VERSION_MAJOR */ + sv_setiv(version_sv, 1) ; + sv_setiv(ver_sv, 1) ; +#endif /* ! DB_VERSION_MAJOR */ + +#ifdef COMPAT185 + sv_setiv(compat_sv, 1) ; +#else /* ! COMPAT185 */ + sv_setiv(compat_sv, 0) ; +#endif /* ! COMPAT185 */ + +} diff --git a/fastSum/resources/ROUGE/DB_File-1.835/version.o b/fastSum/resources/ROUGE/DB_File-1.835/version.o new file mode 100644 index 0000000000000000000000000000000000000000..9bea205e5ae0fdd5e7d64c5d16f5c809fc5966c1 Binary files /dev/null and b/fastSum/resources/ROUGE/DB_File-1.835/version.o differ diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/README.txt b/fastSum/resources/ROUGE/RELEASE-1.5.5/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..863fd9cae8166f3e5a55ab06e89cd6ac35296db4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/README.txt @@ -0,0 +1,295 @@ +A Brief Introduction of the ROUGE Summary Evaluation Package +by Chin-Yew LIN +Univeristy of Southern California/Information Sciences Institute +05/26/2005 + +<> + +(1) Correct the resampling routine which ignores the last evaluation + item in the evaluation list. Therefore, the average scores reported + by ROUGE is only based on the first N-1 evaluation items. + Thanks Barry Schiffman at Columbia University to report this bug. + This bug only affects ROUGE-1.5.X. For pre-1.5 ROUGE, it only affects + the computation of confidence interval (CI) estimation, i.e. CI is only + estimated by the first N-1 evaluation items, but it *does not* affect + average scores. +(2) Correct stemming on multi-token BE heads and modifiers. + Previously, only single token heads and modifiers were assumed. +(3) Change read_text and read_text_LCS functions to read exact words or + bytes required by users. Previous versions carry out whitespace + compression and other string clear up actions before enforce the length + limit. +(4) Add the capability to score summaries in Basic Element (BE) + format by using option "-3", standing for BE triple. There are 6 + different modes in BE scoring. We suggest using *"-3 HMR"* on BEs + extracted from Minipar parse trees based on our correlation analysis + of BE-based scoring vs. human judgments on DUC 2002 & 2003 automatic + summaries. +(5) ROUGE now generates three scores (recall, precision and F-measure) + for each evaluation. Previously, only one score is generated + (recall). Precision and F-measure scores are useful when the target + summary length is not enforced. Only recall scores were necessary since + DUC guideline dictated the limit on summary length. For comparsion to + previous DUC results, please use the recall scores. The default alpha + weighting for computing F-measure is 0.5. Users can specify a + particular alpha weighting that fits their application scenario using + option "-p alpha-weight". Where *alpah-weight* is a number between 0 + and 1 inclusively. +(6) Pre-1.5 version of ROUGE used model average to compute the overall + ROUGE scores when there are multiple references. Starting from v1.5+, + ROUGE provides an option to use the best matching score among the + referenes as the final score. The model average option is specified + using "-f A" (for Average) and the best model option is specified + using "-f B" (for the Best). The "-f A" option is better when use + ROUGE in summarization evaluations; while "-f B" option is better when + use ROUGE in machine translation (MT) and definition + question-answering (DQA) evaluations since in a typical MT or DQA + evaluation scenario matching a single reference translation or + defintion answer is sufficient. However, it is very likely that + multiple different but equally good summaries exist in summarization + evaluation. +(7) ROUGE v1.5+ also provides the option to specify whether model unit + level average will be used (macro-average, i.e. treating every model + unit equally) or token level average will be used (micro-average, + i.e. treating every token equally). In summarization evaluation, we + suggest using model unit level average and this is the default setting + in ROUGE. To specify other average mode, use "-t 0" (default) for + model unit level average, "-t 1" for token level average and "-t 2" + for output raw token counts in models, peers, and matches. +(8) ROUGE now offers the option to use file list as the configuration + file. The input format of the summary files are specified using the + "-z INPUT-FORMAT" option. The INPUT-FORMAT can be SEE, SPL, ISI or + SIMPLE. When "-z" is specified, ROUGE assumed that the ROUGE + evalution configuration file is a file list with each evaluation + instance per line in the following format: + +peer_path1 model_path1 model_path2 ... model_pathN +peer_path2 model_path1 model_path2 ... model_pathN +... +peer_pathM model_path1 model_path2 ... model_pathN + + The first file path is the peer summary (system summary) and it + follows with a list of model summaries (reference summaries) separated + by white spaces (spaces or tabs). +(9) When stemming is applied, a new WordNet exception database based + on WordNet 2.0 is used. The new database is included in the data + directory. + +<> + +(1) Use "-h" option to see a list of options. + Summary: +Usage: ROUGE-1.5.4.pl + [-a (evaluate all systems)] + [-c cf] + [-d (print per evaluation scores)] + [-e ROUGE_EVAL_HOME] + [-h (usage)] + [-b n-bytes|-l n-words] + [-m (use Porter stemmer)] + [-n max-ngram] + [-s (remove stopwords)] + [-r number-of-samples (for resampling)] + [-2 max-gap-length (if < 0 then no gap length limit)] + [-3 ] + [-u (include unigram in skip-bigram) default no)] + [-U (same as -u but also compute regular skip-bigram)] + [-w weight (weighting factor for WLCS)] + [-v (verbose)] + [-x (do not calculate ROUGE-L)] + [-f A|B (scoring formula)] + [-p alpha (0 <= alpha <=1)] + [-t 0|1|2 (count by token instead of sentence)] + [-z ] + [] + + ROUGE-eval-config-file: Specify the evaluation setup. Three files come with the ROUGE + evaluation package, i.e. ROUGE-test.xml, verify.xml, and verify-spl.xml are + good examples. + + systemID: Specify which system in the ROUGE-eval-config-file to perform the evaluation. + If '-a' option is used, then all systems are evaluated and users do not need to + provide this argument. + + Default: + When running ROUGE without supplying any options (except -a), the following defaults are used: + (1) ROUGE-L is computed; + (2) 95% confidence interval; + (3) No stemming; + (4) Stopwords are inlcuded in the calculations; + (5) ROUGE looks for its data directory first through the ROUGE_EVAL_HOME environment variable. If + it is not set, the current directory is used. + (6) Use model average scoring formula. + (7) Assign equal importance of ROUGE recall and precision in computing ROUGE f-measure, i.e. alpha=0.5. + (8) Compute average ROUGE by averaging sentence (unit) ROUGE scores. + Options: + -2: Compute skip bigram (ROGUE-S) co-occurrence, also specify the maximum gap length between two words (skip-bigram) + -u: Compute skip bigram as -2 but include unigram, i.e. treat unigram as "start-sentence-symbol unigram"; -2 has to be specified. + -3: Compute BE score. + H -> head only scoring (does not applied to Minipar-based BEs). + HM -> head and modifier pair scoring. + HMR -> head, modifier and relation triple scoring. + HM1 -> H and HM scoring (same as HM for Minipar-based BEs). + HMR1 -> HM and HMR scoring (same as HMR for Minipar-based BEs). + HMR2 -> H, HM and HMR scoring (same as HMR for Minipar-based BEs). + -a: Evaluate all systems specified in the ROUGE-eval-config-file. + -c: Specify CF\% (0 <= CF <= 100) confidence interval to compute. The default is 95\% (i.e. CF=95). + -d: Print per evaluation average score for each system. + -e: Specify ROUGE_EVAL_HOME directory where the ROUGE data files can be found. + This will overwrite the ROUGE_EVAL_HOME specified in the environment variable. + -f: Select scoring formula: 'A' => model average; 'B' => best model + -h: Print usage information. + -b: Only use the first n bytes in the system/peer summary for the evaluation. + -l: Only use the first n words in the system/peer summary for the evaluation. + -m: Stem both model and system summaries using Porter stemmer before computing various statistics. + -n: Compute ROUGE-N up to max-ngram length will be computed. + -p: Relative importance of recall and precision ROUGE scores. Alpha -> 1 favors precision, Alpha -> 0 favors recall. + -s: Remove stopwords in model and system summaries before computing various statistics. + -t: Compute average ROUGE by averaging over the whole test corpus instead of sentences (units). + 0: use sentence as counting unit, 1: use token as couting unit, 2: same as 1 but output raw counts + instead of precision, recall, and f-measure scores. 2 is useful when computation of the final, + precision, recall, and f-measure scores will be conducted later. + -r: Specify the number of sampling point in bootstrap resampling (default is 1000). + Smaller number will speed up the evaluation but less reliable confidence interval. + -w: Compute ROUGE-W that gives consecutive matches of length L in an LCS a weight of 'L^weight' instead of just 'L' as in LCS. + Typically this is set to 1.2 or other number greater than 1. + -v: Print debugging information for diagnositic purpose. + -x: Do not calculate ROUGE-L. + -z: ROUGE-eval-config-file is a list of peer-model pair per line in the specified format (SEE|SPL|ISI|SIMPLE). + +(2) Please read RELEASE-NOTE.txt for information about updates from previous versions. + +(3) The following files coming with this package in the "sample-output" + directory are the expected output of the evaluation files in the + "sample-test" directory. + (a) use "data" as ROUGE_EVAL_HOME, compute 95% confidence interval, + compute ROUGE-L (longest common subsequence, default), + compute ROUGE-S* (skip bigram) without gap length limit, + compute also ROUGE-SU* (skip bigram with unigram), + run resampling 1000 times, + compute ROUGE-N (N=1 to 4), + compute ROUGE-W (weight = 1.2), and + compute these ROUGE scores for all systems: + ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a.out + > ROUGE-1.5.4.pl -e data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -a ROUGE-test.xml + + (b) Same as (a) but apply Porter's stemmer on the input: + ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a-m.out + > ROUGE-1.5.4.pl -e data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -m -a ROUGE-test.xml + + (c) Same as (b) but apply also a stopword list on the input: + ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a-m-s.out + > ROUGE-1.5.4.pl -e data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -m -s -a ROUGE-test.xml + + (d) Same as (a) but apply a summary length limit of 10 words: + ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a.out + > ROUGE-1.5.4.pl -e data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -l 10 -a ROUGE-test.xml + + (e) Same as (d) but apply Porter's stemmer on the input: + ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a-m.out + > ROUGE-1.5.4.pl -e data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -l 10 -m -a ROUGE-test.xml + + (f) Same as (e) but apply also a stopword list on the input: + ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a-m-s.out + > ROUGE-1.5.4.pl -e data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -l 10 -m -s -a ROUGE-test.xml + + (g) Same as (a) but apply a summary lenght limit of 75 bytes: + ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a.out + > ROUGE-1.5.4.pl -e data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -b 75 -a ROUGE-test.xml + + (h) Same as (g) but apply Porter's stemmer on the input: + ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a-m.out + > ROUGE-1.5.4.pl -e data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -b 75 -m -a ROUGE-test.xml + + (i) Same as (h) but apply also a stopword list on the input: + ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a-m-s.out + > ROUGE-1.5.4.pl -e data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -b 75 -m -s -a ROUGE-test.xml + + Sample DUC2002 data (1 system and 1 model only per DUC 2002 topic), their BE and + ROUGE evaluation configuration file in XML and file list format, + and their expected output are also included for your reference. + + (a) Use DUC2002-BE-F.in.26.lst, a BE files list, as ROUGE the + configuration file: + command> ROUGE-1.5.4.pl -3 HM -z SIMPLE DUC2002-BE-F.in.26.lst 26 + output: DUC2002-BE-F.in.26.lst.out + (b) Use DUC2002-BE-F.in.26.simple.xml as ROUGE XML evaluation configuration file: + command> ROUGE-1.5.4.pl -3 HM DUC2002-BE-F.in.26.simple.xml 26 + output: DUC2002-BE-F.in.26.simple.out + (c) Use DUC2002-BE-L.in.26.lst, a BE files list, as ROUGE the + configuration file: + command> ROUGE-1.5.4.pl -3 HM -z SIMPLE DUC2002-BE-L.in.26.lst 26 + output: DUC2002-BE-L.in.26.lst.out + (d) Use DUC2002-BE-L.in.26.simple.xml as ROUGE XML evaluation configuration file: + command> ROUGE-1.5.4.pl -3 HM DUC2002-BE-L.in.26.simple.xml 26 + output: DUC2002-BE-L.in.26.simple.out + (e) Use DUC2002-ROUGE.in.26.spl.lst, a BE files list, as ROUGE the + configuration file: + command> ROUGE-1.5.4.pl -n 4 -z SPL DUC2002-ROUGE.in.26.spl.lst 26 + output: DUC2002-ROUGE.in.26.spl.lst.out + (f) Use DUC2002-ROUGE.in.26.spl.xml as ROUGE XML evaluation configuration file: + command> ROUGE-1.5.4.pl -n 4 DUC2002-ROUGE.in.26.spl.xml 26 + output: DUC2002-ROUGE.in.26.spl.out + +<> + +(1) You need to have DB_File installed. If the Perl script complains + about database version incompatibility, you can create a new + WordNet-2.0.exc.db by running the buildExceptionDB.pl script in + the "data/WordNet-2.0-Exceptions" subdirectory. +(2) You also need to install XML::DOM from http://www.cpan.org. + Direct link: http://www.cpan.org/modules/by-module/XML/XML-DOM-1.43.tar.gz. + You might need install extra Perl modules that are required by + XML::DOM. +(3) Setup an environment variable ROUGE_EVAL_HOME that points to the + "data" subdirectory. For example, if your "data" subdirectory + located at "/usr/local/ROUGE-1.5.4/data" then you can setup + the ROUGE_EVAL_HOME as follows: + (a) Using csh or tcsh: + $command_prompt>setenv ROUGE_EVAL_HOME /usr/local/ROUGE-1.5.4/data + (b) Using bash + $command_prompt>ROUGE_EVAL_HOME=/usr/local/ROUGE-1.5.4/data + $command_prompt>export ROUGE_EVAL_HOME +(4) Run ROUGE-1.5.4.pl without supplying any arguments will give + you a description of how to use the ROUGE script. +(5) Please look into the included ROUGE-test.xml, verify.xml. and + verify-spl.xml evaluation configuration files for preparing your + own evaluation setup. More detailed description will be provided + later. ROUGE-test.xml and verify.xml specify the input from + systems and references are in SEE (Summary Evaluation Environment) + format (http://www.isi.edu/~cyl/SEE); while verify-spl.xml specify + inputs are in sentence per line format. + +<> + +(1) Please look into the "docs" directory for more information about + ROUGE. +(2) ROUGE-Note-v1.4.2.pdf explains how ROUGE works. It was published in + Proceedings of the Workshop on Text Summarization Branches Out + (WAS 2004), Bacelona, Spain, 2004. +(3) NAACL2003.pdf presents the initial idea of applying n-gram + co-occurrence statistics in automatic evaluation of + summarization. It was publised in Proceedsings of 2003 Language + Technology Conference (HLT-NAACL 2003), Edmonton, Canada, 2003. +(4) NTCIR2004.pdf discusses the effect of sample size on the + reliability of automatic evaluation results using data in the past + Document Understanding Conference (DUC) as examples. It was + published in Proceedings of the 4th NTCIR Meeting, Tokyo, Japan, 2004. +(5) ACL2004.pdf shows how ROUGE can be applied on automatic evaluation + of machine translation. It was published in Proceedings of the 42nd + Annual Meeting of the Association for Computational Linguistics + (ACL 2004), Barcelona, Spain, 2004. +(6) COLING2004.pdf proposes a new meta-evaluation framework, ORANGE, for + automatic evaluation of automatic evaluation methods. We showed + that ROUGE-S and ROUGE-L were significantly better than BLEU, + NIST, WER, and PER automatic MT evalaution methods under the + ORANGE framework. It was published in Proceedings of the 20th + International Conference on Computational Linguistics (COLING 2004), + Geneva, Switzerland, 2004. +(7) For information about BE, please go to http://www.isi.edu/~cyl/BE. + +<> + + Thanks for using the ROUGE evaluation package. If you have any +questions or comments, please send them to cyl@isi.edu. I will do my +best to answer your questions. diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/RELEASE-NOTE.txt b/fastSum/resources/ROUGE/RELEASE-1.5.5/RELEASE-NOTE.txt new file mode 100644 index 0000000000000000000000000000000000000000..39547b9578e58fd99943b52150b398de158d4c11 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/RELEASE-NOTE.txt @@ -0,0 +1,232 @@ +# Revision Note: 05/26/2005, Chin-Yew LIN +# 1.5.5 +# (1) Correct stemming on multi-token BE heads and modifiers. +# Previously, only single token heads and modifiers were assumed. +# (2) Correct the resampling routine which ignores the last evaluation +# item in the evaluation list. Therefore, the average scores reported +# by ROUGE is only based on the first N-1 evaluation items. +# Thanks Barry Schiffman at Columbia University to report this bug. +# This bug only affects ROUGE-1.5.X. For pre-1.5 ROUGE, it only affects +# the computation of confidence interval (CI) estimation, i.e. CI is only +# estimated by the first N-1 evaluation items, but it *does not* affect +# average scores. +# (3) Change read_text and read_text_LCS functions to read exact words or +# bytes required by users. Previous versions carry out whitespace +# compression and other string clear up actions before enforce the length +# limit. +# 1.5.4.1 +# (1) Minor description change about "-t 0" option. +# 1.5.4 +# (1) Add easy evalution mode for single reference evaluations with -z +# option. +# 1.5.3 +# (1) Add option to compute ROUGE score based on SIMPLE BE format. Given +# a set of peer and model summary file in BE format with appropriate +# options, ROUGE will compute matching scores based on BE lexical +# matches. +# There are 6 options: +# 1. H : Head only match. This is similar to unigram match but +# only BE Head is used in matching. BEs generated by +# Minipar-based breaker do not include head-only BEs, +# therefore, the score will always be zero. Use HM or HMR +# optiions instead. +# 2. HM : Head and modifier match. This is similar to bigram or +# skip bigram but it's head-modifier bigram match based on +# parse result. Only BE triples with non-NIL modifier are +# included in the matching. +# 3. HMR : Head, modifier, and relation match. This is similar to +# trigram match but it's head-modifier-relation trigram +# match based on parse result. Only BE triples with non-NIL +# relation are included in the matching. +# 4. HM1 : This is combination of H and HM. It is similar to unigram + +# bigram or skip bigram with unigram match but it's +# head-modifier bigram match based on parse result. +# In this case, the modifier field in a BE can be "NIL" +# 5. HMR1 : This is combination of HM and HMR. It is similar to +# trigram match but it's head-modifier-relation trigram +# match based on parse result. In this case, the relation +# field of the BE can be "NIL". +# 6. HMR2 : This is combination of H, HM and HMR. It is similar to +# trigram match but it's head-modifier-relation trigram +# match based on parse result. In this case, the modifier and +# relation fields of the BE can both be "NIL". +# 1.5.2 +# (1) Add option to compute ROUGE score by token using the whole corpus +# as average unit instead of individual sentences. Previous versions of +# ROUGE uses sentence (or unit) boundary to break counting unit and takes +# the average score from the counting unit as the final score. +# Using the whole corpus as one single counting unit can potentially +# improve the reliablity of the final score that treats each token as +# equally important; while the previous approach considers each sentence as +# equally important that ignores the length effect of each individual +# sentences (i.e. long sentences contribute equal weight to the final +# score as short sentences.) +# +v1.2 provide a choice of these two counting modes that users can +# choose the one that fits their scenarios. +# 1.5.1 +# (1) Add precision oriented measure and f-measure to deal with different lengths +# in candidates and references. Importance between recall and precision can +# be controled by 'alpha' parameter: +# alpha -> 0: recall is more important +# alpha -> 1: precision is more important +# Following Chapter 7 in C.J. van Rijsbergen's "Information Retrieval". +# http://www.dcs.gla.ac.uk/Keith/Chapter.7/Ch.7.html +# F = 1/(alpha * (1/P) + (1 - alpha) * (1/R)) ;;; weighted harmonic mean +# 1.4.2 +# (1) Enforce length limit at the time when summary text is read. Previously (before +# and including v1.4.1), length limit was enforced at tokenization time. +# 1.4.1 +# (1) Fix potential over counting in ROUGE-L and ROUGE-W +# In previous version (i.e. 1.4 and order), LCS hit is computed +# by summing union hit over all model sentences. Each model sentence +# is compared with all peer sentences and mark the union LCS. The +# length of the union LCS is the hit of that model sentence. The +# final hit is then sum over all model union LCS hits. This potentially +# would over count a peer sentence which already been marked as contributed +# to some other model sentence. Therefore, double counting is resulted. +# This is seen in evalution where ROUGE-L score is higher than ROUGE-1 and +# this is not correct. +# ROUGEeval-1.4.1.pl fixes this by add a clip function to prevent +# double counting. +# 1.4 +# (1) Remove internal Jackknifing procedure: +# Now the ROUGE script will use all the references listed in the +# section in each section and no +# automatic Jackknifing is performed. +# If Jackknifing procedure is required when comparing human and system +# performance, then users have to setup the procedure in the ROUGE +# evaluation configuration script as follows: +# For example, to evaluate system X with 4 references R1, R2, R3, and R4. +# We do the following computation: +# +# for system: and for comparable human: +# s1 = X vs. R1, R2, R3 h1 = R4 vs. R1, R2, R3 +# s2 = X vs. R1, R3, R4 h2 = R2 vs. R1, R3, R4 +# s3 = X vs. R1, R2, R4 h3 = R3 vs. R1, R2, R4 +# s4 = X vs. R2, R3, R4 h4 = R1 vs. R2, R3, R4 +# +# Average system score for X = (s1+s2+s3+s4)/4 and for human = (h1+h2+h3+h4)/4 +# Implementation of this in a ROUGE evaluation configuration script is as follows: +# Instead of writing all references in a evaluation section as below: +# +# ... +# +#

systemX +# +# +# R1 +# R2 +# R3 +# R4 +# +# +# we write the following: +# +# +#

systemX +# +# +# R2 +# R3 +# R4 +# +# +# +# +#

systemX +# +# +# R1 +# R3 +# R4 +# +# +# +# +#

systemX +# +# +# R1 +# R2 +# R4 +# +# +# +# +#

systemX +# +# +# R1 +# R2 +# R3 +# +# +# +# In this case, the system and human numbers are comparable. +# ROUGE as it is implemented for summarization evaluation is a recall-based metric. +# As we increase the number of references, we are increasing the number of +# count units (n-gram or skip-bigram or LCSes) in the target pool (i.e. +# the number ends up in the denominator of any ROUGE formula is larger). +# Therefore, a candidate summary has more chance to hit but it also has to +# hit more. In the end, this means lower absolute ROUGE scores when more +# references are used and using different sets of rerferences should not +# be compared to each other. There is no nomalization mechanism in ROUGE +# to properly adjust difference due to different number of references used. +# +# In the ROUGE implementations before v1.4 when there are N models provided for +# evaluating system X in the ROUGE evaluation script, ROUGE does the +# following: +# (1) s1 = X vs. R2, R3, R4, ..., RN +# (2) s2 = X vs. R1, R3, R4, ..., RN +# (3) s3 = X vs. R1, R2, R4, ..., RN +# (4) s4 = X vs. R1, R2, R3, ..., RN +# (5) ... +# (6) sN= X vs. R1, R2, R3, ..., RN-1 +# And the final ROUGE score is computed by taking average of (s1, s2, s3, +# s4, ..., sN). When we provide only three references for evaluation of a +# human summarizer, ROUGE does the same thing but using 2 out 3 +# references, get three numbers, and then take the average as the final +# score. Now ROUGE (after v1.4) will use all references without this +# internal Jackknifing procedure. The speed of the evaluation should improve +# a lot, since only one set instead of four sets of computation will be +# conducted. +# 1.3 +# (1) Add skip bigram +# (2) Add an option to specify the number of sampling point (default is 1000) +# 1.2.3 +# (1) Correct the enviroment variable option: -e. Now users can specify evironment +# variable ROUGE_EVAL_HOME using the "-e" option; previously this option is +# not active. Thanks Zhouyan Li of Concordia University, Canada pointing this +# out. +# 1.2.2 +# (1) Correct confidence interval calculation for median, maximum, and minimum. +# Line 390. +# 1.2.1 +# (1) Add sentence per line format input format. See files in Verify-SPL for examples. +# (2) Streamline command line arguments. +# (3) Use bootstrap resampling to estimate confidence intervals instead of using t-test +# or z-test which assume a normal distribution. +# (4) Add LCS (longest common subsequence) evaluation method. +# (5) Add WLCS (weighted longest common subsequence) evaluation method. +# (6) Add length cutoff in bytes. +# (7) Add an option to specify the longest ngram to compute. The default is 4. +# 1.2 +# (1) Change zero condition check in subroutine &computeNGramScores when +# computing $gram1Score from +# if($totalGram2Count!=0) to +# if($totalGram1Count!=0) +# Thanks Ken Litkowski for this bug report. +# This original script will set gram1Score to zero if there is no +# bigram matches. This should rarely has significant affect the final score +# since (a) there are bigram matches most of time; (b) the computation +# of gram1Score is using Jackknifing procedure. However, this definitely +# did not compute the correct $gram1Score when there is no bigram matches. +# Therefore, users of version 1.1 should definitely upgrade to newer +# version of the script that does not contain this bug. +# Note: To use this script, two additional data files are needed: +# (1) smart_common_words.txt - contains stopword list from SMART IR engine +# (2) WordNet-1.6.exc.db - WordNet 1.6 exception inflexion database +# These two files have to be put in a directory pointed by the environment +# variable: "ROUGE_EVAL_HOME". +# If environment variable ROUGE_EVAL_HOME does not exist, this script will +# will assume it can find these two database files in the current directory. diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/ROUGE-1.5.5.pl b/fastSum/resources/ROUGE/RELEASE-1.5.5/ROUGE-1.5.5.pl new file mode 100644 index 0000000000000000000000000000000000000000..c37963c1c501e6ee9de37816ff9d0a7dbe9269ff --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/ROUGE-1.5.5.pl @@ -0,0 +1,3294 @@ +#!/usr/bin/perl -w +# Version: ROUGE v1.5.5 +# Date: 05/26/2005,05/19/2005,04/26/2005,04/03/2005,10/28/2004,10/25/2004,10/21/2004 +# Author: Chin-Yew Lin +# Description: Given an evaluation description file, for example: test.xml, +# this script computes the averages of the average ROUGE scores for +# the evaluation pairs listed in the ROUGE evaluation configuration file. +# For more information, please see: +# http://www.isi.edu/~cyl/ROUGE +# For more information about Basic Elements, please see: +# http://www.isi.edu/~cyl/BE +# Revision Note: +# 1.5.5 +# (1) Correct stemming on multi-token BE heads and modifiers. +# Previously, only single token heads and modifiers were assumed. +# (2) Correct the resampling routine which ignores the last evaluation +# item in the evaluation list. Therefore, the average scores reported +# by ROUGE is only based on the first N-1 evaluation items. +# Thanks Barry Schiffman at Columbia University to report this bug. +# This bug only affects ROUGE-1.5.X. For pre-1.5 ROUGE, it only affects +# the computation of confidence interval (CI) estimation, i.e. CI is only +# estimated by the first N-1 evaluation items, but it *does not* affect +# average scores. +# (3) Change read_text and read_text_LCS functions to read exact words or +# bytes required by users. Previous versions carry out whitespace +# compression and other string clear up actions before enforce the length +# limit. +# 1.5.4.1 +# (1) Minor description change about "-t 0" option. +# 1.5.4 +# (1) Add easy evalution mode for single reference evaluations with -z +# option. +# 1.5.3 +# (1) Add option to compute ROUGE score based on SIMPLE BE format. Given +# a set of peer and model summary file in BE format with appropriate +# options, ROUGE will compute matching scores based on BE lexical +# matches. +# There are 6 options: +# 1. H : Head only match. This is similar to unigram match but +# only BE Head is used in matching. BEs generated by +# Minipar-based breaker do not include head-only BEs, +# therefore, the score will always be zero. Use HM or HMR +# optiions instead. +# 2. HM : Head and modifier match. This is similar to bigram or +# skip bigram but it's head-modifier bigram match based on +# parse result. Only BE triples with non-NIL modifier are +# included in the matching. +# 3. HMR : Head, modifier, and relation match. This is similar to +# trigram match but it's head-modifier-relation trigram +# match based on parse result. Only BE triples with non-NIL +# relation are included in the matching. +# 4. HM1 : This is combination of H and HM. It is similar to unigram + +# bigram or skip bigram with unigram match but it's +# head-modifier bigram match based on parse result. +# In this case, the modifier field in a BE can be "NIL" +# 5. HMR1 : This is combination of HM and HMR. It is similar to +# trigram match but it's head-modifier-relation trigram +# match based on parse result. In this case, the relation +# field of the BE can be "NIL". +# 6. HMR2 : This is combination of H, HM and HMR. It is similar to +# trigram match but it's head-modifier-relation trigram +# match based on parse result. In this case, the modifier and +# relation fields of the BE can both be "NIL". +# 1.5.2 +# (1) Add option to compute ROUGE score by token using the whole corpus +# as average unit instead of individual sentences. Previous versions of +# ROUGE uses sentence (or unit) boundary to break counting unit and takes +# the average score from the counting unit as the final score. +# Using the whole corpus as one single counting unit can potentially +# improve the reliablity of the final score that treats each token as +# equally important; while the previous approach considers each sentence as +# equally important that ignores the length effect of each individual +# sentences (i.e. long sentences contribute equal weight to the final +# score as short sentences.) +# +v1.2 provide a choice of these two counting modes that users can +# choose the one that fits their scenarios. +# 1.5.1 +# (1) Add precision oriented measure and f-measure to deal with different lengths +# in candidates and references. Importance between recall and precision can +# be controled by 'alpha' parameter: +# alpha -> 0: recall is more important +# alpha -> 1: precision is more important +# Following Chapter 7 in C.J. van Rijsbergen's "Information Retrieval". +# http://www.dcs.gla.ac.uk/Keith/Chapter.7/Ch.7.html +# F = 1/(alpha * (1/P) + (1 - alpha) * (1/R)) ;;; weighted harmonic mean +# 1.4.2 +# (1) Enforce length limit at the time when summary text is read. Previously (before +# and including v1.4.1), length limit was enforced at tokenization time. +# 1.4.1 +# (1) Fix potential over counting in ROUGE-L and ROUGE-W +# In previous version (i.e. 1.4 and order), LCS hit is computed +# by summing union hit over all model sentences. Each model sentence +# is compared with all peer sentences and mark the union LCS. The +# length of the union LCS is the hit of that model sentence. The +# final hit is then sum over all model union LCS hits. This potentially +# would over count a peer sentence which already been marked as contributed +# to some other model sentence. Therefore, double counting is resulted. +# This is seen in evalution where ROUGE-L score is higher than ROUGE-1 and +# this is not correct. +# ROUGEeval-1.4.1.pl fixes this by add a clip function to prevent +# double counting. +# 1.4 +# (1) Remove internal Jackknifing procedure: +# Now the ROUGE script will use all the references listed in the +# section in each section and no +# automatic Jackknifing is performed. Please see RELEASE-NOTE.txt +# for more details. +# 1.3 +# (1) Add skip bigram +# (2) Add an option to specify the number of sampling point (default is 1000) +# 1.2.3 +# (1) Correct the enviroment variable option: -e. Now users can specify evironment +# variable ROUGE_EVAL_HOME using the "-e" option; previously this option is +# not active. Thanks Zhouyan Li of Concordia University, Canada pointing this +# out. +# 1.2.2 +# (1) Correct confidence interval calculation for median, maximum, and minimum. +# Line 390. +# 1.2.1 +# (1) Add sentence per line format input format. See files in Verify-SPL for examples. +# (2) Streamline command line arguments. +# (3) Use bootstrap resampling to estimate confidence intervals instead of using t-test +# or z-test which assume a normal distribution. +# (4) Add LCS (longest common subsequence) evaluation method. +# (5) Add WLCS (weighted longest common subsequence) evaluation method. +# (6) Add length cutoff in bytes. +# (7) Add an option to specify the longest ngram to compute. The default is 4. +# 1.2 +# (1) Change zero condition check in subroutine &computeNGramScores when +# computing $gram1Score from +# if($totalGram2Count!=0) to +# if($totalGram1Count!=0) +# Thanks Ken Litkowski for this bug report. +# This original script will set gram1Score to zero if there is no +# bigram matches. This should rarely has significant affect the final score +# since (a) there are bigram matches most of time; (b) the computation +# of gram1Score is using Jackknifing procedure. However, this definitely +# did not compute the correct $gram1Score when there is no bigram matches. +# Therefore, users of version 1.1 should definitely upgrade to newer +# version of the script that does not contain this bug. +# Note: To use this script, two additional data files are needed: +# (1) smart_common_words.txt - contains stopword list from SMART IR engine +# (2) WordNet-2.0.exc.db - WordNet 2.0 exception inflexion database +# These two files have to be put in a directory pointed by the environment +# variable: "ROUGE_EVAL_HOME". +# If environment variable ROUGE_EVAL_HOME does not exist, this script will +# will assume it can find these two database files in the current directory. +# COPYRIGHT (C) UNIVERSITY OF SOUTHERN CALIFORNIA, 2002,2003,2004 +# University of Southern California +# Information Sciences Institute +# 4676 Admiralty Way +# Marina Del Rey, California 90292-6695 +# +# This software was partially developed under SPAWAR Grant No. +# N66001-00-1-8916 , and the Government holds license rights under +# DAR 7-104.9(a)(c)(1). It is +# transmitted outside of the University of Southern California only under +# written license agreements or software exchange agreements, and its use +# is limited by these agreements. At no time shall any recipient use +# this software in any manner which conflicts or interferes with the +# governmental license rights or other provisions of the governing +# agreement under which it is obtained. It is supplied "AS IS," without +# any warranties of any kind. It is furnished only on the basis that any +# party who receives it indemnifies and holds harmless the parties who +# furnish and originate it against any claims, demands or liabilities +# connected with using it, furnishing it to others or providing it to a +# third party. THIS NOTICE MUST NOT BE REMOVED FROM THE SOFTWARE, +# AND IN THE EVENT THAT THE SOFTWARE IS DIVIDED, IT SHOULD BE +# ATTACHED TO EVERY PART. +# +# Contributor to its design is Chin-Yew Lin. + +use XML::DOM; +use DB_File; +use Getopt::Std; +#------------------------------------------------------------------------------------- +use vars qw($opt_a $opt_b $opt_c $opt_d $opt_e $opt_f $opt_h $opt_H $opt_m $opt_n $opt_p $opt_s $opt_t $opt_l $opt_v $opt_w $opt_2 $opt_u $opt_x $opt_U $opt_3 $opt_M $opt_z); +my $usageFull="$0\n [-a (evaluate all systems)] + [-c cf] + [-d (print per evaluation scores)] + [-e ROUGE_EVAL_HOME] + [-h (usage)] + [-H (detailed usage)] + [-b n-bytes|-l n-words] + [-m (use Porter stemmer)] + [-n max-ngram] + [-s (remove stopwords)] + [-r number-of-samples (for resampling)] + [-2 max-gap-length (if < 0 then no gap length limit)] + [-3 (for scoring based on BE)] + [-u (include unigram in skip-bigram) default no)] + [-U (same as -u but also compute regular skip-bigram)] + [-w weight (weighting factor for WLCS)] + [-v (verbose)] + [-x (do not calculate ROUGE-L)] + [-f A|B (scoring formula)] + [-p alpha (0 <= alpha <=1)] + [-t 0|1|2 (count by token instead of sentence)] + [-z ] + []\n +". + "ROUGE-eval-config-file: Specify the evaluation setup. Three files come with the ROUGE evaluation package, i.e.\n". + " ROUGE-test.xml, verify.xml, and verify-spl.xml are good examples.\n". + "systemID: Specify which system in the ROUGE-eval-config-file to perform the evaluation.\n". + " If '-a' option is used, then all systems are evaluated and users do not need to\n". + " provide this argument.\n". + "Default:\n". + " When running ROUGE without supplying any options (except -a), the following defaults are used:\n". + " (1) ROUGE-L is computed;\n". + " (2) 95% confidence interval;\n". + " (3) No stemming;\n". + " (4) Stopwords are inlcuded in the calculations;\n". + " (5) ROUGE looks for its data directory first through the ROUGE_EVAL_HOME environment variable. If\n". + " it is not set, the current directory is used.\n". + " (6) Use model average scoring formula.\n". + " (7) Assign equal importance of ROUGE recall and precision in computing ROUGE f-measure, i.e. alpha=0.5.\n". + " (8) Compute average ROUGE by averaging sentence (unit) ROUGE scores.\n". + "Options:\n". + " -2: Compute skip bigram (ROGUE-S) co-occurrence, also specify the maximum gap length between two words (skip-bigram)\n". + " -u: Compute skip bigram as -2 but include unigram, i.e. treat unigram as \"start-sentence-symbol unigram\"; -2 has to be specified.\n". + " -3: Compute BE score. Currently only SIMPLE BE triple format is supported.\n". + " H -> head only scoring (does not applied to Minipar-based BEs).\n". + " HM -> head and modifier pair scoring.\n". + " HMR -> head, modifier and relation triple scoring.\n". + " HM1 -> H and HM scoring (same as HM for Minipar-based BEs).\n". + " HMR1 -> HM and HMR scoring (same as HMR for Minipar-based BEs).\n". + " HMR2 -> H, HM and HMR scoring (same as HMR for Minipar-based BEs).\n". + " -a: Evaluate all systems specified in the ROUGE-eval-config-file.\n". + " -c: Specify CF\% (0 <= CF <= 100) confidence interval to compute. The default is 95\% (i.e. CF=95).\n". + " -d: Print per evaluation average score for each system.\n". + " -e: Specify ROUGE_EVAL_HOME directory where the ROUGE data files can be found.\n". + " This will overwrite the ROUGE_EVAL_HOME specified in the environment variable.\n". + " -f: Select scoring formula: 'A' => model average; 'B' => best model\n". + " -h: Print usage information.\n". + " -H: Print detailed usage information.\n". + " -b: Only use the first n bytes in the system/peer summary for the evaluation.\n". + " -l: Only use the first n words in the system/peer summary for the evaluation.\n". + " -m: Stem both model and system summaries using Porter stemmer before computing various statistics.\n". + " -n: Compute ROUGE-N up to max-ngram length will be computed.\n". + " -p: Relative importance of recall and precision ROUGE scores. Alpha -> 1 favors precision, Alpha -> 0 favors recall.\n". + " -s: Remove stopwords in model and system summaries before computing various statistics.\n". + " -t: Compute average ROUGE by averaging over the whole test corpus instead of sentences (units).\n". + " 0: use sentence as counting unit, 1: use token as couting unit, 2: same as 1 but output raw counts\n". + " instead of precision, recall, and f-measure scores. 2 is useful when computation of the final,\n". + " precision, recall, and f-measure scores will be conducted later.\n". + " -r: Specify the number of sampling point in bootstrap resampling (default is 1000).\n". + " Smaller number will speed up the evaluation but less reliable confidence interval.\n". + " -w: Compute ROUGE-W that gives consecutive matches of length L in an LCS a weight of 'L^weight' instead of just 'L' as in LCS.\n". + " Typically this is set to 1.2 or other number greater than 1.\n". + " -v: Print debugging information for diagnositic purpose.\n". + " -x: Do not calculate ROUGE-L.\n". + " -z: ROUGE-eval-config-file is a list of peer-model pair per line in the specified format (SEE|SPL|ISI|SIMPLE).\n"; + +my $usage="$0\n [-a (evaluate all systems)] + [-c cf] + [-d (print per evaluation scores)] + [-e ROUGE_EVAL_HOME] + [-h (usage)] + [-H (detailed usage)] + [-b n-bytes|-l n-words] + [-m (use Porter stemmer)] + [-n max-ngram] + [-s (remove stopwords)] + [-r number-of-samples (for resampling)] + [-2 max-gap-length (if < 0 then no gap length limit)] + [-3 (for scoring based on BE)] + [-u (include unigram in skip-bigram) default no)] + [-U (same as -u but also compute regular skip-bigram)] + [-w weight (weighting factor for WLCS)] + [-v (verbose)] + [-x (do not calculate ROUGE-L)] + [-f A|B (scoring formula)] + [-p alpha (0 <= alpha <=1)] + [-t 0|1|2 (count by token instead of sentence)] + [-z ] + [] +"; +getopts('ahHb:c:de:f:l:mMn:p:st:r:2:3:w:uUvxz:'); +my $systemID; + +die $usageFull if defined($opt_H); +die $usage if defined($opt_h)||@ARGV==0; +die "Please specify the ROUGE configuration file or use option '-h' for help\n" if(@ARGV==0); +if(@ARGV==1&&defined($opt_z)) { + $systemID="X"; # default system ID +} +elsif(@ARGV==1&&!defined($opt_a)) { + die "Please specify a system ID to evaluate or use option '-a' to evaluate all systems. For more information, use option '-h'.\n"; +} +elsif(@ARGV==2) { + $systemID=$ARGV[1]; +} +if(defined($opt_e)) { + $stopwords="$opt_e/smart_common_words.txt"; + $wordnetDB="$opt_e/WordNet-2.0.exc.db"; +} +else { + if(exists($ENV{"ROUGE_EVAL_HOME"})) { + $stopwords="$ENV{\"ROUGE_EVAL_HOME\"}/smart_common_words.txt"; + $wordnetDB="$ENV{\"ROUGE_EVAL_HOME\"}/WordNet-2.0.exc.db"; + } + elsif(exists($ENV{"RED_EVAL_HOME"})) { + $stopwords="$ENV{\"RED_EVAL_HOME\"}/smart_common_words.txt"; + $wordnetDB="$ENV{\"RED_EVAL_HOME\"}/WordNet-2.0.exc.db"; + } + else { + # if no environment variable exists then assume data files are in the current directory + $stopwords="smart_common_words.txt"; + $wordnetDB="WordNet-2.0.exc.db"; + } +} + +if(defined($opt_s)) { + $useStopwords=0; # do not use stop words +} +else { + $useStopwords=1; # use stop words +} + +if(defined($opt_l)&&defined($opt_b)) { + die "Please specify length limit in words or bytes but not both.\n"; +} + +if(defined($opt_l)) { + $lengthLimit=$opt_l; + $byteLimit=0; # no byte limit +} +elsif(defined($opt_b)) { + $lengthLimit=0; # no length limit in words + $byteLimit=$opt_b; +} +else { + $byteLimit=0; # no byte limit + $lengthLimit=0; # no length limit +} + +unless(defined($opt_c)) { + $opt_c=95; +} +else { + if($opt_c<0||$opt_c>100) { + die "Confidence interval should be within 0 and 100. Use option -h for more details.\n"; + } +} + +if(defined($opt_w)) { + if($opt_w>0) { + $weightFactor=$opt_w; + } + else { + die "ROUGE-W weight factor must greater than 0.\n"; + } +} +#unless(defined($opt_n)) { +# $opt_n=4; # default maximum ngram is 4 +#} +if(defined($opt_v)) { + $debug=1; +} +else { + $debug=0; +} + +if(defined($opt_r)) { + $numOfResamples=$opt_r; +} +else { + $numOfResamples=1000; +} + +if(defined($opt_2)) { + $skipDistance=$opt_2; +} + +if(defined($opt_3)) { + $BEMode=$opt_3; +} + +if(defined($opt_f)) { + $scoreMode=$opt_f; +} +else { + $scoreMode="A"; # default: use model average scoring formula +} + +if(defined($opt_p)) { + $alpha=$opt_p; + if($alpha<0|| + $alpha>1) { + die "Relative importance of ROUGE recall and precision has to be between 0 and 1 inclusively.\n"; + } +} +else { + $alpha=0.5; # default is equal importance of ROUGE recall and precision +} + +if(defined($opt_t)) { + # make $opt_t as undef when appropriate option is given + # when $opt_t is undef, sentence level average will be used + if($opt_t==0) { + $opt_t=undef; + } + elsif($opt_t!=1&& + $opt_t!=2) { + $opt_t=undef; # other than 1 or 2, let $opt_t to be undef + } +} + +if(defined($opt_z)) { + # If opt_z is specified, the user has to specify a system ID that + # is used for identification therefore -a option is not allowed. + # Here we make it undef. + $opt_a=undef; +} +#------------------------------------------------------------------------------------- +# Setup ROUGE scoring parameters +%ROUGEParam=(); # ROUGE scoring parameter +if(defined($lengthLimit)) { + $ROUGEParam{"LENGTH"}=$lengthLimit; +} +else { + $ROUGEParam{"LENGTH"}=undef; +} +if(defined($byteLimit)) { + $ROUGEParam{"BYTE"}=$byteLimit; +} +else { + $ROUGEParam{"BYTE"}=undef; +} +if(defined($opt_n)) { # ngram size + $ROUGEParam{"NSIZE"}=$opt_n; +} +else { + $ROUGEParam{"NSIZE"}=undef; +} +if(defined($weightFactor)) { + $ROUGEParam{"WEIGHT"}=$weightFactor; +} +else { + $ROUGEParam{"WEIGHT"}=undef; +} +if(defined($skipDistance)) { + $ROUGEParam{"SD"}=$skipDistance; +} +else { + $ROUGEParam{"SD"}=undef; +} +if(defined($scoreMode)) { + $ROUGEParam{"SM"}=$scoreMode; +} +else { + $ROUGEParam{"SM"}=undef; +} +if(defined($alpha)) { + $ROUGEParam{"ALPHA"}=$alpha; +} +else { + $ROUGEParam{"ALPHA"}=undef; +} +if(defined($opt_t)) { + $ROUGEParam{"AVERAGE"}=$opt_t; +} +else { + $ROUGEParam{"AVERAGE"}=undef; +} +if(defined($opt_3)) { + $ROUGEParam{"BEMODE"}=$opt_3; +} +else { + $ROUGEParam{"BEMODE"}=undef; +} +#------------------------------------------------------------------------------------- +# load stopwords +%stopwords=(); +open(STOP,$stopwords)||die "Cannot open $stopwords\n"; +while(defined($line=)) { + chomp($line); + $stopwords{$line}=1; +} +close(STOP); +# load WordNet database +if(-e "$wordnetDB") { + tie %exceptiondb,'DB_File',"$wordnetDB",O_RDONLY,0440,$DB_HASH or + die "Cannot open exception db file for reading: $wordnetDB\n"; +} +else { + die "Cannot open exception db file for reading: $wordnetDB\n"; +} +#------------------------------------------------------------------------------------- +# Initialize Porter Stemmer +&initialise(); +#------------------------------------------------------------------------------------- +# Read and parse the document +my $parser = new XML::DOM::Parser; +my $doc; +unless(defined($opt_z)) { + $doc=$parser->parsefile($ARGV[0]); +} +else { + open($doc,$ARGV[0])||die "Cannot open $ARGV[0]\n"; +} +%ROUGEEvals=(); +@ROUGEEvalIDs=(); +%ROUGEPeerIDTable=(); +@allPeerIDs=(); +%knownMissing=(); # remember missing submission already known +if(defined($doc)) { + # read evaluation description file + &readEvals(\%ROUGEEvals,\@ROUGEEvalIDs,\%ROUGEPeerIDTable,$doc,undef); + # print evaluation configuration + if(defined($opt_z)) { + if(defined($ARGV[1])) { + $systemID=$ARGV[1]; + } + else { + $systemID="X"; # default system ID in BE file list evaluation mode + } + push(@allPeerIDs,$systemID); + } + else { + unless(defined($opt_a)) { + $systemID=$ARGV[1]; + push(@allPeerIDs,$systemID); + } + else { + # run evaluation for each peer listed in the description file + @allPeerIDs=sort (keys %ROUGEPeerIDTable); + } + } + foreach $peerID (@allPeerIDs) { + %testIDs=(); + # print "\@PEER($peerID)--------------------------------------------------\n"; + if(defined($opt_n)) { + # evaluate a specific peer + # compute ROUGE score up to $opt_n-gram + for($n=1;$n<=$opt_n;$n++) { + my (%ROUGEScores,%ROUGEAverages); + + %ROUGEScores=(); + foreach $e (@ROUGEEvalIDs) { + if($debug) { + print "\@Eval ($e)\n"; + } + $ROUGEParam{"NSIZE"}=$n; + &computeROUGEX("N",\%ROUGEScores,$e,$ROUGEEvals{$e},$peerID,\%ROUGEParam); + } + # compute averages + %ROUGEAverages=(); + &computeAverages(\%ROUGEScores,\%ROUGEAverages,$opt_t); + &printResults($peerID,\%ROUGEAverages,\%ROUGEScores,"ROUGE-$n",$opt_c,$opt_t,$opt_d); + } + } + unless(defined($opt_x)||defined($opt_3)) { + #----------------------------------------------- + # compute LCS score + %ROUGEScores=(); + foreach $e (@ROUGEEvalIDs) { + &computeROUGEX("L",\%ROUGEScores,$e,$ROUGEEvals{$e},$peerID,\%ROUGEParam); + } + # compute averages + %ROUGEAverages=(); + &computeAverages(\%ROUGEScores,\%ROUGEAverages,$opt_t); + &printResults($peerID,\%ROUGEAverages,\%ROUGEScores,"ROUGE-L",$opt_c,$opt_t,$opt_d); + } + if(defined($opt_w)) { + #----------------------------------------------- + # compute WLCS score + %ROUGEScores=(); + foreach $e (@ROUGEEvalIDs) { + &computeROUGEX("W",\%ROUGEScores,$e,$ROUGEEvals{$e},$peerID,\%ROUGEParam); + } + # compute averages + %ROUGEAverages=(); + &computeAverages(\%ROUGEScores,\%ROUGEAverages,$opt_t); + &printResults($peerID,\%ROUGEAverages,\%ROUGEScores,"ROUGE-W-$weightFactor",$opt_c,$opt_t,$opt_d); + } + if(defined($opt_2)) { + #----------------------------------------------- + # compute skip bigram score + %ROUGEScores=(); + foreach $e (@ROUGEEvalIDs) { + &computeROUGEX("S",\%ROUGEScores,$e,$ROUGEEvals{$e},$peerID,\%ROUGEParam); + } + # compute averages + %ROUGEAverages=(); + &computeAverages(\%ROUGEScores,\%ROUGEAverages,$opt_t); + if($skipDistance>=0) { + if(defined($opt_u)) { + &printResults($peerID,\%ROUGEAverages,\%ROUGEScores,"ROUGE-SU$skipDistance",$opt_c,$opt_t,$opt_d); + } + elsif(defined($opt_U)) { + # print regular skip bigram results + &printResults($peerID,\%ROUGEAverages,\%ROUGEScores,"ROUGE-S$skipDistance",$opt_c,$opt_t,$opt_d); + #----------------------------------------------- + # compute skip bigram with unigram extension score + $opt_u=1; + %ROUGEScores=(); + foreach $e (@ROUGEEvalIDs) { + &computeROUGEX("S",\%ROUGEScores,$e,$ROUGEEvals{$e},$peerID,\%ROUGEParam); + } + $opt_u=undef; + # compute averages + %ROUGEAverages=(); + &computeAverages(\%ROUGEScores,\%ROUGEAverages,$opt_t); + &printResults($peerID,\%ROUGEAverages,\%ROUGEScores,"ROUGE-SU$skipDistance",$opt_c,$opt_t,$opt_d); + } + else { + &printResults($peerID,\%ROUGEAverages,\%ROUGEScores,"ROUGE-S$skipDistance",$opt_c,$opt_t,$opt_d); + } + } + else { + if(defined($opt_u)) { + &printResults($peerID,\%ROUGEAverages,\%ROUGEScores,"ROUGE-SU*",$opt_c,$opt_t,$opt_d); + } + else { + &printResults($peerID,\%ROUGEAverages,\%ROUGEScores,"ROUGE-S*",$opt_c,$opt_t,$opt_d); + if(defined($opt_U)) { + #----------------------------------------------- + # compute skip bigram with unigram extension score + $opt_u=1; + %ROUGEScores=(); + foreach $e (@ROUGEEvalIDs) { + &computeROUGEX("S",\%ROUGEScores,$e,$ROUGEEvals{$e},$peerID,\%ROUGEParam); + } + $opt_u=undef; + # compute averages + %ROUGEAverages=(); + &computeAverages(\%ROUGEScores,\%ROUGEAverages,$opt_t); + &printResults($peerID,\%ROUGEAverages,\%ROUGEScores,"ROUGE-SU*",$opt_c,$opt_t,$opt_d); + } + } + } + } + if(defined($opt_3)) { + #----------------------------------------------- + # compute Basic Element triple score + %ROUGEScores=(); + foreach $e (@ROUGEEvalIDs) { + &computeROUGEX("BE",\%ROUGEScores,$e,$ROUGEEvals{$e},$peerID,\%ROUGEParam); + } + # compute averages + %ROUGEAverages=(); + &computeAverages(\%ROUGEScores,\%ROUGEAverages,$opt_t); + &printResults($peerID,\%ROUGEAverages,\%ROUGEScores,"ROUGE-BE-$BEMode",$opt_c,$opt_t,$opt_d); + } + } +} +else { + die "Document undefined\n"; +} +if(defined($opt_z)) { + close($doc); +} +untie %exceptiondb; + +sub printResults { + my $peerID=shift; + my $ROUGEAverages=shift; + my $ROUGEScores=shift; + my $methodTag=shift; + my $opt_c=shift; + my $opt_t=shift; + my $opt_d=shift; + + print "---------------------------------------------\n"; + if(!defined($opt_t)||$opt_t==1) { + print "$peerID $methodTag Average_R: $ROUGEAverages->{'AvgR'} "; + print "($opt_c\%-conf.int. $ROUGEAverages->{'CIAvgL_R'} - $ROUGEAverages->{'CIAvgU_R'})\n"; + print "$peerID $methodTag Average_P: $ROUGEAverages->{'AvgP'} "; + print "($opt_c\%-conf.int. $ROUGEAverages->{'CIAvgL_P'} - $ROUGEAverages->{'CIAvgU_P'})\n"; + print "$peerID $methodTag Average_F: $ROUGEAverages->{'AvgF'} "; + print "($opt_c\%-conf.int. $ROUGEAverages->{'CIAvgL_F'} - $ROUGEAverages->{'CIAvgU_F'})\n"; + } + else { + print "$peerID $methodTag M_count: "; + print int($ROUGEAverages->{'M_cnt'}); + print " P_count: "; + print int($ROUGEAverages->{'P_cnt'}); + print " H_count: "; + print int($ROUGEAverages->{'H_cnt'}); + print "\n"; + } + if(defined($opt_d)) { + print ".............................................\n"; + &printPerEvalData($ROUGEScores,"$peerID $methodTag Eval"); + } +} + +sub bootstrapResampling { + my $scores=shift; + my $instances=shift; + my $seed=shift; + my $opt_t=shift; + my $sample; + my ($i,$ridx); + + # Use $seed to seed the random number generator to make sure + # we have the same random sequence every time, therefore a + # consistent estimation of confidence interval in different runs. + # This is not necessary. To ensure a consistent result in reporting + # results using ROUGE, this is implemented. + srand($seed); + for($i=0;$i<@{$instances};$i++) { + # generate a random index + $ridx=int(rand(@{$instances})); + unless(defined($sample)) { + # setup the resampling array + $sample=[]; + push(@$sample,$scores->{$instances->[$ridx]}[0]); + push(@$sample,$scores->{$instances->[$ridx]}[1]); + push(@$sample,$scores->{$instances->[$ridx]}[2]); + } + else { + # update the resampling array + $sample->[0]+=$scores->{$instances->[$ridx]}[0]; + $sample->[1]+=$scores->{$instances->[$ridx]}[1]; + $sample->[2]+=$scores->{$instances->[$ridx]}[2]; + } + } + # compute the average result for this resampling procedure + unless(defined($opt_t)) { + # per instance or sentence average + if(@{$instances}>0) { + $sample->[0]/=@{$instances}; + $sample->[1]/=@{$instances}; + $sample->[2]/=@{$instances}; + } + else { + $sample->[0]=0; + $sample->[1]=0; + $sample->[2]=0; + } + } + else { + if($opt_t==1) { + # per token or corpus level average + # output recall, precision, and f-measure score + my ($tmpR,$tmpP,$tmpF); + if($sample->[0]>0) { + $tmpR=$sample->[2]/$sample->[0]; # recall + } + else { + $tmpR=0; + } + if($sample->[1]>0) { + $tmpP=$sample->[2]/$sample->[1]; # precision + } + else { + $tmpP=0; + } + if((1-$alpha)*$tmpP+$alpha*$tmpR>0) { + $tmpF=($tmpR*$tmpP)/((1-$alpha)*$tmpP+$alpha*$tmpR); # f-measure + } + else { + $tmpF=0; + } + $sample->[0]=$tmpR; + $sample->[1]=$tmpP; + $sample->[2]=$tmpF; + } + else { + # $opt_t!=1 => output raw model token count, peer token count, and hit count + # do nothing, just return $sample + } + } + return $sample; +} + +sub by_value { + $a<=>$b; +} + +sub printPerEvalData { + my $ROUGEScores=shift; + my $tag=shift; # tag to identify each evaluation + my (@instances,$i,$j); + + @instances=sort by_evalID (keys %$ROUGEScores); + foreach $i (@instances) { + # print average per evaluation score + print "$tag $i R:$ROUGEScores->{$i}[0] P:$ROUGEScores->{$i}[1] F:$ROUGEScores->{$i}[2]\n"; + } +} + +sub by_evalID { + my ($a1,$b1); + + if($a=~/^([0-9]+)/o) { + $a1=$1; + } + if($b=~/^([0-9]+)/o) { + $b1=$1; + } + if(defined($a1)&&defined($b1)) { + return $a1<=>$b1; + } + else { + return $a cmp $b; + } +} + +sub computeAverages { + my $ROUGEScores=shift; + my $ROUGEAverages=shift; + my $opt_t=shift; + my ($avgAvgROUGE_R,$resampleAvgROUGE_R); + my ($avgAvgROUGE_P,$resampleAvgROUGE_P); + my ($avgAvgROUGE_F,$resampleAvgROUGE_F); + my ($ciU,$ciL); + my (@instances,$i,$j,@rankedArray_R,@rankedArray_P,@RankedArray_F); + + @instances=sort (keys %$ROUGEScores); + $avgAvgROUGE_R=0; + $avgAvgROUGE_P=0; + $avgAvgROUGE_F=0; + $resampleAvgROUGE_R=0; + $resampleAvgROUGE_P=0; + $resampleAvgROUGE_F=0; + # compute totals + foreach $i (@instances) { + $avgAvgROUGE_R+=$ROUGEScores->{$i}[0]; # recall ; or model token count + $avgAvgROUGE_P+=$ROUGEScores->{$i}[1]; # precision ; or peer token count + $avgAvgROUGE_F+=$ROUGEScores->{$i}[2]; # f1-measure ; or match token count (hit) + } + # compute averages + unless(defined($opt_t)) { + # per sentence average + if((scalar @instances)>0) { + $avgAvgROUGE_R=sprintf("%7.5f",$avgAvgROUGE_R/(scalar @instances)); + $avgAvgROUGE_P=sprintf("%7.5f",$avgAvgROUGE_P/(scalar @instances)); + $avgAvgROUGE_F=sprintf("%7.5f",$avgAvgROUGE_F/(scalar @instances)); + } + else { + $avgAvgROUGE_R=sprintf("%7.5f",0); + $avgAvgROUGE_P=sprintf("%7.5f",0); + $avgAvgROUGE_F=sprintf("%7.5f",0); + } + } + else { + if($opt_t==1) { + # per token average on corpus level + my ($tmpR,$tmpP,$tmpF); + if($avgAvgROUGE_R>0) { + $tmpR=$avgAvgROUGE_F/$avgAvgROUGE_R; + } + else { + $tmpR=0; + } + if($avgAvgROUGE_P>0) { + $tmpP=$avgAvgROUGE_F/$avgAvgROUGE_P; + } + else { + $tmpP=0; + } + if((1-$alpha)*$tmpP+$alpha*$tmpR>0) { + $tmpF=($tmpR+$tmpP)/((1-$alpha)*$tmpP+$alpha*$tmpR); + } + else { + $tmpF=0; + } + $avgAvgROUGE_R=sprintf("%7.5f",$tmpR); + $avgAvgROUGE_P=sprintf("%7.5f",$tmpP); + $avgAvgROUGE_F=sprintf("%7.5f",$tmpF); + } + } + if(!defined($opt_t)||$opt_t==1) { + # compute confidence intervals using bootstrap resampling + @ResamplingArray=(); + for($i=0;$i<$numOfResamples;$i++) { + my $sample; + + $sample=&bootstrapResampling($ROUGEScores,\@instances,$i,$opt_t); + # sample contains average sum of the sample + if(@ResamplingArray==0) { + # setup the resampling array for Avg + my $s; + + $s=[]; + push(@$s,$sample->[0]); + push(@ResamplingArray,$s); + $s=[]; + push(@$s,$sample->[1]); + push(@ResamplingArray,$s); + $s=[]; + push(@$s,$sample->[2]); + push(@ResamplingArray,$s); + } + else { + $rsa=$ResamplingArray[0]; + push(@{$rsa},$sample->[0]); + $rsa=$ResamplingArray[1]; + push(@{$rsa},$sample->[1]); + $rsa=$ResamplingArray[2]; + push(@{$rsa},$sample->[2]); + } + } + # sort resampling results + { + # recall + @rankedArray_R=sort by_value (@{$ResamplingArray[0]}); + $ResamplingArray[0]=\@rankedArray_R; + for($x=0;$x<=$#rankedArray_R;$x++) { + $resampleAvgROUGE_R+=$rankedArray_R[$x]; + # print "*R ($x): $rankedArray_R[$x]\n"; + } + $resampleAvgROUGE_R=sprintf("%7.5f",$resampleAvgROUGE_R/(scalar @rankedArray_R)); + # precision + @rankedArray_P=sort by_value (@{$ResamplingArray[1]}); + $ResamplingArray[1]=\@rankedArray_P; + for($x=0;$x<=$#rankedArray_P;$x++) { + $resampleAvgROUGE_P+=$rankedArray_P[$x]; + # print "*P ($x): $rankedArray_P[$x]\n"; + } + $resampleAvgROUGE_P=sprintf("%7.5f",$resampleAvgROUGE_P/(scalar @rankedArray_P)); + # f1-measure + @rankedArray_F=sort by_value (@{$ResamplingArray[2]}); + $ResamplingArray[2]=\@rankedArray_F; + for($x=0;$x<=$#rankedArray_F;$x++) { + $resampleAvgROUGE_F+=$rankedArray_F[$x]; + # print "*F ($x): $rankedArray_F[$x]\n"; + } + $resampleAvgROUGE_F=sprintf("%7.5f",$resampleAvgROUGE_F/(scalar @rankedArray_F)); + } + # $ciU=999-int((100-$opt_c)*10/2); # upper bound index + # $ciL=int((100-$opt_c)*10/2); # lower bound index + $delta=$numOfResamples*((100-$opt_c)/2.0)/100.0; + $ciUa=int($numOfResamples-$delta-1); # upper confidence interval lower index + $ciUb=$ciUa+1; # upper confidence interval upper index + $ciLa=int($delta); # lower confidence interval lower index + $ciLb=$ciLa+1; # lower confidence interval upper index + $ciR=$numOfResamples-$delta-1-$ciUa; # ratio bewteen lower and upper indexes + # $ROUGEAverages->{"AvgR"}=$avgAvgROUGE_R; + #------- + # recall + $ROUGEAverages->{"AvgR"}=$resampleAvgROUGE_R; + # find condifence intervals; take maximum distance from the mean + $ROUGEAverages->{"CIAvgL_R"}=sprintf("%7.5f",$ResamplingArray[0][$ciLa]+ + ($ResamplingArray[0][$ciLb]-$ResamplingArray[0][$ciLa])*$ciR); + $ROUGEAverages->{"CIAvgU_R"}=sprintf("%7.5f",$ResamplingArray[0][$ciUa]+ + ($ResamplingArray[0][$ciUb]-$ResamplingArray[0][$ciUa])*$ciR); + #------- + # precision + $ROUGEAverages->{"AvgP"}=$resampleAvgROUGE_P; + # find condifence intervals; take maximum distance from the mean + $ROUGEAverages->{"CIAvgL_P"}=sprintf("%7.5f",$ResamplingArray[1][$ciLa]+ + ($ResamplingArray[1][$ciLb]-$ResamplingArray[1][$ciLa])*$ciR); + $ROUGEAverages->{"CIAvgU_P"}=sprintf("%7.5f",$ResamplingArray[1][$ciUa]+ + ($ResamplingArray[1][$ciUb]-$ResamplingArray[1][$ciUa])*$ciR); + #------- + # f1-measure + $ROUGEAverages->{"AvgF"}=$resampleAvgROUGE_F; + # find condifence intervals; take maximum distance from the mean + $ROUGEAverages->{"CIAvgL_F"}=sprintf("%7.5f",$ResamplingArray[2][$ciLa]+ + ($ResamplingArray[2][$ciLb]-$ResamplingArray[2][$ciLa])*$ciR); + $ROUGEAverages->{"CIAvgU_F"}=sprintf("%7.5f",$ResamplingArray[2][$ciUa]+ + ($ResamplingArray[2][$ciUb]-$ResamplingArray[2][$ciUa])*$ciR); + $ROUGEAverages->{"M_cnt"}=$avgAvgROUGE_R; # model token count + $ROUGEAverages->{"P_cnt"}=$avgAvgROUGE_P; # peer token count + $ROUGEAverages->{"H_cnt"}=$avgAvgROUGE_F; # hit token count + } + else { + # $opt_t==2 => output raw count instead of precision, recall, and f-measure values + # in this option, no resampling is necessary, just output the raw counts + $ROUGEAverages->{"M_cnt"}=$avgAvgROUGE_R; # model token count + $ROUGEAverages->{"P_cnt"}=$avgAvgROUGE_P; # peer token count + $ROUGEAverages->{"H_cnt"}=$avgAvgROUGE_F; # hit token count + } +} + +sub computeROUGEX { + my $metric=shift; # which ROUGE metric to compute? + my $ROUGEScores=shift; + my $evalID=shift; + my $ROUGEEval=shift; # one particular evaluation pair + my $peerID=shift; # a specific peer ID + my $ROUGEParam=shift; # ROUGE scoring parameters + my $lengthLimit; # lenght limit in words + my $byteLimit; # length limit in bytes + my $NSIZE; # ngram size for ROUGE-N + my $weightFactor; # weight factor for ROUGE-W + my $skipDistance; # skip distance for ROUGE-S + my $scoreMode; # scoring mode: A = model average; B = best model + my $alpha; # relative importance between recall and precision + my $opt_t; # ROUGE score counting mode + my $BEMode; # Basic Element scoring mode + my ($c,$cx,@modelPaths,$modelIDs,$modelRoot,$inputFormat); + + $lengthLimit=$ROUGEParam->{"LENGTH"}; + $byteLimit=$ROUGEParam->{"BYTE"}; + $NSIZE=$ROUGEParam->{"NSIZE"}; + $weightFactor=$ROUGEParam->{"WEIGHT"}; + $skipDistance=$ROUGEParam->{"SD"}; + $scoreMode=$ROUGEParam->{"SM"}; + $alpha=$ROUGEParam->{"ALPHA"}; + $opt_t=$ROUGEParam->{"AVERAGE"}; + $BEMode=$ROUGEParam->{"BEMODE"}; + + # Check to see if this evaluation trial contains this $peerID. + # Sometimes not every peer provides response for each + # evaluation trial. + unless(exists($ROUGEEval->{"Ps"}{$peerID})) { + unless(exists($knownMissing{$evalID})) { + $knownMissing{$evalID}={}; + } + unless(exists($knownMissing{$evalID}{$peerID})) { + print STDERR "\*ROUGE Warning: test instance for peer $peerID does not exist for evaluation $evalID\n"; + $knownMissing{$evalID}{$peerID}=1; + } + return; + } + unless(defined($opt_z)) { + $peerPath=$ROUGEEval->{"PR"}."/".$ROUGEEval->{"Ps"}{$peerID}; + } + else { + # if opt_z is set then peerPath is read from a file list that + # includes the path to the peer. + $peerPath=$ROUGEEval->{"Ps"}{$peerID}; + } + if(defined($ROUGEEval->{"MR"})) { + $modelRoot=$ROUGEEval->{"MR"}; + } + else { + # if opt_z is set then modelPath is read from a file list that + # includes the path to the model. + $modelRoot=""; + } + $modelIDs=$ROUGEEval->{"MIDList"}; + $inputFormat=$ROUGEEval->{"IF"}; + # construct combined model + @modelPaths=(); # reset model paths + for($cx=0;$cx<=$#{$modelIDs};$cx++) { + my $modelID; + $modelID=$modelIDs->[$cx]; + unless(defined($opt_z)) { + $modelPath="$modelRoot/$ROUGEEval->{\"Ms\"}{$modelID}"; # get full model path + } + else { + # if opt_z is set then modelPath is read from a file list that + # includes the full path to the model. + $modelPath="$ROUGEEval->{\"Ms\"}{$modelID}"; # get full model path + } + if(-e "$modelPath") { + # print "*$modelPath\n"; + } + else { + die "Cannot find model summary: $modelPath\n"; + } + push(@modelPaths,$modelPath); + } + #--------------------------------------------------------------- + # evaluate peer + { + my (@results); + my ($testID,$avgROUGE,$avgROUGE_P,$avgROUGE_F); + @results=(); + if($metric eq "N") { + &computeNGramScore(\@modelPaths,$peerPath,\@results,$NSIZE,$lengthLimit,$byteLimit,$inputFormat,$scoreMode,$alpha); + } + elsif($metric eq "L") { + &computeLCSScore(\@modelPaths,$peerPath,\@results,$lengthLimit,$byteLimit,$inputFormat,$scoreMode,$alpha); + } + elsif($metric eq "W") { + &computeWLCSScore(\@modelPaths,$peerPath,\@results,$lengthLimit,$byteLimit,$inputFormat,$weightFactor,$scoreMode,$alpha); + } + elsif($metric eq "S") { + &computeSkipBigramScore(\@modelPaths,$peerPath,\@results,$skipDistance,$lengthLimit,$byteLimit,$inputFormat,$scoreMode,$alpha); + } + elsif($metric eq "BE") { + &computeBEScore(\@modelPaths,$peerPath,\@results,$BEMode,$lengthLimit,$byteLimit,$inputFormat,$scoreMode,$alpha); + } + else { + die "Unknown ROUGE metric ID: $metric, has to be N, L, W, or S\n"; + + } + unless(defined($opt_t)) { + # sentence level average + $avgROUGE=sprintf("%7.5f",$results[2]); + $avgROUGE_P=sprintf("%7.5f",$results[4]); + $avgROUGE_F=sprintf("%7.5f",$results[5]); + } + else { + # corpus level per token average + $avgROUGE=$results[0]; # total model token count + $avgROUGE_P=$results[3]; # total peer token count + $avgROUGE_F=$results[1]; # total match count between model and peer, i.e. hit + } + # record ROUGE scores for the current test + $testID="$evalID\.$peerID"; + if($debug) { + print "$testID\n"; + } + unless(exists($testIDs{$testID})) { + $testIDs{$testID}=1; + } + unless(exists($ROUGEScores->{$testID})) { + $ROUGEScores->{$testID}=[]; + push(@{$ROUGEScores->{$testID}},$avgROUGE); # average ; or model token count + push(@{$ROUGEScores->{$testID}},$avgROUGE_P); # average ; or peer token count + push(@{$ROUGEScores->{$testID}},$avgROUGE_F); # average ; or match token count (hit) + } + } +} + +# 10/21/2004 add selection of scoring mode +# A: average over all models +# B: take only the best score +sub computeNGramScore { + my $modelPaths=shift; + my $peerPath=shift; + my $results=shift; + my $NSIZE=shift; + my $lengthLimit=shift; + my $byteLimit=shift; + my $inputFormat=shift; + my $scoreMode=shift; + my $alpha=shift; + my ($modelPath,$modelText,$peerText,$text,@tokens); + my (%model_grams,%peer_grams); + my ($gramHit,$gramScore,$gramScoreBest); + my ($totalGramHit,$totalGramCount); + my ($gramScoreP,$gramScoreF,$totalGramCountP); + + #------------------------------------------------ + # read model file and create model n-gram maps + $totalGramHit=0; + $totalGramCount=0; + $gramScoreBest=-1; + $gramScoreP=0; # precision + $gramScoreF=0; # f-measure + $totalGramCountP=0; + #------------------------------------------------ + # read peer file and create model n-gram maps + %peer_grams=(); + $peerText=""; + &readText($peerPath,\$peerText,$inputFormat,$lengthLimit,$byteLimit); + &createNGram($peerText,\%peer_grams,$NSIZE); + if($debug) { + print "***P $peerPath\n"; + if(defined($peerText)) { + print "$peerText\n"; + print join("|",%peer_grams),"\n"; + } + else { + print "---empty text---\n"; + } + } + foreach $modelPath (@$modelPaths) { + %model_grams=(); + $modelText=""; + &readText($modelPath,\$modelText,$inputFormat,$lengthLimit,$byteLimit); + &createNGram($modelText,\%model_grams,$NSIZE); + if($debug) { + if(defined($modelText)) { + print "$modelText\n"; + print join("|",%model_grams),"\n"; + } + else { + print "---empty text---\n"; + } + } + #------------------------------------------------ + # compute ngram score + &ngramScore(\%model_grams,\%peer_grams,\$gramHit,\$gramScore); + # collect hit and count for each models + # This will effectively clip hit for each model; therefore would not give extra + # credit to reducdant information contained in the peer summary. + if($scoreMode eq "A") { + $totalGramHit+=$gramHit; + $totalGramCount+=$model_grams{"_cn_"}; + $totalGramCountP+=$peer_grams{"_cn_"}; + } + elsif($scoreMode eq "B") { + if($gramScore>$gramScoreBest) { + # only take a better score (i.e. better match) + $gramScoreBest=$gramScore; + $totalGramHit=$gramHit; + $totalGramCount=$model_grams{"_cn_"}; + $totalGramCountP=$peer_grams{"_cn_"}; + } + } + else { + # use average mode + $totalGramHit+=$gramHit; + $totalGramCount+=$model_grams{"_cn_"}; + $totalGramCountP+=$peer_grams{"_cn_"}; + } + if($debug) { + print "***M $modelPath\n"; + } + } + # prepare score result for return + # unigram + push(@$results,$totalGramCount); # total number of ngrams in models + push(@$results,$totalGramHit); + if($totalGramCount!=0) { + $gramScore=sprintf("%7.5f",$totalGramHit/$totalGramCount); + } + else { + $gramScore=sprintf("%7.5f",0); + } + push(@$results,$gramScore); + push(@$results,$totalGramCountP); # total number of ngrams in peers + if($totalGramCountP!=0) { + $gramScoreP=sprintf("%7.5f",$totalGramHit/$totalGramCountP); + } + else { + $gramScoreP=sprintf("%7.5f",0); + } + push(@$results,$gramScoreP); # precision score + if((1-$alpha)*$gramScoreP+$alpha*$gramScore>0) { + $gramScoreF=sprintf("%7.5f",($gramScoreP*$gramScore)/((1-$alpha)*$gramScoreP+$alpha*$gramScore)); + } + else { + $gramScoreF=sprintf("%7.5f",0); + } + push(@$results,$gramScoreF); # f1-measure score + if($debug) { + print "total $NSIZE-gram model count: $totalGramCount\n"; + print "total $NSIZE-gram peer count: $totalGramCountP\n"; + print "total $NSIZE-gram hit: $totalGramHit\n"; + print "total ROUGE-$NSIZE\-R: $gramScore\n"; + print "total ROUGE-$NSIZE\-P: $gramScoreP\n"; + print "total ROUGE-$NSIZE\-F: $gramScoreF\n"; + } +} + +sub computeSkipBigramScore { + my $modelPaths=shift; + my $peerPath=shift; + my $results=shift; + my $skipDistance=shift; + my $lengthLimit=shift; + my $byteLimit=shift; + my $inputFormat=shift; + my $scoreMode=shift; + my $alpha=shift; + my ($modelPath,$modelText,$peerText,$text,@tokens); + my (%model_grams,%peer_grams); + my ($gramHit,$gramScore,$gramScoreBest); + my ($totalGramHitm,$totalGramCount); + my ($gramScoreP,$gramScoreF,$totalGramCountP); + + #------------------------------------------------ + # read model file and create model n-gram maps + $totalGramHit=0; + $totalGramCount=0; + $gramScoreBest=-1; + $gramScoreP=0; # precision + $gramScoreF=0; # f-measure + $totalGramCountP=0; + #------------------------------------------------ + # read peer file and create model n-gram maps + %peer_grams=(); + $peerText=""; + &readText($peerPath,\$peerText,$inputFormat,$lengthLimit,$byteLimit); + &createSkipBigram($peerText,\%peer_grams,$skipDistance); + if($debug) { + print "***P $peerPath\n"; + if(defined($peerText)) { + print "$peerText\n"; + print join("|",%peer_grams),"\n"; + } + else { + print "---empty text---\n"; + } + } + foreach $modelPath (@$modelPaths) { + %model_grams=(); + $modelText=""; + &readText($modelPath,\$modelText,$inputFormat,$lengthLimit,$byteLimit); + if(defined($opt_M)) { # only apply stemming on models + $opt_m=1; + } + &createSkipBigram($modelText,\%model_grams,$skipDistance); + if(defined($opt_M)) { # only apply stemming on models + $opt_m=undef; + } + if($debug) { + if(defined($modelText)) { + print "$modelText\n"; + print join("|",%model_grams),"\n"; + } + else { + print "---empty text---\n"; + } + } + #------------------------------------------------ + # compute ngram score + &skipBigramScore(\%model_grams,\%peer_grams,\$gramHit,\$gramScore); + # collect hit and count for each models + # This will effectively clip hit for each model; therefore would not give extra + # credit to reducdant information contained in the peer summary. + if($scoreMode eq "A") { + $totalGramHit+=$gramHit; + $totalGramCount+=$model_grams{"_cn_"}; + $totalGramCountP+=$peer_grams{"_cn_"}; + } + elsif($scoreMode eq "B") { + if($gramScore>$gramScoreBest) { + # only take a better score (i.e. better match) + $gramScoreBest=$gramScore; + $totalGramHit=$gramHit; + $totalGramCount=$model_grams{"_cn_"}; + $totalGramCountP=$peer_grams{"_cn_"}; + } + } + else { + # use average mode + $totalGramHit+=$gramHit; + $totalGramCount+=$model_grams{"_cn_"}; + $totalGramCountP+=$peer_grams{"_cn_"}; + } + if($debug) { + print "***M $modelPath\n"; + } + } + # prepare score result for return + # unigram + push(@$results,$totalGramCount); # total number of ngrams + push(@$results,$totalGramHit); + if($totalGramCount!=0) { + $gramScore=sprintf("%7.5f",$totalGramHit/$totalGramCount); + } + else { + $gramScore=sprintf("%7.5f",0); + } + push(@$results,$gramScore); + push(@$results,$totalGramCountP); # total number of ngrams in peers + if($totalGramCountP!=0) { + $gramScoreP=sprintf("%7.5f",$totalGramHit/$totalGramCountP); + } + else { + $gramScoreP=sprintf("%7.5f",0); + } + push(@$results,$gramScoreP); # precision score + if((1-$alpha)*$gramScoreP+$alpha*$gramScore>0) { + $gramScoreF=sprintf("%7.5f",($gramScoreP*$gramScore)/((1-$alpha)*$gramScoreP+$alpha*$gramScore)); + } + else { + $gramScoreF=sprintf("%7.5f",0); + } + push(@$results,$gramScoreF); # f1-measure score + if($debug) { + print "total ROUGE-S$skipDistance model count: $totalGramCount\n"; + print "total ROUGE-S$skipDistance peer count: $totalGramCountP\n"; + print "total ROUGE-S$skipDistance hit: $totalGramHit\n"; + print "total ROUGE-S$skipDistance\-R: $gramScore\n"; + print "total ROUGE-S$skipDistance\-P: $gramScore\n"; + print "total ROUGE-S$skipDistance\-F: $gramScore\n"; + } +} + +sub computeLCSScore { + my $modelPaths=shift; + my $peerPath=shift; + my $results=shift; + my $lengthLimit=shift; + my $byteLimit=shift; + my $inputFormat=shift; + my $scoreMode=shift; + my $alpha=shift; + my ($modelPath,@modelText,@peerText,$text,@tokens); + my (@modelTokens,@peerTokens); + my ($lcsHit,$lcsScore,$lcsBase,$lcsScoreBest); + my ($totalLCSHitm,$totalLCSCount); + my (%peer_1grams,%tmp_peer_1grams,%model_1grams,$peerText1,$modelText1); + my ($lcsScoreP,$lcsScoreF,$totalLCSCountP); + + #------------------------------------------------ + $totalLCSHit=0; + $totalLCSCount=0; + $lcsScoreBest=-1; + $lcsScoreP=0; + $lcsScoreF=0; + $totalLCSCountP=0; + #------------------------------------------------ + # read peer file and create peer n-gram maps + @peerTokens=(); + @peerText=(); + &readText_LCS($peerPath,\@peerText,$inputFormat,$lengthLimit,$byteLimit); + &tokenizeText_LCS(\@peerText,\@peerTokens); + #------------------------------------------------ + # create unigram for clipping + %peer_1grams=(); + &readText($peerPath,\$peerText1,$inputFormat,$lengthLimit,$byteLimit); + &createNGram($peerText1,\%peer_1grams,1); + if($debug) { + my $i; + print "***P $peerPath\n"; + print join("\n",@peerText),"\n"; + for($i=0;$i<=$#peerText;$i++) { + print $i,": ",join("|",@{$peerTokens[$i]}),"\n"; + } + } + foreach $modelPath (@$modelPaths) { + %tmp_peer_1grams=%peer_1grams; # renew peer unigram hash, so the peer count can be reset to the orignal number + @modelTokens=(); + @modelText=(); + &readText_LCS($modelPath,\@modelText,$inputFormat,$lengthLimit,$byteLimit); + if(defined($opt_M)) { + $opt_m=1; + &tokenizeText_LCS(\@modelText,\@modelTokens); + $opt_m=undef; + } + else { + &tokenizeText_LCS(\@modelText,\@modelTokens); + } + #------------------------------------------------ + # create unigram for clipping + %model_1grams=(); + &readText($modelPath,\$modelText1,$inputFormat,$lengthLimit,$byteLimit); + if(defined($opt_M)) { # only apply stemming on models + $opt_m=1; + } + &createNGram($modelText1,\%model_1grams,1); + if(defined($opt_M)) { # only apply stemming on models + $opt_m=undef; + } + #------------------------------------------------ + # compute LCS score + &lcs(\@modelTokens,\@peerTokens,\$lcsHit,\$lcsScore,\$lcsBase,\%model_1grams,\%tmp_peer_1grams); + # collect hit and count for each models + # This will effectively clip hit for each model; therefore would not give extra + # credit to reductant information contained in the peer summary. + # Previous method that lumps model text together and inflates the peer summary + # the number of references time would reward redundant information + if($scoreMode eq "A") { + $totalLCSHit+=$lcsHit; + $totalLCSCount+=$lcsBase; + $totalLCSCountP+=$peer_1grams{"_cn_"}; + } + elsif($scoreMode eq "B") { + if($lcsScore>$lcsScoreBest) { + # only take a better score (i.e. better match) + $lcsScoreBest=$lcsScore; + $totalLCSHit=$lcsHit; + $totalLCSCount=$lcsBase; + $totalLCSCountP=$peer_1grams{"_cn_"}; + } + } + else { + # use average mode + $totalLCSHit+=$lcsHit; + $totalLCSCount+=$lcsBase; + $totalLCSCountP+=$peer_1grams{"_cn_"}; + } + if($debug) { + my $i; + print "***M $modelPath\n"; + print join("\n",@modelText),"\n"; + for($i=0;$i<=$#modelText;$i++) { + print $i,": ",join("|",@{$modelTokens[$i]}),"\n"; + } + } + } + # prepare score result for return + push(@$results,$totalLCSCount); # total number of ngrams + push(@$results,$totalLCSHit); + if($totalLCSCount!=0) { + $lcsScore=sprintf("%7.5f",$totalLCSHit/$totalLCSCount); + } + else { + $lcsScore=sprintf("%7.5f",0); + } + push(@$results,$lcsScore); + push(@$results,$totalLCSCountP); # total number of token in peers + if($totalLCSCountP!=0) { + $lcsScoreP=sprintf("%7.5f",$totalLCSHit/$totalLCSCountP); + } + else { + $lcsScoreP=sprintf("%7.5f",0); + } + push(@$results,$lcsScoreP); + if((1-$alpha)*$lcsScoreP+$alpha*$lcsScore>0) { + $lcsScoreF=sprintf("%7.5f",($lcsScoreP*$lcsScore)/((1-$alpha)*$lcsScoreP+$alpha*$lcsScore)); + } + else { + $lcsScoreF=sprintf("%7.5f",0); + } + push(@$results,$lcsScoreF); + if($debug) { + print "total ROUGE-L model count: $totalLCSCount\n"; + print "total ROUGE-L peer count: $totalLCSCountP\n"; + print "total ROUGE-L hit: $totalLCSHit\n"; + print "total ROUGE-L-R score: $lcsScore\n"; + print "total ROUGE-L-P: $lcsScoreP\n"; + print "total ROUGE-L-F: $lcsScoreF\n"; + } +} + +sub computeWLCSScore { + my $modelPaths=shift; + my $peerPath=shift; + my $results=shift; + my $lengthLimit=shift; + my $byteLimit=shift; + my $inputFormat=shift; + my $weightFactor=shift; + my $scoreMode=shift; + my $alpha=shift; + my ($modelPath,@modelText,@peerText,$text,@tokens); + my (@modelTokens,@peerTokens); + my ($lcsHit,$lcsScore,$lcsBase,$lcsScoreBest); + my ($totalLCSHitm,$totalLCSCount); + my (%peer_1grams,%tmp_peer_1grams,%model_1grams,$peerText1,$modelText1); + my ($lcsScoreP,$lcsScoreF,$totalLCSCountP); + + #------------------------------------------------ + # read model file and create model n-gram maps + $totalLCSHit=0; + $totalLCSCount=0; + $lcsScoreBest=-1; + $lcsScoreP=0; + $lcsScoreF=0; + $totalLCSCountP=0; + #------------------------------------------------ + # read peer file and create model n-gram maps + @peerTokens=(); + @peerText=(); + &readText_LCS($peerPath,\@peerText,$inputFormat,$lengthLimit,$byteLimit); + &tokenizeText_LCS(\@peerText,\@peerTokens); + #------------------------------------------------ + # create unigram for clipping + %peer_1grams=(); + &readText($peerPath,\$peerText1,$inputFormat,$lengthLimit,$byteLimit); + &createNGram($peerText1,\%peer_1grams,1); + if($debug) { + my $i; + print "***P $peerPath\n"; + print join("\n",@peerText),"\n"; + for($i=0;$i<=$#peerText;$i++) { + print $i,": ",join("|",@{$peerTokens[$i]}),"\n"; + } + } + foreach $modelPath (@$modelPaths) { + %tmp_peer_1grams=%peer_1grams; # renew peer unigram hash, so the peer count can be reset to the orignal number + @modelTokens=(); + @modelText=(); + &readText_LCS($modelPath,\@modelText,$inputFormat,$lengthLimit,$byteLimit); + &tokenizeText_LCS(\@modelText,\@modelTokens); + #------------------------------------------------ + # create unigram for clipping + %model_1grams=(); + &readText($modelPath,\$modelText1,$inputFormat,$lengthLimit,$byteLimit); + if(defined($opt_M)) { # only apply stemming on models + $opt_m=1; + } + &createNGram($modelText1,\%model_1grams,1); + if(defined($opt_M)) { # only apply stemming on models + $opt_m=undef; + } + #------------------------------------------------ + # compute WLCS score + &wlcs(\@modelTokens,\@peerTokens,\$lcsHit,\$lcsScore,\$lcsBase,$weightFactor,\%model_1grams,\%tmp_peer_1grams); + # collect hit and count for each models + # This will effectively clip hit for each model; therefore would not give extra + # credit to reductant information contained in the peer summary. + # Previous method that lumps model text together and inflates the peer summary + # the number of references time would reward redundant information + if($scoreMode eq "A") { + $totalLCSHit+=$lcsHit; + $totalLCSCount+=&wlcsWeight($lcsBase,$weightFactor); + $totalLCSCountP+=&wlcsWeight($peer_1grams{"_cn_"},$weightFactor); + } + elsif($scoreMode eq "B") { + if($lcsScore>$lcsScoreBest) { + # only take a better score (i.e. better match) + $lcsScoreBest=$lcsScore; + $totalLCSHit=$lcsHit; + $totalLCSCount=&wlcsWeight($lcsBase,$weightFactor); + $totalLCSCountP=&wlcsWeight($peer_1grams{"_cn_"},$weightFactor); + } + } + else { + # use average mode + $totalLCSHit+=$lcsHit; + $totalLCSCount+=&wlcsWeight($lcsBase,$weightFactor); + $totalLCSCountP+=&wlcsWeight($peer_1grams{"_cn_"},$weightFactor); + } + if($debug) { + my $i; + print "***M $modelPath\n"; + print join("\n",@modelText),"\n"; + for($i=0;$i<=$#modelText;$i++) { + print $i,": ",join("|",@{$modelTokens[$i]}),"\n"; + } + } + } + # prepare score result for return + push(@$results,$totalLCSCount); # total number of ngrams + push(@$results,$totalLCSHit); + if($totalLCSCount!=0) { + $lcsScore=sprintf("%7.5f",&wlcsWeightInverse($totalLCSHit/$totalLCSCount,$weightFactor)); + } + else { + $lcsScore=sprintf("%7.5f",0); + } + push(@$results,$lcsScore); + push(@$results,$totalLCSCountP); # total number of token in peers + if($totalLCSCountP!=0) { + $lcsScoreP=sprintf("%7.5f",&wlcsWeightInverse($totalLCSHit/$totalLCSCountP,$weightFactor)); + } + else { + $lcsScoreP=sprintf("%7.5f",0); + } + push(@$results,$lcsScoreP); + if((1-$alpha)*$lcsScoreP+$alpha*$lcsScore>0) { + $lcsScoreF=sprintf("%7.5f",($lcsScoreP*$lcsScore)/((1-$alpha)*$lcsScoreP+$alpha*$lcsScore)); + } + else { + $lcsScoreF=sprintf("%7.5f",0); + } + push(@$results,$lcsScoreF); + if($debug) { + print "total ROUGE-W-$weightFactor model count: $totalLCSCount\n"; + print "total ROUGE-W-$weightFactor peer count: $totalLCSCountP\n"; + print "total ROUGE-W-$weightFactor hit: $totalLCSHit\n"; + print "total ROUGE-W-$weightFactor-R score: $lcsScore\n"; + print "total ROUGE-W-$weightFactor-P score: $lcsScoreP\n"; + print "total ROUGE-W-$weightFactor-F score: $lcsScoreF\n"; + } +} + +sub computeBEScore { + my $modelPaths=shift; + my $peerPath=shift; + my $results=shift; + my $BEMode=shift; + my $lengthLimit=shift; + my $byteLimit=shift; + my $inputFormat=shift; + my $scoreMode=shift; + my $alpha=shift; + my ($modelPath,@modelBEList,@peerBEList,$text,@tokens); + my (%model_BEs,%peer_BEs); + my ($BEHit,$BEScore,$BEScoreBest); + my ($totalBEHit,$totalBECount); + my ($BEScoreP,$BEScoreF,$totalBECountP); + + #------------------------------------------------ + # read model file and create model BE maps + $totalBEHit=0; + $totalBECount=0; + $BEScoreBest=-1; + $BEScoreP=0; # precision + $BEScoreF=0; # f-measure + $totalBECountP=0; + #------------------------------------------------ + # read peer file and create model n-BE maps + %peer_BEs=(); + @peerBEList=(); + &readBE($peerPath,\@peerBEList,$inputFormat); + &createBE(\@peerBEList,\%peer_BEs,$BEMode); + if($debug) { + print "***P $peerPath\n"; + if(scalar @peerBEList > 0) { +# print join("\n",@peerBEList); +# print "\n"; + print join("#",%peer_BEs),"\n"; + } + else { + print "---empty text---\n"; + } + } + foreach $modelPath (@$modelPaths) { + %model_BEs=(); + @modelBEList=(); + &readBE($modelPath,\@modelBEList,$inputFormat); + if(defined($opt_M)) { # only apply stemming on models + $opt_m=1; + } + &createBE(\@modelBEList,\%model_BEs,$BEMode); + if(defined($opt_M)) { # only apply stemming on models + $opt_m=undef; + } + if($debug) { + if(scalar @modelBEList > 0) { +# print join("\n",@modelBEList); +# print "\n"; + print join("#",%model_BEs),"\n"; + } + else { + print "---empty text---\n"; + } + } + #------------------------------------------------ + # compute BE score + &getBEScore(\%model_BEs,\%peer_BEs,\$BEHit,\$BEScore); + # collect hit and count for each models + # This will effectively clip hit for each model; therefore would not give extra + # credit to reducdant information contained in the peer summary. + if($scoreMode eq "A") { + $totalBEHit+=$BEHit; + $totalBECount+=$model_BEs{"_cn_"}; + $totalBECountP+=$peer_BEs{"_cn_"}; + } + elsif($scoreMode eq "B") { + if($BEScore>$BEScoreBest) { + # only take a better score (i.e. better match) + $BEScoreBest=$BEScore; + $totalBEHit=$BEHit; + $totalBECount=$model_BEs{"_cn_"}; + $totalBECountP=$peer_BEs{"_cn_"}; + } + } + else { + # use average mode + $totalBEHit+=$BEHit; + $totalBECount+=$model_BEs{"_cn_"}; + $totalBECountP+=$peer_BEs{"_cn_"}; + } + if($debug) { + print "***M $modelPath\n"; + } + } + # prepare score result for return + # uniBE + push(@$results,$totalBECount); # total number of nbes in models + push(@$results,$totalBEHit); + if($totalBECount!=0) { + $BEScore=sprintf("%7.5f",$totalBEHit/$totalBECount); + } + else { + $BEScore=sprintf("%7.5f",0); + } + push(@$results,$BEScore); + push(@$results,$totalBECountP); # total number of nBEs in peers + if($totalBECountP!=0) { + $BEScoreP=sprintf("%7.5f",$totalBEHit/$totalBECountP); + } + else { + $BEScoreP=sprintf("%7.5f",0); + } + push(@$results,$BEScoreP); # precision score + if((1-$alpha)*$BEScoreP+$alpha*$BEScore>0) { + $BEScoreF=sprintf("%7.5f",($BEScoreP*$BEScore)/((1-$alpha)*$BEScoreP+$alpha*$BEScore)); + } + else { + $BEScoreF=sprintf("%7.5f",0); + } + push(@$results,$BEScoreF); # f1-measure score + if($debug) { + print "total BE-$BEMode model count: $totalBECount\n"; + print "total BE-$BEMode peer count: $totalBECountP\n"; + print "total BE-$BEMode hit: $totalBEHit\n"; + print "total ROUGE-BE-$BEMode\-R: $BEScore\n"; + print "total ROUGE-BE-$BEMode\-P: $BEScoreP\n"; + print "total ROUGE-BE-$BEMode\-F: $BEScoreF\n"; + } +} + +sub readTextOld { + my $inPath=shift; + my $tokenizedText=shift; + my $type=shift; + my $lengthLimit=shift; + my $byteLimit=shift; + my ($text,$bsize,$wsize,@words,$done); + + $$tokenizedText=undef; + $bsize=0; + $wsize=0; + $done=0; + open(TEXT,$inPath)||die "Cannot open $inPath\n"; + if($type=~/^SEE$/oi) { + while(defined($line=)) { # SEE abstract format + if($line=~/^\[([0-9]+)\]<\/a>\s+([^<]+)/o) { + $text=$3; + $text=~tr/A-Z/a-z/; + &checkSummarySize($tokenizedText,\$text,\$wsize,\$bsize,\$done,$lengthLimit,$byteLimit); + } + } + } + elsif($type=~/^ISI$/oi) { # ISI standard sentence by sentence format + while(defined($line=)) { + if($line=~/^([^<]+)<\/S>/o) { + $text=$1; + $text=~tr/A-Z/a-z/; + &checkSummarySize($tokenizedText,\$text,\$wsize,\$bsize,\$done,$lengthLimit,$byteLimit); + } + } + } + elsif($type=~/^SPL$/oi) { # SPL one Sentence Per Line format + while(defined($line=)) { + chomp($line); + $line=~s/^\s+//; + $line=~s/\s+$//; + if(defined($line)&&length($line)>0) { + $text=$line; + $text=~tr/A-Z/a-z/; + &checkSummarySize($tokenizedText,\$text,\$wsize,\$bsize,\$done,$lengthLimit,$byteLimit); + } + } + } + else { + close(TEXT); + die "Unknown input format: $type\n"; + } + close(TEXT); + if(defined($$tokenizedText)) { + $$tokenizedText=~s/\-/ \- /g; + $$tokenizedText=~s/[^A-Za-z0-9\-]/ /g; + $$tokenizedText=~s/^\s+//; + $$tokenizedText=~s/\s+$//; + $$tokenizedText=~s/\s+/ /g; + } + else { + print STDERR "readText: $inPath -> empty text\n"; + } + # print "($$tokenizedText)\n\n"; +} + +# enforce length cutoff at the file level +# convert different input format into SPL format then put them into +# tokenizedText +sub readText { + my $inPath=shift; + my $tokenizedText=shift; + my $type=shift; + my $lengthLimit=shift; + my $byteLimit=shift; + my ($text,$bsize,$wsize,@words,$done,@sntList); + + $$tokenizedText=undef; + $bsize=0; + $wsize=0; + $done=0; + @sntList=(); + open(TEXT,$inPath)||die "Cannot open $inPath\n"; + if($type=~/^SEE$/oi) { + while(defined($line=)) { # SEE abstract format + if($line=~/^\[([0-9]+)\]<\/a>\s+([^<]+)/o|| + $line=~/^\[([0-9]+)\]<\/a>\s+([^<]+)/o) { + $text=$2; + $text=~tr/A-Z/a-z/; + push(@sntList,$text); + } + } + } + elsif($type=~/^ISI$/oi) { # ISI standard sentence by sentence format + while(defined($line=)) { + if($line=~/^([^<]+)<\/S>/o) { + $text=$1; + $text=~tr/A-Z/a-z/; + push(@sntList,$text); + } + } + } + elsif($type=~/^SPL$/oi) { # SPL one Sentence Per Line format + while(defined($line=)) { + chomp($line); + if(defined($line)&&length($line)>0) { + $text=$line; + $text=~tr/A-Z/a-z/; + push(@sntList,$text); + } + } + } + else { + close(TEXT); + die "Unknown input format: $type\n"; + } + close(TEXT); + if($lengthLimit==0&&$byteLimit==0) { + $$tokenizedText=join(" ",@sntList); + } + elsif($lengthLimit!=0) { + my ($tmpText); + $tmpText=""; + $tmpTextLen=0; + foreach $s (@sntList) { + my ($sLen,@tokens); + @tokens=split(/\s+/,$s); + $sLen=scalar @tokens; + if($tmpTextLen+$sLen<$lengthLimit) { + if($tmpTextLen!=0) { + $tmpText.=" $s"; + } + else { + $tmpText.="$s"; + } + $tmpTextLen+=$sLen; + } + else { + if($tmpTextLen>0) { + $tmpText.=" "; + } + $tmpText.=join(" ",@tokens[0..$lengthLimit-$tmpTextLen-1]); + last; + } + } + if(length($tmpText)>0) { + $$tokenizedText=$tmpText; + } + } + elsif($byteLimit!=0) { + my ($tmpText); + $tmpText=""; + $tmpTextLen=0; + foreach $s (@sntList) { + my ($sLen); + $sLen=length($s); + if($tmpTextLen+$sLen<$byteLimit) { + if($tmpTextLen!=0) { + $tmpText.=" $s"; + } + else { + $tmpText.="$s"; + } + $tmpTextLen+=$sLen; + } + else { + if($tmpTextLen>0) { + $tmpText.=" "; + } + $tmpText.=substr($s,0,$byteLimit-$tmpTextLen); + last; + } + } + if(length($tmpText)>0) { + $$tokenizedText=$tmpText; + } + } + if(defined($$tokenizedText)) { + $$tokenizedText=~s/\-/ \- /g; + $$tokenizedText=~s/[^A-Za-z0-9\-]/ /g; + $$tokenizedText=~s/^\s+//; + $$tokenizedText=~s/\s+$//; + $$tokenizedText=~s/\s+/ /g; + } + else { + print STDERR "readText: $inPath -> empty text\n"; + } + # print "($$tokenizedText)\n\n"; +} + +sub readBE { + my $inPath=shift; + my $BEList=shift; + my $type=shift; + my ($line); + + open(TEXT,$inPath)||die "Cannot open $inPath\n"; + if(defined($opt_v)) { + print STDERR "$inPath\n"; + } + if($type=~/^SIMPLE$/oi) { + while(defined($line=)) { # Simple BE triple format + chomp($line); + push(@{$BEList},$line); + } + } + elsif($type=~/^ISI$/oi) { # ISI standard BE format + while(defined($line=)) { + # place holder + } + } + else { + close(TEXT); + die "Unknown input format: $type\n"; + } + close(TEXT); + if(scalar @{$BEList} ==0) { + print STDERR "readBE: $inPath -> empty text\n"; + } +} + +sub checkSummarySize { + my $tokenizedText=shift; + my $text=shift; + my $wsize=shift; + my $bsize=shift; + my $done=shift; + my $lenghtLimit=shift; + my $byteLimit=shift; + my (@words); + + @words=split(/\s+/,$$text); + if(($lengthLimit==0&&$byteLimit==0)|| + ($lengthLimit!=0&&(scalar @words)+$$wsize<=$lengthLimit)|| + ($byteLimit!=0&&length($$text)+$$bsize<=$byteLimit)) { + if(defined($$tokenizedText)) { + $$tokenizedText.=" $$text"; + } + else { + $$tokenizedText=$$text; + } + $$bsize+=length($$text); + $$wsize+=(scalar @words); + } + elsif($lengthLimit!=0&&(scalar @words)+$$wsize>$lengthLimit) { + if($$done==0) { + if(defined($$tokenizedText)) { + $$tokenizedText.=" "; + $$tokenizedText.=join(" ",@words[0..$lengthLimit-$$wsize-1]); + } + else { + $$tokenizedText=join(" ",@words[0..$lengthLimit-$$wsize-1]); + } + $$done=1; + } + } + elsif($byteLimit!=0&&length($$text)+$$bsize>$byteLimit) { + if($$done==0) { + if(defined($$tokenizedText)) { + $$tokenizedText.=" "; + $$tokenizedText.=substr($$text,0,$byteLimit-$$bsize); + } + else { + $$tokenizedText=substr($$text,0,$byteLimit-$$bsize); + + } + $$done=1; + } + } +} + +# LCS computing is based on unit and cannot lump all the text together +# as in computing ngram co-occurrences +sub readText_LCS { + my $inPath=shift; + my $tokenizedText=shift; + my $type=shift; + my $lengthLimit=shift; + my $byteLimit=shift; + my ($text,$t,$bsize,$wsize,$done,@sntList); + + @{$tokenizedText}=(); + $bsize=0; + $wsize=0; + $done=0; + @sntList=(); + open(TEXT,$inPath)||die "Cannot open $inPath\n"; + if($type=~/^SEE$/oi) { + while(defined($line=)) { # SEE abstract format + if($line=~/^\[([0-9]+)\]<\/a>\s+([^<]+)/o|| + $line=~/^\[([0-9]+)\]<\/a>\s+([^<]+)/o) { + $text=$2; + $text=~tr/A-Z/a-z/; + push(@sntList,$text); + } + } + } + elsif($type=~/^ISI$/oi) { # ISI standard sentence by sentence format + while(defined($line=)) { + if($line=~/^([^<]+)<\/S>/o) { + $text=$1; + $text=~tr/A-Z/a-z/; + push(@sntList,$text); + } + } + } + elsif($type=~/^SPL$/oi) { # SPL one Sentence Per Line format + while(defined($line=)) { + chomp($line); + if(defined($line)&&length($line)>0) { + $text=$line; + $text=~tr/A-Z/a-z/; + push(@sntList,$text); + } + } + } + else { + close(TEXT); + die "Unknown input format: $type\n"; + } + close(TEXT); + if($lengthLimit==0&&$byteLimit==0) { + @{$tokenizedText}=@sntList; + } + elsif($lengthLimit!=0) { + my ($tmpText); + $tmpText=""; + $tmpTextLen=0; + foreach $s (@sntList) { + my ($sLen,@tokens); + @tokens=split(/\s+/,$s); + $sLen=scalar @tokens; + if($tmpTextLen+$sLen<$lengthLimit) { + $tmpTextLen+=$sLen; + push(@{$tokenizedText},$s); + } + else { + push(@{$tokenizedText},join(" ",@tokens[0..$lengthLimit-$tmpTextLen-1])); + last; + } + } + } + elsif($byteLimit!=0) { + my ($tmpText); + $tmpText=""; + $tmpTextLen=0; + foreach $s (@sntList) { + my ($sLen); + $sLen=length($s); + if($tmpTextLen+$sLen<$byteLimit) { + push(@{$tokenizedText},$s); + } + else { + push(@{$tokenizedText},substr($s,0,$byteLimit-$tmpTextLen)); + last; + } + } + } + if(defined(@{$tokenizedText}>0)) { + for($t=0;$t<@{$tokenizedText};$t++) { + $tokenizedText->[$t]=~s/\-/ \- /g; + $tokenizedText->[$t]=~s/[^A-Za-z0-9\-]/ /g; + $tokenizedText->[$t]=~s/^\s+//; + $tokenizedText->[$t]=~s/\s+$//; + $tokenizedText->[$t]=~s/\s+/ /g; + } + } + else { + print STDERR "readText_LCS: $inPath -> empty text\n"; + } +} + +# LCS computing is based on unit and cannot lump all the text together +# as in computing ngram co-occurrences +sub readText_LCS_old { + my $inPath=shift; + my $tokenizedText=shift; + my $type=shift; + my $lengthLimit=shift; + my $byteLimit=shift; + my ($text,$t,$bsize,$wsize,$done); + + @{$tokenizedText}=(); + $bsize=0; + $wsize=0; + $done=0; + open(TEXT,$inPath)||die "Cannot open $inPath\n"; + if($type=~/^SEE$/oi) { + while(defined($line=)) { # SEE abstract format + if($line=~/^\[([0-9]+)\]<\/a>\s+([^<]+)/o) { + $text=$3; + $text=~tr/A-Z/a-z/; + &checkSummarySize_LCS($tokenizedText,\$text,\$wsize,\$bsize,\$done,$lengthLimit,$byteLimit); + } + } + } + elsif($type=~/^ISI$/oi) { # ISI standard sentence by sentence format + while(defined($line=)) { + if($line=~/^([^<]+)<\/S>/o) { + $text=$1; + $text=~tr/A-Z/a-z/; + &checkSummarySize_LCS($tokenizedText,\$text,\$wsize,\$bsize,\$done,$lengthLimit,$byteLimit); + } + } + } + elsif($type=~/^SPL$/oi) { # SPL one Sentence Per Line format + while(defined($line=)) { + chomp($line); + $line=~s/^\s+//; + $line=~s/\s+$//; + if(defined($line)&&length($line)>0) { + $text=$line; + $text=~tr/A-Z/a-z/; + &checkSummarySize_LCS($tokenizedText,\$text,\$wsize,\$bsize,\$done,$lengthLimit,$byteLimit); + } + } + } + else { + close(TEXT); + die "Unknown input format: $type\n"; + } + close(TEXT); + if(defined(@{$tokenizedText}>0)) { + for($t=0;$t<@{$tokenizedText};$t++) { + $tokenizedText->[$t]=~s/\-/ \- /g; + $tokenizedText->[$t]=~s/[^A-Za-z0-9\-]/ /g; + $tokenizedText->[$t]=~s/^\s+//; + $tokenizedText->[$t]=~s/\s+$//; + $tokenizedText->[$t]=~s/\s+/ /g; + } + } + else { + print STDERR "readText_LCS: $inPath -> empty text\n"; + } +} + +sub checkSummarySize_LCS { + my $tokenizedText=shift; + my $text=shift; + my $wsize=shift; + my $bsize=shift; + my $done=shift; + my $lenghtLimit=shift; + my $byteLimit=shift; + my (@words); + + @words=split(/\s+/,$$text); + if(($lengthLimit==0&&$byteLimit==0)|| + ($lengthLimit!=0&&(scalar @words)+$$wsize<=$lengthLimit)|| + ($byteLimit!=0&&length($$text)+$$bsize<=$byteLimit)) { + push(@{$tokenizedText},$$text); + $$bsize+=length($$text); + $$wsize+=(scalar @words); + } + elsif($lengthLimit!=0&&(scalar @words)+$$wsize>$lengthLimit) { + if($$done==0) { + push(@{$tokenizedText},$$text); + $$done=1; + } + } + elsif($byteLimit!=0&&length($$text)+$$bsize>$byteLimit) { + if($$done==0) { + push(@{$tokenizedText},$$text); + $$done=1; + } + } +} + +sub ngramScore { + my $model_grams=shift; + my $peer_grams=shift; + my $hit=shift; + my $score=shift; + my ($s,$t,@tokens); + + $$hit=0; + @tokens=keys (%$model_grams); + foreach $t (@tokens) { + if($t ne "_cn_") { + my $h; + $h=0; + if(exists($peer_grams->{$t})) { + $h=$peer_grams->{$t}<=$model_grams->{$t}? + $peer_grams->{$t}:$model_grams->{$t}; # clip + $$hit+=$h; + } + } + } + if($model_grams->{"_cn_"}!=0) { + $$score=sprintf("%07.5f",$$hit/$model_grams->{"_cn_"}); + } + else { + # no instance of n-gram at this length + $$score=0; + # die "model n-grams has zero instance\n"; + } +} + +sub skipBigramScore { + my $model_grams=shift; + my $peer_grams=shift; + my $hit=shift; + my $score=shift; + my ($s,$t,@tokens); + + $$hit=0; + @tokens=keys (%$model_grams); + foreach $t (@tokens) { + if($t ne "_cn_") { + my $h; + $h=0; + if(exists($peer_grams->{$t})) { + $h=$peer_grams->{$t}<=$model_grams->{$t}? + $peer_grams->{$t}:$model_grams->{$t}; # clip + $$hit+=$h; + } + } + } + if($model_grams->{"_cn_"}!=0) { + $$score=sprintf("%07.5f",$$hit/$model_grams->{"_cn_"}); + } + else { + # no instance of n-gram at this length + $$score=0; + # die "model n-grams has zero instance\n"; + } +} + +sub lcs { + my $model=shift; + my $peer=shift; + my $hit=shift; + my $score=shift; + my $base=shift; + my $model_1grams=shift; + my $peer_1grams=shift; + my ($i,$j,@hitMask,@LCS); + + $$hit=0; + $$base=0; + # compute LCS length for each model/peer pair + for($i=0;$i<@{$model};$i++) { + # use @hitMask to make sure multiple peer hit won't be counted as multiple hits + @hitMask=(); + for($j=0;$j<@{$model->[$i]};$j++) { + push(@hitMask,0); # initialize hit mask + } + $$base+=scalar @{$model->[$i]}; # add model length + for($j=0;$j<@{$peer};$j++) { + &lcs_inner($model->[$i],$peer->[$j],\@hitMask); + } + @LCS=(); + for($j=0;$j<@{$model->[$i]};$j++) { + if($hitMask[$j]==1) { + if(exists($model_1grams->{$model->[$i][$j]})&& + exists($peer_1grams->{$model->[$i][$j]})&& + $model_1grams->{$model->[$i][$j]}>0&& + $peer_1grams->{$model->[$i][$j]}>0) { + $$hit++; + #--------------------------------------------- + # bookkeeping to clip over counting + # everytime a hit is found it is deducted + # from both model and peer unigram count + # if a unigram count already involve in + # one LCS match then it will not be counted + # if it match another token in the model + # unit. This will make sure LCS score + # is always lower than unigram score + $model_1grams->{$model->[$i][$j]}--; + $peer_1grams->{$model->[$i][$j]}--; + push(@LCS,$model->[$i][$j]); + } + } + } + if($debug) { + print "LCS: "; + if(@LCS) { + print join(" ",@LCS),"\n"; + } + else { + print "-\n"; + } + } + } + if($$base>0) { + $$score=$$hit/$$base; + } + else { + $$score=0; + } +} + +sub lcs_inner { + my $model=shift; + my $peer=shift; + my $hitMask=shift; + my $m=scalar @$model; # length of model + my $n=scalar @$peer; # length of peer + my ($i,$j); + my (@c,@b); + + if(@{$model}==0) { + return; + } + @c=(); + @b=(); + # initialize boundary condition and + # the DP array + for($i=0;$i<=$m;$i++) { + push(@c,[]); + push(@b,[]); + for($j=0;$j<=$n;$j++) { + push(@{$c[$i]},0); + push(@{$b[$i]},0); + } + } + for($i=1;$i<=$m;$i++) { + for($j=1;$j<=$n;$j++) { + if($model->[$i-1] eq $peer->[$j-1]) { + # recursively solve the i-1 subproblem + $c[$i][$j]=$c[$i-1][$j-1]+1; + $b[$i][$j]="\\"; # go diagonal + } + elsif($c[$i-1][$j]>=$c[$i][$j-1]) { + $c[$i][$j]=$c[$i-1][$j]; + $b[$i][$j]="^"; # go up + } + else { + $c[$i][$j]=$c[$i][$j-1]; + $b[$i][$j]="<"; # go left + } + } + } + &markLCS($hitMask,\@b,$m,$n); +} + +sub wlcs { + my $model=shift; + my $peer=shift; + my $hit=shift; + my $score=shift; + my $base=shift; + my $weightFactor=shift; + my $model_1grams=shift; + my $peer_1grams=shift; + my ($i,$j,@hitMask,@LCS,$hitLen); + + $$hit=0; + $$base=0; + # compute LCS length for each model/peer pair + for($i=0;$i<@{$model};$i++) { + # use @hitMask to make sure multiple peer hit won't be counted as multiple hits + @hitMask=(); + for($j=0;$j<@{$model->[$i]};$j++) { + push(@hitMask,0); # initialize hit mask + } + $$base+=&wlcsWeight(scalar @{$model->[$i]},$weightFactor); # add model length + for($j=0;$j<@{$peer};$j++) { + &wlcs_inner($model->[$i],$peer->[$j],\@hitMask,$weightFactor); + } + @LCS=(); + $hitLen=0; + for($j=0;$j<@{$model->[$i]};$j++) { + if($hitMask[$j]==1) { + if(exists($model_1grams->{$model->[$i][$j]})&& + exists($peer_1grams->{$model->[$i][$j]})&& + $model_1grams->{$model->[$i][$j]}>0&& + $peer_1grams->{$model->[$i][$j]}>0) { + $hitLen++; + if($j+1<@{$model->[$i]}&&$hitMask[$j+1]==0) { + $$hit+=&wlcsWeight($hitLen,$weightFactor); + $hitLen=0; # reset hit length + } + elsif($j+1==@{$model->[$i]}) { + # end of sentence + $$hit+=&wlcsWeight($hitLen,$weightFactor); + $hitLen=0; # reset hit length + } + #--------------------------------------------- + # bookkeeping to clip over counting + # everytime a hit is found it is deducted + # from both model and peer unigram count + # if a unigram count already involve in + # one LCS match then it will not be counted + # if it match another token in the model + # unit. This will make sure LCS score + # is always lower than unigram score + $model_1grams->{$model->[$i][$j]}--; + $peer_1grams->{$model->[$i][$j]}--; + push(@LCS,$model->[$i][$j]); + } + } + } + if($debug) { + print "ROUGE-W: "; + if(@LCS) { + print join(" ",@LCS),"\n"; + } + else { + print "-\n"; + } + } + } + $$score=wlcsWeightInverse($$hit/$$base,$weightFactor); +} + +sub wlcsWeight { + my $r=shift; + my $power=shift; + + return $r**$power; +} + +sub wlcsWeightInverse { + my $r=shift; + my $power=shift; + + return $r**(1/$power); +} + +sub wlcs_inner { + my $model=shift; + my $peer=shift; + my $hitMask=shift; + my $weightFactor=shift; + my $m=scalar @$model; # length of model + my $n=scalar @$peer; # length of peer + my ($i,$j); + my (@c,@b,@l); + + if(@{$model}==0) { + return; + } + @c=(); + @b=(); + @l=(); # the length of consecutive matches so far + # initialize boundary condition and + # the DP array + for($i=0;$i<=$m;$i++) { + push(@c,[]); + push(@b,[]); + push(@l,[]); + for($j=0;$j<=$n;$j++) { + push(@{$c[$i]},0); + push(@{$b[$i]},0); + push(@{$l[$i]},0); + } + } + for($i=1;$i<=$m;$i++) { + for($j=1;$j<=$n;$j++) { + if($model->[$i-1] eq $peer->[$j-1]) { + # recursively solve the i-1 subproblem + $k=$l[$i-1][$j-1]; + $c[$i][$j]=$c[$i-1][$j-1]+&wlcsWeight($k+1,$weightFactor)-&wlcsWeight($k,$weightFactor); + $b[$i][$j]="\\"; # go diagonal + $l[$i][$j]=$k+1; # extend the consecutive matching sequence + } + elsif($c[$i-1][$j]>=$c[$i][$j-1]) { + $c[$i][$j]=$c[$i-1][$j]; + $b[$i][$j]="^"; # go up + $l[$i][$j]=0; # no match at this position + } + else { + $c[$i][$j]=$c[$i][$j-1]; + $b[$i][$j]="<"; # go left + $l[$i][$j]=0; # no match at this position + } + } + } + &markLCS($hitMask,\@b,$m,$n); +} + +sub markLCS { + my $hitMask=shift; + my $b=shift; + my $i=shift; + my $j=shift; + + while($i!=0&&$j!=0) { + if($b->[$i][$j] eq "\\") { + $i--; + $j--; + $hitMask->[$i]=1; # mark current model position as a hit + } + elsif($b->[$i][$j] eq "^") { + $i--; + } + elsif($b->[$i][$j] eq "<") { + $j--; + } + else { + die "Illegal move in markLCS: ($i,$j): \"$b->[$i][$j]\".\n"; + } + } +} + +# currently only support simple lexical matching +sub getBEScore { + my $modelBEs=shift; + my $peerBEs=shift; + my $hit=shift; + my $score=shift; + my ($s,$t,@tokens); + + $$hit=0; + @tokens=keys (%$modelBEs); + foreach $t (@tokens) { + if($t ne "_cn_") { + my $h; + $h=0; + if(exists($peerBEs->{$t})) { + $h=$peerBEs->{$t}<=$modelBEs->{$t}? + $peerBEs->{$t}:$modelBEs->{$t}; # clip + $$hit+=$h; + if(defined($opt_v)) { + print "* Match: $t\n"; + } + } + } + } + if($modelBEs->{"_cn_"}!=0) { + $$score=sprintf("%07.5f",$$hit/$modelBEs->{"_cn_"}); + } + else { + # no instance of BE at this length + $$score=0; + # die "model BE has zero instance\n"; + } +} + +sub MorphStem { + my $token=shift; + my ($os,$ltoken); + + if(!defined($token)||length($token)==0) { + return undef; + } + + $ltoken=$token; + $ltoken=~tr/A-Z/a-z/; + if(exists($exceptiondb{$ltoken})) { + return $exceptiondb{$ltoken}; + } + $os=$ltoken; + return stem($os); +} + +sub createNGram { + my $text=shift; + my $g=shift; + my $NSIZE=shift; + my @mx_tokens=(); + my @m_tokens=(); + my ($i,$j); + my ($gram); + my ($count); + my ($byteSize); + + # remove stopwords + if($useStopwords) { + %stopwords=(); # consider stop words + } + unless(defined($text)) { + $g->{"_cn_"}=0; + return; + } + @mx_tokens=split(/\s+/,$text); + $byteSize=0; + for($i=0;$i<=$#mx_tokens;$i++) { + unless(exists($stopwords{$mx_tokens[$i]})) { + $byteSize+=length($mx_tokens[$i])+1; # the length of words in bytes so far + 1 space + if($mx_tokens[$i]=~/^[a-z0-9\$]/o) { + if(defined($opt_m)) { + # use stemmer + # only consider words starting with these characters + # use Porter stemmer + my $stem; + $stem=$mx_tokens[$i]; + if(length($stem)>3) { + push(@m_tokens,&MorphStem($stem)); + } + else { # no stemmer as default + push(@m_tokens,$mx_tokens[$i]); + } + } + else { # no stemmer + push(@m_tokens,$mx_tokens[$i]); + } + } + } + } + #------------------------------------- + # create ngram + $count=0; + for($i=0;$i<=$#m_tokens-$NSIZE+1;$i++) { + $gram=$m_tokens[$i]; + for($j=$i+1;$j<=$i+$NSIZE-1;$j++) { + $gram.=" $m_tokens[$j]"; + } + $count++; + unless(exists($g->{$gram})) { + $g->{$gram}=1; + } + else { + $g->{$gram}++; + } + } + # save total number of tokens + $g->{"_cn_"}=$count; +} + +sub createSkipBigram { + my $text=shift; + my $g=shift; + my $skipDistance=shift; + my @mx_tokens=(); + my @m_tokens=(); + my ($i,$j); + my ($gram); + my ($count); + my ($byteSize); + + # remove stopwords + if($useStopwords) { + %stopwords=(); # consider stop words + } + unless(defined($text)) { + $g->{"_cn_"}=0; + return; + } + @mx_tokens=split(/\s+/,$text); + $byteSize=0; + for($i=0;$i<=$#mx_tokens;$i++) { + unless(exists($stopwords{$mx_tokens[$i]})) { + $byteSize+=length($mx_tokens[$i])+1; # the length of words in bytes so far + 1 space + if($mx_tokens[$i]=~/^[a-z0-9\$]/o) { + if(defined($opt_m)) { + # use stemmer + # only consider words starting with these characters + # use Porter stemmer + my $stem; + $stem=$mx_tokens[$i]; + if(length($stem)>3) { + push(@m_tokens,&MorphStem($stem)); + } + else { # no stemmer as default + push(@m_tokens,$mx_tokens[$i]); + } + } + else { # no stemmer + push(@m_tokens,$mx_tokens[$i]); + } + } + } + } + #------------------------------------- + # create ngram + $count=0; + for($i=0;$i<$#m_tokens;$i++) { + if(defined($opt_u)) { + # add unigram count + $gram=$m_tokens[$i]; + $count++; + unless(exists($g->{$gram})) { + $g->{$gram}=1; + } + else { + $g->{$gram}++; + } + } + for($j=$i+1; + $j<=$#m_tokens&&($skipDistance<0||$j<=$i+$skipDistance+1); + $j++) { + $gram=$m_tokens[$i]; + $gram.=" $m_tokens[$j]"; + $count++; + unless(exists($g->{$gram})) { + $g->{$gram}=1; + } + else { + $g->{$gram}++; + } + } + } + # save total number of tokens + $g->{"_cn_"}=$count; +} + +sub createBE { + my $BEList=shift; + my $BEMap=shift; + my $BEMode=shift; + my ($i); + + $BEMap->{"_cn_"}=0; + unless(scalar @{$BEList} > 0) { + return; + } + for($i=0;$i<=$#{$BEList};$i++) { + my (@fds); + my ($be,$stemH,$stemM); + $be=$BEList->[$i]; + $be=~tr/A-Z/a-z/; + @fds=split(/\|/,$be); + if(@fds!=3) { + print STDERR "Basic Element (BE) input file is invalid: *$be*\n"; + print STDERR "A BE file has to be in this format per line: HEAD|MODIFIER|RELATION\n"; + die "For more infomation about BE, go to: http://www.isi.edu/~cyl/BE\n"; + } + $stemH=$fds[0]; + $stemM=$fds[1]; + if(defined($opt_m)) { + # use stemmer + # only consider words starting with these characters + # use Porter stemmer + if(length($stemH)>3) { + $stemH=&MorphStemMulti($stemH); + } + if($stemM ne "NIL"&& + length($stemM)>3) { + $stemM=&MorphStemMulti($stemM); + } + } + if($BEMode eq "H"&& + $stemM eq "nil") { + unless(exists($BEMap->{$stemH})) { + $BEMap->{$stemH}=0; + } + $BEMap->{$stemH}++; + $BEMap->{"_cn_"}++; + } + elsif($BEMode eq "HM"&& + $stemM ne "nil") { + my $pair="$stemH|$stemM"; + unless(exists($BEMap->{$pair})) { + $BEMap->{$pair}=0; + } + $BEMap->{$pair}++; + $BEMap->{"_cn_"}++; + } + elsif($BEMode eq "HMR"&& + $fds[2] ne "nil") { + my $triple="$stemH|$stemM|$fds[2]"; + unless(exists($BEMap->{$triple})) { + $BEMap->{$triple}=0; + } + $BEMap->{$triple}++; + $BEMap->{"_cn_"}++; + } + elsif($BEMode eq "HM1") { + my $pair="$stemH|$stemM"; + unless(exists($BEMap->{$pair})) { + $BEMap->{$pair}=0; + } + $BEMap->{$pair}++; + $BEMap->{"_cn_"}++; + } + elsif($BEMode eq "HMR1"&& + $fds[1] ne "nil") { + # relation can be "NIL" but modifier has to have value + my $triple="$stemH|$stemM|$fds[2]"; + unless(exists($BEMap->{$triple})) { + $BEMap->{$triple}=0; + } + $BEMap->{$triple}++; + $BEMap->{"_cn_"}++; + } + elsif($BEMode eq "HMR2") { + # modifier and relation can be "NIL" + my $triple="$stemH|$stemM|$fds[2]"; + unless(exists($BEMap->{$triple})) { + $BEMap->{$triple}=0; + } + $BEMap->{$triple}++; + $BEMap->{"_cn_"}++; + } + } +} + +sub MorphStemMulti { + my $string=shift; + my (@tokens,@stems,$t,$i); + + @tokens=split(/\s+/,$string); + foreach $t (@tokens) { + if($t=~/[A-Za-z0-9]/o&& + $t!~/(-LRB-|-RRB-|-LSB-|-RSB-|-LCB-|-RCB-)/o) { + my $s; + if(defined($s=&MorphStem($t))) { + $t=$s; + } + push(@stems,$t); + } + else { + push(@stems,$t); + } + } + return join(" ",@stems); +} + +sub tokenizeText { + my $text=shift; + my $tokenizedText=shift; + my @mx_tokens=(); + my ($i,$byteSize); + + # remove stopwords + if($useStopwords) { + %stopwords=(); # consider stop words + } + unless(defined($text)) { + return; + } + @mx_tokens=split(/\s+/,$text); + $byteSize=0; + @{$tokenizedText}=(); + for($i=0;$i<=$#mx_tokens;$i++) { + unless(exists($stopwords{$mx_tokens[$i]})) { + $byteSize+=length($mx_tokens[$i])+1; # the length of words in bytes so far + 1 space + if($mx_tokens[$i]=~/^[a-z0-9\$]/o) { + if(defined($opt_m)) { + # use stemmer + # only consider words starting with these characters + # use Porter stemmer + my $stem; + $stem=$mx_tokens[$i]; + if(length($stem)>3) { + push(@{$tokenizedText},&MorphStem($stem)); + } + else { # no stemmer as default + push(@{$tokenizedText},$mx_tokens[$i]); + } + } + else { # no stemmer + push(@{$tokenizedText},$mx_tokens[$i]); + } + } + } + } +} + +sub tokenizeText_LCS { + my $text=shift; + my $tokenizedText=shift; + my $lengthLimit=shift; + my $byteLimit=shift; + my @mx_tokens=(); + my ($i,$byteSize,$t,$done); + + # remove stopwords + if($useStopwords) { + %stopwords=(); # consider stop words + } + if(@{$text}==0) { + return; + } + $byteSize=0; + @{$tokenizedText}=(); + $done=0; + for($t=0;$t<@{$text}&&$done==0;$t++) { + @mx_tokens=split(/\s+/,$text->[$t]); + # tokenized array for each separate unit (for example, sentence) + push(@{$tokenizedText},[]); + for($i=0;$i<=$#mx_tokens;$i++) { + unless(exists($stopwords{$mx_tokens[$i]})) { + $byteSize+=length($mx_tokens[$i])+1; # the length of words in bytes so far + 1 space + if($mx_tokens[$i]=~/^[a-z0-9\$]/o) { + if(defined($opt_m)) { + # use stemmer + # only consider words starting with these characters + # use Porter stemmer + my $stem; + $stem=$mx_tokens[$i]; + if(length($stem)>3) { + push(@{$tokenizedText->[$t]},&MorphStem($stem)); + } + else { # no stemmer as default + push(@{$tokenizedText->[$t]},$mx_tokens[$i]); + } + } + else { # no stemmer + push(@{$tokenizedText->[$t]},$mx_tokens[$i]); + } + } + } + } + } +} + +# Input file configuration is a list of peer/model pair for each evaluation +# instance. Each evaluation pair is in a line separated by white spaces +# characters. +sub readFileList { + my ($ROUGEEvals)=shift; + my ($ROUGEEvalIDs)=shift; + my ($ROUGEPeerIDTable)=shift; + my ($doc)=shift; + my ($evalID,$pair); + my ($inputFormat,$peerFile,$modelFile,$peerID,$modelID); + my (@files); + + $evalID=1; # automatically generated evaluation ID starting from 1 + $peerID=$systemID; + $modelID="M"; + unless(exists($ROUGEPeerIDTable->{$peerID})) { + $ROUGEPeerIDTable->{$peerID}=1; + } + while(defined($pair=<$doc>)) { + my ($peerPath,$modelPath); + if($pair!~/^\#/o&& + $pair!~/^\s*$/o) { # Lines start with '#' is a comment line + chomp($pair); + $pair=~s/^\s+//; + $pair=~s/\s+$//; + @files=split(/\s+/,$pair); + if(scalar @files < 2) { + die "File list has to have at least 2 filenames per line (peer model1 model2 ... modelN)\n"; + } + $peerFile=$files[0]; + unless(exists($ROUGEEvals->{$evalID})) { + $ROUGEEvals->{$evalID}={}; + push(@{$ROUGEEvalIDs},$evalID); + $ROUGEEvals->{$evalID}{"IF"}=$opt_z; + } + unless(exists($ROUGEPeerIDTable->{$peerID})) { + $ROUGEPeerIDTable->{$peerID}=1; # save peer ID for reference + } + if(exists($ROUGEEvals->{$evalID})) { + unless(exists($ROUGEEvals->{$evalID}{"Ps"})) { + $ROUGEEvals->{$evalID}{"Ps"}={}; + $ROUGEEvals->{$evalID}{"PIDList"}=[]; + } + push(@{$ROUGEEvals->{$evalID}{"PIDList"}},$peerID); # save peer IDs + } + else { + die "(PEERS) Evaluation database does not contain entry for this evaluation ID: $evalID\n"; + } + # remove leading and trailing newlines and + # spaces + if(exists($ROUGEEvals->{$evalID}{"Ps"})) { + $ROUGEEvals->{$evalID}{"Ps"}{$peerID}=$peerFile; # save peer filename + } + else { + die "(P) Evaluation database does not contain entry for this evaluation ID: $evalID\n"; + } + for($mid=1;$mid<=$#files;$mid++) { + $modelFile=$files[$mid]; + if(exists($ROUGEEvals->{$evalID})) { + unless(exists($ROUGEEvals->{$evalID}{"Ms"})) { + $ROUGEEvals->{$evalID}{"Ms"}={}; + $ROUGEEvals->{$evalID}{"MIDList"}=[]; + } + push(@{$ROUGEEvals->{$evalID}{"MIDList"}},"$modelID.$mid"); # save model IDs + } + else { + die "(MODELS) Evaluation database does not contain entry for this evaluation ID: $evalID\n"; + } + # remove leading and trailing newlines and + # spaces + if(exists($ROUGEEvals->{$evalID}{"Ms"})) { + $ROUGEEvals->{$evalID}{"Ms"}{"$modelID.$mid"}=$modelFile; # save peer filename + } + else { + die "(M) Evaluation database does not contain entry for this evaluation ID: $evalID\n"; + } + } + $evalID++; + } + } +} + +# read and parse ROUGE evaluation file +sub readEvals { + my ($ROUGEEvals)=shift; + my ($ROUGEEvalIDs)=shift; + my ($ROUGEPeerIDTable)=shift; + my ($node)=shift; + my ($evalID)=shift; + my ($inputFormat,$peerRoot,$modelRoot,$peerFile,$modelFile,$peerID,$modelID); + + if(defined($opt_z)) { + # Input file configuration is a list of peer/model pair for each evaluation + # instance. Each evaluation pair is in a line separated by white spaces + # characters. + &readFileList($ROUGEEvals,$ROUGEEvalIDs,$ROUGEPeerIDTable,$node); + return; + } + # Otherwise, the input file is the standard ROUGE XML evaluation configuration + # file. + if($node->getNodeType==ELEMENT_NODE|| + $node->getNodeType==DOCUMENT_NODE) { + if($node->getNodeType==ELEMENT_NODE) { + $nodeName=$node->getNodeName; + if($nodeName=~/^EVAL$/oi) { + $evalID=$node->getAttributeNode("ID")->getValue; + unless(exists($ROUGEEvals->{$evalID})) { + $ROUGEEvals->{$evalID}={}; + push(@{$ROUGEEvalIDs},$evalID); + } + foreach my $child ($node->getChildNodes()) { + &readEvals($ROUGEEvals,$ROUGEEvalIDs,$ROUGEPeerIDTable,$child,$evalID); + } + } + elsif($nodeName=~/^INPUT-FORMAT$/oi) { + $inputFormat=$node->getAttributeNode("TYPE")->getValue; + if($inputFormat=~/^(SEE|ISI|SPL|SIMPLE)$/oi) { # SPL: one sentence per line + if(exists($ROUGEEvals->{$evalID})) { + $ROUGEEvals->{$evalID}{"IF"}=$inputFormat; + } + else { + die "(INPUT-FORMAT) Evaluation database does not contain entry for this evaluation ID: $evalID\n"; + } + } + else { + die "Unknown input type: $inputFormat\n"; + } + } + elsif($nodeName=~/^PEER-ROOT$/oi) { + foreach my $child ($node->getChildNodes()) { + if($child->getNodeType==TEXT_NODE) { + $peerRoot=$child->getData; + # remove leading and trailing newlines and + # spaces + $peerRoot=~s/^[\n\s]+//; + $peerRoot=~s/[\n\s]+$//; + if(exists($ROUGEEvals->{$evalID})) { + $ROUGEEvals->{$evalID}{"PR"}=$peerRoot; + } + else { + die "(PEER-ROOT) Evaluation database does not contain entry for this evaluation ID: $evalID\n"; + } + } + } + } + elsif($nodeName=~/^MODEL-ROOT$/oi) { + foreach my $child ($node->getChildNodes()) { + if($child->getNodeType==TEXT_NODE) { + $modelRoot=$child->getData; + # remove leading and trailing newlines and + # spaces + $modelRoot=~s/^[\n\s]+//; + $modelRoot=~s/[\n\s]+$//; + if(exists($ROUGEEvals->{$evalID})) { + $ROUGEEvals->{$evalID}{"MR"}=$modelRoot; + } + else { + die "(MODEL-ROOT) Evaluation database does not contain entry for this evaluation ID: $evalID\n"; + } + } + } + } + elsif($nodeName=~/^PEERS$/oi) { + foreach my $child ($node->getChildNodes()) { + if($child->getNodeType==ELEMENT_NODE&& + $child->getNodeName=~/^P$/oi) { + $peerID=$child->getAttributeNode("ID")->getValue; + unless(exists($ROUGEPeerIDTable->{$peerID})) { + $ROUGEPeerIDTable->{$peerID}=1; # save peer ID for reference + } + if(exists($ROUGEEvals->{$evalID})) { + unless(exists($ROUGEEvals->{$evalID}{"Ps"})) { + $ROUGEEvals->{$evalID}{"Ps"}={}; + $ROUGEEvals->{$evalID}{"PIDList"}=[]; + } + push(@{$ROUGEEvals->{$evalID}{"PIDList"}},$peerID); # save peer IDs + } + else { + die "(PEERS) Evaluation database does not contain entry for this evaluation ID: $evalID\n"; + } + foreach my $grandchild ($child->getChildNodes()) { + if($grandchild->getNodeType==TEXT_NODE) { + $peerFile=$grandchild->getData; + # remove leading and trailing newlines and + # spaces + $peerFile=~s/^[\n\s]+//; + $peerFile=~s/[\n\s]+$//; + if(exists($ROUGEEvals->{$evalID}{"Ps"})) { + $ROUGEEvals->{$evalID}{"Ps"}{$peerID}=$peerFile; # save peer filename + } + else { + die "(P) Evaluation database does not contain entry for this evaluation ID: $evalID\n"; + } + } + } + } + } + } + elsif($nodeName=~/^MODELS$/oi) { + foreach my $child ($node->getChildNodes()) { + if($child->getNodeType==ELEMENT_NODE&& + $child->getNodeName=~/^M$/oi) { + $modelID=$child->getAttributeNode("ID")->getValue; + if(exists($ROUGEEvals->{$evalID})) { + unless(exists($ROUGEEvals->{$evalID}{"Ms"})) { + $ROUGEEvals->{$evalID}{"Ms"}={}; + $ROUGEEvals->{$evalID}{"MIDList"}=[]; + } + push(@{$ROUGEEvals->{$evalID}{"MIDList"}},$modelID); # save model IDs + } + else { + die "(MODELS) Evaluation database does not contain entry for this evaluation ID: $evalID\n"; + } + foreach my $grandchild ($child->getChildNodes()) { + if($grandchild->getNodeType==TEXT_NODE) { + $modelFile=$grandchild->getData; + # remove leading and trailing newlines and + # spaces + $modelFile=~s/^[\n\s]+//; + $modelFile=~s/[\n\s]+$//; + if(exists($ROUGEEvals->{$evalID}{"Ms"})) { + $ROUGEEvals->{$evalID}{"Ms"}{$modelID}=$modelFile; # save peer filename + } + else { + die "(M) Evaluation database does not contain entry for this evaluation ID: $evalID\n"; + } + } + } + } + } + } + else { + foreach my $child ($node->getChildNodes()) { + &readEvals($ROUGEEvals,$ROUGEEvalIDs,$ROUGEPeerIDTable,$child,$evalID); + } + } + } + else { + foreach my $child ($node->getChildNodes()) { + &readEvals($ROUGEEvals,$ROUGEEvalIDs,$ROUGEPeerIDTable,$child,$evalID); + } + } + } + else { + if(defined($node->getChildNodes())) { + foreach my $child ($node->getChildNodes()) { + &readEvals($ROUGEEvals,$ROUGEEvalIDs,$ROUGEPeerIDTable,$child,$evalID); + } + } + } +} + +# Porter stemmer in Perl. Few comments, but it's easy to follow against the rules in the original +# paper, in +# +# Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14, +# no. 3, pp 130-137, +# +# see also http://www.tartarus.org/~martin/PorterStemmer + +# Release 1 + +local %step2list; +local %step3list; +local ($c, $v, $C, $V, $mgr0, $meq1, $mgr1, $_v); + + +sub stem + { my ($stem, $suffix, $firstch); + my $w = shift; + if (length($w) < 3) { return $w; } # length at least 3 + # now map initial y to Y so that the patterns never treat it as vowel: + $w =~ /^./; $firstch = $&; + if ($firstch =~ /^y/) { $w = ucfirst $w; } + + # Step 1a + if ($w =~ /(ss|i)es$/) { $w=$`.$1; } + elsif ($w =~ /([^s])s$/) { $w=$`.$1; } + # Step 1b + if ($w =~ /eed$/) { if ($` =~ /$mgr0/o) { chop($w); } } + elsif ($w =~ /(ed|ing)$/) + { $stem = $`; + if ($stem =~ /$_v/o) + { $w = $stem; + if ($w =~ /(at|bl|iz)$/) { $w .= "e"; } + elsif ($w =~ /([^aeiouylsz])\1$/) { chop($w); } + elsif ($w =~ /^${C}${v}[^aeiouwxy]$/o) { $w .= "e"; } + } +} +# Step 1c + if ($w =~ /y$/) { $stem = $`; if ($stem =~ /$_v/o) { $w = $stem."i"; } } + +# Step 2 +if ($w =~ /(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/) + { $stem = $`; $suffix = $1; + if ($stem =~ /$mgr0/o) { $w = $stem . $step2list{$suffix}; } + } + +# Step 3 + +if ($w =~ /(icate|ative|alize|iciti|ical|ful|ness)$/) + { $stem = $`; $suffix = $1; + if ($stem =~ /$mgr0/o) { $w = $stem . $step3list{$suffix}; } + } + +# Step 4 + + # CYL: Modified 02/14/2004, a word ended in -ement will not try the rules "-ment" and "-ent" +# if ($w =~ /(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/) +# elsif ($w =~ /(s|t)(ion)$/) +# { $stem = $` . $1; if ($stem =~ /$mgr1/o) { $w = $stem; } } + if ($w =~ /(al|ance|ence|er|ic|able|ible|ant|ement|ou|ism|ate|iti|ous|ive|ize)$/) + { $stem = $`; if ($stem =~ /$mgr1/o) { $w = $stem; } } + if ($w =~ /ment$/) + { $stem = $`; if ($stem =~ /$mgr1/o) { $w = $stem; } } + if ($w =~ /ent$/) + { $stem = $`; if ($stem =~ /$mgr1/o) { $w = $stem; } } + elsif ($w =~ /(s|t)(ion)$/) + { $stem = $` . $1; if ($stem =~ /$mgr1/o) { $w = $stem; } } + +# Step 5 + +if ($w =~ /e$/) + { $stem = $`; + if ($stem =~ /$mgr1/o or + ($stem =~ /$meq1/o and not $stem =~ /^${C}${v}[^aeiouwxy]$/o)) +{ $w = $stem; } +} +if ($w =~ /ll$/ and $w =~ /$mgr1/o) { chop($w); } + +# and turn initial Y back to y +if ($firstch =~ /^y/) { $w = lcfirst $w; } +return $w; +} + + sub initialise { + + %step2list = + ( 'ational'=>'ate', 'tional'=>'tion', 'enci'=>'ence', 'anci'=>'ance', 'izer'=>'ize', 'bli'=>'ble', + 'alli'=>'al', 'entli'=>'ent', 'eli'=>'e', 'ousli'=>'ous', 'ization'=>'ize', 'ation'=>'ate', + 'ator'=>'ate', 'alism'=>'al', 'iveness'=>'ive', 'fulness'=>'ful', 'ousness'=>'ous', 'aliti'=>'al', + 'iviti'=>'ive', 'biliti'=>'ble', 'logi'=>'log'); + + %step3list = + ('icate'=>'ic', 'ative'=>'', 'alize'=>'al', 'iciti'=>'ic', 'ical'=>'ic', 'ful'=>'', 'ness'=>''); + + + $c = "[^aeiou]"; # consonant + $v = "[aeiouy]"; # vowel + $C = "${c}[^aeiouy]*"; # consonant sequence + $V = "${v}[aeiou]*"; # vowel sequence + + $mgr0 = "^(${C})?${V}${C}"; # [C]VC... is m>0 + $meq1 = "^(${C})?${V}${C}(${V})?" . '$'; # [C]VC[V] is m=1 + $mgr1 = "^(${C})?${V}${C}${V}${C}"; # [C]VCVC... is m>1 + $_v = "^(${C})?${v}"; # vowel in stem + +} + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/WordNet-1.6.exc.db b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/WordNet-1.6.exc.db new file mode 100644 index 0000000000000000000000000000000000000000..68cd6010c9392b3cea4b5488ee089cd993ee9b6f Binary files /dev/null and b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/WordNet-1.6.exc.db differ diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/adj.exc b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/adj.exc new file mode 100644 index 0000000000000000000000000000000000000000..db59aa610d6c721d1129cd4ea4177ce0d7753ddf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/adj.exc @@ -0,0 +1,1322 @@ +after after +airier airy +airiest airy +angrier angry +angriest angry +artier arty +artiest arty +ashier ashy +ashiest ashy +baggier baggy +baggiest baggy +balkier balky +balkiest balky +balmier balmy +balmiest balmy +bandier bandy +bandiest bandy +barmier barmy +barmiest barmy +battier batty +battiest batty +baulkier baulky +baulkiest baulky +bawdier bawdy +bawdiest bawdy +beadier beady +beadiest beady +beastlier beastly +beastliest beastly +beefier beefy +beefiest beefy +beerier beery +beeriest beery +bendier bendy +bendiest bendy +bigger big +biggest big +bitchier bitchy +bitchiest bitchy +bittier bitty +bittiest bitty +blearier bleary +bleariest bleary +bloodier bloody +bloodiest bloody +bloodthirstier bloodthirsty +bloodthirstiest bloodthirsty +blowier blowy +blowiest blowy +blowsier blowsy +blowsiest blowsy +blowzier blowzy +blowziest blowzy +bluer blue +bluest blue +bonier bony +boniest bony +bonnier bonny +bonniest bonny +boozier boozy +booziest boozy +boskier bosky +boskiest bosky +bossier bossy +bossiest bossy +botchier botchy +botchiest botchy +bother bother +bouncier bouncy +bounciest bouncy +brainier brainy +brainiest brainy +brashier brashy +brashiest brashy +brassier brassy +brassiest brassy +brawnier brawny +brawniest brawny +breathier breathy +breathiest breathy +breezier breezy +breeziest breezy +brinier briny +briniest briny +broodier broody +broodiest broody +bubblier bubbly +bubbliest bubbly +buggier buggy +buggiest buggy +bulkier bulky +bulkiest bulky +bumpier bumpy +bumpiest bumpy +bunchier bunchy +bunchiest bunchy +burlier burly +burliest burly +burrier burry +burriest burry +bushier bushy +bushiest bushy +busier busy +busiest busy +bustier busty +bustiest busty +cagier cagey +cagiest cagey +cannier canny +canniest canny +cantier canty +cantiest canty +catchier catchy +catchiest catchy +cattier catty +cattiest catty +chancier chancy +chanciest chancy +charier chary +chariest chary +chattier chatty +chattiest chatty +cheekier cheeky +cheekiest cheeky +cheerier cheery +cheeriest cheery +cheesier cheesy +cheesiest cheesy +chestier chesty +chestiest chesty +chewier chewy +chewiest chewy +chillier chilly +chilliest chilly +chintzier chintzy +chintziest chintzy +chippier chippy +chippiest chippy +choosier choosy +choosiest choosy +choppier choppy +choppiest choppy +chubbier chubby +chubbiest chubby +chuffier chuffy +chuffiest chuffy +chummier chummy +chummiest chummy +chunkier chunky +chunkiest chunky +churchier churchy +churchiest churchy +clammier clammy +clammiest clammy +classier classy +classiest classy +cleanlier cleanly +cleanliest cleanly +clerklier clerkly +clerkliest clerkly +cloudier cloudy +cloudiest cloudy +clubbier clubby +clubbiest clubby +clumsier clumsy +clumsiest clumsy +cockier cocky +cockiest cocky +collier colly +colliest colly +comelier comely +comeliest comely +comfier comfy +comfiest comfy +cornier corny +corniest corny +cosier cosy +cosiest cosy +costlier costly +costliest costly +courtlier courtly +courtliest courtly +cozier cozy +coziest cozy +crabbier crabby +crabbiest crabby +craftier crafty +craftiest crafty +craggier craggy +craggiest craggy +crankier cranky +crankiest cranky +crawlier crawly +crawliest crawly +crazier crazy +craziest crazy +creamier creamy +creamiest creamy +creepier creepy +creepiest creepy +crispier crispy +crispiest crispy +crumbier crumby +crumbiest crumby +crumblier crumbly +crumbliest crumbly +crummier crummy +crummiest crummy +crustier crusty +crustiest crusty +curlier curly +curliest curly +daffier daffy +daffiest daffy +daintier dainty +daintiest dainty +dandier dandy +dandiest dandy +deadlier deadly +deadliest deadly +dewier dewy +dewiest dewy +dicier dicey +diciest dicey +dimmer dim +dimmest dim +dingier dingy +dingiest dingy +dinkier dinky +dinkiest dinky +dippier dippy +dippiest dippy +dirtier dirty +dirtiest dirty +dishier dishy +dishiest dishy +dizzier dizzy +dizziest dizzy +dodgier dodgy +dodgiest dodgy +dopier dopey +dopiest dopey +dottier dotty +dottiest dotty +doughier doughy +doughiest doughy +doughtier doughty +doughtiest doughty +dowdier dowdy +dowdiest dowdy +dowier dowie dowy +dowiest dowie dowy +downier downy +downiest downy +dozier dozy +doziest dozy +drabber drab +drabbest drab +draftier drafty +draftiest drafty +draggier draggy +draggiest draggy +draughtier draughty +draughtiest draughty +dreamier dreamy +dreamiest dreamy +drearier dreary +dreariest dreary +dreggier dreggy +dreggiest dreggy +dressier dressy +dressiest dressy +drier dry +driest dry +drippier drippy +drippiest drippy +drowsier drowsy +drowsiest drowsy +dryer dry +dryest dry +dumpier dumpy +dumpiest dumpy +dunner dun +dunnest dun +duskier dusky +duskiest dusky +dustier dusty +dustiest dusty +earlier early +earliest early +earthier earthy +earthiest earthy +earthlier earthly +earthliest earthly +easier easy +easiest easy +edgier edgy +edgiest edgy +eerier eerie +eeriest eerie +emptier empty +emptiest empty +fancier fancy +fanciest fancy +fatter fat +fattest fat +fattier fatty +fattiest fatty +faultier faulty +faultiest faulty +feistier feisty +feistiest feisty +fiddlier fiddly +fiddliest fiddly +filmier filmy +filmiest filmy +filthier filthy +filthiest filthy +finnier finny +finniest finny +fishier fishy +fishiest fishy +fitter fit +fittest fit +flabbier flabby +flabbiest flabby +flaggier flaggy +flaggiest flaggy +flakier flaky +flakiest flaky +flashier flashy +flashiest flashy +flatter flat +flattest flat +flauntier flaunty +flauntiest flaunty +fledgier fledgy +fledgiest fledgy +fleecier fleecy +fleeciest fleecy +fleshier fleshy +fleshiest fleshy +fleshlier fleshly +fleshliest fleshly +flightier flighty +flightiest flighty +flimsier flimsy +flimsiest flimsy +flintier flinty +flintiest flinty +floatier floaty +floatiest floaty +floppier floppy +floppiest floppy +flossier flossy +flossiest flossy +fluffier fluffy +fluffiest fluffy +flukier fluky +flukiest fluky +foamier foamy +foamiest foamy +foggier foggy +foggiest foggy +folksier folksy +folksiest folksy +foolhardier foolhardy +foolhardiest foolhardy +forest forest +foxier foxy +foxiest foxy +fratchier fratchy +fratchiest fratchy +freakier freaky +freakiest freaky +freer free +freest free +frenchier frenchy +frenchiest frenchy +friendlier friendly +friendliest friendly +friskier frisky +friskiest frisky +frizzier frizzy +frizziest frizzy +frizzlier frizzly +frizzliest frizzly +frostier frosty +frostiest frosty +frouzier frouzy +frouziest frouzy +frowsier frowsy +frowsiest frowsy +frowzier frowzy +frowziest frowzy +fruitier fruity +fruitiest fruity +funkier funky +funkiest funky +funnier funny +funniest funny +furrier furry +furriest furry +fussier fussy +fussiest fussy +fustier fusty +fustiest fusty +fuzzier fuzzy +fuzziest fuzzy +gabbier gabby +gabbiest gabby +gamier gamy +gamiest gamy +gammier gammy +gammiest gammy +gassier gassy +gassiest gassy +gaudier gaudy +gaudiest gaudy +gauzier gauzy +gauziest gauzy +gawkier gawky +gawkiest gawky +ghastlier ghastly +ghastliest ghastly +ghostlier ghostly +ghostliest ghostly +giddier giddy +giddiest giddy +gladder glad +gladdest glad +glassier glassy +glassiest glassy +glibber glib +glibbest glib +gloomier gloomy +gloomiest gloomy +glossier glossy +glossiest glossy +glummer glum +glummest glum +godlier godly +godliest godly +goodlier goodly +goodliest goodly +goofier goofy +goofiest goofy +gooier gooey +gooiest gooey +goosier goosy +goosiest goosy +gorier gory +goriest gory +gradelier gradely +gradeliest gradely +grainier grainy +grainiest grainy +grassier grassy +grassiest grassy +greasier greasy +greasiest greasy +greedier greedy +greediest greedy +grimmer grim +grimmest grim +grislier grisly +grisliest grisly +grittier gritty +grittiest gritty +grizzlier grizzly +grizzliest grizzly +groggier groggy +groggiest groggy +groovier groovy +grooviest groovy +grottier grotty +grottiest grotty +groutier grouty +groutiest grouty +grubbier grubby +grubbiest grubby +grumpier grumpy +grumpiest grumpy +guiltier guilty +guiltiest guilty +gummier gummy +gummiest gummy +gushier gushy +gushiest gushy +gustier gusty +gustiest gusty +gutsier gutsy +gutsiest gutsy +hairier hairy +hairiest hairy +halfways halfway +hammier hammy +hammiest hammy +handier handy +handiest handy +happier happy +happiest happy +hardier hardy +hardiest hardy +hastier hasty +hastiest hasty +haughtier haughty +haughtiest haughty +hazier hazy +haziest hazy +headier heady +headiest heady +healthier healthy +healthiest healthy +heartier hearty +heartiest hearty +heavier heavy +heaviest heavy +heftier hefty +heftiest hefty +hepper hep +heppest hep +herbier herby +herbiest herby +hinder hind +hipper hip +hippest hip +hippier hippy +hippiest hippy +hoarier hoary +hoariest hoary +holier holy +holiest holy +homelier homely +homeliest homely +homier homey +homiest homey +hornier horny +horniest horny +horsier horsy +horsiest horsy +hotter hot +hottest hot +humpier humpy +humpiest humpy +hungrier hungry +hungriest hungry +huskier husky +huskiest husky +icier icy +iciest icy +inkier inky +inkiest inky +jaggier jaggy +jaggiest jaggy +jammier jammy +jammiest jammy +jauntier jaunty +jauntiest jaunty +jazzier jazzy +jazziest jazzy +jerkier jerky +jerkiest jerky +jollier jolly +jolliest jolly +juicier juicy +juiciest juicy +jumpier jumpy +jumpiest jumpy +kindlier kindly +kindliest kindly +kinkier kinky +kinkiest kinky +knottier knotty +knottiest knotty +knurlier knurly +knurliest knurly +kookier kooky +kookiest kooky +lacier lacy +laciest lacy +lairier lairy +lairiest lairy +lakier laky +lakiest laky +lankier lanky +lankiest lanky +lathier lathy +lathiest lathy +layer layer +lazier lazy +laziest lazy +leafier leafy +leafiest leafy +leakier leaky +leakiest leaky +learier leary +leariest leary +leerier leery +leeriest leery +leggier leggy +leggiest leggy +lengthier lengthy +lengthiest lengthy +limier limy +limiest limy +lippier lippy +lippiest lippy +livelier lively +liveliest lively +loftier lofty +loftiest lofty +logier logy +logiest logy +lonelier lonely +loneliest lonely +loonier loony +looniest loony +loopier loopy +loopiest loopy +lordlier lordly +lordliest lordly +lousier lousy +lousiest lousy +lovelier lovely +loveliest lovely +lowlier lowly +lowliest lowly +luckier lucky +luckiest lucky +lumpier lumpy +lumpiest lumpy +lunier luny +luniest luny +lustier lusty +lustiest lusty +madder mad +maddest mad +maltier malty +maltiest malty +mangier mangy +mangiest mangy +mankier manky +mankiest manky +manlier manly +manliest manly +marshier marshy +marshiest marshy +massier massy +massiest massy +matter matter +maungier maungy +maungiest maungy +mazier mazy +maziest mazy +mealier mealy +mealiest mealy +measlier measly +measliest measly +meatier meaty +meatiest meaty +merrier merry +merriest merry +messier messy +messiest messy +miffier miffy +miffiest miffy +mightier mighty +mightiest mighty +milkier milky +milkiest milky +mingier mingy +mingiest mingy +mirkier mirky +mirkiest mirky +mistier misty +mistiest misty +modest modest +moldier moldy +moldiest moldy +moodier moody +moodiest moody +moonier moony +mooniest moony +mothier mothy +mothiest mothy +mouldier mouldy +mouldiest mouldy +mousier mousy +mousiest mousy +mouthier mouthy +mouthiest mouthy +muckier mucky +muckiest mucky +muddier muddy +muddiest muddy +muggier muggy +muggiest muggy +murkier murky +murkiest murky +mushier mushy +mushiest mushy +muskier musky +muskiest musky +mustier musty +mustiest musty +muzzier muzzy +muzziest muzzy +nappier nappy +nappiest nappy +nastier nasty +nastiest nasty +nattier natty +nattiest natty +naughtier naughty +naughtiest naughty +needier needy +neediest needy +nervier nervy +nerviest nervy +newsier newsy +newsiest newsy +niftier nifty +niftiest nifty +nippier nippy +nippiest nippy +nittier nitty +nittiest nitty +noisier noisy +noisiest noisy +nosier nosy +nosiest nosy +nuttier nutty +nuttiest nutty +oilier oily +oiliest oily +oozier oozy +ooziest oozy +pallier pally +palliest pally +palmier palmy +palmiest palmy +paltrier paltry +paltriest paltry +pappier pappy +pappiest pappy +parkier parky +parkiest parky +pastier pasty +pastiest pasty +patchier patchy +patchiest patchy +pawkier pawky +pawkiest pawky +peachier peachy +peachiest peachy +pearlier pearly +pearliest pearly +peppier peppy +peppiest peppy +perkier perky +perkiest perky +peskier pesky +peskiest pesky +pettier petty +pettiest petty +phonier phony +phoniest phony +pickier picky +pickiest picky +piggier piggy +piggiest piggy +pinier piny +piniest piny +pitchier pitchy +pitchiest pitchy +pithier pithy +pithiest pithy +plashier plashy +plashiest plashy +platier platy +platiest platy +pluckier plucky +pluckiest plucky +plumier plumy +plumiest plumy +plummier plummy +plummiest plummy +podgier podgy +podgiest podgy +pokier poky +pokiest poky +porkier porky +porkiest porky +portlier portly +portliest portly +pottier potty +pottiest potty +preachier preachy +preachiest preachy +prettier pretty +prettiest pretty +pricier pricy +priciest pricy +pricklier prickly +prickliest prickly +priestlier priestly +priestliest priestly +primmer prim +primmest prim +princelier princely +princeliest princely +prissier prissy +prissiest prissy +privier privy +priviest privy +prosier prosy +prosiest prosy +pudgier pudgy +pudgiest pudgy +puffier puffy +puffiest puffy +pulpier pulpy +pulpiest pulpy +punchier punchy +punchiest punchy +punier puny +puniest puny +pushier pushy +pushiest pushy +pussier pussy +pussiest pussy +quaggier quaggy +quaggiest quaggy +quakier quaky +quakiest quaky +queasier queasy +queasiest queasy +queenlier queenly +queenliest queenly +racier racy +raciest racy +rainier rainy +rainiest rainy +randier randy +randiest randy +rangier rangy +rangiest rangy +rattier ratty +rattiest ratty +rattlier rattly +rattliest rattly +raunchier raunchy +raunchiest raunchy +readier ready +readiest ready +redder red +reddest red +reedier reedy +reediest reedy +rimier rimy +rimiest rimy +riskier risky +riskiest risky +ritzier ritzy +ritziest ritzy +rockier rocky +rockiest rocky +roilier roily +roiliest roily +rookier rooky +rookiest rooky +roomier roomy +roomiest roomy +ropier ropy +ropiest ropy +rosier rosy +rosiest rosy +rowdier rowdy +rowdiest rowdy +ruddier ruddy +ruddiest ruddy +runnier runny +runniest runny +rushier rushy +rushiest rushy +rustier rusty +rustiest rusty +ruttier rutty +ruttiest rutty +sadder sad +saddest sad +saltier salty +saltiest salty +sandier sandy +sandiest sandy +sappier sappy +sappiest sappy +sassier sassy +sassiest sassy +sauccier saucy +saucciest saucy +savvier savvy +savviest savvy +scabbier scabby +scabbiest scabby +scalier scaly +scaliest scaly +scantier scanty +scantiest scanty +scarier scary +scariest scary +scraggier scraggy +scraggiest scraggy +scragglier scraggly +scraggliest scraggly +scrappier scrappy +scrappiest scrappy +scrawnier scrawny +scrawniest scrawny +screwier screwy +screwiest screwy +scrubbier scrubby +scrubbiest scrubby +scruffier scruffy +scruffiest scruffy +scungier scungy +scungiest scungy +scurvier scurvy +scurviest scurvy +seamier seamy +seamiest seamy +seedier seedy +seediest seedy +seemlier seemly +seemliest seemly +sexier sexy +sexiest sexy +shabbier shabby +shabbiest shabby +shadier shady +shadiest shady +shaggier shaggy +shaggiest shaggy +shakier shaky +shakiest shaky +shapelier shapely +shapeliest shapely +shier shy +shiest shy +shiftier shifty +shiftiest shifty +shinier shiny +shiniest shiny +shirtier shirty +shirtiest shirty +shoddier shoddy +shoddiest shoddy +showier showy +showiest showy +shrubbier shrubby +shrubbiest shrubby +shyer shy +shyest shy +sicklier sickly +sickliest sickly +sightlier sightly +sightliest sightly +silkier silky +silkiest silky +sillier silly +silliest silly +sketchier sketchy +sketchiest sketchy +skimpier skimpy +skimpiest skimpy +skinnier skinny +skinniest skinny +slaphappier slaphappy +slaphappiest slaphappy +slatier slaty +slatiest slaty +sleazier sleazy +sleaziest sleazy +sleepier sleepy +sleepiest sleepy +slier sly +sliest sly +slimier slimy +slimiest slimy +slimmer slim +slimmest slim +slimsier slimsy +slimsiest slimsy +slinkier slinky +slinkiest slinky +slippier slippy +slippiest slippy +sloppier sloppy +sloppiest sloppy +slyer sly +slyest sly +smarmier smarmy +smarmiest smarmy +smellier smelly +smelliest smelly +smokier smoky +smokiest smoky +smugger smug +smuggest smug +snakier snaky +snakiest snaky +snappier snappy +snappiest snappy +snatchier snatchy +snatchiest snatchy +snazzier snazzy +snazziest snazzy +sniffier sniffy +sniffiest sniffy +snootier snooty +snootiest snooty +snottier snotty +snottiest snotty +snowier snowy +snowiest snowy +snuffier snuffy +snuffiest snuffy +snugger snug +snuggest snug +soapier soapy +soapiest soapy +soggier soggy +soggiest soggy +sonsier sonsy +sonsiest sonsy +sootier sooty +sootiest sooty +soppier soppy +soppiest soppy +sorrier sorry +sorriest sorry +soupier soupy +soupiest soupy +speedier speedy +speediest speedy +spicier spicy +spiciest spicy +spiffier spiffy +spiffiest spiffy +spikier spiky +spikiest spiky +spindlier spindly +spindliest spindly +spinier spiny +spiniest spiny +splashier splashy +splashiest splashy +spongier spongy +spongiest spongy +spookier spooky +spookiest spooky +spoonier spoony +spooniest spoony +sportier sporty +sportiest sporty +spottier spotty +spottiest spotty +sprier spry +spriest spry +sprightlier sprightly +sprightliest sprightly +springier springy +springiest springy +squashier squashy +squashiest squashy +squiffier squiffy +squiffiest squiffy +stagier stagy +stagiest stagy +stalkier stalky +stalkiest stalky +starchier starchy +starchiest starchy +starrier starry +starriest starry +statelier stately +stateliest stately +steadier steady +steadiest steady +stealthier stealthy +stealthiest stealthy +steamier steamy +steamiest steamy +stingier stingy +stingiest stingy +stockier stocky +stockiest stocky +stodgier stodgy +stodgiest stodgy +stonier stony +stoniest stony +stormier stormy +stormiest stormy +streakier streaky +streakiest streaky +streamier streamy +streamiest streamy +stretchier stretchy +stretchiest stretchy +stringier stringy +stringiest stringy +stripier stripy +stripiest stripy +stronger strong +strongest strong +stroppier stroppy +stroppiest stroppy +stuffier stuffy +stuffiest stuffy +stumpier stumpy +stumpiest stumpy +sturdier sturdy +sturdiest sturdy +sulkier sulky +sulkiest sulky +sultrier sultry +sultriest sultry +sunnier sunny +sunniest sunny +surlier surly +surliest surly +swankier swanky +swankiest swanky +swarthier swarthy +swarthiest swarthy +sweatier sweaty +sweatiest sweaty +tackier tacky +tackiest tacky +talkier talky +talkiest talky +tangier tangy +tangiest tangy +tanner tan +tannest tan +tardier tardy +tardiest tardy +tastier tasty +tastiest tasty +tattier tatty +tattiest tatty +tawdrier tawdry +tawdriest tawdry +techier techy +techiest techy +teenier teeny +teeniest teeny +testier testy +testiest testy +tetchier tetchy +tetchiest tetchy +thinner thin +thinnest thin +thirstier thirsty +thirstiest thirsty +thornier thorny +thorniest thorny +threadier thready +threadiest thready +thriftier thrifty +thriftiest thrifty +throatier throaty +throatiest throaty +tidier tidy +tidiest tidy +timelier timely +timeliest timely +tinier tiny +tiniest tiny +tinnier tinny +tinniest tinny +tipsier tipsy +tipsiest tipsy +tonier tony +toniest tony +toothier toothy +toothiest toothy +touchier touchy +touchiest touchy +trashier trashy +trashiest trashy +trendier trendy +trendiest trendy +trickier tricky +trickiest tricky +tricksier tricksy +tricksiest tricksy +trimmer trim +trimmest trim +truer true +truest true +trustier trusty +trustiest trusty +tubbier tubby +tubbiest tubby +turfier turfy +turfiest turfy +tweedier tweedy +tweediest tweedy +twiggier twiggy +twiggiest twiggy +uglier ugly +ugliest ugly +unfriendlier unfriendly +unfriendliest unfriendly +ungainlier ungainly +ungainliest ungainly +ungodlier ungodly +ungodliest ungodly +unhappier unhappy +unhappiest unhappy +unhealthier unhealthy +unhealthiest unhealthy +unholier unholy +unholiest unholy +unrulier unruly +unruliest unruly +untidier untidy +untidiest untidy +vastier vasty +vastiest vasty +viewier viewy +viewiest viewy +wackier wacky +wackiest wacky +wanner wan +wannest wan +warier wary +wariest wary +washier washy +washiest washy +wavier wavy +waviest wavy +waxier waxy +waxiest waxy +weaklier weakly +weakliest weakly +wealthier wealthy +wealthiest wealthy +wearier weary +weariest weary +webbier webby +webbiest webby +weedier weedy +weediest weedy +weenier weeny +weeniest weeny +weensier weensy +weensiest weensy +weepier weepy +weepiest weepy +weightier weighty +weightiest weighty +wetter wet +wettest wet +whackier whacky +whackiest whacky +whimsier whimsy +whimsiest whimsy +wieldier wieldy +wieldiest wieldy +wilier wily +wiliest wily +windier windy +windiest windy +winier winy +winiest winy +winterier wintery +winteriest wintery +wintrier wintry +wintriest wintry +wirier wiry +wiriest wiry +wispier wispy +wispiest wispy +wittier witty +wittiest witty +wonkier wonky +wonkiest wonky +woodier woody +woodiest woody +woodsier woodsy +woodsiest woodsy +woollier woolly +woolliest woolly +woozier woozy +wooziest woozy +wordier wordy +wordiest wordy +worldlier worldly +worldliest worldly +wormier wormy +wormiest wormy +worthier worthy +worthiest worthy +wrier wry +wriest wry +wryer wry +wryest wry +yarer yare +yarest yare +yeastier yeasty +yeastiest yeasty +younger young +youngest young +yummier yummy +yummiest yummy +zanier zany +zaniest zany +zippier zippy +zippiest zippy diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/adv.exc b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/adv.exc new file mode 100644 index 0000000000000000000000000000000000000000..5ddf0851d905b745a4c751a1fd2a0983aae76bdd --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/adv.exc @@ -0,0 +1,7 @@ +best well +better well +deeper deeply +farther far +further far +harder hard +hardest hard diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/buildExeptionDB.pl b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/buildExeptionDB.pl new file mode 100644 index 0000000000000000000000000000000000000000..45c35df6414d074e858a875eea4dc3f852c3a197 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/buildExeptionDB.pl @@ -0,0 +1,21 @@ +#!/usr/bin/perl -w +use DB_File; +@ARGV!=3&&die "Usage: buildExceptionDB.pl WordNet-exception-file-directory exception-file-extension output-file\n"; +opendir(DIR,$ARGV[0])||die "Cannot open directory $ARGV[0]\n"; +tie %exceptiondb,'DB_File',"$ARGV[2]",O_CREAT|O_RDWR,0640,$DB_HASH or + die "Cannot open exception db file for output: $ARGV[2]\n"; +while(defined($file=readdir(DIR))) { + if($file=~/\.$ARGV[1]$/o) { + print $file,"\n"; + open(IN,"$file")||die "Cannot open exception file: $file\n"; + while(defined($line=)) { + chomp($line); + @tmp=split(/\s+/,$line); + $exceptiondb{$tmp[0]}=$tmp[1]; + print $tmp[0],"\n"; + } + close(IN); + } +} +untie %exceptiondb; + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/noun.exc b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/noun.exc new file mode 100644 index 0000000000000000000000000000000000000000..501bb384ef8547b3e6cb67163134dfb7aaaef825 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/noun.exc @@ -0,0 +1,5969 @@ +aardwolves aardwolf +abaci abacus +abacuses abacus +abbacies abbacy +abhenries abhenry +abilities ability +abnormalities abnormality +aboideaus aboideau +aboideaux aboideau +aboiteaus aboiteau +aboiteaux aboiteau +abos abo +abscissae abscissa +abscissas abscissa +absurdities absurdity +academies academy +acanthi acanthus +acanthuses acanthus +acari acarus +accelerandos accelerando +accessaries accessary +accessories accessory +acciaccaturas acciaccatura +acciaccature acciaccatura +acclivities acclivity +accuracies accuracy +acerbities acerbity +acetabula acetabulum +achaemenidae achaemenid +achaemenides achaemenid +achaemenids achaemenid +acicula aciculum +aciculae acicula +aciculums aciculum +acidities acidity +acini acinus +acouchies acouchy +acouchis acouchi +acre-feet acre-foot +acrimonies acrimony +acromia acromion +actiniae actinia +actinias actinia +activities activity +actualities actuality +actuaries actuary +adagios adagio +addenda addendum +adenectomies adenectomy +adenocarcinomas adenocarcinoma +adenocarcinomata adenocarcinoma +adenoidectomies adenoidectomy +adenomas adenoma +adenomata adenoma +adieus adieu +adieux adieu +admen adman +admiralties admiralty +adulteries adultery +adversaries adversary +adversities adversity +advocacies advocacy +adygeis adygei +adyghes adyghe +adyta adytum +aecia aecium +aecidia aecidium +aeries aery +aerobes aerobe +aerobia aerobium +aetiologies aetiology +affinities affinity +aficionados aficionado +afros afro +afterbodies afterbody +agencies agency +agents-general agent-general +aggiornamenti aggiornamento +agnonomina agnomen +agones agon +agonies agony +agorae agora +agoras agora +agouties agouti +agoutis agouti +aides-de-camp aide-de-camp +aides-memoire aide-memoire +aids-de-camp aid-de-camp +ailanthuses ailanthus +ainus ainu +aircraftmen aircraftman +aircraftwomen aircraftswoman aircraftwoman +airmen airman +ais ai +akans akan +alae ala +albinos albino +alchemies alchemy +alderflies alderfly +aldermen alderman +alewives alewife +aliases alias +alibis alibi +alkalies alkali +alkalis alkali +alkies alkie alky +allegories allegory +allegrettos allegretto +allegros allegro +allergies allergy +allies ally +allodia allodium +allods allod +alluvia alluvium +alluviums alluvium +almohades almohade +almohads almohad +almonries almonry +almsmen almsman +almswomen almswoman +alodia alodium +aloes aloe +alto-relievos alto-relievo alto-rilievo +altocumuli altocumulus +altos alto +altostrati altostratus +alulae alula +alumnae alumna +alumni alumnus +alveoli alveolus +amanuenses amanuensis +ambaries ambary +ambaris ambari +ambiguities ambiguity +ambos ambo +ambries ambry aumbry +ambulacra ambulacrum +ambulatories ambulatory +amebae ameba +amebas ameba +amenities amenity +amici_curiae amicus_curiae +amigos amigo +amities amity +amnesties amnesty +amninia amnion +amniocenteses amniocentesis +amnions amnion +amoebae amoeba +amoebiases amoebiasis +amoretretti amoretto +amoretti amoretto +amorini amorino +amoririni amorino +amphiarthroses amphiarthrosis +amphibolies amphiboly +amphibologies amphibology +amphicia amphithecium +amphictyonies amphictyony +amphigories amphigory +amphigouris amphigouri +amphimixes amphimixis +amphioxi amphioxus +amphioxuses amphioxus +amphisbaenae amphisbaena +amphisbaenas amphisbaena +amphorae amphora +amphoras amphora +ampullae ampulla +amygdalae amygdala +anabaenas anabaena +anabases anabasis +anacolutha anacoluthon +anacruses anacrusis +anaerobes anaerobe +anaerobia anaerobium +anagnorises anagnorisis +analemmas analemma +analemmata analemma +analogies analogy +analyses analysis +anamneses anamnesis +anamorphoses anamorphosis +anastomoses anastomosis +anathemas anathema +anatomies anatomy +anattos anatto +anatyxes anaptyxis +anburies anbury +ancestries ancestry +anchovies anchovy +ancillaries ancillary +ancones ancon ancone +andantinos andantino +androclinia androclinium +androecia androecium +androsphinges androsphinx +androsphinxes androsphinx +angelenos angeleno +angelfishes angelfish +angiomas angioma +angiomata angioma +angularities angularity +angwantibos angwantibo +animalcula animalculum +animalcules animalcule +animosities animosity +anis ani +ankuses ankus +anlagen anlage +anlages anlage +annattos anatto annatto +anniversaries anniversary +annuities annuity +annuli annulus +annuluses annulus +anomalies anomaly +antae anta +antalkalies antalkali +antalkalis antalkali +antefixa antefix +antefixes antefix +antelopes antelope +antennae antenna +antependia antependium +anthelia anthelion +anthelices anthelix +anthemia anthemion +antheridiia antheridium +anthodia anthodium +anthologies anthology +anthraces anthrax +antibodies antibody +anticlinonoria anticlinorium +antihelices antihelix +antihelixes antihelix +antiheroes antihero +antilogies antilogy +antineutrinos antineutrino +antinomies antinomy +antipastos antipasto +antipathies antipathy +antiphonaries antiphonary +antiphonies antiphony +antiquaries antiquary +antiquities antiquity +antisera antiserum +antiserums antiserum +antitheses antithesis +antitragi antitragus +antra antrum +anus anus +anxieties anxiety +anybodies anybody +aortae aorta +aortas aorta +apaches apache +aparejos aparejo +apemen apeman +aperies apery +apexes apex +aphelia aphelion +aphides aphis +apiaries apiary +apices apex +apodoses apodosis +apollos apollo +apologies apology +apomixes apomixis +aponeuroses aponeurosis +apophyses apophysis +aposiopeses aposiopesis +apostasies apostasy +apothecaries apothecary +apothecia apothecium +apotheoses apotheosis +apparatus apparatus +apparatuses apparatus +appendices appendix +appendictomies appendectomy appendicectomy +appendixes appendix +appetences appetence +appetencies appetency +appoggiaturas appoggiatura +appoggiature appoggiatura +apsides apsis +aquae aqua +aquaria aquarium +aquariums aquarium +aquas aqua +araglis argali +arapahos arapaho +arbitraries arbitrary +arboreta arboretum +arboretums arboretum +arbutuses arbutus +arcana arcanum +archdeaconries archdeaconry +archduchies archduchy +archegonia archegonium +archenemies archenemy +archerfishes archerfish +archespores archespore +archesporia archesporium +archipelagoes archipelago +archipelagos archipelago +arcs-boutants arc-boutant +areolae areola +areolas areola +argali argali +argals argal +argumenta argumentum +ariettas arietta +ariette arietta +ariettes ariette +aristae arista +aristocracies aristocracy +armadillos armadillo +armamentariia armamentarium +armamentariums armamentarium +armfuls armful +armies army +armories armory +armouries armoury +arpeggios arpeggio +arrises arris +arroyos arroyo +arses arsis +artal rotl +artel rotl +arteries artery +arterioscleroses arteriosclerosis +artillerymen artilleryman +aruspices aruspex +asceses ascesis +asci ascus +ascidcidia ascidium +ascogonia ascogonium +ashkenazim ashkenazi +aspergilla aspergillum +aspergilli aspergillus +aspergilloses aspergillosis +aspergills aspergill +aspergillums aspergillum +asperities asperity +aspersoria aspersorium +aspirins aspirin +assagais assagai +assegais assagai assegai +assemblies assembly +assemblymen assemblyman +assiduities assiduity +astragali astragalus +asyndeta asyndeton +atamans ataman +atheromas atheroma +atheromata atheroma +atheroscleroses atherosclerosis +atlases atlas +atmolyses atmolysis +atomies atomy +atria atrium +atrocities atrocity +atrophies atrophy +attorneys-at-law attorney-at-law +auditoria auditorium +auditoriums auditorium +auguries augury +aunties auntie aunty +aurae aura +aurar eyrir +auras aura +aurei aureus +auriculae auricula +auriculas auricula +aurorae aurora +auroras aurora +auspices auspex auspice +austerities austerity +autarchies autarchy +autarkies autarky +authorities authority +autoantibodies autoantibody +autobiographies autobiography +autocatalyses autocatalysis +autochthones autochthon +autochthons autochthon +autocracies autocracy +autogiros autogiro +autogyros autogyro +automata automaton +automatons automaton +autonomies autonomy +autopsies autopsy +autos auto +autos-da-fe auto-da-fe +autotomies autotomy +auxiliaries auxiliary +aviaries aviary +avitaminoses avitaminosis +avocados avocado +axes ax axis +axillae axilla +axillaries axillary +axises axis +aymaras aymara +azerbaijanis azerbaijani +babies baby +bacchantes bacchant bacchante +bacchants bacchant +bacchii bacchius +bacilli bacillus +backwoodsmen backwoodsman +bacteriostases bacteriostasis +bacula baculum +baculums baculum +baddies baddie baddy +badmen badman +baggies baggy +bagies bagie +bagmen bagman +bagnios bagnio +bahts baht +bailsmen bailsman +bains-marie bain-marie +bakeries bakery +bakras bakra +balconies balcony +ballistae ballista +baluchis baluchi +bambaras bambara +bambini bambino +bambinos bambino +bandeaux bandeau +banderilleros banderillero +bandies bandy +bandits bandit +banditti bandit +bandsmen bandsman +bandy-bandies bandy-bandy +baneberries baneberry +bani ban +banjoes banjo +banjos banjo +bankruptcies bankruptcy +bantus bantu +baptisteries baptistery +baptistries baptistry +barbarities barbarity +barberries barberry +bargees bargee +bargemen bargeman +barklice barklouse +barmen barman +baronetcies baronetcy +baronies barony +barotses barotse +barracudas barracuda +barramundas barramunda +barramundies barramundi +barramundis barramundi +barrancas barranca +barrancos barranco +barrios barrio +basemen baseman +bases base basis +bases-on-balls base_on_balls +bases_on_balls base_on_balls +basidia basidium +basidiia basidium +basileis basileus +basothos basotho +bassi basso +bassos basso +bastinadoes bastinado +basutos basuto +bateaux bateau +batfishes batfish +baths bath +batmen batman +batsmen batsman +batteries battery +batwomen batwoman +bayberries bayberry +bead-rubies bead-ruby +beadsmen beadsman bedesman +beaneries beanery +beanies beanie beany +beanos beano +bearberries bearberry +bears bear +beaus beau +beauties beauty +beaux beau +beccaficos beccafico +beches-de-mer beche-de-mer +bechuanas bechuana +bedesmen bedesman +bedouins bedouin +beentos beento +beetflies beetfly +beeves beef +behooves behoof +belfries belfry +bellies belly +bellmen bellman +bembas bemba +beneficiaries beneficiary +benignities benignity +benis beni +bennies benny +berries berry +bersaglieri bersagliere +bestialities bestiality +bestiaries bestiary +betonies betony +bevies bevy +bevvies bevvy +bhishties bheesty bhishti +bibliographies bibliography +bibliothecae bibliotheca +bibliothecas bibliotheca +bicennaries bicentenary bicentennial +bicepses biceps +biddies biddy +biddy-biddies biddy-biddy +bigamies bigamy +bigeyes bigeye +bighorns bighorn +bigotries bigotry +bijoux bijou +bilberries bilberry +bilboes bilbo +bilbos bilbo +billets-doux billet-doux +billfishes billfish +billies billy +billions billion +billycans billycan +bimboes bimbo +bimbos bimbo +bimillenaries bimillenary +bimonthlies bimonthly +binaries binary +binderies bindery +bingeys bingey +bingies bingy +biographies biography +biopsies biopsy +bioscopies bioscopy +birdmen birdman +biros biro +bisectrices bisectrix +bistouries bistoury +bistros bistro +bivvies bivvy +biweeklies biweekly +blackberries blackberry +blackfeet blackfoot +blackfishes blackfish +blackflies blackfly +blasphemies blasphemy +blastemas blastema +blastemata blastema +blastulae blastula +blastulas blastula +blauboks blaubok +blazonries blazonry +blennies blenny +blesboks blesbok +blesbucks blesbuck +blindfishes blindfish +blindstoreys blindstorey +blindstories blindstory +bloomeries bloomery +blowfishes blowfish +blowflies blowfly +blueberries blueberry +bluefishes bluefish +boarfishes boarfish +boatmen boatman +bobberies bobbery +bobbies bobby +bodies body +bogeymen bogeyman +bogies bogy +bok boschbok +bolas bola +bolases bolas +boleros bolero +boleti boletus +boletuses boletus +bolivares bolivar +bolivars bolivar +bolivianos boliviano +bolos bolo +bolsheviki bolshevik +bolsheviks bolshevik +bolshies bolshie bolshy +boluses bolus +bondsmen bondsman +bonefishes bonefish +bongoes bongo +bongos bongo +bonitoes bonito +bonitos bonito +bonteboks bontebok +boo-boos boo-boo +boobies booby +boohoos boohoo +bookbindereries bookbindery +booklice booklouse +bookshelves bookshelf +booths booth +booties booty +boraces borax +boraxes borax +borborygmi borborygmus +bordellos bordello +bordereaux bordereau +borzois borzoi +boschboks boschbok +bosses boss +botanies botany +botargoes botargo +botflies botfly +bothies bothy +bottomries bottomry +botulinuses botulinus +bouncing_betties bouncing_betty +boundaries boundary +bounties bounty +bowmen bowman +box-kodaks box_kodak +boxberries boxberry +boxfishes boxfish +boysenberries boysenberry +bozos bozo +brachia brachium +brachylogies brachylogy +braggadocios braggadocio +brahmanis brahmani +brahmans brahman +brahmins brahmin +brahuis brahui +brainchildren brainchild +brakemen brakeman +brakesmen brakesman +branchiae branchia +brandies brandy +brants brant brent +brassies brassie brassy +bravadoes bravado +bravados bravado +bravoes bravo +bravos bravo +breadfruits breadfruit +bregmata bregma +brents brent +brethren brother +breviaries breviary +brevities brevity +breweries brewery +briberies bribery +brills brill +brionies briony +broadleaves broadleaf +brollies brolly +bronchi bronchus +bronchos broncho +broncos bronco +brothers-in-law brother-in-law +brumbies brumby +brutalities brutality +bryonies briony bryony +buboes bubo +buckoes bucko +buckteeth bucktooth +buddies buddy +buffaloes buffalo +buffalos buffalo +bugaboos bugaboo +buggies buggy +bullae bulla +bullies bully +buncos bunco +bunde bund +bunds bund +bunkos bunko +bunnies bunny +burberries burberry +burbots burbot +bureaucracies bureaucracy +bureaus bureau +bureaux bureau +burglaries burglary +burgoos burgoo +burgundies burgundy +buroos buroo +burros burro +bursae bursa +bursaries bursary +bursas bursa +busbies busby +buses bus +bushbabies bushbaby +bushbok boschbok +bushboks boschbok +bushbucks bushbuck +bushies bushie bushy +bushmen bushman +businessmen businessman +businesswomen businesswoman +busses bus +busybodies busybody +butcheries butchery +butleries butlery +butterfishes butterfish +butterflies butterfly +butteries buttery +butties butty +byes bye +byssi byssus +byssuses byssus +caballeros caballero +cabbies cabby +cabmen cabman +cacophonies cacophony +cacti cactus +cactuses cactus +caddies caddie caddy +caddisflies caddisfly +cadences cadence +cadencies cadency +cadis cadi +caducei caduceus +caeca caecum +caestuses caestus +caesurae caesura +caesuras caesura +caimans caiman +calami calamus +calamities calamity +calathi calathus +calcanei calcaneum calcaneus +calces calx +calculi calculus +caldaria caldarium +calefactories calefactory +calices calix +calicoes calico +calicos calico +calli callus +callosities callosity +calluses callus +calories calorie calory +calumnies calumny +calvaries calvary +calves calf +calxes calx +calyces calyx +calypsos calypso +calyxes calyx +cambia cambium +cambiums cambium +cameos cameo +camerae camera +cameramen cameraman +camerlengos camerlengo +camerlingos camerlingo +camisades camisade +camisados camisado +campos campo +campuses campus +canaliculi canaliculus +canaries canary +candelabra candelabrum +candelabras candelabra +candelabrums candelabrum +candies candy +candleberries candleberry +candlefishes candlefish +canneries cannery +cannonries cannonry +cannons cannon +cannulas cannula +canonries canonry +canopies canopy +canthi canthus +cantos canto +canulae canula +canulas canula +canvasbacks canvasback +canzoni canzone +capabilities capability +capacities capacity +capillaries capillary +capita caput +capitula capitulum +capitularies capitulary +capos capo +cappuccinos cappuccino +capricci capriccio +capriccios capriccio +caprices caprice +captivities captivity +carabaos carabao +carabinieri carabiniere +caravansaries caravansary +caravanserais caravanserai +carbies carby +carbonadoes carbonado +carbonados carbonado +carcinomas carcinoma +carcinomata carcinoma +cargoes cargo +cargos cargo +caribous caribou +caribs carib +carides caryatid +carinae carina +carinas carina +carmen carman +caroli carolus +caroluses carolus +carpi carpus +carpogonia carpogonium +carps carp +carries carry +carryings-on carrying-on +cartularies cartulary +caryatids caryatid +caryopses caryopsis +caryopsides caryopsis +casinos casino +cassowaries cassowary +castellanies castellany +castrati castrato +castratos castrato +casualties casualty +casuistries casuistry +catabases catabasis +cataclases cataclasis +cataloes catalo +catalos catalo +catalyses catalysis +catawbas catawba +catchflies catchfly +catchpennies catchpenny +categories category +catenae catena +catenaries catenary +catfishes catfish +cathari cathar +catharists catharist +cathars cathar +cathexes cathexis +cattaloes cattalo +catteries cattery +catties cattie catty +cattlemen cattleman +caucuses caucus +caudexes caudex +caudices caudex +caudillos caudillo +caules caulis +causalities causality +cauteries cautery +cavallas cavalla +cavallies cavally +cavalries cavalry +cavalrymen cavalryman +cavatine cavatina +cavefishes cavefish +cavemen caveman +cavetti cavetto +cavies cavy +cavities cavity +cavo-relievos cavo-relievo +cavo-rilievi cavo-rilievo +caymans cayman +cayugas cayuga +ceca cecum +celebrities celebrity +cellae cella +cellos cello +cembali cembalo +cembalos cembalo +cemeteries cemetery +censuses census +centauries centaury +centavos centavo +centenaries centenary +centesimi centesimo +centesimos centesimo +centillions centillion +centimos centimo +centos cento +centra centrum +centralities centrality +centrums centrum +centuries century +cephalothoraces cephalothorax +cephalothoraxes cephalothorax +ceratoduses ceratodus +cercariae cercaria +cercariiae cercaria +cerci cercus +cerebella cerebellum +cerebellums cerebellum +cerebra cerebrum +cerebrums cerebrum +ceremonies ceremony +ceros cero +certainties certainty +cervices cervix +cervixes cervix +cessionaries cessionary +cestuses caestus +cesurae cesura +cesuras cesura +chadarim cheder +chaetae chaeta +chainmen chainman +chairmen chairman +chaise_longues chaise_longue +chaises_longues chaise_longue +chalazae chalaza +chalazas chalaza +chalcedonies chalcedony +chalcidflies chalcidfly +challahs challah +challoth hallah +chalutzim chalutz +champerties champerty +chams cham +chancelleries chancellery +chancellories chancellory +chanceries chancery +chandleries chandlery +chanteys chantey +chanties chanty +chantries chantry +chapaties chapati +chapatis chapati +chapatties chapatti +chapattis chapatti +chapeaus chapeau +chapeaux chapeau +characteries charactery +charities charity +charladies charlady +charrs charr +chars char +chartularies chartulary +charwomen charwoman +chateaus chateau +chateaux chateau +chazanim chazan +chazans chazan +chechens chechen +checkerberries checkerberry +chedarim cheder +chefs-d'ouvre chef-d'ouvre +chelae chela +chelicerae chelicera +chemistries chemistry +cherokees cherokee +cherries cherry +cherubim cherub +cherubs cherub +chesses chess +chessmen chessman +chevaux-de-frise cheval-de-frise +chewas chewa +cheyennes cheyenne +chiaroscuros chiaroscuro +chiasmas chiasma +chiasmata chiasma +chiasmi chiasmus +chiasms chiasm +chicaneries chicanery +chicanos chicano +chiccories chiccory +chickabiddies chickabiddy +chickasaws chickasaw +chicories chicory +chicos chico +children child +chillies chilli +chinaberries chinaberry +chinamen chinaman +chinese_eddoes chinese_eddo +chinooks chinook +chinos chino +chippewas chippewa +chippeways chippeway +chippies chippie chippy +chitarroni chitarrone +chivalries chivalry +chochos chocho +choctaws choctaw +chokeberries chokeberry +chokecherries chokecherry +chokos choko +cholecystectomies cholecystectomy +chondromas chondroma +chondromata chondroma +choragi choragus +choraguses choragus +choriamambi choriambus +choriambs choriamb +chorizos chorizo +choruses chorus +choux chou +chrestomathies chrestomathy +chrismatories chrismatory +christies christy +chromonemata chromonema +chromos chromo +chronologies chronology +chrysalides chrysalis +chrysalises chrysalis +chubs chub +churchmen churchman +churchwomen churchwoman +churingas churinga +chuvashes chuvash +ciboria ciborium +cicadae cicada +cicadas cicada +cicalas cicala +cicale cicala +cicatrices cicatrix +cicelies cicely +cicerones cicerone +ciceroni cicerone +ciceros cicero +cicisbei cicisbeo +cigarillos cigarillo +ciggies ciggy +cigs cig +cilia cilium +cimices cimex +cineraria cinerarium +cingula cingulum +circuities circuity +circuses circus +cirri cirrus +cirrocumuli cirrocumulus +cirrostrati cirrostratus +ciscoes cisco +ciscos cisco +cisternae cisterna +cities city +citizenries citizenry +citruses citrus +civies civvy +civilities civility +civvies civvy +clani clarino +clanos clarino +clansmen clansman +clanswomen clanswoman +claries clary +claroes claro +claros claro +clavicembalos clavicembalo +clearstories clearstory +clemencies clemency +clepsydrae clepsydra +clepsydras clepsydra +clerestories clerestory +clergies clergy +clergymen clergyman +cleruchies cleruchy +clinandria clinandrium +clingfishes clingfish +clitella clitellum +cloacae cloaca +clostridiia clostridium +clostridiums clostridium +cloths cloth +cloudberries cloudberry +cloverleaves cloverleaf +clubmen clubman +clubwomen clubwoman +clypei clypeus +coachmen coachman +coagula coagulum +coalfishes coalfish +coati-mondis coati-mondi +coati-mundis coati-mundi +coatis coati +cocci coccus +coccyges coccyx +cochleae cochlea +cockatoos cockatoo +cocksfoots cocksfoot +cockshies cockshy +cocos coco +codfishes codfish +codices codex +cods cod +coelentera coelenteron +coenuri coenurus +cognomens cognomen +cognomina cognomen +cohos coho +cola colon +colectomies colectomy +coleorhizae coleorhiza +coleuses coleus +colies coly +collectivities collectivity +collegigia collegium +collegigiums collegium +collieries colliery +collies colly +colloquia colloquium +colloquies colloquy +colloquiums colloquium +colluvia colluvium +colluviums colluvium +collyria collyrium +collyriums collyrium +colones colon +colonies colony +colons colon +colossi colossus +colossuses colossus +colostomies colostomy +colotomies colotomy +coloureds coloured +colourmen colourman +coltsfoots coltsfoot +colugos colugo +columbariia columbarium +columellae columella +comae coma +comanches comanche +comas coma +comatulae comatula +comatulids comatulid +combos combo +combtooth_blennies combtooth_blenny +comedies comedy +comedones comedo +comedos comedo +comities comity +commandoes commando +commandos commando +commentaries commentary +commies commie commy +commissaries commissary +committeemen committeeman +commodities commodity +commonalities commonality +commonalties commonalty +commos commo +communities community +companies company +competencies competency +complacences complacence +complacencies complacency +complexities complexity +complicacies complicacy +complicities complicity +compos compo +concavities concavity +concertanti concertante +concerti concerto +concerti_grossi concerto_grosso +concertini concertino +concerto_grossos concerto_grosso +concertos concerto +concessionaries concessionary +conchae concha +conches conch +conchies conchie conchy +conchs conch +concinnities concinnity +condominiums condominium +condottieri condottiere +conductivities conductivity +condylomas condyloma +condylomata condyloma +coneys coney +confectionaries confectionary +confectioneries confectionery +confederacies confederacy +confervae conferva +confervas conferva +conformances conformance +conformities conformity +confraternities confraternity +congii congius +congress-gaiters congress-gaiter +congressmen congressman +congresswomen congresswoman +conidia conidium +conidnidia conidium +conies cony +conjunctivae conjunctiva +conjunctivas conjunctiva +conquistadores conquistador +conquistadors conquistador +conservancies conservancy +conservatories conservatory +consistences consistence +consistencies consistency +consistories consistory +consonances consonance +consonancies consonancy +consonannancies consonancy +consortia consortium +conspiracies conspiracy +constabularies constabulary +constituencies constituency +contagia contagium +contangos contango +contemporaries contemporary +contingencies contingency +continua continuum +continuities continuity +continuos continuo +continuums continuum +contos conto +contradictories contradictory +contralti contralto +contraltos contralto +contraries contrary +contrarieties contrariety +contributories contributory +controversies controversy +contumacies contumacy +contumelies contumely +conventionalities conventionality +conversaziozioni conversazione +convexities convexity +convolvuli convolvulus +convolvuluses convolvulus +cookies cookie cooky +cooks-general cook-general +coolies coolie cooly +cooperies coopery +copies copy +copulae copula +copulas copula +coquetries coquetry +coquitos coquito +corantos coranto +corbiculae corbicula +cordialities cordiality +coria corium +corneae cornea +corneas cornea +cornetcies cornetcy +cornua cornu +corodies corody +corollaries corollary +coronae corona +coronaries coronary +coronas corona +corozos corozo +corpora corpus +corpsmen corpsman +corrigenda corrigendum +corrodies corrody +cortices cortex +cortinae cortina +corybantes corybant +corybants corybant +coryphaei coryphaeus +cosies cosy +cosignatories cosignatory +cosmogonies cosmogony +cosmoses cosmos +costae costa +costmaries costmary +costotomies costotomy +cothurni cothurnus +cothurns cothurn +cottonseeds cottonseed +councilmen councilman +counter-revolutionaries counter-revolutionary +counterspies counterspy +counties county +countries country +countrymen countryman +court_martials court_martial +courts_martial court_martial +couteaux couteau +cowberries cowberry +cowfishes cowfish +cowmen cowman +cowries cowrie cowry +coxae coxa +coxcombries coxcombry +coyotes coyote +coyotillos coyotillo +coypus coypu +cozies cozy +cracksmen cracksman +craftsmen craftsman +cragsmen cragsman +cramboes crambo +cranberries cranberry +crania cranium +craniotomies craniotomy +craniums cranium +crannies cranny +crappies crappie +crases crasis +crawfishes crawfish +crayfishes crayfish +creameries creamery +credenda credendum +credos credo +creeks creek +creepy-crawlies creepy-crawly +crees cree +crematoria crematorium +crematoriums crematorium +crescendi crescendo +crescendos crescendo +cribella cribellum +cries cry +criminalities criminality +criollos criollo +crises crisis +crissa crissum +cristae crista +criteria criterion +criterions criterion +crocuses crocus +cronies crony +crowberries crowberry +crowfoots crowfoot +cruces crux +crudities crudity +cruelties cruelty +crummies crummy +crura crus +crusadoes crusado +crusados crusado +cruxes crux +cruzadoes cruzado +cruzados cruzado +cruzeiros cruzeiro +crybabies crybaby +crying cry +cryings cry +cryoscopies cryoscopy +ctenidiia ctenidium +cubicula cubiculum +cuckoos cuckoo +cuddies cuddie cuddy +cul-de-sacs cul-de-sac +culices culex +cullies cully +culpae culpa +culs-de-sac cul-de-sac +culti cultus +cultuses cultus +cumuli cumulus +cumulonimbi cumulonimbus +cumulonimbuses cumulonimbus +cumulostrati cumulostratus +curacies curacy +curculios curculio +curiae curia +curios curio +curiosities curiosity +currencies currency +curricula curriculum +curriculums curriculum +currieries curriery +curries curry +curtseys curtsey +curtsies curtsy +cusks cusk +custodes custos +custodies custody +customaries customary +customs_duties customs_duty +cutcheries cutchery +cutcherries cutcherry +cutes cutis +cuticulae cuticula +cutises cutis +cutties cutty +cuttlefishes cuttlefish +cyclopes cyclops +cyclopses cyclops +cycloses cyclosis +cylices cylix +cylikes cylix +cymae cyma +cymas cyma +cymatia cymatium +cymbalos cymbalo +cypselae cypsela +cystectomies cystectomy +cysticerci cysticercus +cystotomies cystotomy +daces dace +dacoities dacoity +dactylologies dactylology +daddies daddy +dadoes dado +dados dado +dagoes dago +dagos dago +dailies daily +daimyos daimyo +dainties dainty +daiquiris daiquiri +dairies dairy +dairymen dairyman +daisies daisy +dalesmen dalesman +damaras damara +damselfishes damselfish +damselflies damselfly +dandies dandy +danios danio +darkeys darkey +darkies darky +data datum +dataries datary +datos dato +daughters-in-law daughter-in-law +dayaks dayak +dayflies dayfly +daymio daimio +daymios daimio +deaconries deaconry +dealfishes dealfish +deaneries deanery +dearies dearie deary +debilities debility +decemviri decemvir +decemvirs decemvir +decencies decency +decennaries decennary +decennia decennium +decenniums decennium +deciduae decidua +deciduas decidua +declivities declivity +decuries decury +deers deer +deficiencies deficiency +definienda definiendum +definientia definiens +deformities deformity +degeneracies degeneracy +deities deity +delawares delaware +delegacies delegacy +deles dele +delicacies delicacy +delinquencies delinquency +deliveries delivery +delphiniia delphinium +delphiniums delphinium +demagogies demagogy +demies demy +democracies democracy +demos demo +denarnarii denarius +densities density +dentalia dentalium +dentaliums dentalium +dependencies dependency +depilatories depilatory +depositaries depositary +depositories depository +depravities depravity +deputies deputy +derbies derby +dermatotoses dermatosis +desiderata desideratum +desmans desman +desperadoes desperado +desperados desperado +destinies destiny +devilfishes devilfish +devilries devilry +deviltries deviltry +dewberries dewberry +diabolos diabolo +diaereses diaeresis +diaerses diaeresis +diagnoses diagnosis +dialyses dialysis +dianthuses dianthus +diaphyses diaphysis +diapophyses diapophysis +diarchies diarchy dyarchy +diaries diary +diarthroses diarthrosis +diastalses diastalsis +diastases diastasis +diastemata diastema +diathermancies diathermancy +diathses diathesis +diazoes diazo +diazos diazo +dibbukkim dibbuk +dibbuks dibbuk +dichasia dichasium +dichotomies dichotomy +dickeys dickey +dickies dicky +dicta dictum +dictionaries dictionary +dictums dictum +didakais didakai +diddicoys diddicoy +didoes dido +didos dido +diereses dieresis +dieses diesis +dietaries dietary +differentiae differentia +difficulties difficulty +digamies digamy +dignitaries dignitary +dignities dignity +dildoes dildoe +dildos dildo +dilettantes dilettante +dilettanti dilettante +dillies dilly +diluvia diluvium +diminuendos diminuendo +dimities dimity +dingeys dingey +dinghies dinghy +dingies dingy +dingoes dingo +dinkas dinka +diplococci diplococcus +diplodocuses diplodocus +diplomacies diplomacy +dipodies dipody +directories directory +directors-general director-general +disabilities disability +disci discus +discoboli discobolos discobolus +discommodities discommodity +disconformities disconformity +discontinuities discontinuity +discos disco +discourtesies discourtesy +discoveries discovery +discrepancies discrepancy +discuses discus +disharmonies disharmony +dishonesties dishonesty +disloyalties disloyalty +disparities disparity +dispensaries dispensary +dispensatories dispensatory +dissimilarities dissimilarity +dissymmetries dissymmetry +distilleries distillery +distributaries distributary +disunities disunity +dittanies dittany +ditties ditty +dittographies dittography +divas diva +dive diva +diverticula diverticulum +divertimenti divertimento +divi-divis divi-divi +divinities divinity +djinn djinni djinny +dobbies dobby +dobros dobro +dobsonflies dobsonfly +documentaries documentary +dodoes dodo +dodos dodo +does doe +dogberries dogberry +dogeys dogey +dogfishes dogfish +doggeries doggery +doggies doggie doggy +dogies dogie dogy +dogmas dogma +dogmata dogma +dogsbodies dogsbody +dogteeth dogtooth +dohs doh +dojos dojo +dollarfishes dollarfish +dollies dolly +dolmans dolman +domesticities domesticity +dominoes domino +dominos domino +doormen doorman +dories dory +dormice dormouse +dormitories dormitory +dorsa dorsum +dos do +dowdies dowdy +doweries dowery +dowries dowry +doxies doxie doxy +doxologies doxology +doyleys doyley +doylies doyly +dozens dozen +drachmae drachma +drachmas drachma +draftsmen draftsman +dragomans dragoman +dragomen dragoman +dragonflies dragonfly +drains drain +draperies drapery +draughtsmen draughtsman +drawknives drawknife +drawshaves drawshave +dries dry +droits droit +drolleries drollery +dromedaries dromedary +drongos drongo +droshkies droshky +droskies drosky +drosophilae drosophila +drosophilas drosophila +drudgeries drudgery +drumfishes drumfish +drunk_and_disorderlies drunk_and_disorderly +dryades dryad +dryads dryad +drys dry +dualas duala +dualities duality +dubieties dubiety +dubiosities dubiosity +duchies duchy +duellos duello +dui duo +duikers duiker +dummies dummy +dunnies dunny +duodecimos duodecimo +duomos duomo +duona duodenum +duonas duodenum +duos duo +duplicities duplicity +dupondii dupondius +duppies duppy +duros duro +dustmen dustman +dutchmen dutchman +duties duty +duumviri duumvir +duumvirs duumvir +dwarfs dwarf +dwarves dwarf +dyaks dyak +dyarchies dyarchy +dybbukkim dybbuk +dybbuks dybbuk +dynamos dynamo +dynasties dynasty +dyulas dyula +dzos dzo +ealdormen ealdorman +earthmen earthman +easterlies easterly +ebonies ebony +eccentricities eccentricity +ecchymoses ecchymosis +ecclesiae ecclesia +ecdyses ecdysis +echidnae echidna +echidnas echidna +echini echinus +echinococci echinococcus +echoes echo +economies economy +ecstasies ecstasy +eddies eddy +eddoes eddo +edemata edema +edos edo +effendis effendi +efficiencies efficiency +effigies effigy +effluvia effluvium +effluviums effluvium +effronteries effrontery +efiks efik +egos ego +eicies eigenfrequency +eidola eidolon +eidolons eidolon +eighteenmos eighteenmo +eighties eighty +eightvos eightvo +eisegeses eisegesis +eisteddfodau eisteddfod +eisteddfods eisteddfod +elderberries elderberry +electros electro +electuaries electuary +elegances elegance +elegancies elegancy +elegies elegy +elemis elemi +elenchi elenchus +elephants elephant +elks elk +ellipses ellipsis +eluvia eluvium +elves elf +elytra elytron elytrum +embargoes embargo +embassies embassy +embolectomies embolectomy +emboli embolus +embolies emboly +embrectomies embrectomy +embroideries embroidery +embryectomies embryectomy +embryos embryo +embusques embusque +emergencies emergency +eminences eminence +eminencies eminency +emissaries emissary +emmies emmy +emmys emmy +emphases emphasis +emporia emporium +emporiums emporium +empties empty +emunctories emunctory +enarthroses enarthrosis +encephala encephalon +encephalomas encephaloma +encephalomata encephaloma +enchiridia enchiridion +enchiridions enchiridion +enchondromas enchondroma +enchondromata enchondroma +encomia encomium +encomiums encomium +endamebae endameba +endamebas endameba +endamoebae endamoeba +endamoebas endamoeba +endocardia endocardium +endocrania endocranium +endometria endometrium +endostea endosteum +endostoses endostosis +endothecicia endothecium +endothelia endothelium +endotheliomata endothelioma +enemas enema +enemata enema +enemies enemy +energies energy +engineries enginery +englishmen englishman +englishwomen englishwoman +enmities enmity +enneahedra enneahedron +enneahedrons enneahedron +enormities enormity +entamebae entameba +entamebas entameba +entamoebae entamoeba +entamoebas entamoeba +entases entasis +entelechies entelechy +entera enteron +enterostomies enterostomy +enterotomies enterotomy +enteroviruses enterovirus +entia ens +entireties entirety +entities entity +entozoa entozoan entozoon +entreaties entreaty +entries entry +entropies entropy +envies envy +eohippuses eohippus +eparchates eparchate +eparchies eparchy +epencephala epencephalon +epentheses epenthesis +epexegeses epexegesis +ephemerae ephemera +ephemeras ephemera +ephemerera ephemeron +ephemererons ephemeron +ephemerides ephemeris +ephori ephor +epibolies epiboly +epicalyces epicalyx +epicalyxes epicalyx +epicanthi epicanthus +epicardia epicardium +epicedidia epicedium +epicenters epicenter +epicentres epicentre +epicleses epiclesis +epididymides epididymis +epigastria epigastrium +epiglottides epiglottis +epiglottises epiglottis +epimysia epimysium +epinasties epinasty +epiphanies epiphany +epiphenomena epiphenomenon +epiphyses epiphysis +episcopacies episcopacy +episiotomies episiotomy +episterna episternum +epithalamia epithalamion epithalamium +epithelia epithelium +epitheliomas epithelioma +epitheliomata epithelioma +epitheliums epithelium +epizoa epizoon +epoxies epoxy +epyllilia epyllion +equalities equality +equerries equerry +equilibria equilibrium +equilibriums equilibrium +equiseta equisetum +equisetums equisetum +equities equity +ergatocracies ergatocracy +ergs erg +eries erie +eringoes eringo +eringos eringo +ermines ermine +errancies errancy +errantries errantry +errata erratum +eryngoes eryngo +escolars escolar +escudos escudo +eskies esky +eskimos eskimo +esophagi esophagus +esophaguses esophagus +espartos esparto +espressos espresso +esquimaus esquimau +estuaries estuary +eternities eternity +etiologies etiology +etuis etui +etyma etymon +etymologies etymology +etymons etymon +eucalypti eucalyptus +eucalypts eucalypt +eucalyptuses eucalyptus +eulachans eulachan +eulachons eulachon +eulogies eulogy +eupatridae eupatrid +eupatrids eupatrid +euphonies euphony +euphrasies euphrasy +euripi euripus +eventualities eventuality +ewes ewe +ex-servicemen ex-serviceman +exanthemas exanthema +exanthemata exanthema +exanthems exanthem +exarchates exarchate +exarchies exarchy +excellences excellence +excellencies excellency +excisemen exciseman +excrescencies excrescency +excursuses excursus +executrices executrix +executrixes executrix +exegeses exegesis +exempla exemplum +exigences exigence +exigencies exigency +exordia exordium +exordiums exordium +exostoses exostosis +expediences expedience +expediencies expediency +expiries expiry +expos expo +externalities externality +extradoses extrados +extrema extremum +extremities extremity +eyeteeth eyetooth +fabliaux fabliau +faciae facia +facilities facility +factories factory +faculae facula +faculties faculty +faeries faerie faery +faeroese faeroese +fairies fairy +fallacies fallacy +fallfishes fallfish +falsettos falsetto +falsities falsity +familiarities familiarity +families family +famuli famulus +fancies fancy +fandangos fandango +fangs fang +fannies fanny +fantasies fantasy +fantis fanti +farcies farcy +farmers-general farmer-general +faroese faroese +farragoes farrago +farrieries farriery +fasciae fascia +fasciculi fasciculus +fatalities fatality +fathers-in-law father-in-law +fatsoes fatso +fatsos fatso +fatties fatty +fatuities fatuity +faunae fauna +faunas fauna +fealties fealty +februaries february +feculae fecula +fedayeen fedayee +feet foot +felicities felicity +fellaheen fellah +fellahin fellah +fellahs fellah +fellies felly +felloes felloe +felones_de_se felo_de_se +felonies felony +felonries felonry +felos_de_se felo_de_se +femora femur +femurs femur +fenestellae fenestella +fenestrae fenestra +feretories feretory +feriae feria +ferias feria +ferities ferity +fermatas fermata +fermate fermata +ferneries fernery +ferries ferry +ferulae ferula +ferulas ferula +fervencies fervency +festivities festivity +festschriften festschrift +festschrifts festschrift +fetiales fetial +feudalities feudality +fezzes fez +fiascoes fiasco +fiascos fiasco +fibrillae fibrilla +fibrils fibril +fibromas fibroma +fibromata fibroma +fibulae fibula +fibulas fibula +ficoes fico +fideicommissa fideicommissum +fideicommissaries fideicommissary +fidelities fidelity +fieldmice fieldmouse +fieldsmen fieldsman +fifties fifty +figs. fig. +fila filum +filariiae filaria +filefishes filefish +filipinos filipino +fillies filly +fils fil +fimbriae fimbria +finalities finality +fineries finery +finfoots finfoot +fingos fingo +fireflies firefly +firemen fireman +fisheries fishery +fishermen fisherman +fishes fish +fishflies fishfly +fishwives fishwife +fistulae fistula +fistulas fistula +fixities fixity +flabella flabellum +flagella flagellum +flagellums flagellum +flagmen flagman +flagpoles flagpole +flagstaffs flagstaff +flagstaves flagstaff +flambeaus flambeau +flambeaux flambeau +flamencos flamenco +flamens flamen +flamines flamen +flamingoes flamingo +flamingos flamingo +flatfeet flatfoot +flatfishes flatfish +flatfoots flatfoot +flatheads flathead +flatteries flattery +flatuses flatus +fleurs-de-lis fleur-de-lis +fleurs-de-lys fleur-de-lys +flies fly +flights_of_stairs flight_of_stairs +flittermice flittermouse +flocci floccus +flocculi flocculus +floosies floosie +floozies floozie +florae flora +floras flora +floreant. floreat +florilegia florilegium +flounders flounder +flowers-de-luce flower-de-luce +flummeries flummery +flunkeys flunkey +flunkies flunky +flurries flurry +flybys flyby +flyleaves flyleaf +foci focus +focuses focus +foemen foeman +foetuses foetus +fogeys fogey +fogies fogy +foilsmen foilsman +folia folium +folios folio +folks folk +follies folly +fooleries foolery +footmen footman +fopperies foppery +fora forum +foramens foramen +foramina foramen +forceps forceps +forefeet forefoot +foremen foreman +foreteeth foretooth +forgeries forgery +formalities formality +formicaria formicarium +formicaries formicary +formulae formula +formularies formulary +formulas formula +fornices fornix +fortes fortis +forties forty +fortnightlies fortnightly +fortuities fortuity +forums forum +fossae fossa +foundries foundry +foveae fovea +foveolae foveola +foxes fox +fractocumuli fractocumulus +fractostrati fractostratus +fraena fraenum +fragrances fragrance +fragrancies fragrancy +frailties frailty +frangipanis frangipani +fraternities fraternity +frauen frau +frauleins fraulein +fraus frau +freedmen freedman +freemen freeman +frena frenum +frenchies frenchy +frenchmen frenchman +frenula frenulum +frenzies frenzy +frequencies frequency +frescoes fresco +frescos fresco +freshers fresher +freshmen freshman +friaries friary +fricandeaus fricandeau +fricandeaux fricandeau +fricandoes fricando +friendlies friendly +fries fry +frijoles frijol +fripperies frippery +fritillaries fritillary +frogfishes frogfish +froggies froggy +frogmen frogman +frogs frog +frontes frons +frontiersmen frontiersman +frusta frustum +frustums frustum +fuci fucus +fucuses fucus +fuddy-duddies fuddy-duddy +fugios fugio +fuglemen fugleman +fulas fula +fulcra fulcrum +fulcrums fulcrum +fumatoria fumatorium +fumatories fumatory +fumatoriums fumatorium +fumitories fumitory +functionaries functionary +fundi fundus +fungi fungus +funguses fungus +funiculi funiculus +funnies funny +furcula furculum +furculae furcula +furfures furfur +furies fury +furrieries furriery +futilities futility +futurities futurity +fuzzy-wuzzies fuzzy-wuzzy +g-men g-man +gabbros gabbro +gabies gaby +gadflies gadfly +gadwalls gadwall +gaieties gaiety +galagos galago +galaxies galaxy +galeae galea +galibis galibi +gallantries gallantry +gallas galla +galleries gallery +gallflies gallfly +gallimaufries gallimaufry +gallowses gallows +galvos galvo +gambades gambade +gambadoes gambado +gambados gambado +gametangia gametangium +gammadidia gammadion +gandas ganda +ganglia ganglion +ganglions ganglion +gantries gantry +garbanzos garbanzo +garbos garbo +garfishes garfish +gars gar +gas gas +gases gas +gasmen gasman +gasses gas +gastrectomies gastrectomy +gastroenterostomies gastroenterostomy +gastrostomies gastrostomy +gastrotomies gastrotomy +gastrulae gastrula +gastrulas gastrula +gateaux gateau +gauchos gaucho +gauderies gaudery +gauntries gauntry +gazeboes gazebo +gazebos gazebo +gazelles gazelle +geckoes gecko +geckos gecko +geese goose +geishas geisha +gelsemia gelsemium +gelsemiums gelsemium +gemboks gemsbok +gembucks gemsbuck +gemeinschaften gemeinschaft +gemmae gemma +genealogies genealogy +genera genus +generalissimos generalissimo +generalities generality +generatrices generatrix +generosities generosity +geneses genesis +genevans genevan +genii genius +geniuses genius +gentes gens +gentilities gentility +gentlemen gentleman +gentlemen-at-arms gentleman-at-arms +gentlemen-farmers gentleman-farmer +gentlewomen gentlewoman +genua genu +genus genus +genuses genus +geographies geography +germens germen +germina germen +gerontocracies gerontocracy +gesellschaften gesellschaft +gestalten gestalt +gestalts gestalt +gharries gharri gharry +ghazis ghazi +ghettoes ghetto +ghettos ghetto +gibbosities gibbosity +gigantomachias gigantomachia +gigantomachies gigantomachy +gigolos gigolo +gildsmen gildsman +gildswomen gildswoman +gingivae gingiva +gingkoes gingko +ginglymi ginglymus +ginkgoes ginkgo +gippies gippy +gippoes gippo +gipsies gipsy +giraffes giraffe +giros giro +gis gi +glabellae glabella +glacises glacis +gladioli gladiolus +gladioluses gladiolus +glandes glans +glassmen glassman +gleemen gleeman +glengarries glengarry +gliomas glioma +gliomata glioma +glissandi glissando +glissandos glissando +globefishes globefish +globigerinae globigerina +globigerinas globigerina +glochidchidia glochidium +glomeruli glomerulus +glories glory +glossae glossa +glossaries glossary +glossas glossa +glossectomies glossectomy +glossies glossy +glottides glottis +glottises glottis +glutaei glutaeus +glutei gluteus +gluttonies gluttony +gnoses gnosis +gnus gnu +goatfishes goatfish +gobies goby +goboes gobo +gobos gobo +godchildren godchild +goes go +goings-over going-over +goldeneyes goldeneye +goldeyes goldeye +goldfishes goldfish +gollies golly +gombos gombo +gomphoses gomphosis +gonidiia gonidium +goninia gonion +gonococci gonococcus +goodies goody +goodmen goodman +goodwives goodwife +goody-goodies goody-goody +googlies googly +gooseberries gooseberry +goosefishes goosefish +goosefoots goosefoot +gooses goose +gorgoneineia gorgoneion +gospopoda gospodin +gouramis gourami +governor_generals governor_general +governors_general governor_general +goyim goy +goys goy +graciosos gracioso +graduses gradus +grafen graf +graffiti graffito +grampuses grampus +granaries granary +grandchildren grandchild +granddaddies granddaddy +granddads granddad +grannies grannie granny +grants-in-aid grant-in-aid +granulomas granuloma +granulomata granuloma +grapefruits grapefruit +gratuities gratuity +gravavamina gravamen +gravies gravy +gravities gravity +graylings grayling +greegrees greegree +greeneries greenery +greenflies greenfly +grig-gris gris-gris +grigris grigri +grikwas grikwa +grilses grilse +grinderies grindery +gringos gringo +griquas griqua +grislies grisly +grizzlies grizzly +groceries grocery +groomsmen groomsman +grosses gross +groszy grosz +grotesqueries grotesquerie grotesquery +grottoes grotto +grottos grotto +groundsmen groundsman +groupers grouper +grouses grouse +guacharos guacharo +guacos guaco +guanacos guanaco +guanos guano +guaranis guarani +guaranties guaranty +guardsmen guardsman +guilder guilde +guilders guilde guilder +guitarfishes guitarfish +gujeratis gujerati +guldens gulden +gullahs gullah +gullies gully +gumbos gumbo +gummas gumma +gummata gumma +gunmen gunman +gunnies gunny +guppies guppy +gurkhas gurkha +gurnard gurnar +gurnards gurnar gurnard +gurnets gurnet +guttae gutta +gutties gutty +gymnasia gymnasium +gymnasiums gymnasium +gynaecea gynaeceum +gynaecia gynaecium +gynaecocracies gynaecocracy gynecocracy +gynarchies gynarchy +gynecea gynecium +gynecia gynecium +gynoecea gynoecium +gynoecia gynoecium +gypsies gypsy +gyri gyrus +gyros gyro +ha'pennies ha'penny +habaneros habanero +haberdasheries haberdashery +hackberries hackberry +hadarim heder +haddocks haddock +hadjes hadj +hadjis hadji +haecceities haecceity +haematolyses haematolysis +haematomas haematoma +haematomata haematoma +haematozozoa haematozoon +haemodialyses haemodialysis +haemolyses haemolysis +haemoptyses haemoptysis +haemorrhoidectomies haemorrhoidectomy +haeredes haeres +haftarahs haftarah +haftaroth haftarah +hagfishes hagfish +haggadahs haggadah +haggadas haggada haggadah +haggadoth haggada +hagiarchies hagiarchy +hagiocracies hagiocracy +hagiographies hagiography +hagiologies hagiology +haidas haida +hairdos hairdo +hajis haji +hajjes hajj +hajjis hajji +hakes hake +halers haler +haleru haler +halibuts halibut +hallahs hallah +halloas halloa +halloos halloo +hallos hallo +hallot hallah +halloth hallah +haloes halo +halos halo +halteres halter haltere +halves half +hamuli hamulus +handfuls handful +handymen handyman +hangers-on hanger-on +hangmen hangman +hankies hankie hanky +haphtarahs haphtarah +haphtaroth haphtarah +haphtatarahs haphtarah +haphtataroth haphtarah +haplographies haplography +hardies hardy +hares hare +harmonies harmony +harpies harpy +harquebuses harquebus +harts hart +haruspices haruspex +harvestmen harvestman +hatcheries hatchery +hausas hausa +haustella haustellum +haustoria haustorium +hazans hazan +hazzanim hazzan +hazzans hazzan +he-men he-man +headmen headman +headsmen headsman +heathberries heathberry +heathens heathen +heavies heavy +hectocotyli hectocotylus +hegemonies hegemony +heirs-at-law heir-at-law +heldentetenore heldentenor +helianthuses helianthus +helices helix +helixes helix +hellos hello +hematolyses hematolysis +hematomas hematoma +hematomata hematoma +hematozozoa hematozoon +hemelytra hemelytron +hemielytra hemielytron +hemodialyses hemodialysis +hemolyses hemolysis +hemoptyses hemoptysis +hemorrhoidectomies hemorrhoidectomy +henchmen henchman +hendecahedra hendecahedron +hendecahedrons hendecahedron +henneries hennery +henries henry +henrys henry +hens-and-chickens hen-and-chickens +heptarchies heptarchy +heraclidae heraclid +heraklidae heraklid +heraldries heraldry +herbariia herbarium +herbariums herbarium +herdsmen herdsman +heredities heredity +heresies heresy +hermae herm herma +hermai herma +herms herm +herniae hernia +hernias hernia +herniorrhaphies herniorrhaphy +heroes hero +heronries heronry +heros herero +herren herr +herrings herring +hetaerae hetaera +hetairai hetaira +heteroplasties heteroplasty +hetmans hetman +hexapodies hexapody +hiatuses hiatus +hibernacles hibernacle +hibernacula hibernaculum +hibiscuses hibiscus +hickories hickory +hidalgos hidalgo +hieracosphinges hieracosphinx +hieracosphinxes hieracosphinx +hierarchies hierarchy +hierocracies hierocracy +hierologies hierology +highwaymen highwayman +hila hilum +hillbillies hillbilly +himatia himation +hindoos hindoo +hinds hind +hindus hindu +hinnies hinny +hippies hippie hippy +hippocampi hippocampus +hippopotami hippopotamus +hippopotamuses hippopotamus +hippos hippo +histories history +hobbies hobby +hoboes hobo +hobos hobo +hodmen hodman +hogfishes hogfish +holibuts holibut +holies holy +hollas holla +hollies holly +hollos hollo +homilies homily +homologies homology +homos homo +homunculi homunculus +honesties honesty +honkies honky +honorariia honorarium +honorariums honorarium +hoodoos hoodoo +hoofs hoof +hootenannies hootenanny +hootnannies hootnanny +hooves hoof +hopis hopi +horologia horologium +horoscopies horoscopy +hors_d'oeuvres hors_d'oeuvre +horseflies horsefly +horsemen horseman +hospitalities hospitality +hostelries hostelry +hostilities hostility +hottentots hottentot +houris houri +houseflies housefly +housemen houseman +houses house +housewives housewife +hubbies hubby +huckleberries huckleberry +hullaballoos hullaballoo +hullabaloos hullabaloo +hullos hullo +humanities humanity +humeri humerus +humilities humility +humpies humpy +hundreds hundred +hundredweights hundredweight +huntsmen huntsman +hurdy-gurdies hurdy-gurdy +hurly-burlies hurly-burly +hurons huron +hurries hurry +husbandmen husbandman +huskies husky +hussies hussy +hutus hutu +hydrae hydra +hydras hydra +hydromedusae hydromedusa +hydromedusas hydromedusa +hydros hydro +hymenoptera hymenopteran +hymenopterans hymenopteran +hymenopterons hymenopteron +hynia hymenium +hyniums hymenium +hypanthia hypanthium +hyperostoses hyperostosis +hypertrophies hypertrophy +hyphae hypha +hypnoses hypnosis +hypochondria hypochondrium +hypocrisies hypocrisy +hypogastria hypogastrium +hypogea hypogeum +hypophyses hypophysis +hypos hypo +hypostases hypostasis +hypothalami hypothalamus +hypotheses hypothesis +hyraces hyrax +hyraxes hyrax +hysterectomies hysterectomy +hysterotomies hysterotomy +iambi iamb +iambs iamb +iambuses iambus +ibexes ibex +ibibios ibibio +ibices ibex +ibises ibis +ibo igbo +ibos ibo +ichthyosauri ichthyosaurus +ichthyosaurs ichthyosaur +ichthyosauruses ichthyosaur ichthyosaurus +iconographies iconography +iconostases iconostas iconostasis +icosahedra icosahedron +icosahedrons icosahedron +ictuses ictus +ideata ideatum +identities identity +ideologies ideology +idiocies idiocy +idiopathies idiopathy +idiosyncrasies idiosyncrasy +igbos igbo +igloos igloo +iglus iglu +ignominies ignominy +ignoramuses ignoramus +igorots igorot +igorrorote igorrote +igorrotes igorrote +ileostomies ileostomy +ilia ilium +imageries imagery +imagines imago +imagoes imago +imbroglios imbroglio +immediacies immediacy +immensities immensity +immoralities immorality +immunities immunity +impalas impala +imparities imparity +impediments impediment +imperiria imperium +impetuses impetus +impies impi +impieties impiety +impolicies impolicy +importunities importunity +impossibilities impossibility +impresarios impresario +improbities improbity +improprieties impropriety +impunities impunity +impurities impurity +inaccuracies inaccuracy +inadequacies inadequacy +inamoratas inamorata +inamoratos inamorato +inanities inanity +incapacities incapacity +incas inca +incendiaries incendiary +incensories incensory +incivilities incivility +incognitas incognita +incognitos incognito +incommodities incommodity +incongruities incongruity +inconsistencies inconsistency +incubi incubus +incubuses incubus +incudes incus +incumbencies incumbency +indecencies indecency +indemnities indemnity +independencies independency +indexes index +indiamen indiaman +indices index +indignities indignity +indigoes indigo +indigos indigo +individualities individuality +indusia indusium +industries industry +inequalities inequality +inequities inequity +infamies infamy +infancies infancy +infantries infantry +infantrymen infantryman +infelicities infelicity +infernos inferno +infidelities infidelity +infinities infinity +infirmaries infirmary +infirmities infirmity +informalities informality +infundibula infundibulum +ingenuities ingenuity +ingushes ingush +inhumanities inhumanity +iniquities iniquity +injuries injury +inkberries inkberry +innuendoes innuendo +innuendos innuendo +inocula inoculum +inoculants inoculant +inquiries inquiry +inquisitors-general inquisitor-general +insanities insanity +insectaria insectarium +insectaries insectary +insectariums insectarium +insignias insignia +instabilities instability +instrumentalities instrumentality +insulae insula +intagli intaglio +intaglios intaglio +intensities intensity +interleaves interleaf +intermediaries intermediary +intermezzi intermezzo +intermezzos intermezzo +internuncios internuncio +interreges interrex +interregna interregnum +interregnums interregnum +intimacies intimacy +intimae intima +intradoses intrados +intros intro +inuits inuit +inventories inventory +inveracities inveracity +involucella involucellum +involucels involucel +involucra involucrum +involucres involucre +iridectomies iridectomy +irides iris +iridotomies iridotomy +irises iris +irishmen irishman +irishwomen irishwoman +ironies irony +irregularities irregularity +irrelevancies irrelevancy +is is +ischia ischium +isocracies isocracy +israelis israeli +isthmi isthmus +isthmuses isthmus +itineraries itinerary +ivies ivy +ivories ivory +jack-in-the-boxes jack-in-the-box +jackeroos jackaroo jackeroo +jackfishes jackfish +jackknives jackknife +jacks-in-the-box jack-in-the-box +jacksmelts jacksmelt +jacksnipes jacksnipe +jacobuses jacobus +jaguarondis jaguarondi +jaguarundis jaguarundi +jalopies jalopy +jaloppies jaloppy +jambarts jambart +jambeaux jambeau +jambers jamber +janissaries janissary +janizaries janizary +januaries january +jatos jato +jats jat +jealousies jealousy +jellies jelly +jellyfishes jellyfish +jemmies jemmy +jennies jenny +jequerities jequerity +jequirities jequirity +jerries jerry +jetties jetty +jewelfishes jewelfish +jewfishes jewfish +jewries jewry +jiffies jiffy +jiffs jiff +jimmies jimmy +jingoes jingo +jinn jinni +jockos jocko +joes jo joe +johnnies johnny +jollities jollity +journeymen journeyman +journos journo +judge_advocate_generals judge_advocate_general +judge_advocates_general judge_advocate_general +judiciaries judiciary +judies judy +julies july +jumbos jumbo +juncos junco +juneberries juneberry +junkies junkie junky +junkmen junkman +juntos junto +jura jus +juries jury +jurymen juryman +justiciaries justiciary +juvenilities juvenility +kabyles kabyle +kaddishim kaddish +kadis kadi +kaffirs kaffir +kafirs kafir +kakapos kakapo +kakemonos kakemono +kakis kaki +kalmuck kalmuc +kalmucks kalmuc kalmuck +kalmyks kalmyk +kangaroos kangaroo +kanjis kanji +kara-kalpaks kara-kalpak +karens karen +karoos karoo +karroos karroo +kashmiris kashmiri +katabases katabasis +kauries kaury +kauris kauri +kazakhs kazakh +kazaks kazak +kazoos kazoo +keeshonden keeshond +keeshonds keeshond +kelpies kelpie kelpy +kepis kepi +keratoplasties keratoplasty +kerries kerry +khakis khaki +kibbutzim kibbutz +kiddies kiddie kiddy +kikuyus kikuyu +killdeers killdeer +killifishes killifish +kilos kilo +kimonos kimono +kingfishes kingfish +kings-of-arms king-of-arms +kinsmen kinsman +kirkmen kirkman +kitties kitty +kiwis kiwi +klansmen klansman +kleenexes kleenex +klootchmans klootchman +klootchmen klootchman +knaveries knavery +knights_bachelor knight_bachelor +knights_bachelors knight_bachelor +knights_templar knight_templar +knights_templars knight_templar +knives knife +kohlrabies kohlrabi +kolinskies kolinsky +kolos kolo +kondos kondo +kongos kongo +kotos koto +krios krio +kronen krone +kroner krone +kronur krona +krooni kroon +kroons kroon +kwakiutls kwakiutl +kylikes kylix +labara labarum +labella labellum +labia labium +laboratories laboratory +labra labrum +lachrymatories lachrymatory +lactobacilli lactobacillus +lacunae lacuna +lacunaria lacunar +lacunars lacunar +lacunas lacuna +ladies lady +ladies-in-waiting lady-in-waiting +ladinos ladino +lamaseries lamasery +lamellae lamella +lamellas lamella +lamiae lamia +lamias lamia +laminae lamina +laminas lamina +landladies landlady +landsmen landsman +laniaries laniary +lanugos lanugo +laos lao +laotians laotian +laparotomies laparotomy +lapidaries lapidary +lapilli lapillus +lapithae lapith +lapiths lapith +larcenies larceny +larghettos larghetto +largos largo +larvae larva +larynges larynx +laryngotomies laryngotomy +larynxes larynx +lassoes lasso +lassos lasso +latexes latex +laths lath +lati lat +latices latex +latifundia latifundium +lats lat +latu lat +laundries laundry +laundrymen laundryman +laundrywomen laundrywoman +lavaboes lavabo +lavabos lavabo +lavatories lavatory +lawmen lawman +laymen layman +laywomen laywoman +lazarets lazaret +lazarettes lazarette +lazarettos lazaretto +leadsmen leadsman +lean-tos lean-to +leaves leaf leave +lecheries lechery +lectionaries lectionary +lecythi lecythus +lefties lefty +legacies legacy +legalities legality +legatos legato +leges lex +legionaries legionary +legmen legman +lei leu +lemmas lemma +lemmata lemma +lemnisci lemniscus +lenes lenis +lengthmen lengthman +lenities lenity +lenos leno +lentigines lentigo +lentos lento +leonides leonid +leonids leonid +lepidoptera lepidopteran +lepidopterans lepidopteran +leprosaria leprosarium +lepta lepton +leptocephali leptocephalus +lethargies lethargy +lettermen letterman +leva lev +levies levy +levities levity +liabilities liability +liberalities liberality +liberties liberty +libidos libido +librae libra +libraries library +libretti libretto +librettos libretto +lice louse +lieder lied +liegemen liegeman +liftboys liftboy +liftmen liftman +ligulae ligula +ligulas ligula +lilies lily +lilos lilo +limbi limbus +limbos limbo +limens limen +limina limen +limites limes +limuli limulus +linctuses linctus +linemen lineman +linesmen linesman +lingcods lingcod +lingoes lingo +lings ling +lingua_francas lingua_franca +linguae lingua +linguae_francae lingua_franca +linkboys linkboy +linkmen linkman +lionfishes lionfish +lipomas lipoma +lipomata lipoma +liras lira +lire lira +liriodendra liriodendron +liriodendrons liriodendron +listente sente +litai lit litas +litanies litany +lithos litho +lithotomies lithotomy +lithotrities lithotrity +lits lit +litu litas +liturgies liturgy +liveries livery +liverymen liveryman +lives life +lixiviia lixivium +lixiviums lixivium +llanos llano +loaves loaf +lobbies lobby +lobectomies lobectomy +loblollies loblolly +lobos lobo +lobotomies lobotomy +lobsters lobster +localities locality +loci locus +locomen locoman +locos loco +locules locule +loculi loculus +loganberries loganberry +loggias loggia +loggie loggia +logia logion +logomachies logomachy +logos logo +lollies lolly +lomenmenta lomentum +loments loment +longbowmen longbowman +longobardi longobard +longobards longobard +longshoremen longshoreman +loobies looby +looneys looney +loonies loony +loos loo +loricae lorica +lories lory +lorries lorry +lotharios lothario +lotteries lottery +louses louse +lowerclassmen lowerclassman +loyalties loyalty +luba luba +lubas luba +lubritoria lubritorium +lullabies lullaby +lumens lumen +lumina lumen +luminaries luminary +luminosities luminosity +lumpfishes lumpfish +lunacies lunacy +lungfishes lungfish +lunies luny +lunulae lunula +lunules lunule +lupercalias lupercalia +lures lur lure +lustra lustre +lustrums lustrum +luxuries luxury +lycees lycee +lyings-in lying-in +lymphangitides lymphangitis +lymphomas lymphoma +lymphomata lymphoma +lymphopoieses lymphopoiesis +lynxes lynx +lyses lysis +lyttae lytta +lyttas lytta +maare maar +maars maar +macacos macaco +macaronies macaroni +macaronis macaroni +maccaronies maccaroni +maccaronis maccaroni +machineries machinery +machzorim machzor +mackerels mackerel +macronuclei macronucleus +macros macro +macrosporangia macrosporangium +maculae macula +macules macule +madmen madman +madornos madrono +madronas madrona +madrones madrone +maduros maduro +madwomen madwoman +maestri maestro +maestros maestro +mafiosi mafioso +mafiosos mafioso +magi magus +magisteries magistery +magistracies magistracy +magistratures magistrature +magmas magma +magmata magma +magnanimities magnanimity +magnetos magneto +magnificoes magnifico +magnums magnum +magyars magyar +mahicans mahican +mahoganies mahogany +mahzorim mahzor +mailmen mailman +majesties majesty +major-axes major_axis +major-domos major-domo +major_axes major_axis +majorities majority +makos mako +makuta likuta +maladies malady +malagasies malagasy +malevolencies malevolency +malignancies malignancy +malignities malignity +malihinis malihini +malinkes malinke +mallei malleus +malleoli malleolus +mambos mambo +mamillae mamilla +mammae mamma +mammies mammie mammy +mammillae mammilla +manchus manchu +mandamuses mandamus +mandatories mandatory +mandes mande +mandingoes mandingo +mandingos mandingo +mangoes mango +mangos mango +manifestoes manifesto +manifestos manifesto +maninkes maninke +manitos manito +manitous manitou +manitus manitu +manservants manservant +manteaus manteau +manteaux manteau +mantes mantis +mantises mantis +manubria manubrium +manubriums manubrium +manufactories manufactory +manxmen manxman +maoris maori +maravedis maravedi +marchese marchesa +marchesi marchese +maremme maremma +markhoors markhoor +markhors markhor +markkaa markka +marksmen marksman +marlins marlin +marqueteries marqueterie +marquetries marquetry +marquises marquis +marranos marrano +marsupia marsupium +martens marten +martinis martini +martyries martyry +martyrologies martyrology +marvels-of-peru marvel-of-peru +masais masai +mashies mashie mashy +mashonas mashona +maskalonges maskalonge +maskanonges maskanonge +masonries masonry +massachusets massachuset +masses mass masse +mastectomies mastectomy +masteries mastery +masters-at-arms master-at-arms +masticatories masticatory +mastoidectomies mastoidectomy +matabeles matabele +materialities materiality +matriarchies matriarchy +matrices matrix +matrimonies matrimony +matrixes matrix +maturities maturity +matzahs matzah +matzas matza +matzohs matzoh +matzos matzo +matzoth matzo +mau-maus mau-mau +maubies mauby +maundies maundy +mausolea mausoleum +mausoleums mausoleum +maxillae maxilla +maxima maximum +mayas maya +mayflies mayfly +mayoralties mayoralty +meanies meanie meany +meatuses meatus +media medium +mediae media +mediastina mediastinum +medicos medico +mediocrities mediocrity +mediums medium +medulla_oblongatas medulla_oblongata +medullae medulla +medullae_oblongatae medulla_oblongata +medullas medulla +medusae medusa +medusas medusa +megara megaron +megasporangia megasporangium +megillahs megillah +megilloth megillah +meinies meinie meiny +meioses meiosis +meistersingers meistersinger +melancholies melancholy +melanomas melanoma +melanomata melanoma +melismas melisma +melismata melisma +melodies melody +mementoes memento +mementos memento +memoranda memorandum +memorandums memorandum +memories memory +memos memo +men man +men-at-arms man-at-arms +men-o'-war man-of-war +men-of-war man-of-war +men_of_letters man_of_letters +mendacities mendacity +menisci meniscus +meniscuses meniscus +menologies menology +menominees menominee +menominis menomini +menstrua menstruum +menstruums menstruum +mentalities mentality +mercenaries mercenary +merchantmen merchantman +mercies mercy +mercuries mercury +mergansers merganser +merinos merino +meritocracies meritocracy +mermen merman +mesdames madame +mesdemoiselles mademoiselle +mesenteries mesentery +mesentertera mesenteron +mesnalties mesnalty +mesothoraces mesothorax +mesothoraxes mesothorax +messeigneurs monseigneur +messieurs monsieur +mestizoes mestizo +mestizos mestizo +metacarpi metacarpus +metagalaxies metagalaxy +metamorphoses metamorphosis +metanephroi metanephros +metastases metastasis +metatarsi metatarsus +metatheses metathesis +metathoraces metathorax +metathoraxes metathorax +metempsychoses metempsychosis +metencephala metencephalon +metencephalons metencephalon +methodologies methodology +metifs metif +metonymies metonymy +metrologies metrology +metropolises metropolis +metros metro +mezuzahs mezuzah +mezuzoth mezuzah +mezzo-sopranos mezzo-soprano +mezzos mezzo +mhos mho +miasmas miasma +miasmata miasma +mice mouse +micmacs micmac +microanalyses microanalysis +micrococci micrococcus +microcopies microcopy +micronuclei micronucleus +micronucleuses micronucleus +microsporangia microsporangium +microtomies microtomy +middies middy +middlemen middleman +midinettes midinette +midrashim midrash +midshipmen midshipman +midwives midwife +miladies miladi milady +milia milium +milieus milieu +milieux milieu +militaries military +militated_against militate_against +militiamen militiaman +milkfishes milkfish +milkmen milkman +millenaries millenary +millennia millennium +millenniums millennium +millions million +milos milo +mimicries mimicry +minae mina +minas mina +minima minimum +minimums minimum +ministeria ministerium +ministries ministry +minnows minnow +minorities minority +minstrelsies minstrelsy +minutemen minuteman +minutiae minutia +minyanim minyan +minyans minyan +mioses miosis +miracidiia miracidium +miri mir +miscellanies miscellany +miseries misery +mishnayoth mishna mishnah +missies missy +missionaries missionary +mitochondria mitochondrion +mittimuses mittimus +mitzvahs mitzvah +mitzvoth mitzvah +mixtecs mixtec +mlles mlle +mobocracies mobocracy +mockeries mockery +modalities modality +modernities modernity +modesties modesty +modioli modiolus +moduli modulus +mohaves mohave +mohawks mohawk +mohicans mohican +moieties moiety +mojaves mojave +molalities molality +molas mola +molies moly +mollies molly +momenta momentum +momentums momentum +momi momus +momuses momus +monades monad monas +monads monad +monarchies monarchy +monasteries monastery +moneys money +mongoes mongoe +mongolians mongolian +mongooses mongoose +mongos mongo +monies money +monitories monitory +monkeries monkery +monkfishes monkfish +monochasia monochasium +monocracies monocracy +monodies monody +monopodia monopodium +monopolies monopoly +monopsonies monopsony +monoptera monopteron +monopteroi monopteros +monotonies monotony +mons mon +monsignori monsignor +monsignors monsignor +monstrosities monstrosity +montagnards montagnard +monteros montero +monthlies monthly +monts-de-piete mont-de-piete +mooncalves mooncalf +moonfishes moonfish +morae mora +moralities morality +moras mora +moratoria moratorium +moratoriums moratorium +morays moray +morceaux morceau +mordvins mordvin +morellos morello +morescoes moresco +morescos moresco +moriscoes morisco +moriscos morisco +morning-glories morning-glory +moros moro +morphallaxes morphallaxis +morphoses morphosis +morros morro +mortalities mortality +mortuaries mortuary +morulae morula +morulas morula +mosasauri mosasaurus +mosasaurs mosasaur +moshavim moshav +moslems moslem +moslim moslem +moslims moslem +mosothos mosotho +mosquitoes mosquito +mosquitos mosquito +mossis mossi +mother_superiors mother_superior +mothers-in-law mother-in-law +mothers_superior mother_superior +motormen motorman +mottoes motto +mottos motto +motus motu +mounties mountie mounty +mouthfuls mouthful +mouths mouth +mucosae mucosa +mucrones mucro +mudejares mudejar +mudfishes mudfish +muftis mufti +mulattoes mulatto +mulattos mulatto +mulberries mulberry +multiparae multipara +multiplicities multiplicity +mummeries mummery +mummies mummy +mundas munda +mungos mungo +municipalities municipality +murices murex +murphies murphy +musclemen muscleman +muskallunge muskellunge +muskellunges muskellunge +muskies musky +muskrats muskrat +muslims muslim +mussalmans mussalman +mussulmans mussulman +mustachios mustachio +mutinies mutiny +mycelia mycelium +mycetomas mycetoma +mycetomata mycetoma +mycobacteria mycobacterium +mycorhizas mycorhiza +mycorrhizae mycorrhiza +myelencephala myelencephalon +myelencephalons myelencephalon +myiases myiasis +myocardia myocardium +myofibrillae myofibrilla +myomas myoma +myomata myoma +myoses myosis +myrmidones myrmidon +myrmidons myrmidon +mysteries mystery +mythoi mythos +mythologies mythology +myxomas myxoma +myxomata myxoma +naevi naevus +nagas naga +nahuatls nahuatl +naiades naiad +naiads naiad +namaquas namaqua +namas nama +namby-pambies namby-pamby +nannies nanny +naoi naos +nappies nappy +narcissi narcissus +narcissuses narcissus +nares naris +narragansets narraganset +narragansetts narragansett +naseberries naseberry +nasopharynges nasopharynx +nasopharynxes nasopharynx +natalities natality +natatoria natatorium +natatoriums natatorium +nationalities nationality +nativities nativity +naumachiae naumachia +naumachias naumachia +naumachies naumachy +nauplii nauplius +nautili nautilus +nautiluses nautilus +navahoes navaho +navahos navaho +navajoes navajo +navajos navajo +navies navy +nazis nazi +nebulae nebula +nebulas nebula +nebulosities nebulosity +necessities necessity +necrologies necrology +necropoleis necropolis +necropolises necropolis +necropsies necropsy +necroscopies necroscopy +necrotomies necrotomy +nectaries nectary +neddies neddy +needlefishes needlefish +needlewomen needlewoman +negrilloes negrillo +negrillos negrillo +negritoes negrito +negritos negrito +negroes negro +neguses negus +nelumbos nelumbo +nemeses nemesis +neologies neology +neologisms neologism +nephrectomies nephrectomy +nephridiia nephridium +nephrotomies nephrotomy +nereides nereid +netties netty +neurectomies neurectomy +neurohypophyses neurohypophysis +neuromas neuroma +neuromata neuroma +neuroptera neuropteron +neuropterans neuropteran +neuroses neurosis +neurotomies neurotomy +neutrettos neutretto +neutrinos neutrino +nevi nevus +newspapermen newspaperman +newspaperwomen newspapermen newspaperwoman +nibelungen nibelung +nibelungs nibelung +niceties nicety +nidi nidus +nielli niello +niellos niello +nighties nightie nighty +nilgai nilgai +nilgais nilgai +nilghaus nilghau +nimbi nimbus +nimbostrati nimbostratus +nimbuses nimbus +nimieties nimiety +nineties ninety +ninnies ninny +nobilities nobility +noblemen nobleman +noblewomen noblemen noblewoman +nobodies nobody +noctilucae noctiluca +noddies noddy +nodi nodus +noes no +nomarchies nomarchy +nomina nomen +nomocracries nomocracy +nomographies nomography +non-resistants non-resistant +nonentities nonentity +nonpluses nonplus +norsemen norseman +northcountrymen northcountryman +northeasterlies northeasterly +northerlies northerly +northmen northman +northwesterlies northwesterly +nos no +nota notum +notabilities notability +notaries notary +noumena noumenon +novae nova +novas nova +novellas novella +novelle novella +novelties novelty +novenae novena +nubas nuba +nubeculae nubecula +nucelli nucellus +nuchae nucha +nuclei nucleus +nucleoli nucleolus +nucleuses nucleus +nudities nudity +nulliparae nullipara +nullities nullity +numbfishes numbfish +numina numen +nuncios nuncio +nunneries nunnery +nupes nupe +nuris nuri +nurseries nursery +nurserymen nurseryman +nyalas nyala +nyanjas nyanja +nylghaus nylghau +nymphae nympha +nympholepsies nympholepsy +nymphos nympho +nyoros nyoro +oarfishes oarfish +oarsmen oarsman +oases oasis +oaths oath +obbligatos obbligato +obeahs obeah +obedientiaries obedientiary +obeli obelus +obis obi +obituaries obituary +objets_d'art objet_d'art +obligati obligato +obliquities obliquity +obloquies obloquy +oboli obolus +obols obol +obscenities obscenity +obscurities obscurity +observatories observatory +obstinacies obstinacy +occipita occiput +occiputs occiput +occupancies occupancy +oceanariia oceanarium +oceanariums oceanarium +oceanides oceanid +oceanids oceanid +ocelli ocellus +ochlocracies ochlocracy +ochreae ochrea +ocotillos ocotillo +ocreae ochrea ocrea +octahedra octahedron +octahedrons octahedron +octarchies octarchy +octavos octavo +octocentenaries octocentenary +octodecimos octodecimo +octogenarians octogenarian +octogenaries octogenary +octonaries octonary +octopuses octopus +oddities oddity +odea odeum +oedemata edema oedema +oesophagi esophagus oesophagus +offertories offertory +officiaries officiary +oil-water_interfaces oil-water_interface +oilmen oilman +ojibwas ojibwa +okapis okapi +oldwives oldwife +olea oleum +oleums oleum +olfactories olfactory +oligarchies oligarchy +oligopolies oligopoly +oligopsonies oligopsony +olios olio +ologies ology +omasa omasum +omayyades omayyad +omayyads omayyad +ombudsmen ombudsman +omenta omentum +ommatidtidia ommatidium +ommiades ommiad +ommiads ommiad +omnibuses omnibus +onagers onager +onagri onager +one-eightys one-eighty +oneidas oneida +onondagas onondaga +onuses onus +oogonia oogonium +oogoniums oogonium +oophorectomies oophorectomy +oothecae ootheca +opacities opacity +opera_serias opera_seria +operas_seria opera_seria +opercula operculum +operculums operculum +opossums opossum +opportunities opportunity +optima optimum +optimums optimum +opuses opus +ora os +orangemen orangeman +orangeries orangery +oratories oratory +oratorios oratorio +orchardmen orchardman +orderlies orderly +ordinaries ordinary +organa organon organum +organdies organdie organdy +organons organon +organums organa organum +orgies orgy +oribis oribi +originalities originality +orreries orrery +orthodoxies orthodoxy +orthographies orthography +orthopterans orthopteran +orthoptertera orthopteron +orthostichies orthostichy +oryxes oryx +osages osage +osar os +oscitances oscitance +oscitancies oscitancy +oscula osculum +osmanlis osmanli +ossa os +ossuaries ossuary +osteomas osteoma +osteomata osteoma +osteoplasties osteoplasty +osteotomies osteotomy +ostia ostium +ostiaries ostiary +ostriches ostrich +ostyaks ostyak +otters otter +ottomans othman ottoman +outcries outcry +outlawries outlawry +ova ovum +ovambos ovambo +ovariectomies ovariectomy +ovaries ovary +ovariotomies ovariotomy +overmen overman +ovoli ovolo +ovotestes ovotestis +owelties owelty +oxen ox +oxymora oxymoron +oystermen oysterman +pachucos pachuco +paddies paddy +paddlefishes paddlefish +paellas paella +paeonies paeony +pageantries pageantry +pairs pair +paisanos paisano +paise paisa +paiutes paiute +palaestras palaestra +paleae palea +pales pale +palestrae palestra +palestras palestra +palingeneses palingenesis +pallia pallium +palliums pallium +palmettoes palmetto +palmettos palmetto +palominos palomino +palpi palpus +palps palp +palsies palsy +pamperos pampero +pancratia pancratium +pandanuses pandanus +pandies pandy +pandowdies pandowdy +panettones panettone +panettoni panettone +panoplies panoply +pansies pansy +panthers panther +pantos panto +pantries pantry +papacies papacy +paperknives paperknife +papillae papilla +papillomas papilloma +papillomata papilloma +pappi pappus +pappies pappy +papulae papula +papules papule +papyri papyrus +papyruses papyrus +parabases parabasis +paraleipses paraleipsis paralipsis +paralyses paralysis +paramecia paramecium +paramenta parament +paraments parament +paramos paramo +paraphyses paraphysis +parapodia parapodium +paras para +paraselenae paraselene +parashoth parashah +parastichies parastichy +parasyntheta parasyntheton +parentheses parenthesis +parerga parergon +parhelia parhelion +pari-mutuels pari-mutuel +parietes paries +paris-mutuels pari-mutuel +parities parity +parodies parody +parries parry +parrotfishes parrotfish +parrs parr +partialities partiality +particularities particularity +parties party +partridgeberries partridgeberry +partridges partridge +parulides parulis +pashtos pashto +paso_dobles paso_doble +pasos_dobles paso_doble +passepieds passepied +passers-by passer-by +passuses passus +pasties pasty +pastorales pastorale +pastorali pastorale +pastries pastry +patagia patagium +patellae patella +pathologies pathology +paths path +patinae patina +patios patio +patresfamilias paterfamilias +patriarchies patriarchy +patrimonies patrimony +patrolmen patrolman +patsies patsy +patties patty +pawnees pawnee +peacocks peacock +peafowls peafowl +pearlies pearly +pease pea +peaveys peavey +peavies peavy +peccadilloes peccadillo +peccadillos peccadillo +peccaries peccary +peccavis peccavi +pectens pecten +pectines pecten +peculiarities peculiarity +pedaloes pedalo +pedalos pedalo +pedantries pedantry +pedes pes +pekingese pekinese +pellitories pellitory +peloruses pelorus +peltries peltry +pelves pelvis +pelvises pelvis +penalties penalty +pence penny +penes penis +penicillia penicillium +penicilliums penicillium +penises penis +penitentiaries penitentiary +penknives penknife +penmen penman +pennae penna +pennia penni +pennies penny +pennis penni +penny-dreadfuls penny-dreadful +pensionaries pensionary +pentahedra pentahedron +pentahedrons pentahedron +pentarchies pentarchy +pentimenti pentimento +penumbrae penumbra +penumbras penumbra +peonies peony +peoples people +pepla peplum +peploses peplos +peplums peplum +pepluses peplus +pepos pepo +pequots pequot +perches perch +perfectos perfecto +perfidies perfidy +perfumeries perfumery +pericardia pericardium +perichondria perichondrium +pericrania pericranium +peridia peridium +perihelia perihelion +perinea perineum +perinephria perinephrium +perionychiia perionychium +periostea periosteum +peripheries periphery +periphrases periphrasis +peris peri +peristalses peristalsis +perithecia perithecium +peritonea peritoneum +peritoneums peritoneum +perjuries perjury +permanencies permanency +permittivities permittivity +perpetuities perpetuity +perplexities perplexity +perries perry +personae persona +personalities personality +personalties personalty +persons person +perversities perversity +pesos peso +pessaries pessary +petermen peterman +petrologies petrology +pfennige pfennig +pfennigs pfennig +phalanges phalange phalanx +phalansteries phalanstery +phalanxes phalanx +phalli phallus +phalluses phallus +phantasies phantasy +pharmacies pharmacy +pharynges pharynx +pharyngotomies pharyngotomy +pharynxes pharynx +phenocopies phenocopy +phenomena phenomenon +phenomenons phenomenon +phi-phenomena phi-phenomenon +philanthropies philanthropy +philodendra philodendron +philodendrons philodendron +philosophies philosophy +phis phi +phlebotomies phlebotomy +phloxes phlox +phlyctenae phlyctaena phlyctena +phoneys phoney +phonies phony +phonologies phonology +photocopies photocopy +photos photo +phraseologies phraseology +phratries phratry +phrensies phrensy +phyla phylum +phylacteries phylactery +phylae phyle +phyllotaxes phyllotaxis +phyllotaxies phyllotaxy +phyllotaxtaxes phyllotaxis +phylloxerae phylloxera +phylloxeras phylloxera +phylogeneses phylogenesis +phylogenies phylogeny +pianos piano +piccolos piccolo +pichiciegos pichiciego +pickaninnies pickaninny +pickerels pickerel +pieds-a-terre pied-a-terre +piemen pieman +pies pie +pieties piety +pigfishes pigfish +piggeries piggery +piggies piggy +pigmies pigmy +pigsties pigpen pigsty +pikemen pikeman +pikeperches pikeperch +pikes pike +pilea pileum +pilei pileus +pilis pili +pillories pillory +pimentos pimento +pimientos pimiento +pinchpennies pinchpenny +pineries pinery +pineta pinetum +pinfishes pinfish +pingos pingo +pinkies pinkie pinky +pinkoes pinko +pinkos pinko +pinnae pinna +pinnas pinna +pinnies pinny +pinnulae pinnula +pinnules pinnule +pintails pintail +pintos pinto +pipefishes pipefish +piracies piracy +pirogi pirog +pis pi +piscaries piscary +piscinae piscina +piscinas piscina +pistachios pistachio +pitchmen pitchman +pithecanthropi pithecanthropus +pithoi pithos +pities pity +pitmen pitman +pituitaries pituitary +pixies pixie pixy +placeboes placebo +placebos placebo +placemen placeman +placentae placenta +placentas placenta +plaices plaice +plain-clothesmen plain-clothesman +plainsmen plainsman +planetaries planetary +planetariia planetarium +planetariums planetarium +planulae planula +plasmodesdesmata plasmodesma +plasmodesmata plasmodesma +plasmodesms plasmodesm +plasmodia plasmodium +plateaus plateau +plateaux plateau +platies platy +platypuses platypus +platys platy +pleasantries pleasantry +plectra plectron plectrum +plectrons plectron +plectrums plectrum +plena plenum +plenipotentiaries plenipotentiary +plenties plenty +plenums plenum +pleura pleuron +pleurae pleura +pleurotomies pleurotomy +plexuses plexus +plicae plica +plies ply +plonkos plonko +ploughmen ploughman plowman +plug-uglies plug-ugly +plumbagos plumbago +plumberies plumbery +pluralities plurality +plutocracies plutocracy +pneumectomies pneumectomy +pneumobacilli pneumobacillus +pneumococci pneumococcus +pneumonectomies pneumectomy pneumonectomy +pochards pochard +pocketfuls pocketful +pocketknives pocketknife +podia podium +podiums podium +poesies poesy +pogeys pogey +pogies pogy +pointsmen pointsman +pokeberries pokeberry +pokeys pokey +pokies poky +polarities polarity +polecats polecat +poleis polis +policemen policeman +policewomen policewoman +policies policy +politicos politico +polities polity +polkas polka +pollacks pollack +pollices pollex +polliniia pollinium +pollocks pollock +polonies polony +polyanthuses polyanthus +polychasia polychasium +polyhedra polyhedron +polyhedrons polyhedron +polyparies polypary +polyparparia polyparium +polyphonies polyphony +polypi polypus +polypodies polypody +polys poly +polyzoariia polyzoarium +pomelos pomelo +pommies pommy +pompanos pompano +pomposities pomposity +ponchos poncho +pondos pondo +ponies pony +pontes pons +pontifices pontifex +poppies poppy +porgies porgy +porosities porosity +porphyries porphyry +porpoises porpoise +portamenti portamento +portfolios portfolio +porticoes portico +porticos portico +portmanteaus portmanteau +portmanteaux portmanteau +pos po +posadas posada +posies posy +possemen posseman +possibilities possibility +postliminies postliminy +postliminiia postliminium +postmen postman +postwomen postmen postwoman +potatoes potato +potbelllies potbelly +potboys potboy +potences potence +potencies potency +potentialities potentiality +pothecarcaries pothecary +potiches potiche +potmen potman +potpourris potpourri +potteries pottery +potties potty +pottos potto +poulterers poulterer +poultrymen poultryman +pouts pout +praenomens praenomen +praenomina praenomen +praxes praxis +praxises praxis +prebendaries prebendary +preceptories preceptory +preciosities preciosity +predelle predella +pregnancies pregnancy +prehistories prehistory +prelacies prelacy +preliminaries preliminary +premaxillae premaxilla +prenonomens prenomen +prenonomina prenomen +presbyteries presbytery +prese presa +presidencies presidency +presidios presidio +pressmen pressman +prestissimos prestissimo +prestos presto +pretties pretty +pries pry +primacies primacy +primaries primary +primi primo +primigravidae primigravida +primigravidas primigravida +primiparae primipara +primiparas primipara +primordia primordium +primos primo +principalities principality +principiia principium +printeries printery +priories priory +priorities priority +privacies privacy +privies privy +privities privity +probabilities probability +proboscides proboscis +proboscises proboscis +proces-verbaux proces-verbal +proclivities proclivity +prodigies prodigy +profanities profanity +progenies progeny +proglotglottides proglottid proglottis +prognoses prognosis +prolegomena prolegomenon +prolepses prolepsis +proletarians proletarian +proletaries proletary +promiscuities promiscuity +promontories promontory +promycelilia promycelium +pronephra pronephros +pronephroi pronephros +pronuclei pronucleus +pronunciamentos pronunciamento +propensities propensity +properties property +prophecies prophecy +propmen propman +propositi propositus +proprietartaries proprietary +proprieties propriety +proptoses proptosis +propyla propylon +propylaea propylaeum +propylons propylon +pros pro +proscenia proscenium +prosceniums proscenium +prosencephala prosencephalon +prospectuses prospectus +prosperities prosperity +prostatectomies prostatectomy +prostheses prosthesis +prostomia prostomium +protases protasis +protectories protectory +prothalamimia prothalamion prothalamium +prothalli prothallus +prothallia prothallium +prothonotaries prothonotary protonotary +prothoraces prothorax +prothoraxes prothorax +protonemata protonema +protozoa protozoan +protozoans protozoan +proventricutriculi proventriculus +provisoes proviso +provisos proviso +provos provo +proxies proxy +prytanea prytaneum +psalmodies psalmody +psalteria psalterium +psalteries psaltery +pseudomutualities pseudomutuality +pseudopodia pseudopodium +psychohistories psychohistory +psychologies psychology +psychoneuroses psychoneurosis +psychos psycho +psychoses psychosis +ptarmigans ptarmigan +pterygia pterygium +pterylae pteryla +ptochocracies ptochocracy +ptoses ptosis +pubes pubis +pudenda pudendum +pueblos pueblo +pufferies puffery +puli pul +pullmans pullman +puls pul +pulvilli pulvillus +pulvini pulvinus +punchinelloes punchinello +punchinellos punchinello +punctilios punctilio +punties punty +pupae pupa +pupariia puparium +pupas pupa +puppies puppy +pussies pussy +pussyfoots pussyfoot +putamina putamen +puttees puttee +putti putto +putties putty +pycnidiia pycnidium +pygidiia pygidium +pygmies pigmy pygmy +pylorectomies pylorectomy +pylori pylorus +pyrographies pyrography +pyxides pyxis +pyxidiia pyxidium +qaddishim qaddish +qadis qadi +quackeries quackery +quadrennia quadrennium +quadrenniums quadrennium +quadricepses quadriceps +quadrigae quadriga +quadrigas quadriga +quaggas quagga +quails quail +qualia quale +qualities quality +quandaries quandary +quangos quango +quanta quantum +quantities quantity +quarries quarry +quarrymen quarryman +quarterlies quarterly +quarterstaves quarterstaff +quartos quarto +quatercentenaries quatercentenary +quaternaries quaternary +quebrachos quebracho +queries query +quetzals quetzal +quezales quezal +quichuas quichua +quiddities quiddity +quietuses quietus +quinaries quinary +quincentenaries quincentenary +quinquecentenaries quinquecentenary +quinquennia quinquennium +quintillions quintillion +quists quist +quizzes quiz +rabatos rabato rebato +rabbis rabbi +rabbitfishes rabbitfish +rabbitries rabbitry +rabbits rabbit +raccoons raccoon +rachides rhachis +rachises rachis +racoons racoon +radiances radiance +radiancies radiancy +radices radix +radii radius +radios radio +radiuses radius +radixes radix +radulae radula +railleries raillery +railwaymen railwayman +rallies rally +ramenta ramentum +rami ramus +rancheros ranchero +ranchos rancho +randies randy +ranunculi ranunculus +ranunculuses ranunculus +raphae raphe +raphides raphide raphis +rarities rarity +rascalities rascality +raspaies raspatory +raspberries raspberry +ratfishes ratfish +rationalities rationality +ratios ratio +razees razee +razzias razzia +re-entries re-entry +reactionaries reactionary +reales real +realities reality +reals real +rearmice rearmouse +rebatos rebato +rebozos rebozo +rebuses rebus +recoveries recovery +recta rectum +recti rectus +rectories rectory +rectos recto +rectrices rectrix +rectums rectum +redfishes redfish +rediae redia +redundancies redundancy +reeboks reebok +reedbucks reedbuck +refectories refectory +referenda referendum +referendums referendum +refineries refinery +reformatories reformatory +refractories refractory +refugia refugium +regalities regality +regencies regency +registries registry +reguli regulus +reguluses regulus +reichsmarks reichsmark +reindeers reindeer +reis real +relata relatum +reliquaries reliquary +reluctivities reluctivity +remaindermen remainderman +remedies remedy +remiges remex +renegados renegado +repairmen repairman +repertories repertory +replevies replevy +replies reply +repositories repository +reproducibilities reproducibility +repros repro +reremice rearmouse reremouse +reseaus reseau +reseaux reseau +residencies residency +residentiaries residentiary +residuua residuum +responsa responsum +responsibilities responsibility +responsories responsory +retia rete +retiararii retiarius +reticula reticulum +retinacula retinaculum +retinae retina +retinas retina +retros retro +revelries revelry +reverberatories reverberatory +reveries reverie revery +reversos reverso +revolutionaries revolutionary +rhabdomyomas rhabdomyoma +rhabdomyomata rhabdomyoma +rhachides rhachis +rhachises rachis rhachis +rhapsodies rhapsody +rhatanies rhatany +rheboks rhebok +rhinencephala rhinencephalon +rhinencephalons rhinencephalon +rhinoceroses rhinoceros +rhinos rhino +rhizobia rhizobium +rhizotomies rhizotomy +rhombi rhombus +rhombuses rhombus +rhonchi rhonchus +rhos rho +rhumbas rhumba +rhyta rhyton +rialtos rialto +ribbonfishes ribbonfish +ricercacari ricercare +ricercari ricercare +ricercars ricercar +rickettsiae rickettsia +rickettsias rickettsia +rictuses rictus +ridottos ridotto +riflemen rifleman +rilievi rilievo +ringhalses ringhals +risibilities risibility +rivalries rivalry +roaches roach +robalos robalo +robberies robbery +robes-de-chambre robe-de-chambre +rockeries rockery +rockfishes rockfish +rocklings rockling +rodeos rodeo +roebucks roebuck +roes roe +rogueries roguery +roma rom +romanies romany rommany +romans-fleuves roman-fleuve +romeos romeo +rondeaux rondeau +rondos rondo +roneos roneo +roofs roof +rookeries rookery +roomfuls roomful +rosaries rosary +rosarsaria rosarium +rosarsariums rosarium +rosefishes rosefish +rosemaries rosemary +roseries rosery +rostella rostellum +rostra rostrum +rostrums rostrum +rotaries rotary +rotls rotl +rouleaus rouleau +rouleaux rouleau +roundsmen roundsman +rowdies rowdy +royalties royalty +rubatos rubato +rubbies rubby +rubies ruby +ruckuses ruckus +rugae ruga +rumens rumen +rumina rumen +rummies rummy +rumpuses rumpus +runners-up runner-up +rupiahs rupiah +russes russ +russkies russky +russkis russki +sables sable +sacra sacrum +sacrarcraria sacrarium +sacristies sacristy +saddleries saddlery +safaris safari +safeties safety +saguaros saguaro sahuaro +sahaptans sahaptan +sahaptians sahaptian +sahaptins sahaptin +sailfishes sailfish +salaries salary +salesmen salesman +salespeople salesperson +sallies sally +salmis salmi +salmonberries salmonberry +salmonellae salmonella +salmons salmon +salpae salpa +salpas salpa +salpingectomies salpingectomy +salpinges salpinx +salsifies salsify +saltarelli saltarello +saltarellos saltarello +saltuses saltus +salvoes salvo +salvos salvo +sambars sambar +sambas samba +sambos sambo +samburs sambur +sammies sammy +samoyeds samoyed +sanatoriums sanatorium +sanbenitos sanbenito +sancta sanctum +sanctities sanctity +sanctuaries sanctuary +sanctums sanctum +sandflies sandfly +sandhis sandhi +sandmen sandman +sanitaria sanitarium +sanitariums sanitarium +saphenae saphena +sarcophagi sarcophagus +sarcophaguses sarcophagus +sardines sardine +sargassos sargasso +saris sari +sartorii sartorius +sassabies sassaby +sassasanidae sassanid +sassasanids sassanid +satrapies satrapy +saturnalias saturnalia +sauries saury +savageries savagery +savories savory +savouries savory savoury +sawboneses sawbones +sawfishes sawfish +sawflies sawfly +scads scad +scalades scalade +scalalados scalado +scaldfishes scaldfish +scaleni scalenus +scammonies scammony +scapulae scapula +scapulas scapula +scarabaei scarabaeus +scarabaeuses scarabaeus +scarcities scarcity +scarfs scarf +scarves scarf +scenarios scenario +sceneries scenery +schatchens schatchen +schatchonim schatchen shadchan +schemata schema +scherzandi scherzando +scherzandos scherzando +scherzi scherzo +scherzos scherzo +schizos schizo +schmoes schmo +scholia scholium +schoolmen schoolman +schuln schul +schutzstaffeln schutzstaffel +sciamachies sciamachy +sciomachies sciomachy +scirrhi scirrhus +scirrhuses scirrhus +scleromata scleroma +scleroses sclerosis +sclerotia sclerotium +sclerotomies sclerotomy +scoleces scolex +scolices scolex +scopulae scopula +scopulas scopula +scoriae scoria +scotchmen scotchman +scoters scoter +scotomas scotoma +scotomata scotoma +scotsmen scotsman +scotties scottie scotty +scriptoria scriptorium +scriptoriums scriptorium +scrota scrotum +scrotums scrotum +scrutinies scrutiny +scudi scudo +sculleries scullery +sculpins sculpin +scurries scurry +scuta scutum +scutella scutellum +scyphi scyphus +scyphistomae scyphistoma +scyphistomas scyphistoma +seamen seaman +seccos secco +secondaries secondary +secondi secondo +secrecies secrecy +secretaries secretary +secretaries-general secretary-general +sectaries sectary +secularities secularity +securities security +segni segno +seigneuries seigneury +seigniories seigniory +selectmen selectman +seleucidae seleucid +seleucids seleucid +selves self +seminaries seminary +seminoles seminole +semipros semipro +senecas seneca +seniorities seniority +senoras senora +senores senor +senoritas senorita +senors senor +sensibilities sensibility +sensilla sensillum +sensitivities sensitivity +sensualities sensuality +sentimentalities sentimentality +sentries sentry +senussis senusi senussi +separatrices separatrix +sephardim sephardi +septa septum +septariia septarium +septenaries septenary +septennia septennium +septenniums septennium +septillions septillion +sequelae sequela +sequestra sequestrum +sera serum +seraglios seraglio +serails serail +seraphim seraph +seraphs seraph +serenities serenity +serums serum +servals serval +serviceberries serviceberry +servicemen serviceman +servos servo +sestertia sestertium +setae seta +seventies seventy +severalties severalty +sexcentenaries sexcentenary +sextillions sextillion +sextodecimos sextodecimo +sextos sexto +sgraffiti sgraffito +shabbasim shabbas +shabbatim shabbat +shackoes shacko +shackos shacko +shadberries shadberry +shadchanim shadchan +shadchans schatchen shadchan +shads shad +shakoes shako +shakos shako +shammies shammy +shammosim shammas shammes +shamuses shamus +shandies shandy +shandygaffs shandygaff +shannies shanny +shans shan +shanteys shantey +shanties shanty +shawnees shawnee +sheatfishes sheatfish +sheaths sheath +sheaves sheaf +sheenies sheeny +sheepsheads sheepshead +shellfishes shellfish +shelties sheltie shelty +shelves shelf +sherpas sherpa +sherries sherry +shies shy +shikarees shikaree +shikaris shikari +shillyshallies shillyshally +shimmies shimmy +shindies shindy +shindigs shindig +shinleaves shinleaf +shinties shinny shinty +shipmasters shipmaster +shipmen shipman +shittahs shittah +shittim shittah +shluhs shluh +shmoes shmo +shofars shofar +shofroth shofar shophar +shojis shoji +shonas shona +shophars shophar +shophroth shophar +shorties shortie shorty +shoshones shoshone +shoshonis shoshoni +showmen showman +shrewmice shrewmouse +shrievalties shrievalty +shrubberies shrubbery +shufties shufty +shuggies shuggy +shuln shul +siddurim siddur +siddurs siddur +sidemen sideman +sidesmen sidesman +sigloi siglos +signalmen signalman +signatories signatory +signoras signora +signore signora +signori signior signore +signories signory +signorinas signorina +signorine signorina +signors signor +siliquae siliqua +siliquas siliqua +siliques silique +silos silo +silvae silva +silverfishes silverfish +similarities similarity +simplicities simplicity +simulacra simulacrum +sincipita sinciput +sinciputs sinciput +sindhis sindhi +sinfonie sinfonia +singularities singularity +sinhaleses sinhalese +sinuationtions sinuation +sinuosities sinuosity +sinuses sinus +siroccos sirocco +sissies sissy +sisters-in-law sister-in-law +sistra sistrum +situlae situla +sixmos sixmo +sixteenmos sixteenmo +sixties sixty +sixty-fourmos sixty-fourmo +skates skate +skellies skelly +skerries skerry +skiamachies skiamachy +skies sky +skinfuls skinful +skipjacks skipjack +skis ski +skivvies skivvy +skollies skollie skolly +skunks skunk +slaughtermen slaughterman +slavocracies slavocracy +slurries slurry +smalti smalto +smaltos smalto +smart_alecks smart_aleck +smarties smarty +smelts smelt +smitheries smithery +smithies smithy +smoothies smoothie smoothy +snaggleteeth snaggletooth +snailfishes snailfish +snappers snapper +snipefishes snipefish +snipes snipe +snooks snook +snotties snotty +snowberries snowberry +snowmen snowman +snuggeries snuggery +so-and-sos so-and-so +soapberries soapberry +socialities sociality +societies society +socmen socman sokeman +sodalities sodality +soddies soddy +softies softie softy +sokemen sokeman +sola solum +solaria solarium +solariums solarium +solatia solatium +soldi soldo +soldieries soldiery +solemnities solemnity +soles sol sole +solfeges solfege +solfegfeggi solfeggio +solfegfeggios solfeggio +solfeggi solfeggio +solfeggios solfeggio +soli solo +solidagos solidago +solidarities solidarity +solidi solidus +soliloquies soliloquy +solitaries solitary +solos solo +sols sol +solubilities solubility +solums solum +somalis somali +somas soma +somata soma +sombreros sombrero +somebodies somebody +somniloquies somniloquy +sondages sondage +songhais songhai +sonnies sonny +sons-in-law son-in-law +sophies sophi sophy +sophistries sophistry +soprani soprano +sopraninos sopranino +sopranos soprano +sorceries sorcery +sordini sordino +sorghos sorgho +sorgos sorgo +sori sorus +sororities sorority +soroses sorosis +sothos sotho +southeasterlies southeasterly +southerlies southerly +southwesterlies southwesterly +sovereignties sovereignty +sovkhozy sovkhoz +spacemen spaceman +spacewomen spacewoman +spadefishes spadefish +spadices spadix +spahees spahee +spahis spahi +sparlings sparling +speakeasies speakeasy +spearfishes spearfish +spearmen spearman +specialities speciality specialty +specialties specialty +speciosities speciosity +spectra spectrum +specula speculum +speculums speculum +speedos speedo +spermaries spermary +spermatia spermatium +spermatogonia spermatogonium +spermatozoa spermatozoon +spermogonia spermogonium +sphinges sphinx +sphinxes sphinx +spicae spica +spicas spica +spiceberries spiceberry +spiceries spicery +spicula spiculum +spidermen spiderman +spies spy +spirilla spirillum +spiritualities spirituality +spiritualties spiritualty +splayfeet splayfoot +splenectomies splenectomy +splenii splenius +spoilsmen spoilsman +spokesmen spokesman +spontaneities spontaneity +spoonfuls spoonful +spoonies spooney spoony +sporangia sporangium +sporogonia sporogonium +sports_arenas sports_arena +sportsmen sportsman +sportswomen sportswoman +springboks springbok +springbucks springbuck +springhase springhaas +spuggies spuggy +spugs spug +spumoni spumone +spurries spurrey spurry +sputa sputum +squabs squab +squaccos squacco +squamae squama +squashes squash +squeteagues squeteague +squids squid +squillae squilla +squillas squilla +squirearchies squirarchy squirearchy +squirrelfishes squirrelfish +squirrels squirrel +squizzes squiz +stabilities stability +stableboys stableboy +stablemen stableman +stadia stadium +stadiums stadium +staffmen staffman +staffs staff +stamens stamen +stamina stamen +staminodes staminode +staminonodia staminodium +stannaries stannary +stapedes stapes +staphylococci staphylococcus +starfishes starfish +startsy starets +statesmen statesman +statuaries statuary +statuses status +steadies steady +steelheads steelhead +steenboks steenbok +steersmen steersman +steinboks steinbok +stelae stele +steles stele +stenos steno +stenoses stenosis +stepchildren stepchild +stereos stereo +sterna sternum +sternums sternum +sternutatories sternutatory +stickfuls stickful +sties sty +stigmas stigma +stigmata stigma +stilettos stiletto +stimuli stimulus +stingies stingy +stipendiaries stipendiary +stipites stipes +stirpes stirps +stoae stoa +stoas stoa +stockfishes stockfish +stockmen stockman +stogies stogey stogy +stomata stoma +stomodaea stomodaeum +stomodea stomodeum +stonefishes stonefish +stoneflies stonefly +storeys storey +stories story +stotinki stotinka +stotkini stotinka +strabotomies strabotomy +strappadoes strappado +strata stratum +strategies strategy +strati stratus +stratocracies stratocracy +stratocumuli stratocumulus +stratums stratum +strawberries strawberry +streptococci streptococcus +stretti stretto +strettos stretto +striae stria +strobiles strobile +strobili strobilus +strobiluses strobilus +stromata stroma +strongmen strongman +strumae struma +stuccoes stucco +stuccos stucco +studies study +studios studio +stupidities stupidity +styes stye +styli stylus +stylopes stylops +stylopodia stylopodium +styluses stylus +stymies stymie stymy +subassemblies subassembly +subcortices subcortex +subdelirliria subdelirium +subdelirliriums subdelirium +subfamilies subfamily +subgenera subgenus +subgenuses subgenus +subindexes subindex +subindices subindex +submucosae submucosa +subordinaries subordinary +subphyla subphylum +subsidiaries subsidiary +subsidies subsidy +substrasta substratum +subtleties subtlety +subtreasuries subtreasury +succedanea succedaneum +succories succory +succubi succubus +suckerfishes suckerfish +suckfishes suckfish +sudardaria sudarium +sudatoria sudatorium +sudatories sudatory +sudatotoria sudatorium +sufficiencies sufficiency +sufis sufi +sulci sulcus +sulkies sulky +sullies sully +summae summa +summaries summary +summonses summons +sundries sundry +sunfishes sunfish +supercargoes supercargo +superegos superego +superfamilies superfamily +superheroes superhero +superintendencies superintendency +supermen superman +supernovae supernova +supernovas supernova +supernumeraries supernumerary +superstrata superstratum +superstratums superstratum +supplementaries supplementary +supplies supply +suppositories suppository +supremos supremo +sureties surety +surgeoncies surgeoncy +surgeonfishes surgeonfish +surgeries surgery +surpluses surplus +susceptibilities susceptibility +suspensories suspensory +sussos susso +susus susu +suzerainties suzerainty +swagmen swagman +swahilis swahili +swamies swami +swamis swami +swanneries swannery +swathes swathe +swaths swath +swazis swazi +sweetiewives sweetiewife +sweetmen sweetman +swellfishes swellfish +switchmen switchman +swordfishes swordfish +swordsmen swordsman +syconia syconium +syllabaries syllabary +syllabi syllabus +syllabuses syllabus +syllepses syllepsis +sylvas sylva +symmetries symmetry +sympathectomies sympathectomy +sympathies sympathy +symphonies symphony +symphyses symphysis +sympodia sympodium +symposia symposium +symposiums symposium +synapses synapsis +synarchies synarchy +synarthroses synarthrosis +synchros synchro +synclinoria synclinorium +syncytia syncytium +syndesmoses syndesmosis +synergies synergy +synonymies synonymy +synopses synopsis +syntagmata syntagma +syntagms syntagm +syntagtagmata syntagma +syntheses synthesis +syphilomas syphiloma +syphilomata syphiloma +syringes syrinx +syrinxes syrinx +syssarcoses syssarcosis +syzygies syzygy +t-men t-man +tabbies tabby +tableaus tableau +tableaux tableau +taboos taboo +tabus tabu +tacos taco +taeniae taenia tenia +taffies taffy +tagalogs tagalog +tailles taille +tainos taino +talers taler +tali talus +talismans talisman +tallaisim tallith +tallies tally +tallithes tallith +tallitoth tallith +tally-hos tally-ho +tallymen tallyman +taluses talus +tamarindos tamarindo +tamarinds tamarind +tamils tamil +tamises tamis +tammies tammy +tangelos tangelo +tangleberries tangleberry +tangos tango +tankas tanka +tanneries tannery +tansies tansy +tantivies tantivy +tapestries tapestry +tapeta tapetum +tapirs tapir +tarantulae tarantula +tarantulas tarantula +taros taro +tarpons tarpon +tarries tarry +tarsi tarsus +tarsometatarsi tarsometatarsus +tattoos tattoo +tautologies tautology +taxa taxon +taxies taxi +taxis taxi +teaberries teaberry +teals teal +technicalities technicality +technocracies technocracy +technologies technology +tectrices tectrix +teeth tooth +tegmina tegmen +telae tela +telamones telamon +telamons telamon +telangiectases telangiectasia telangiectasis +telia telium +tellies telly +telugus telugu +temnes temne +tempi tempo +temporalities temporality +tempos tempo +tenacula tenaculum +tenancies tenancy +tendencies tendency +tenderfeet tenderfoot +tenderfoots tenderfoot +teniae tenia +tennos tenno +tenorrhaphies tenorrhaphy +tenotomies tenotomy +tenues tenuis +teocallis teocalli +teraphim teraph +tercentenaries tercentenary +tercentennials tercentennial +teredines teredo +teredos teredo +terga tergum +termini terminus +terminologies terminology +terminuses terminus +ternaries ternary +terrarraria terrarium +terrarrariums terrarium +terries terry +territories territory +tertiaries tertiary +terzetti terzetto +terzettos terzetto +tesserae tessera +testae testa +testes testis +testimonies testimony +testudines testudo +tete-a-tetes tete-a-tete +tetrahedra tetrahedron +tetrahedrons tetrahedron +tetralogies tetralogy +tetrapodies tetrapody +tetras tetra +textuaries textuary +thais thai +thalamencephala thalamencephalon +thalamencephalons thalamencephalon +thalami thalamus +thalli thallus +thalluses thallus +thearchies thearchy +theatres-in-the-round theatre-in-the-round +thecae theca +theocracies theocracy +theodicies theodicy +theogonies theogony +theologies theology +theomachies theomachy +theophagies theophagy +theophanies theophany +theorbos theorbo +theories theory +therapies therapy +therses thyrse +thesauri thesaurus +thesauruses thesaurus +theses thesis +theurgies theurgy +thickleaves thickleaf +thieves thief +thirties thirty +thirty-twomos thirty-twomo +tholoi tholos +thoraces thorax +thoracoplasties thoracoplasty +thoracotomies thoracotomy +thoraxes thorax +thous thou +threadfins threadfin +three-sixties three-sixty +threnodes threnode +threnodies threnody +thrombi thrombus +thymi thymus +thymuses thymus +thyroidectomies thyroidectomy +thyrsi thyrsus +tibiae tibia +tibias tibia +ticals tical +tidies tidy +tiffanies tiffany +tilburies tilbury +tilefishes tilefish +timocracies timocracy +tintinnabula tintinnabulum +tipis tipi +tirewomen tirewoman +tiros tiro +tis ti +titis titi +titmen titman +titmice titmouse +titularies titulary +titulars titular +tivs tiv +tizzies tizzy +tlingits tlingit +to-dos to-do +toadfishes toadfish +toadies toady +tobaccoes tobacco +tobaccos tobacco +toddies toddy +todies tody +toffees toffee +toffies toffy +toiletries toiletry +tollies tollie tolly +toltecs toltec +tomatoes tomato +tombolos tombolo +tomenta tomentum +tomfooleries tomfoolery +tommies tommy +tonalities tonality +tondi tondo +tongas tonga +tonneaus tonneau +tonneaux tonneau +tonsillectomies tonsillectomy +tonsillotomies tonsillotomy +tootses toots +tootsies tootsie tootsy +tootsy-wootsies tootsy-wootsy +topees topee +tophi tophus +topiaries topiary +topis topi +topminnows topminnow +topographies topography +topoi topos +toreros torero +tori torus +tories tory +tornadoes tornado +tornados tornado +torpedoes torpedo +torsi torso +torsks torsk +torsos torso +tortuosities tortuosity +totalities totality +touracos touraco turaco +townsmen townsman +trabeculae trabecula +traceries tracery +tracheae trachea +tracheostomies tracheostomy +tracheotomies tracheotomy +trackmen trackman +tradesmen tradesman +traditores traditor +traditors traditor +tragedies tragedy +tragi tragus +tragicomedies tragicomedy +trajectories trajectory +transparencies transparency +trapezia trapezium +trapeziums trapezium +trapeziuses trapezius +trapezohedra trapezohedron +trapezohedrons trapezohedron +trapuntos trapunto +traumas trauma +traumata trauma +travesties travesty +treacheries treachery +treasuries treasury +treaties treaty +tremolos tremolo +trenchermen trencherman +treponemas treponema +treponemata treponema +treponemes treponeme +triarchies triarchy +tribesmen tribesman +tributaries tributary +tricepses triceps +trichinae trichina +trichotomies trichotomy +trickeries trickery +tricliniia triclinium +triennia triennium +trienniums triennium +trierarchies trierarchy +tries try +triforia triforium +triggerfishes triggerfish +trihedra trihedron +trihedrons trihedron +trilbies trilby +trilogies trilogy +trinities trinity +trios trio +tripletails tripletail +triplicities triplicity +tripodies tripody +triskeles triskele +triskelia triskelion +trisoctahedra trisoctahedron +trisoctahedrons trisoctahedron +triumviri triumvir +triumvirs triumvir +trivialities triviality +triviia trivium +triweeklies triweekly +trochleae trochlea +tropaeola tropaeolum +tropaeolums tropaeolum +trophies trophy +tropologies tropology +trous-de-loup trou-de-loup +trousseaus trousseau +trousseaux trousseau +trouts trout +trumperies trumpery +trunkfishes trunkfish +trusties trusty +trymata tryma +tsongas tsonga +tswanas tswana +tuaregs tuareg +tubae tuba +tubas tuba +tuberosities tuberosity +tubifexes tubifex +tummies tummy +tunas tuna +tunguses tungus +tunnies tunny +tupamaros tupamaro +tupelos tupelo +tupis tupi +turacos turaco +turbaries turbary +turbots turbot +turcos turco +turfmen turfman +turfs turf +turkeys turkey +turkmen turkman +turkomans turkoman +turneries turnery +turves turf +tuscaroras tuscarora +tutelaries tutelary +tutelars tutelar +tutsis tutsi +tuxedos tuxedo +tweenies tweeny +twelvemos twelvemo +twenties twenty +twinberries twinberry +twis twi +two-plies two-ply +tympana tympanum +tympanies tympany +tympanums tympanum +typos typo +tyrannies tyranny +tyros tiro tyro +ubermenschen ubermensch +udos udo +uglies ugli +uglis ugli +uigurs uighur +ulnae ulna +ulnas ulna +ulstermen ulsterman +ultimata ultimatum +ultimatums ultimatum +umbilici umbilicus +umbones umbo +umbos umbo +umbrae umbra +umbras umbra +umpies umpy +uncertainties uncertainty +unci uncus +uncicini uncinus +uncoes unco +unconformities unconformity +uncos unco +underbellies underbelly +underbodies underbody +undersecretaries undersecretary +understudies understudy +ungues unguis +ungulae ungula +uniformities uniformity +unities unity +universalities universality +universities university +upholsteries upholstery +uraeuses uraeus +uranalyses uranalysis +urbanities urbanity +uredidia uredium +uredines uredo +uredinia uredinium +uredinidinia uredinium +uredososori uredosorus +urethrae urethra +urethras urethra +urinalyses urinalysis +urinaries urinary +uruses urus +usuries usury +uteri uterus +utes ute +utilities utility +utricles utricle +utriculi utriculus +uvulae uvula +uvulas uvula +uzbeks uzbek +vacancies vacancy +vacua vacuum +vacuities vacuity +vacuums vacuum +vagaries vagary +vagi vagus vagus +vaginae vagina +vaginas vagina +vagotomies vagotomy +vagrancies vagrancy +valedictories valedictory +valencies valence valency +valetudinarians valetudinarian +valetudinaries valetudinary +valleculae vallecula +vanities vanity +vaporetti vaporetto +vaporettos vaporetto +varices varix +varicosities varicosity +varicotomies varicotomy +varieties variety +varsities varsity +vasa vas +vascula vasculum +vasculums vasculum +vasectomies vasectomy +veddas vedda +veeries veery +vela velum +velalamina velamen +velarlaria velarium +velleities velleity +velocities velocity +venae vena +vendaces vendace +vendas venda +veniremen venireman +ventriculi ventriculus +veracities veracity +verities verity +vermes vermis +verrucae verruca +verrucas verruca +versos verso +vertebrae vertebra +vertebras vertebra +vertexes vertex +vertices vertex +vertigines vertigo +vertigoes vertigo +vesicae vesica +vesicants vesicant +vesicatories vesicatory +vespiaries vespiary +vestries vestry +vestrymen vestryman +vetoes veto +vexilla vexillum +viatica viaticum +viaticums viaticum +viatores viator +vibracula vibraculum +vibratos vibrato +vibrios vibrio +vibrissae vibrissa +vice-chairman vice-chairman +viceroyalties viceroyalty +vicinities vicinity +victories victory +videos video +villainies villainy +villanellas villanella +villi villus +villosities villosity +vimina vimen +vincula vinculum +vineries vinery +vinos vino +violoncellos violoncello +viragoes virago +viragos virago +vireos vireo +vires vis +virtuosi virtuoso +virtuosos virtuoso +viruses virus +visas visa +visayans visayan +viscosities viscosity +visionaries visionary +vitae vita +vitalities vitality +vitelli vitellus +vitelluses vitellus +vittae vitta +vivacities vivacity +vivariia vivarium +vivariums vivarium +vocabularies vocabulary +voces vox +voguls vogul +volcanoes volcano +volcanos volcano +volkslieder volkslied +volte volta +voluntaries voluntary +voluptuaries voluptuary +volvae volva +volvas volva +volvuluses volvulus +vomitories vomitory +vomituses vomitus +voodoos voodoo +vortexes vortex +vorticellae vorticella +vortices vortex +votaries votary +votyaks votyak +vulgarities vulgarity +vulneraries vulnerary +vulvae vulva +vulvas vulva +waddies waddy +wadies wadi wady +wagons-lits wagon-lit +wahhabis wahabi wahhabi +wahoos wahoo +walkie-talkies walkie-talkie walky-talky +wallabies wallaby +wallaroos wallaroo +walleyes walleye +wallies wally +walruses walrus +wanderjahre wanderjahr +wanderoos wanderoo +wapitis wapiti +ward-heelers ward-heeler +warehousemen warehouseman +warranties warranty +washermen washman +washerwomen washerwoman +washwomen washwoman +watchmen watchman +watermen waterman +watusis watusi +waxberries waxberry +weakfishes weakfish +weasels weasel +weathermen weatherman +weeklies weekly +weepies weepy +weirdies weirdie +weirdos weirdo +welshmen welshman +welshwomen welshmen welshwoman +werewolves werewolf +westerlies westerly +whales whale +wharfs wharf +wharves wharf +wheelies wheelie +wherries wherry +whimseys whimsey +whimsies whimsy +whinnies whinny +whippers-in whipper-in +whiskies whisky +whitefishes whitefish +whiteflies whitefly +whities whity +whortleberries whortleberry +whys why +wicopies wicopy +wildcats wildcat +wildebeests wildebeest +wineries winery +winnebagos winnebago +winos wino +wiremen wireman +wires wire +witcheries witchery +withies withy +wives wife +wobblies wobbly +wolffishes wolffish +wollies wolly +wolofs wolof +wolves wolf +women woman +woodlice woodlouse +woodmen woodman +woodsmen woodsman +woollies woollie woolly +workmen workman +worries worry +worthies worthy +wos wo +wreaths wreath +wreckfishes wreckfish +wunderkinder wunderkind +wunderkinds wunderkind +xhosas xhosa +xiphisterna xiphisternum +xis xi +yabbies yabbie yabby +yachtsmen yachtsman +yachtswomen yachtsmen yachtswoman +yahoos yahoo +yakuts yakut +yearlies yearly +yellow-bellies yellow-belly +yellowtails yellowtail +yeomen yeoman +yeshivahs yeshiva +yeshivoth yeshiva +yo-yos yo-yo +yobbos yobbo +yobs yob +yogin yogi +yogis yogi +yokes yoke +yorubas yoruba +youngberries youngberry +yourselves yourself +youths youth +zamindaris zamindari zemindari +zanies zany +zapateados zapateado +zapotecs zapotec +zebras zebra +zecchini zecchino +zemstvos zemstvo +zeroes zero +zeros zero +zhos zho +zillions zillion +zlotys zloty +zoa zoon +zoaeae zoaea zoea +zoaeas zoaea +zoeae zoea +zoeas zoaea +zombies zombie +zombis zombi +zoologies zoology +zoonoses zoonosis +zoons zoon +zoos zoo +zoosporangia zoosporangium +zos zo +zucchettos zucchetto +zucchinis zucchini +zulus zulu diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/verb.exc b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/verb.exc new file mode 100644 index 0000000000000000000000000000000000000000..ba300dfe23ac7f2361d22eb10f3f15213981aaca --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6-Exceptions/verb.exc @@ -0,0 +1,5281 @@ +abets abet +abetted abet +abetting abet +abhorred abhor +abhorring abhor +abhors abhor +abided abide +abides abide +abiding abide +abode abide +abought aby +about-shipped about-ship +about-shipping about-ship +about-ships about-ship +abuts abut +abutted abut +abutting abut +abye aby +abyes aby +abying aby +abys aby +accompanied accompany +accompanies accompany +accompanying accompany +accrued accrue +accrues accrue +accruing accrue +acetified acetify +acetifies acetify +acetifying acetify +acidified acidify +acidifies acidify +acidifying acidify +acquits acquit +acquitted acquit +acquitting acquit +ad-libbed ad-lib +ad-libbing ad-lib +ad-libs ad-lib +addressed address +addresses address +addressing address +addrest address +admits admit +admitted admit +admitting admit +aerified aerify +aerifies aerify +aerifying aerify +aged age +ageing age +ages age +aging age +agreed agree +agreeing agree +agrees agree +air-dried air-dry +air-dries air-dry +air-drying air-dry +airdropped airdrop +airdropping airdrop +airdrops airdrop +alkalified alkalify +alkalifies alkalify +alkalifying alkalify +allied ally +allies ally +allots allot +allotted allot +allotting allot +allowed_for allow_for +allowing_for allow_for +allows_for allow_for +allying ally +am be +ammonified ammonify +ammonifies ammonify +ammonifying ammonify +amnestied amnesty +amnesties amnesty +amnestying amnesty +amplified amplify +amplifies amplify +amplifying amplify +anglicised anglicise +anglicises anglicise +anglicising anglicise +anglicized anglicize +anglicizes anglicize +anglicizing anglicize +anglified anglify +anglifies anglify +anglifying anglify +annulled annul +annulling annul +annuls annul +anted ante +anteed ante +anteing ante +antes ante +appalled appal appall +appalling appal appall +appalls appall +appals appal +applied apply +applies apply +appliqued applique +appliqueing applique +appliques applique +applying apply +arced arc +arcing arc +arcked arc +arcking arc +arcs arc +are be +argued argue +argues argue +argufied argufy +argufies argufy +argufying argufy +arguing argue +arisen arise +arises arise +arising arise +arose arise +ate eat +atrophied atrophy +atrophies atrophy +atrophying atrophy +averred aver +averring aver +avers aver +awaked awake +awakes awake +awaking awake +awoke awake +awoken awake +baaed baa +baaing baa +baas baa +babied baby +babies baby +baby-sat baby-sit +baby-sits baby-sit +baby-sitting baby-sit +babying baby +back-pedaled back-pedal +back-pedaling back-pedal +back-pedalled back-pedal +back-pedalling back-pedal +back-pedals back-pedal +backbit backbite +backbites backbite +backbiting backbite +backbitten backbite +backslid backslide +backslidden backslide +backslides backslide +backsliding backslide +bade bid +bagged bag +bagging bag +bags bag +balloted ballot +balloting ballot +ballots ballot +ballyhooed ballyhoo +ballyhooing ballyhoo +ballyhoos ballyhoo +ballyragged ballyrag +ballyragging ballyrag +ballyrags ballyrag +bandied bandy +bandies bandy +bandying bandy +banned ban +banning ban +banqueted banquet +banqueting banquet +banquets banquet +bans ban +barbecued barbecue +barbecues barbecue +barbecuing barbecue +barred bar +barreled barrel +barreling barrel +barrelled barrel +barrelling barrel +barrels barrel +barring bar +bars bar +basified basify +basifies basify +basifying basify +basseted basset +basseting basset +bassets basset +bastinadoed bastinado +bastinadoes bastinado +bastinadoing bastinado +bats bat +batted bat +batting bat +bayoneted bayonet +bayoneting bayonet +bayonets bayonet +bayonetted bayonet +bayonetting bayonet +beared bear +bearing bear +bears bear +beaten beat +beatified beatify +beatifies beatify +beatifying beatify +beating beat +beats beat +beautified beautify +beautifies beautify +beautifying beautify +became become +became_known become_known +becomes become +becomes_known become_known +becoming become +bed bed +bedded bed +bedding bed +bedeviled bedevil +bedeviling bedevil +bedevilled bedevil +bedevilling bedevil +bedevils bedevil +bedighted bedight +bedighting bedight +bedights bedight +bedimmed bedim +bedimming bedim +bedims bedim +beds bed +been be +befallen befall +befalling befall +befalls befall +befell befall +befits befit +befitted befit +befitting befit +befogged befog +befogging befog +befogs befog +began begin +begat beget +begets beget +begetting beget +begged beg +begging beg +beginning begin +begins begin +begirded begird +begirding begird +begirds begird +begirt begird +begot beget +begotten beget +begs beg +beguiled beguile +beguiles beguile +beguiling beguile +begun begin +beheld behold +beholden behold +beholding behold +beholds behold +bejeweled bejewel +bejeweling bejewel +bejewelled bejewel +bejewelling bejewel +bejewels bejewel +belayed belay +belaying belay +belays belay +belied belie +belies belie +bellied belly +bellies belly +belly-flopped belly-flop +belly-flopping belly-flop +belly-flops belly-flop +bellying belly +belying belie +benamed bename +benames bename +benaming bename +bending bend +bends bend +benefited benefit +benefiting benefit +benefitted benefit +benefitting benefit +benempt bename +bent bend +berried berry +berries berry +berrying berry +beseeched beseech +beseeches beseech +beseeching beseech +besets beset +besetting beset +besought beseech +bespeaking bespeak +bespeaks bespeak +bespoke bespeak +bespoken bespeak +bespreading bespread +bespreads bespread +besteaded bestead +besteading bestead +besteads bestead +bestirred bestir +bestirring bestir +bestirs bestir +bestrewed bestrew +bestrewing bestrew +bestrewn bestrew +bestrews bestrew +bestrid bestride +bestridden bestride +bestrides bestride +bestriding bestride +bestrode bestride +betaken betake +betakes betake +betaking betake +bethinking bethink +bethinks bethink +bethought bethink +betook betake +bets bet +betted bet +betting bet +beveled bevel +beveling bevel +bevelled bevel +bevelling bevel +bevels bevel +biased bias +biases bias +biasing bias +biassed bias +biassing bias +bidden bid +bidding bid +bids bid +binding bind +binds bind +binned bin +binning bin +bins bin +bird-dogged bird-dog +bird-dogging bird-dog +bird-dogs bird-dog +bit bite +bites bite +biting bite +bits bit +bitted bit +bitten bite +bitting bit +bivouacked bivouac +bivouacking bivouac +bivouacs bivouac +blabbed blab +blabbing blab +blabs blab +blackberried blackberry +blackberries blackberry +blackberrying blackberry +blacklegged blackleg +blacklegging blackleg +blacklegs blackleg +blats blat +blatted blat +blatting blat +bled bleed +bleeding bleed +bleeds bleed +blessed bless +blesses bless +blessing bless +blest bless +blew blow +blew_one's_nose blow_one's_nose +blipped blip +blipping blip +blips blip +blobbed blob +blobbing blob +blobs blob +bloodied bloody +bloodies bloody +bloodying bloody +blots blot +blotted blot +blotting blot +blowing blow +blowing_one's_nose blow_one's_nose +blown blow +blows blow +blows_one's_nose blow_one's_nose +blubbed blub +blubbing blub +blubs blub +blue-pencilled blue-pencil +blue-pencilling blue-pencil +blue-pencills blue-pencil +blued blue +blueing blue +blues blue +bluing blue +blurred blur +blurring blur +blurs blur +bobbed bob +bobbing bob +bobs bob +bodied body +bodies body +bodying body +bogged-down bog-down +bogged_down bog_down +bogging-down bog-down +bogging_down bog_down +bogs-down bog-down +bogs_down bog_down +booby-trapped booby-trap +booby-trapping booby-trap +booby-traps booby-trap +booed boo +boogied boogie +boogieing boogie +boogies boogie +boohooed boohoo +boohooing boohoo +boohoos boohoo +booing boo +boos boo +bootlegged bootleg +bootlegging bootleg +bootlegs bootleg +bopped bop +bopping bop +bops bop +bore bear +born bear +borne bear +bottle-fed bottle-feed +bottle-feeding bottle-feed +bottle-feeds bottle-feed +bought buy +bound bind +bragged brag +bragging brag +brags brag +breaking break +breaks break +breast-fed breast-feed +breast-feeding breast-feed +breast-feeds breast-feed +bred breed +breeding breed +breeds breed +breid brei +breiing brei +breis brei +breveted brevet +breveting brevet +brevets brevet +brevetted brevet +brevetting brevet +brimmed brim +brimming brim +brims brim +bringing bring +brings bring +broadcasted broadcast +broadcasting broadcast +broadcasts broadcast +broke break +broken break +brought bring +browbeaten browbeat +browbeating browbeat +browbeats browbeat +brutified brutify +brutifies brutify +brutifying brutify +buckramed buckram +buckraming buckram +buckrams buckram +budded bud +budding bud +buds bud +buffeted buffet +buffeting buffet +buffets buffet +bugged bug +bugging bug +bugs bug +building build +builds build +built build +bulldogging bulldog +bullied bully +bullies bully +bullshits bullshit +bullshitted bullshit +bullshitting bullshit +bullwhipped bullwhip +bullwhipping bullwhip +bullwhips bullwhip +bullying bully +bullyragged bullyrag +bullyragging bullyrag +bullyrags bullyrag +bummed bum +bumming bum +bums bum +buncoed bunco +buncoing bunco +buncos bunco +bunkoed bunko +bunkoing bunko +bunkos bunko +buried bury +buries bury +burlesked burlesk +burlesking burlesk +burlesks burlesk +burlesqued burlesque +burlesques burlesque +burlesquing burlesque +burned burn +burning burn +burns burn +burnt burn +burred bur +burring bur +burs bur +bursting burst +bursts burst +burying bury +bused bus +buses bus +busheled bushel +busheling bushel +bushelled bushel +bushelling bushel +bushels bushel +busied busy +busies busy +busing bus +bussed buss +busses buss +bussing buss +busted bust +busting bust +busts bust +busying busy +buying buy +buys buy +bypassed bypass +bypasses bypass +bypassing bypass +bypast bypass +caballed cabal +caballing cabal +cabals cabal +caddied caddie caddy +caddies caddie caddy +caddying caddie caddy +calcified calcify +calcifies calcify +calcifying calcify +calqued calque +calques calque +calquing calque +came come +canaled canal +canaling canal +canalled canal +canalling canal +canals canal +canceled cancel +canceling cancel +cancelled cancel +cancelling cancel +cancels cancel +candied candy +candies candy +candying candy +canned can +canning can +canopied canopy +canopies canopy +canopying canopy +cans can +capped cap +capping cap +caps cap +carbonadoed carbonado +carbonadoing carbonado +carbonados carbonado +carbureted carburet +carbureting carburet +carburets carburet +carburetted carburet +carburetting carburet +carillonned carillon +carillonning carillon +carillons carillon +carneyed carney +carneying carney +carneys carney +carnied carny +carnies carny +carnified carnify +carnifies carnify +carnifying carnify +carnying carny +caroled carol +caroling carol +carolled carol +carolling carol +carols carol +carried carry +carries carry +carrying carry +casefied casefy +casefies casefy +casefying casefy +casting cast +casts cast +catches catch +catching catch +catnapped catnap +catnapping catnap +catnaps catnap +cats cat +catted cat +catting cat +caught catch +caviled cavil +caviling cavil +cavilled cavil +cavilling cavil +cavils cavil +certified certify +certifies certify +certifying certify +channeled channel +channeling channel +channelled channel +channelling channel +channels channel +chapped chap +chapping chap +chaps chap +charred char +charring char +chars char +chassed chasse +chasseing chasse +chasses chasse +chats chat +chatted chat +chatting chat +chevied chivy +chevies chivy +chevying chivy +chid chide +chidden chide +chided chide +chides chide +chiding chide +chinned chin +chinning chin +chins chin +chipped chip +chipping chip +chips chip +chiseled chisel +chiseling chisel +chiselled chisel +chiselling chisel +chisels chisel +chitchats chitchat +chitchatted chitchat +chitchatting chitchat +chivied chivy +chivies chivy +chivs chiv +chivved chiv +chivvied chivy +chivvies chivy +chivving chiv +chivvying chivy +chivying chivy +chondrified chondrify +chondrifies chondrify +chondrifying chondrify +chooses choose +choosing choose +chopped chop +chopping chop +chops chop +chose choose +chosen choose +chugged chug +chugging chug +chugs chug +chummed chum +chumming chum +chums chum +citified citify +citifies citify +citifying citify +clad clothe +cladding clad +clads clad +clammed clam +clamming clam +clams clam +clapped clap +clapping clap +claps clap +clarified clarify +clarifies clarify +clarifying clarify +classified classify +classifies classify +classifying classify +cleaved cleave +cleaves cleave +cleaving cleave +cleft cleave +clemmed clem +clemming clem +clems clem +cleped clepe +clepes clepe +cleping clepe +clept clepe +clinging cling +clings cling +clipped clip +clipping clip +clips clip +clogged clog +clogging clog +clogs clog +clopped clop +clopping clop +clops clop +clothed clothe +clothes clothe +clothing clothe +clots clot +clotted clot +clotting clot +clove cleave +cloven cleave +clubbed club +clubbing club +clubs club +clued clue +clues clue +cluing clue +clung cling +co-opted co-opt +co-opted coopt +co-opting co-opt +co-opting coopt +co-opts co-opt +co-opts coopts +co-ordinate coordinate +co-ordinated coordinate +co-ordinates coordinate +co-ordinating coordinate +co-starred co-star +co-starring co-star +co-stars co-star +cockneyfied cockneyfy +cockneyfies cockneyfy +cockneyfying cockneyfy +codded cod +codding cod +codified codify +codifies codify +codifying codify +cods cod +cogged cog +cogging cog +cogs cog +coiffed coif +coiffing coif +coifs coif +collied colly +collies colly +collogued collogue +collogues collogue +colloguing collogue +collying colly +combated combat +combating combat +combats combat +combatted combat +combatting combat +commits commit +committed commit +committing commit +compelled compel +compelling compel +compels compel +complied comply +complies comply +complots complot +complotted complot +complotting complot +complying comply +concertinaed concertina +concertinaing concertina +concertinas concertina +concurred concur +concurring concur +concurs concur +confabbed confab +confabbing confab +confabs confab +conferred confer +conferring confer +confers confer +congaed conga +congaing conga +congas conga +conned con +conning con +cons con +construed construe +construes construe +construing construe +contangoed contango +contangoes contango +contangoing contango +continued continue +continues continue +continuing continue +controlled control +controlling control +controls control +cooed coo +cooeed cooee +cooeeing cooee +cooees cooee +cooeyed cooey +cooeying cooey +cooeys cooey +cooing coo +coos coo +copied copy +copies copy +copped cop +copping cop +cops cop +copying copy +copyreading copyread +copyreads copyread +coquets coquet +coquetted coquet +coquetting coquet +corralled corral +corralling corral +corrals corral +costing cost +costs cost +counseled counsel +counseling counsel +counselled counsel +counselling counsel +counsels counsel +counterplots counterplot +counterplotted counterplot +counterplotting counterplot +countersank countersink +countersinking countersink +countersinks countersink +countersunk countersink +court-martialled court-martial +court-martialling court-martial +court-martials court-martial +crabbed crab +crabbing crab +crabs crab +crammed cram +cramming cram +crams cram +crapped crap +crapping crap +craps crap +creeping creep +creeps creep +crept creep +crescendoed crescendo +crescendoes crescendo +crescendoing crescendo +cribbed crib +cribbing crib +cribs crib +cried cry +cries cry +crocheted crochet +crocheting crochet +crochets crochet +cropped crop +cropping crop +crops crop +croqueted croquet +croqueting croquet +croquets croquet +crossbred crossbreed +crossbreeding crossbreed +crossbreeds crossbreed +crosscuts crosscut +crosscutting crosscut +crucified crucify +crucifies crucify +crucifying crucify +crying cry +crystallized crystallize +crystallizes crystallize +crystallizing crystallize +cubbed cub +cubbing cub +cubs cub +cuckooed cuckoo +cuckooing cuckoo +cuckoos cuckoo +cudgeled cudgel +cudgeling cudgel +cudgelled cudgel +cudgelling cudgel +cudgels cudgel +cued cue +cues cue +cuing cue +cupeled cupel +cupeling cupel +cupelled cupel +cupelling cupel +cupels cupel +cupped cup +cupping cup +cups cup +curets curet +curetted curet +curettes curet +curetting curet +curried curry +curries curry +currying curry +cursed curse +curses curse +cursing curse +curst curse +curtseyed curtsey +curtseying curtsey +curtseys curtsey +curtsied curtsy +curtsies curtsy +curtsying curtsy +curveted curvet +curveting curvet +curvets curvet +curvetted curvet +curvetting curvet +cutting cut +dabbed dab +dabbing dab +dabs dab +dagged dag +dagging dag +dags dag +dallied dally +dallies dally +dallying dally +dammed dam +damming dam +damnified damnify +damnifies damnify +damnifying damnify +dams dam +dandified dandify +dandifies dandify +dandifying dandify +dapped dap +dapping dap +daps dap +de-emphasized de-emphasize +de-emphasizes de-emphasize +de-emphasizing de-emphasize +dealt deal +debarred debar +debarring debar +debars debar +debugged debug +debugging debug +debugs debug +debused debus +debuses debus +debusing debus +debussed debus +debusses debus +debussing debus +decalcified decalcify +decalcifies decalcify +decalcifying decalcify +declassified declassify +declassifies declassify +declassifying declassify +decontrolled decontrol +decontrolling decontrol +decontrols decontrol +decreed decree +decreeing decree +decrees decree +decried decry +decries decry +decrying decry +deep-freeze deepfreeze +deep-freezed deepfreeze +deep-freezes deepfreeze +deep-fried deep-fry +deep-fries deep-fry +deep-frying deep-fry +deferred defer +deferring defer +defers defer +defied defy +defies defy +defying defy +degases degas +degassed degas +degasses degas +degassing degas +dehumidified dehumidify +dehumidifies dehumidify +dehumidifying dehumidify +deified deify +deifies deify +deifying deify +deled dele +deleing dele +deles dele +demits demit +demitted demit +demitting demit +demobbed demob +demobbing demob +demobs demob +demulsified demulsify +demulsifies demulsify +demulsifying demulsify +demurred demur +demurring demur +demurs demur +demystified demystify +demystifies demystify +demystifying demystify +denazified denazify +denazifies denazify +denazifying denazify +denied deny +denies deny +denitrified denitrify +denitrifies denitrify +denitrifying denitrify +denned den +denning den +dens den +denying deny +descried descry +descries descry +descrying descry +deterred deter +deterring deter +deters deter +detoxified detoxify +detoxifies detoxify +detoxifying detoxify +devaluated devaluate +devaluates devaluate +devaluating devaluate +devalued devalue +devalues devalue +devaluing devalue +deviled devil +deviling devil +devilled devil +devilling devil +devils devil +devitrified devitrify +devitrifies devitrify +devitrifying devitrify +diagramed diagram +diagraming diagram +diagrammed diagram +diagramming diagram +diagrams diagram +dialed dial +dialing dial +dialled dial +dialling dial +dials dial +dibbed dib +dibbing dib +dibs dib +did do +die-casting die-cast +die-casts die-cast +died die +dies die +digging dig +dighted dight +dighting dight +dights dight +dignified dignify +dignifies dignify +dignifying dignify +digs dig +dilly-dallied dilly-dally +dilly-dallies dilly-dally +dilly-dallying dilly-dally +dimmed dim +dimming dim +dims dim +dinned din +dinning din +dins din +dipped dip +dipping dip +dips dip +dirtied dirty +dirties dirty +dirtying dirty +disagreed disagree +disagreeing disagree +disagrees disagree +disannulled disannul +disannulling disannul +disannuls disannul +disbarred disbar +disbarring disbar +disbars disbar +disbudded disbud +disbudding disbud +disbuds disbud +discontinued discontinue +discontinues discontinue +discontinuing discontinue +disembodied disembody +disembodies disembody +disembodying disembody +disembogued disembogue +disembogues disembogue +disemboguing disembogue +disemboweled disembowel +disemboweling disembowel +disembowelled disembowel +disembowelling disembowel +disembowels disembowel +disenthralled disenthral disenthrall +disenthralling disenthral disenthrall +disenthralls disenthral +disenthrals disenthrall +disheveled dishevel +disheveling dishevel +dishevelled dishevel +dishevelling dishevel +dishevels dishevel +disinterred disinter +disinterring disinter +disinters disinter +dispelled dispel +dispelling dispel +dispels dispel +disqualified disqualify +disqualifies disqualify +disqualifying disqualify +dissatisfied dissatisfy +dissatisfies dissatisfy +dissatisfying dissatisfy +distilled distil distill +distilling distil distill +distills distill +distils distil +dittoed ditto +dittoing ditto +dittos ditto +dived dive +diversified diversify +diversifies diversify +diversifying diversify +dives dive +diving dive +divvied divvy +divvies divvy +divvying divvy +dizzied dizzy +dizzies dizzy +dizzying dizzy +does do +dogged dog +dogging dog +doglegged dogleg +doglegging dogleg +doglegs dogleg +dogs dog +doing do +dollied dolly +dollies dolly +dollying dolly +done do +donned don +donning don +dons don +dots dot +dotted dot +dotting dot +double-tongued double-tongue +double-tongues double-tongue +double-tonguing double-tongue +dought dow +dove dive +dowed dow +dowing dow +dows dow +drabbed drab +drabbing drab +drabs drab +dragged drag +dragging drag +drags drag +drank drink +drawing draw +drawn draw +draws draw +dreamed dream +dreaming dream +dreams dream +dreamt dream +dreed dree +dreeing dree +drees dree +drew draw +dried dry +dries dry +drinking drink +drinks drink +dripped drip +dripping drip +drips drip +driveled drivel +driveling drivel +drivelled drivel +drivelling drivel +drivels drivel +driven drive +drives drive +driving drive +dropped drop +dropping drop +drops drop +drove drive +drubbed drub +drubbing drub +drubs drub +drugged drug +drugging drug +drugs drug +drummed drum +drumming drum +drunk drink +drying dry +dubbed dub +dubbing dub +dubs dub +dueled duel +dueling duel +duelled duel +duelling duel +duels duel +dug dig +dulcified dulcify +dulcifies dulcify +dulcifying dulcify +dummied dummy +dummies dummy +dummying dummy +dunned dun +dunning dun +duns dun +dwelled dwell +dwelling dwell +dwells dwell +dwelt dwell +dyed dye +dyeing dye +dyes dye +dying die +easied easy +easies easy +easying easy +eaten eat +eating eat +eats eat +eavesdropped eavesdrop +eavesdropping eavesdrop +eavesdrops eavesdrop +echoed echo +echoes echo +echoing echo +eddied eddy +eddies eddy +eddying eddy +edified edify +edifies edify +edifying edify +ego-tripped ego-trip +ego-tripping ego-trip +ego-trips ego-trip +electrified electrify +electrifies electrify +electrifying electrify +embargoed embargo +embargoes embargo +embargoing embargo +embedded embed +embedding embed +embeds embed +embodied embody +embodies embody +embodying embody +embrued embrue +embrues embrue +embruing embrue +embused embus +embuses embus +embusing embus +embussed embus +embusses embus +embussing embus +emceed emcee +emceeing emcee +emcees emcee +emits emit +emitted emit +emitting emit +empaneled empanel +empaneling empanel +empanelled empanel +empanelling empanel +empanels empanel +emptied empty +empties empty +emptying empty +emulsified emulsify +emulsifies emulsify +emulsifying emulsify +enameled enamel +enameling enamel +enamelled enamel +enamelling enamel +enamels enamel +endued endue +endues endue +enduing endue +engluts englut +englutted englut +englutting englut +enrolled enrol enroll +enrolling enrol enroll +enrolls enroll +enrols enrol +ensued ensue +ensues ensue +ensuing ensue +enthralled enthral enthrall +enthralling enthral enthrall +enthralls enthrall +enthrals enthral +entrammelled entrammel +entrammelling entrammel +entrammels entrammel +entrapped entrap +entrapping entrap +entraps entrap +envied envy +envies envy +envying envy +enwinding enwind +enwinds enwind +enwound enwind +enwrapped enwrap +enwrapping enwrap +enwraps enwrap +equaled equal +equaling equal +equalled equal +equalling equal +equals equal +equipped equip +equipping equip +equips equip +espied espy +espies espy +espying espy +esterified esterify +esterifies esterify +esterifying esterify +estopped estop +estopping estop +estops estop +etherified etherify +etherifies etherify +etherifying etherify +excelled excel +excelling excel +excels excel +exemplified exemplify +exemplifies exemplify +exemplifying exemplify +expelled expel +expelling expel +expels expel +extolled extol extoll +extolling extol extoll +extolls extoll +extols extol +eyed eye +eyeing eye +eyes eye +eying eye +faceted facet +faceting facet +facets facet +facetted facet +facetting facet +facsimiled facsimile +facsimileing facsimile +facsimiles facsimile +fagged fag +fagging fag +fags fag +fallen fall +falling fall +falls fall +falsified falsify +falsifies falsify +falsifying falsify +fancied fancy +fancies fancy +fancying fancy +fanned fan +fanning fan +fans fan +fantasied fantasy +fantasies fantasy +fantasying fantasy +fatigued fatigue +fatigues fatigue +fatiguing fatigue +fats fat +fatted fat +fatting fat +featherbedded featherbed +featherbedding featherbed +featherbeds featherbed +fed feed +feed feed fee +feeding feed +feeds feed +feeing fee +feeling feel +feels feel +fees fee +fell fall +felt feel felt +felted felt +felting felt +felts felt +ferried ferry +ferries ferry +ferrying ferry +fibbed fib +fibbing fib +fibs fib +figged fig +figging fig +fighting fight +fights fight +filagreed filagree +filagreeing filagree +filagrees filagree +filigreed filigree +filigreeing filigree +filigrees filigree +fillagreed fillagree +fillagreeing fillagree +fillagrees fillagree +filled_up fill_up +finding find +finds find +fine-drawing fine-draw +fine-drawn fine-draw +fine-draws fine-draw +fine-drew fine-draw +finned fin +finning fin +fins fin +fits fit +fitted fit +fitting fit +flagged flag +flagging flag +flags flag +flammed flam +flamming flam +flams flam +flanneled flannel +flanneling flannel +flannelled flannel +flannelling flannel +flannels flannel +flapped flap +flapping flap +flaps flap +flats flat +flatted flat +flatting flat +fled flee +fleeing flee +flees flee +flew fly +flies fly +flimflammed flimflam +flimflamming flimflam +flimflams flimflam +flinging fling +flings fling +flip-flopped flip-flop +flip-flopping flip-flop +flip-flops flip-flop +flipped flip +flipping flip +flips flip +flits flit +flitted flit +flitting flit +flogged flog +flogging flog +flogs flog +floodlighting floodlight +floodlights floodlight +floodlit floodlight +flopped flop +flopping flop +flops flop +flown fly +flubbed flub +flubbing flub +flung fling +flurried flurry +flurries flurry +flurrying flurry +flyblew flyblow +flyblowing flyblow +flyblown flyblow +flyblows flyblow +flying fly +fobbed fob +fobbing fob +fobs fob +focused focus +focuses focus +focusing focus +fogged fog +fogging fog +fogs fog +folioed folio +folioing folio +folios folio +footslogged footslog +footslogging footslog +footslogs footslog +forbad forbid +forbade forbid +forbearing forbear +forbears forbear +forbidden forbid +forbidding forbid +forbids forbid +forbore forbear +forborne forbear +force-fed force-feed +force-feeding force-feed +force-feeds force-feed +fordid fordo +fordoes fordo +fordoing fordo +fordone fordo +forecasted forecast +forecasting forecast +forecasts forecast +foredid foredo +foredoes foredo +foredoing foredo +foredone foredo +foregoes forego +foregoing forego +foregone forego +foreknew foreknow +foreknowing foreknow +foreknown foreknow +foreknows foreknow +foreran forerun +forerunning forerun +foreruns forerun +foresaw foresee +foreseeing foresee +foreseen foresee +foresees foresee +foreshowed foreshow +foreshowing foreshow +foreshown foreshow +foreshows foreshow +forespeaking forespeak +forespeaks forespeak +forespoke forespeak +forespoken forespeak +foretelling foretell +foretells foretell +foretold foretell +forewent forego +forgave forgive +forgets forget +forgetting forget +forgiven forgive +forgives forgive +forgiving forgive +forgoes forgo +forgoing forgo +forgone forgo +forgot forget +forgotten forget +formats format +formatted format +formatting format +forsaken forsake +forsakes forsake +forsaking forsake +forsook forsake +forspeaking forspeak +forspeaks forspeak +forspoke forspeak +forspoken forspeak +forswearing forswear +forswears forswear +forswore forswear +forsworn forswear +fortified fortify +fortifies fortify +fortifying fortify +forwent forgo +fought fight +found find +foxtrots foxtrot +foxtrotted foxtrot +foxtrotting foxtrot +frapped frap +frapping frap +fraps frap +freed free +freeing free +frees free +freeze-dried freeze-dry +freeze-dries freeze-dry +freeze-drying freeze-dry +freezes freeze +freezing freeze +frenchified frenchify +frenchifies frenchify +frenchifying frenchify +frenzied frenzy +frenzies frenzy +frenzying frenzy +frets fret +fretted fret +fretting fret +fricasseed fricassee +fricasseeing fricassee +fricassees fricassee +fried fry +fries fry +frigged frig +frigging frig +frigs frig +frits frit +fritted frit fritt +fritting frit fritt +fritts fritt +frivoled frivol +frivoling frivol +frivolled frivol +frivolling frivol +frivols frivol +frogged frog +frogging frog +frogs frog +frolicked frolic +frolicking frolic +frolics frolic +froze freeze +frozen freeze +fructified fructify +fructifies fructify +fructifying fructify +frying fry +fueled fuel +fueling fuel +fuelled fuel +fuelling fuel +fuels fuel +fulfilled fulfil fulfill +fulfilling fulfil fulfill +fulfills fulfill +fulfils fulfil +funned fun +funneled funnel +funneling funnel +funnelled funnel +funnelling funnel +funnels funnel +funning fun +funs fun +furred fur +furring fur +furs fur +gadded gad +gadding gad +gads gad +gagged gag +gagging gag +gags gag +gainsaid gainsay +gainsaying gainsay +gainsays gainsay +gamboled gambol +gamboling gambol +gambolled gambol +gambolling gambol +gambols gambol +gammed gam +gamming gam +gams gam +gan gin +ganned gan +ganning gan +gans gan +gapped gap +gapping gap +gaps gap +garnisheed garnishee +garnisheeing garnishee +garnishees garnishee +gases gas +gasified gasify +gasifies gasify +gasifying gasify +gassed gas +gasses gas +gassing gas +gave give +geed gee +geeing gee +gees gee +gelded geld +gelding geld +gelds geld +gelled gel +gelling gel +gels gel +gelt geld +gemmed gem +gemming gem +gems gem +genned-up gen-up +genning-up gen-up +gens-up gen-up +gets get +gets_lost get_lost +gets_started get_started +getting get +getting_lost get_lost +getting_started get_started +ghostwrites ghostwrite +ghostwriting ghostwrite +ghostwritten ghostwrite +ghostwrote ghostwrite +gibbed gib +gibbing gib +gibs gib +giddied giddy +giddies giddy +giddying giddy +giftwrapped giftwrap +giftwrapping giftwrap +giftwraps giftwrap +gigged gig +gigging gig +gigs gig +gilded gild +gilding gild +gilds gild +gilt gild +ginned gin +ginning gin +gins gin +gipped gip +gipping gip +gips gip +girded gird +girding gird +girds gird +girt gird +given give +gives give +giving give +glaceed glace +glaceing glace +glaces glace +glommed glom +glomming glom +gloried glory +glories glory +glorified glorify +glorifies glorify +glorifying glorify +glorying glory +glued glue +glues glue +gluing glue +gluts glut +glutted glut +glutting glut +gnawed gnaw +gnawing gnaw +gnawn gnaw +gnaws gnaw +goes go +goes_deep go_deep +going go +going_deep go_deep +gollied golly +gollies golly +gollying golly +gone go +gone_deep go_deep +goose-stepped goose-step +goose-stepping goose-step +goose-steps goose-step +got get +got_lost get_lost +got_started get_started +gotten get +gotten_lost get_lost +grabbed grab +grabbing grab +grabs grab +gratified gratify +gratifies gratify +gratifying gratify +graved grave +graveled gravel +graveling gravel +gravelled gravel +gravelling gravel +gravels gravel +graven grave +graves grave +graving grave +greed gree +greeing gree +grees gree +grew grow +grinding grind +grinds grind +grinned grin +grinning grin +grins grin +gripped grip +gripping grip +grips grip +gript grip +grits grit +gritted grit +gritting grit +ground grind +groveled grovel +groveling grovel +grovelled grovel +grovelling grovel +grovels grovel +growing grow +grown grow +grows grow +grubbed grub +grubbing grub +grubs grub +guaranteed guarantee +guaranteeing guarantee +guarantees guarantee +guarantied guaranty +guaranties guaranty +guarantying guaranty +gullied gully +gullies gully +gullying gully +gummed gum +gumming gum +gums gum +gumshoed gumshoe +gumshoeing gumshoe +gumshoes gumshoe +gunned gun +gunning gun +guns gun +gypped gyp +gypping gyp +gyps gyp +hacksawed hacksaw +hacksawing hacksaw +hacksawn hacksaw +hacksaws hacksaw +had have +had_a_feeling have_a_feeling +had_left have_left +had_the_feeling have_the_feeling +halloaed halloa +halloaing halloa +halloas halloa +halloed hallo +halloing hallo +hallooed halloo +hallooing halloo +halloos halloo +hallos hallo +haloed halo +haloes halo +haloing halo +halos halo +hammed ham +hamming ham +hams ham +hamstringing hamstring +hamstrings hamstring +hamstrung hamstring +hand-knits hand-knit +hand-knitted hand-knit +hand-knitting hand-knit +handfed handfeed +handfeeding handfeed +handfeeds handfeed +handicapped handicap +handicapping handicap +handicaps handicap +handselled handsel +handselling handsel +handsels handsel +hanging hang +hangs hang +hanseled hansel +hanseling hansel +hansels hansel +harried harry +harries harry +harrying harry +has have +has_a_feeling have_a_feeling +has_left have_left +has_the_feeling have_the_feeling +hatcheled hatchel +hatcheling hatchel +hatchelled hatchel +hatchelling hatchel +hatchels hatchel +hats hat +hatted hat +hatting hat +having have +having_a_feeling have_a_feeling +having_left have_left +having_the_feeling have_the_feeling +heard hear +hearing hear +hears hear +heaved heave +heaves heave +heaving heave +hedgehopped hedgehop +hedgehopping hedgehop +hedgehops hedgehop +held hold +hemmed hem +hemming hem +hems hem +hewed hew +hewing hew +hewn hew +hews hew +hiccuped hiccup +hiccuping hiccup +hiccupped hiccup +hiccupping hiccup +hiccups hiccup +hid hide +hidden hide +hides hide +hiding hide +high-hats high-hat +high-hatted high-hat +high-hatting high-hat +hinnied hinny +hinnies hinny +hinnying hinny +hits hit +hitting hit +hobbed hob +hobbing hob +hobnobbed hobnob +hobnobbing hobnob +hobnobs hobnob +hobs hob +hocus-pocused hocus-pocus +hocus-pocuses hocus-pocus +hocus-pocusing hocus-pocus +hocus-pocussed hocus-pocus +hocus-pocussing hocus-pocus +hocused hocus +hocuses hocus +hocusing hocus +hocussed hocus +hocussing hocus +hoed hoe +hoeing hoe +hoes hoe +hogged hog +hogging hog +hogs hog +hogtied hogtie +hogties hogtie +hogtying hogtie +holding hold +holds hold +honeyed honey +honeying honey +honeys honey +honied honey +hoodooed hoodoo +hoodooing hoodoo +hoodoos hoodoo +hopped hop +hopping hop +hops hop +horrified horrify +horrifies horrify +horrifying horrify +horseshoed horseshoe +horseshoeing horseshoe +horseshoes horseshoe +horsewhipped horsewhip +horsewhipping horsewhip +horsewhips horsewhip +houseled housel +houseling housel +houselled housel +houselling housel +housels housel +hove heave +hoveled hovel +hoveling hovel +hovelled hovel +hovelling hovel +hovels hovel +hugged hug +hugging hug +hugs hug +humbugged humbug +humbugging humbug +humbugs humbug +humidified humidify +humidifies humidify +humidifying humidify +hummed hum +humming hum +hums hum +hung hang +hurried hurry +hurries hurry +hurrying hurry +hurting hurt +hurts hurt +hypertrophied hypertrophy +hypertrophies hypertrophy +hypertrophying hypertrophy +identified identify +identifies identify +identifying identify +imbedded imbed +imbedding imbed +imbeds imbed +imbrued imbrue +imbrues imbrue +imbruing imbrue +imbued imbue +imbues imbue +imbuing imbue +impaneled impanel +impaneling impanel +impanelled impanel +impanelling impanel +impanells impanel +impanels impanel +impelled impel +impelling impel +impels impel +implied imply +implies imply +implying imply +inbred inbreed +inbreeding inbreed +inbreeds inbreed +incurred incur +incurring incur +incurs incur +indemnified indemnify +indemnifies indemnify +indemnifying indemnify +indued indue +indues indue +induing indue +indwelling indwell +indwells indwell +indwelt indwell +inferred infer +inferring infer +infers infer +initialed initial +initialing initial +initialled initial +initialling initial +initials initial +inlaid inlay +inlaying inlay +inlays inlay +inlets inlet +insets inset +insetting inset +inspanned inspan +inspanning inspan +inspans inspan +installed instal install +installing instal install +installs install +instals instal +intensified intensify +intensifies intensify +intensifying intensify +interbred interbreed +interbreeding interbreed +interbreeds interbreed +intercropped intercrop +intercropping intercrop +intercrops intercrop +intercuts intercut +intercutting intercut +interlaid interlay +interlapped interlap +interlapping interlap +interlaps interlap +interlaying interlay +interlays interlay +intermarried intermarry +intermarries intermarry +intermarrying intermarry +intermits intermit +intermitted intermit +intermitting intermit +interpleaded interplead +interpleading interplead +interpleads interplead +interpled interplead +interred inter +interring inter +inters inter +interstratified interstratify +interstratifies interstratify +interstratifying interstratify +interweaved interweave +interweaves interweave +interweaving interweave +interwove interweave +interwoven interweave +intrigued intrigue +intrigues intrigue +intriguing intrigue +intromits intromit +intromitted intromit +intromitting intromit +inweaved inweave +inweaves inweave +inweaving inweave +inwove inweave +inwoven inweave +inwrapped inwrap +inwrapping inwrap +inwraps inwrap +is be +issued issue +issues issue +issuing issue +jabbed jab +jabbing jab +jabs jab +jagged jag +jagging jag +jags jag +jammed jam +jamming jam +jams jam +japanned japan +japanning japan +japans japan +jarred jar +jarring jar +jars jar +jelled jell +jellied jelly +jellies jelly +jellified jellify +jellifies jellify +jellifying jellify +jelling jell +jells jell +jellying jelly +jemmied jemmy +jemmies jemmy +jemmying jemmy +jerry-building jerry-build +jerry-builds jerry-build +jerry-built jerry-build +jets jet +jetted jet +jetting jet +jeweled jewel +jeweling jewel +jewelled jewel +jewelling jewel +jewels jewel +jibbed jib +jibbing jib +jibs jib +jigged jig +jigging jig +jigs jig +jimmied jimmy +jimmies jimmy +jimmying jimmy +jitterbugged jitterbug +jitterbugging jitterbug +jitterbugs jitterbug +jobbed job +jobbing job +jobs job +jog-trots jog-trot +jog-trotted jog-trot +jog-trotting jog-trot +jogged jog +jogging jog +jogs jog +joined_battle join_battle +joined_forces join_forces +joining_battle join_battle +joining_forces join_forces +joins_battle join_battle +joins_forces join_forces +jollied jolly +jollies jolly +jollified jollify +jollifies jollify +jollifying jollify +jollying jolly +jots jot +jotted jot +jotting jot +joy-ridden joy-ride +joy-rides joy-ride +joy-riding joy-ride +joy-rode joy-ride +joypopped joypop +joypopping joypop +joypops joypop +jugged jug +jugging jug +jugs jug +jumped_off jump_off +jumping_off jump_off +jumps_off jump_off +justified justify +justifies justify +justifying justify +juts jut +jutted jut +jutting jut +keeping keep +keeps keep +kenned ken +kenneled kennel +kenneling kennel +kennelled kennel +kennelling kennel +kennels kennel +kenning ken +kens ken +kent ken +kept keep +kerneled kernel +kerneling kernel +kernelled kernel +kernelling kernel +kernels kernel +kidded kid +kidding kid +kidnaped kidnap +kidnaping kidnap +kidnapped kidnap +kidnapping kidnap +kidnaps kidnap +kids kid +kipped kip +kipping kip +kips kip +knapped knap +knapping knap +knaps knap +kneecapped kneecap +kneecapping kneecap +kneecaps kneecap +kneed knee +kneeing knee +kneeled kneel +kneeling kneel +kneels kneel +knees knee +knelt kneel +knew know +knits knit +knitted knit +knitting knit +knobbed knob +knobbing knob +knobs knob +knots knot +knotted knot +knotting knot +knowing know +known know +knows know +ko'd ko +ko'ing ko +ko's ko +labeled label +labeling label +labelled label +labelling label +labels label +laded lade +laden lade +lades lade +lading lade +ladyfied ladify +ladyfies ladify +ladyfying ladify +lagged lag +lagging lag +lags lag +laicized laicize +laicizes laicize +laicizing laicize +laid lay +lain lie +lallygagged lallygag +lallygagging lallygag +lallygags lallygag +lammed lam +lamming lam +lams lam +lapidified lapidify +lapidifies lapidify +lapidifying lapidify +lapped lap +lapping lap +laps lap +lassoed lasso +lassoes lasso +lassoing lasso +lassos lasso +laureled laurel +laureling laurel +laurelled laurel +laurelling laurel +laurels laurel +lay lie +layed_for lie_for +laying lay +laying_for lie_for +lays lay +lays_for lie_for +leading lead +leads lead +leagued league +leagues league +leaguing league +leaned lean +leaning lean +leans lean +leant lean +leaped leap +leapfrogged leapfrog +leapfrogging leapfrog +leapfrogs leapfrog +leaping leap +leaps leap +leapt leap +learned learn +learning learn +learns learn +learnt learn +leaves leave +leaves_undone leave_undone +leaving leave +leaving_undone leave_undone +led lead +left leave +left_undone leave_undone +legitimized legitimize +legitimizes legitimize +legitimizing legitimize +lending lend +lends lend +lent lend +lets let +letting let +leveled level +leveling level +levelled level +levelling level +levels level +levied levy +levies levy +levying levy +libeled libel +libeling libel +libelled libel +libelling libel +libels libel +lied lie +lies lie +lighted light +lighting light +lights light +lignified lignify +lignifies lignify +lignifying lignify +lip-reading lip-read +lip-reads lip-read +lipped lip +lipping lip +lips lip +liquefied liquefy +liquefies liquefy +liquefying liquefy +liquified liquify +liquifies liquify +liquifying liquify +lit light +lobbed lob +lobbied lobby +lobbies lobby +lobbing lob +lobbying lobby +lobs lob +logged log +logging log +logs log +looked_towards look_towards +looking_towards look_towards +looks_towards look_towards +lopped lop +lopping lop +lops lop +loses lose +losing lose +lost lose +lots lot +lotted lot +lotting lot +lugged lug +lugging lug +lugs lug +lullabied lullaby +lullabies lullaby +lullabying lullaby +lying lie +machine-gunned machine-gun +machine-gunning machine-gun +machine-guns machine-gun +madded mad +madding mad +made make +mads mad +magnified magnify +magnifies magnify +magnifying magnify +makes make +making make +manned man +manning man +mans man +manumits manumit +manumitted manumit +manumitting manumit +mapped map +mapping map +maps map +marcelled marcel +marcelling marcel +marcels marcel +marred mar +married marry +marries marry +marring mar +marrying marry +mars mar +marshaled marshal +marshaling marshal +marshalled marshal +marshalling marshal +marshals marshal +marveled marvel +marveling marvel +marvelled marvel +marvelling marvel +marvels marvel +mats mat +matted mat +matting mat +meaning mean +means mean +meant mean +medaled medal +medaling medal +medalled medal +medalling medal +medals medal +meeting meet +meets meet +melted melt +melting melt +melts melt +met meet +metaled metal +metaling metal +metalled metal +metalling metal +metals metal +metrified metrify +metrifies metrify +metrifying metrify +might may +militated_against militate_against +militates_against militate_against +militating_against militate_against +mimicked mimic +mimicking mimic +mimics mimic +minified minify +minifies minify +minifying minify +misapplied misapply +misapplies misapply +misapplying misapply +misbecame misbecome +misbecomes misbecome +misbecoming misbecome +miscarried miscarry +miscarries miscarry +miscarrying miscarry +miscasting miscast +miscasts miscast +misconstrued misconstrue +misconstrues misconstrue +misconstruing misconstrue +misdealing misdeal +misdeals misdeal +misdealt misdeal +misfits misfit +misfitted misfit +misfitting misfit +misgave misgive +misgiven misgive +misgives misgive +misgiving misgive +misheard mishear +mishearing mishear +mishears mishear +mishits mishit +mishitting mishit +mislaid mislay +mislaying mislay +mislays mislay +misleading mislead +misleads mislead +misled mislead +mispleaded misplead +mispleading misplead +mispleads misplead +mispled misplead +misreading misread +misreads misread +misspelled misspell +misspelling misspell +misspells misspell +misspelt misspell +misspending misspend +misspends misspend +misspent misspend +mistaken mistake +mistakes mistake +mistaking mistake +mistook mistake +misunderstanding misunderstand +misunderstands misunderstand +misunderstood misunderstand +mobbed mob +mobbing mob +mobs mob +modeled model +modeling model +modelled model +modelling model +models model +modified modify +modifies modify +modifying modify +mollified mollify +mollifies mollify +mollifying mollify +molten melt +moonlighted moonlight +moonlighting moonlight +moonlights moonlight +mopped mop +mopping mop +mops mop +mortified mortify +mortifies mortify +mortifying mortify +mowed mow +mowing mow +mown mow +mows mow +mudded mud +muddied muddy +muddies muddy +mudding mud +muddying muddy +muds mud +mugged mug +mugging mug +mugs mug +multiplied multiply +multiplies multiply +multiplying multiply +mummed mum +mummified mummify +mummifies mummify +mummifying mummify +mumming mum +mums mum +mutinied mutiny +mutinies mutiny +mutinying mutiny +mystified mystify +mystifies mystify +mystifying mystify +nabbed nab +nabbing nab +nabs nab +nagged nag +nagging nag +nags nag +napped nap +napping nap +naps nap +nets net +netted net +netting net +nibbed nib +nibbing nib +nibs nib +nickeled nickel +nickeling nickel +nickelled nickel +nickelling nickel +nickels nickel +nid-nodded nid-nod +nid-nodding nid-nod +nid-nods nid-nod +nidified nidify +nidifies nidify +nidifying nidify +nielloed niello +nielloing niello +niellos niello +nigrified nigrify +nigrifies nigrify +nigrifying nigrify +nipped nip +nipping nip +nips nip +nitrified nitrify +nitrifies nitrify +nitrifying nitrify +nodded nod +nodding nod +nods nod +non-prossed non-pros +non-prosses non-pros +non-prossing non-pros +nonplused nonplus +nonpluses nonplus +nonplusing nonplus +nonplussed nonplus +nonplusses nonplus +nonplussing nonplus +notified notify +notifies notify +notifying notify +nullified nullify +nullifies nullify +nullifying nullify +nuts nut +nutted nut +nutting nut +objectified objectify +objectifies objectify +objectifying objectify +occupied occupy +occupies occupy +occupying occupy +occurred occur +occurring occur +occurs occur +offsets offset +offsetting offset +omits omit +omitted omit +omitting omit +opaqued opaque +opaques opaque +opaquing opaque +opsonized opsonize +opsonizes opsonize +opsonizing opsonize +ossified ossify +ossifies ossify +ossifying ossify +outbidden outbid +outbidding outbid +outbids outbid +outbred outbreed +outbreeding outbreed +outbreeds outbreed +outcried outcry +outcries outcry +outcropped outcrop +outcropping outcrop +outcrops outcrop +outcrying outcry +outdid outdo +outdoes outdo +outdoing outdo +outdone outdo +outdrawing outdraw +outdrawn outdraw +outdraws outdraw +outdrew outdraw +outfits outfit +outfitted outfit +outfitting outfit +outfought outfight +outgassed outgas +outgasses outgas +outgassing outgas +outgeneraled outgeneral +outgeneraling outgeneral +outgeneralled outgeneral +outgeneralling outgeneral +outgenerals outgeneral +outgoes outgo +outgoing outgo +outgone outgo +outgrew outgrow +outgrowing outgrow +outgrown outgrow +outgrows outgrow +outlaid outlay +outlaying outlay +outlays outlay +outmanned outman +outmanning outman +outmans outman +outputted output +outputting output +outran outrun +outridden outride +outrides outride +outriding outride +outrode outride +outrunning outrun +outruns outrun +outselling outsell +outsells outsell +outshines outshine +outshining outshine +outshone outshine +outshooting outshoot +outshoots outshoot +outshot outshoot +outsold outsell +outspanned outspan +outspanning outspan +outspans outspan +outspreading outspread +outspreads outspread +outstanding outstand +outstands outstand +outstood outstand +outstripped outstrip +outstripping outstrip +outstrips outstrip +outthinking outthink +outthinks outthink +outthought outthink +outwearing outwear +outwears outwear +outwent outgo +outwits outwit +outwitted outwit +outwitting outwit +outwore outwear +outworn outwear +overbearing overbear +overbears overbear +overbidden overbid +overbidding overbid +overbids overbid +overblew overblow +overblowing overblow +overblown overblow +overblows overblow +overbore overbear +overborne overbear +overbuilding overbuild +overbuilds overbuild +overbuilt overbuild +overcame overcome +overcomes overcome +overcoming overcome +overcropped overcrop +overcropping overcrop +overcrops overcrop +overdid overdo +overdoes overdo +overdoing overdo +overdone overdo +overdrawing overdraw +overdrawn overdraw +overdraws overdraw +overdrew overdraw +overdriven overdrive +overdrives overdrive +overdriving overdrive +overdrove overdrive +overflew overfly +overflies overfly +overflowed overflow +overflowing overflow +overflown overflow overfly +overflows overflow +overflying overfly +overgrew overgrow +overgrowing overgrow +overgrown overgrow +overgrows overgrow +overhanging overhang +overhangs overhang +overheard overhear +overhearing overhear +overhears overhear +overhung overhang +overissued overissue +overissues overissue +overissuing overissue +overlaid overlay +overlain overlie +overlapped overlap +overlapping overlap +overlaps overlap +overlay overlie +overlaying overlay +overlays overlay +overlies overlie +overlying overlie +overmanned overman +overmanning overman +overmans overman +overpaid overpay +overpassed overpass +overpasses overpass +overpassing overpass +overpast overpass +overpaying overpay +overpays overpay +overran overrun +overridden override +overrides override +overriding override +overrode override +overrunning overrun +overruns overrun +oversaw oversee +overseeing oversee +overseen oversee +oversees oversee +overselling oversell +oversells oversell +oversets overset +oversetting overset +oversewed oversew +oversewing oversew +oversewn oversew +oversews oversew +overshooting overshoot +overshoots overshoot +overshot overshoot +oversimplified oversimplify +oversimplifies oversimplify +oversimplifying oversimplify +oversleeping oversleep +oversleeps oversleep +overslept oversleep +oversold oversell +overspending overspend +overspends overspend +overspent overspend +overspilled overspill +overspilling overspill +overspills overspill +overspilt overspill +overstepped overstep +overstepping overstep +oversteps overstep +overtaken overtake +overtakes overtake +overtaking overtake +overthrew overthrow +overthrowing overthrow +overthrown overthrow +overthrows overthrow +overtook overtake +overtopped overtop +overtopping overtop +overtops overtop +overwinding overwind +overwinds overwind +overwound overwind +overwrites overwrite +overwriting overwrite +overwritten overwrite +overwrote overwrite +pacified pacify +pacifies pacify +pacifying pacify +padded pad +padding pad +pads pad +paid pay +palled pal +palling pal +pals pal +palsied palsy +palsies palsy +palsying palsy +pandied pandy +pandies pandy +pandying pandy +paneled panel +paneling panel +panelled panel +panelling panel +panels panel +panicked panic +panicking panic +panics panic +panned pan +panning pan +pans pan +paralleled parallel +paralleling parallel +parallelled parallel +parallelling parallel +parallels parallel +parceled parcel +parceling parcel +parcelled parcel +parcelling parcel +parcels parcel +parenthesized parenthesize +parenthesizes parenthesize +parenthesizing parenthesize +parodied parody +parodies parody +parodying parody +parried parry +parries parry +parrying parry +partaken partake +partakes partake +partaking partake +partook partake +pasquil pasquinade +pasquilled pasquinade +pasquilling pasquinade +pasquils pasquinade +pasquinaded pasquinade +pasquinades pasquinade +pasquinading pasquinade +patrolled patrol +patrolling patrol +patrols patrol +pats pat +patted pat +patting pat +payed pay +paying pay +pays pay +pedaled pedal +pedaling pedal +pedalled pedal +pedalling pedal +pedals pedal +peed pee +peeing pee +pees pee +pegged peg +pegging peg +pegs peg +penciled pencil +penciling pencil +pencilled pencil +pencilling pencil +pencils pencil +penned pen +penning pen +pens pen +pent pen +pepped pep +pepping pep +peps pep +permits permit +permitted permit +permitting permit +personified personify +personifies personify +personifying personify +petrified petrify +petrifies petrify +petrifying petrify +pets pet +petted pet +pettifogged pettifog +pettifogging pettifog +pettifogs pettifog +petting pet +phantasied phantasy +phantasies phantasy +phantasying phantasy +photocopied photocopy +photocopies photocopy +photocopying photocopy +photomapped photomap +photomapping photomap +photomaps photomap +photosets photoset +photosetting photoset +physicked physic +physicking physic +physics physic +picnicked picnic +picnicking picnic +picnics picnic +pied pie +pieing pie +pies pie +pigged pig +pigging pig +pigs pig +piing pie +pilloried pillory +pillories pillory +pillorying pillory +pinch-hits pinch-hit +pinch-hitting pinch-hit +pinned pin +pinning pin +pins pin +pipped pip +pipping pip +pips pip +piqued pique +piques pique +piquing pique +pistol-whipped pistol-whip +pistol-whipping pistol-whip +pistol-whips pistol-whip +pistoled pistol +pistoling pistol +pistolled pistol +pistolling pistol +pistols pistol +pitapats pitapat +pitapatted pitapat +pitapatting pitapat +pitied pity +pities pity +pits pit +pitted pit +pitting pit +pitying pity +plagued plague +plagues plague +plaguing plague +planned plan +planning plan +plans plan +plats plat +platted plat +platting plat +played_a_part play_a_part +playing_a_part play_a_part +plays_a_part play_a_part +pleaded plead +pleading plead +pleads plead +pled plead +plied ply +plies ply +plodded plod +plodding plod +plods plod +plopped plop +plopping plop +plops plop +plots plot +plotted plot +plotting plot +plugged plug +plugging plug +plugs plug +plying ply +podded pod +podding pod +pods pod +polkaed polka +polkaing polka +polkas polka +pommeled pommel +pommeling pommel +pommelled pommel +pommelling pommel +pommels pommel +popped pop +popping pop +pops pop +pots pot +potted pot +potting pot +preachified preachify +preachifies preachify +preachifying preachify +precanceled precancel +precanceling precancel +precancelled precancel +precancelling precancel +precancels precancel +precasting precast +precasts precast +preferred prefer +preferring prefer +prefers prefer +preoccupied preoccupy +preoccupies preoccupy +preoccupying preoccupy +prepaid prepay +prepaying prepay +prepays prepay +presignified presignify +presignifies presignify +presignifying presignify +pretermits pretermit +pretermitted pretermit +pretermitting pretermit +prettied pretty +pretties pretty +prettified prettify +prettifies prettify +prettifying prettify +prettying pretty +pried pry +pries pry +prigged prig +prigging prig +prigs prig +primmed prim +primming prim +prims prim +prodded prod +prodding prod +prods prod +programmed program +programmes program +programming program +programs program +prologed prologue +prologing prologue +prologs prologue +prologued prologue +prologues prologue +prologuing prologue +proofreading proofread +proofreads proofread +propelled propel +propelling propel +propels propel +prophesied prophesy +prophesies prophesy +prophesying prophesy +propped prop +propping prop +props prop +proved prove +proven prove +proves prove +proving prove +prying pry +pubbed pub +pubbing pub +pubs pub +pugged pug +pugging pug +pugs pug +pummeled pummel +pummeling pummel +pummelled pummel +pummelling pummel +pummels pummel +punned pun +punning pun +puns pun +pupped pup +pupping pup +pups pup +pureed puree +pureeing puree +purees puree +purified purify +purifies purify +purifying purify +pursued pursue +pursues pursue +pursuing pursue +put-puts put-put +put-putted put-put +put-putting put-put +putrefied putrefy +putrefies putrefy +putrefying putrefy +puts put +puttied putty +putties putty +putting put +puttying putty +qualified qualify +qualifies qualify +qualifying qualify +quantified quantify +quantifies quantify +quantifying quantify +quarreled quarrel +quarreling quarrel +quarrelled quarrel +quarrelling quarrel +quarrels quarrel +quarried quarry +quarries quarry +quarrying quarry +quartersawed quartersaw +quartersawing quartersaw +quartersawn quartersaw +quartersaws quartersaw +queried query +queries query +querying query +queued queue +queues queue +queuing queue +quick-freezes quick-freeze +quick-freezing quick-freeze +quick-froze quick-freeze +quick-frozen quick-freeze +quickstepped quickstep +quickstepping quickstep +quicksteps quickstep +quipped quip +quipping quip +quips quip +quits quit +quitted quit +quitting quit +quizzed quiz +quizzes quiz +quizzing quiz +radioed radio +radioing radio +radios radio +ragged rag +ragging rag +ragouted ragout +ragouting ragout +ragouts ragout +rags rag +rallied rally +rallies rally +rallying rally +ramified ramify +ramifies ramify +ramifying ramify +rammed ram +ramming ram +rams ram +ran run +rang ring +rapped rap +rappelled rappel +rappelling rappel +rappels rappel +rapping rap +raps rap +rarfied rarefy +rarfies rarefy +rarfying rarefy +ratified ratify +ratifies ratify +ratifying ratify +rats rat +ratted rat +ratting rat +raveled ravel +raveling ravel +ravelled ravel +ravelling ravel +ravels ravel +raz-cuts raz-cut +raz-cutting raz-cut +razeed razee +razeeing razee +razees razee +re-treading re-tread +re-treads re-tread +re-trod re-tread +re-trodden re-tread +reading read +reads read +reaved reave +reaves reave +reaving reave +rebelled rebel +rebelling rebel +rebels rebel +rebuilt rebuild +rebuts rebut +rebutted rebut +rebutting rebut +recapped recap +recapping recap +recaps recap +recced recce +recceed recce +recceing recce +recces recce +reclassified reclassify +reclassifies reclassify +reclassifying reclassify +recommits recommit +recommitted recommit +recommitting recommit +recopied recopy +recopies recopy +recopying recopy +rectified rectify +rectifies rectify +rectifying rectify +recurred recur +recurring recur +recurs recur +red red +red-pencilled red-pencil +red-pencilling red-pencil +red-pencils red-pencil +redded red redd +redding red redd +redds redd +redid redo +redoes redo +redoing redo +redone redo +reds red +reeved reeve +reeves reeve +reeving reeve +refereed referee +refereeing referee +referees referee +referred refer +referring refer +refers refer +refits refit +refitted refit +refitting refit +reft reave +refueled refuel +refueling refuel +refuelled refuel +refuelling refuel +refuels refuel +regrets regret +regretted regret +regretting regret +reheard rehear +rehearing rehear +rehears rehear +reified reify +reifies reify +reifying reify +relied rely +relies rely +relying rely +remade remake +remakes remake +remaking remake +remarried remarry +remarries remarry +remarrying remarry +remits remit +remitted remit +remitting remit +rending rend +rends rend +rent rend +repaid repay +repaying repay +repays repay +repelled repel +repelling repel +repels repel +replevied replevy +replevies replevy +replevying replevy +replied reply +replies reply +replying reply +repots repot +repotted repot +repotting repot +reran rerun +rerunning rerun +reruns rerun +resat resit +rescued rescue +rescues rescue +rescuing rescue +resets reset +resetting reset +resits resit +resitting resit +retaken retake +retakes retake +retaking retake +retelling retell +retells retell +rethinking rethink +rethinks rethink +rethought rethink +retold retell +retook retake +retransmits retransmit +retransmitted retransmit +retransmitting retransmit +retreaded retread +retreading retread +retreads retread +retried retry +retries retry +retrofits retrofit +retrofitted retrofit +retrofitting retrofit +retrying retry +rets ret +retted ret +retting ret +reunified reunify +reunifies reunify +reunifying reunify +revalorized revalorize +revalorizes revalorize +revalorizing revalorize +reveled revel +reveling revel +revelled revel +revelling revel +revels revel +revets revet +revetted revet +revetting revet +revivified revivify +revivifies revivify +revivifying revivify +revs rev +revved rev +revving rev +rewinding rewind +rewinds rewind +rewound rewind +rewrites rewrite +rewriting rewrite +rewritten rewrite +rewrote rewrite +ribbed rib +ribbing rib +ribs rib +ricocheted ricochet +ricocheting ricochet +ricochets ricochet +ricochetted ricochet +ricochetting ricochet +ridded rid +ridden ride +ridding rid +rides ride +riding ride +rids rid +rigged rig +rigging rig +rigidified rigidify +rigidifies rigidify +rigidifying rigidify +rigs rig +rimmed rim +rimming rim +rims rim +ringed ring +ringing ring +rings ring +ripped rip +ripping rip +rips rip +risen rise +rises rise +rising rise +rivaled rival +rivaling rival +rivalled rival +rivalling rival +rivals rival +rived rive +riven rive +rives rive +riving rive +robbed rob +robbing rob +robs rob +rode ride +roqueted roquet +roqueting roquet +roquets roquet +rose rise +rots rot +rotted rot +rotting rot +rough-dried rough-dry +rough-dries rough-dry +rough-drying rough-dry +rough-hewed rough-hew +rough-hewing rough-hew +rough-hewn rough-hew +rough-hews rough-hew +roughcasting roughcast +roughcasts roughcast +rove reeve +roweled rowel +roweling rowel +rowelled rowel +rowelling rowel +rowels rowel +rubbed rub +rubbing rub +rubs rub +rued rue +rues rue +ruggedized ruggedize +ruggedizes ruggedize +ruggedizing ruggedize +ruing rue +rung ring +running run +runs run +ruts rut +rutted rut +rutting rut +saccharified saccharify +saccharifies saccharify +saccharifying saccharify +sagged sag +sagging sag +sags sag +said say +salaried salary +salaries salary +salarying salary +salified salify +salifies salify +salifying salify +sallied sally +sallies sally +sallying sally +sambaed samba +sambaing samba +sambas samba +sanctified sanctify +sanctifies sanctify +sanctifying sanctify +sand-casting sand-cast +sand-casts sand-cast +sandbagged sandbag +sandbagging sandbag +sandbags sandbag +sang sing +sank sink +saponified saponify +saponifies saponify +saponifying saponify +sapped sap +sapping sap +saps sap +sat sit +satisfied satisfy +satisfies satisfy +satisfying satisfy +sauteed saute +sauteing saute +sautes saute +savvied savvy +savvies savvy +savvying savvy +saw see +sawed saw +sawing saw +sawn saw +saws saw +saying say +says say +scagged scag +scagging scag +scags scag +scanned scan +scanning scan +scans scan +scarified scarify +scarifies scarify +scarifying scarify +scarred scar +scarring scar +scars scar +scats scat +scatted scat +scatting scat +scended scend +scending scend +scends scend +scorified scorify +scorifies scorify +scorifying scorify +scragged scrag +scragging scrag +scrags scrag +scrammed scram +scramming scram +scrams scram +scrapped scrap +scrapping scrap +scraps scrap +scried scry +scries scry +scrubbed scrub +scrubbing scrub +scrubs scrub +scrummed scrum +scrumming scrum +scrums scrum +scrying scry +scudded scud +scudding scud +scuds scud +scummed scum +scumming scum +scums scum +scurried scurry +scurries scurry +scurrying scurry +seed seed +seeing see +seeking seek +seeks seek +seen see +sees see +selling sell +sells sell +sending send +sends send +sent send +sets set +setting set +sewed sew +sewing sew +sewn sew +sews sew +shagged shag +shagging shag +shags shag +shaken shake +shaken_hands shake_hands +shakes shake +shakes_hands shake_hands +shaking shake +shaking_hands shake_hands +shammed sham +shamming sham +shampooed shampoo +shampooing shampoo +shampoos shampoo +shams sham +shanghaied shanghai +shanghaiing shanghai +shanghais shanghai +sharecropped sharecrop +sharecropping sharecrop +sharecrops sharecrop +shaved shave +shaven shave +shaves shave +shaving shave +sheared shear +shearing shear +shears shear +shed shed +shedding shed +sheds shed +shellacked shellac +shellacking shellac +shellacs shellac +shending shend +shends shend +shent shend +shewed shew +shewing shew +shewn shew +shews shew +shied shy +shies shy +shikarred shikar +shikarring shikar +shikars shikar +shillyshallied shillyshally +shillyshallies shillyshally +shillyshallying shillyshally +shimmed shim +shimmied shimmy +shimmies shimmy +shimming shim +shimmying shimmy +shims shim +shines shine +shining shine +shinned shin +shinning shin +shins shin +shipped ship +shipping ship +ships ship +shits shit +shitted shit +shitting shit +shod shoe +shoeing shoe +shoes shoe +shone shine +shooed shoo +shooing shoo +shook shake +shook_hands shake_hands +shoos shoo +shooting shoot +shoots shoot +shopped shop +shopping shop +shops shop +shot shoot +shotgunned shotgun +shotgunning shotgun +shotguns shotgun +shots shot +shotted shot +shotting shot +shoveled shovel +shoveling shovel +shovelled shovel +shovelling shovel +shovels shovel +showed show +showing show +shown show +shows show +shrank shrink +shredded shred +shredding shred +shrink-wrapped shrink-wrap +shrink-wrapping shrink-wrap +shrink-wraps shrink-wrap +shrinking shrink +shrinks shrink +shrived shrive +shriveled shrivel +shriveling shrivel +shrivelled shrivel +shrivelling shrivel +shrivels shrivel +shriven shrive +shrives shrive +shriving shrive +shrove shrive +shrugged shrug +shrugging shrug +shrugs shrug +shrunk shrink +shrunken shrink +shunned shun +shunning shun +shuns shun +shuts shut +shutting shut +shying shy +sicked sic +sicking sic +sics sic +sideslipped sideslip +sideslipping sideslip +sideslips sideslip +sidestepped sidestep +sidestepping sidestep +sidesteps sidestep +sight-reading sight-read +sight-reads sight-read +sightsaw sightsee +sightseeing sightsee +sightseen sightsee +sightsees sightsee +signaled signal +signaling signal +signalled signal +signalling signal +signals signal +signified signify +signifies signify +signifying signify +silicified silicify +silicifies silicify +silicifying silicify +simplified simplify +simplifies simplify +simplifying simplify +singing sing singe +single-stepped single-step +single-stepping single-step +single-steps single-step +sings sing +sinking sink +sinks sink +sinned sin +sinning sin +sipped sip +sipping sip +sips sip +sits sit +sitting sit +skellied skelly +skellies skelly +skellying skelly +skenned sken +skenning sken +skens sken +skets sket +sketted sket +sketting sket +ski'd ski +skidded skid +skidding skid +skids skid +skied ski +skies sky +skiing ski +skimmed skim +skimming skim +skims skim +skin-popped skin-pop +skin-popping skin-pop +skin-pops skin-pop +skinned skin +skinning skin +skinny-dipped skinny-dip +skinny-dipping skinny-dip +skinny-dips skinny-dip +skins skin +skipped skip +skipping skip +skips skip +skis ski +skivvied skivvy +skivvies skivvy +skivvying skivvy +skydived skydive +skydives skydive +skydiving skydive +skydove skydive +skying sky +slabbed slab +slabbing slab +slabs slab +slagged slag +slagging slag +slags slag +slain slay +slammed slam +slamming slam +slams slam +slapped slap +slapping slap +slaps slap +slats slat +slatted slat +slatting slat +slaying slay +slays slay +sleeping sleep +sleeps sleep +slept sleep +slew slay +slid slide +slidden slide +slides slide +sliding slide +slinging sling +slings sling +slinking slink +slinks slink +slipped slip +slipping slip +slips slip +slits slit +slitting slit +slogged slog +slogging slog +slogs slog +slopped slop +slopping slop +slops slop +slots slot +slotted slot +slotting slot +slugged slug +slugging slug +slugs slug +slummed slum +slumming slum +slums slum +slung sling +slunk slink +slurred slur +slurring slur +slurs slur +smelled smell +smelling smell +smells smell +smelt smell +smit smite +smites smite +smiting smite +smitten smite +smote smite +smuts smut +smutted smut +smutting smut +snafued snafu +snafues snafu +snafuing snafu +snagged snag +snagging snag +snags snag +snapped snap +snapping snap +snaps snap +snedded sned +snedding sned +sneds sned +snipped snip +snipping snip +snips snip +sniveled snivel +sniveling snivel +snivelled snivel +snivelling snivel +snivels snivel +snogged snog +snogging snog +snogs snog +snowshoed snowshoe +snowshoeing snowshoe +snowshoes snowshoe +snubbed snub +snubbing snub +snubs snub +snugged snug +snugging snug +snugs snug +sobbed sob +sobbing sob +sobs sob +socialized socialize +socializes socialize +socializing socialize +sodded sod +sodding sod +sods sod +soft-pedaled soft-pedal +soft-pedaling soft-pedal +soft-pedalled soft-pedal +soft-pedalling soft-pedal +soft-pedals soft-pedal +sol-faed sol-fa +sol-faing sol-fa +sol-fas sol-fa +sold sell +solemnified solemnify +solemnifies solemnify +solemnifying solemnify +solidified solidify +solidifies solidify +solidifying solidify +soothsaid soothsay +soothsaying soothsay +soothsays soothsay +sopped sop +sopping sop +sops sop +sortied sortie +sortieing sortie +sorties sortie +sought seek +sowed sow +sowing sow +sown sow +sows sow +spagged spag +spagging spag +spags spag +spanceled spancel +spanceling spancel +spancelled spancel +spancelling spancel +spancels spancel +spanned span +spanning span +spans span +sparred spar +sparring spar +spars spar +spat spit +spats spat +spatted spat +spatting spat +speaking speak +speaks speak +specified specify +specifies specify +specifying specify +sped speed +speechified speechify +speechifies speechify +speechifying speechify +speeded speed +speeding speed +speeds speed +spellbinding spellbind +spellbinds spellbind +spellbound spellbind +spelled spell +spelling spell +spells spell +spelt spell +spending spend +spends spend +spent spend +spied spy +spies spy +spilled spill +spilling spill +spills spill +spilt spill +spin-dried spin-dry +spin-dries spin-dry +spin-drying spin-dry +spinning spin +spins spin +spiraled spiral +spiraling spiral +spiralled spiral +spiralling spiral +spirals spiral +spits spit +spitted spit +spitting spit +splits split +splitting split +spoiled spoil +spoiling spoil +spoils spoil +spoilt spoil +spoke speak +spoken speak +spoon-fed spoon-feed +spoon-feeding spoon-feed +spoon-feeds spoon-feed +spotlighted spotlight +spotlighting spotlight +spotlights spotlight +spotlit spotlight +spots spot +spotted spot +spotting spot +sprang spring +spreading spread +spreads spread +sprigged sprig +sprigging sprig +sprigs sprig +springing spring +springs spring +sprung spring +spudded spud +spudding spud +spuds spud +spued spue +spues spue +spuing spue +spun spin +spurred spur +spurring spur +spurs spur +spying spy +squats squat +squatted squat +squatting squat +squeegeed squeegee +squeegeeing squeegee +squeegees squeegee +squibbed squib +squibbing squib +squibs squib +squidded squid +squidding squid +squids squid +squilgee squeegee +stabbed stab +stabbing stab +stabs stab +stall-fed stall-feed +stall-feeding stall-feed +stall-feeds stall-feed +standing stand +stands stand +stank stink +starred star +starring star +stars star +staved stave +staves stave +staving stave +steadied steady +steadies steady +steadying steady +stealing steal +steals steal +stellified stellify +stellifies stellify +stellifying stellify +stemmed stem +stemming stem +stems stem +stems_from stem_from +stenciled stencil +stenciling stencil +stencilled stencil +stencilling stencil +stencils stencil +stepped step +stepping step +steps step +stets stet +stetted stet +stetting stet +sticked stick +sticking stick +sticks stick +stied sty +sties sty +stilettoed stiletto +stilettoeing stiletto +stilettoes stiletto +stinging sting +stings sting +stinking stink +stinks stink +stirred stir +stirring stir +stirs stir +stole steal +stolen steal +stood stand +stopped stop +stopping stop +stops stop +storied story +stories story +storying story +stots stot +stotted stot +stotting stot +stove stave +strapped strap +strapping strap +straps strap +stratified stratify +stratifies stratify +stratifying stratify +strewed strew +strewing strew +strewn strew +strews strew +stridden stride +strikes strike +striking strike +stringing string +strings string +stripped strip +stripping strip +strips strip +striven strive +strives strive +striving strive +strode stride +stropped strop +stropping strop +strops strop +strove strive +strowed strow +strowing strow +strown strow +strows strow +struck strike +strummed strum +strumming strum +strums strum +strung string +struts strut +strutted strut +strutting strut +stubbed stub +stubbing stub +stubs stub +stuccoed stucco +stuccoes stucco +stuccoing stucco +stuccos stucco +stuck stick +studded stud +studding stud +studied study +studies study +studs stud +studying study +stultified stultify +stultifies stultify +stultifying stultify +stummed stum +stumming stum +stums stum +stung sting +stunk stink +stunned stun +stunning stun +stuns stun +stupefied stupefy +stupefies stupefy +stupefying stupefy +stying sty +stymied stymie +stymieing stymie +stymies stymie +stymying stymie +subbed sub +subbing sub +subdued subdue +subdues subdue +subduing subdue +subjectified subjectify +subjectifies subjectify +subjectifying subjectify +sublets sublet +subletting sublet +submits submit +submitted submit +submitting submit +subpoenaed subpoena +subpoenaing subpoena +subpoenas subpoena +subs sub +subtotaled subtotal +subtotaling subtotal +subtotalled subtotal +subtotalling subtotal +subtotals subtotal +sued sue +sues sue +suing sue +sullied sully +sullies sully +sullying sully +sulphureted sulphuret +sulphureting sulphuret +sulphurets sulphuret +sulphuretted sulphuret +sulphuretting sulphuret +summed sum +summing sum +sums sum +sung sing +sunk sink +sunken sink +sunned sun +sunning sun +suns sun +supped sup +supping sup +supplied supply +supplies supply +supplying supply +sups sup +swabbed swab +swabbing swab +swabs swab +swagged swag +swagging swag +swags swag +swam swim +swapped swap +swapping swap +swaps swap +swats swat +swatted swat +swatting swat +swearing swear +swears swear +sweated sweat +sweating sweat +sweats sweat +sweeping sweep +sweeps sweep +swelled swell +swelling swell +swells swell +swept sweep +swigged swig +swigging swig +swigs swig +swimming swim +swims swim +swinging swing +swings swing +swiveled swivel +swiveling swivel +swivelled swivel +swivelling swivel +swivels swivel +swollen swell +swopped swap +swopping swap +swops swap +swore swear +sworn swear +swots swot +swotted swot +swotting swot +swum swim +swung swing +syllabicated syllabicate +syllabicates syllabicate +syllabicating syllabicate +syllabified syllabify +syllabifies syllabify +syllabifying syllabify +symboled symbol +symboling symbol +symbolled symbol +symbolling symbol +symbols symbol +tabbed tab +tabbing tab +tabs tab +tagged tag +tagging tag +tags tag +taken take +taken_a_side take_a_side +taken_pains take_pains +taken_steps take_steps +takes take +takes_a_side take_a_side +takes_pains take_pains +takes_steps take_steps +taking take +taking_a_side take_a_side +taking_pains take_pains +taking_steps take_steps +talced talc +talcing talc +talcked talc +talcking talc +talcs talc +tallied tally +tallies tally +tally-ho'd tally-ho +tally-hoed tally-ho +tally-hoing tally-ho +tally-hos tally-ho +tallying tally +tammied tammy +tammies tammy +tammying tammy +tangoed tango +tangoes tango +tangoing tango +tanned tan +tanning tan +tans tan +tapped tap +tapping tap +taps tap +tarred tar +tarried tarry +tarries tarry +tarring tar +tarrying tarry +tars tar +tasseled tassel +tasseling tassel +tasselled tassel +tasselling tassel +tassels tassel +tats tat +tatted tat +tatting tat +tattooed tattoo +tattooing tattoo +tattoos tattoo +taught teach +taxied taxi +taxies taxi +taxiing taxi +taxying taxi +te-heed te-hee +te-heeing te-hee +te-hees te-hee +teaches teach +teaching teach +tearing tear +tears tear +teaselled teasel +teaselling teasel +teasels teasel +tedded ted +tedding ted +teds ted +teed tee +teeing tee +tees tee +telecasted telecast +telecasting telecast +telecasts telecast +telling tell +tells tell +tepefied tepefy +tepefies tepefy +tepefying tepefy +terrified terrify +terrifies terrify +terrifying terrify +testified testify +testifies testify +testifying testify +thinking think +thinking_the_world_of think_the_world_of +thinks think +thinks_the_world_of think_the_world_of +thinned thin +thinning thin +thins thin +thought think +thought_the_world_of think_the_world_of +threw throw +threw_out throw_out +thrived thrive +thriven thrive +thrives thrive +thriving thrive +throbbed throb +throbbing throb +throbs throb +throve thrive +throwing throw +throwing_out throw_out +thrown throw +thrown_out throw_out +throws throw +throws_out throw_out +thrummed thrum +thrumming thrum +thrums thrum +thudded thud +thudding thud +thuds thud +tidied tidy +tidies tidy +tidying tidy +tied tie +ties tie +tinged tinge +tingeing tinge +tinges tinge +tinging tinge +tinned tin +tinning tin +tins tin +tinseled tinsel +tinseling tinsel +tinselled tinsel +tinselling tinsel +tinsels tinsel +tipped tip +tipping tip +tips tip +tiptoed tiptoe +tiptoeing tiptoe +tiptoes tiptoe +tittuped tittup +tittuping tittup +tittupped tittup +tittupping tittup +tittups tittup +toadied toady +toadies toady +toadying toady +toed toe +toeing toe +toes toe +togged tog +togging tog +togs tog +told tell +tongued tongue +tongues tongue +tonguing tongue +took take +took_a_side take_a_side +took_pains take_pains +took_steps take_steps +topped top +topping top +tops top +tore tear +torn tear +torrefied torrefy +torrefies torrefy +torrefying torrefy +torrify torrefy +totaled total +totaling total +totalled total +totalling total +totals total +tots tot +totted tot +totting tot +toweled towel +toweling towel +towelled towel +towelling towel +towels towel +trafficked traffic +trafficking traffic +traffics traffic +traipsed traipse +traipses traipse +traipsing traipse +trameled trammel +trameling trammel +tramelled trammel +tramelling trammel +tramels trammel +trammed tram +tramming tram +trams tram +tranquillized tranquillize +tranquillizes tranquillize +tranquillizing tranquillize +transferred transfer +transferring transfer +transfers transfer +transfixed transfix +transfixes transfix +transfixing transfix +transfixt transfix +tranship transship +transhipped tranship +transhipping tranship +tranships tranship +transmits transmit +transmitted transmit +transmitting transmit +transmogrified transmogrify +transmogrifies transmogrify +transmogrifying transmogrify +transshipped transship +transshipping transship +transships transship +transvalued transvalue +transvalues transvalue +transvaluing transvalue +trapanned trapan +trapanning trapan +trapans trapan +trapped trap +trapping trap +traps trap +traumatized traumatize +traumatizes traumatize +traumatizing traumatize +traveled travel +traveling travel +travelled travel +travelling travel +travels travel +travestied travesty +travesties travesty +travestying travesty +treading tread +treads tread +trekked trek +trekking trek +treks trek +trepanned trepan +trepanning trepan +trepans trepan +tried try +tries try +trigged trig +trigging trig +trigs trig +trimmed trim +trimming trim +trims trim +tripped trip +tripping trip +trips trip +trod tread +trodden tread +trogged trog +trogging trog +trogs trog +trots trot +trotted trot +trotting trot +troweled trowel +troweling trowel +trowelled trowel +trowelling trowel +trowels trowel +trued true +trues true +truing true +trying try +tugged tug +tugging tug +tugs tug +tumefied tumefy +tumefies tumefy +tumefying tumefy +tunned tun +tunneled tunnel +tunneling tunnel +tunnelled tunnel +tunnelling tunnel +tunnels tunnel +tunning tun +tuns tun +tupped tup +tupping tup +tups tup +tut-tuts tut-tut +tut-tutted tut-tut +tut-tutting tut-tut +twigged twig +twigging twig +twigs twig +twinned twin +twinning twin +twins twin +twits twit +twitted twit +twitting twit +tying tie +typecasting typecast +typecasts typecast +typesets typeset +typesetting typeset +typewrites typewrite +typewriting typewrite +typewritten typewrite +typewrote typewrite +typified typify +typifies typify +typifying typify +uglified uglify +uglifies uglify +uglifying uglify +unbarred unbar +unbarring unbar +unbars unbar +unbending unbend +unbends unbend +unbent unbend +unbinding unbind +unbinds unbind +unbound unbind +uncapped uncap +uncapping uncap +uncaps uncap +unclad unclothe +unclogged unclog +unclogging unclog +unclogs unclog +unclothed unclothe +unclothes unclothe +unclothing unclothe +underbidding underbid +underbids underbid +underbought underbuy +underbuying underbuy +underbuys underbuy +undercuts undercut +undercutting undercut +underfed underfeed +underfeeding underfeed +underfeeds underfeed +undergirded undergird +undergirding undergird +undergirds undergird +undergirt undergird +undergoes undergo +undergoing undergo +undergone undergo +underlaid underlay +underlain underlie +underlay underlie +underlaying underlay +underlays underlay +underlets underlet +underletting underlet +underlies underlie +underlying underlie +underpaid underpay +underpaying underpay +underpays underpay +underpinned underpin +underpinning underpin +underpins underpin +underpropped underprop +underpropping underprop +underprops underprop +underselling undersell +undersells undersell +undersets underset +undersetting underset +undershooting undershoot +undershoots undershoot +undershot undershoot +undersold undersell +understanding understand +understands understand +understood understand +understudied understudy +understudies understudy +understudying understudy +undertaken undertake +undertakes undertake +undertaking undertake +undertook undertake +undervalued undervalue +undervalues undervalue +undervaluing undervalue +underwent undergo +underwrites underwrite +underwriting underwrite +underwritten underwrite +underwrote underwrite +undid undo +undoes undo +undoing undo +undone undo +unfits unfit +unfitted unfit +unfitting unfit +unfreezes unfreeze +unfreezing unfreeze +unfroze unfreeze +unfrozen unfreeze +unified unify +unifies unify +unifying unify +unkenneled unkennel +unkenneling unkennel +unkennelled unkennel +unkennelling unkennel +unkennels unkennel +unknits unknit +unknitted unknit +unknitting unknit +unlaid unlay +unlaying unlay +unlays unlay +unlearned unlearn +unlearning unlearn +unlearns unlearn +unlearnt unlearn +unmade unmake +unmakes unmake +unmaking unmake +unmanned unman +unmanning unman +unmans unman +unpegged unpeg +unpegging unpeg +unpegs unpeg +unpinned unpin +unpinning unpin +unpins unpin +unplugged unplug +unplugging unplug +unplugs unplug +unraveled unravel +unraveling unravel +unravelled unravel +unravelling unravel +unravels unravel +unreeved unreeve +unreeves unreeve +unreeving unreeve +unrigged unrig +unrigging unrig +unrigs unrig +unripped unrip +unripping unrip +unrips unrip +unrove unreeve +unsaid unsay +unsaying unsay +unsays unsay +unshipped unship +unshipping unship +unships unship +unslinging unsling +unslings unsling +unslung unsling +unsnapped unsnap +unsnapping unsnap +unsnaps unsnap +unspeaking unspeak +unspeaks unspeak +unspoke unspeak +unspoken unspeak +unsteadied unsteady +unsteadies unsteady +unsteadying unsteady +unstepped unstep +unstepping unstep +unsteps unstep +unsticking unstick +unsticks unstick +unstopped unstop +unstopping unstop +unstops unstop +unstringing unstring +unstrings unstring +unstrung unstring +unstuck unstick +unswearing unswear +unswears unswear +unswore unswear +unsworn unswear +untaught unteach +unteaches unteach +unteaching unteach +unthinking unthink +unthinks unthink +unthought unthink +untidied untidy +untidies untidy +untidying untidy +untied untie +unties untie +untreading untread +untreads untread +untrod untread +untrodden untread +untying untie +unwinding unwind +unwinds unwind +unwound unwind +unwrapped unwrap +unwrapping unwrap +unwraps unwrap +unzipped unzip +unzipping unzip +unzips unzip +upbuilding upbuild +upbuilds upbuild +upbuilt upbuild +upcasting upcast +upcasts upcast +upheaved upheave +upheaves upheave +upheaving upheave +upheld uphold +upholding uphold +upholds uphold +uphove upheave +upped up +uppercuts uppercut +uppercutting uppercut +upping up +uprisen uprise +uprises uprise +uprising uprise +uprose uprise +ups up +upsets upset +upsetting upset +upsprang upspring +upspringing upspring +upsprings upspring +upsprung upspring +upsweeping upsweep +upsweeps upsweep +upswelled upswell +upswelling upswell +upswells upswell +upswept upsweep +upswinging upswing +upswings upswing +upswollen upswell +upswung upswing +vagged vag +vagging vag +vags vag +valued value +values value +valuing value +varied vary +varies vary +varying vary +vats vat +vatted vat +vatting vat +verbified verbify +verbifies verbify +verbifying verbify +verified verify +verifies verify +verifying verify +versified versify +versifies versify +versifying versify +vetoed veto +vetoes veto +vetoing veto +vets vet +vetted vet +vetting vet +victualed victual +victualing victual +victualled victual +victualling victual +victuals victual +vied vie +vies vie +vilified vilify +vilifies vilify +vilifying vilify +visaed visa +visaing visa +visas visa +vitrified vitrify +vitrifies vitrify +vitrifying vitrify +vitrioled vitriol +vitrioling vitriol +vitriolled vitriol +vitriolling vitriol +vitriols vitriol +vivaed viva +vivaing viva +vivas viva +vivified vivify +vivifies vivify +vivifying vivify +voodooed voodoo +voodooing voodoo +voodoos voodoo +vying vie +wadded wad +waddied waddy +waddies waddy +wadding wad +waddying waddy +wads wad +wadsets wadset +wadsetted wadset +wadsetting wadset +wagged wag +wagging wag +wags wag +wakes wake +waking wake +wanned wan +wanning wan +wans wan +warred war +warring war +wars war +was be +water-ski'd water-ski +water-skied water-ski +water-skiing water-ski +water-skis water-ski +waylaid waylay +waylaying waylay +waylays waylay +wearied weary +wearies weary +wearing wear +wears wear +wearying weary +weatherstripped weatherstrip +weatherstripping weatherstrip +weaved weave +weaves weave +weaving weave +webbed web +webbing web +webs web +wedded wed +wedding wed +weds wed +weeping weep +weeps weep +went go +went_deep go_deep +wept weep +were be +wets wet +wetted wet +wetting wet +whammed wham +whamming wham +whams wham +whapped whap +whapping whap +whaps whap +whets whet +whetted whet +whetting whet +whinnied whinny +whinnies whinny +whinnying whinny +whipped whip +whipping whip +whips whip +whipsawed whipsaw +whipsawing whipsaw +whipsawn whipsaw +whipsaws whipsaw +whirred whir +whirring whir +whirs whir +whistle-stopped whistle-stop +whistle-stopping whistle-stop +whistle-stops whistle-stop +whizzed whiz +whizzes whiz +whizzing whiz +whopped whop +whopping whop +whops whop +wigged wig +wigging wig +wigs wig +wigwagged wigwag +wigwagging wigwag +wigwags wigwag +wildcats wildcat +wildcatted wildcat +wildcatting wildcat +winded wind +winding wind +window-shopped window-shop +window-shopping window-shop +window-shops window-shop +winds wind +winning win +wins win +winterfed winterfeed +winterfeeding winterfeed +winterfeeds winterfeed +wiredrawing wiredraw +wiredrawn wiredraw +wiredraws wiredraw +wiredrew wiredraw +withdrawing withdraw +withdrawn withdraw +withdraws withdraw +withdrew withdraw +withheld withhold +withholding withhold +withholds withhold +withstanding withstand +withstands withstand +withstood withstand +woke wake +woken wake +won win +wonned won +wonning won +wons won +wooed woo +wooing woo +woos woo +wore wear +worn wear +worried worry +worries worry +worrying worry +worshipped worship +worshipping worship +worships worship +wound wind +wove weave +woven weave +wrapped wrap +wrapping wrap +wraps wrap +wried wry +wries wry +wringing wring +wrings wring +writes write +writing write +written write +wrote write +wrought work +wrung wring +wrying wry +yakked yak +yakking yak +yaks yak +yapped yap +yapping yap +yaps yap +ycleped clepe +yclept clepe +yenned yen +yenning yen +yens yen +yodeled yodel +yodeling yodel +yodelled yodel +yodelling yodel +yodels yodel +zapped zap +zapping zap +zaps zap +zeroed zero +zeroes zero +zeroing zero +zigzagged zigzag +zigzagging zigzag +zigzags zigzag +zipped zip +zipping zip +zips zip diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6.exc.db b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6.exc.db new file mode 100644 index 0000000000000000000000000000000000000000..68cd6010c9392b3cea4b5488ee089cd993ee9b6f Binary files /dev/null and b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-1.6.exc.db differ diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/WordNet-2.0.exc.db b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/WordNet-2.0.exc.db new file mode 100644 index 0000000000000000000000000000000000000000..a7a14c7726d7f2b8ba608c742f9d8f44f47cf87e Binary files /dev/null and b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/WordNet-2.0.exc.db differ diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/adj.exc b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/adj.exc new file mode 100644 index 0000000000000000000000000000000000000000..e0532834421eeaf2a30ab4b060f6ef4def1c2144 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/adj.exc @@ -0,0 +1,1490 @@ +acer acer +after after +airier airy +airiest airy +all-arounder all-arounder +angrier angry +angriest angry +archer archer +artier arty +artiest arty +ashier ashy +ashiest ashy +assaulter assaulter +attacker attacker +backer backer +baggier baggy +baggiest baggy +balkier balky +balkiest balky +balmier balmy +balmiest balmy +bandier bandy +bandiest bandy +bargainer bargainer +barmier barmy +barmiest barmy +battier batty +battiest batty +baulkier baulky +baulkiest baulky +bawdier bawdy +bawdiest bawdy +bayer bayer +beadier beady +beadiest beady +beastlier beastly +beastliest beastly +beater beater +beefier beefy +beefiest beefy +beerier beery +beeriest beery +bendier bendy +bendiest bendy +best good +better good well +bigger big +biggest big +bitchier bitchy +bitchiest bitchy +biter biter +bittier bitty +bittiest bitty +blearier bleary +bleariest bleary +bloodier bloody +bloodiest bloody +bloodthirstier bloodthirsty +bloodthirstiest bloodthirsty +blowier blowy +blowiest blowy +blowsier blowsy +blowsiest blowsy +blowzier blowzy +blowziest blowzy +bluer blue +bluest blue +boner boner +bonier bony +boniest bony +bonnier bonny +bonniest bonny +boozier boozy +booziest boozy +boskier bosky +boskiest bosky +bossier bossy +bossiest bossy +botchier botchy +botchiest botchy +bother bother +bouncier bouncy +bounciest bouncy +bounder bounder +bower bower +brainier brainy +brainiest brainy +brashier brashy +brashiest brashy +brassier brassy +brassiest brassy +brawnier brawny +brawniest brawny +breathier breathy +breathiest breathy +breezier breezy +breeziest breezy +brinier briny +briniest briny +britisher britisher +broadcaster broadcaster +brooder brooder +broodier broody +broodiest broody +bubblier bubbly +bubbliest bubbly +buggier buggy +buggiest buggy +bulkier bulky +bulkiest bulky +bumpier bumpy +bumpiest bumpy +bunchier bunchy +bunchiest bunchy +burlier burly +burliest burly +burrier burry +burriest burry +burster burster +bushier bushy +bushiest bushy +busier busy +busiest busy +buster buster +bustier busty +bustiest busty +cagier cagey +cagiest cagey +camper camper +cannier canny +canniest canny +canter canter +cantier canty +cantiest canty +caster caster +catchier catchy +catchiest catchy +cattier catty +cattiest catty +cer cer +chancier chancy +chanciest chancy +charier chary +chariest chary +chattier chatty +chattiest chatty +cheekier cheeky +cheekiest cheeky +cheerier cheery +cheeriest cheery +cheesier cheesy +cheesiest cheesy +chestier chesty +chestiest chesty +chewier chewy +chewiest chewy +chillier chilly +chilliest chilly +chintzier chintzy +chintziest chintzy +chippier chippy +chippiest chippy +choosier choosy +choosiest choosy +choppier choppy +choppiest choppy +chubbier chubby +chubbiest chubby +chuffier chuffy +chuffiest chuffy +chummier chummy +chummiest chummy +chunkier chunky +chunkiest chunky +churchier churchy +churchiest churchy +clammier clammy +clammiest clammy +classier classy +classiest classy +cleanlier cleanly +cleanliest cleanly +clerklier clerkly +clerkliest clerkly +cloudier cloudy +cloudiest cloudy +clubbier clubby +clubbiest clubby +clumsier clumsy +clumsiest clumsy +cockier cocky +cockiest cocky +coder coder +collier colly +colliest colly +comelier comely +comeliest comely +comfier comfy +comfiest comfy +cornier corny +corniest corny +cosier cosy +cosiest cosy +costlier costly +costliest costly +costumer costumer +counterfeiter counterfeiter +courtlier courtly +courtliest courtly +cozier cozy +coziest cozy +crabbier crabby +crabbiest crabby +cracker cracker +craftier crafty +craftiest crafty +craggier craggy +craggiest craggy +crankier cranky +crankiest cranky +crasher crasher +crawlier crawly +crawliest crawly +crazier crazy +craziest crazy +creamer creamer +creamier creamy +creamiest creamy +creepier creepy +creepiest creepy +crispier crispy +crispiest crispy +crumbier crumby +crumbiest crumby +crumblier crumbly +crumbliest crumbly +crummier crummy +crummiest crummy +crustier crusty +crustiest crusty +curlier curly +curliest curly +customer customer +cuter cute +daffier daffy +daffiest daffy +daintier dainty +daintiest dainty +dandier dandy +dandiest dandy +deadlier deadly +deadliest deadly +dealer dealer +deserter deserter +dewier dewy +dewiest dewy +dicier dicey +diciest dicey +dimer dimer +dimmer dim +dimmest dim +dingier dingy +dingiest dingy +dinkier dinky +dinkiest dinky +dippier dippy +dippiest dippy +dirtier dirty +dirtiest dirty +dishier dishy +dishiest dishy +dizzier dizzy +dizziest dizzy +dodgier dodgy +dodgiest dodgy +dopier dopey +dopiest dopey +dottier dotty +dottiest dotty +doughier doughy +doughiest doughy +doughtier doughty +doughtiest doughty +dowdier dowdy +dowdiest dowdy +dowier dowie dowy +dowiest dowie dowy +downer downer +downier downy +downiest downy +dozier dozy +doziest dozy +drabber drab +drabbest drab +draftier drafty +draftiest drafty +draggier draggy +draggiest draggy +draughtier draughty +draughtiest draughty +dreamier dreamy +dreamiest dreamy +drearier dreary +dreariest dreary +dreggier dreggy +dreggiest dreggy +dresser dresser +dressier dressy +dressiest dressy +drier dry +driest dry +drippier drippy +drippiest drippy +drowsier drowsy +drowsiest drowsy +dryer dry +dryest dry +dumpier dumpy +dumpiest dumpy +dunner dun +dunnest dun +duskier dusky +duskiest dusky +dustier dusty +dustiest dusty +earlier early +earliest early +earthier earthy +earthiest earthy +earthlier earthly +earthliest earthly +easier easy +easiest easy +easter easter +eastsider eastsider +edger edger +edgier edgy +edgiest edgy +eerier eerie +eeriest eerie +emptier empty +emptiest empty +faker faker +fancier fancy +fanciest fancy +fatter fat +fattest fat +fattier fatty +fattiest fatty +faultier faulty +faultiest faulty +feistier feisty +feistiest feisty +feller feller +fiddlier fiddly +fiddliest fiddly +filmier filmy +filmiest filmy +filthier filthy +filthiest filthy +finnier finny +finniest finny +first-rater first-rater +first-stringer first-stringer +fishier fishy +fishiest fishy +fitter fit +fittest fit +flabbier flabby +flabbiest flabby +flaggier flaggy +flaggiest flaggy +flakier flaky +flakiest flaky +flasher flasher +flashier flashy +flashiest flashy +flatter flat +flattest flat +flauntier flaunty +flauntiest flaunty +fledgier fledgy +fledgiest fledgy +fleecier fleecy +fleeciest fleecy +fleshier fleshy +fleshiest fleshy +fleshlier fleshly +fleshliest fleshly +flightier flighty +flightiest flighty +flimsier flimsy +flimsiest flimsy +flintier flinty +flintiest flinty +floatier floaty +floatiest floaty +floppier floppy +floppiest floppy +flossier flossy +flossiest flossy +fluffier fluffy +fluffiest fluffy +flukier fluky +flukiest fluky +foamier foamy +foamiest foamy +foggier foggy +foggiest foggy +folder folder +folksier folksy +folksiest folksy +foolhardier foolhardy +foolhardiest foolhardy +fore-and-after fore-and-after +foreigner foreigner +forest forest +founder founder +foxier foxy +foxiest foxy +fratchier fratchy +fratchiest fratchy +freakier freaky +freakiest freaky +freer free +freest free +frenchier frenchy +frenchiest frenchy +friendlier friendly +friendliest friendly +friskier frisky +friskiest frisky +frizzier frizzy +frizziest frizzy +frizzlier frizzly +frizzliest frizzly +frostier frosty +frostiest frosty +frouzier frouzy +frouziest frouzy +frowsier frowsy +frowsiest frowsy +frowzier frowzy +frowziest frowzy +fruitier fruity +fruitiest fruity +funkier funky +funkiest funky +funnier funny +funniest funny +furrier furry +furriest furry +fussier fussy +fussiest fussy +fustier fusty +fustiest fusty +fuzzier fuzzy +fuzziest fuzzy +gabbier gabby +gabbiest gabby +gamier gamy +gamiest gamy +gammier gammy +gammiest gammy +gassier gassy +gassiest gassy +gaudier gaudy +gaudiest gaudy +gauzier gauzy +gauziest gauzy +gawkier gawky +gawkiest gawky +ghastlier ghastly +ghastliest ghastly +ghostlier ghostly +ghostliest ghostly +giddier giddy +giddiest giddy +gladder glad +gladdest glad +glassier glassy +glassiest glassy +glibber glib +glibbest glib +gloomier gloomy +gloomiest gloomy +glossier glossy +glossiest glossy +glummer glum +glummest glum +godlier godly +godliest godly +goer goer +goner goner +goodlier goodly +goodliest goodly +goofier goofy +goofiest goofy +gooier gooey +gooiest gooey +goosier goosy +goosiest goosy +gorier gory +goriest gory +gradelier gradely +gradeliest gradely +grader grader +grainier grainy +grainiest grainy +grassier grassy +grassiest grassy +greasier greasy +greasiest greasy +greedier greedy +greediest greedy +grimmer grim +grimmest grim +grislier grisly +grisliest grisly +grittier gritty +grittiest gritty +grizzlier grizzly +grizzliest grizzly +groggier groggy +groggiest groggy +groovier groovy +grooviest groovy +grottier grotty +grottiest grotty +grounder grounder +grouper grouper +groutier grouty +groutiest grouty +grubbier grubby +grubbiest grubby +grumpier grumpy +grumpiest grumpy +guest guest +guiltier guilty +guiltiest guilty +gummier gummy +gummiest gummy +gushier gushy +gushiest gushy +gustier gusty +gustiest gusty +gutsier gutsy +gutsiest gutsy +hairier hairy +hairiest hairy +halfways halfway +halter halter +hammier hammy +hammiest hammy +handier handy +handiest handy +happier happy +happiest happy +hardier hardy +hardiest hardy +hastier hasty +hastiest hasty +haughtier haughty +haughtiest haughty +hazier hazy +haziest hazy +header header +headier heady +headiest heady +healthier healthy +healthiest healthy +heartier hearty +heartiest hearty +heavier heavy +heaviest heavy +heftier hefty +heftiest hefty +hepper hep +heppest hep +herbier herby +herbiest herby +hinder hind +hipper hip +hippest hip +hippier hippy +hippiest hippy +hoarier hoary +hoariest hoary +holier holy +holiest holy +homelier homely +homeliest homely +homer homer +homier homey +homiest homey +hornier horny +horniest horny +horsier horsy +horsiest horsy +hotter hot +hottest hot +humpier humpy +humpiest humpy +hunger hunger +hungrier hungry +hungriest hungry +huskier husky +huskiest husky +icier icy +iciest icy +inkier inky +inkiest inky +insider insider +interest interest +jaggier jaggy +jaggiest jaggy +jammier jammy +jammiest jammy +jauntier jaunty +jauntiest jaunty +jazzier jazzy +jazziest jazzy +jerkier jerky +jerkiest jerky +jointer jointer +jollier jolly +jolliest jolly +juicier juicy +juiciest juicy +jumpier jumpy +jumpiest jumpy +kindlier kindly +kindliest kindly +kinkier kinky +kinkiest kinky +knottier knotty +knottiest knotty +knurlier knurly +knurliest knurly +kookier kooky +kookiest kooky +lacier lacy +laciest lacy +lairier lairy +lairiest lairy +lakier laky +lakiest laky +lander lander +lankier lanky +lankiest lanky +lathier lathy +lathiest lathy +layer layer +lazier lazy +laziest lazy +leafier leafy +leafiest leafy +leakier leaky +leakiest leaky +learier leary +leariest leary +leer leer +leerier leery +leeriest leery +left-hander left-hander +left-winger left-winger +leggier leggy +leggiest leggy +lengthier lengthy +lengthiest lengthy +ler ler +leveler leveler +limier limy +limiest limy +lippier lippy +lippiest lippy +liter liter +livelier lively +liveliest lively +liver liver +loather loather +loftier lofty +loftiest lofty +logier logy +logiest logy +lonelier lonely +loneliest lonely +loner loner +loonier loony +looniest loony +loopier loopy +loopiest loopy +lordlier lordly +lordliest lordly +lousier lousy +lousiest lousy +lovelier lovely +loveliest lovely +lowlander lowlander +lowlier lowly +lowliest lowly +luckier lucky +luckiest lucky +lumpier lumpy +lumpiest lumpy +lunier luny +luniest luny +lustier lusty +lustiest lusty +madder mad +maddest mad +mainer mainer +maligner maligner +maltier malty +maltiest malty +mangier mangy +mangiest mangy +mankier manky +mankiest manky +manlier manly +manliest manly +mariner mariner +marshier marshy +marshiest marshy +massier massy +massiest massy +matter matter +maungier maungy +maungiest maungy +mazier mazy +maziest mazy +mealier mealy +mealiest mealy +measlier measly +measliest measly +meatier meaty +meatiest meaty +meeter meeter +merrier merry +merriest merry +messier messy +messiest messy +miffier miffy +miffiest miffy +mightier mighty +mightiest mighty +milcher milcher +milker milker +milkier milky +milkiest milky +mingier mingy +mingiest mingy +minter minter +mirkier mirky +mirkiest mirky +miser miser +mistier misty +mistiest misty +mocker mocker +modeler modeler +modest modest +moldier moldy +moldiest moldy +moodier moody +moodiest moody +moonier moony +mooniest moony +mothier mothy +mothiest mothy +mouldier mouldy +mouldiest mouldy +mousier mousy +mousiest mousy +mouthier mouthy +mouthiest mouthy +muckier mucky +muckiest mucky +muddier muddy +muddiest muddy +muggier muggy +muggiest muggy +multiplexer multiplexer +murkier murky +murkiest murky +mushier mushy +mushiest mushy +muskier musky +muskiest musky +muster muster +mustier musty +mustiest musty +muzzier muzzy +muzziest muzzy +nappier nappy +nappiest nappy +nastier nasty +nastiest nasty +nattier natty +nattiest natty +naughtier naughty +naughtiest naughty +needier needy +neediest needy +nervier nervy +nerviest nervy +newsier newsy +newsiest newsy +niftier nifty +niftiest nifty +nippier nippy +nippiest nippy +nittier nitty +nittiest nitty +noisier noisy +noisiest noisy +northeasterner northeasterner +norther norther +northerner northerner +nosier nosy +nosiest nosy +number number +nuttier nutty +nuttiest nutty +offer off +offer offer +oilier oily +oiliest oily +old-timer old-timer +oliver oliver +oozier oozy +ooziest oozy +opener opener +outsider outsider +overcomer overcomer +overnighter overnighter +owner owner +pallier pally +palliest pally +palmier palmy +palmiest palmy +paltrier paltry +paltriest paltry +pappier pappy +pappiest pappy +parkier parky +parkiest parky +part-timer part-timer +passer passer +paster paster +pastier pasty +pastiest pasty +patchier patchy +patchiest patchy +pater pater +pawkier pawky +pawkiest pawky +peachier peachy +peachiest peachy +pearler pearler +pearlier pearly +pearliest pearly +pedaler pedaler +peppier peppy +peppiest peppy +perkier perky +perkiest perky +peskier pesky +peskiest pesky +peter peter +pettier petty +pettiest petty +phonier phony +phoniest phony +pickier picky +pickiest picky +piggier piggy +piggiest piggy +pinier piny +piniest piny +pitchier pitchy +pitchiest pitchy +pithier pithy +pithiest pithy +planer planer +plashier plashy +plashiest plashy +platier platy +platiest platy +player player +pluckier plucky +pluckiest plucky +plumber plumber +plumier plumy +plumiest plumy +plummier plummy +plummiest plummy +podgier podgy +podgiest podgy +pokier poky +pokiest poky +polisher polisher +porkier porky +porkiest porky +porter porter +portlier portly +portliest portly +poster poster +pottier potty +pottiest potty +preachier preachy +preachiest preachy +presenter presenter +pretender pretender +prettier pretty +prettiest pretty +pricier pricy +priciest pricy +pricklier prickly +prickliest prickly +priestlier priestly +priestliest priestly +primer primer +primmer prim +primmest prim +princelier princely +princeliest princely +printer printer +prissier prissy +prissiest prissy +privateer privateer +privier privy +priviest privy +prompter prompter +prosier prosy +prosiest prosy +pudgier pudgy +pudgiest pudgy +puffer puffer +puffier puffy +puffiest puffy +pulpier pulpy +pulpiest pulpy +punchier punchy +punchiest punchy +punier puny +puniest puny +pushier pushy +pushiest pushy +pussier pussy +pussiest pussy +quaggier quaggy +quaggiest quaggy +quakier quaky +quakiest quaky +queasier queasy +queasiest queasy +queenlier queenly +queenliest queenly +racier racy +raciest racy +rainier rainy +rainiest rainy +randier randy +randiest randy +rangier rangy +rangiest rangy +ranker ranker +rattier ratty +rattiest ratty +rattlier rattly +rattliest rattly +raunchier raunchy +raunchiest raunchy +readier ready +readiest ready +recorder recorder +redder red +reddest red +reedier reedy +reediest reedy +renter renter +retailer retailer +right-hander right-hander +right-winger right-winger +rimier rimy +rimiest rimy +riskier risky +riskiest risky +ritzier ritzy +ritziest ritzy +roaster roaster +rockier rocky +rockiest rocky +roilier roily +roiliest roily +rookier rooky +rookiest rooky +roomier roomy +roomiest roomy +ropier ropy +ropiest ropy +rosier rosy +rosiest rosy +rowdier rowdy +rowdiest rowdy +ruddier ruddy +ruddiest ruddy +runnier runny +runniest runny +rusher rusher +rushier rushy +rushiest rushy +rustier rusty +rustiest rusty +ruttier rutty +ruttiest rutty +sadder sad +saddest sad +salter salter +saltier salty +saltiest salty +sampler sampler +sandier sandy +sandiest sandy +sappier sappy +sappiest sappy +sassier sassy +sassiest sassy +saucier saucy +sauciest saucy +savvier savvy +savviest savvy +scabbier scabby +scabbiest scabby +scalier scaly +scaliest scaly +scantier scanty +scantiest scanty +scarier scary +scariest scary +scraggier scraggy +scraggiest scraggy +scragglier scraggly +scraggliest scraggly +scraper scraper +scrappier scrappy +scrappiest scrappy +scrawnier scrawny +scrawniest scrawny +screwier screwy +screwiest screwy +scrubbier scrubby +scrubbiest scrubby +scruffier scruffy +scruffiest scruffy +scungier scungy +scungiest scungy +scurvier scurvy +scurviest scurvy +seamier seamy +seamiest seamy +second-rater second-rater +seconder seconder +seedier seedy +seediest seedy +seemlier seemly +seemliest seemly +serer serer +sexier sexy +sexiest sexy +shabbier shabby +shabbiest shabby +shadier shady +shadiest shady +shaggier shaggy +shaggiest shaggy +shakier shaky +shakiest shaky +shapelier shapely +shapeliest shapely +shier shy +shiest shy +shiftier shifty +shiftiest shifty +shinier shiny +shiniest shiny +shirtier shirty +shirtiest shirty +shoddier shoddy +shoddiest shoddy +showier showy +showiest showy +shrubbier shrubby +shrubbiest shrubby +shyer shy +shyest shy +sicklier sickly +sickliest sickly +sightlier sightly +sightliest sightly +signaler signaler +signer signer +silkier silky +silkiest silky +sillier silly +silliest silly +sketchier sketchy +sketchiest sketchy +skewer skewer +skimpier skimpy +skimpiest skimpy +skinnier skinny +skinniest skinny +slaphappier slaphappy +slaphappiest slaphappy +slatier slaty +slatiest slaty +slaver slaver +sleazier sleazy +sleaziest sleazy +sleepier sleepy +sleepiest sleepy +slier sly +sliest sly +slimier slimy +slimiest slimy +slimmer slim +slimmest slim +slimsier slimsy +slimsiest slimsy +slinkier slinky +slinkiest slinky +slippier slippy +slippiest slippy +sloppier sloppy +sloppiest sloppy +slyer sly +slyest sly +smarmier smarmy +smarmiest smarmy +smellier smelly +smelliest smelly +smokier smoky +smokiest smoky +smugger smug +smuggest smug +snakier snaky +snakiest snaky +snappier snappy +snappiest snappy +snatchier snatchy +snatchiest snatchy +snazzier snazzy +snazziest snazzy +sneaker sneaker +sniffier sniffy +sniffiest sniffy +snootier snooty +snootiest snooty +snottier snotty +snottiest snotty +snowier snowy +snowiest snowy +snuffer snuffer +snuffier snuffy +snuffiest snuffy +snugger snug +snuggest snug +soapier soapy +soapiest soapy +soggier soggy +soggiest soggy +solder solder +sonsier sonsy +sonsiest sonsy +sootier sooty +sootiest sooty +soppier soppy +soppiest soppy +sorrier sorry +sorriest sorry +soupier soupy +soupiest soupy +souther souther +southerner southerner +speedier speedy +speediest speedy +spicier spicy +spiciest spicy +spiffier spiffy +spiffiest spiffy +spikier spiky +spikiest spiky +spindlier spindly +spindliest spindly +spinier spiny +spiniest spiny +splashier splashy +splashiest splashy +spongier spongy +spongiest spongy +spookier spooky +spookiest spooky +spoonier spoony +spooniest spoony +sportier sporty +sportiest sporty +spottier spotty +spottiest spotty +spreader spreader +sprier spry +spriest spry +sprightlier sprightly +sprightliest sprightly +springer springer +springier springy +springiest springy +squashier squashy +squashiest squashy +squatter squat +squattest squat +squattier squatty +squattiest squatty +squiffier squiffy +squiffiest squiffy +stagier stagy +stagiest stagy +stalkier stalky +stalkiest stalky +stapler stapler +starchier starchy +starchiest starchy +starer starer +starest starest +starrier starry +starriest starry +statelier stately +stateliest stately +steadier steady +steadiest steady +stealthier stealthy +stealthiest stealthy +steamier steamy +steamiest steamy +stingier stingy +stingiest stingy +stiper striper +stocker stocker +stockier stocky +stockiest stocky +stodgier stodgy +stodgiest stodgy +stonier stony +stoniest stony +stormier stormy +stormiest stormy +streakier streaky +streakiest streaky +streamier streamy +streamiest streamy +stretcher stretcher +stretchier stretchy +stretchiest stretchy +stringier stringy +stringiest stringy +stripier stripy +stripiest stripy +stronger strong +strongest strong +stroppier stroppy +stroppiest stroppy +stuffier stuffy +stuffiest stuffy +stumpier stumpy +stumpiest stumpy +sturdier sturdy +sturdiest sturdy +submariner submariner +sulkier sulky +sulkiest sulky +sultrier sultry +sultriest sultry +sunnier sunny +sunniest sunny +surlier surly +surliest surly +swagger swagger +swankier swanky +swankiest swanky +swarthier swarthy +swarthiest swarthy +sweatier sweaty +sweatiest sweaty +tackier tacky +tackiest tacky +talkier talky +talkiest talky +tangier tangy +tangiest tangy +tanner tan +tannest tan +tardier tardy +tardiest tardy +tastier tasty +tastiest tasty +tattier tatty +tattiest tatty +tawdrier tawdry +tawdriest tawdry +techier techy +techiest techy +teenager teenager +teenier teeny +teeniest teeny +teetotaler teetotaler +tester tester +testier testy +testiest testy +tetchier tetchy +tetchiest tetchy +thinner thin +thinnest thin +third-rater third-rater +thirstier thirsty +thirstiest thirsty +thornier thorny +thorniest thorny +threadier thready +threadiest thready +thriftier thrifty +thriftiest thrifty +throatier throaty +throatiest throaty +tidier tidy +tidiest tidy +timelier timely +timeliest timely +tinier tiny +tiniest tiny +tinnier tinny +tinniest tinny +tipsier tipsy +tipsiest tipsy +tonier tony +toniest tony +toothier toothy +toothiest toothy +toper toper +touchier touchy +touchiest touchy +trader trader +trashier trashy +trashiest trashy +trendier trendy +trendiest trendy +trickier tricky +trickiest tricky +tricksier tricksy +tricksiest tricksy +trimer trimer +trimmer trim +trimmest trim +truer true +truest true +trustier trusty +trustiest trusty +tubbier tubby +tubbiest tubby +turfier turfy +turfiest turfy +tweedier tweedy +tweediest tweedy +twiggier twiggy +twiggiest twiggy +uglier ugly +ugliest ugly +unfriendlier unfriendly +unfriendliest unfriendly +ungainlier ungainly +ungainliest ungainly +ungodlier ungodly +ungodliest ungodly +unhappier unhappy +unhappiest unhappy +unhealthier unhealthy +unhealthiest unhealthy +unholier unholy +unholiest unholy +unrulier unruly +unruliest unruly +untidier untidy +untidiest untidy +vastier vasty +vastiest vasty +vest vest +viewier viewy +viewiest viewy +wackier wacky +wackiest wacky +wanner wan +wannest wan +warier wary +wariest wary +washier washy +washiest washy +waster waster +wavier wavy +waviest wavy +waxier waxy +waxiest waxy +weaklier weakly +weakliest weakly +wealthier wealthy +wealthiest wealthy +wearier weary +weariest weary +webbier webby +webbiest webby +weedier weedy +weediest weedy +weenier weeny +weeniest weeny +weensier weensy +weensiest weensy +weepier weepy +weepiest weepy +weightier weighty +weightiest weighty +welsher welsher +wetter wet +wettest wet +whackier whacky +whackiest whacky +whimsier whimsy +whimsiest whimsy +wholesaler wholesaler +wieldier wieldy +wieldiest wieldy +wilier wily +wiliest wily +windier windy +windiest windy +winier winy +winiest winy +winterier wintery +winteriest wintery +wintrier wintry +wintriest wintry +wirier wiry +wiriest wiry +wispier wispy +wispiest wispy +wittier witty +wittiest witty +wonkier wonky +wonkiest wonky +woodier woody +woodiest woody +woodsier woodsy +woodsiest woodsy +woollier woolly +woolliest woolly +woozier woozy +wooziest woozy +wordier wordy +wordiest wordy +worldlier worldly +worldliest worldly +wormier wormy +wormiest wormy +worse bad +worst bad +worthier worthy +worthiest worthy +wrier wry +wriest wry +wryer wry +wryest wry +yarer yare +yarest yare +yeastier yeasty +yeastiest yeasty +younger young +youngest young +yummier yummy +yummiest yummy +zanier zany +zaniest zany +zippier zippy +zippiest zippy diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/adv.exc b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/adv.exc new file mode 100644 index 0000000000000000000000000000000000000000..5ddf0851d905b745a4c751a1fd2a0983aae76bdd --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/adv.exc @@ -0,0 +1,7 @@ +best well +better well +deeper deeply +farther far +further far +harder hard +hardest hard diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/buildExeptionDB.pl b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/buildExeptionDB.pl new file mode 100644 index 0000000000000000000000000000000000000000..45c35df6414d074e858a875eea4dc3f852c3a197 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/buildExeptionDB.pl @@ -0,0 +1,21 @@ +#!/usr/bin/perl -w +use DB_File; +@ARGV!=3&&die "Usage: buildExceptionDB.pl WordNet-exception-file-directory exception-file-extension output-file\n"; +opendir(DIR,$ARGV[0])||die "Cannot open directory $ARGV[0]\n"; +tie %exceptiondb,'DB_File',"$ARGV[2]",O_CREAT|O_RDWR,0640,$DB_HASH or + die "Cannot open exception db file for output: $ARGV[2]\n"; +while(defined($file=readdir(DIR))) { + if($file=~/\.$ARGV[1]$/o) { + print $file,"\n"; + open(IN,"$file")||die "Cannot open exception file: $file\n"; + while(defined($line=)) { + chomp($line); + @tmp=split(/\s+/,$line); + $exceptiondb{$tmp[0]}=$tmp[1]; + print $tmp[0],"\n"; + } + close(IN); + } +} +untie %exceptiondb; + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/noun.exc b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/noun.exc new file mode 100644 index 0000000000000000000000000000000000000000..a547fce0e8e0984184db37a660c9b1a6c4ca1e7d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/noun.exc @@ -0,0 +1,2041 @@ +aardwolves aardwolf +abaci abacus +aboideaux aboideau +aboiteaux aboiteau +abscissae abscissa +acanthi acanthus +acari acarus +acciaccature acciaccatura +acetabula acetabulum +achaemenidae achaemenid +achaemenides achaemenid +acicula aciculum +aciculae acicula +acini acinus +acre-feet acre-foot +acromia acromion +actiniae actinia +actinozoa actinozoan +addenda addendum +adenocarcinomata adenocarcinoma +adenomata adenoma +adieux adieu +adyta adytum +aecia aecium +aecidia aecidium +aerobia aerobium +agents-general agent-general +aggiornamenti aggiornamento +agnomina agnomen +agones agon +agorae agora +agouties agouti +aides-de-camp aide-de-camp +aides-memoire aide-memoire +aids-de-camp aid-de-camp +alae ala +alewives alewife +alkalies alkali +allodia allodium +alluvia alluvium +alodia alodium +alto-relievos alto-relievo alto-rilievo +altocumuli altocumulus +altostrati altostratus +alulae alula +alumnae alumna +alumni alumnus +alveoli alveolus +amanuenses amanuensis +ambulacra ambulacrum +amebae ameba +amici_curiae amicus_curiae +amnia amnion +amniocenteses amniocentesis +amoebae amoeba +amoebiases amoebiasis +amoraim amora +amoretti amoretto +amorini amorino +amphiarthroses amphiarthrosis +amphicia amphithecium +amphimixes amphimixis +amphioxi amphioxus +amphisbaenae amphisbaena +amphorae amphora +ampullae ampulla +amygdalae amygdala +anabases anabasis +anacolutha anacoluthon +anacruses anacrusis +anaerobia anaerobium +anagnorises anagnorisis +analemmata analemma +analyses analysis +anamneses anamnesis +anamorphoses anamorphosis +anastomoses anastomosis +anatyxes anaptyxis +ancones ancon ancone +androclinia androclinium +androecia androecium +androsphinges androsphinx +andtheridia antheridium +angelfishes angelfish +angiomata angioma +animalcula animalculum +anlagen anlage +annattos anatto annatto +annuli annulus +antae anta +antalkalies antalkali +antefixa antefix +antennae antenna +antependia antependium +anthelia anthelion +anthelices anthelix +anthemia anthemion +antheridia antheridium +anthodia anthodium +anthozoa anthozoan +anthraces anthrax +anticlinoria anticlinorium +antihelices antihelix +antiheroes antihero +antisera antiserum +antitheses antithesis +antitragi antitragus +antra antrum +anus anus +aortae aorta +aphelia aphelion +aphides aphis +apices apex +apodoses apodosis +apomixes apomixis +aponeuroses aponeurosis +apophyses apophysis +aposiopeses aposiopesis +apothecia apothecium +apotheoses apotheosis +apparatus apparatus +appendices appendix +appoggiature appoggiatura +apsides apsis +aquae aqua +aquaria aquarium +araglis argali +arboreta arboretum +arcana arcanum +archegonia archegonium +archerfishes archerfish +archesporia archesporium +archipelagoes archipelago +arcs-boutants arc-boutant +areolae areola +argali argali +argumenta argumentum +ariette arietta +aristae arista +armamentaria armamentarium +arses arsis +artal rotl +artel rotl +arterioscleroses arteriosclerosis +aruspices aruspex +asceses ascesis +asci ascus +ascidia ascidium +ascogonia ascogonium +ashkenazim ashkenazi +aspergilla aspergillum +aspergilli aspergillus +aspergilloses aspergillosis +aspersoria aspersorium +assegais assagai assegai +astragali astragalus +asyndeta asyndeton +atheromata atheroma +atheroscleroses atherosclerosis +atmolyses atmolysis +atria atrium +attorneys-at-law attorney-at-law +auditoria auditorium +aurae aura +aurar eyrir +aurei aureus +auriculae auricula +aurorae aurora +auspices auspex auspice +autocatalyses autocatalysis +autochthones autochthon +automata automaton +autos-da-fe auto-da-fe +avitaminoses avitaminosis +axes ax axis +axillae axilla +bacchantes bacchant bacchante +bacchii bacchius +bacilli bacillus +bacteriostases bacteriostasis +bacula baculum +bains-marie bain-marie +bains_marie bain_marie +ballistae ballista +bambini bambino +bandeaux bandeau +banditti bandit +bani ban +banjoes banjo +barklice barklouse +barramundies barramundi +bases base basis +bases-on-balls base_on_balls +bases_on_balls base_on_balls +basidia basidium +basileis basileus +bassi basso +bastinadoes bastinado +bateaux bateau +batfishes batfish +beadsmen beadsman bedesman +beaux beau +beches-de-mer beche-de-mer +beeves beef +behooves behoof +bersaglieri bersagliere +bhishties bheesty bhishti +bibliothecae bibliotheca +bicennaries bicentenary bicentennial +bijoux bijou +bilboes bilbo +billets-doux billet-doux +billfishes billfish +bimboes bimbo +bisectrices bisectrix +blackfeet blackfoot +blackfishes blackfish +blastemata blastema +blastulae blastula +blindfishes blindfish +blowfishes blowfish +bluefishes bluefish +boarfishes boarfish +bok boschbok +boleti boletus +bolivares bolivar +bolsheviki bolshevik +bonefishes bonefish +bongoes bongo +bonitoes bonito +booklice booklouse +bookshelves bookshelf +boraces borax +borborygmi borborygmus +bordereaux bordereau +botargoes botargo +box-kodaks box_kodak +boxfishes boxfish +brachia brachium +brainchildren brainchild +branchiae branchia +brants brant brent +bravadoes bravado +bravoes bravo +bregmata bregma +brethren brother +broadcast_media broadcast_medium +broadleaves broadleaf +bronchi bronchus +brothers-in-law brother-in-law +bryozoa bryozoan +buboes bubo +buckoes bucko +buckteeth bucktooth +buffaloes buffalo +bullae bulla +bunde bund +bureaux bureau +bureaux_de_change bureau_de_change +bursae bursa +bushbok boschbok +bushboks boschbok +busses bus +butterfishes butterfish +byssi byssus +cacti cactus +caducei caduceus +caeca caecum +caesurae caesura +calami calamus +calathi calathus +calcanei calcaneum calcaneus +calces calx +calculi calculus +caldaria caldarium +calices calix +calicoes calico +calli callus +calves calf +calyces calyx +cambia cambium +camerae camera +canaliculi canaliculus +candelabra candelabrum +candlefishes candlefish +canthi canthus +canulae canula +canzoni canzone +capita caput +capitula capitulum +capricci capriccio +carabinieri carabiniere +carbonadoes carbonado +carcinomata carcinoma +cargoes cargo +carides caryatid +carinae carina +caroli carolus +carpi carpus +carpogonia carpogonium +carryings-on carrying-on +caryopses caryopsis +caryopsides caryopsis +castrati castrato +catabases catabasis +cataclases cataclasis +cataloes catalo +catalyses catalysis +catenae catena +catfishes catfish +cathari cathar +cathexes cathexis +cattaloes cattalo +caudices caudex +caules caulis +cavatine cavatina +cavefishes cavefish +cavetti cavetto +cavo-rilievi cavo-rilievo +ceca cecum +cellae cella +cembali cembalo +centesimi centesimo +centra centrum +cephalothoraces cephalothorax +cercariae cercaria +cercariiae cercaria +cerci cercus +cerebella cerebellum +cerebra cerebrum +cervices cervix +cestuses caestus +cesurae cesura +chadarim cheder +chaetae chaeta +chaises_longues chaise_longue +chalazae chalaza +challoth hallah +chalutzim chalutz +chapaties chapati +chapatties chapatti +chapeaux chapeau +chasidim chasid +chassidim chassid +chateaux chateau +chazanim chazan +chedarim cheder +chefs-d'ouvre chef-d'ouvre +chelae chela +chelicerae chelicera +cherubim cherub +chevaux-de-frise cheval-de-frise +chiasmata chiasma +chiasmi chiasmus +children child +chillies chilli +chinese_eddoes chinese_eddo +chitarroni chitarrone +chlamydes chlamys +chlamyses chlamys +chondromata chondroma +choragi choragus +choriambi choriambus +choux chou +chromonemata chromonema +chrysalides chrysalis +chuvashes chuvash +ciboria ciborium +cicadae cicada +cicale cicala +cicatrices cicatrix +ciceroni cicerone +cicisbei cicisbeo +cilia cilium +cimices cimex +cineraria cinerarium +cingula cingulum +cirri cirrus +cirrocumuli cirrocumulus +cirrostrati cirrostratus +ciscoes cisco +cisternae cisterna +clani clarino +clanos clarino +claroes claro +clepsydrae clepsydra +clinandria clinandrium +clingfishes clingfish +clitella clitellum +cloacae cloaca +clostridia clostridium +cloverleaves cloverleaf +clypei clypeus +coagula coagulum +coalfishes coalfish +cocci coccus +coccyges coccyx +cochleae cochlea +codfishes codfish +codices codex +coelentera coelenteron +coenuri coenurus +cognomina cognomen +cola colon +coleorhizae coleorhiza +collegia collegium +colloquia colloquium +colluvia colluvium +collyria collyrium +colones colon +colossi colossus +columbaria columbarium +columellae columella +comae coma +comatulae comatula +comedones comedo +comics comic_strip comic +commandoes commando +concertanti concertante +concerti concerto +concerti_grossi concerto_grosso +concertini concertino +conchae concha +condottieri condottiere +condylomata condyloma +confervae conferva +congii congius +conidia conidium +conjunctivae conjunctiva +conquistadores conquistador +consortia consortium +contagia contagium +continua continuum +contralti contralto +conversazioni conversazione +convolvuli convolvulus +cooks-general cook-general +copulae copula +corbiculae corbicula +coria corium +corneae cornea +cornua cornu +coronae corona +corpora corpus +corpora_lutea corpus_luteum +corpora_striata corpus_striatum +corrigenda corrigendum +cortices cortex +cortinae cortina +corybantes corybant +coryphaei coryphaeus +costae costa +cothurni cothurnus +courts_martial court_martial +couteaux couteau +cowfishes cowfish +coxae coxa +cramboes crambo +crania cranium +crases crasis +crawfishes crawfish +crayfishes crayfish +credenda credendum +crematoria crematorium +crescendi crescendo +cribella cribellum +crises crisis +crissa crissum +cristae crista +criteria criterion +cruces crux +crura crus +crusadoes crusado +cruzadoes cruzado +crying cry +cryings cry +ctenidia ctenidium +cubicula cubiculum +culices culex +culpae culpa +culs-de-sac cul-de-sac +culti cultus +cumuli cumulus +cumulonimbi cumulonimbus +cumulostrati cumulostratus +curiae curia +curricula curriculum +custodes custos +cutes cutis +cuticulae cuticula +cuttlefishes cuttlefish +cyclopes cyclops +cycloses cyclosis +cylices cylix +cylikes cylix +cymae cyma +cymatia cymatium +cypselae cypsela +cysticerci cysticercus +dadoes dado +dagoes dago +damselfishes damselfish +data datum +daughters-in-law daughter-in-law +daymio daimio +daymios daimio +dealfishes dealfish +decemviri decemvir +decennia decennium +deciduae decidua +definienda definiendum +definientia definiens +delphinia delphinium +denarii denarius +dentalia dentalium +dermatoses dermatosis +desiderata desideratum +desperadoes desperado +devilfishes devilfish +diaereses diaeresis +diaerses diaeresis +diagnoses diagnosis +dialyses dialysis +diaphyses diaphysis +diapophyses diapophysis +diarthroses diarthrosis +diastalses diastalsis +diastases diastasis +diastemata diastema +diathses diathesis +diazoes diazo +dibbukkim dibbuk +dichasia dichasium +dicta dictum +didoes dido +diereses dieresis +dieses diesis +differentiae differentia +dilettanti dilettante +diluvia diluvium +dingoes dingo +diplococci diplococcus +directors-general director-general +disci discus +discoboli discobolos discobolus +dive diva +diverticula diverticulum +divertimenti divertimento +djinn djinni djinny +dodoes dodo +dogfishes dogfish +dogmata dogma +dogteeth dogtooth +dollarfishes dollarfish +domatia domatium +dominoes domino +dormice dormouse +dorsa dorsum +drachmae drachma +drawknives drawknife +drosophilae drosophila +drumfishes drumfish +dryades dryad +dui duo +duona duodenum +duonas duodenum +dupondii dupondius +duumviri duumvir +dwarves dwarf +dybbukkim dybbuk +ecchymoses ecchymosis +ecclesiae ecclesia +ecdyses ecdysis +echidnae echidna +echini echinus +echinococci echinococcus +echoes echo +ectozoa ectozoan +eddoes eddo +edemata edema +effluvia effluvium +eidola eidolon +eisegeses eisegesis +eisteddfodau eisteddfod +elenchi elenchus +ellipses ellipsis +eluvia eluvium +elves elf +elytra elytron elytrum +embargoes embargo +emboli embolus +emphases emphasis +emporia emporium +enarthroses enarthrosis +encephala encephalon +encephalitides encephalitis +encephalomata encephaloma +enchiridia enchiridion +enchondromata enchondroma +encomia encomium +endamebae endameba +endamoebae endamoeba +endocardia endocardium +endocrania endocranium +endometria endometrium +endostea endosteum +endostoses endostosis +endothecia endothecium +endothelia endothelium +endotheliomata endothelioma +endozoa endozoan +enemata enema +enneahedra enneahedron +entamebae entameba +entamoebae entamoeba +entases entasis +entera enteron +entia ens +entozoa entozoan entozoon +epencephala epencephalon +epentheses epenthesis +epexegeses epexegesis +ephemera ephemeron +ephemerae ephemera +ephemerides ephemeris +ephori ephor +epicalyces epicalyx +epicanthi epicanthus +epicardia epicardium +epicedia epicedium +epicleses epiclesis +epididymides epididymis +epigastria epigastrium +epiglottides epiglottis +epimysia epimysium +epiphenomena epiphenomenon +epiphyses epiphysis +episterna episternum +epithalamia epithalamion epithalamium +epithelia epithelium +epitheliomata epithelioma +epizoa epizoan epizoon +epyllia epyllion +equilibria equilibrium +equiseta equisetum +eringoes eringo +errata erratum +eryngoes eryngo +esophagi esophagus +etyma etymon +eucalypti eucalyptus +eupatridae eupatrid +euripi euripus +exanthemata exanthema +executrices executrix +exegeses exegesis +exempla exemplum +exordia exordium +exostoses exostosis +extrema extremum +eyeteeth eyetooth +fabliaux fabliau +faciae facia +faculae facula +faeroese faeroese +fallfishes fallfish +famuli famulus +farmers-general farmer-general +faroese faroese +farragoes farrago +fasciae fascia +fasciculi fasciculus +fathers-in-law father-in-law +fatsoes fatso +faunae fauna +feculae fecula +fedayeen fedayee +feet foot +fellaheen fellah +fellahin fellah +felones_de_se felo_de_se +felos_de_se felo_de_se +femora femur +fenestellae fenestella +fenestrae fenestra +feriae feria +fermate fermata +ferulae ferula +festschriften festschrift +fetiales fetial +fezzes fez +fiascoes fiasco +fibrillae fibrilla +fibromata fibroma +fibulae fibula +ficoes fico +fideicommissa fideicommissum +fieldmice fieldmouse +figs. fig. +fila filum +filariiae filaria +filefishes filefish +fimbriae fimbria +fishes fish +fishwives fishwife +fistulae fistula +flabella flabellum +flagella flagellum +flagstaves flagstaff +flambeaux flambeau +flamines flamen +flamingoes flamingo +flatfeet flatfoot +flatfishes flatfish +fleurs-de-lis fleur-de-lis +fleurs-de-lys fleur-de-lys +flights_of_stairs flight_of_stairs +flittermice flittermouse +flocci floccus +flocculi flocculus +florae flora +floreant. floreat +florilegia florilegium +flowers-de-luce flower-de-luce +flyleaves flyleaf +foci focus +folia folium +fora forum +foramina foramen +forceps forceps +forefeet forefoot +foreteeth foretooth +formicaria formicarium +formulae formula +fornices fornix +fortes fortis +fossae fossa +foveae fovea +foveolae foveola +fractocumuli fractocumulus +fractostrati fractostratus +fraena fraenum +frauen frau +frena frenum +frenula frenulum +frescoes fresco +fricandeaux fricandeau +fricandoes fricando +frijoles frijol +frogfishes frogfish +frontes frons +frusta frustum +fuci fucus +fulcra fulcrum +fumatoria fumatorium +fundi fundus +fungi fungus +funiculi funiculus +furcula furculum +furculae furcula +furfures furfur +galeae galea +gambadoes gambado +gametangia gametangium +gametoecia gametoecium +gammadia gammadion +ganglia ganglion +garfishes garfish +gas gas +gasses gas +gastrulae gastrula +gateaux gateau +gazeboes gazebo +geckoes gecko +geese goose +gelsemia gelsemium +gemboks gemsbok +gembucks gemsbuck +gemeinschaften gemeinschaft +gemmae gemma +genera genus +generatrices generatrix +geneses genesis +genii genius +gentes gens +gentlemen-at-arms gentleman-at-arms +gentlemen-farmers gentleman-farmer +genua genu +genus genus +germina germen +gesellschaften gesellschaft +gestalten gestalt +ghettoes ghetto +gingivae gingiva +gingkoes gingko +ginglymi ginglymus +ginkgoes ginkgo +gippoes gippo +glabellae glabella +gladioli gladiolus +glandes glans +gliomata glioma +glissandi glissando +globefishes globefish +globigerinae globigerina +glochidcia glochidium +glochidia glochidium +glomeruli glomerulus +glossae glossa +glottides glottis +glutaei glutaeus +glutei gluteus +gnoses gnosis +goatfishes goatfish +goboes gobo +godchildren godchild +goes go +goings-over going-over +goldfishes goldfish +gomphoses gomphosis +gonia gonion +gonidia gonidium +gonococci gonococcus +goodwives goodwife +goosefishes goosefish +gorgoneia gorgoneion +gospopoda gospodin +governors_general governor_general +goyim goy +grafen graf +graffiti graffito +grandchildren grandchild +grants-in-aid grant-in-aid +granulomata granuloma +gravamina gravamen +grig-gris gris-gris +groszy grosz +grottoes grotto +guilder guilde +guilders guilde guilder +guitarfishes guitarfish +gummata gumma +gurnard gurnar +gurnards gurnar gurnard +guttae gutta +gymnasia gymnasium +gynaecea gynaeceum +gynaecia gynaecium +gynecea gynecium +gynecia gynecium +gynoecea gynoecium +gynoecia gynoecium +gyri gyrus +hadarim heder +hadjes hadj +haematolyses haematolysis +haematomata haematoma +haematozoa haematozoon +haemodialyses haemodialysis +haemolyses haemolysis +haemoptyses haemoptysis +haeredes haeres +haftaroth haftarah +hagfishes hagfish +haggadas haggada haggadah +haggadoth haggada +hajjes hajj +haleru haler +hallot hallah +halloth hallah +halluces hallux +haloes halo +halteres halter haltere +halves half +hamuli hamulus +hangers-on hanger-on +haphtaroth haphtarah +haredim haredi +haruspices haruspex +hasidim hasid +hassidim hassid +haustella haustellum +haustoria haustorium +hazzanim hazzan +hectocotyli hectocotylus +heirs-at-law heir-at-law +heldentenore heldentenor +helices helix +heliozoa heliozoan +hematolyses hematolysis +hematomata hematoma +hematozoa hematozoon +hemelytra hemelytron +hemielytra hemielytron +hemodialyses hemodialysis +hemolyses hemolysis +hemoptyses hemoptysis +hendecahedra hendecahedron +hens-and-chickens hen-and-chickens +heraclidae heraclid +heraklidae heraklid +herbaria herbarium +hermae herm herma +hermai herma +herniae hernia +heroes hero +herren herr +hetaerae hetaera +hetairai hetaira +hibernacula hibernaculum +hieracosphinges hieracosphinx +hila hilum +hili hilus +himatia himation +hippocampi hippocampus +hippopotami hippopotamus +his his +hoboes hobo +hogfishes hogfish +homunculi homunculus +honoraria honorarium +hooves hoof +horologia horologium +housewives housewife +humeri humerus +hydrae hydra +hydromedusae hydromedusa +hydrozoa hydrozoan +hymenoptera hymenopteran +hynia hymenium +hyniums hymenium +hypanthia hypanthium +hyperostoses hyperostosis +hyphae hypha +hypnoses hypnosis +hypochondria hypochondrium +hypogastria hypogastrium +hypogea hypogeum +hypophyses hypophysis +hypostases hypostasis +hypothalami hypothalamus +hypotheses hypothesis +hyraces hyrax +iambi iamb +ibices ibex +ibo igbo +ichthyosauri ichthyosaurus +ichthyosauruses ichthyosaur ichthyosaurus +iconostases iconostas iconostasis +icosahedra icosahedron +ideata ideatum +igorrorote igorrote +ilia ilium +imagines imago +imagoes imago +imperia imperium +impies impi +incubi incubus +incudes incus +indices index +indigoes indigo +indumenta indumentum +indusia indusium +infundibula infundibulum +ingushes ingush +innuendoes innuendo +inocula inoculum +inquisitors-general inquisitor-general +insectaria insectarium +insulae insula +intagli intaglio +interleaves interleaf +intermezzi intermezzo +interreges interrex +interregna interregnum +intimae intima +involucella involucellum +involucra involucre +involucra involucrum +irides iris +irs irs +is is +ischia ischium +isthmi isthmus +jackeroos jackaroo jackeroo +jackfishes jackfish +jackknives jackknife +jacks-in-the-box jack-in-the-box +jambeaux jambeau +jellyfishes jellyfish +jewelfishes jewelfish +jewfishes jewfish +jingoes jingo +jinn jinni +joes jo joe +judge_advocates_general judge_advocate_general +jura jus +kaddishim kaddish +kalmuck kalmuc +kalmucks kalmuc kalmuck +katabases katabasis +keeshonden keeshond +kibbutzim kibbutz +killifishes killifish +kingfishes kingfish +kings-of-arms king-of-arms +knights_bachelor knight_bachelor +knights_bachelors knight_bachelor +knights_templar knight_templar +knights_templars knight_templar +knives knife +kohlrabies kohlrabi +kronen krone +kroner krone +kronur krona +krooni kroon +kylikes kylix +labara labarum +labella labellum +labia labium +labra labrum +lactobacilli lactobacillus +lacunae lacuna +lacunaria lacunar +ladies-in-waiting lady-in-waiting +lamellae lamella +lamiae lamia +laminae lamina +lapilli lapillus +lapithae lapith +larvae larva +larynges larynx +lassoes lasso +lati lat +latices latex +latifundia latifundium +latu lat +lavaboes lavabo +leaves leaf leave +lecythi lecythus +leges lex +lei leu +lemmata lemma +lemnisci lemniscus +lenes lenis +lentigines lentigo +leonides leonid +lepidoptera lepidopteran +leprosaria leprosarium +lepta lepton +leptocephali leptocephalus +leucocytozoa leucocytozoan +leva lev +librae libra +libretti libretto +lice louse +lieder lied +ligulae ligula +limbi limbus +limina limen +limites limes +limuli limulus +lingoes lingo +linguae lingua +linguae_francae lingua_franca +lionfishes lionfish +lipomata lipoma +lire lira +liriodendra liriodendron +listente sente +litai lit litas +litu litas +lives life +lixivia lixivium +loaves loaf +loci locus +loculi loculus +loggie loggia +logia logion +lomenta lomentum +longobardi longobard +loricae lorica +luba luba +lubritoria lubritorium +lumbus lumbi +lumina lumen +lumpfishes lumpfish +lungfishes lungfish +lunulae lunula +lures lur lure +lustra lustre +lyings-in lying-in +lymphangitides lymphangitis +lymphomata lymphoma +lymphopoieses lymphopoiesis +lyses lysis +lyttae lytta +maare maar +macaronies macaroni +maccaronies maccaroni +machzorim machzor +macronuclei macronucleus +macrosporangia macrosporangium +maculae macula +madornos madrono +maestri maestro +mafiosi mafioso +magi magus +magmata magma +magnificoes magnifico +mahzorim mahzor +major-axes major_axis +major_axes major_axis +makuta likuta +mallei malleus +malleoli malleolus +maloti loti +mamillae mamilla +mammae mamma +mammillae mammilla +mandingoes mandingo +mangoes mango +manifestoes manifesto +manteaux manteau +mantes mantis +manubria manubrium +marchese marchesa +marchesi marchese +maremme maremma +markkaa markka +marsupia marsupium +marvels-of-peru marvel-of-peru +mass_media mass_medium +masses mass masse +masters-at-arms master-at-arms +matrices matrix +matzoth matzo +mausolea mausoleum +maxillae maxilla +maxima maximum +media medium +mediae media +mediastina mediastinum +medullae medulla +medullae_oblongatae medulla_oblongata +medusae medusa +megara megaron +megasporangia megasporangium +megilloth megillah +meioses meiosis +melanomata melanoma +melismata melisma +mementoes memento +memoranda memorandum +men man +men-at-arms man-at-arms +men-o'-war man-of-war +men-of-war man-of-war +men_of_letters man_of_letters +menisci meniscus +menservants manservant +menstrua menstruum +mesdames madame +mesdemoiselles mademoiselle +mesentera mesenteron +mesothoraces mesothorax +messeigneurs monseigneur +messieurs monsieur +mestizoes mestizo +metacarpi metacarpus +metamorphoses metamorphosis +metanephroi metanephros +metastases metastasis +metatarsi metatarsus +metatheses metathesis +metathoraces metathorax +metazoa metazoan +metempsychoses metempsychosis +metencephala metencephalon +mezuzoth mezuzah +miasmata miasma +mice mouse +microanalyses microanalysis +micrococci micrococcus +micronuclei micronucleus +microsporangia microsporangium +midrashim midrash +midwives midwife +milia milium +milieux milieu +militated_against militate_against +milkfishes milkfish +millennia millennium +minae mina +minima minimum +ministeria ministerium +minutiae minutia +minyanim minyan +mioses miosis +miracidia miracidium +miri mir +mishnayoth mishna mishnah +mitochondria mitochondrion +mitzvoth mitzvah +modioli modiolus +moduli modulus +momenta momentum +moments_of_truth moment_of_truth +momi momus +monades monad monas +monkfishes monkfish +monochasia monochasium +monopodia monopodium +monoptera monopteron +monopteroi monopteros +monsignori monsignor +monts-de-piete mont-de-piete +mooncalves mooncalf +moonfishes moonfish +morae mora +moratoria moratorium +morceaux morceau +morescoes moresco +moriscoes morisco +morphallaxes morphallaxis +morphoses morphosis +morulae morula +mosasauri mosasaurus +moshavim moshav +moslim moslem +moslims moslem +mosquitoes mosquito +mothers-in-law mother-in-law +mothers_superior mother_superior +mottoes motto +movers_and_shakers mover_and_shaker +mucosae mucosa +mucrones mucro +mudejares mudejar +mudfishes mudfish +mulattoes mulatto +multiparae multipara +murices murex +muskallunge muskellunge +mycelia mycelium +mycetomata mycetoma +mycobacteria mycobacterium +mycorrhizae mycorrhiza +myelencephala myelencephalon +myiases myiasis +myocardia myocardium +myofibrillae myofibrilla +myomata myoma +myoses myosis +myrmidones myrmidon +mythoi mythos +myxomata myxoma +naevi naevus +naiades naiad +naoi naos +narcissi narcissus +nares naris +nasopharynges nasopharynx +natatoria natatorium +naumachiae naumachia +nauplii nauplius +nautili nautilus +navahoes navaho +navajoes navajo +nebulae nebula +necropoleis necropolis +needlefishes needlefish +negrilloes negrillo +negritoes negrito +negroes negro +nemeses nemesis +nephridia nephridium +nereides nereid +neurohypophyses neurohypophysis +neuromata neuroma +neuroptera neuropteron +neuroses neurosis +nevi nevus +nibelungen nibelung +nidi nidus +nielli niello +nilgai nilgai +nimbi nimbus +nimbostrati nimbostratus +noctilucae noctiluca +nodi nodus +noes no +nomina nomen +nota notum +noumena noumenon +novae nova +novelle novella +novenae novena +nubeculae nubecula +nucelli nucellus +nuchae nucha +nuclei nucleus +nucleoli nucleolus +nulliparae nullipara +numbfishes numbfish +numina numen +nymphae nympha +oarfishes oarfish +oases oasis +obeli obelus +objets_d'art objet_d'art +obligati obligato +oboli obolus +occipita occiput +oceanaria oceanarium +oceanides oceanid +ocelli ocellus +ochreae ochrea +ocreae ochrea ocrea +octahedra octahedron +octopi octopus +oculi oculus +odea odeum +oedemata edema oedema +oesophagi esophagus oesophagus +oldwives oldwife +olea oleum +omasa omasum +omayyades omayyad +omenta omentum +ommatidia ommatidium +ommiades ommiad +onagri onager +oogonia oogonium +oothecae ootheca +operas_seria opera_seria +opercula operculum +optima optimum +ora os +organa organon organum +organums organa organum +orthoptera orthopteron +osar os +oscula osculum +ossa os +osteomata osteoma +ostia ostium +ottomans othman ottoman +ova ovum +ovoli ovolo +ovotestes ovotestis +oxen ox +oxymora oxymoron +paddlefishes paddlefish +paise paisa +paleae palea +palestrae palestra +palingeneses palingenesis +pallia pallium +palmettoes palmetto +palpi palpus +pancratia pancratium +panettoni panettone +paparazzi paparazzo +paperknives paperknife +papillae papilla +papillomata papilloma +pappi pappus +papulae papula +papyri papyrus +parabases parabasis +paraleipses paraleipsis paralipsis +paralyses paralysis +paramecia paramecium +paramenta parament +paraphyses paraphysis +parapodia parapodium +parapraxes parapraxis +paraselenae paraselene +parashoth parashah +parasyntheta parasyntheton +parazoa parazoan +parentheses parenthesis +parerga parergon +parhelia parhelion +parietes paries +paris-mutuels pari-mutuel +parrotfishes parrotfish +parulides parulis +pasos_dobles paso_doble +passers-by passer-by +pastorali pastorale +patagia patagium +patellae patella +patinae patina +patresfamilias paterfamilias +pease pea +peccadilloes peccadillo +pectines pecten +pedaloes pedalo +pedes pes +pekingese pekinese +pelves pelvis +pence penny +penes penis +penetralium penetralia +penicillia penicillium +penknives penknife +pennae penna +pennia penni +pentahedra pentahedron +pentimenti pentimento +penumbrae penumbra +pepla peplum +pericardia pericardium +perichondria perichondrium +pericrania pericranium +peridia peridium +perigonia perigonium +perihelia perihelion +perinea perineum +perinephria perinephrium +perionychia perionychium +periostea periosteum +periphrases periphrasis +peristalses peristalsis +perithecia perithecium +peritonea peritoneum +personae persona +petechiae petechia +pfennige pfennig +phalanges phalange phalanx +phalli phallus +pharynges pharynx +phenomena phenomenon +phi-phenomena phi-phenomenon +philodendra philodendron +phlyctenae phlyctaena phlyctena +phyla phylum +phylae phyle +phyllotaxes phyllotaxis +phylloxerae phylloxera +phylogeneses phylogenesis +pieds-a-terre pied-a-terre +pigfishes pigfish +pilea pileum +pilei pileus +pineta pinetum +pinfishes pinfish +pinkoes pinko +pinnae pinna +pinnulae pinnula +pipefishes pipefish +pirogi pirog +piscinae piscina +pithecanthropi pithecanthropus +pithoi pithos +placeboes placebo +placentae placenta +planetaria planetarium +planulae planula +plasmodesmata plasmodesma +plasmodia plasmodium +plateaux plateau +plectra plectron plectrum +plena plenum +pleura pleuron +pleurae pleura +plicae plica +ploughmen ploughman plowman +pneumobacilli pneumobacillus +pneumococci pneumococcus +pocketknives pocketknife +podetia podetium +podia podium +poleis polis +pollices pollex +pollinia pollinium +polychasia polychasium +polyhedra polyhedron +polyparia polyparium +polypi polypus +polyzoa polyzoan +polyzoaria polyzoarium +pontes pons +pontifices pontifex +portamenti portamento +porticoes portico +portmanteaux portmanteau +postliminia postliminium +potatoes potato +praenomina praenomen +praxes praxis +predelle predella +premaxillae premaxilla +prenomina prenomen +prese presa +primi primo +primigravidae primigravida +primiparae primipara +primordia primordium +principia principium +proboscides proboscis +proces-verbaux proces-verbal +proglottides proglottid proglottis +prognoses prognosis +prolegomena prolegomenon +prolepses prolepsis +promycelia promycelium +pronephra pronephros +pronephroi pronephros +pronuclei pronucleus +propositi propositus +proptoses proptosis +propyla propylon +propylaea propylaeum +proscenia proscenium +prosencephala prosencephalon +prostheses prosthesis +prostomia prostomium +protases protasis +prothalamia prothalamion prothalamium +prothalli prothallus +prothallia prothallium +prothoraces prothorax +protonemata protonema +protozoa protozoan +proventriculi proventriculus +provisoes proviso +prytanea prytaneum +psalteria psalterium +pseudopodia pseudopodium +psychoneuroses psychoneurosis +psychoses psychosis +pterygia pterygium +pterylae pteryla +ptoses ptosis +pubes pubis +pudenda pudendum +puli pul +pulvilli pulvillus +pulvini pulvinus +punchinelloes punchinello +pupae pupa +puparia puparium +putamina putamen +putti putto +pycnidia pycnidium +pygidia pygidium +pylori pylorus +pyxides pyxis +pyxidia pyxidium +qaddishim qaddish +quadrennia quadrennium +quadrigae quadriga +qualia quale +quanta quantum +quarterstaves quarterstaff +quezales quezal +quinquennia quinquennium +quizzes quiz +rabatos rabato rebato +rabbitfishes rabbitfish +rachides rhachis +radices radix +radii radius +radulae radula +ramenta ramentum +rami ramus +ranulae ranula +ranunculi ranunculus +raphae raphe +raphides raphide raphis +ratfishes ratfish +reales real +rearmice rearmouse +recta rectum +recti rectus +rectrices rectrix +redfishes redfish +rediae redia +referenda referendum +refugia refugium +reguli regulus +reis real +relata relatum +remiges remex +reremice rearmouse reremouse +reseaux reseau +residua residuum +responsa responsum +retia rete +retiarii retiarius +reticula reticulum +retinacula retinaculum +retinae retina +rhabdomyomata rhabdomyoma +rhachides rhachis +rhachises rachis rhachis +rhinencephala rhinencephalon +rhizobia rhizobium +rhombi rhombus +rhonchi rhonchus +rhyta rhyton +ribbonfishes ribbonfish +ricercacari ricercare +ricercari ricercare +rickettsiae rickettsia +rilievi rilievo +rimae rima +robes-de-chambre robe-de-chambre +rockfishes rockfish +roma rom +romans-fleuves roman-fleuve +rondeaux rondeau +rosaria rosarium +rosefishes rosefish +rostella rostellum +rostra rostrum +rouleaux rouleau +rugae ruga +rumina rumen +runners-up runner-up +sacra sacrum +sacraria sacrarium +saguaros saguaro sahuaro +sailfishes sailfish +salespeople salesperson +salmonellae salmonella +salpae salpa +salpinges salpinx +saltarelli saltarello +salvoes salvo +sancta sanctum +sanitaria sanitarium +santimi santims +saphenae saphena +sarcophagi sarcophagus +sartorii sartorius +sassanidae sassanid +sawfishes sawfish +scaldfishes scaldfish +scaleni scalenus +scapulae scapula +scarabaei scarabaeus +scarves scarf +schatchonim schatchen shadchan +schemata schema +scherzandi scherzando +scherzi scherzo +schmoes schmo +scholia scholium +schuln schul +schutzstaffeln schutzstaffel +scirrhi scirrhus +scleromata scleroma +scleroses sclerosis +sclerotia sclerotium +scoleces scolex +scolices scolex +scopulae scopula +scoriae scoria +scotomata scotoma +scriptoria scriptorium +scrota scrotum +scudi scudo +scuta scutum +scutella scutellum +scyphi scyphus +scyphistomae scyphistoma +scyphozoa scyphozoan +secondi secondo +secretaries-general secretary-general +segni segno +seleucidae seleucid +selves self +senores senor +sensilla sensillum +senti sent +senussis senusi senussi +separatrices separatrix +sephardim sephardi +septa septum +septaria septarium +septennia septennium +sequelae sequela +sequestra sequestrum +sera serum +seraphim seraph +sestertia sestertium +setae seta +sgraffiti sgraffito +shabbasim shabbas +shabbatim shabbat +shackoes shacko +shadchanim shadchan +shadchans schatchen shadchan +shakoes shako +shammosim shammas shammes +sheatfishes sheatfish +sheaves sheaf +shellfishes shellfish +shelves shelf +shinleaves shinleaf +shittim shittah +shmoes shmo +shofroth shofar shophar +shophroth shophar +shrewmice shrewmouse +shuln shul +siddurim siddur +sigloi siglos +signore signora +signori signior signore +signorine signorina +siliquae siliqua +silvae silva +silverfishes silverfish +simulacra simulacrum +sincipita sinciput +sinfonie sinfonia +sisters-in-law sister-in-law +sistra sistrum +situlae situla +smalti smalto +snaggleteeth snaggletooth +snailfishes snailfish +snipefishes snipefish +socmen socman sokeman +sola solum +solaria solarium +solatia solatium +soldi soldo +soles sol sole +solfeggi solfeggio +soli solo +solidi solidus +somata soma +sons-in-law son-in-law +soprani soprano +sordini sordino +sori sorus +soroses sorosis +sovkhozy sovkhoz +spadefishes spadefish +spadices spadix +spearfishes spearfish +spectra spectrum +specula speculum +spermatia spermatium +spermatogonia spermatogonium +spermatozoa spermatozoon +spermogonia spermogonium +sphinges sphinx +spicae spica +spicula spiculum +spirilla spirillum +splayfeet splayfoot +splenii splenius +sporangia sporangium +sporogonia sporogonium +sporozoa sporozoan +springhase springhaas +spumoni spumone +sputa sputum +squamae squama +squashes squash +squillae squilla +squirrelfishes squirrelfish +squizzes squiz +stadia stadium +stamina stamen +staminodia staminodium +stapedes stapes +staphylococci staphylococcus +starfishes starfish +startsy starets +stelae stele +stemmata stemma +stenoses stenosis +stepchildren stepchild +sterna sternum +stigmata stigma +stimuli stimulus +stipites stipes +stirpes stirps +stoae stoa +stockfishes stockfish +stomata stoma +stomodaea stomodaeum +stomodea stomodeum +stonefishes stonefish +stotinki stotinka +stotkini stotinka +strappadoes strappado +strata stratum +strati stratus +stratocumuli stratocumulus +street_children street_child +streptococci streptococcus +stretti stretto +striae stria +strobili strobilus +stromata stroma +strumae struma +stuccoes stucco +styli stylus +stylopes stylops +stylopodia stylopodium +subcortices subcortex +subdeliria subdelirium +subgenera subgenus +subindices subindex +submucosae submucosa +subphyla subphylum +substrasta substratum +succedanea succedaneum +succubi succubus +suckerfishes suckerfish +suckfishes suckfish +sudaria sudarium +sudatoria sudatorium +sulci sulcus +summae summa +sunfishes sunfish +supercargoes supercargo +superheroes superhero +supernovae supernova +superstrata superstratum +surgeonfishes surgeonfish +swamies swami +sweetiewives sweetiewife +swellfishes swellfish +swordfishes swordfish +syconia syconium +syllabi syllabus +syllepses syllepsis +symphyses symphysis +sympodia sympodium +symposia symposium +synapses synapsis +synarthroses synarthrosis +synclinoria synclinorium +syncytia syncytium +syndesmoses syndesmosis +synopses synopsis +syntagmata syntagma +syntheses synthesis +syphilomata syphiloma +syringes syrinx +syssarcoses syssarcosis +tableaux tableau +taeniae taenia tenia +tali talus +tallaisim tallith +tallithes tallith +tallitoth tallith +tapeta tapetum +tarantulae tarantula +tarsi tarsus +tarsometatarsi tarsometatarsus +taxa taxon +taxes tax taxis +taxies taxi +tectrices tectrix +teeth tooth +tegmina tegmen +telae tela +telamones telamon +telangiectases telangiectasia telangiectasis +telia telium +tempi tempo +tenacula tenaculum +tenderfeet tenderfoot +teniae tenia +tenues tenuis +teraphim teraph +terata teras +teredines teredo +terga tergum +termini terminus +terraria terrarium +terzetti terzetto +tesserae tessera +testae testa +testes testis +testudines testudo +tetrahedra tetrahedron +tetraskelia tetraskelion +thalamencephala thalamencephalon +thalami thalamus +thalli thallus +theatres-in-the-round theatre-in-the-round +thecae theca +therses thyrse +thesauri thesaurus +theses thesis +thickleaves thickleaf +thieves thief +tholoi tholos +thoraces thorax +thrombi thrombus +thymi thymus +thyrsi thyrsus +tibiae tibia +tilefishes tilefish +tintinnabula tintinnabulum +titmice titmouse +toadfishes toadfish +tobaccoes tobacco +tomatoes tomato +tomenta tomentum +tondi tondo +tonneaux tonneau +tophi tophus +topoi topos +tori torus +tornadoes tornado +torpedoes torpedo +torsi torso +touracos touraco turaco +trabeculae trabecula +tracheae trachea +traditores traditor +tragi tragus +trapezia trapezium +trapezohedra trapezohedron +traumata trauma +treponemata treponema +trichinae trichina +triclinia triclinium +triennia triennium +triforia triforium +triggerfishes triggerfish +trihedra trihedron +triskelia triskelion +trisoctahedra trisoctahedron +triumviri triumvir +trivia trivium +trochleae trochlea +tropaeola tropaeolum +trous-de-loup trou-de-loup +trousseaux trousseau +trunkfishes trunkfish +trymata tryma +tubae tuba +turves turf +tympana tympanum +tyros tiro tyro +ubermenschen ubermensch +uglies ugli +uigurs uighur +ulnae ulna +ultimata ultimatum +umbilici umbilicus +umbones umbo +umbrae umbra +unci uncus +uncidia uredium +uredines uredo +uredinia uredinium +uredosori uredosorus +urethrae urethra +urinalyses urinalysis +uteri uterus +utriculi utriculus +uvulae uvula +vacua vacuum +vagi vagus vagus +vaginae vagina +valleculae vallecula +vaporetti vaporetto +varices varix +vasa vas +vascula vasculum +vela velum +velamina velamen +velaria velarium +venae vena +venae_cavae vena_cava +ventriculi ventriculus +vermes vermis +verrucae verruca +vertebrae vertebra +vertices vertex +vertigines vertigo +vertigoes vertigo +vesicae vesica +vetoes veto +vexilla vexillum +viatica viaticum +viatores viator +vibracula vibraculum +vibrissae vibrissa +vice-chairman vice-chairman +villi villus +vimina vimen +vincula vinculum +viragoes virago +vires vis +virtuosi virtuoso +vitae vita +vitelli vitellus +vittae vitta +vivaria vivarium +voces vox +volcanoes volcano +volkslieder volkslied +volte volta +volvae volva +vorticellae vorticella +vortices vortex +vulvae vulva +wagons-lits wagon-lit +wahhabis wahabi wahhabi +wanderjahre wanderjahr +weakfishes weakfish +werewolves werewolf +wharves wharf +whippers-in whipper-in +whitefishes whitefish +wives wife +wolffishes wolffish +wolves wolf +woodlice woodlouse +wreckfishes wreckfish +wunderkinder wunderkind +xiphisterna xiphisternum +yeshivahs yeshiva +yeshivoth yeshiva +yogin yogi +yourselves yourself +zamindaris zamindari zemindari +zecchini zecchino +zeroes zero +zoa zoon +zoaeae zoaea zoea +zoeae zoea +zoeas zoaea +zoonoses zoonosis +zoosporangia zoosporangium diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/verb.exc b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/verb.exc new file mode 100644 index 0000000000000000000000000000000000000000..e486edf7113fbf2b3c59ed75bf599f23d56da815 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0-Exceptions/verb.exc @@ -0,0 +1,2401 @@ +abetted abet +abetting abet +abhorred abhor +abhorring abhor +abode abide +abought aby +about-shipped about-ship +about-shipping about-ship +abutted abut +abutting abut +abye aby +accompanied accompany +acetified acetify +acidified acidify +acquitted acquit +acquitting acquit +ad-libbed ad-lib +ad-libbing ad-lib +addrest address +admitted admit +admitting admit +aerified aerify +air-dried air-dry +airdropped airdrop +airdropping airdrop +alkalified alkalify +allied ally +allotted allot +allotting allot +allowed_for allow_for +allowing_for allow_for +allows_for allow_for +am be +ammonified ammonify +amnestied amnesty +amplified amplify +anglified anglify +annulled annul +annulling annul +appalled appal appall +appalling appal appall +applied apply +arcked arc +arcking arc +are be +argufied argufy +arisen arise +arose arise +ate eat +atrophied atrophy +averred aver +averring aver +awoke awake +awoken awake +babied baby +baby-sat baby-sit +baby-sitting baby-sit +back-pedalled back-pedal +back-pedalling back-pedal +backbit backbite +backbitten backbite +backslid backslide +backslidden backslide +bade bid +bagged bag +bagging bag +ballyragged ballyrag +ballyragging ballyrag +bandied bandy +banned ban +banning ban +barred bar +barrelled barrel +barrelling barrel +barring bar +basified basify +batted bat +batting bat +bayonetted bayonet +bayonetting bayonet +beaten beat +beatified beatify +beautified beautify +became become +became_known become_known +becomes_known become_known +bed bed +bedded bed +bedding bed +bedevilled bedevil +bedevilling bedevil +bedimmed bedim +bedimming bedim +been be +befallen befall +befell befall +befitted befit +befitting befit +befogged befog +befogging befog +began begin +begat beget +begetting beget +begged beg +begging beg +beginning begin +begirt begird +begot beget +begotten beget +begun begin +beheld behold +beholden behold +bejewelled bejewel +bejewelling bejewel +bellied belly +belly-flopped belly-flop +belly-flopping belly-flop +belying belie +benefitted benefit +benefitting benefit +benempt bename +bent bend +berried berry +besetting beset +besought beseech +bespoke bespeak +bespoken bespeak +bestirred bestir +bestirring bestir +bestrewn bestrew +bestrid bestride +bestridden bestride +bestrode bestride +betaken betake +bethought bethink +betook betake +betted bet +betting bet +bevelled bevel +bevelling bevel +biassed bias +biassing bias +bidden bid +bidding bid +bing bing +binned bin +binning bin +bird-dogged bird-dog +bird-dogging bird-dog +bit bite +bitted bit +bitten bite +bitting bit +bivouacked bivouac +bivouacking bivouac +blabbed blab +blabbing blab +blackberried blackberry +blacklegged blackleg +blacklegging blackleg +blatted blat +blatting blat +bled bleed +blest bless +blew blow +blew_one's_nose blow_one's_nose +blipped blip +blipping blip +blobbed blob +blobbing blob +bloodied bloody +blotted blot +blotting blot +blowing_one's_nose blow_one's_nose +blown blow +blows_one's_nose blow_one's_nose +blubbed blub +blubbing blub +blue-pencilled blue-pencil +blue-pencilling blue-pencil +blurred blur +blurring blur +bobbed bob +bobbing bob +bodied body +bogged-down bog-down +bogged_down bog_down +bogging-down bog-down +bogging_down bog_down +bogs-down bog-down +bogs_down bog_down +booby-trapped booby-trap +booby-trapping booby-trap +bootlegged bootleg +bootlegging bootleg +bopped bop +bopping bop +bore bear +born bear +borne bear +bottle-fed bottle-feed +bought buy +bound bind +bragged brag +bragging brag +breast-fed breast-feed +bred breed +brevetted brevet +brevetting brevet +brimmed brim +brimming brim +broke break +broken break +brought bring +browbeaten browbeat +brutified brutify +budded bud +budding bud +bugged bug +bugging bug +built build +bulldogging bulldog +bullied bully +bullshitted bullshit +bullshitting bullshit +bullwhipped bullwhip +bullwhipping bullwhip +bullyragged bullyrag +bullyragging bullyrag +bummed bum +bumming bum +buried bury +burnt burn +burred bur +burring bur +bushelled bushel +bushelling bushel +busied busy +bypast bypass +caballed cabal +caballing cabal +caddied caddie caddy +caddies caddie caddy +caddying caddie caddy +calcified calcify +came come +canalled canal +canalling canal +cancelled cancel +cancelling cancel +candied candy +canned can +canning can +canopied canopy +capped cap +capping cap +carburetted carburet +carburetting carburet +carillonned carillon +carillonning carillon +carnied carny +carnified carnify +carolled carol +carolling carol +carried carry +casefied casefy +catnapped catnap +catnapping catnap +catted cat +catting cat +caught catch +cavilled cavil +cavilling cavil +certified certify +channelled channel +channelling channel +chapped chap +chapping chap +charred char +charring char +chatted chat +chatting chat +chevied chivy +chevies chivy +chevying chivy +chid chide +chidden chide +chinned chin +chinning chin +chipped chip +chipping chip +chiselled chisel +chiselling chisel +chitchatted chitchat +chitchatting chitchat +chivied chivy +chivved chiv +chivvied chivy +chivvies chivy +chivving chiv +chivvying chivy +chondrified chondrify +chopped chop +chopping chop +chose choose +chosen choose +chugged chug +chugging chug +chummed chum +chumming chum +citified citify +clad clothe +cladding clad +clammed clam +clamming clam +clapped clap +clapping clap +clarified clarify +classified classify +cleft cleave +clemmed clem +clemming clem +clept clepe +clipped clip +clipping clip +clogged clog +clogging clog +clopped clop +clopping clop +clotted clot +clotting clot +clove cleave +cloven cleave +clubbed club +clubbing club +clung cling +co-opted coopt +co-opting coopt +co-opts coopts +co-ordinate coordinate +co-ordinated coordinate +co-ordinates coordinate +co-ordinating coordinate +co-starred co-star +co-starring co-star +cockneyfied cockneyfy +codded cod +codding cod +codified codify +cogged cog +cogging cog +coiffed coif +coiffing coif +collied colly +combatted combat +combatting combat +committed commit +committing commit +compelled compel +compelling compel +complied comply +complotted complot +complotting complot +concurred concur +concurring concur +confabbed confab +confabbing confab +conferred confer +conferring confer +conned con +conning con +controlled control +controlling control +copied copy +copped cop +copping cop +coquetted coquet +coquetting coquet +corralled corral +corralling corral +counselled counsel +counselling counsel +counterplotted counterplot +counterplotting counterplot +countersank countersink +countersunk countersink +court-martialled court-martial +court-martialling court-martial +crabbed crab +crabbing crab +crammed cram +cramming cram +crapped crap +crapping crap +crept creep +cribbed crib +cribbing crib +cried cry +cropped crop +cropping crop +crossbred crossbreed +crosscutting crosscut +crucified crucify +cubbed cub +cubbing cub +cudgelled cudgel +cudgelling cudgel +cupelled cupel +cupelling cupel +cupped cup +cupping cup +curetted curet +curettes curet +curetting curet +curried curry +curst curse +curtsied curtsy +curvetted curvet +curvetting curvet +cutting cut +dabbed dab +dabbing dab +dagged dag +dagging dag +dallied dally +dammed dam +damming dam +damnified damnify +dandified dandify +dapped dap +dapping dap +dealt deal +debarred debar +debarring debar +debugged debug +debugging debug +debussed debus +debusses debus +debussing debus +decalcified decalcify +declassified declassify +decontrolled decontrol +decontrolling decontrol +decried decry +deep-freeze deepfreeze +deep-freezed deepfreeze +deep-freezes deepfreeze +deep-fried deep-fry +deferred defer +deferring defer +defied defy +degassed degas +degasses degas +degassing degas +dehumidified dehumidify +deified deify +demitted demit +demitting demit +demobbed demob +demobbing demob +demulsified demulsify +demurred demur +demurring demur +demystified demystify +denazified denazify +denied deny +denitrified denitrify +denned den +denning den +descried descry +deterred deter +deterring deter +detoxified detoxify +devilled devil +devilling devil +devitrified devitrify +diagrammed diagram +diagramming diagram +dialled dial +dialling dial +dibbed dib +dibbing dib +did do +digging dig +dignified dignify +dilly-dallied dilly-dally +dimmed dim +dimming dim +dinned din +dinning din +dipped dip +dipping dip +dirtied dirty +disannulled disannul +disannulling disannul +disbarred disbar +disbarring disbar +disbudded disbud +disbudding disbud +disembodied disembody +disembowelled disembowel +disembowelling disembowel +disenthralled disenthral disenthrall +disenthralling disenthral disenthrall +disenthralls disenthral +disenthrals disenthrall +dishevelled dishevel +dishevelling dishevel +disinterred disinter +disinterring disinter +dispelled dispel +dispelling dispel +disqualified disqualify +dissatisfied dissatisfy +distilled distil distill +distilling distil distill +diversified diversify +divvied divvy +dizzied dizzy +dogged dog +dogging dog +doglegged dogleg +doglegging dogleg +dollied dolly +done do +donned don +donning don +dotted dot +dotting dot +dought dow +dove dive +drabbed drab +drabbing drab +dragged drag +dragging drag +drank drink +drawn draw +dreamt dream +drew draw +dried dry +dripped drip +dripping drip +drivelled drivel +drivelling drivel +driven drive +dropped drop +dropping drop +drove drive +drubbed drub +drubbing drub +drugged drug +drugging drug +drummed drum +drumming drum +drunk drink +dubbed dub +dubbing dub +duelled duel +duelling duel +dug dig +dulcified dulcify +dummied dummy +dunned dun +dunning dun +dwelt dwell +dying die +easied easy +eaten eat +eavesdropped eavesdrop +eavesdropping eavesdrop +eddied eddy +edified edify +ego-tripped ego-trip +ego-tripping ego-trip +electrified electrify +embedded embed +embedding embed +embodied embody +embussed embus +embusses embus +embussing embus +emitted emit +emitting emit +empanelled empanel +empanelling empanel +emptied empty +emulsified emulsify +enamelled enamel +enamelling enamel +englutted englut +englutting englut +enrolled enrol enroll +enrolling enrol enroll +enthralled enthral enthrall +enthralling enthral enthrall +entrammelled entrammel +entrammelling entrammel +entrapped entrap +entrapping entrap +envied envy +enwound enwind +enwrapped enwrap +enwrapping enwrap +equalled equal +equalling equal +equipped equip +equipping equip +espied espy +esterified esterify +estopped estop +estopping estop +etherified etherify +excelled excel +excelling excel +exemplified exemplify +expelled expel +expelling expel +extolled extol extoll +extolling extol extoll +facetted facet +facetting facet +fagged fag +fagging fag +fallen fall +falsified falsify +fancied fancy +fanned fan +fanning fan +fantasied fantasy +fatted fat +fatting fat +featherbedded featherbed +featherbedding featherbed +fed feed +feed feed fee +fell fall +felt feel felt +ferried ferry +fibbed fib +fibbing fib +figged fig +figging fig +filled_up fill_up +fine-drawn fine-draw +fine-drew fine-draw +finned fin +finning fin +fitted fit +fitting fit +flagged flag +flagging flag +flammed flam +flamming flam +flannelled flannel +flannelling flannel +flapped flap +flapping flap +flatted flat +flatting flat +fled flee +flew fly +flimflammed flimflam +flimflamming flimflam +flip-flopped flip-flop +flip-flopping flip-flop +flipped flip +flipping flip +flitted flit +flitting flit +flogged flog +flogging flog +floodlit floodlight +flopped flop +flopping flop +flown fly +flubbed flub +flubbing flub +flung fling +flurried flurry +flyblew flyblow +flyblown flyblow +fobbed fob +fobbing fob +fogged fog +fogging fog +footslogged footslog +footslogging footslog +forbad forbid +forbade forbid +forbidden forbid +forbidding forbid +forbore forbear +forborne forbear +force-fed force-feed +fordid fordo +fordone fordo +foredid foredo +foredone foredo +foregone forego +foreknew foreknow +foreknown foreknow +foreran forerun +forerunning forerun +foresaw foresee +foreseen foresee +foreshown foreshow +forespoke forespeak +forespoken forespeak +foretold foretell +forewent forego +forgave forgive +forgetting forget +forgiven forgive +forgone forgo +forgot forget +forgotten forget +formatted format +formatting format +forsaken forsake +forsook forsake +forspoke forspeak +forspoken forspeak +forswore forswear +forsworn forswear +fortified fortify +forwent forgo +fought fight +found find +foxtrotted foxtrot +foxtrotting foxtrot +frapped frap +frapping frap +freeze-dried freeze-dry +frenchified frenchify +frenzied frenzy +fretted fret +fretting fret +fried fry +frigged frig +frigging frig +fritted frit fritt +fritting frit fritt +frivolled frivol +frivolling frivol +frogged frog +frogging frog +frolicked frolic +frolicking frolic +froze freeze +frozen freeze +fructified fructify +fuelled fuel +fuelling fuel +fulfilled fulfil fulfill +fulfilling fulfil fulfill +funned fun +funnelled funnel +funnelling funnel +funning fun +furred fur +furring fur +gadded gad +gadding gad +gagged gag +gagging gag +gainsaid gainsay +gambolled gambol +gambolling gambol +gammed gam +gamming gam +gan gin +ganned gan +ganning gan +gapped gap +gapping gap +gasified gasify +gassed gas +gasses gas +gassing gas +gave give +gelled gel +gelling gel +gelt geld +gemmed gem +gemming gem +genned-up gen-up +genning-up gen-up +gens-up gen-up +gets_lost get_lost +gets_started get_started +getting get +getting_lost get_lost +getting_started get_started +ghostwritten ghostwrite +ghostwrote ghostwrite +gibbed gib +gibbing gib +giddied giddy +giftwrapped giftwrap +giftwrapping giftwrap +gigged gig +gigging gig +gilt gild +ginned gin +ginning gin +gipped gip +gipping gip +girt gird +given give +glommed glom +glomming glom +gloried glory +glorified glorify +glutted glut +glutting glut +gnawn gnaw +goes_deep go_deep +going_deep go_deep +gollied golly +gone go +gone_deep go_deep +goose-stepped goose-step +goose-stepping goose-step +got get +got_lost get_lost +got_started get_started +gotten get +gotten_lost get_lost +grabbed grab +grabbing grab +gratified gratify +gravelled gravel +gravelling gravel +graven grave +grew grow +grinned grin +grinning grin +gripped grip +gripping grip +gript grip +gritted grit +gritting grit +ground grind +grovelled grovel +grovelling grovel +grown grow +grubbed grub +grubbing grub +guarantied guaranty +gullied gully +gummed gum +gumming gum +gunned gun +gunning gun +gypped gyp +gypping gyp +hacksawn hacksaw +had have +had_a_feeling have_a_feeling +had_left have_left +had_the_feeling have_the_feeling +hammed ham +hamming ham +hamstrung hamstring +hand-knitted hand-knit +hand-knitting hand-knit +handfed handfeed +handicapped handicap +handicapping handicap +handselled handsel +handselling handsel +harried harry +has have +has_a_feeling have_a_feeling +has_left have_left +has_the_feeling have_the_feeling +hatchelled hatchel +hatchelling hatchel +hatted hat +hatting hat +having_a_feeling have_a_feeling +having_left have_left +having_the_feeling have_the_feeling +heard hear +hedgehopped hedgehop +hedgehopping hedgehop +held hold +hemmed hem +hemming hem +hewn hew +hiccupped hiccup +hiccupping hiccup +hid hide +hidden hide +high-hatted high-hat +high-hatting high-hat +hinnied hinny +hitting hit +hobbed hob +hobbing hob +hobnobbed hobnob +hobnobbing hobnob +hocus-pocussed hocus-pocus +hocus-pocussing hocus-pocus +hocussed hocus +hocussing hocus +hogged hog +hogging hog +hogtying hogtie +honied honey +hopped hop +hopping hop +horrified horrify +horsewhipped horsewhip +horsewhipping horsewhip +houselled housel +houselling housel +hove heave +hovelled hovel +hovelling hovel +hugged hug +hugging hug +humbugged humbug +humbugging humbug +humidified humidify +hummed hum +humming hum +hung hang +hurried hurry +hypertrophied hypertrophy +identified identify +imbedded imbed +imbedding imbed +impanelled impanel +impanelling impanel +impelled impel +impelling impel +implied imply +inbred inbreed +incurred incur +incurring incur +indemnified indemnify +indwelt indwell +inferred infer +inferring infer +initialled initial +initialling initial +inlaid inlay +insetting inset +inspanned inspan +inspanning inspan +installed instal install +installing instal install +intensified intensify +interbred interbreed +intercropped intercrop +intercropping intercrop +intercutting intercut +interlaid interlay +interlapped interlap +interlapping interlap +intermarried intermarry +intermitted intermit +intermitting intermit +interpled interplead +interred inter +interring inter +interstratified interstratify +interwove interweave +interwoven interweave +intromitted intromit +intromitting intromit +inwove inweave +inwoven inweave +inwrapped inwrap +inwrapping inwrap +is be +jabbed jab +jabbing jab +jagged jag +jagging jag +jammed jam +jamming jam +japanned japan +japanning japan +jarred jar +jarring jar +jellied jelly +jellified jellify +jemmied jemmy +jerry-built jerry-build +jetted jet +jetting jet +jewelled jewel +jewelling jewel +jibbed jib +jibbing jib +jigged jig +jigging jig +jimmied jimmy +jitterbugged jitterbug +jitterbugging jitterbug +jobbed job +jobbing job +jog-trotted jog-trot +jog-trotting jog-trot +jogged jog +jogging jog +joined_battle join_battle +joined_forces join_forces +joining_battle join_battle +joining_forces join_forces +joins_battle join_battle +joins_forces join_forces +jollied jolly +jollified jollify +jotted jot +jotting jot +joy-ridden joy-ride +joy-rode joy-ride +joypopped joypop +joypopping joypop +jugged jug +jugging jug +jumped_off jump_off +jumping_off jump_off +jumps_off jump_off +justified justify +jutted jut +jutting jut +kenned ken +kennelled kennel +kennelling kennel +kenning ken +kent ken +kept keep +kernelled kernel +kernelling kernel +kidded kid +kidding kid +kidnapped kidnap +kidnapping kidnap +kipped kip +kipping kip +knapped knap +knapping knap +kneecapped kneecap +kneecapping kneecap +knelt kneel +knew know +knitted knit +knitting knit +knobbed knob +knobbing knob +knotted knot +knotting knot +known know +ko'd ko +ko'ing ko +ko's ko +labelled label +labelling label +laden lade +ladyfied ladify +ladyfies ladify +ladyfying ladify +lagged lag +lagging lag +laid lay +lain lie +lallygagged lallygag +lallygagging lallygag +lammed lam +lamming lam +lapidified lapidify +lapped lap +lapping lap +laurelled laurel +laurelling laurel +lay lie +layed_for lie_for +laying_for lie_for +lays_for lie_for +leant lean +leapfrogged leapfrog +leapfrogging leapfrog +leapt leap +learnt learn +leaves_undone leave_undone +leaving_undone leave_undone +led lead +left leave +left_undone leave_undone +lent lend +letting let +levelled level +levelling level +levied levy +libelled libel +libelling libel +lignified lignify +lipped lip +lipping lip +liquefied liquefy +liquified liquify +lit light +lobbed lob +lobbied lobby +lobbing lob +logged log +logging log +looked_towards look_towards +looking_towards look_towards +looks_towards look_towards +lopped lop +lopping lop +lost lose +lotted lot +lotting lot +lugged lug +lugging lug +lullabied lullaby +lying lie +machine-gunned machine-gun +machine-gunning machine-gun +madded mad +madding mad +made make +magnified magnify +manned man +manning man +manumitted manumit +manumitting manumit +mapped map +mapping map +marcelled marcel +marcelling marcel +marred mar +married marry +marring mar +marshalled marshal +marshalling marshal +marvelled marvel +marvelling marvel +matted mat +matting mat +meant mean +medalled medal +medalling medal +met meet +metalled metal +metalling metal +metrified metrify +might may +militated_against militate_against +militates_against militate_against +militating_against militate_against +mimicked mimic +mimicking mimic +minified minify +misapplied misapply +misbecame misbecome +miscarried miscarry +misdealt misdeal +misfitted misfit +misfitting misfit +misgave misgive +misgiven misgive +mishitting mishit +mislaid mislay +misled mislead +mispled misplead +misspelt misspell +misspent misspend +mistaken mistake +mistook mistake +misunderstood misunderstand +mobbed mob +mobbing mob +modelled model +modelling model +modified modify +mollified mollify +molten melt +mopped mop +mopping mop +mortified mortify +mown mow +mudded mud +muddied muddy +mudding mud +mugged mug +mugging mug +multiplied multiply +mummed mum +mummified mummify +mumming mum +mutinied mutiny +mystified mystify +nabbed nab +nabbing nab +nagged nag +nagging nag +napped nap +napping nap +netted net +netting net +nibbed nib +nibbing nib +nickelled nickel +nickelling nickel +nid-nodded nid-nod +nid-nodding nid-nod +nidified nidify +nigrified nigrify +nipped nip +nipping nip +nitrified nitrify +nodded nod +nodding nod +non-prossed non-pros +non-prosses non-pros +non-prossing non-pros +nonplussed nonplus +nonplusses nonplus +nonplussing nonplus +notified notify +nullified nullify +nutted nut +nutting nut +objectified objectify +occupied occupy +occurred occur +occurring occur +offsetting offset +omitted omit +omitting omit +ossified ossify +outbidden outbid +outbidding outbid +outbred outbreed +outcried outcry +outcropped outcrop +outcropping outcrop +outdid outdo +outdone outdo +outdrawn outdraw +outdrew outdraw +outfitted outfit +outfitting outfit +outfought outfight +outgassed outgas +outgasses outgas +outgassing outgas +outgeneralled outgeneral +outgeneralling outgeneral +outgone outgo +outgrew outgrow +outgrown outgrow +outlaid outlay +outmanned outman +outmanning outman +outputted output +outputting output +outran outrun +outridden outride +outrode outride +outrunning outrun +outshone outshine +outshot outshoot +outsold outsell +outspanned outspan +outspanning outspan +outstood outstand +outstripped outstrip +outstripping outstrip +outthought outthink +outwent outgo +outwitted outwit +outwitting outwit +outwore outwear +outworn outwear +overbidden overbid +overbidding overbid +overblew overblow +overblown overblow +overbore overbear +overborne overbear +overbuilt overbuild +overcame overcome +overcropped overcrop +overcropping overcrop +overdid overdo +overdone overdo +overdrawn overdraw +overdrew overdraw +overdriven overdrive +overdrove overdrive +overflew overfly +overflown overflow overfly +overgrew overgrow +overgrown overgrow +overheard overhear +overhung overhang +overlaid overlay +overlain overlie +overlapped overlap +overlapping overlap +overlay overlie +overlying overlie +overmanned overman +overmanning overman +overpaid overpay +overpast overpass +overran overrun +overridden override +overrode override +overrunning overrun +oversaw oversee +overseen oversee +oversetting overset +oversewn oversew +overshot overshoot +oversimplified oversimplify +overslept oversleep +oversold oversell +overspent overspend +overspilt overspill +overstepped overstep +overstepping overstep +overtaken overtake +overthrew overthrow +overthrown overthrow +overtook overtake +overtopped overtop +overtopping overtop +overwound overwind +overwritten overwrite +overwrote overwrite +pacified pacify +padded pad +padding pad +paid pay +palled pal +palling pal +palsied palsy +pandied pandy +panelled panel +panelling panel +panicked panic +panicking panic +panned pan +panning pan +parallelled parallel +parallelling parallel +parcelled parcel +parcelling parcel +parodied parody +parried parry +partaken partake +partook partake +pasquil pasquinade +pasquilled pasquinade +pasquilling pasquinade +pasquils pasquinade +patrolled patrol +patrolling patrol +patted pat +patting pat +pedalled pedal +pedalling pedal +pegged peg +pegging peg +pencilled pencil +pencilling pencil +penned pen +penning pen +pent pen +pepped pep +pepping pep +permitted permit +permitting permit +personified personify +petrified petrify +petted pet +pettifogged pettifog +pettifogging pettifog +petting pet +phantasied phantasy +photocopied photocopy +photomapped photomap +photomapping photomap +photosetting photoset +physicked physic +physicking physic +picnicked picnic +picnicking picnic +pigged pig +pigging pig +pilloried pillory +pinch-hitting pinch-hit +pinned pin +pinning pin +pipped pip +pipping pip +pistol-whipped pistol-whip +pistol-whipping pistol-whip +pistolled pistol +pistolling pistol +pitapatted pitapat +pitapatting pitapat +pitied pity +pitted pit +pitting pit +planned plan +planning plan +platted plat +platting plat +played_a_part play_a_part +playing_a_part play_a_part +plays_a_part play_a_part +pled plead +plied ply +plodded plod +plodding plod +plopped plop +plopping plop +plotted plot +plotting plot +plugged plug +plugging plug +podded pod +podding pod +pommelled pommel +pommelling pommel +popes popes +popped pop +popping pop +potted pot +potting pot +preachified preachify +precancelled precancel +precancelling precancel +preferred prefer +preferring prefer +preoccupied preoccupy +prepaid prepay +presignified presignify +pretermitted pretermit +pretermitting pretermit +prettied pretty +prettified prettify +pried pry +prigged prig +prigging prig +primmed prim +primming prim +prodded prod +prodding prod +programmed program +programmes program +programming program +prologed prologue +prologing prologue +prologs prologue +propelled propel +propelling propel +prophesied prophesy +propped prop +propping prop +proven prove +pubbed pub +pubbing pub +pugged pug +pugging pug +pummelled pummel +pummelling pummel +punned pun +punning pun +pupped pup +pupping pup +purified purify +put-putted put-put +put-putting put-put +putrefied putrefy +puttied putty +putting put +qualified qualify +quantified quantify +quarrelled quarrel +quarrelling quarrel +quarried quarry +quartersawn quartersaw +queried query +quick-froze quick-freeze +quick-frozen quick-freeze +quickstepped quickstep +quickstepping quickstep +quipped quip +quipping quip +quitted quit +quitting quit +quizzed quiz +quizzes quiz +quizzing quiz +ragged rag +ragging rag +rallied rally +ramified ramify +rammed ram +ramming ram +ran run +rang ring +rapped rap +rappelled rappel +rappelling rappel +rapping rap +rarefied rarefy +ratified ratify +ratted rat +ratting rat +ravelled ravel +ravelling ravel +razor-cutting razor-cut +re-trod re-tread +re-trodden re-tread +rebelled rebel +rebelling rebel +rebuilt rebuild +rebutted rebut +rebutting rebut +recapped recap +recapping recap +reclassified reclassify +recommitted recommit +recommitting recommit +recopied recopy +rectified rectify +recurred recur +recurring recur +red red +red-pencilled red-pencil +red-pencilling red-pencil +redded red redd +redding red redd +redid redo +redone redo +referred refer +referring refer +refitted refit +refitting refit +reft reave +refuelled refuel +refuelling refuel +regretted regret +regretting regret +reheard rehear +reified reify +relied rely +remade remake +remarried remarry +remitted remit +remitting remit +rent rend +repaid repay +repelled repel +repelling repel +replevied replevy +replied reply +repotted repot +repotting repot +reran rerun +rerunning rerun +resat resit +resetting reset +resewn resew +resitting resit +retaken retake +rethought rethink +retold retell +retook retake +retransmitted retransmit +retransmitting retransmit +retried retry +retrofitted retrofit +retrofitting retrofit +retted ret +retting ret +reunified reunify +revelled revel +revelling revel +revetted revet +revetting revet +revivified revivify +revved rev +revving rev +rewound rewind +rewritten rewrite +rewrote rewrite +ribbed rib +ribbing rib +ricochetted ricochet +ricochetting ricochet +ridded rid +ridden ride +ridding rid +rigged rig +rigging rig +rigidified rigidify +rimmed rim +rimming rim +ripped rip +ripping rip +risen rise +rivalled rival +rivalling rival +riven rive +robbed rob +robbing rob +rode ride +rose rise +rotted rot +rotting rot +rough-dried rough-dry +rough-hewn rough-hew +rove reeve +rowelled rowel +rowelling rowel +rubbed rub +rubbing rub +rung ring +running run +rutted rut +rutting rut +saccharified saccharify +sagged sag +sagging sag +said say +salaried salary +salified salify +sallied sally +sanctified sanctify +sandbagged sandbag +sandbagging sandbag +sang sing +sank sink +saponified saponify +sapped sap +sapping sap +sat sit +satisfied satisfy +savvied savvy +saw see +sawn saw +scagged scag +scagging scag +scanned scan +scanning scan +scarified scarify +scarred scar +scarring scar +scatted scat +scatting scat +scorified scorify +scragged scrag +scragging scrag +scrammed scram +scramming scram +scrapped scrap +scrapping scrap +scried scry +scrubbed scrub +scrubbing scrub +scrummed scrum +scrumming scrum +scudded scud +scudding scud +scummed scum +scumming scum +scurried scurry +seed seed +seen see +sent send +setting set +sewn sew +shagged shag +shagging shag +shaken shake +shaken_hands shake_hands +shakes_hands shake_hands +shaking_hands shake_hands +shammed sham +shamming sham +sharecropped sharecrop +sharecropping sharecrop +shat shit +shaven shave +shed shed +shedding shed +shellacked shellac +shellacking shellac +shent shend +shewn shew +shied shy +shikarred shikar +shikarring shikar +shillyshallied shillyshally +shimmed shim +shimmied shimmy +shimming shim +shinned shin +shinning shin +shipped ship +shipping ship +shitted shit +shitting shit +shod shoe +shone shine +shook shake +shook_hands shake_hands +shopped shop +shopping shop +shot shoot +shotgunned shotgun +shotgunning shotgun +shotted shot +shotting shot +shovelled shovel +shovelling shovel +shown show +shrank shrink +shredded shred +shredding shred +shrink-wrapped shrink-wrap +shrink-wrapping shrink-wrap +shrivelled shrivel +shrivelling shrivel +shriven shrive +shrove shrive +shrugged shrug +shrugging shrug +shrunk shrink +shrunken shrink +shunned shun +shunning shun +shutting shut +sicked sic +sicking sic +sideslipped sideslip +sideslipping sideslip +sidestepped sidestep +sidestepping sidestep +sightsaw sightsee +sightseen sightsee +signalled signal +signalling signal +signified signify +silicified silicify +simplified simplify +singing sing singe +single-stepped single-step +single-stepping single-step +sinned sin +sinning sin +sipped sip +sipping sip +sitting sit +skellied skelly +skenned sken +skenning sken +sketted sket +sketting sket +ski'd ski +skidded skid +skidding skid +skimmed skim +skimming skim +skin-popped skin-pop +skin-popping skin-pop +skinned skin +skinning skin +skinny-dipped skinny-dip +skinny-dipping skinny-dip +skipped skip +skipping skip +skivvied skivvy +skydove skydive +slabbed slab +slabbing slab +slagged slag +slagging slag +slain slay +slammed slam +slamming slam +slapped slap +slapping slap +slatted slat +slatting slat +sledding sled +slept sleep +slew slay +slid slide +slidden slide +slipped slip +slipping slip +slitting slit +slogged slog +slogging slog +slopped slop +slopping slop +slotted slot +slotting slot +slugged slug +slugging slug +slummed slum +slumming slum +slung sling +slunk slink +slurred slur +slurring slur +smelt smell +smit smite +smitten smite +smote smite +smutted smut +smutting smut +snagged snag +snagging snag +snapped snap +snapping snap +snedded sned +snedding sned +snipped snip +snipping snip +snivelled snivel +snivelling snivel +snogged snog +snogging snog +snubbed snub +snubbing snub +snuck sneak +snugged snug +snugging snug +sobbed sob +sobbing sob +sodded sod +sodding sod +soft-pedalled soft-pedal +soft-pedalling soft-pedal +sold sell +solemnified solemnify +solidified solidify +soothsaid soothsay +sopped sop +sopping sop +sought seek +sown sow +spagged spag +spagging spag +spancelled spancel +spancelling spancel +spanned span +spanning span +sparred spar +sparring spar +spat spit +spatted spat +spatting spat +specified specify +sped speed +speechified speechify +spellbound spellbind +spelt spell +spent spend +spied spy +spilt spill +spin-dried spin-dry +spinning spin +spiralled spiral +spiralling spiral +spitted spit +spitting spit +splitting split +spoilt spoil +spoke speak +spoken speak +spoon-fed spoon-feed +spotlit spotlight +spotted spot +spotting spot +sprang spring +sprigged sprig +sprigging sprig +sprung spring +spudded spud +spudding spud +spun spin +spurred spur +spurring spur +squatted squat +squatting squat +squibbed squib +squibbing squib +squidded squid +squidding squid +squilgee squeegee +stabbed stab +stabbing stab +stall-fed stall-feed +stank stink +starred star +starring star +steadied steady +stellified stellify +stemmed stem +stemming stem +stems_from stem_from +stencilled stencil +stencilling stencil +stepped step +stepping step +stetted stet +stetting stet +stied sty +stilettoeing stiletto +stirred stir +stirring stir +stole steal +stolen steal +stood stand +stopped stop +stopping stop +storied story +stotted stot +stotting stot +stove stave +strapped strap +strapping strap +stratified stratify +strewn strew +stridden stride +stripped strip +stripping strip +striven strive +strode stride +stropped strop +stropping strop +strove strive +strown strow +struck strike +strummed strum +strumming strum +strung string +strutted strut +strutting strut +stubbed stub +stubbing stub +stuck stick +studded stud +studding stud +studied study +stultified stultify +stummed stum +stumming stum +stung sting +stunk stink +stunned stun +stunning stun +stupefied stupefy +stymying stymie +subbed sub +subbing sub +subjectified subjectify +subletting sublet +submitted submit +submitting submit +subtotalled subtotal +subtotalling subtotal +sullied sully +sulphuretted sulphuret +sulphuretting sulphuret +summed sum +summing sum +sung sing +sunk sink +sunken sink +sunned sun +sunning sun +supped sup +supping sup +supplied supply +swabbed swab +swabbing swab +swagged swag +swagging swag +swam swim +swapped swap +swapping swap +swatted swat +swatting swat +swept sweep +swigged swig +swigging swig +swimming swim +swivelled swivel +swivelling swivel +swollen swell +swopped swap +swopping swap +swops swap +swore swear +sworn swear +swotted swot +swotting swot +swum swim +swung swing +syllabified syllabify +symbolled symbol +symbolling symbol +tabbed tab +tabbing tab +tagged tag +tagging tag +taken take +taken_a_side take_a_side +taken_pains take_pains +taken_steps take_steps +takes_a_side take_a_side +takes_pains take_pains +takes_steps take_steps +taking_a_side take_a_side +taking_pains take_pains +taking_steps take_steps +talcked talc +talcking talc +tallied tally +tally-ho'd tally-ho +tammied tammy +tanned tan +tanning tan +tapped tap +tapping tap +tarred tar +tarried tarry +tarring tar +tasselled tassel +tasselling tassel +tatted tat +tatting tat +taught teach +taxis taxis +taxying taxi +teaselled teasel +teaselling teasel +tedded ted +tedding ted +tepefied tepefy +terrified terrify +testes testes +testified testify +thinking_the_world_of think_the_world_of +thinks_the_world_of think_the_world_of +thinned thin +thinning thin +thought think +thought_the_world_of think_the_world_of +threw throw +threw_out throw_out +thriven thrive +throbbed throb +throbbing throb +throve thrive +throwing_out throw_out +thrown throw +thrown_out throw_out +throws_out throw_out +thrummed thrum +thrumming thrum +thudded thud +thudding thud +tidied tidy +tinned tin +tinning tin +tinselled tinsel +tinselling tinsel +tipped tip +tipping tip +tittupped tittup +tittupping tittup +toadied toady +togged tog +togging tog +told tell +took take +took_a_side take_a_side +took_pains take_pains +took_steps take_steps +topped top +topping top +tore tear +torn tear +torrefied torrefy +torrify torrefy +totalled total +totalling total +totted tot +totting tot +towelled towel +towelling towel +trafficked traffic +trafficking traffic +trameled trammel +trameling trammel +tramelled trammel +tramelling trammel +tramels trammel +trammed tram +tramming tram +transferred transfer +transferring transfer +transfixt transfix +tranship transship +transhipped tranship +transhipping tranship +transmitted transmit +transmitting transmit +transmogrified transmogrify +transshipped transship +transshipping transship +trapanned trapan +trapanning trapan +trapped trap +trapping trap +travelled travel +travelling travel +travestied travesty +trekked trek +trekking trek +trepanned trepan +trepanning trepan +tried try +trigged trig +trigging trig +trimmed trim +trimming trim +tripped trip +tripping trip +trod tread +trodden tread +trogged trog +trogging trog +trotted trot +trotting trot +trowelled trowel +trowelling trowel +tugged tug +tugging tug +tumefied tumefy +tunned tun +tunnelled tunnel +tunnelling tunnel +tunning tun +tupped tup +tupping tup +tut-tutted tut-tut +tut-tutting tut-tut +twigged twig +twigging twig +twinned twin +twinning twin +twitted twit +twitting twit +tying tie +typesetting typeset +typewritten typewrite +typewrote typewrite +typified typify +uglified uglify +unbarred unbar +unbarring unbar +unbent unbend +unbound unbind +uncapped uncap +uncapping uncap +unclad unclothe +unclogged unclog +unclogging unclog +underbidding underbid +underbought underbuy +undercutting undercut +underfed underfeed +undergirt undergird +undergone undergo +underlaid underlay +underlain underlie +underlay underlie +underletting underlet +underlying underlie +underpaid underpay +underpinned underpin +underpinning underpin +underpropped underprop +underpropping underprop +undersetting underset +undershot undershoot +undersold undersell +understood understand +understudied understudy +undertaken undertake +undertook undertake +underwent undergo +underwritten underwrite +underwrote underwrite +undid undo +undone undo +unfitted unfit +unfitting unfit +unfroze unfreeze +unfrozen unfreeze +unified unify +unkennelled unkennel +unkennelling unkennel +unknitted unknit +unknitting unknit +unlaid unlay +unlearnt unlearn +unmade unmake +unmanned unman +unmanning unman +unpegged unpeg +unpegging unpeg +unpinned unpin +unpinning unpin +unplugged unplug +unplugging unplug +unravelled unravel +unravelling unravel +unrigged unrig +unrigging unrig +unripped unrip +unripping unrip +unrove unreeve +unsaid unsay +unshipped unship +unshipping unship +unslung unsling +unsnapped unsnap +unsnapping unsnap +unspoke unspeak +unspoken unspeak +unsteadied unsteady +unstepped unstep +unstepping unstep +unstopped unstop +unstopping unstop +unstrung unstring +unstuck unstick +unswore unswear +unsworn unswear +untaught unteach +unthought unthink +untidied untidy +untrod untread +untrodden untread +untying untie +unwound unwind +unwrapped unwrap +unwrapping unwrap +unzipped unzip +unzipping unzip +upbuilt upbuild +upheld uphold +uphove upheave +upped up +uppercutting uppercut +upping up +uprisen uprise +uprose uprise +upsetting upset +upsprang upspring +upsprung upspring +upswept upsweep +upswollen upswell +upswung upswing +vagged vag +vagging vag +varied vary +vatted vat +vatting vat +verbified verbify +verified verify +versified versify +vetted vet +vetting vet +victualled victual +victualling victual +vilified vilify +vitrified vitrify +vitriolled vitriol +vitriolling vitriol +vivified vivify +vying vie +wadded wad +waddied waddy +wadding wad +wadsetted wadset +wadsetting wadset +wagged wag +wagging wag +wanned wan +wanning wan +warred war +warring war +was be +water-ski'd water-ski +waylaid waylay +wearied weary +weatherstripped weatherstrip +weatherstripping weatherstrip +webbed web +webbing web +wedded wed +wedding wed +weed weed +went go +went_deep go_deep +wept weep +were be +wetted wet +wetting wet +whammed wham +whamming wham +whapped whap +whapping whap +whetted whet +whetting whet +whinnied whinny +whipped whip +whipping whip +whipsawn whipsaw +whirred whir +whirring whir +whistle-stopped whistle-stop +whistle-stopping whistle-stop +whizzed whiz +whizzes whiz +whizzing whiz +whopped whop +whopping whop +wigged wig +wigging wig +wigwagged wigwag +wigwagging wigwag +wildcatted wildcat +wildcatting wildcat +window-shopped window-shop +window-shopping window-shop +winning win +winterfed winterfeed +wiredrawn wiredraw +wiredrew wiredraw +withdrawn withdraw +withdrew withdraw +withheld withhold +withstood withstand +woke wake +woken wake +won win +wonned won +wonning won +wore wear +worn wear +worried worry +worshipped worship +worshipping worship +wound wind +wove weave +woven weave +wrapped wrap +wrapping wrap +wried wry +written write +wrote write +wrought work +wrung wring +yakked yak +yakking yak +yapped yap +yapping yap +ycleped clepe +yclept clepe +yenned yen +yenning yen +yodelled yodel +yodelling yodel +zapped zap +zapping zap +zigzagged zigzag +zigzagging zigzag +zipped zip +zipping zip diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0.exc.db b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0.exc.db new file mode 100644 index 0000000000000000000000000000000000000000..a7a14c7726d7f2b8ba608c742f9d8f44f47cf87e Binary files /dev/null and b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/WordNet-2.0.exc.db differ diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/data/smart_common_words.txt b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/smart_common_words.txt new file mode 100644 index 0000000000000000000000000000000000000000..76991f63a940cd383d186985f11373e4e765cc15 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/data/smart_common_words.txt @@ -0,0 +1,598 @@ +reuters +ap +jan +feb +mar +apr +may +jun +jul +aug +sep +oct +nov +dec +tech +news +index +mon +tue +wed +thu +fri +sat +'s +a +a's +able +about +above +according +accordingly +across +actually +after +afterwards +again +against +ain't +all +allow +allows +almost +alone +along +already +also +although +always +am +amid +among +amongst +an +and +another +any +anybody +anyhow +anyone +anything +anyway +anyways +anywhere +apart +appear +appreciate +appropriate +are +aren't +around +as +aside +ask +asking +associated +at +available +away +awfully +b +be +became +because +become +becomes +becoming +been +before +beforehand +behind +being +believe +below +beside +besides +best +better +between +beyond +both +brief +but +by +c +c'mon +c's +came +can +can't +cannot +cant +cause +causes +certain +certainly +changes +clearly +co +com +come +comes +concerning +consequently +consider +considering +contain +containing +contains +corresponding +could +couldn't +course +currently +d +definitely +described +despite +did +didn't +different +do +does +doesn't +doing +don't +done +down +downwards +during +e +each +edu +eg +e.g. +eight +either +else +elsewhere +enough +entirely +especially +et +etc +etc. +even +ever +every +everybody +everyone +everything +everywhere +ex +exactly +example +except +f +far +few +fifth +five +followed +following +follows +for +former +formerly +forth +four +from +further +furthermore +g +get +gets +getting +given +gives +go +goes +going +gone +got +gotten +greetings +h +had +hadn't +happens +hardly +has +hasn't +have +haven't +having +he +he's +hello +help +hence +her +here +here's +hereafter +hereby +herein +hereupon +hers +herself +hi +him +himself +his +hither +hopefully +how +howbeit +however +i +i'd +i'll +i'm +i've +ie +i.e. +if +ignored +immediate +in +inasmuch +inc +indeed +indicate +indicated +indicates +inner +insofar +instead +into +inward +is +isn't +it +it'd +it'll +it's +its +itself +j +just +k +keep +keeps +kept +know +knows +known +l +lately +later +latter +latterly +least +less +lest +let +let's +like +liked +likely +little +look +looking +looks +ltd +m +mainly +many +may +maybe +me +mean +meanwhile +merely +might +more +moreover +most +mostly +mr. +ms. +much +must +my +myself +n +namely +nd +near +nearly +necessary +need +needs +neither +never +nevertheless +new +next +nine +no +nobody +non +none +noone +nor +normally +not +nothing +novel +now +nowhere +o +obviously +of +off +often +oh +ok +okay +old +on +once +one +ones +only +onto +or +other +others +otherwise +ought +our +ours +ourselves +out +outside +over +overall +own +p +particular +particularly +per +perhaps +placed +please +plus +possible +presumably +probably +provides +q +que +quite +qv +r +rather +rd +re +really +reasonably +regarding +regardless +regards +relatively +respectively +right +s +said +same +saw +say +saying +says +second +secondly +see +seeing +seem +seemed +seeming +seems +seen +self +selves +sensible +sent +serious +seriously +seven +several +shall +she +should +shouldn't +since +six +so +some +somebody +somehow +someone +something +sometime +sometimes +somewhat +somewhere +soon +sorry +specified +specify +specifying +still +sub +such +sup +sure +t +t's +take +taken +tell +tends +th +than +thank +thanks +thanx +that +that's +thats +the +their +theirs +them +themselves +then +thence +there +there's +thereafter +thereby +therefore +therein +theres +thereupon +these +they +they'd +they'll +they're +they've +think +third +this +thorough +thoroughly +those +though +three +through +throughout +thru +thus +to +together +too +took +toward +towards +tried +tries +truly +try +trying +twice +two +u +un +under +unfortunately +unless +unlikely +until +unto +up +upon +us +use +used +useful +uses +using +usually +uucp +v +value +various +very +via +viz +vs +w +want +wants +was +wasn't +way +we +we'd +we'll +we're +we've +welcome +well +went +were +weren't +what +what's +whatever +when +whence +whenever +where +where's +whereafter +whereas +whereby +wherein +whereupon +wherever +whether +which +while +whither +who +who's +whoever +whole +whom +whose +why +will +willing +wish +with +within +without +won't +wonder +would +would +wouldn't +x +y +yes +yet +you +you'd +you'll +you're +you've +your +yours +yourself +yourselves +z +zero diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/ACL2004.pdf b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/ACL2004.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4fa9701822e9309ab3152bc9c6266b25a4cb8ab5 Binary files /dev/null and b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/ACL2004.pdf differ diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/COLING2004.pdf b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/COLING2004.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2ffd0d124e28ede77b8a62c28886aeb6ebc8ad42 Binary files /dev/null and b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/COLING2004.pdf differ diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/NAACL2003.pdf b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/NAACL2003.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cba1a1815d5815101c52f06c9241aa5f6cba94a5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/NAACL2003.pdf @@ -0,0 +1,14383 @@ +%PDF-1.2 +% +2 0 obj +<< +/Length 19457 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 79.7078 747.8962 Tm +/Cs5 cs 0 0 0 sc +/GS1 gs +0.0007 Tc +0.0079 Tw +[(I)6.1(n)0.7( P)25.3(r)-6.7(oceedings)-6.7( of the)13.5( Human T)5.1(e)13.5(chnology )17.2(C)12.5(onfer)-6.7(ence)13.5( 2003 \()23.4(H)-1.3(L)5.1(T)5.2(-)6.1(N)-4.7(A)8.1(A)8.1(C)-4.7(L)-12.1(-)6.1(2003\))6.1(,)-7.9( M)6.1(a)0.7(y )17.2(27 June)13.5( 1,)9.3( 2003,)9.3( E)8.1(d)0.7(monton,)-7.9( )17.2(Canada )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 736.4135 Tm +0 Tc +0 Tw +( )Tj +/TT6 1 Tf +15.0517 0 0 15.0517 141.932 705.9997 Tm +-0.0012 Tc +-0.0014 Tw +[(Auto)-6.4(m)17.4(a)-6.4(tic Eva)-6.4(l)-1.7(u)8.6(a)-6.4(tion of Sum)7.1(m)17.4(a)-6.4(ries Using)-6.4( N-)12.2(g)-6.4(r)-0.7(am)7.1( )]TJ +5.5876 -1.134 TD +-0.0007 Tc +-0.0122 Tw +[(Co)-5.8(-Occurrence Sta)-5.9(t)2.4(istic)10.2(s)-3.3( )]TJ +11.9483 0 0 11.9483 222.0009 659.448 Tm +0.0021 Tc +-0.0053 Tw +[(Chi)7.2(n)-0.2(-Yew)-16( L)6.8(i)7.2(n and E)6.7(dua)-17.4(rd Ho)-17.4(v)8.6(y)-4.3( )]TJ +/TT4 1 Tf +0.987 -1.1299 TD +0.0071 Tc +-0.0103 Tw +[(I)15.4(n)0.6(for)-10.5(m)31.7(at)12.2(i)12.2(on Sci)12.2(e)9.4(nc)9.4(e)9.4(s)-6.3( )-12.9(I)15.4(n)0.6(s)6.6(t)12.2(it)12.2(ut)12.2(e)9.5( )]TJ +-0.7273 -1.1558 TD +0.0059 Tc +-0.0091 Tw +[(Uni)11(v)12.4(e)8.2(r)1.2(s)5.4(i)-2(t)-15(y)25.4( of Sout)11(he)8.2(rn C)10.6(a)-4.8(l)11(i)11(f)1.2(ornia)8.2( )]TJ +2.5065 -1.1429 TD +0.0066 Tc +-0.0098 Tw +[(4676 Adm)31.2(i)11.7(ral)11.7(t)-14.3(y)26.1( )-12.9(W)15.4(a)-17.1(y)26.1( )]TJ +-1.1948 -1.1558 TD +0.0068 Tc +-0.01 Tw +[(M)12.8(a)9.1(ri)11.9(na de)9.1(l R)11.5(e)-16.9(y)26.3(,)-2.9( C)11.5(A)-11.3( 90292 )]TJ +/F1 1 Tf +0.039 -1.3766 TD +-0.0026 Tc +0 Tw +[({cy)-13(l,h)-13(ov)-13(y})-13(@is)-13(i.)-13(edu )]TJ +/TT4 1 Tf +11.0172 0 0 11.0172 71.9492 572.0859 Tm +0 Tc +( )Tj +/TT6 1 Tf +11.9483 0 0 11.9483 71.9492 546.1721 Tm +-0.0014 Tc +[(A)-6.5(b)-3.7(st)-6.1(ra)-7.9(ct)-6( )]TJ +/TT4 1 Tf +9.931 0 0 9.931 91.8113 522.4307 Tm +0.002 Tc +0.0605 Tw +[(F)11.3(o)-13.6(ll)14.2(o)-13.6(w)5.4(ing the)8.4( r)-8.7(e)-7.3(c)8.3(e)8.3(n)2(t )-15.6(a)8.3(doptio)-13.6(n b)-13.6(y)33.2( th)-13.6(e)8.3( )-15.6(ma)8.3(c)-7.3(h)2(ine)-7.3( )]TJ +0 -1.1563 TD +0.0022 Tc +0.3102 Tw +[(tr)7.1(a)8.5(n)2.2(s)-14.9(l)-1.2(a)8.5(tion c)-7.1(o)-13.4(mm)14.4(unit)-16.8(y)17.8( o)-13.4(f)7.1( a)8.5(u)2.2(to)-13.4(ma)8.5(ti)-16.8(c)8.5( e)-7.1(v)17.8(a)-7.1(l)-1.2(ua)-7.1(-)]TJ +T* +0.0004 Tc +0.2496 Tw +[(tion using the)6.7( )-15.6(BLEU/)-18.6(N)-11.8(I)20.9(S)-6(T)-13.8( sc)6.7(ori)-18.6(ng )-15.6(pro)-15.2(c)6.7(e)6.7(ss,)-15.2( )]TJ +T* +0.0018 Tc +0.0295 Tw +[(w)5.2(e)8.1( )-15.6(c)8.1(ond)-13.8(uc)8.1(t a)-7.5(n)1.8( in)-13.8(-)22.3(d)-13.8(e)8.1(p)1.8(th stu)-13.8(d)-13.8(y)17.4( of)6.7( )-15.6(a)8.1( si)-17.2(m)14(i)-17.2(la)8.1(r)6.7( id)-13.8(e)8.1(a)-7.5( )]TJ +0 -1.1719 TD +0.2483 Tw +[(f)6.6(o)1.7(r)-9( e)-7.6(v)1.7(a)-7.6(l)13.9(u)-13.9(a)8(ting)-13.9( su)-13.9(mma)8(r)6.6(i)-17.3(e)8(s)0.2(. T)-12.5(h)-13.9(e)8( )-15.6(r)6.6(e)8(su)-13.9(l)13.9(t)-17.3(s sho)-13.9(w)-10.5( )]TJ +0 -1.1563 TD +0.0015 Tc +0.2172 Tw +[(tha)7.8(t)-1.9( a)7.8(u)1.5(t)-17.5(o)-14.1(m)13.7(a)7.8(ti)-17.5(c)7.8( e)-7.8(v)1.5(a)-7.8(l)13.7(u)-14.1(a)7.8(tion u)-14.1(s)0(ing unig)-14.1(r)-9.2(a)-7.8(m)13.7( c)-7.8(o)-14.1(-)]TJ +T* +-0.0061 Tc +0.0217 Tw +[(o)-6.1(c)0.2(c)-15.4(u)-6.1(r)-16.8(r)-1.2(en)-21.7(c)-15.4(e)0.2(s)-7.6( b)-21.7(e)0.2(t)-9.5(w)-18.3(een)-6.1( s)-23.2(u)-21.7(m)-9.5(m)-9.5(a)0.2(r)-16.8(y)9.5( p)-21.7(a)0.2(i)-9.5(r)-1.2(s)-7.6( )-15.7(co)-21.7(rr)-16.8(el)-9.5(at)-25.1(es)-23.2( )]TJ +T* +0.0007 Tc +0.0462 Tw +[(surprisi)-18.3(ng )15.7(w)-11.5(e)-8.6(ll)12.9( with )15.6(hu)-14.9(ma)7(n e)-8.6(v)0.7(a)-8.6(l)12.9(u)-14.9(a)7(tion)-14.9(s)-0.8(, )15.6(ba)7(s)-16.4(e)7(d)-14.9( )]TJ +T* +0.002 Tc +0.0918 Tw +[(on va)8.3(r)6.9(i)-1.4(o)-13.6(u)2(s )15.7(st)-17(a)8.3(tistic)-7.3(a)8.3(l)-1.4( me)8.3(tr)6.9(i)-17(c)8.3(s; )15.7(w)-10.2(h)2(ile)8.3( di)-17(r)6.9(e)-7.3(c)8.3(t)-1.4( a)8.4(p)-13.6(-)]TJ +T* +0.0006 Tc +0.2494 Tw +[(pl)12.8(i)-18.4(c)6.9(a)6.9(tio)-15(n )15.6(of )15.7(the)6.9( BLEU e)-8.7(v)0.6(a)6.9(l)-2.8(ua)6.9(tio)-15(n )15.6(pr)-10.1(oc)6.9(e)-8.7(dur)-10.1(e)-8.7( )]TJ +T* +0.0003 Tc +-0.0003 Tw +[(doe)6.6(s n)-15.3(o)0.3(t a)-9(l)-3.1(wa)-24.6(y)15.9(s)-1.2( gi)-18.7(ve)6.6( go)-15.3(od r)-10.4(e)6.6(su)-15.3(l)12.5(t)-3.1(s. )]TJ +/TT6 1 Tf +11.9483 0 0 11.9483 71.9492 370.0514 Tm +0 Tc +0 Tw +(1)Tj +/TT8 1 Tf +0.5065 0 TD +( )Tj +/TT6 1 Tf +1.1558 0 TD +0.0037 Tc +[(Intr)6(oduc)6(ti)8.8(on )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 349.2583 Tm +0.002 Tc +0.0605 Tw +[(A)5.4(u)2(to)-13.6(ma)8.3(te)8.3(d t)-17(e)8.3(xt su)-13.6(mma)8.3(r)6.9(i)-17(z)-7.3(a)8.3(tion h)-13.6(a)8.3(s dr)-8.6(a)-7.3(w)5.4(n a)8.3( )-15.6(l)14.2(o)2(t o)-13.6(f)6.9( inte)-7.2(r)-8.7(-)]TJ +0 -1.1563 TD +0.0018 Tc +0.1388 Tw +[(e)8.1(s)0.3(t in th)-13.8(e)8.1( n)-13.8(a)8.1(tu)-13.8(r)6.7(a)-7.5(l)14( )-15.7(la)8.1(ng)-13.8(ua)8.1(g)-13.8(e)8.1( )-15.7(pr)6.7(o)-13.8(c)8.1(e)-7.5(ssing)-13.8( a)8.1(n)1.8(d)-13.8( inf)6.7(o)-13.8(r)-8.9(m)-1.6(a)8.1(tion)-13.8( )]TJ +0 -1.1719 TD +0.0019 Tc +0.2012 Tw +[(r)6.8(e)8.2(tr)6.8(i)-17.1(e)-7.4(va)-7.4(l)14.1( c)8.2(o)-13.7(mmunitie)8.2(s in the)8.2( r)-8.8(e)-7.4(c)8.2(e)-7.4(nt )-15.7(y)17.5(e)8.2(a)-7.4(r)6.8(s. )-15.7(A)20.9( se)-7.4(r)6.8(i)-1.5(e)8.2(s)0.4( o)-13.7(f)-8.8( )]TJ +0 -1.1563 TD +0.0013 Tc +0.4362 Tw +[(work)-14.3(shops o)-14.3(n)1.3( a)7.6(u)1.3(to)-14.3(ma)7.6(ti)-17.7(c)7.6( te)7.6(xt su)-14.3(m)-17.7(m)-2.1(a)7.6(r)6.2(i)-17.7(z)7.6(a)7.6(tio)-14.3(n \()-9.4(W)-8(A)20.3(S)-20.7( )]TJ +T* +0.0006 Tc +0.4057 Tw +[(2000, 2001)-15(, 2002)-15(\), spe)-8.7(c)6.9(ia)-8.7(l)12.8( topi)-18.4(c)6.9( se)6.9(ssions in )-15.6(A)19.6(C)-19.9(L)17.7(,)-30.7( )]TJ +T* +0.0005 Tc +0.562 Tw +[(CO)-11.7(LING)-11.7(, )-15.6(a)6.8(n)0.5(d)-15.1( S)-21.5(I)21(G)-11.7(I)5.4(R, )-15.6(a)6.8(n)-15.1(d g)-15.1(o)-15.1(v)16.1(e)-8.8(r)5.4(n)-15.1(m)-2.9(e)7(n)0.5(t s)-16.6(ponso)-15.1(r)-10.2(e)6.8(d)-15.1( )]TJ +T* +0.0001 Tc +0.078 Tw +[(e)-9.2(v)15.7(a)-9.2(l)-3.3(ua)6.4(tio)-15.5(n e)6.4(f)-10.6(forts in th)-15.5(e)6.4( Unit)-18.9(e)6.4(d)0.1( S)-6.3(t)-3.3(a)6.4(t)-18.9(e)6.4(s)-1.4( \(D)-12.1(UC 2002)-15.5(\) a)6.4(n)0.1(d)-31.2( )]TJ +T* +-0.0003 Tc +0.2347 Tw +[(Ja)6(p)-15.9(a)6(n \()-11(F)-6.7(ukusi)-19.3(m)-3.7(a)6( )-15.6(a)6(nd )-15.6(Oku)-15.9(m)-3.7(ur)-11(a)6( 20)-15.9(01)-15.9(\) h)-15.9(a)-9.6(v)15.3(e)-9.6( a)6(d)-15.9(va)-9.6(nc)-9.6(e)6(d)-15.9( )]TJ +T* +-0.0001 Tc +0.1407 Tw +[(the)6.2( te)-9.4(c)6.2(hno)-15.7(l)12.1(o)-15.7(g)-15.7(y)15.5( a)6.2(n)-15.7(d pro)-15.7(duc)-9.4(e)6.2(d)-0.1( )-15.7(a)6.2( c)6.2(o)-0.1(u)-15.7(p)-15.7(l)12.1(e)-9.4( of e)6.2(x)-0.1(p)-15.7(e)6.2(ri)-19.1(me)6.2(nt)-19.1(a)-9.4(l)-3.5( )]TJ +T* +0.0001 Tc +0.2968 Tw +[(onl)12.3(i)-18.9(n)0.1(e)-9.2( )15.6(s)-17(y)15.7(ste)-9.2(m)-3.3(s )15.6(\(R)-20.4(a)6.4(d)-15.5(e)-9.2(v)0.1( )15.6(e)6.4(t)-3.3( a)-9.2(l)12.3(. 2001,)-15.5( Mc)6.4(K)-12.1(e)6.4(o)-15.5(w)3.5(n e)6.4(t)-3.3( a)-9.2(l)12.3(.)-15.5( )]TJ +T* +0.0003 Tc +0.3591 Tw +[(2002\). )-15.6(De)-9(spite)6.6( th)-15.3(e)6.6(s)-1.2(e)6.6( )-15.6(e)6.6(f)-10.4(forts)-16.8(,)0.3( how)-11.9(e)-9(v)0.3(e)6.6(r)5.3(, th)-15.3(e)6.6(r)-10.4(e)6.6( a)-9(r)5.2(e)6.6( n)-15.3(o)-15.3( )]TJ +T* +0.0008 Tc +0.218 Tw +[(c)7.1(o)-14.8(mm)13(o)-14.8(n, )15.7(c)7.1(o)-14.8(n)-14.8(v)16.4(e)-8.5(n)0.8(ie)7.1(nt)-18.2(, )15.7(a)7.1(nd re)-8.5(pe)-8.5(a)7.1(t)-2.6(a)-8.5(b)-14.8(l)13(e)7.1( e)-8.5(v)16.4(a)-8.5(l)-2.6(ua)7.1(tio)-14.8(n m)13(e)7.1(th)-14.8(-)]TJ +T* +0.0013 Tc +0.0924 Tw +[(ods th)-14.3(a)7.6(t)-2.1( )-15.7(c)7.6(a)7.6(n)-14.3( b)-14.3(e)7.6( )-15.7(e)7.6(a)7.6(s)-0.2(i)-17.7(l)-2.1(y)16.9( )-15.7(a)-8(p)1.3(p)-14.3(l)13.5(ie)-8(d to)-14.3( supp)-14.3(ort s)-15.8(y)16.9(st)-17.7(e)-8(m)13.5( )-15.7(de)-8(ve)-7.8(l-)]TJ +T* +0.0006 Tc +0.2963 Tw +[(op)-15(m)12.8(e)6.9(nt)-18.4( a)-8.7(nd just)-18.4(-in)-15(-)21.1(ti)-18.4(me)6.9( )-15.6(c)6.9(o)-15(m)12.8(p)-15(a)6.9(r)5.5(is)-16.5(on)-15( a)-8.7(m)12.8(o)-15(ng di)-18.4(ff)-10.1(e)6.9(r)-10.1(e)6.9(n)0.6(t)-18.4( )]TJ +T* +0.0019 Tc +0.0137 Tw +[(summa)-7.4(r)6.8(i)-1.5(z)-7.4(a)8.2(tion me)8.2(tho)-13.7(d)1.9(s. )]TJ +T* +-0.0006 Tc +0.0944 Tw +[(T)-14.8(h)-0.6(e)5.7( Doc)-9.9(u)-16.2(m)11.6(e)-9.9(nt Und)-16.2(e)5.7(rst)-19.6(a)5.7(ndi)]TJ +11.3438 0 TD +-0.0003 Tc +0.0941 Tw +[(n)-15.9(g)-0.3( Conf)-11(e)6(r)-11(e)-9.6(n)-0.3(c)6(e)6( )-15.6(\(D)-12.5(UC 2002)-15.9(\))-11( )]TJ +-11.3438 -1.1563 TD +0.0021 Tc +0.076 Tw +[(r)7(un b)-13.5(y)17.7( th)-13.5(e)8.4( N)5.5(a)8.4(ti)-16.9(ona)-7.2(l)14.3( )-15.7(I)7(n)2.1(stitute)8.4( o)-13.5(f)7( Sta)8.4(n)2.1(d)-13.5(a)-7.2(r)7(d)2.1(s a)8.4(n)-13.5(d T)-12.1(e)8.4(c)8.4(h)2.1(n)-13.5(o)2.2(l-)]TJ +T* +0.0015 Tc +0.0923 Tw +[(og)-14.1(y)32.7( )-15.6(\()6.4(N)-10.7(I)6.4(S)-4.9(T)-12.7(\))6.4( se)7.8(ts out to a)7.8(d)1.5(d)-14.1(r)6.4(e)7.8(ss this pr)-9.2(oble)-7.8(m)13.7( b)-14.1(y)17.1( pr)-9.2(o)-14.1(v)17.1(id)-14.1(-)]TJ +T* +0.389 Tw +[(ing a)7.9(nnu)-14(a)-7.7(l)13.8( la)7.9(r)-9.1(g)1.6(e)7.9( sc)-7.7(a)-7.7(l)-1.8(e)7.9( c)7.9(o)-14(mm)13.8(o)-14(n)1.6( e)-7.7(v)1.6(a)-7.7(l)13.8(ua)7.9(tio)-14(ns in te)7.9(xt)-17.4( )]TJ +T* +0.0013 Tc +0.4986 Tw +[(summa)-8(riz)-8(a)7.6(tion. H)-10.9(o)1.3(w)-10.9(e)-8(ve)7.6(r, th)-14.3(e)7.6(s)-0.2(e)7.6( )-15.7(e)-8(v)1.3(a)-8(l)13.5(u)-14.3(a)7.6(tions in)-14.3(v)16.9(o)-14.3(lve)-8( )]TJ +T* +-0.0059 Tc +0.0528 Tw +[(h)-5.9(u)-21.5(m)6.3(a)0.4(n)-21.5( j)-9.3(u)-5.9(d)-5.9(g)-21.5(es)-23( an)-21.5(d)-5.9( h)-21.5(e)0.4(n)-21.5(c)0.4(e)-15.2( a)-15.2(r)-1(e)-15.2( s)-7.4(u)-5.9(b)-5.9(j)-24.9(ect)-24.9( t)-9.3(o)-21.5( )-15.6(v)9.7(a)-15.2(ri)-9.3(ab)-5.9(i)-24.9(l)6.3(i)-9.3(t)-24.9(y)9.8( )-15.6(\(R)-26.4(at)-9.3(h)-21.5( )]TJ +T* +-0.0009 Tc +0.0634 Tw +[(e)5.4(t)-4.3( )15.6(a)-10.2(l)11.3(. )15.6(1)-16.5(961)-16.5(\). F)8.4(o)-0.9(r e)5.4(x)-16.5(a)-10.2(m)11.3(p)-16.5(l)-4.3(e)5.4(,)-0.9( L)16.2(i)-4.3(n a)5.4(nd Ho)-16.5(vy)14.7( \(20)-16.5(02\) pointe)-10.2(d)-16.5( )]TJ +24.2813 45.5313 TD +0.0011 Tc +0.1239 Tw +[(out tha)7.4(t)-2.3( 18)-14.5(% of th)-14.5(e)7.4( d)-14.5(a)7.4(ta)7.4( )-15.6(c)7.4(o)1.2(nt)-17.9(a)7.4(i)-2.3(ne)-8.2(d )-15.6(mul)13.3(tip)-14.5(le)7.4( judg)-14.5(me)7.4(nts)-16( )]TJ +0 -1.1563 TD +0.0008 Tc +0.0148 Tw +[(in )15.6(the)7.1( DUC 2001 )15.6(si)-18.2(ng)-14.8(l)13(e)7.1( doc)-8.5(u)-14.8(m)13(e)-8.5(n)0.8(t )15.6(e)-8.5(v)0.8(a)-8.5(l)-2.6(ua)7.1(tion)]TJ +6.5172 0 0 6.5172 494.1733 553.1548 Tm +0 Tc +0 Tw +(1)Tj +9.931 0 0 9.931 497.4319 548.6548 Tm +(. )Tj +-18.5625 -1.1563 TD +0.0021 Tc +0.076 Tw +[(T)-12.1(o)2.1( f)7(u)2.1(r)7(t)-1.3(h)-13.5(e)8.4(r)-8.6( pr)-8.6(ogr)-8.6(e)8.4(ss i)-16.9(n)2.1( )-15.7(a)8.4(u)2.1(to)-13.5(ma)8.4(tic)-7.2( su)-13.5(mma)8.4(r)7(i)-16.9(z)8.4(a)8.4(tio)-13.5(n, in)-13.5( this)-15( )]TJ +T* +0.0019 Tc +0.4512 Tw +[(pa)8.2(p)-13.7(e)8.2(r)6.8( )-15.7(w)5.3(e)-7.4( c)8.2(o)-13.7(ndu)-13.7(c)8.2(t)-1.5( a)-7.4(n)1.9( in)-13.7(-)6.8(d)1.9(e)-7.4(p)1.9(th stu)-13.7(d)-13.7(y)17.5( of)6.8( )-15.7(a)8.2(u)1.9(to)-13.7(ma)8.2(ti)-17.1(c)-7.4( )]TJ +T* +0.0009 Tc +0.1866 Tw +[(e)-8.4(v)16.5(a)-8.4(l)-2.5(ua)7.3(tio)-14.7(n m)13.1(e)7.2(th)-14.7(ods )15.6(b)-14.7(a)7.2(s)-16.2(e)7.2(d )15.6(on n)-14.7(-)21.4(g)-14.7(r)5.8(a)-8.4(m)-2.5( c)7.2(o)-14.7(-oc)-8.4(c)7.2(ur)-9.8(r)-9.8(e)7.2(nc)-8.4(e)7.3( )15.6(in)-14.7( )]TJ +T* +0.0001 Tc +0.2812 Tw +[(the)6.4( c)6.4(ont)-18.9(e)6.4(x)0.1(t of DUC)-20.4(. Due)-9.2( )15.7(to )15.7(th)-15.5(e)6.4( se)6.4(t)-18.9(up )15.7(in DUC)-20.4(, )15.7(th)-15.5(e)-9.2( )]TJ +T* +0.0012 Tc +0.1394 Tw +[(e)-8.1(v)16.8(a)-8.1(l)-2.2(ua)7.5(tio)-14.4(ns w)-11(e)7.5( dis)-15.9(c)7.5(uss)-15.9(e)7.5(d)-14.4( he)-8.1(re)-8.1( a)-8.1(r)6.1(e)-8.1( intr)-9.5(insic)7.5( )-15.7(e)-8.1(v)16.8(a)-8.1(l)-2.2(ua)7.5(tio)-14.4(ns)-15.9( )]TJ +T* +0 Tc +0.2031 Tw +[(\(S)-6.4(p)-9.3(rc)6.3(k )-15.7(Jon)-15.6(e)6.3(s a)-9.3(nd G)-12.2(a)-9.2(ll)12.2(ie)-9.3(rs 199)-15.6(6\). S)-22(e)-9.3(c)6.3(tion 2 gi)-19(ve)6.3(s )-15.6(a)6.3(n)-15.6( )]TJ +T* +0.0003 Tc +0.2966 Tw +[(ove)-9(r)-10.4(v)15.9(ie)-9(w of th)-15.3(e)6.6( e)-9(v)0.3(a)-9(l)12.5(u)-15.3(a)6.6(tion pro)-15.3(c)-9(e)6.6(d)0.3(u)-15.3(r)-10.4(e)6.6( use)6.6(d)0.3( in )-15.6(DUC.)-15.3( )]TJ +T* +0.0022 Tc +0.2791 Tw +[(Se)8.5(c)8.5(tion 3 )-15.6(disc)8.5(u)-13.4(sse)8.5(s th)-13.4(e)8.5( )-15.6(I)7.1(B)-2.7(M )-15.6(BL)19.3(E)-12(U)-10( \()7.1(P)-4.1(a)8.6(p)2.2(in)-13.4(e)8.5(n)2.2(i e)8.5(t)-1.2( )-15.6(a)-7.1(l)14.4(.)-13.4( )]TJ +T* +-0.0012 Tc +0.1731 Tw +[(2001\) )-15.6(a)5.1(n)-16.8(d N)-13.4(I)19.3(S)-7.6(T)-15.4( \()-11.9(2002)-16.8(\) n)-16.8(-)3.7(gr)-11.9(a)-10.5(m)11( )-15.6(c)5.1(o)-16.8(-oc)-10.5(c)5.1(ur)-11.9(re)-10.5(nc)-10.5(e)5.1( s)-18.3(c)5.1(orin)-16.8(g)-16.8( )]TJ +T* +0.0015 Tc +0.3423 Tw +[(pr)6.4(o)-14.1(c)7.9(e)7.8(d)-14.1(ur)-9.2(e)7.8(s)0( a)7.8(n)-14.1(d the)7.8( a)-7.8(p)1.5(p)-14.1(l)13.7(ic)-7.8(a)7.8(tion o)-14.1(f)6.4( a)-7.8( sim)13.7(i)-17.5(l)13.7(a)-7.8(r)6.4( ide)-7.8(a)7.8( in)-14.1( )]TJ +T* +-0.0061 Tc +0.1624 Tw +[(e)-15.4(v)9.5(a)-15.4(l)-9.5(u)-6.1(a)0.2(t)-9.5(i)-9.5(n)-21.7(g)-6.1( s)-7.6(u)-21.7(m)-9.5(m)-9.5(a)0.2(ri)-25.1(es)-7.6(.)-6.1( S)-28.1(ect)-9.5(i)-9.5(o)-21.7(n)-6.1( 4)-6.1( )-15.6(co)-21.7(m)-9.5(p)-6.1(ar)-16.8(es)-7.6( n)-21.7(-)-1.2(g)-21.7(r)-1.2(a)-15.4(m)6.1( )-15.6(co)-21.7(-)]TJ +T* +-0.0001 Tc +0.0626 Tw +[(oc)6.2(c)-9.4(u)-0.1(r)-10.8(r)4.8(e)6.2(n)-15.7(c)-9.4(e)6.2( s)-17.2(c)6.2(orin)-15.7(g pr)-10.8(oc)-9.3(e)6.3(d)-0.1(u)-15.7(r)4.8(e)6.2(s)-17.2( in te)-9.4(r)-10.8(m)-3.5(s of th)-15.7(e)6.2(i)-3.5(r )-15.6(c)6.2(o)-15.7(rr)-10.8(e)-9.4(l)12.2(a)-9.4(-)]TJ +T* +0.0008 Tc +0.0773 Tw +[(tion to huma)7.1(n)0.8( r)-9.9(e)7.1(su)-14.8(l)13(t)-2.6(s a)7.1(nd on th)-14.8(e)7.1( re)-8.5(c)7.1(a)-8.5(ll a)7.1(nd pre)-8.5(c)7.1(ision o)-14.8(f)-9.9( )]TJ +0 -1.1719 TD +0.002 Tc +0.2011 Tw +[(sta)8.3(tistic)-7.3(a)8.3(l)-1.4( signi)-17(f)6.9(i)-1.4(c)-7.3(a)8.3(n)-13.6(c)8.3(e)8.3( )-15.7(pr)-8.7(e)8.3(d)2(ic)8.3(tio)-13.6(n. Se)-7.2(c)-7.3(tion 5 )-15.7(c)8.3(o)2(n)-13.6(c)-7.3(l)14.2(u)2(d)-13.6(e)8.3(s)-15.1( )]TJ +0 -1.1563 TD +0.001 Tc +-0.001 Tw +[(this pa)7.3(p)-14.6(e)7.3(r)-9.7( a)7.3(n)-14.6(d dis)-16.1(c)7.3(uss)-16.1(e)7.3(s fut)-18(u)1(r)-9.7(e)7.3( dir)-9.7(e)-8.2(c)7.3(tio)-14.6(ns. )]TJ +/TT6 1 Tf +11.9483 0 0 11.9483 313.0872 350.8101 Tm +0 Tc +0 Tw +(2)Tj +/TT8 1 Tf +0.5065 0 TD +( )Tj +/TT6 1 Tf +1.1558 0 TD +-0.0004 Tc +-0.0028 Tw +[(D)-5.5(o)-6.9(cument)-5.1( U)-5.5(nderst)-5.1(a)-6.9(nding)-6.9( C)-5.5(o)-6.9(n)-15.7(f)-18(erence )]TJ +/TT4 1 Tf +11.0172 0 0 11.0172 313.0872 329.2411 Tm +-0.0061 Tc +0 Tw +[(The)-13( )]TJ +9.931 0 0 9.931 336.0526 329.2411 Tm +-0.0005 Tc +0.3286 Tw +[(2002 )-15.6(Do)-16.1(c)5.8(u)-16.1(m)11.7(e)-9.8(nt Und)-16.1(e)5.8(rst)-19.5(a)5.8(ndi)-19.5(ng)-16.1( Confe)-9.8(r)4.4(e)-9.8(n)-0.5(c)-9.8(e)]TJ +6.5172 0 0 6.5172 519.9319 333.7411 Tm +0 Tc +0 Tw +(2)Tj +9.931 0 0 9.931 523.1906 329.2411 Tm +0.0017 Tc +0.3264 Tw +[( in-)]TJ +-21.1562 -1.1875 TD +-0.0017 Tw +[(c)-7.6(l)13.9(ud)-13.9(e)8(d)1.7( th)-13.9(e)8( f)6.6(o)-13.9(llow)5.1( t)-17.3(w)5.2(o )-15.6(ma)8(in ta)-7.6(sks)-15.4(:)13.9( )]TJ +/F2 1 Tf +0 -1.8281 TD +0 Tc +0 Tw +()Tj +/TT10 1 Tf +0.4687 0 TD +( )Tj +/TT4 1 Tf +1.3438 0 TD +0.0027 Tc +0.4036 Tw +[(F)12(u)-12.9(lly)18.3( a)-6.6(u)2.7(to)-12.9(m)14.9(a)9(ti)-16.3(c)9( sing)-12.9(le)-6.5(-)23.2(d)2.7(o)-12.9(c)9(u)-12.9(m)-0.7(e)9(n)2.7(t su)-12.9(mma)9(r)7.6(i)-16.3(z)9.1(a)9(ti)-16.3(on)-12.9(: )]TJ +0 -1.1719 TD +0.0017 Tc +0.2952 Tw +[(give)8(n)-13.9( a)-7.6( do)-13.9(c)8(u)-13.9(me)8(nt,)-13.9( pa)-7.6(rtic)8(ip)-13.9(a)8(n)1.7(ts)-15.4( w)-10.5(e)8(r)-9(e)-7.6( r)-8.9(e)8(quir)-9(e)8(d)-13.9( to)-13.9( )]TJ +0 -1.1563 TD +-0.0059 Tc +0.1309 Tw +[(cr)-16.6(eat)-24.9(e a g)-21.5(e)0.4(n)-21.5(e)0.4(ri)-24.9(c 1)-5.9(0)-5.9(0)-21.5(-wo)-21.5(r)-1(d)-5.9( s)-7.4(u)-21.5(m)-9.3(m)-9.3(a)0.4(r)-32.3(y)9.7(.)-5.9( T)-20.1(h)-5.9(e t)-9.3(r)-1(ai)-9.3(n)-5.9(i)-9.3(n)-5.9(g)-37.2( )]TJ +T* +0.0005 Tc +0.2183 Tw +[(se)6.8(t c)6.8(o)-15.1(m)12.7(p)-15.1(rise)-8.8(d 30 se)6.8(ts of )-15.6(a)6.8(p)0.5(p)-15.1(r)5.4(oxi)-18.5(m)-2.9(a)6.8(t)-18.5(e)-8.8(l)-2.9(y)31.8( )-15.6(10 do)-15.1(c)6.9(u)-15.1(-)]TJ +T* +0.0017 Tc +0.2483 Tw +[(me)8(nts e)8(a)-7.6(c)8(h)1.7(,)-13.9( )15.6(tog)-13.9(e)8(the)-7.6(r)6.6( w)5.1(ith )15.6(th)-13.9(e)8(i)-1.7(r)6.6( 100)-13.8(-)-9(w)5.1(or)6.6(d)-13.9( )15.6(hu)-13.9(ma)8(n)-13.9( )]TJ +T* +0.0021 Tc +0.1073 Tw +[(w)5.5(r)7(itte)-7.2(n su)-13.5(mma)-7.2(r)7(i)-1.3(e)8.4(s)0.6(.)-13.5( T)-12.1(h)-13.5(e)8.4( te)-7.2(st s)-15(e)8.4(t )-15.6(c)8.4(o)-13.5(m)14.3(p)-13.5(r)7(i)-1.3(se)8.4(d)-13.5( 30)-13.5( un)-13.5(-)]TJ +T* +0.0013 Tc +-0.0013 Tw +[(se)7.6(e)-8(n)1.3( do)-14.3(c)7.7(u)-14.3(me)7.6(nts. )]TJ +/F2 1 Tf +-1.8125 -1.8438 TD +0 Tc +0 Tw +()Tj +/TT10 1 Tf +0.4687 0 TD +( )Tj +/TT4 1 Tf +1.3438 0 TD +0.0028 Tc +0.4972 Tw +[(F)12.1(u)-12.8(lly)18.4( a)-6.5(u)2.8(to)-12.8(m)15(a)9.1(ti)-16.2(c)9.1( )-15.6(m)15(u)-12.8(l)15(t)-0.6(i)-16.2(-)23.3(d)-12.8(o)2.8(c)9.1(u)-12.8(me)9.1(nt su)-12.8(mma)9.1(r)7.7(i)-16.3(z)9.2(a)9.1(ti)-16.2(on)-12.8(: )]TJ +0 -1.1563 TD +0.001 Tc +0.2334 Tw +[(give)7.3(n a)7.3( s)-16.1(e)7.3(t of do)-14.6(c)7.3(u)-14.6(me)7.3(nts a)7.3(b)-14.6(out a)7.3( si)-18(ngle)7.3( subj)-18(e)7.3(c)7.3(t)-2.4(,)-14.6( )]TJ +T* +-0.0004 Tc +0.0785 Tw +[(pa)5.9(rti)-19.4(c)5.9(ipa)-9.7(n)-0.4(ts )-15.7(we)-9.7(re)-9.7( r)-11.1(e)5.9(qui)-19.4(re)-9.7(d to)-16( c)-9.7(r)4.5(e)-9.7(a)5.9(t)-19.4(e)5.9( 4)-16( )-15.7(ge)5.9(n)-16(e)5.9(ri)-19.4(c)5.9( su)-15.9(m-)]TJ +T* +0.0004 Tc +0.2027 Tw +[(ma)6.7(ri)-18.6(e)6.7(s)-1.1( of the)6.7( )-15.7(e)6.7(n)0.4(tir)-10.3(e)6.7( se)6.7(t, c)-8.9(onta)6.7(i)-3(ni)-18.6(ng 5)-15.2(0, 100, 200,)-15.2( )]TJ +T* +0.0005 Tc +0.2339 Tw +[(a)6.9(nd )-15.6(400)-15.1( wo)-15.1(rds)-16.6( r)-10.2(e)6.8(sp)-15.1(e)6.8(c)6.8(t)-2.9(i)-18.5(v)0.5(e)-8.8(l)-2.9(y)16.1(.)0.5( )-15.6( T)-13.7(h)0.5(e)-8.8( d)-15.1(o)0.5(c)6.8(u)-15.1(me)6.8(nt s)-16.6(e)6.9(ts)-16.6( )]TJ +T* +0.0167 Tc +0.0145 Tw +[(w)20.1(e)7.4(r)21.6(e)23( of)21.6( f)21.6(o)1.1(u)16.7(r)21.6( ty)32.3(pe)23(s:)28.9( a)23( s)15.2(i)-2.3(n)16.7(g)1.1(l)28.9(e)23( na)23(t)13.3(u)1.1(r)21.6(a)7.4(l)28.9( d)16.7(i)13.3(sa)23(s)15.2(t)13.3(e)7.4(r)21.6( e)7.4(v)16.7(e)23(n)16.7(t)13.3(;)13.3( )-15.7(a)7.4( )]TJ +-1.8125 -1.8281 TD +0 Tc +0 Tw +( )Tj +ET +313.087 139 144 -0.466 re +f +BT +9.931 0 0 9.931 457.0871 136.3618 Tm +( )Tj +6.0517 0 0 6.0517 313.0872 129.9997 Tm +(1)Tj +9 0 0 9 316.1906 125.9652 Tm +-0.019 Tc +0.0966 Tw +[( M)-26.4(u)-19(lt)-34.3(ip)-36.2(le)-23.4( j)-34.3(u)-1.8(d)-36.2(g)-19(m)17.4(e)-40.7(n)-19(t)-17(s)-26.4( o)-19(c)-23.4(c)-23.4(u)-1.8(r)-13.6( w)-38.2(h)-1.8(e)-23.4(n)-1.8( )-17.2(mo)-36.2(r)-13.6(e)-23.4( t)-17(h)-1.8(a)-40.7(n)-1.8( o)-36.2(n)-1.8(e)-23.4( p)-19(e)-23.4(r)-30.8(f)3.7(o)-19(r)-30.8(ma)-40.7(nc)-23.4(e)-23.4( )]TJ +-0.3448 -1.1552 TD +0.0008 Tc +0.0251 Tw +[(s)-6.6(c)-3.6(or)6.2(e i)20(s)-6.6( giv)18(e)-3.6(n)18( to t)-14.5(h)18(e s)-6.6(a)-20.9(m)37.2(e)-3.6( s)-6.6(y)18(s)-6.6(t)2.8(e)-20.9(m)37.2( )-17.2(\()6.2(o)0.8(r)6.2( )-17.2(hum)20(a)-20.9(n)18(\))6.2( a)-20.9(n)18(d )-17.2(hum)37.3(a)-20.9(n)18( s)-23.8(u)1(m)20(-)]TJ +0 -1.1379 TD +0.0016 Tc +0.007 Tw +[(m)20.8(a)-2.8(r)-10.2(y)18.8( pa)-20.1(i)20.8(r)7(s)-5.8( by)18.8( t)-13.7(h)18.8(e s)-5.8(a)-2.8(m)38(e)-2.8( )-17.3(hum)38(a)-20.1(n)18.8( j)-13.7(u)18.8(d)-15.6(g)18.8(e.)-6.9( )]TJ +6.0517 0 0 6.0517 313.0872 98.9652 Tm +0 Tc +0 Tw +(2)Tj +9 0 0 9 316.1906 94.9308 Tm +0.0009 Tc +0.025 Tw +[( DUC)-4.5( 2001)18.1( an)18.1(d DUC)12.7( 2002 h)18.1(a)-3.5(v)18.1(e)-3.5( s)-6.5(i)2.9(m)20.1(ilar)6.3( tas)-6.5(k)0.9(s)-6.5(,)-7.7( bu)18.1(t s)-6.5(u)0.9(m)20.1(m)20.2(ar)-10.9(i)20.1(e)-3.5(s)-6.5( )]TJ +-0.3448 -1.1552 TD +0.0012 Tc +0.2316 Tw +[(of)23.9( 10,)-7.4( 50,)-7.4( 100,)9.8( an)18.4(d 200 wor)6.6(d)1.2(s)-6.2( )17.3(ar)6.6(e r)6.7(e)-3.2(qu)18.4(es)-6.2(ted i)20.4(n)18.4( t)-14.1(h)18.4(e )-17.2(m)20.4(u)1.2(l)20.4(t)-14.1(i-)]TJ +0 -1.1379 TD +0.0005 Tc +0.0081 Tw +[(docum)19.7(e)-21.2(n)17.7(t tas)-6.9(k)0.5( i)19.7(n)17.7( DUC)-4.9( 2002.)-8( )]TJ +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +/ColorSpace << +/Cs5 12 0 R +>> +>> +endobj +14 0 obj +<< +/FunctionType 0 +/Domain [0 1] +/Range [0 1] +/BitsPerSample 8 +/Size [256] +/Length 271 +/Filter /FlateDecode +>> +stream +H +  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  +endstream +endobj +12 0 obj +[/CalRGB << +/WhitePoint [0.9505 1 1.089] +/Gamma [2.22222 2.22222 2.22222] +/Matrix [0.4124 0.2126 0.0193 0.3576 0.7152 0.1192 0.1805 0.0722 0.9505] +>> +] +endobj +16 0 obj +<< +/Length 11528 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 79.7078 747.8962 Tm +/Cs5 cs 0 0 0 sc +/GS1 gs +0.0007 Tc +0.0079 Tw +[(I)6.1(n)0.7( P)25.3(r)-6.7(oceedings)-6.7( of the)13.5( Human T)5.1(e)13.5(chnology )17.2(C)12.5(onfer)-6.7(ence)13.5( 2003 \()23.4(H)-1.3(L)5.1(T)5.2(-)6.1(N)-4.7(A)8.1(A)8.1(C)-4.7(L)-12.1(-)6.1(2003\))6.1(,)-7.9( M)6.1(a)0.7(y )17.2(27 June)13.5( 1,)9.3( 2003,)9.3( E)8.1(d)0.7(monton,)-7.9( )17.2(Canada )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 736.4135 Tm +0 Tc +0 Tw +( )Tj +1.8125 -41 TD +0.0024 Tc +0.107 Tw +[(single)8.7( e)-6.9(v)2.4(e)8.7(n)2.4(t; mul)14.6(tip)-13.2(le)8.7( )15.6(in)-13.2(sta)8.7(n)-13.2(c)8.7(e)-6.9(s )15.6(o)-13.2(f)7.3( a)8.7( )15.6(t)-16.6(y)18(p)-13.2(e)8.7( of)7.3( e)-6.9(v)2.4(e)8.7(n)2.4(t;)-16.6( )]TJ +0 -1.1563 TD +0.0007 Tc +0.1243 Tw +[(a)7(nd inf)-10(o)0.7(r)-10(m)-2.7(a)7(tion a)-8.6(bout a)-8.6(n)0.7( indi)-18.3(v)16.3(i)-2.7(du)-14.9(a)-8.6(l)12.9(. T)-13.5(h)0.7(e)7( tra)7(i)-2.7(ning)-30.6( )]TJ +T* +0.0009 Tc +0.2179 Tw +[(se)7.2(t c)7.2(o)-14.7(m)13.1(p)-14.7(rise)-8.4(d 30 se)7.2(ts of )-15.6(a)7.2(p)0.9(p)-14.7(r)5.8(oxi)-18.1(ma)7.2(t)-18.1(e)-8.4(ly)32.1( )-15.6(10 do)-14.7(c)7.4(u)-14.7(-)]TJ +T* +0.0001 Tc +0.1405 Tw +[(me)6.4(nts, e)-9.2(a)6.4(c)-9.2(h)0.1( pro)-15.5(v)15.7(i)-18.9(d)0.1(e)6.4(d)0.1( )-15.7(with the)6.4(i)-3.3(r 50, 1)-15.5(00, 200, a)6.4(n)-15.5(d)-15.5( )]TJ +T* +0.0015 Tc +0.1548 Tw +[(400)-14.1(-)6.4(w)4.9(or)-9.2(d hu)-14.1(ma)7.8(n w)-10.7(r)6.4(itte)7.8(n su)-14.1(mma)-7.8(r)6.4(i)-1.9(e)7.8(s)0(. )-15.6( T)-12.7(h)1.5(e)7.8( te)7.8(st se)7.8(t)-17.5( )]TJ +T* +0.0161 Tc +-0.0161 Tw +[(c)22.4(o)0.5(m)28.3(p)0.5(r)21(i)12.7(s)14.6(e)22.4(d 3)16.1(0)16.1( un)16.1(s)14.6(e)6.8(e)22.4(n)16.1( se)22.4(t)12.7(s)14.6(.)16.2( )]TJ +-1.8125 -1.1719 TD +0.0019 Tc +0.4669 Tw +[(A)5.3( tota)-7.4(l of)-8.8( 11 s)-30.8(y)17.5(ste)-7.4(m)14.1(s)-15.2( pa)-7.4(r)6.8(tic)8.2(ip)-13.7(a)8.2(t)-17.1(e)8.2(d)-13.7( in the)-7.4( sing)-13.7(le)-7.4(-)]TJ +0 -1.1563 TD +0.0013 Tc +0.2018 Tw +[(doc)7.6(u)-14.3(m)-2.1(e)7.6(n)1.3(t su)-14.3(mma)-8(riz)-8(a)7.6(tion ta)7.6(s)-15.8(k)1.3( a)7.6(n)-14.3(d 12)-14.3( s)-15.8(y)32.5(st)-17.7(e)-8(m)13.5(s p)-14.3(a)7.8(rti)-17.7(c)7.7(i)-17.7(-)]TJ +T* +0.0015 Tc +-0.0015 Tw +[(pa)7.8(te)-7.8(d in th)-14.1(e)7.8( )-15.6(m)13.7(u)-14.1(l)13.7(t)-1.9(i)-17.5(-)6.4(doc)-7.8(u)-14.1(m)13.7(e)-7.8(n)1.5(t ta)7.8(sk)-14.1(. )]TJ +/TT6 1 Tf +11.9483 0 0 11.9483 71.9492 214.879 Tm +0.0065 Tc +0 Tw +[(2.)9.7(1)]TJ +/TT8 1 Tf +1.2597 0 TD +0 Tc +( )Tj +/TT6 1 Tf +11.0172 0 0 11.0172 100.3458 214.879 Tm +-0.0072 Tc +0.0107 Tw +[(Eva)-14.2(l)-11.1(ua)-14.2(t)-12.2(i)-11.1(on M)-7(a)-14.2(te)-14.1(ri)-11.1(al)-11.1(s)-12.3( )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 197.1894 Tm +0.0007 Tc +0.1556 Tw +[(F)10(o)-14.9(r e)-8.6(a)7(c)7(h)0.7( )-15.6(doc)-8.6(u)-14.9(m)12.9(e)-8.6(n)0.7(t or do)-14.9(c)7(u)-14.9(me)7(nt s)-16.4(e)7(t, )-15.6(one)7( hu)-14.9(ma)7(n s)-16.4(u)-14.8(m-)]TJ +0 -1.1563 TD +-0.0061 Tc +0.0686 Tw +[(m)-9.5(a)0.2(r)-16.8(y)9.5( )-15.6(was)-7.6( )-15.6(cr)-16.8(eat)-25.1(ed)-6.1( as)-7.6( t)-9.5(h)-21.7(e )-16.8(i)-9.5(d)-6.1(e)0.2(a)-15.4(l)6.1()-16.8( m)-9.5(o)-6.1(d)-6.1(e)-15.4(l)6.1( )-15.6(s)-7.6(u)-6(m)-9.5(m)-9.5(a)-15.4(r)-16.8(y)9.5( at)-9.5( e)-15.4(a)-15.4(c)0.2(h)-21.7( )]TJ +T* +0.0006 Tc +0.2494 Tw +[(spe)-8.7(c)6.9(ifie)-8.7(d le)6.9(ngth. T)-13.6(w)4(o oth)-15(e)6.9(r hu)-15(ma)6.9(n)-15( summa)6.9(ri)-18.4(e)6.9(s)-0.9( w)-11.6(e)6.9(r)-10.1(e)-8.7( )]TJ +T* +0.0012 Tc +0.1238 Tw +[(a)-8.1(l)13.4(so c)7.5(r)-9.5(e)7.5(a)7.5(t)-17.8(e)7.5(d)1.2( a)7.5(t)-2.2( e)7.5(a)-8.1(c)7.5(h)1.2( le)7.5(ngth)-14.4(.)1.2( )15.6( In a)7.5(dditi)-17.8(on, )15.6(b)-14.4(a)7.5(se)-8.1(l)13.4(i)-2.2(n)-14.4(e)7.5( )15.6(s)-15.9(u)-14.3(m-)]TJ +T* +0.0026 Tc +0.2474 Tw +[(ma)8.9(r)7.5(i)-16.4(e)8.9(s)1.1( w)6(e)-6.7(r)7.5(e)-6.7( )15.6(c)-6.7(r)-8.1(e)8.9(a)8.9(t)-16.4(e)8.9(d)2.6( a)8.9(u)2.6(to)-13(ma)8.9(tic)-6.7(a)-6.7(lly)18.2( f)7.5(o)-13(r)7.5( )15.6(e)-6.7(a)-6.7(c)8.9(h le)8.9(ngth)-13( )15.6(a)-6.7(s)-14.5( )]TJ +0 -1.1719 TD +-0.0001 Tc +0.172 Tw +[(re)-9.4(fe)-9.4(re)6.2(n)-15.7(c)-9.4(e)6.2( poi)-19.1(nts. )-15.6(F)-6.5(o)-0.1(r t)-19.1(h)-0.1(e)6.2( )-15.6(mu)-15.7(l)12.1(t)-3.5(i)-19.1(-)20.4(do)-15.7(c)6.2(u)-15.7(me)6.2(nt s)-17.2(u)-15.7(mm)12.1(a)-9.4(r)4.8(iz)-9.3(a)-9.4(-)]TJ +0 -1.1563 TD +0.001 Tc +0.0928 Tw +[(tion ta)7.3(sk)-14.6(, on)-14.6(e)7.3( )-15.6(ba)7.3(s)-16(e)-8.3(l)13.2(i)-2.4(n)-14.6(e)7.3(, )]TJ +/TT2 1 Tf +9.8281 0 TD +0.0009 Tc +0.0929 Tw +[(l)-18.1(e)7.2(ad)-14.7( bas)-16.2(e)7.2(line)]TJ +/TT4 1 Tf +5.4375 0 TD +0.0008 Tc +0.1086 Tw +[(,)-14.8( took )15.6(th)-14.8(e)7.1( first 50,)-14.8( )]TJ +-15.2656 -1.1563 TD +0.0007 Tc +0.2024 Tw +[(100, 200, )-15.7(a)7(nd 40)-14.9(0 wo)-14.9(rds in the)7( )-15.7(la)7(st doc)7.2(u)-14.9(m)-2.7(e)7(n)0.7(t in th)-14.9(e)-8.6( )]TJ +T* +0.0004 Tc +0.0934 Tw +[(c)6.7(o)-15.2(ll)12.6(e)-8.9(c)6.7(tion.)-15.2( )-15.6(A s)-16.7(e)6.7(c)-8.9(ond)-15.2( ba)6.7(s)-16.7(e)-8.9(l)12.6(i)-3(n)-15.2(e)6.7(, )]TJ +/TT2 1 Tf +13.0469 0 TD +-0.0063 Tc +0.1001 Tw +[(co)-21.9(ver)-23.4(a)-21.9(g)-6.3(e b)-21.9(a)-6.3(s)-7.8(e)0(l)-9.7(i)-9.7(n)-21.9(e)]TJ +/TT4 1 Tf +7.3906 0 TD +0.0009 Tc +0.0929 Tw +[(,)-14.7( took)-14.7( )]TJ +-20.4375 -1.1563 TD +0.0019 Tc +0.0137 Tw +[(the)8.2( f)6.8(i)-1.5(r)6.8(s)0.4(t s)-15.2(e)8.2(nte)-7.4(n)1.9(c)-7.4(e)8.2( in the)8.2( f)6.8(i)-1.5(r)-8.8(s)0.4(t doc)8.2(u)-13.7(m)-1.5(e)8.2(n)1.9(t,)-13.7( the)8.2( f)6.8(i)-1.5(r)6.8(s)0.4(t se)8.3(nt)-17.1(e)8.2(n)-13.7(c)8.2(e)-23( )]TJ +T* +0.0013 Tc +0.1393 Tw +[(in the)-8( s)-15.8(e)7.6(c)7.6(o)-14.3(nd )-15.7(doc)-8(u)-14.3(m)13.5(e)-8(n)1.3(t )-15.7(a)7.6(n)1.3(d)-14.3( so )-15.7(on )-15.7(un)-14.3(til)13.5( it)-17.7( ha)-8(d )-15.7(a)7.6( su)-14.2(m-)]TJ +24.2813 24.875 TD +-0.0002 Tc +0.094 Tw +[(ma)6.1(r)-10.9(y)15.4( of)-10.9( )15.7(50, 100, 200, or 400 wo)-15.8(rds. On)-15.8(ly)15.4( )15.7(o)-15.8(n)-0.2(e)6.1( ba)6.1(s)-17.3(e)-9.5(l)12(i)-3.6(n)-15.8(e)-9.5( )]TJ +0 -1.1563 TD +0.0022 Tc +0.0134 Tw +[(\()7.1(b)2.2(a)8.5(s)-14.9(e)-7.1(l)14.4(in)-13.4(e)8.5(1)2.2(\))7.1( )-15.7(w)-10(a)8.5(s c)-7.1(r)7.1(e)-7.1(a)8.5(t)-16.8(e)8.5(d f)-8.5(o)2.2(r)7.1( th)-13.4(e)8.5( sing)-13.4(le)8.5( d)-13.4(o)2.2(c)8.5(u)-13.4(me)8.5(nt su)-13.4(mma)-7.1(-)]TJ +T* +0.001 Tc +-0.001 Tw +[(riz)-8.3(a)7.3(tion ta)-8.3(sk. )]TJ +/TT6 1 Tf +11.9483 0 0 11.9483 313.0872 283.9307 Tm +0.0065 Tc +0 Tw +[(2.)9.7(2)]TJ +/TT8 1 Tf +1.2597 0 TD +0 Tc +( )Tj +/TT6 1 Tf +11.0172 0 0 11.0172 341.4837 283.9307 Tm +-0.0056 Tc +0.0091 Tw +[(Summa)-12.6(r)-12.5(y)-12.6( Eva)-12.6(l)-9.5(uat)-10.6(i)-9.5(on Envi)-9.5(r)-12.5(o)1.4(nme)-12.5(n)1.3(t)-10.5( )]TJ +/TT4 1 Tf +9.931 0 0 9.931 313.0872 266.2411 Tm +0.0017 Tc +0.2171 Tw +[(T)-12.5(o)1.7( e)8.1(v)1.7(a)-7.6(l)13.9(u)-13.9(a)8(te)8( s)-31(y)17.3(ste)-7.6(m)13.9( )-15.6(pe)-7.6(r)6.6(f)6.6(o)-13.9(r)-9(m)-1.7(a)8(n)-13.9(c)8(e)8( )-15.5(N)-10.5(I)22.2(S)-20.3(T)-12.5( a)8(sse)8(sso)-13.9(r)6.6(s)0.2( w)-10.5(h)1.7(o)-13.9( )]TJ +0 -1.1563 TD +-0.0056 Tc +0.0525 Tw +[(cr)-16.3(eat)-24.6(ed)-5.6( t)-9(h)-21.2(e )-16.3(i)-9(d)-5.6(e)-14.9(a)-14.9(l)6.6()-16.3( wri)-9(t)-9(t)-24.6(en)-5.6( s)-7.1(u)-21.2(m)-9(m)-9(a)-14.9(ri)-9(es)-7.1( )-15.6(d)-21.2(i)-9(d)-5.6( p)-5.6(a)0.8(i)-9(r)-16.3(wi)-9(s)-22.7(e)0.7( c)-14.9(o)-21.1(m)-9(-)]TJ +0 -1.1719 TD +-0.0057 Tc +0.3182 Tw +[(p)-5.7(a)0.6(ri)-9.1(s)-22.8(o)-5.7(n)-5.7(s)-7.2( o)-21.3(f)-0.8( t)-9.1(h)-5.7(ei)-24.7(r s)-7.2(u)-21.3(m)-9.1(m)-9.1(a)0.6(ri)-24.7(es)-7.2( t)-9.1(o)-5.7( t)-9.1(h)-21.3(e )-15.6(s)-22.8(y)25.5(s)-7.2(t)-24.7(e)-15(m)-9(-g)-5.7(e)-15(n)-5.7(e)-15(r)-0.8(at)-24.7(ed)-21.3( )]TJ +0 -1.1563 TD +-0.0041 Tc +0.301 Tw +[(s)-5.6(u)-4.1(m)-7.5(m)-7.5(a)-13.4(ri)-7.5(es)-5.6(,)-19.7( ot)-7.5(h)-19.7(e)2.2(r )-15.6(as)-5.6(s)-21.2(e)2.2(s)-5.6(s)-5.6(o)-19.7(rs)-5.6()-14.8( s)-5.6(u)-19.7(m)-7.5(m)-7.5(a)2.2(ri)-23.1(es)-5.6(, )-15.6(and)-19.7( bas)-21.1(e)-13.4(l)8.1(i)-7.5(n)-19.7(e)-13.4( )]TJ +T* +0.0022 Tc +0.1072 Tw +[(summa)-7.1(r)7.1(i)-1.2(e)8.5(s)0.7(.)-13.4( T)-12(h)2.2(e)-22.7(y)17.8( us)-14.9(e)8.5(d)-13.4( the)-7.1( Su)-13.4(mma)8.5(r)-24.2(y)17.8( )-15.6(E)-12(v)17.8(a)-7.1(l)14.4(u)-13.4(a)8.5(tion)-13.4( En)-13.4(v)18(i)-16.8(-)]TJ +T* +-0.0004 Tc +0.0942 Tw +[(ron)-16(m)-3.8(e)5.9(n)-0.4(t \(S)-6.8(E)-14.6(E)1.1(\) 2.)-16(0 de)-9.7(ve)-9.7(l)11.8(o)-0.4(p)-16(e)5.9(d b)-31.7(y)30.8( )-15.6(\()-11.1(L)16.7(in)-16( 2001\) to su)-16(pport)-35.1( )]TJ +T* +0.0014 Tc +0.2174 Tw +[(the)7.7( p)-14.2(r)6.3(oc)-7.9(e)7.7(ss. )-15.6( U)4.8(s)-0.1(in)-14.2(g SEE,)-14.2( the)7.7( )-15.6(a)7.8(s)-0.1(s)-15.7(e)7.7(sso)-14.2(r)6.3(s)-0.1( c)-7.9(o)-14.2(m)13.6(p)1.4(a)-7.9(r)-9.3(e)7.7(d)1.4( th)-14.2(e)-7.9( )]TJ +T* +0.0015 Tc +0.2641 Tw +[(s)-15.6(y)32.8(st)-17.5(e)-7.8(m)13.7()-9.2(s)0( te)7.8(xt \(th)-14.1(e)7.8( )]TJ +/TT2 1 Tf +8.125 0 TD +-0.0063 Tc +0 Tw +[(p)-21.9(eer)]TJ +/TT4 1 Tf +1.7813 0 TD +0.0017 Tc +0.2639 Tw +[( t)-17.3(e)8(xt\))6.6( to th)-13.9(e)8( ide)8(a)-7.6(l)13.9( \()6.6(t)-17.3(he)8( )]TJ +/TT2 1 Tf +10.4688 0 TD +-0.0017 Tc +0 Tw +[(mod)-17.3(e)4.6(l)]TJ +/TT4 1 Tf +2.4688 0 TD +0 Tc +( )Tj +-22.8438 -1.1563 TD +-0.0003 Tc +0.0315 Tw +[(te)6(xt\).)-15.9( )-15.7(As sh)-15.9(own)-15.9( in )-15.7(F)9(i)-3.7(gu)-15.9(re)-9.6( 1,)-15.9( e)-9.6(a)6(c)-9.6(h)-0.3( t)-19.3(e)6(xt )-15.7(wa)6(s)-17.4( de)-9.6(c)6(o)-15.9(mpos)-17.4(e)6(d)-15.9( )]TJ +T* +0.0005 Tc +-0.0005 Tw +[(into a)6.8( )-15.6(l)12.7(i)-2.9(st o)-15.1(f)5.4( units )-15.6(a)6.8(nd )-15.6(disp)-15.1(l)12.7(a)-24.4(y)16.1(e)6.8(d)-15.1( in s)-16.6(e)6.8(pa)-8.8(ra)6.8(t)-18.5(e)6.8( win)-15.1(dows)-16.6(.)0.5( )]TJ +T* +0.0001 Tc +0.0937 Tw +[(S)-6.2(EE 2.0 p)-15.5(r)5(o)-15.5(v)15.7(id)-15.5(e)6.4(s)-1.4( inte)-9.2(rf)-10.6(a)6.4(c)-9.2(e)6.4(s)-1.4( f)-10.6(o)0.1(r )-15.6(a)6.4(sse)6.4(s)-17(s)-17(o)0.1(rs to judg)-15.5(e)6.4( both)-15.5( )]TJ +0 -1.1719 TD +0.0012 Tc +0.1082 Tw +[(the)7.5( c)-8.1(onte)-8.1(n)1.2(t a)7.5(n)-14.4(d the)7.5( )-15.6(qua)-8.1(l)13.4(i)-2.2(t)-17.8(y)16.8( )-15.6(of su)-14.4(mma)-8.1(r)-9.5(i)-2.2(e)7.5(s)-0.3(. T)-13(o)1.2( me)-8.1(a)7.5(s)-0.3(ur)-9.5(e)-8.1( )]TJ +0 -1.1563 TD +0.0005 Tc +0.1714 Tw +[(c)6.8(ont)-18.5(e)6.8(n)0.5(t, a)6.8(s)-1(s)-16.6(e)6.8(sso)-15.1(rs ste)6.8(p)0.5( th)-15.1(rou)-15.1(gh e)-8.8(a)6.8(c)-8.8(h)0.5( m)12.7(o)-15.1(de)-8.8(l)12.7( unit, )-15.6(ma)6.8(rk)-30.8( )]TJ +T* +0.002 Tc +0.0918 Tw +[(a)-7.3(l)14.2(l)14.2( )-15.6(s)-15.1(y)17.6(ste)-7.3(m)-1.4( units sh)-13.6(a)8.3(r)6.9(i)-17(ng c)-7.3(onte)-7.3(n)2(t w)5.4(ith t)-17(h)2(e)8.3( )-15.6(c)8.3(u)2(r)-8.7(r)6.9(e)-7.3(n)2(t )-15.6(m)14.2(o)2(d)-13.6(e)-7.3(l )]TJ +T* +0.0018 Tc +0.1701 Tw +[(unit \()6.7(g)1.8(r)-8.9(e)8.1(e)-7.5(n)1.8(/da)-7.5(r)6.7(k g)-13.8(r)6.7(a)-7.5(y)17.4( hig)-13.8(h)-13.8(l)14(ight in the)-7.5( m)14(o)1.8(d)-13.8(e)-7.5(l)14( su)-13.8(mma)8.1(r)-24.6(y)1.8( )]TJ +T* +0.0002 Tc +0.1092 Tw +[(windo)-15.4(w\), )-15.6(a)6.5(nd sp)-15.4(e)6.5(c)6.5(i)-18.8(f)-10.5(y)15.8( tha)6.5(t)-3.2( th)-15.4(e)6.5( )-15.6(m)12.4(a)-9.1(rk)-15.4(e)6.5(d)-15.4( s)-16.9(y)31.4(st)-18.8(e)-9.1(m)12.4( units e)6.7(x)-15.4(-)]TJ +T* +-0.0025 Tc +0 Tw +[(pre)3.8(s)-4(s)-19.6( )]TJ +/TT2 1 Tf +2.3281 0 TD +0.0009 Tc +0.0304 Tw +[(all, most, )15.7(so)-14.7(m)-11.3(e)]TJ +/TT4 1 Tf +6.0781 0 TD +0 Tc +0.0156 Tw +[(, o)-15.6(r)4.9( )]TJ +/TT2 1 Tf +1.625 0 TD +0.0003 Tc +0.0153 Tw +[(hardl)-18.7(y)6.6( a)-15.3(n)0.3(y)]TJ +/TT4 1 Tf +4.3438 0 TD +0.0012 Tc +0.03 Tw +[( of)6.1( the)7.5( c)7.5(ont)-17.8(e)7.5(n)1.2(t )15.6(o)-14.4(f)6.1( )15.6(the)-23.7( )]TJ +ET +1 1 1 sc +80.949 362.913 450 -24.362 re +f +BT +11.0172 0 0 11.0172 219.6733 348.948 Tm +0 0 0 sc +-0.0067 Tc +0.0102 Tw +[(Fi)-10.6(gur)-11.7(e 1)-13.7(.)-10.2( SEE i)-10.6(n)0.3( a)-13.6(n)0.3( e)-13.6(v)14.4(a)-13.6(l)-10.6(ua)-13.6(t)-10.6(i)-10.6(on s)-11.9(e)0.5(s)-11.9(s)-11.9(i)3.5(on.)-10.1( )]TJ +ET +q +408.8793 0 0 356.2758 101.432 360.4308 cm +/Im1 Do +Q +endstream +endobj +17 0 obj +<< +/ProcSet [/PDF /Text /ImageC ] +/Font << +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/XObject << +/Im1 18 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +/ColorSpace << +/Cs5 12 0 R +>> +>> +endobj +20 0 obj +<< +/Length 33707 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 79.7078 747.8962 Tm +/Cs5 cs 0 0 0 sc +/GS1 gs +0.0007 Tc +0.0079 Tw +[(I)6.1(n)0.7( P)25.3(r)-6.7(oceedings)-6.7( of the)13.5( Human T)5.1(e)13.5(chnology )17.2(C)12.5(onfer)-6.7(ence)13.5( 2003 \()23.4(H)-1.3(L)5.1(T)5.2(-)6.1(N)-4.7(A)8.1(A)8.1(C)-4.7(L)-12.1(-)6.1(2003\))6.1(,)-7.9( M)6.1(a)0.7(y )17.2(27 June)13.5( 1,)9.3( 2003,)9.3( E)8.1(d)0.7(monton,)-7.9( )17.2(Canada )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 736.4135 Tm +0 Tc +0 Tw +( )Tj +0 -2.5781 TD +0.0003 Tc +0.1247 Tw +[(c)6.6(u)0.3(r)-10.4(r)5.2(e)-9(n)0.3(t m)12.5(o)-15.3(de)-9(l)12.5( unit. )15.6(T)-13.9(o)0.3( m)12.5(e)-9(a)6.6(s)-1.2(u)-15.3(r)5.2(e)-9( )15.6(qu)-15.3(a)-9(l)12.5(i)-18.7(t)-18.7(y)31.5(,)-15.3( )15.6(a)6.6(s)-1.2(s)-16.8(e)6.6(sso)-15.3(rs ra)6.6(t)-18.7(e)-9( )]TJ +0 -1.1563 TD +0.0024 Tc +0 Tw +[(gr)7.3(a)-6.9(mma)8.7(ti)-16.6(c)8.7(a)-6.9(l)14.6(i)-1(t)-16.6(y)]TJ +6.5172 0 0 6.5172 132.4665 703.8273 Tm +0 Tc +(3)Tj +9.931 0 0 9.931 135.7251 699.3273 Tm +0.0008 Tc +0.1555 Tw +[(, c)7.1(o)0.8(h)-14.8(e)7.1(sion)]TJ +6.5172 0 0 6.5172 177.7768 703.8273 Tm +0 Tc +0 Tw +(4)Tj +9.931 0 0 9.931 181.0354 699.3273 Tm +0.1563 Tw +[(, a)6.3(nd c)6.3(o)0(h)-15.6(e)6.3(r)-10.7(e)-9.3(nc)6.3(e)]TJ +6.5172 0 0 6.5172 246.363 703.8273 Tm +0 Tw +(5)Tj +9.931 0 0 9.931 249.6216 699.3273 Tm +0.1563 Tc +[( a)162.6(t)152.9( f)161.2(i)137.3(v)171.9(e)162.6( d)156.3(i)152.9(f)145.6(-)]TJ +-17.8906 -1.1563 TD +-0.0034 Tc +0.0659 Tw +[(fe)-12.7(rent)-6.8( l)-6.8(e)-12.7(vel)-6.8(s)-4.9(:)8.8( )]TJ +/TT2 1 Tf +5.5625 0 TD +0.0007 Tc +0.0462 Tw +[(all, most, s)-16.4(o)0.7(m)-11.5(e)7(, har)-16.4(dly)7( a)-14.9(n)0.7(y)]TJ +/TT4 1 Tf +11.0469 0 TD +0 Tc +0.0469 Tw +[(, o)-15.6(r)4.9( )]TJ +/TT2 1 Tf +1.6875 0 TD +0 Tw +[(non)-15.6(e)]TJ +6.5172 0 0 6.5172 273.2078 692.3445 Tm +(6)Tj +/TT4 1 Tf +9.931 0 0 9.931 276.4664 687.8445 Tm +0.0469 Tw +[(. F)9.3(o)0(r)-26.4( )]TJ +-20.5938 -1.1563 TD +-0.0063 Tc +0.0532 Tw +[(ex)-6.3(a)-15.6(m)-9.7(p)-21.9(l)5.9(e,)-6.3( )-15.6(as)-7.8( s)-7.8(h)-6.3(o)-21.9(w)-2.9(n)-6.3( i)-9.7(n)-6.3( )-15.6(Fi)-9.7(g)-6.3(u)-21.9(re 1)-6.3(,)-6.3( )-15.6(an)-6.3( as)-23.4(s)-7.8(e)-15.6(s)-7.8(s)-7.8(o)-6.3(r )-15.6(m)5.9(a)-15.6(rk)-21.9(ed)-6.3( s)-23.4(y)9.4(s)-23.4(-)]TJ +T* +0.0004 Tc +0.1559 Tw +[(te)-8.9(m)12.6( units 1.)-15.2(1 a)6.7(n)-15.2(d 10.4 )-15.6(\(r)-10.3(e)6.7(d)0.4(/d)-15.2(a)6.7(r)-10.3(k und)-15.2(e)6.7(r)-10.3(l)12.6(i)-3(n)-15.2(e)6.7(s in th)-15.2(e)6.7( )-15.6(l)12.6(e)-8.9(ft)-18.6( )]TJ +0 -1.1719 TD +-0.0056 Tc +0.1931 Tw +[(p)-5.6(a)0.7(n)-21.2(e)0.8(\) as)-7.1( )15.6(s)-7.1(h)-21.2(ari)-9(n)-21.2(g)-5.6( )]TJ +/TT2 1 Tf +7.2969 0 TD +0.0008 Tc +0 Tw +[(som)-11.4(e)]TJ +/TT4 1 Tf +2.0625 0 TD +0.002 Tc +0.1699 Tw +[( )-15.6(c)8.3(ont)-17(e)8.3(n)2(t w)5.4(ith t)-17(h)2(e)8.3( c)-7.3(u)2(r)-8.7(r)6.9(e)8.3(n)2(t )-15.6(mod)-13.6(e)8.3(l)-17( )]TJ +-9.3594 -1.1563 TD +0.0003 Tc +-0.0003 Tw +[(unit 2.2 )-15.6(\(high)-15.3(l)12.5(ight)-18.7(e)6.6(d)0.3( g)-15.3(r)-10.4(e)6.6(e)6.6(n)0.3(/d)-15.3(a)-9(r)5.2(k g)-15.3(r)5.2(a)-9(y)16( i)-18.7(n)-15.3( the)6.6( ri)-18.7(ght\). )]TJ +/TT6 1 Tf +11.9483 0 0 11.9483 71.9492 619.4135 Tm +0.0065 Tc +0 Tw +[(2.)9.7(3)]TJ +/TT8 1 Tf +1.2597 0 TD +0 Tc +( )Tj +/TT6 1 Tf +11.0172 0 0 11.0172 100.3458 619.4135 Tm +-0.0058 Tc +0.0093 Tw +[(Eva)-12.8(l)-9.7(ua)-12.8(t)-10.8(i)-9.7(on Me)-12.7(tr)-12.7(i)4.4(c)-12.7(s)-11( )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 601.7238 Tm +0.0008 Tc +0.1086 Tw +[(Re)7.1(c)-8.5(a)-8.5(l)-2.6(l)13( a)7.1(t)-2.6( di)-18.2(ff)-9.9(e)7.1(r)-9.9(e)7.1(n)0.8(t )-15.6(c)7.1(o)-14.8(m)13(p)-14.8(re)7.1(ssi)-18.2(on r)-9.9(a)7.1(tios )-15.6(ha)7.1(s b)-14.8(e)7.1(e)-8.5(n)0.8( use)-8.5(d)0.8( in)-14.8( )]TJ +0 -1.1562 TD +-0.0054 Tc +0.1773 Tw +[(s)-6.9(u)-5.4(m)-8.8(m)-8.8(a)-14.7(ri)-8.8(z)-14.7(a)0.9(t)-8.8(i)-8.8(o)-5.4(n)-5.4( res)-22.5(e)-14.7(ar)-16.1(ch)-5.4( )15.6(t)-8.8(o)-21( m)6.8(e)-14.7(as)-6.9(u)-21(r)-0.5(e)-14.7( )15.6(h)-21(o)-5.4(w we)-14.7(l)-8.8(l)6.8( an)-5.4( au)-5.4(t)-8.7(o)-21(-)]TJ +T* +0.002 Tc +0.4668 Tw +[(ma)8.3(tic)8.3( s)-15.1(y)17.6(st)-17(e)-7.3(m)14.2( r)6.9(e)8.3(t)-17(a)8.3(ins i)-17(m)14.2(po)-13.6(r)6.9(t)-1.4(a)8.3(n)2(t c)-7.3(o)2(n)-13.6(t)-1.4(e)8.3(n)2(t of)6.9( or)6.9(igin)-13.6(a)-7.3(l)-1.4( )]TJ +T* +-0.0003 Tc +0.0159 Tw +[(doc)6(u)-15.9(m)-3.7(e)6(n)-0.3(ts)-17.4( \(M)-17.4(a)6(n)-0.3(i)-19.3( e)6(t)-3.7( )-15.7(a)-9.6(l)11.9(. )-15.7(1998)-15.9(\). )-15.7(Ho)-15.8(we)-9.6(ve)-9.6(r, th)-15.9(e)6( si)-19.3(m)11.9(p)-15.9(le)6( s)-17.4(e)6.1(n)-15.9(-)]TJ +T* +-0.0061 Tc +0.2874 Tw +[(t)-9.5(e)0.2(n)-6.1(c)-15.4(e re)-15.4(ca)-15.4(l)-9.5(l)6.1( m)-9.5(e)-15.4(as)-7.6(u)-6.1(r)-16.8(e can)-21.7(n)-6.1(o)-6.1(t)-9.5( )15.7(d)-6.1(i)-25.1(ff)-16.8(er)-16.8(en)-6.1(t)-25.1(i)-9.5(at)-9.5(e )15.7(s)-23.2(y)9.5(s)-7.6(t)-25.1(e)-15.4(m)6.1( )15.7(p)-21.7(e)-15.3(r)-16.8(-)]TJ +T* +0.0003 Tc +0.1403 Tw +[(for)-10.4(m)-3.1(a)6.6(n)-15.3(c)6.6(e)6.6( )-15.7(a)6.6(p)0.3(p)-15.3(r)5.2(op)-15.3(ria)6.6(t)-18.7(e)-9(l)-3.1(y)16(,)0.3( )-15.7(a)6.6(s)-1.2( is point)-18.7(e)6.6(d)0.3( )-15.7(out b)-15.3(y)15.9( D)-11.9(ona)-9(w)-11.9(a)-9(y )]TJ +0 -1.1719 TD +0.0934 Tw +[(e)6.6(t)-3.1( a)-9(l)12.5(.)-15.3( \()-10.4(2000)-15.3(\). T)-13.9(h)0.3(e)-9(r)5.2(e)-9(f)5.2(o)-15.3(r)5.2(e)6.6(,)-15.3( inste)-9(a)6.6(d)-15.3( of)-10.4( pu)-15.3(re)6.6( )-15.7(se)6.6(nt)-18.7(e)6.6(n)-15.3(c)6.6(e)-9( r)-10.4(e)6.6(c)-9(a)-9(ll )]TJ +0 -1.1563 TD +-0.0005 Tc +0.2036 Tw +[(sc)5.8(or)-11.2(e)5.8(,)-0.5( w)-12.7(e)5.8( us)-17.6(e)5.8( c)5.8(o)-16.1(ve)-9.8(ra)-9.8(ge)5.8( s)-17.6(c)5.8(or)-11.2(e)5.8( )]TJ +/TT2 1 Tf +12.8906 0 TD +0 Tc +0 Tw +(C)Tj +/TT4 1 Tf +0.6719 0 TD +0.0019 Tc +0.2012 Tw +[(. W)-7.4(e)-7.4( de)8.2(f)6.8(i)-1.5(n)-13.7(e)8.2( it a)8.2(s)0.4( f)6.8(o)-13.7(l-)]TJ +-13.5625 -1.1563 TD +-0.0122 Tc +0 Tw +[(lo)-27.8(w)-8.8(s)]TJ +6.5172 0 0 6.5172 90.8802 514.2066 Tm +0 Tc +(7)Tj +9.931 0 0 9.931 94.1389 509.7066 Tm +-0.0122 Tc +(: )Tj +ET +/Cs5 CS 0 0 0 SC +1 J 1 j 0.427 w 10 M []0 d +1 i +91.811 493.413 m +277.708 493.413 l +S +BT +10.4384 0 0 10.4384 295.2423 490.7755 Tm +0 Tc +(\))Tj +-0.4162 0 TD +(1)Tj +-0.2527 0 TD +(\()Tj +-4.7569 -0.773 TD +-0.0045 Tc +[(su)-9.9(mma)-6.6(ry)]TJ +-0.2081 0 TD +0 Tc +( )Tj +-2.4231 0 TD +-0.0071 Tc +[(mod)-12.5(e)5.6(l)]TJ +-0.2379 0 TD +0 Tc +( )Tj +-2.2298 0 TD +0.0045 Tc +-0.0018 Tw +(in the)Tj +-0.2081 0 TD +0 Tc +0 Tw +( )Tj +-1.9622 0 TD +0.0028 Tc +[(MU)11.4(s)]TJ +-0.2378 0 TD +0 Tc +( )Tj +-0.9365 0 TD +-0.0094 Tc +(of)Tj +-3.2555 0 TD +0.0054 Tc +[(num)10.2(be)18.1(r)11.4( )]TJ +-0.2378 0 TD +0 Tc +( )Tj +-2.0663 0 TD +-0.0162 Tc +[(To)-6.8(t)-20.8(a)-18.3(l)]TJ +13.9141 1.3974 TD +0 Tc +( )Tj +-0.6095 0 TD +( )Tj +-3.2704 0 TD +-0.0054 Tc +[(ma)-7.5(rk)-10.8(e)7.3(d)-10.8(\))]TJ +-0.2378 0 TD +0 Tc +( )Tj +-1.9622 0 TD +0.0028 Tc +[(MU)11.4(s)]TJ +-0.2378 0 TD +0 Tc +( )Tj +-0.9365 0 TD +-0.0094 Tc +(of)Tj +-3.8056 0 TD +0.0054 Tc +[(\()11.4(N)14(um)10.2(be)18.1(r)11.4( )]TJ +/TT2 1 Tf +11.3275 0 TD +0 Tc +(E)Tj +-16.025 -0.6243 TD +(C)Tj +/F2 1 Tf +15.3412 0.6243 TD +()Tj +-14.3749 -0.6243 TD +(=)Tj +/TT2 1 Tf +9.931 0 0 9.931 71.9492 469.5169 Tm +(E)Tj +/TT4 1 Tf +0.6094 0 TD +0.0013 Tc +0.1237 Tw +[(, the)7.6( r)6.2(a)7.6(tio o)-14.3(f)6.2( c)7.6(o)-14.3(m)13.5(p)-14.3(le)7.6(te)-8(ne)7.6(ss)-15.7(, r)6.2(a)7.6(n)-14.3(g)1.3(e)7.6(s)-0.2( f)-9.4(r)-9.4(o)1.3(m)13.5( 1 to 0)-14.3(:)13.5( 1 f)6.2(o)1.3(r)-9.4( )]TJ +/TT2 1 Tf +-0.6094 -1.1563 TD +0.0017 Tc +0 Tw +(all)Tj +/TT4 1 Tf +1.0625 0 TD +-0.0016 Tc +0.0329 Tw +[(, 3/4 fo)-17.2(r )]TJ +/TT2 1 Tf +3.5469 0 TD +-0.001 Tc +0 Tw +[(mo)-16.6(st)]TJ +/TT4 1 Tf +1.9063 0 TD +-0.0008 Tc +0.0321 Tw +[(, 1/2 f)-11.5(o)-0.8(r )]TJ +/TT2 1 Tf +3.5469 0 TD +-0.001 Tc +0 Tw +[(so)-16.6(me)]TJ +/TT4 1 Tf +2.0781 0 TD +-0.0008 Tc +0.0321 Tw +[(, 1/4 f)-11.5(o)-0.8(r )]TJ +/TT2 1 Tf +3.5625 0 TD +0.001 Tc +0.0303 Tw +[(hardly)7.3( a)-14.6(n)1(y)]TJ +/TT4 1 Tf +4.3437 0 TD +0 Tc +0.0469 Tw +[(, a)6.3(nd 0)-15.6( )]TJ +-20.0469 -1.1563 TD +-0.0025 Tc +0 Tw +[(for)-13.2( )]TJ +/TT2 1 Tf +1.4844 0 TD +0 Tc +[(non)-15.6(e)]TJ +/TT4 1 Tf +1.9531 0 TD +0.0135 Tc +0.0646 Tw +[(. )15.6( I)18.4(f)18.4( we)19.8( )15.6(i)10.1(g)13.5(no)13.5(re)19.8( )]TJ +/TT2 1 Tf +6.2813 0 TD +0 Tc +0 Tw +(E)Tj +/TT4 1 Tf +0.6094 0 TD +0.0015 Tc +0.0609 Tw +[( \()-9.2(s)0(e)7.8(t)-17.5( it to )-15.7(1\))6.4(,)-14.1( )-15.7(w)4.9(e)-7.8( obt)-17.5(a)7.8(i)-1.9(n si)-17.5(mple)-7.8( )]TJ +-10.3281 -1.1563 TD +-0.0062 Tc +0.1 Tw +[(s)-7.7(e)0.1(n)-6.2(t)-9.6(e)-15.5(n)-6.2(c)-15.5(e)0.1( r)-16.9(e)0.1(c)-15.5(a)-15.5(l)-9.6(l)6( s)-23.3(c)0.1(o)-6.2(r)-16.9(e.)-6.2( )-15.6(We u)-6.2(s)-23.3(e )-15.6(a)-15.5(v)9.4(e)-15.4(r)-1.3(a)-15.5(g)-21.8(e co)-21.8(v)-6.2(e)-15.5(rag)-21.8(e)0.1( s)-23.3(c)0.1(o)-6.2(r)-16.9(es)-23.3( )]TJ +0 -1.1719 TD +0.0002 Tc +0.3123 Tw +[(de)6.5(ri)-18.8(ve)6.5(d )-15.6(fro)-15.4(m hu)-15.4(ma)6.5(n jud)-15.4(g)-15.4(m)12.4(e)-9.1(n)0.2(ts a)6.5(s)-1.3( t)-18.8(h)0.2(e)6.5( r)-10.5(e)6.5(f)-10.5(e)6.5(r)-10.5(e)6.5(n)-15.4(c)6.5(e)-9.1(s)-1.3( to)-15.4( )]TJ +0 -1.1563 TD +0.0013 Tc +0.1393 Tw +[(e)-8(v)16.9(a)-8(l)-2.1(ua)7.7(t)-17.7(e)7.6( )-15.7(v)16.9(a)-8(rious )-15.7(a)7.6(u)1.3(to)-14.3(ma)7.6(tic)7.6( sc)-8(orin)-14.3(g me)7.6(thods in th)-14.3(e)7.6( fo)-14.2(l-)]TJ +T* +0.001 Tc +-0.001 Tw +[(l)13.2(o)-14.6(wing s)-16.1(e)7.4(c)7.3(tio)-14.6(ns. )]TJ +/TT6 1 Tf +11.9483 0 0 11.9483 71.9492 375.0169 Tm +0 Tc +0 Tw +(3)Tj +/TT8 1 Tf +0.5065 0 TD +( )Tj +/TT6 1 Tf +1.1558 0 TD +-0.0016 Tc +-0.0016 Tw +[(BL)-9.9(EU)-6.7( a)-8.1(nd N)-6.7(-)-6.3(g)-8.1(r)0.7(a)-21.1(m)13.2( C)-6.7(o)-8.1(-)-6.3(O)-3(ccur)-12.3(r)-12.3(e)0.7(nce )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 354.2238 Tm +0.0029 Tc +0.0909 Tw +[(T)-11.3(o)2.9( a)9.2(u)2.9(toma)9.2(tic)-6.4(a)-6.4(lly)18.5( e)-6.4(v)2.9(a)-6.4(l)15.1(u)-12.7(a)9.2(t)-16.1(e)9.2( ma)-6.4(c)9.2(h)2.9(in)-12.7(e)9.2( tr)7.8(a)-6.4(n)2.9(sla)9.2(tions th)-12.7(e)9.2( ma)-6.4(-)]TJ +0 -1.1563 TD +0.0013 Tc +0.0143 Tw +[(c)7.6(h)1.3(in)-14.3(e)7.6( )15.6(tr)-9.4(a)7.6(n)1.3(s)-15.8(l)-2.1(a)7.6(tion c)7.6(o)-14.3(mmunit)-17.7(y)16.9( re)-8(c)-8(e)7.6(nt)-17.7(ly)16.9( a)-8(dopte)7.6(d)-14.3( )15.6(a)-8(n)1.3( )15.6(n)-14.2(-)6.2(gr)-9.4(a)-8(m)-2.1( )]TJ +T* +-0.006 Tc +0.0841 Tw +[(co)-21.6(-o)-6(c)-15.3(c)0.3(u)-6(r)-16.7(r)-16.7(e)0.3(n)-6(c)-15.3(e s)-7.5(c)-15.3(o)-6(r)-1.1(i)-9.4(n)-21.6(g)-6( p)-6(r)-1.1(o)-21.6(c)-15.3(ed)-6(u)-6(r)-16.7(e )-15.6(B)-10.9(L)-4.5(E)-20.2(U)-2.6( \(P)-12.4(ap)-6(i)-25(n)-6(en)-6(i)-9.4( )-15.7(et)-9.4( a)-15.3(l)6.2(.)-21.6( )]TJ +T* +-0.0001 Tc +0.1251 Tw +[(2001\).)-15.7( T)-14.3(h)-0.1(e)6.2( N)-12.3(I)4.8(S)-6.5(T)-14.3( \(N)-12.3(I)20.4(S)-6.5(T)-14.3( 20)-15.7(02\) s)-17.2(c)6.2(o)-15.7(r)4.8(in)-15.7(g me)6.2(tri)-19.1(c)6.2( is b)-15.7(a)6.2(s)-17.2(e)6.2(d)-15.7( )]TJ +T* +-0.0063 Tc +0.1782 Tw +[(o)-6.3(n)-6.3( B)-11.2(L)-4.8(E)-20.5(U)-2.9(.)-6.3( T)-20.5(h)-6.3(e )-15.6(m)5.9(a)0(i)-9.7(n)-6.3( i)-9.7(d)-21.9(ea o)-21.9(f)-1.4( )-15.6(B)-11.2(L)10.8(E)-20.5(U)-2.9( i)-25.3(s)-7.8( t)-9.7(o)-6.3( m)-9.7(eas)-7.8(u)-21.9(r)-17(e t)-9.7(h)-6.3(e)-15.6( )]TJ +T* +0.3344 Tw +[(t)-9.7(r)-1.4(an)-6.3(s)-23.4(l)-9.7(at)-9.7(i)-9.7(o)-6.3(n)-6.3( c)-15.6(l)-9.7(o)-6.3(s)-7.8(e)-15.6(n)-6.3(es)-7.8(s)-7.8( b)-21.9(e)0(t)-9.7(w)-18.5(e)-15.6(e)0(n)-6.3( a )-15.7(can)-21.9(d)-6.3(i)-9.7(d)-6.3(a)0(t)-25.3(e)0( t)-9.7(r)-1.4(an)-21.9(s)-7.8(l)-9.7(at)-9.7(i)-9.7(o)-6.3(n)-37.6( )]TJ +T* +-0.0059 Tc +0.0372 Tw +[(an)-5.9(d)-5.9( a s)-23(e)0.4(t)-9.3( o)-5.9(f)-1( r)-16.6(e)0.4(f)-16.6(e)0.4(r)-16.6(e)0.4(n)-21.5(ce t)-9.3(r)-16.6(an)-5.9(s)-23(l)-9.3(at)-9.3(i)-9.3(o)-5.9(n)-5.9(s)-7.4( wi)-9.3(t)-9.3(h)-5.9( )-15.6(a n)-5.9(u)-21.5(m)6.3(e)-15.2(ri)-9.3(c)-15.2(a)-15.2(l)6.3( )-15.6(m)6.3(e)0.5(t)-24.9(-)]TJ +T* +0.01 Tc +0.0838 Tw +[(r)14.9(i)6.6(c)16.3(.)10( To)10( a)16.3(c)16.3(h)10(i)-9(e)0.7(v)10(e)16.3( t)6.6(h)10(i)6.6(s)8.5( g)10(o)10(a)0.7(l)22.2(,)10( t)6.6(h)-5.6(ey)25.6( u)10(s)8.5(ed)10( a)16.3( )-15.6(w)13.4(e)16.3(i)6.6(g)-5.6(h)10.1(t)6.6(e)16.3(d)10( )-15.6(av)25.6(er)14.9(ag)10(e )]TJ +T* +0.0008 Tc +0.4055 Tw +[(of va)7.1(ri)-18.2(a)7.1(b)-14.8(le)7.1( le)7.1(ngth)-14.8( )15.7(n)-14.8(-)21.3(g)-14.8(r)-9.9(a)-8.5(m)13( ma)7.1(tc)-8.5(he)7.1(s)-16.3( )15.7(be)7.1(t)-18.2(w)4.2(e)-8.5(e)7.1(n s)-16.3(y)16.4(ste)-8.5(m)-18.2( )]TJ +0 -1.1719 TD +0.0012 Tc +0.2019 Tw +[(tra)7.5(n)1.2(s)-15.9(l)-2.2(a)7.6(tions)-15.9( a)7.5(n)-14.4(d )-15.7(a)7.5( s)-15.9(e)7.5(t of)-9.5( hu)-14.4(ma)7.5(n)-14.4( r)-9.5(e)7.5(f)-9.5(e)7.5(r)-9.5(e)7.5(nc)-8.1(e)7.5( t)-17.8(r)6.1(a)-8.1(n)1.2(s)-15.9(l)13.5(a)7.5(tio)-14.4(ns)-15.9( )]TJ +0 -1.1563 TD +-0.0054 Tc +0.0835 Tw +[(an)-5.4(d)-5.4( s)-6.9(h)-5.4(o)-21(w)-2(e)-14.7(d)-5.4( t)-8.8(h)-5.4(at)-8.8( a )-15.6(wei)-24.4(g)-5.4(h)-5.4(t)-8.8(e)-14.7(d)-5.4( a)-14.7(v)-5.4(er)-16.1(ag)-21(e m)-8.8(e)0.9(t)-8.8(r)-0.5(i)-24.4(c)0.9(,)-5.4( i)-8.8(.)-5.4(e.)-5.4( )-15.7(B)-10.3(LEU,)-36.7( )]TJ +T* +0.0013 Tc +0.0143 Tw +[(c)7.6(o)1.3(r)-9.4(r)6.2(e)-8(l)-2.1(a)7.6(ting high)-14.3(ly)16.9( with )15.6(hu)-14.3(ma)7.6(n a)7.6(s)-0.2(s)-15.8(e)7.6(ss)-15.8(me)7.6(nts. )15.6( )]TJ +T* +-0.006 Tc +0.0373 Tw +[(S)-12.4(i)-9.4(m)6.2(i)-25(l)6.2(a)-15.3(r)-16.7(l)-9.4(y)9.6(,)-6( )-15.6(fo)-21.6(l)-9.4(l)6.2(o)-6(w)-2.6(i)-25(n)-6(g)-6( t)-9.4(h)-21.6(e )-15.6(B)-10.9(L)11.1(E)-20.2(U)-2.6( i)-9.4(d)-21.6(ea,)-6( )-15.6(w)-18.2(e)0.3( as)-7.5(s)-23(u)-21.6(m)6.2(e)0.3( t)-25(h)-6(at)-9.4( t)-9.4(h)-21.6(e)-15.3( )]TJ +T* +0.002 Tc +0.1543 Tw +[(c)-7.3(l)14.2(ose)-7.3(r)6.9( )-15.6(a)8.3(n)2( )-15.6(a)8.3(u)2(to)-13.6(ma)8.3(tic)-7.3( su)-13.6(mma)8.3(r)-24.4(y)17.6( to )-15.6(a)8.3( p)-13.6(r)-8.7(of)6.9(e)8.5(ssi)-17(ona)-7.3(l hu)-13.6(ma)8.3(n)-13.6( )]TJ +0 -1.6719 TD +0 Tc +0 Tw +( )Tj +ET +71.949 190.827 144 -0.466 re +f +BT +9.931 0 0 9.931 215.9492 188.1894 Tm +( )Tj +6.0517 0 0 6.0517 71.9492 181.8273 Tm +(3)Tj +9 0 0 9 75.0527 177.7928 Tm +0.0031 Tc +0.0917 Tw +[( Does)12.9( t)5.1(h)20.3(e sum)5.1(m)22.3(ar)-8.7(y)20.3( obser)8.5(v)20.3(e)-1.3( E)-6.8(ngl)5.1(i)22.3(s)-21.5(h)20.3( gr)8.5(a)-18.6(m)5.1(m)22.3(a)-1.3(t)-12.2(i)22.3(ca)-18.6(l)22.3( r)-8.7(u)3.1(l)22.3(e)-1.3(s i)5.1(n)20.3(de-)]TJ +-0.3448 -1.1552 TD +0.0006 Tc +0.008 Tw +[(pen)17.8(d)0.6(e)-21.1(n)17.8(t of)23.3( )-17.3(i)19.8(t)2.6(s)-6.8( con)17.8(t)2.6(e)-21.1(n)17.8(t)-14.7(?)13.5( )]TJ +6.0517 0 0 6.0517 71.9492 161.0342 Tm +0 Tc +0 Tw +(4)Tj +9 0 0 9 75.0527 156.9997 Tm +-0.0023 Tc +0.1489 Tw +[( Do s)-9.7(e)-6.7(n)14.9(t)-0.3(e)-6.7(n)14.9(c)-6.7(e)-6.7(s)-9.7( )-17.2(in)14.9( t)-17.6(h)14.9(e)-6.7( s)-9.7(u)-2.3(mm)16.9(a)-24(r)-14.1(y)14.9( )-17.2(fi)16.9(t )-17.2(in)14.9( w)-21.5(i)-0.3(t)-17.6(h)-2.3( th)14.9(e)-24(i)16.9(r s)-26.9(u)14.9(r)-14.1(r)3.1(o)-19.5(u)-2.3(n)14.9(d)-19.5(ing)14.9( )]TJ +-0.3448 -1.1379 TD +0.0053 Tc +0.0033 Tw +[(sen)22.5(t)7.3(en)22.5(ces?)18.1( )]TJ +6.0517 0 0 6.0517 71.9492 140.3963 Tm +0 Tc +0 Tw +(5)Tj +9 0 0 9 75.0527 136.3618 Tm +0.0027 Tc +0.0404 Tw +[( I)8.1(s)-4.7( t)4.7(h)19.9(e con)19.9(t)4.7(en)19.9(t)4.7( o)-14.5(f)25.4( t)-12.6(h)19.9(e sum)4.7(m)21.9(ar)-9.1(y)19.9( e)-19(x)19.9(pr)8.1(essed a)15.5(n)19.9(d or)-9.1(g)19.9(a)-19(ni)21.9(zed i)4.7(n)19.9( an )]TJ +-0.3448 -1.1552 TD +0.0034 Tc +0.0052 Tw +[(ef)8.8(f)26.1(ect)-11.9(i)5.4(v)20.6(e way?)16.2( )]TJ +6.0517 0 0 6.0517 71.9492 119.6031 Tm +0 Tc +0 Tw +(6)Tj +9 0 0 9 75.0527 115.5687 Tm +0.0031 Tc +0.1952 Tw +[( T)10.5(h)20.3(ese cat)5.1(eg)20.3(or)-8.7(y)20.3( l)22.3(a)-1.3(be)-18.6(l)22.3(s)-4.3( ar)8.5(e ch)20.3(ang)20.3(e)-1.3(d t)5.1(o)3.1( )-17.2(num)22.3(er)-8.7(i)22.3(c)-1.3(a)-18.6(l)22.3( )-17.2(v)20.3(a)-1.3(l)5.1(u)20.3(es o)-14.1(f)25.8( )]TJ +-0.3448 -1.1379 TD +0.0003 Tc +0.0083 Tw +[(100%)5.7(,)-8.3( 80%)5.7(,)-8.3( 60%)23(,)-8.3( 40%)5.7(,)8.9( 20%)5.7(,)-8.3( )17.2(an)17.5(d 0%)5.7( in)17.5( DUC)-5.1( 2002.)-8.2( )]TJ +6.0517 0 0 6.0517 71.9492 98.9652 Tm +0 Tc +0 Tw +(7)Tj +9 0 0 9 75.0527 94.9308 Tm +0.0017 Tc +0.0242 Tw +[( DUC)-3.7( 2002 )-17.2(u)18.9(s)-5.7(es)-5.7( a l)20.9(e)-20(ng)18.9(t)-13.6(h)18.9( adj)-13.6(u)18.9(s)-5.7(t)3.7(ed )-17.2(v)18.9(e)-2.7(r)7.1(s)-22.9(i)20.9(o)-15.5(n)18.9( )-17.2(of)7.1( cov)18.9(e)-2.7(r)7.1(a)-20(g)18.9(e)-2.7( )-17.2(m)20.9(e)-2.7(t)-13.6(r)-10.1(i)20.9(c)-2.7( )]TJ +/TT2 1 Tf +-0.3448 -1.1552 TD +0.0054 Tc +0 Tw +(C)Tj +/TT4 1 Tf +1 0 TD +0.0049 Tc +0.0554 Tw +[(, wh)22.1(er)10.3(e )]TJ +/TT2 1 Tf +3.3103 0 TD +0.0054 Tc +0 Tw +(C)Tj +/TT4 1 Tf +1 0 TD +-0.0122 Tc +0.0725 Tw +[( = )]TJ +/TT11 1 Tf +1.1724 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5345 0 TD +(*)Tj +/TT2 1 Tf +0.4655 0 TD +(C)Tj +/TT4 1 Tf +0.6724 0 TD +0.005 Tc +0.0553 Tw +[( + \()10.4(1)5(-)]TJ +/TT11 1 Tf +2.3448 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5172 0 TD +0.0118 Tc +(\)*)Tj +/TT2 1 Tf +0.8276 0 TD +0 Tc +(B)Tj +/TT4 1 Tf +0.6034 0 TD +0.0033 Tc +0.057 Tw +[(. B)15.1( )-17.3(i)22.5(s)-4.1( t)5.3(h)20.5(e br)-8.5(evi)22.5(t)-12(y)20.5( an)20.5(d )]TJ +/TT11 1 Tf +8.9138 0 TD +0 Tc +0 Tw +(!)Tj +/TT2 1 Tf +0.5172 0 TD +( )Tj +/TT4 1 Tf +0.3276 0 TD +0.0033 Tc +0.057 Tw +[(i)22.5(s)-4.1( a pa-)]TJ +-22.2069 -1.1379 TD +0.001 Tc +0.0076 Tw +[(r)6.4(a)-20.7(m)37.4(e)-3.4(ter)6.4( r)6.4(e)-20.7(f)6.4(l)20.2(ect)-14.3(ing)18.2( r)6.4(e)-20.7(l)20.2(a)-3.4(t)-14.3(i)3(v)18.2(e)-3.4( im)20.2(por)6.4(ta)-20.7(n)18.2(ce \()6.4(DUC)-4.4( 2002\))6.4(.)-7.5( )]TJ +9.931 0 0 9.931 313.0872 710.8101 Tm +0.0018 Tc +0.0919 Tw +[(summa)-7.5(r)-8.9(y)17.4(, the)8.1( b)-13.8(e)8.1(tte)-7.5(r)6.7( it is. T)-12.4(h)1.8(e)8.1( que)8.2(stion is:)14( )-7.5(C)-3.1(a)8.1(n)1.8( w)5.2(e)8.1( )-15.7(a)8.2(p)-13.8(-)]TJ +0 -1.1563 TD +0.0016 Tc +0.1078 Tw +[(ply)17.2( )-15.6(BLEU)5( di)-17.4(r)6.5(e)-7.7(c)7.9(t)-17.4(ly)32.8( )-15.6(w)5(itho)-14(u)1.6(t a)7.9(n)-14(y)17.2( )-15.6(m)13.8(odi)-17.4(f)6.5(i)-17.4(c)7.9(a)7.9(tio)-14(ns to e)-7.7(v)17.2(a)-7.7(l)-1.7(u)-14(-)]TJ +T* +-0.0058 Tc +0.2558 Tw +[(at)-9.2(e s)-22.9(u)-21.4(m)-9.2(m)-9.2(a)0.5(ri)-9.2(e)-15.1(s)-7.3( as)-22.9( w)-18(e)-15.1(l)-9.2(l)-9.2(?)0.5(.)-5.8( )-15.6(We)-15.1( fi)-9.2(r)-16.5(s)-7.3(t)-9.2( r)-16.5(a)0.5(n)-5.8( )-15.6(IB)-10.7(M)-7.3()-16.5(s)-7.3( B)-10.7(L)-4.3(E)-20(U)-18( )]TJ +T* +0.0006 Tc +0.0462 Tw +[(e)-8.7(v)16.2(a)-8.7(l)-2.8(ua)6.9(tio)-15(n sc)-8.7(ript un)-15(modifi)-18.4(e)6.9(d)0.6( o)-15(v)0.6(e)-8.7(r)5.5( the)-8.7( )-15.7(DUC 2)-15(001 )-15.7(m)12.8(o)-15(de)-8.7(l )]TJ +T* +0.002 Tc +0.2636 Tw +[(a)8.3(nd p)-13.6(e)-7.3(e)8.3(r)6.9( s)-15.1(u)-13.6(mma)8.3(r)-8.7(y)17.6( s)-15.1(e)8.3(t. T)-12.2(h)2(e)-7.3( r)-8.7(e)8.3(su)-13.6(l)14.2(ting)-13.6( Spe)8.3(a)-7.3(r)-8.7(m)-1.4(a)8.3(n)2( )-15.7(r)6.9(a)8.3(n)-13.6(k)-13.6( )]TJ +0 -1.2188 TD +-0.0057 Tc +0.0682 Tw +[(o)-5.7(r)-0.8(d)-21.3(e)0.6(r c)-15(o)-5.7(rr)-16.4(e)-15(l)-9.1(at)-9.1(i)-9.1(o)-5.7(n)-5.7( co)-21.3(ef)-16.4(fi)-9.1(ci)-24.7(en)-5.7(t)-9.1( \()]TJ +/F2 1 Tf +12.0469 0 TD +0 Tc +0 Tw +()Tj +/TT4 1 Tf +0.5469 0 TD +0.0009 Tc +0.0616 Tw +[(\) b)-14.7(e)7.2(tw)-11.3(e)-8.4(e)7.2(n )-15.6(BL)18(E)-13.3(U)4.3( a)7.2(n)-14.7(d the)-8.4( )]TJ +-12.5937 -1.1719 TD +0.0019 Tc +0.0919 Tw +[(hu)-13.7(m)14.1(a)8.2(n)-13.7( a)8.2(s)0.4(s)-15.2(e)8.2(ss)-15.2(me)8.2(nt )-15.6(f)6.8(o)-13.7(r)6.8( th)-13.7(e)8.2( sing)-13.7(le)8.2( d)-13.7(o)1.9(c)8.2(u)-13.7(me)8.2(nt t)-17.1(a)8.2(sk is)-15.2( 0.6)-13.7(6)-13.7( )]TJ +0 -1.1563 TD +-0.0001 Tc +0.1095 Tw +[(using on)-15.7(e)6.2( re)-9.4(fe)-9.3(re)-9.4(nc)-9.4(e)6.2( su)-15.7(mma)6.2(r)-26.5(y)31.1( )-15.6(a)6.2(nd 0)-15.7(.)-0.1(8)-15.7(2)-0.1( using thr)-10.8(e)6.2(e)6.2( r)-10.8(e)-9.3(f)-10.8(-)]TJ +0 -1.2188 TD +-0.0061 Tc +0.303 Tw +[(er)-16.8(en)-21.7(ce s)-23.2(u)-21.7(m)-9.5(m)-9.5(a)0.2(ri)-25.1(es)-7.6(;)-9.5( w)-18.3(h)-6.1(i)-9.5(l)-9.5(e)0.2( S)-12.5(p)-21.7(e)-15.4(a)0.3(r)-16.8(m)-9.5(an)-6.1( )]TJ +/F2 1 Tf +15.7344 0 TD +0 Tc +0 Tw +()Tj +/TT10 1 Tf +0.5312 0 TD +( )Tj +/TT4 1 Tf +0.5938 0 TD +-0.0054 Tc +0.3023 Tw +[(fo)-21(r t)-8.8(h)-21(e )-15.6(m)6.8(u)-21(l)6.8(t)-8.8(i)-24.4(-)]TJ +-16.8594 -1.1719 TD +0.0007 Tc +0.0774 Tw +[(doc)7(u)-14.9(m)-2.7(e)7(n)0.7(t t)-18.3(a)7(sk is)-16.4( 0.67)-14.9( using)-14.9( on)-14.9(e)7( r)-10(e)7(f)-10(e)7.1(r)-10(e)7(nc)-8.6(e)7( )-15.7(a)7(n)0.7(d)-14.9( 0.70)-14.9( us)-16.4(-)]TJ +0 -1.1562 TD +0.0016 Tc +0.1859 Tw +[(ing thr)6.5(e)-7.7(e)7.9(.)1.6( T)-12.6(h)1.6(e)7.9(s)0.1(e)7.9( nu)-14(mbe)-7.7(r)6.5(s indic)-7.7(a)7.9(te)7.9( th)-14(a)7.9(t)-1.8( the)-7.7(y)17.2( positi)-17.4(ve)-7.7(ly )]TJ +0 -1.2188 TD +-0.0063 Tc +0.0688 Tw +[(co)-6.3(r)-17(r)-1.4(e)-15.6(l)-9.7(at)-9.7(e)-15.6( at)-9.7( )]TJ +/F2 1 Tf +4.8594 0 TD +0 Tc +0 Tw +()Tj +/TT4 1 Tf +0.6406 0 TD +-0.0005 Tc +0.063 Tw +[( = )-15.6(0.01)]TJ +6.5172 0 0 6.5172 397.1906 586.8273 Tm +0 Tc +0 Tw +(8)Tj +9.931 0 0 9.931 400.4492 582.3273 Tm +-0.0061 Tc +0.0686 Tw +[(.)-6.1( T)-20.3(h)-6.1(er)-16.8(efo)-21.7(r)-1.2(e)-15.4(,)-6.1( )-15.6(B)-11(L)11(E)-20.3(U)-2.7( s)-7.6(e)-15.4(e)-15.4(m)6.1(s)-7.6( )-15.6(a p)-21.7(r)-1.2(o)-21.6(m)-9.5(-)]TJ +-8.7969 -1.1719 TD +0.002 Tc +-0.002 Tw +[(ising a)8.3(u)2(to)-13.6(ma)8.3(ti)-17(c)8.3( sc)-7.3(or)6.9(in)-13.6(g )-15.6(m)14.2(e)8.3(t)-17(r)6.9(ic)8.3( )-15.6(f)6.9(o)-13.6(r)6.9( su)-13.6(mma)8.3(r)-8.7(y)17.6( )-15.6(e)-7.3(v)2(a)-7.3(l)14.2(u)-13.6(a)8.3(tion. )]TJ +0 -1.1562 TD +0.0003 Tc +0.0153 Tw +[(Ac)-9(c)6.6(o)0.3(r)-10.4(d)0.3(ing to P)-6.1(a)6.6(pin)-15.3(e)6.6(ni e)6.6(t)-3.1( )-15.7(a)-9(l)12.5(. \(20)-15.3(01\), )-15.7(BLEU is e)6.7(s)-1.2(s)-16.8(e)6.6(nti)-18.7(a)-9(lly )]TJ +T* +0.0018 Tc +0.2795 Tw +[(a)8.1( )15.7(p)-13.8(r)6.7(e)-7.5(c)8.1(ision)-13.8( me)8.1(tr)6.7(i)-17.2(c)8.1(. I)6.7(t)-1.6( me)8.1(a)8.1(s)-15.3(ur)-8.9(e)8.1(s)0.3( how)-10.4( )15.7(w)-10.4(e)-7.5(l)14(l)-1.6( a)8.1( ma)8.1(c)-7.5(h)1.8(ine)-23.1( )]TJ +T* +0.002 Tc +0.2949 Tw +[(tr)6.9(a)8.3(n)2(s)-15.1(l)-1.4(a)8.3(tion )15.6(o)-13.6(v)2(e)8.3(r)-8.7(la)8.3(ps w)5.4(ith m)14.2(u)-13.6(l)14.2(tip)-13.6(l)14.2(e)8.3( hu)-13.6(ma)8.3(n )15.6(tr)-8.7(a)8.3(n)2(s)-15.1(l)-1.4(a)8.3(tions)-15.1( )]TJ +T* +0.0016 Tc +0.0609 Tw +[(using )15.6(n)-14(-)6.5(gr)-9.1(a)-7.7(m)13.8( c)7.9(o)-14(-)6.5(o)1.6(c)-7.7(c)7.9(u)-14(r)6.5(r)-9.1(e)7.9(n)-14(c)7.9(e)7.9( sta)7.9(tistic)-7.7(s. N)-10.6(-)22.1(g)-14(r)6.5(a)-7.7(m)-1.8( )15.6(pr)-9.1(e)-7.7(c)7.9(ision)-14( )]TJ +T* +0.0007 Tc +-0.0007 Tw +[(in BLE)-13.5(U)4.1( is c)-8.6(o)-14.9(m)12.9(put)-18.3(e)7(d)0.7( )-15.6(a)7(s)-0.8( f)-10(o)0.7(llows)-16.4(:)12.9( )]TJ +ET +0.494 w +349.397 483.793 m +511.242 483.793 l +S +BT +/TT12 1 Tf +17.977 0 0 17.977 373.1389 468.7411 Tm +1.5745 Tc +0 Tw +(!!)Tj +ET +q +367.553 491.551 12.879 19.241 re +W n +BT +17.977 0 0 17.977 367.5526 495.4307 Tm +0 Tc +(!)Tj +ET +Q +BT +17.977 0 0 17.977 408.5182 495.4307 Tm +0 Tc +(!)Tj +/F2 1 Tf +6.9907 0 0 6.9907 360.5699 460.2066 Tm +8.7208 Tc +()Tj +6.7923 0 TD +0 Tc +()Tj +-7.5914 3.7957 TD +8.7207 Tc +()Tj +6.7923 0 TD +0 Tc +()Tj +11.9846 0 0 11.9846 468.8802 471.5342 Tm +()Tj +0.4791 2.227 TD +()Tj +-11.2645 -1.4501 TD +(=)Tj +/TT4 1 Tf +6.9907 0 0 6.9907 400.294 460.2066 Tm +(})Tj +-5.0609 0 TD +({)Tj +4.2618 3.7957 TD +(})Tj +-5.0831 0 TD +({)Tj +11.9846 0 0 11.9846 501.0009 471.5342 Tm +(\))Tj +-3.5736 0 TD +(\()Tj +4.0526 2.227 TD +(\))Tj +-3.5736 0 TD +(\()Tj +/TT2 1 Tf +6.9907 0 0 6.9907 368.1733 460.2066 Tm +0.0106 Tc +[(C)11.7(andidate)10.5(s)]TJ +-1.7758 0 TD +10.143 Tc +(CC)Tj +8.0353 0 TD +0.0105 Tc +(gram)Tj +-0.9989 0 TD +0 Tc +(n)Tj +-6.0598 3.7957 TD +0.0106 Tc +[(C)11.7(andidate)10.5(s)]TJ +-1.798 0 TD +10.143 Tc +(CC)Tj +8.0353 0 TD +0.0105 Tc +(gram)Tj +-0.9989 0 TD +0 Tc +(n)Tj +7.547 1.1986 TD +0.0107 Tc +[(c)10.6(lip)]TJ +-17.1583 -2.4639 TD +0 Tc +(n)Tj +11.9846 0 0 11.9846 475.5526 471.5342 Tm +0.005 Tc +[(gr)5.7(am)]TJ +-1.0876 0 TD +0 Tc +(n)Tj +-2.8744 0 TD +0.005 Tc +[(C)11.7(ount)]TJ +4.4281 2.227 TD +[(gr)5.7(am)]TJ +-1.0876 0 TD +0 Tc +(n)Tj +-3.8196 0 TD +0.005 Tc +[(C)11.7(ount)]TJ +-8.0405 -1.4501 TD +0 Tc +(p)Tj +/TT4 1 Tf +9.931 0 0 9.931 513.725 480.8445 Tm +-0.0025 Tc +0.0025 Tw +( \(2\) )Tj +-20.2031 -3.4375 TD +-0.0063 Tc +0 Tw +[(Wh)-21.9(er)-17(e )]TJ +/TT2 1 Tf +3 0 TD +0.002 Tc +[(Co)-13.6(unt)]TJ +6.5172 0 0 6.5172 367.3975 445.1549 Tm +0.0081 Tc +(clip)Tj +/TT4 1 Tf +9.931 0 0 9.931 377.3285 446.7066 Tm +0 Tc +(\()Tj +/TT2 1 Tf +0.3281 0 TD +-0.0009 Tc +[(n-gra)-16.5(m)]TJ +/TT4 1 Tf +2.9531 0 TD +0.002 Tc +0.0761 Tw +[(\))-8.7( is th)-13.6(e)8.4( )-15.7(ma)8.3(xi)-17(mum nu)-13.6(mbe)-7.3(r)6.9( o)-13.6(f)6.9( )]TJ +/TT2 1 Tf +12.2344 0 TD +0.0156 Tc +0 Tw +(n-)Tj +-21.9844 -1.1563 TD +0.0004 Tc +(gram)Tj +/TT4 1 Tf +2.1094 0 TD +0.0001 Tc +0.0624 Tw +[(s )-15.6(c)6.4(o)-15.5(-oc)-9.2(c)6.4(ur)-10.6(ring in )-15.6(a)6.4( c)-9.2(a)6.4(ndid)-15.5(a)6.4(t)-18.9(e)6.4( tra)-9.2(n)-15.5(sla)6.4(tion a)-9.2(nd a)6.4( )-15.6(re)-9.1(f)-10.6(-)]TJ +-2.1094 -1.1563 TD +-0.0063 Tc +0.0844 Tw +[(er)-17(en)-21.9(ce)-15.6( t)-9.7(r)-17(an)-6.3(s)-23.4(l)5.9(at)-9.7(i)-9.7(o)-21.9(n)-6.3(,)-6.3( )-15.7(an)-6.3(d)-21.9( )]TJ +/TT2 1 Tf +9.5781 0 TD +0.001 Tc +0 Tw +(Count)Tj +/TT4 1 Tf +2.4687 0 TD +0 Tc +(\()Tj +/TT2 1 Tf +0.3281 0 TD +0.0003 Tc +[(n-)-10.4(gram)]TJ +/TT4 1 Tf +2.9687 0 TD +0.0019 Tc +0.0762 Tw +[(\))-8.8( is th)-13.7(e)8.2( nu)-13.7(mbe)-7.4(r)6.8( o)-13.7(f)-8.8( )]TJ +/TT2 1 Tf +-15.3437 -1.1563 TD +-0.0009 Tc +0 Tw +[(n-gra)-16.5(m)]TJ +/TT4 1 Tf +2.9531 0 TD +0.0016 Tc +0.2015 Tw +[(s in th)-14(e)8( )-15.7(c)7.9(a)7.9(n)-14(dida)7.9(t)-17.4(e)7.9( tr)-9.1(a)7.9(n)1.6(s)-15.5(l)-1.8(a)7.9(tion.)-14( T)-12.6(o)1.6( pr)6.5(e)-7.7(v)1.6(e)7.9(n)1.6(t )-15.7(ve)7.9(r)-24.8(y)1.6( )]TJ +-2.9531 -1.1563 TD +0.2173 Tw +[(shor)6.4(t tr)-9.2(a)7.8(n)1.5(s)-15.6(l)-1.9(a)7.8(tions tha)7.8(t)-1.9( t)-17.5(r)-9.2(y)17.1( to )-15.6(m)13.7(a)-7.8(xi)-17.5(m)13.7(i)-1.9(z)-7.7(e)7.8( the)7.8(i)-17.5(r)6.4( pr)-9.2(e)7.8(c)7.8(i)-1.9(sio)-14.1(n)-14.1( )]TJ +T* +0.0005 Tc +0.2026 Tw +[(sc)6.8(or)-10.2(e)6.8(s)-1(, )-15.7(BLEU )-15.7(a)6.8(d)0.5(d)-15.1(s)-1( a)6.8( b)-15.1(r)5.4(e)-8.8(v)0.5(it)-18.5(y)16.1( p)-15.1(e)6.9(na)-8.8(l)12.7(t)-18.5(y, )]TJ +/TT2 1 Tf +16.4687 0 TD +-0.0015 Tc +0 Tw +(BP)Tj +/TT4 1 Tf +1.2188 0 TD +0.0017 Tc +0.2014 Tw +[(, to th)-13.9(e)8( f)6.6(o)-13.9(r)-9(-)]TJ +-17.6875 -1.1563 TD +-0.0122 Tc +0 Tw +[(mu)-27.8(l)-15.6(a)-21.5(: )]TJ +ET +441.104 371.603 m +441.104 357.327 l +448.242 371.603 m +448.242 357.327 l +461.742 371.603 m +461.742 357.327 l +468.725 371.603 m +468.725 357.327 l +441.26 353.603 m +441.26 339.327 l +448.242 353.603 m +448.242 339.327 l +461.587 353.603 m +461.587 339.327 l +468.57 353.603 m +468.57 339.327 l +S +BT +12.01 0 0 12.01 499.6044 352.5169 Tm +0 Tc +(\))Tj +-0.4651 0 TD +(3)Tj +-0.323 0 TD +(\()Tj +-7.7521 0.7494 TD +(1)Tj +7.0057 0 0 7.0057 412.5526 348.7928 Tm +-0.023 Tc +(|\))Tj +-0.7309 0 TD +0 Tc +(|)Tj +-0.3544 0 TD +(/)Tj +-0.2658 0 TD +(|)Tj +-0.7309 0 TD +(|)Tj +-1.0632 0 TD +(1)Tj +-0.3101 0 TD +(\()Tj +/TT12 1 Tf +12.01 0 0 12.01 473.225 339.1721 Tm +(")Tj +0 0.9303 TD +(#)Tj +T* +($)Tj +-8.0235 -1.8605 TD +(%)Tj +0 0.9303 TD +(&)Tj +T* +(')Tj +/F2 1 Tf +6.2276 -1.4987 TD +()Tj +0.0129 1.4987 TD +(>)Tj +-7.0286 -0.7494 TD +(=)Tj +7.0057 0 0 7.0057 393.9319 348.7928 Tm +()Tj +/TT2 1 Tf +12.01 0 0 12.01 462.5181 343.5169 Tm +(r)Tj +-1.7055 0 TD +(c)Tj +-1.1241 0 TD +-0.0065 Tc +(if)Tj +-3.8115 0 TD +0 Tc +(e)Tj +6.6539 1.4987 TD +(r)Tj +-1.7313 0 TD +(c)Tj +-1.1241 0 TD +-0.0065 Tc +(if)Tj +-6.5506 -0.7494 TD +-0.0036 Tc +(BP)Tj +7.0057 0 0 7.0057 409.1389 348.7928 Tm +0 Tc +(c)Tj +-1.329 0 TD +(r)Tj +/TT4 1 Tf +9.931 0 0 9.931 505.5009 352.5169 Tm +( )Tj +-19.375 -2.6406 TD +-0.0063 Tc +0.1157 Tw +[(Wh)-21.9(er)-17(e |)]TJ +/TT2 1 Tf +3.2344 0 TD +0 Tc +0 Tw +(c)Tj +/TT4 1 Tf +0.4375 0 TD +0.0014 Tc +0.108 Tw +[(| is)-15.7( the)7.7( )-15.6(le)7.7(ngt)-17.6(h of t)-17.6(h)1.4(e)7.7( )-15.6(c)-7.9(a)7.7(ndid)-14.2(a)7.7(t)-17.6(e)7.7( tr)-9.3(a)7.7(n)1.4(s)-15.7(l)-2(a)7.7(tion )-15.6(a)7.7(n)1.4(d)-14.2( )]TJ +-3.6719 -1.1562 TD +0 Tc +0 Tw +(|)Tj +/TT2 1 Tf +0.2031 0 TD +(r)Tj +/TT4 1 Tf +0.3906 0 TD +0.001 Tc +0.0928 Tw +[(| is the)7.3( )-15.6(le)7.3(ngth o)-14.6(f)5.9( th)-14.6(e)7.3( r)-9.7(e)-8.3(fe)-8.3(re)7.3(n)-14.6(c)-8.3(e)7.3( tr)-9.7(a)7.3(n)1(s)-16.1(l)-2.4(a)7.3(tion. T)-13.2(h)1(e)-8.3( BLE)-13.2(U)-11.2( )]TJ +-0.5937 -1.1563 TD +0.0023 Tc +-0.0023 Tw +[(f)7.2(o)2.3(r)-8.4(m)-1.1(ula)8.6( is th)-13.3(e)8.6(n)2.3( )-15.6(w)5.7(r)7.2(itt)-16.7(e)8.6(n)2.3( )-15.6(a)8.6(s)0.8( f)-8.4(o)2.3(llow)5.7(s)-14.8(:)14.6( )]TJ +11.9998 0 0 11.9998 506.4319 280.0514 Tm +0 Tc +0 Tw +(\))Tj +-0.5043 0 TD +(4)Tj +-0.3621 0 TD +(\()Tj +-3.8018 0 TD +-0.0063 Tc +[(lo)-10.6(g)]TJ +-4.332 0 TD +(exp)Tj +6.9997 0 0 6.9997 431.4837 268.5687 Tm +0 Tc +(1)Tj +/TT12 1 Tf +11.9998 0 0 11.9998 480.363 279.7411 Tm +(\()Tj +0 -0.944 TD +(\))Tj +0 1.5905 TD +(*)Tj +-5.3018 -0.6466 TD +(+)Tj +0 -0.944 TD +(,)Tj +0 1.5905 TD +(-)Tj +/F2 1 Tf +-2.1595 -0.6207 TD +()Tj +-2.2242 0 TD +(=)Tj +/TT12 1 Tf +18 0 0 18 422.6389 277.2583 Tm +(!)Tj +/F2 1 Tf +6.9997 0 0 6.9997 427.7595 268.5687 Tm +(=)Tj +/TT2 1 Tf +-0.1773 3.3696 TD +(N)Tj +-0.4212 -3.3696 TD +(n)Tj +7.3156 1.1971 TD +(n)Tj +-4.3229 0 TD +(n)Tj +11.9998 0 0 11.9998 468.725 280.0514 Tm +(p)Tj +-2.6509 0 TD +(w)Tj +-5.2372 0 TD +-0.0031 Tc +(BP)Tj +-3.6983 0 TD +-0.0024 Tc +(BLEU)Tj +/TT4 1 Tf +9.931 0 0 9.931 512.4836 280.0514 Tm +0 Tc +( )Tj +/TT2 1 Tf +-20.0781 -2.4375 TD +(N)Tj +/TT4 1 Tf +0.6719 0 TD +0.002 Tc +0.0761 Tw +[( is s)-15.1(e)8.3(t )-15.7(a)8.3(t)-1.4( 4)-13.6( a)8.3(n)-13.6(d )]TJ +/TT2 1 Tf +6.4688 0 TD +0 Tc +0 Tw +(w)Tj +6.5172 0 0 6.5172 390.6733 254.2928 Tm +(n)Tj +/TT4 1 Tf +9.931 0 0 9.931 393.9319 255.8445 Tm +0.0008 Tc +0.0773 Tw +[(,)-14.8( the)-8.5( w)-11.4(e)7.1(ightin)-14.8(g )-15.7(fa)-8.5(c)-8.5(t)-2.6(or, is)-16.3( se)7.1(t)-18.2( a)7.1(t)-18.2( 1/)]TJ +/TT2 1 Tf +13.7656 0 TD +0 Tc +0 Tw +(N)Tj +/TT4 1 Tf +0.6719 0 TD +0.0156 Tc +(. )Tj +-22.5781 -1.1563 TD +-0.0007 Tc +0.0476 Tw +[(F)8.6(o)-16.3(r su)-16.3(mma)5.6(ri)-19.7(e)5.6(s)-2.2( b)-31.9(y)14.9( a)-10(n)-0.7(a)-10(l)11.5(o)-16.3(g)-16.3(y)14.9(, )-15.6(we)5.6( )-15.6(c)-10(a)5.6(n )-15.6(e)5.6(x)-16.3(pre)5.6(s)-2.2(s)-17.7( e)5.6(q)-16.3(ua)5.6(tio)-16.3(n \(1)-16.3(\))-11.4( )]TJ +T* +0.0003 Tc +-0.0003 Tw +[(in te)6.6(r)-10.4(m)12.5(s)-16.8( of )-15.6(n)-15.3(-)20.8(g)-15.3(r)5.2(a)-9(m)-3.1( )-15.6(m)12.5(a)6.6(t)-18.7(c)6.6(h)-15.3(e)6.6(s f)-10.4(o)-15.3(l)12.5(l)-3.1(owin)-15.3(g e)-9(qua)6.6(tion )-15.6(\(2)-15.3(\))-10.4(:)12.6( )]TJ +ET +340.863 203.551 m +512.018 203.551 l +S +BT +11.9998 0 0 11.9998 533.4319 200.6031 Tm +0 Tc +0 Tw +(\))Tj +-0.4785 0 TD +(5)Tj +-0.3362 0 TD +(\()Tj +-2.0949 -0.7759 TD +(\))Tj +-3.569 0 TD +(\()Tj +4.319 2.2242 TD +(\))Tj +-3.569 0 TD +(\()Tj +6.9997 0 0 6.9997 397.9664 179.9652 Tm +(})Tj +-5.4756 0 TD +({)Tj +4.1898 3.7908 TD +(})Tj +-5.4535 0 TD +({)Tj +/TT12 1 Tf +17.977 0 0 17.977 369.2596 188.4997 Tm +1.6522 Tc +(!!)Tj +ET +q +360.415 211.31 12.879 19.241 re +W n +BT +17.977 0 0 17.977 360.4147 215.1894 Tm +0 Tc +(!)Tj +ET +Q +BT +17.977 0 0 17.977 402.7768 215.1894 Tm +0 Tc +(!)Tj +/F2 1 Tf +6.9997 0 0 6.9997 355.4492 179.9652 Tm +9.0855 Tc +()Tj +7.1604 0 TD +0 Tc +()Tj +-8.4462 3.7908 TD +9.1077 Tc +()Tj +7.1826 0 TD +0 Tc +()Tj +11.9998 0 0 11.9998 466.5526 191.2928 Tm +()Tj +0.7371 2.2242 TD +()Tj +-12.0131 -1.4483 TD +(=)Tj +/TT2 1 Tf +6.9997 0 0 6.9997 382.4492 179.9652 Tm +0.0104 Tc +[(U)23.2(n)0.5(its)]TJ +-2.7267 0 TD +0.0099 Tc +[(M)22.7(ode)10.4(l)]TJ +-1.84 0 TD +10.5281 Tc +(CC)Tj +8.424 0 TD +0.0099 Tc +(gram)Tj +-0.9976 0 TD +0 Tc +(n)Tj +-4.1233 3.7908 TD +0.0104 Tc +[(U)23.2(n)0.5(its)]TJ +-2.7489 0 TD +0.0099 Tc +[(M)22.7(ode)10.4(l)]TJ +-1.84 0 TD +10.5281 Tc +(CC)Tj +8.424 0 TD +0.0099 Tc +(gram)Tj +-0.9976 0 TD +0 Tc +(n)Tj +7.5595 1.1971 TD +-0.0128 Tc +[(ma)-22.7(t)-23.2(c)-12.3(h)]TJ +-17.5353 -2.4607 TD +0 Tc +(n)Tj +11.9998 0 0 11.9998 473.0699 191.2928 Tm +0.0043 Tc +[(gr)5.5(am)]TJ +-1.0862 0 TD +0 Tc +(n)Tj +-2.8707 0 TD +0.0043 Tc +[(C)11.8(ount)]TJ +4.707 2.2242 TD +[(gr)5.5(am)]TJ +-1.0862 0 TD +0 Tc +(n)Tj +-4.3708 0 TD +0.0043 Tc +[(C)11.8(ount)]TJ +-8.4312 -1.4483 TD +0 Tc +(C)Tj +/TT4 1 Tf +9.931 0 0 9.931 539.0181 200.6031 Tm +( )Tj +-22.75 -3.4531 TD +-0.0063 Tc +[(Wh)-21.9(er)-17(e )]TJ +/TT2 1 Tf +3.0937 0 TD +0.0025 Tc +[(Cou)-13.1(n)2.5(t)]TJ +6.5172 0 0 6.5172 368.3285 164.7583 Tm +-0.0079 Tc +[(ma)-7.9(t)-15.8(c)-16.4(h)]TJ +/TT4 1 Tf +9.931 0 0 9.931 384.3112 166.31 Tm +0 Tc +(\()Tj +/TT2 1 Tf +0.3281 0 TD +-0.0008 Tc +[(n-gr)-17.9(am)]TJ +/TT4 1 Tf +2.9688 0 TD +0.0024 Tc +0.1695 Tw +[(\))7.3( is th)-13.2(e)8.7( )-15.6(ma)8.7(x)-13.2(i)-1(m)14.6(u)-13.2(m nu)-13.2(mbe)-6.9(r)7.3( o)-13.2(f)-8.3( )]TJ +/TT2 1 Tf +-10.4687 -1.1563 TD +-0.0009 Tc +0 Tw +[(n-gra)-16.5(m)]TJ +/TT4 1 Tf +2.9531 0 TD +-0.0059 Tc +0.1622 Tw +[(s)-7.4( co)-21.5(-o)-21.5(ccu)-21.5(rri)-24.9(n)-5.9(g)-5.9( i)-9.3(n)-5.9( a p)-5.9(e)-15.2(er s)-7.4(u)-21.5(m)-9.3(m)-24.9(ar)-16.6(y)9.7( )-15.6(an)-5.9(d)-5.9( a )-15.6(m)6.3(o)-21.5(d)-5.9(e)-15.2(l)-9.3( )]TJ +-2.9531 -1.1563 TD +0.0013 Tc +0.03 Tw +[(unit a)7.6(nd )]TJ +/TT2 1 Tf +3.5625 0 TD +0 Tc +0 Tw +[(C)-20.5(ount)]TJ +/TT4 1 Tf +2.4688 0 TD +(\()Tj +/TT2 1 Tf +0.3438 0 TD +-0.0008 Tc +[(n-gr)-17.9(am)]TJ +/TT4 1 Tf +2.9688 0 TD +-0.0006 Tc +0.0319 Tw +[(\) is the)5.7( )-15.6(nu)-16.2(m)11.6(b)-16.2(e)5.7(r)4.3( )-15.6(of )]TJ +/TT2 1 Tf +7.5469 0 TD +0.0003 Tc +0 Tw +[(n-)-10.4(gram)]TJ +/TT4 1 Tf +2.9687 0 TD +0.0016 Tc +0.0297 Tw +[(s in the)-23.3( )]TJ +-19.8594 -1.1562 TD +-0.0063 Tc +0.2407 Tw +[(m)5.9(o)-21.9(d)-6.3(e)-15.6(l)5.9( u)-21.9(n)-6.3(i)-9.7(t)-9.7(.)-6.3( N)-18.5(o)-6.3(t)-9.7(i)-9.7(c)-15.6(e t)-9.7(h)-6.3(at)-25.3( t)-9.7(h)-6.3(e )-15.6(a)-15.6(v)-6.3(er)-17(ag)-21.9(e )-15.6(n)-21.9(-)14.2(g)-6.3(r)-17(a)-15.6(m)5.9( )-15.6(co)-21.9(v)-6.3(e)0(r)-17(a)0(g)-21.9(e)-15.6( )]TJ +T* +0.0008 Tc +0 Tw +[(sc)7.1(or)-9.9(e)7.1(,)0.8( )]TJ +/TT2 1 Tf +2.8594 0 TD +0 Tc +(C)Tj +6.5172 0 0 6.5172 348.1561 118.8273 Tm +(n)Tj +/TT4 1 Tf +9.931 0 0 9.931 351.5699 120.379 Tm +0.0016 Tc +0.2484 Tw +[(, )-15.6(a)7.9(s)0.1( sh)-14(ow)5(n)-14( in )-15.6(e)7.9(q)1.6(u)-14(a)7.9(tion)-14( 5 i)-17.4(s)0.1( a)7.9( )-15.6(r)-9.1(e)7.9(c)-7.7(a)-7.7(l)-1.8(l)13.8( )-15.6(me)7.9(tr)6.5(i)-17.4(c)-7.7( )]TJ +-3.875 -1.5156 TD +0 Tc +0 Tw +( )Tj +ET +313.087 107.965 144 -0.466 re +f +BT +9.931 0 0 9.931 457.0871 105.3273 Tm +( )Tj +6.0517 0 0 6.0517 313.0872 98.9652 Tm +(8)Tj +9 0 0 9 316.1906 94.9308 Tm +0.0014 Tc +0.0072 Tw +[( T)8.8(h)18.6(e num)20.6(ber)6.8( o)-15.8(f)24.1( )-17.3(in)18.6(s)-6(t)3.4(an)18.6(ces)-6( i)20.6(s)-6( 14 \()6.8(11 s)-6(y)18.6(s)-6(t)3.4(e)-20.3(m)37.8(s)-6(,)-7.2( 2 h)18.6(u)1.4(m)20.6(a)-20.3(n)18.6(s)-6(,)-7.2( an)18.6(d 1 )]TJ +-0.3448 -1.1552 TD +0.0008 Tc +0.0078 Tw +[(bas)-6.6(e)-3.6(l)20(i)2.8(n)18(e)-3.6(\))6.2( )-17.3(f)23.5(o)-16.4(r)6.2( th)18(e s)-6.6(i)2.8(ngl)20(e docum)20(e)-20.9(n)18(t tas)-6.6(k)0.8( an)18(d is)-6.6( 16 \()6.2(1)0.8(2)18( s)-6.6(y)18(s)-6.6(t)2.8(e)-20.9(m)37.3(s)-6.6(,)-7.8( 2 )]TJ +0 -1.1379 TD +0.0007 Tc +[(hum)19.9(a)-21(n)17.9(s)-6.7(,)-7.9( an)17.9(d 2 bas)10.5(e)-3.7(lin)17.9(es)-6.7(\))6.1( f)23.4(o)0.7(r)6.1( t)-14.6(h)17.9(e )-17.4(m)19.9(u)0.7(lt)-14.6(i)19.9(-)6.1(doc)-21(um)19.9(e)-21(n)17.9(t tas)-6.7(k)0.7(.)-7.9( )]TJ +ET +endstream +endobj +21 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT11 22 0 R +/TT12 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +/ColorSpace << +/Cs5 12 0 R +>> +>> +endobj +25 0 obj +<< +/Length 65888 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 79.7078 747.8962 Tm +/Cs5 cs 0 0 0 sc +/GS1 gs +0.0007 Tc +0.0079 Tw +[(I)6.1(n)0.7( P)25.3(r)-6.7(oceedings)-6.7( of the)13.5( Human T)5.1(e)13.5(chnology )17.2(C)12.5(onfer)-6.7(ence)13.5( 2003 \()23.4(H)-1.3(L)5.1(T)5.2(-)6.1(N)-4.7(A)8.1(A)8.1(C)-4.7(L)-12.1(-)6.1(2003\))6.1(,)-7.9( M)6.1(a)0.7(y )17.2(27 June)13.5( 1,)9.3( 2003,)9.3( E)8.1(d)0.7(monton,)-7.9( )17.2(Canada )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 736.4135 Tm +0 Tc +0 Tw +( )Tj +0 -28.875 TD +0.0004 Tc +0.0934 Tw +[(inste)6.7(a)-8.9(d of )-15.6(a)6.7( pr)-10.3(e)6.7(c)6.7(i)-3(si)-18.6(on on)-15.2(e)6.7( a)6.7(s)-1.1( )]TJ +/TT2 1 Tf +12.1563 0 TD +0 Tc +0 Tw +(p)Tj +6.5172 0 0 6.5172 197.6389 448.1031 Tm +(n)Tj +/TT4 1 Tf +9.931 0 0 9.931 200.8975 449.6549 Tm +0.0007 Tc +0.093 Tw +[(. S)-5.7(i)-2.7(n)-14.9(c)-8.6(e)-8.6( the)7( de)-8.6(no)-14.9(m)12.9(i)-2.7(n)-14.9(a)7(tor)-10( )]TJ +-12.9844 -1.1563 TD +0.0014 Tc +0.0454 Tw +[(of)6.3( )-15.7(e)7.7(q)1.4(u)-14.2(a)7.7(tion 5)-14.2( is th)-14.2(e)7.7( tot)-17.6(a)-7.9(l)13.6( su)-14.2(m of)-9.3( the)-7.9( nu)-14.2(m)13.6(b)-14.2(e)7.7(r)-9.3( of)-9.3( )]TJ +/TT2 1 Tf +19.4688 0 TD +0.0003 Tc +0 Tw +[(n-)-10.4(gram)]TJ +/TT4 1 Tf +2.9688 0 TD +0.0171 Tc +(s )Tj +-22.4375 -1.1563 TD +0.0012 Tc +0.0301 Tw +[(oc)7.5(c)-8.1(u)1.2(r)-9.5(r)6.1(ing a)7.5(t)-2.2( th)-14.4(e)7.5( mode)-8.1(l)13.4( su)-14.4(mma)-8.1(r)-9.5(y)32.4( )-15.6(side)7.5( i)-17.8(n)1.2(ste)7.5(a)-8.1(d of the)7.5( p)-14.4(e)7.5(e)-8.1(r)-9.5( )]TJ +T* +0.0004 Tc +0.2809 Tw +[(side)6.8( a)6.7(nd on)-15.2(l)-18.6(y)31.6( o)-15.2(n)0.4(e)6.7( )-15.6(m)12.6(o)0.4(d)-15.2(e)-8.9(l)12.6( su)-15.2(mma)6.7(r)-10.3(y)16( )-15.6(is use)6.7(d)0.4( for )-15.6(e)6.7(a)-8.9(c)6.7(h)-15.2( )]TJ +T* +0.002 Tc +0.3261 Tw +[(e)-7.3(v)17.6(a)-7.3(l)-1.4(ua)8.3(tio)-13.6(n; w)5.4(h)2(i)-17(l)14.2(e)8.3( th)-13.6(e)8.3(r)-8.7(e)8.3( c)8.3(o)2(u)-13.6(l)14.2(d b)-13.6(e)8.3( )-15.7(mul)14.2(tip)-13.6(le)8.3( r)6.9(e)-7.3(f)6.9(e)-7.2(r)-8.7(e)8.3(nc)-7.3(e)8.3(s)-15.1( )]TJ +0 -1.1719 TD +0.0005 Tc +0.1245 Tw +[(use)6.9(d)-15.1( in )-15.6(BLEU)-11.7( a)-8.8(nd )]TJ +/TT2 1 Tf +8.2188 0 TD +0 Tc +0 Tw +[(C)-20.5(ount)]TJ +6.5172 0 0 6.5172 178.0872 390.5342 Tm +0.0081 Tc +(clip)Tj +/TT4 1 Tf +9.931 0 0 9.931 188.0182 392.0859 Tm +0 Tc +(\()Tj +/TT2 1 Tf +0.3281 0 TD +-0.0009 Tc +[(n-gra)-16.5(m)]TJ +/TT4 1 Tf +2.9531 0 TD +0.0136 Tc +0.1114 Tw +[(\) )-15.6(c)19.9(o)13.6(ul)25.8(d c)19.9(o)-2(m)10.2(e)4.3( fr)18.5(om)10.2( )]TJ +-14.9687 -1.1563 TD +0 Tc +0.1719 Tw +[(ma)6.3(tc)-9.3(hing di)-19(ff)-10.7(e)6.4(r)-10.7(e)6.3(n)0(t )-15.6(re)-9.3(fe)-9.3(re)-9.3(nc)-9.3(e)6.3( tr)-10.7(a)6.3(n)0(s)-17.1(l)-3.4(a)6.3(tio)-15.6(ns. F)-6.4(u)0(rth)-15.6(e)6.4(r)-10.7(m)-3.4(or)-10.7(e)6.3(,)-15.6( )]TJ +T* +0.0011 Tc +0.1551 Tw +[(inste)7.4(a)-8.2(d of )-15.7(a)7.4( b)-14.5(r)6(e)-8.2(v)1.1(it)-17.9(y)16.7( p)-14.5(e)7.5(n)-14.5(a)7.4(l)13.3(t)-33.6(y)16.7( tha)7.4(t)-2.3( )-15.7(puni)-17.9(she)7.4(s)-0.4( o)-14.5(v)1.1(e)-8.2(r)-9.6(ly)16.7( sho)-14.5(r)6(t)-17.9( )]TJ +T* +0.0008 Tc +0.0773 Tw +[(tra)7.1(n)0.8(s)-16.3(l)-2.6(a)7.2(tions,)-14.8( a)-8.5( br)-9.9(e)-8.5(v)16.4(it)-18.2(y)16.4( )-15.7(bon)-14.8(us, )]TJ +/TT2 1 Tf +12.1875 0 TD +-0.0015 Tc +0 Tw +(BB)Tj +/TT4 1 Tf +1.2188 0 TD +0.0002 Tc +0.0779 Tw +[(, )-15.7(shou)-15.4(l)12.4(d)-15.4( be)-9.1( a)-9.1(w)-12(a)6.5(r)5.1(d)-15.4(e)6.5(d t)-18.8(o)-15.4( )]TJ +-13.4063 -1.1563 TD +0.2498 Tw +[(short)-18.8(e)6.5(r su)-15.4(mma)6.5(ri)-18.8(e)6.5(s)-1.3( tha)6.5(t)-3.2( c)6.5(o)-15.4(nta)6.5(i)-3.2(n e)-9.1(qui)-18.8(va)-9.1(l)12.4(e)6.5(nt c)-9.1(onte)-9.1(n)0.2(t. )-15.6(I)20.7(n)-15.4( )]TJ +T* +-0.0062 Tc +0.0687 Tw +[(fa)-15.5(ct)-9.6(,)-6.2( a )-15.6(l)6(e)0.1(n)-21.8(g)-6.2(t)-9.6(h)-6.2( ad)-6.2(j)-9.6(u)-6.2(s)-7.7(t)-25.2(ed)-6.2( a)-15.5(v)-6.2(e)-15.5(r)-1.3(a)-15.5(g)-6.2(e )-15.6(co)-21.8(v)-6.2(e)0.1(r)-16.9(a)0.1(g)-21.8(e)0.1( s)-7.7(c)0.1(o)-21.8(r)-1.3(e w)-18.4(a)0.1(s)-7.6( u)-6.2(s)-23.3(ed)-21.8( )]TJ +T* +-0.0058 Tc +0.3339 Tw +[(as)-7.3( an)-5.8( a)-15.1(l)6.4(t)-9.2(e)-15.1(rn)-5.8(at)-9.2(i)-24.8(v)-5.8(e p)-5.8(e)-15(rfo)-21.4(r)-16.5(m)-9.2(an)-5.8(c)-15.1(e)0.5( m)-9.2(e)0.6(t)-9.2(r)-0.9(i)-24.8(c)-15.1( )15.6(i)-9.2(n)-5.8( )15.6(D)-18(U)-2.4(C)-10.7( )15.6(2)-5.8(0)-21.4(0)-5.8(2)-5.8(.)-21.4( )]TJ +T* +0 Tc +0.0625 Tw +[(How)-12.2(e)-9.3(ve)6.3(r,)-15.6( w)-12.2(e)6.3( s)-17.1(e)6.3(t th)-15.6(e)6.3( b)-15.6(r)-10.7(e)-9.3(v)15.6(it)-19(y)15.6( b)-15.6(onus)-17.1( \(o)-15.6(r)-10.7( pe)6.3(n)-15.6(a)-9.3(l)12.2(t)-19(y)15.6(\))-10.7( to )-15.6(1 f)-10.7(o)0(r)-10.7( )]TJ +T* +0.0007 Tc +0.1868 Tw +[(a)-8.6(l)12.9(l)12.9( )-15.6(our )-15.6(e)7.1(x)0.7(p)-14.9(e)7(ri)-18.3(me)7(nts in t)-18.3(h)0.7(is pa)-8.6(pe)-8.6(r. )-15.6(I)21.2(n)0.7( )-15.6(summa)-8.6(r)-10(y)16.3(, th)-14.9(e)7( n)-14.9(-)]TJ +T* +0.0019 Tc +0.2012 Tw +[(gr)6.8(a)-7.4(m)14.1( )-15.7(c)8.2(o)-13.7(-)6.8(o)1.9(c)-7.4(c)8.2(u)-13.7(r)6.8(r)-8.8(e)8.2(n)-13.7(c)8.2(e)8.2( st)-17.1(a)8.2(tistic)8.2(s w)-10.3(e)8.2( us)-15.2(e)-7.4( in the)8.2( f)6.8(o)-13.7(ll)14.1(o)-13.7(w)5.3(ing)-13.7( )]TJ +T* +0.0006 Tc +-0.0006 Tw +[(se)6.9(c)6.9(tio)-15(ns a)-8.7(r)5.5(e)-8.7( ba)-8.7(se)6.9(d )-15.6(on th)-15(e)6.9( f)-10.1(o)-15(l)12.8(l)-2.8(owin)-15(g fo)-14.9(r)-10.1(m)12.8(u)-15(l)-2.8(a)-8.7(:)12.8( )]TJ +12.0052 0 0 12.0052 275.0699 252.8963 Tm +0 Tc +0 Tw +(\))Tj +-0.5041 0 TD +(6)Tj +-0.3361 0 TD +(\()Tj +-3.8259 0 TD +-0.0064 Tc +[(lo)-10.5(g)]TJ +-4.3429 0 TD +-0.0066 Tc +(exp)Tj +-3.4252 0 TD +0 Tc +(\))Tj +-0.866 0 TD +(,)Tj +-0.6204 0 TD +(\()Tj +/TT12 1 Tf +11.7621 -0.3878 TD +(\()Tj +0 0.4395 TD +(\()Tj +0 -1.0857 TD +(\))Tj +0 1.7191 TD +(*)Tj +-5.3253 -1.0728 TD +(+)Tj +0 0.4395 TD +(+)Tj +0 -1.0857 TD +(,)Tj +0 1.7191 TD +(-)Tj +/F2 1 Tf +-2.1456 -0.685 TD +()Tj +-2.2232 0 TD +(=)Tj +/TT12 1 Tf +18.0079 0 0 18.0079 191.1216 250.1031 Tm +(!)Tj +/F2 1 Tf +7.0028 0 0 7.0028 196.5527 241.4135 Tm +(=)Tj +/TT2 1 Tf +0.0886 3.5011 TD +(j)Tj +0.5097 -3.5011 TD +(i)Tj +-1.1966 0 TD +(n)Tj +7.3124 1.2187 TD +(n)Tj +-4.3431 0 TD +(n)Tj +12.0052 0 0 12.0052 235.5009 252.8963 Tm +(C)Tj +-2.4946 0 TD +(w)Tj +-5.2477 0 TD +-0.0033 Tc +(BB)Tj +-1.7191 0 TD +0 Tc +(j)Tj +-0.8402 0 TD +(i)Tj +-3.1279 0 TD +-0.0078 Tc +[(Ng)-11.9(r)-6.4(a)-11.9(m)]TJ +/TT4 1 Tf +9.931 0 0 9.931 280.9664 252.8963 Tm +0 Tc +( )Tj +-21.0469 -2.5938 TD +-0.0063 Tc +[(Wh)-21.9(er)-17(e )]TJ +/TT2 1 Tf +3.0469 0 TD +0 Tc +(j)Tj +/TT4 1 Tf +0.2813 0 TD +( )Tj +/F2 1 Tf +0.3906 0 TD +()Tj +/TT4 1 Tf +0.5469 0 TD +( )Tj +/TT2 1 Tf +0.375 0 TD +0.0026 Tc +0.1224 Tw +[(i, i )]TJ +/TT4 1 Tf +1.5781 0 TD +-0.0063 Tc +0 Tw +[(an)-6.3(d)-21.9( )]TJ +/TT2 1 Tf +1.8281 0 TD +0 Tc +(j)Tj +/TT4 1 Tf +0.2812 0 TD +-0.0001 Tc +0.1251 Tw +[( r)-10.8(a)6.2(ng)-15.7(e)6.2( )-15.6(fro)-15.7(m 1 to)-15.7( )-15.6(4, a)6.2(n)-15.7(d )]TJ +/TT2 1 Tf +10.3438 0 TD +0 Tc +0 Tw +(w)Tj +6.5172 0 0 6.5172 264.0527 225.5859 Tm +(n)Tj +/TT4 1 Tf +9.931 0 0 9.931 267.3113 227.1376 Tm +0.0021 Tc +0.1229 Tw +[( is )-15.6(1/\()]TJ +/TT2 1 Tf +2.5469 0 TD +0 Tc +0 Tw +(j)Tj +/TT4 1 Tf +0.2969 0 TD +(-)Tj +/TT2 1 Tf +-22.5156 -1.1719 TD +(i)Tj +/TT4 1 Tf +0.2813 0 TD +-0.0016 Tc +(+1\). )Tj +/TT2 1 Tf +1.9844 0 TD +0.002 Tc +[(Ngra)-13.6(m)]TJ +/TT4 1 Tf +2.7969 0 TD +0.0004 Tc +0.0934 Tw +[(\(1, 4)-15.2(\))5.3( is a)6.7( we)6.7(ig)-15.2(hte)6.7(d)0.4( )-15.6(va)6.7(ri)-18.6(a)-8.9(b)0.4(le)6.7( le)6.7(ngth n)-15.1(-)5.3(gr)-10.3(a)-8.9(m)-3( )]TJ +-5.0625 -1.1563 TD +0.0014 Tc +0.2799 Tw +[(ma)7.7(tc)-7.9(h sc)-7.9(or)-9.3(e)7.7( si)-17.6(m)13.6(i)-17.6(l)13.6(a)-7.9(r)6.3( to th)-14.2(e)7.7( )-15.6(I)6.3(B)-3.5(M )-15.6(BLEU)4.8( s)-15.7(c)7.7(or)-9.3(e)7.7(;)-2( )-15.6(w)4.8(h)1.4(i)-17.6(l)-2(e)-7.9( )]TJ +/TT2 1 Tf +T* +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7969 0 TD +0 Tc +(\()Tj +/TT2 1 Tf +0.3281 0 TD +(k)Tj +/TT4 1 Tf +0.4375 0 TD +(, )Tj +/TT2 1 Tf +0.5781 0 TD +(k)Tj +/TT4 1 Tf +0.4375 0 TD +-0.0028 Tc +0.0653 Tw +[(\), i)-6.2(.)-18.4(e. )]TJ +/TT2 1 Tf +2.4375 0 TD +0.0034 Tc +0 Tw +(i )Tj +/TT4 1 Tf +0.5938 0 TD +-0.0015 Tc +(= )Tj +/TT2 1 Tf +0.875 0 TD +0.0034 Tc +(j )Tj +/TT4 1 Tf +0.5937 0 TD +-0.0015 Tc +(= )Tj +/TT2 1 Tf +0.875 0 TD +0 Tc +(k)Tj +/TT4 1 Tf +0.4375 0 TD +-0.0063 Tc +0.0688 Tw +[(,)-6.3( i)-9.7(s)-7.8( s)-7.8(i)-25.3(m)5.9(p)-21.9(l)-25.3(y)24.9( t)-25.3(h)-21.9(e a)-15.6(v)-6.3(er)-17(ag)-21.9(e )]TJ +/TT2 1 Tf +9.5938 0 TD +0 Tc +0 Tw +(k)Tj +/TT4 1 Tf +0.4531 0 TD +-0.0025 Tc +[(-gr)-13.2(a)-11.8(m)-5.9( )]TJ +-20.4375 -1.1563 TD +0.0004 Tc +-0.0004 Tw +[(c)6.7(o)-15.2(ve)6.7(r)-10.3(a)6.7(g)-15.2(e)6.7( sc)-8.9(or)-10.3(e)6.7( )]TJ +/TT2 1 Tf +6.25 0 TD +0 Tc +0 Tw +(C)Tj +6.5172 0 0 6.5172 140.6906 179.4997 Tm +(k)Tj +/TT4 1 Tf +9.931 0 0 9.931 143.6389 181.0514 Tm +(. )Tj +-7.2188 -1.1563 TD +0.0016 Tc +0.0608 Tw +[(W)7.9(ith th)-14(e)7.9(s)0.1(e)7.9( )-15.7(f)6.5(o)-14(r)-9.1(m)13.8(u)-14(l)-1.8(a)7.9(s)0.1(, w)-10.6(e)7.9( d)-14(e)7.9(s)-15.5(c)7.9(r)6.5(i)-1.8(b)-14(e)7.9( ho)-14(w)-10.6( to e)-7.7(v)1.6(a)-7.7(l)13.8(ua)7.9(t)-17.4(e)7.9( th)-14(e)-7.7(m)-1.8( )]TJ +T* +0.0012 Tc +-0.0012 Tw +[(in the)7.5( n)-14.4(e)7.5(xt s)-15.9(e)-8(c)7.5(tion. )]TJ +/TT6 1 Tf +11.9483 0 0 11.9483 71.9492 132.6376 Tm +0 Tc +0 Tw +(4)Tj +/TT8 1 Tf +0.5065 0 TD +( )Tj +/TT6 1 Tf +1.1558 0 TD +0.0055 Tc +0.238 Tw +[(E)10.2(v)12(al)10.6(uati)10.6(ons)5( of)-12.1( N-gr)7.8(am)20.3( Co-O)4.1(c)7.8(c)7.8(u)3.2(r)7.8(r)-5.2(e)7.8(n)3.2(c)7.8(e)-5.2( )]TJ +0.026 -1.1429 TD +0.0031 Tc +0 Tw +[(Me)5.4(tr)5.4(i)8.2(c)5.4(s )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 98.0342 Tm +0.0023 Tc +0.3883 Tw +[(I)7.2(n)2.3( or)7.2(d)-13.3(e)8.6(r)7.2( to e)-7(v)2.3(a)-7(l)14.5(u)-13.3(a)8.6(te)8.6( th)-13.3(e)8.6( e)8.6(f)-8.4(f)7.2(e)-7(c)8.6(t)-1.1(i)-16.7(v)2.3(e)8.6(n)-13.3(e)-7(ss of)7.2( a)8.6(u)2.3(to)-13.3(ma)8.6(tic)-7( )]TJ +0 -1.1562 TD +0.0015 Tc +-0.0015 Tw +[(e)-7.8(v)17.1(a)-7.8(l)-1.9(ua)7.8(tio)-14.1(n )-15.6(m)13.7(e)7.8(t)-17.5(r)6.4(ic)7.8(s,)-14.1( w)-10.7(e)7.8( p)-14.1(r)6.4(opos)-15.6(e)7.8( tw)-10.7(o c)-7.8(r)6.4(it)-17.5(e)7.8(r)6.5(i)-17.5(a)-7.8(:)13.7( )]TJ +24.2813 49.9688 TD +0 Tc +0 Tw +(1.)Tj +/TT10 1 Tf +0.75 0 TD +( )Tj +/TT4 1 Tf +1.0625 0 TD +0.0019 Tc +0.5293 Tw +[(A)5.3(u)1.9(to)-13.7(ma)8.2(tic)-7.4( e)-7.4(v)1.9(a)-7.4(l)14.1(u)-13.7(a)8.2(tions)-15.2( shou)-13.7(ld )-15.7(c)8.2(o)1.9(r)-8.8(r)6.8(e)-7.4(l)-1.5(a)8.2(t)-1.5(e)-7.4( high)-13.7(ly)17.5(,)-29.4( )]TJ +0 -1.1562 TD +0.0015 Tc +0.4048 Tw +[(positi)-17.5(v)17.1(e)-7.8(ly)17.1(, a)7.8(n)-14.1(d )15.7(c)7.8(o)-14.1(nsiste)7.8(nt)-17.5(l)-17.5(y)17.2( )15.7(with hu)-14.1(ma)7.8(n a)7.9(sse)-7.8(ss)-15.6(-)]TJ +T* +0.002 Tc +0 Tw +[(me)8.3(nts. )]TJ +-1.8125 -1.1563 TD +0 Tc +(2.)Tj +/TT10 1 Tf +0.75 0 TD +( )Tj +/TT4 1 Tf +1.0625 0 TD +0.0021 Tc +0.0291 Tw +[(T)-12.1(h)2.1(e)8.4( sta)8.4(tistic)-7.2(a)-7.2(l)14.3( signif)7(i)-16.9(c)8.4(a)-7.2(nc)-7.2(e)8.5( of)7( )-15.7(a)8.4(u)2.1(to)-13.5(ma)8.4(ti)-16.9(c)8.4( e)-7.2(v)2.1(a)-7.2(l)14.3(u)-13.5(a)8.4(tions)-15( )]TJ +0 -1.1562 TD +0.0007 Tc +0.0618 Tw +[(shou)-14.9(l)12.9(d)0.7( b)-14.9(e)7( )-15.6(a)7( goo)-14.9(d pr)-10(e)7(d)0.7(i)-18.3(c)7(tor )-15.6(of th)-14.9(e)7( st)-18.3(a)7(tistic)7(a)-8.6(l)12.9( sig)-14.9(n)0.7(ifi)-18.3(-)]TJ +T* +-0.0007 Tw +[(c)7(a)7(n)-14.9(c)-8.6(e)7.1( of)-10( hu)-14.9(ma)7(n )-15.6(a)7(s)-0.8(s)-16.4(e)7(ss)-16.4(m)12.9(e)-8.6(nts with )-15.6(high )-15.6(re)-8.6(l)12.9(i)-18.3(a)7(b)0.7(i)-18.3(l)12.9(it)-18.3(y)16.3(.)0.7( )]TJ +-1.8125 -1.1563 TD +0.0005 Tc +0.0151 Tw +[(T)-13.7(h)0.5(e)6.8( first c)6.8(r)5.4(it)-18.5(e)6.8(r)5.4(io)-15.1(n e)6.8(n)0.5(su)-15.1(re)6.8(s w)-11.7(h)0.5(e)-8.8(n)0.5(e)-8.8(v)0.5(e)6.8(r)5.4( )-15.6(a)6.8( hu)-15.1(m)12.7(a)6.8(n r)-10.2(e)-8.8(c)6.9(ogni)-18.5(z)-8.8(e)6.8(s)-16.6( )]TJ +T* +0.0016 Tc +0.7172 Tw +[(a)7.9( good su)-14(mma)7.9(r)-24.8(y)32.8(/t)-17.4(ra)-7.7(ns)-15.5(l)13.8(a)7.9(tio)-14(n/s)-15.5(y)17.2(ste)-7.7(m)-17.4(, a)7.9(n)1.6( a)7.9(u)1.6(to)-14(ma)7.9(tic)-7.7( )]TJ +T* +0.0017 Tc +0.0921 Tw +[(e)-7.6(v)17.3(a)-7.6(l)-1.7(ua)8(tio)-13.9(n w)5.1(i)-17.3(ll)13.9( do the)8( s)-15.4(a)-7.6(me)8( w)5.1(ith hig)-13.9(h)-13.9( pr)6.6(ob)-13.9(a)8(b)1.7(i)-17.3(l)13.9(it)-17.3(y)17.3(.)1.7( T)-12.5(h)1.7(is )]TJ +T* +-0.0063 Tc +0.1157 Tw +[(en)-6.3(a)-15.6(b)-21.9(l)5.9(e)0(s)-7.8( u)-21.9(s)-7.8( t)-9.7(o)-6.3( u)-6.3(s)-23.4(e an)-6.3( )-15.6(au)-6.3(t)-9.7(o)-21.9(m)-9.7(a)0(t)-9.7(i)-25.3(c e)-15.6(v)-6.3(a)-15.6(l)5.9(u)-21.9(a)-15.6(t)-9.7(i)-9.7(o)-6.3(n)-6.3( p)-6.3(r)-1.4(o)-21.9(c)0(e)-15.6(d)-6.3(u)-6.3(r)-17(e i)-9.7(n)-21.9( )]TJ +T* +0.0016 Tc +0.264 Tw +[(pla)7.9(c)-7.7(e)7.9( o)-14(f)6.5( hu)-14(ma)7.9(n a)-7.7(sse)7.9(ss)-15.5(me)7.9(nts to )-15.7(c)7.9(o)-14(mpa)8(r)-9.1(e)7.9( s)-15.5(y)17.2(st)-17.4(e)-7.7(m)13.8( p)-14(e)8(r)-9.1(-)]TJ +T* +-0.0004 Tc +0.0004 Tw +[(for)-11.1(m)-3.8(a)5.9(n)-16(c)5.9(e)6(,)-16( a)5.9(s)-1.9( i)-19.4(n)-0.4( the)-9.7( N)-12.6(I)20.1(S)-6.8(T)-14.6( MT)-14.6( e)-9.7(v)-0.4(a)-9.7(l)11.8(u)-16(a)5.9(tio)-16(ns \(N)-12.6(IS)-6.8(T)-14.6( 2002)-16(\). )]TJ +T* +0.0018 Tc +0.1701 Tw +[(T)-12.4(h)1.8(e)8.1( se)-7.5(c)8.1(ond )-15.6(c)8.1(r)6.7(it)-17.2(e)8.1(r)6.7(io)-13.8(n is c)-7.5(r)6.7(itic)-7.5(a)-7.5(l)14( in int)-17.2(e)8.1(r)6.7(p)-13.8(r)6.7(e)8.1(tin)-13.8(g the)8.1( si)-17.1(g)-13.8(-)]TJ +T* +0.0091 Tc +0.1159 Tw +[(n)9.1(i)5.7(f)14(i)5.7(ca)15.4(n)-6.5(c)15.4(e )15.6(o)9.1(f)-1.6( )15.6(au)9.1(t)5.7(o)-6.5(m)5.7(a)15.4(t)5.7(i)5.7(c)15.4( ev)9.1(al)21.3(u)-6.5(a)15.4(t)5.7(i)5.7(o)9.1(n)9.1( re)15.4(s)7.6(u)-6.5(l)21.3(t)5.7(s)7.6(.)9.1( Fo)9.1(r)14( e)15.4(x)-6.5(am)21.3(p)-6.5(l)5.7(e)15.4(,)-6.5( )]TJ +T* +-0.0061 Tc +0.1624 Tw +[(i)-9.5(f)-1.2( an)-6.1( au)-6.1(t)-25.1(o)-21.7(m)6.1(a)0.2(t)-9.5(i)-25.1(c e)-15.4(v)-6.1(a)-15.4(l)6.1(u)-21.7(a)0.2(t)-9.5(i)-9.5(o)-6.1(n)-6.1( s)-7.6(h)-6.1(o)-21.7(w)-2.7(s)-7.6( t)-9.5(h)-6.1(e)-15.4(r)-16.8(e i)-9.5(s)-7.6( a s)-7.6(i)-9.5(g)-6.1(n)-6.1(i)-9.5(fi)-25.1(can)-6.1(t)-25.1( )]TJ +0 -1.2188 TD +-0.0063 Tc +0.1313 Tw +[(d)-6.3(i)-9.7(ff)-17(er)-17(en)-21.9(ce b)-6.3(e)0(t)-25.3(w)-2.9(e)-15.6(e)0(n)-6.3( ru)-6.3(n)-21.9( A)12.7( an)-6.3(d)-21.9( )15.6(ru)-6.3(n)-21.9( B a)-15.6(t)-9.7( )]TJ +/F2 1 Tf +16.6094 0 TD +0 Tc +0 Tw +()Tj +/TT4 1 Tf +0.6406 0 TD +0.0002 Tc +0.1092 Tw +[( = 0.05)-15.4( using)-15.4( )]TJ +-17.25 -1.1719 TD +0.0017 Tc +0 Tw +[(the)8( )]TJ +/TT2 1 Tf +1.5312 0 TD +0 Tc +(z)Tj +/TT4 1 Tf +0.4062 0 TD +-0.0205 Tc +0.083 Tw +[(-t)-23.9(e)-14.2(s)-22(t)-23.9( \()]TJ +/TT2 1 Tf +2.3438 0 TD +0 Tc +0 Tw +(t)Tj +/TT4 1 Tf +0.2969 0 TD +0.0007 Tc +0.0618 Tw +[(-te)7(s)-0.8(t o)-14.9(r)5.6( bootstr)-10(a)7(p r)-10(e)7(s)-16.4(a)-8.5(m)12.9(p)-14.9(l)12.9(i)-2.7(n)-14.9(g)0.7(\), how do)-14.9(e)7(s)-0.8( this)-16.4( )]TJ +-4.5781 -1.1563 TD +-0.0061 Tc +0.0373 Tw +[(t)-9.5(r)-1.2(an)-6.1(s)-23.2(l)-9.5(at)-9.5(e t)-9.5(o)-6.1( )-15.4(r)-16.8(ea)-15.4(l)-9.5()0.2( s)-7.6(i)-9.5(g)-6.1(n)-6.1(i)-25.1(fi)-9.5(c)-15.4(a)0.2(n)-21.7(ce,)-6.1( i)-9.5(.)-21.7(e.)-6.1( t)-9.5(h)-6.1(e )-15.7(s)-7.6(t)-9.5(at)-9.5(i)-9.5(s)-7.6(t)-9.5(i)-9.5(c)-15.4(al)6.1( s)-7.6(i)-25.1(g)-6.1(n)-6.1(i)-9.5(fi)-25.1(-)]TJ +T* +-0.0055 Tc +0.0836 Tw +[(can)-21.1(c)-14.8(e)0.8( i)-8.9(n)-5.5( )-15.7(a h)-21.1(u)-21.1(m)6.7(a)-14.8(n)-5.5( )-15.7(as)-7(s)-7(e)0.8(s)-6.9(s)-22.6(m)-8.9(e)0.8(n)-5.5(t)-24.5( o)-5.5(f)-16.2( ru)-21.1(n)-5.5( )-15.7(A an)-5.5(d)-21.1( ru)-21.1(n)-5.5( )-15.7(B)-10.4(?)0.8( )-15.7(I)15(d)-21.1(e)-14.8(-)]TJ +T* +0.0018 Tc +0.2013 Tw +[(a)-7.5(l)14(l)-17.2(y)17.4(, )-15.7(w)5.2(e)-7.5( w)5.2(o)-13.8(u)-13.8(l)14(d )-15.7(l)14(i)-1.6(k)-13.8(e)8.1( th)-13.8(e)8.1(r)-8.9(e)8.1( t)-17.2(o)1.8( b)-13.8(e)8.2( )-15.7(a)8.1( p)-13.8(o)-13.8(s)0.3(itive)8.1( )-15.7(c)8.1(o)1.8(r)-8.9(r)6.7(e)-7.5(l)-1.6(a)8.1(tion)-13.8( )]TJ +T* +0.0016 Tc +0.139 Tw +[(be)7.9(tw)-10.6(e)-7.7(e)7.9(n th)-14(e)-7.7(m)13.8(. )-15.7(I)6.5(f)6.5( this c)-7.7(a)7.9(n b)-14(e)7.9( )-15.7(a)7.9(sse)-7.7(r)6.5(t)-1.8(e)-7.7(d)-14( w)5(ith str)6.5(o)1.6(n)-14(g)1.6( r)-9.1(e)-7.7(l)13.9(i)-17.4(-)]TJ +T* +0.0014 Tc +0.1079 Tw +[(a)7.7(b)1.4(i)-17.6(l)13.6(it)-17.6(y)17( )-15.7(\()6.3(h)1.4(igh)-14.2( r)-9.3(e)7.7(c)-7.9(a)-7.9(l)-2(l)13.6( )-15.7(a)7.7(n)1.4(d)-14.2( pr)-9.3(e)-7.9(c)7.7(ision\))6.3(,)-14.2( th)-14.2(e)-7.9(n)1.4( w)-10.8(e)7.7( )-15.7(c)7.7(a)-7.9(n us)-15.7(e)7.7( t)-17.6(h)1.4(e)-7.9( )]TJ +T* +0.0019 Tc +0.1387 Tw +[(a)8.2(u)1.9(to)-13.7(ma)8.2(tic)8.2( e)-7.4(v)1.9(a)-7.4(l)14.1(ua)8.2(ti)-17.1(on )15.6(to a)8.2(ssist )15.6(s)-15.2(y)17.5(st)-17.1(e)-7.4(m)14.1( de)-7.4(ve)-7.4(l)14.1(o)1.9(p)-13.7(m)-1.5(e)8.2(n)1.9(t a)8.2(n)1.9(d)-13.7( )]TJ +0 -1.1719 TD +0.0006 Tc +-0.0006 Tw +[(to be)6.9( )-15.6(re)-8.7(a)6.9(s)-0.9(on)-15(a)6.9(b)-15(ly)16.2( )-15.6(sur)-10.1(e)6.9( th)-15(a)6.9(t)-2.8( w)-11.6(e)6.9( h)-15(a)-8.7(ve)6.9( )-15.6(ma)6.9(d)-15(e)6.9( pr)-10(ogr)-10.1(e)6.9(ss. )]TJ +/TT6 1 Tf +11.9483 0 0 11.9483 313.0872 295.4135 Tm +0.0065 Tc +0 Tw +[(4.)9.7(1)]TJ +/TT8 1 Tf +1.2597 0 TD +0 Tc +( )Tj +/TT6 1 Tf +11.0172 0 0 11.0172 341.4837 295.4135 Tm +0.0057 Tc +-0.0022 Tw +[(C)9.6(o)12.7(rrel)15.9(atio)12.7(n)12.6( )14.1(with)12.6( H)8.9(u)12.6(m)7.7(a)-1.3(n)12.6( A)9.6(s)14.6(se)12.9(ssm)21.8(en)12.6(ts )]TJ +/TT4 1 Tf +9.931 0 0 9.931 313.0872 277.7238 Tm +0.0009 Tc +0.1397 Tw +[(As st)-18.1(a)7.2(t)-2.5(e)7.2(d)-14.7( in S)-21.1(e)7.2(c)7.2(tio)-14.7(n 3,)-14.7( dir)-9.8(e)-8.4(c)7.2(t)-2.5( a)-8.4(p)0.9(p)-14.7(l)13.1(ic)-8.4(a)7.2(t)-18.1(ion of)-9.8( )-15.7(BLEU )-15.7(on)-14.7( )]TJ +0 -1.1563 TD +-0.0001 Tc +0.0157 Tw +[(the)6.2( DUC 20)-15.7(01 da)6.2(t)-19.1(a)6.2( show)-12.3(e)6.2(d)-0.1( pr)-10.8(o)-15.7(m)12.1(ising )-15.7(re)6.2(su)-15.7(l)12.1(t)-3.5(s. H)-12.3(o)-0.1(w)-12.3(e)-9.4(ve)6.2(r,)-15.7( )]TJ +T* +0.0015 Tc +0.3266 Tw +[(BLEU)-10.7( )15.6(is a)7.8( pr)-9.2(e)7.8(c)7.8(i)-1.9(sio)-14.1(n)-14.1(-)22(b)-14.1(a)7.8(s)-15.6(e)7.8(d me)7.8(tr)6.4(i)-17.5(c)7.8( w)4.9(h)1.5(i)-17.5(l)13.7(e)-7.8( )15.6(the)-7.8( )15.6(hu)-14.1(ma)-7.8(n)-14.1( )]TJ +T* +0.0009 Tc +0.1397 Tw +[(e)-8.4(v)16.5(a)-8.4(l)-2.5(ua)7.2(tio)-14.7(n prot)-18.1(oc)7.2(o)-14.7(l)13.1( in )-15.7(DUC is )-15.7(e)7.2(s)-0.6(s)-16.2(e)7.3(nti)-18.1(a)-8.4(l)13.1(l)-18.1(y)16.5( r)-9.8(e)7.2(c)-8.4(a)-8.4(ll-)21.4(b)-14.7(a)7.2(s)-16.2(e)7.2(d.)-14.7( )]TJ +T* +0.0772 Tw +[(W)7.2(e)7.2( th)-14.7(e)-8.4(r)5.8(e)-8.4(f)5.8(or)-9.8(e)7.2( pr)-9.8(e)-8.4(f)5.8(e)-8.4(r)5.8( the)7.2( )-15.7(me)7.2(tri)-18.1(c)7.2( gi)-18.1(ve)7.2(n b)-14.7(y)16.5( )-15.7(e)7.2(q)0.9(u)-14.7(a)7.2(tion 6 )-15.7(a)7.2(n)0.9(d)-14.7( )]TJ +T* +0.0004 Tc +0.0465 Tw +[(use)6.7( it in )-15.6(a)-8.9(l)-3(l)12.6( ou)-15.2(r e)-8.9(xpe)-8.9(ri)-18.6(m)12.6(e)-8.9(nts. U)-11.8(s)-1.1(ing D)-11.8(U)3.8(C 200)-15.2(1 da)6.7(t)-18.6(a)6.7(, )-15.6(w)-11.7(e)-8.9( )]TJ +T* +0.0093 Tc +0.0845 Tw +[(c)15.6(o)-6.3(m)21.5(p)9.3(u)9.3(t)-9.7(e)15.6( av)24.9(er)14.2(ag)9.3(e)15.6( )]TJ +/TT2 1 Tf +7.2344 0 TD +0.0205 Tc +0 Tw +[(Ng)20.5(r)19(a)20.5(m)]TJ +/TT4 1 Tf +2.8125 0 TD +-0.002 Tc +0.0801 Tw +[(\(1,4)-17.6(\) s)-19.1(c)4.3(or)-12.7(e)4.3(s)-3.5( f)-12.7(o)-2(r e)-11.3(a)-11.3(c)4.3(h p)-17.6(e)4.3(e)-11.3(r)2.9( s)-19.1(y)13.7(s)-19.1(-)]TJ +-10.0469 -1.1563 TD +0.0019 Tc +0.2325 Tw +[(te)-7.4(m)14.1( )15.6(a)8.2(t)-1.5( dif)-8.8(f)6.8(e)-7.3(r)6.8(e)8.2(n)1.9(t)-17.1( )15.6(su)-13.7(mma)8.2(r)-8.8(y)17.5( siz)-7.4(e)8.2(s a)8.2(nd r)6.8(a)8.2(n)-13.7(k)1.9( )15.6(s)-15.2(y)17.5(st)-17.1(e)-7.4(m)14.1(s a)8.3(c)-7.4(-)]TJ +T* +-0.0061 Tc +0.6936 Tw +[(co)-6.1(r)-16.8(d)-6.1(i)-9.5(n)-6.1(g)-6.1( t)-9.5(o)-6.1( t)-9.5(h)-6.1(ei)-25.1(r s)-7.6(c)0.2(o)-21.7(r)-1.2(e)-15.4(s)-7.6(.)-6.1( W)-15.4(e)0.2( t)-9.5(h)-6.1(e)-15.4(n)-6.1( co)-21.6(m)6.1(p)-21.7(ar)-16.8(e t)-9.5(h)-6.1(e)-31( )]TJ +/TT2 1 Tf +T* +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7969 0 TD +0 Tc +0.1563 Tw +[(\(1,4)-15.6(\) ra)-9.3(nking with th)-15.6(e)6.3( hu)-15.6(ma)6.3(n r)-10.7(a)6.3(nking)-15.5(. F)9.3(i)-3.4(gu)-15.6(r)-10.7(e)6.3( 2)-15.6( )]TJ +-2.7969 -1.1563 TD +0.0004 Tc +0.2652 Tw +[(shows )15.6(th)-15.2(e)6.7( re)6.7(su)-15.2(l)12.6(t)-3( of DUC 2001 mu)-15.2(l)12.6(t)-18.6(i-doc)-8.9(u)-15.2(m)12.6(e)-8.9(n)0.4(t )15.6(d)-15.2(a)6.7(ta)6.7(.)-15.2( )]TJ +T* +0.0006 Tc +0.4994 Tw +[(S)-5.7(t)-2.8(opwor)-10.1(ds a)-8.7(r)5.5(e)6.9( ig)-15(nor)-10.1(e)6.9(d)0.6( d)-15(u)0.6(ring th)-15(e)-8.7( c)6.9(o)-14.9(m)12.8(put)-18.4(a)6.9(tion o)-15(f)-10.1( )]TJ +/TT2 1 Tf +T* +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7969 0 TD +-0.0001 Tc +0.0625 Tw +[(\(1,4)-15.7(\) sc)6.2(o)-15.7(r)4.8(e)6.2(s)-1.5( a)-9.4(nd wo)-15.7(rds a)-9.4(r)4.8(e)6.2( st)-19.1(e)-9.4(mme)6.2(d using a)6.2( P)-6.5(o)-15.7(r)-10.8(-)]TJ +-2.7969 -1.1563 TD +0.2814 Tw +[(te)6.2(r st)-19.1(e)-9.4(mme)6.2(r)-10.8( \(P)-6.5(o)-15.7(r)4.8(te)-9.4(r 1)-15.7(980\))-10.8(. T)-14.3(h)-0.1(e)-9.4( )]TJ +/TT2 1 Tf +14.1719 0 TD +0 Tc +0 Tw +(x)Tj +/TT4 1 Tf +0.4531 0 TD +0.0018 Tc +0.2795 Tw +[(-)6.7(a)8.1(x)-13.8(i)-1.6(s is the)-7.5( hu)-13.8(ma)-7.5(n)-13.8( )]TJ +-14.625 -1.1563 TD +0.0156 Tc +0.6719 Tw +[(r)20.5(a)21.9(nk)15.6(i)12.2(n)15.6(g)15.6( a)21.9(n)15.6(d )15.6(t)12.2(h)15.6(e)6.3( )]TJ +/TT2 1 Tf +8.5312 0 TD +0 Tc +0 Tw +(y)Tj +/TT4 1 Tf +0.4531 0 TD +0.0004 Tc +0.6715 Tw +[(-a)6.7(xis)-16.7( gi)-18.6(ve)6.7(s th)-15.2(e)6.7( )-15.6(c)6.7(o)0.4(r)-10.3(r)5.3(e)6.8(s)-16.7(pondin)-15.2(g)-15.2( )]TJ +/TT2 1 Tf +-8.9844 -1.1563 TD +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7969 0 TD +-0.0037 Tc +0.0818 Tw +[(\(1,4)-19.3(\) r)-14.4(a)2.6(nki)-7.1(n)-19.3(g)-3.7(s)-5.2( fo)-19.3(r s)-5.2(u)-19.3(m)-7.1(m)-7.1(a)-13(ri)-7.1(es)-5.2( )-15.7(of)-14.4( di)-7.1(ff)-14.4(er)-14.4(en)-19.3(ce s)-5.2(i)-22.7(z)-13(e)2.6(s)-5.2(.)-19.3( )]TJ +-2.7969 -1.1719 TD +0.0007 Tc +0.0931 Tw +[(T)-13.5(h)0.7(e)7( stra)7(ig)-14.9(ht l)12.9(i)-18.3(ne)7( )-15.6(ma)7(r)-10(k)0.7(e)-8.6(d)0.7( b)-14.9(y)16.3( )-15.6(AvgC is t)-18.3(h)0.7(e)7( r)-10(a)7(nki)-18.3(ng gi)-18.3(ve)7(n)-14.9( )]TJ +0 -1.1562 TD +0.1712 Tw +[(b)-14.9(y)16.3( hu)-14.9(ma)7(n )-15.6(a)7(s)-0.8(s)-16.4(e)7(ss)-16.4(me)7(nt. )-15.5(F)10(o)-14.9(r e)-8.6(x)0.7(a)-8.6(m)-2.7(p)-14.9(l)12.9(e)7(,)0.7( )-15.6(a)7( s)-16.4(y)16.3(st)-18.3(e)-8.6(m)12.9( )-15.6(a)7(t)-2.7( \()-10(5)0.7(,8)-14.9(\))-10( )]TJ +ET +1 1 1 sc +309.984 691.103 225 -99 re +f +BT +9.931 0 0 9.931 317.1216 678.2238 Tm +0 0 0 sc +-0.0012 Tc +0.2825 Tw +[(T)-15.4(a)5.1(ble)5.1( 1. S)-7.6(p)-1.2(e)-10.5(a)-10.5(r)-11.9(m)11(a)-10.5(n ra)-10.5(nk or)-11.9(de)-10.5(r c)5.1(o)-16.8(rr)-11.9(e)-10.5(l)-4.6(a)5.1(tion c)-10.4(o)-1.2(e)-10.5(ffi)-20.2(-)]TJ +T* +0.0005 Tc +0.6401 Tw +[(c)6.8(i)-2.9(e)6.8(n)0.5(ts)-16.6( of)-10.2( dif)-10.2(f)-10.2(e)6.8(r)-10.2(e)6.8(nt )-15.7(DUC)-20( 200)-15.1(1 d)-15.1(a)6.8(ta)-8.8( be)6.8(t)-18.5(w)3.9(e)-8.8(e)6.8(n)-15.1( )]TJ +/TT2 1 Tf +T* +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7969 0 TD +-0.0012 Tc +0.1106 Tw +[(\(1, 4)-16.8(\))]TJ +/TT2 1 Tf +6.5172 0 0 6.5172 367.5526 653.7065 Tm +0 Tc +0 Tw +(n)Tj +/TT4 1 Tf +9.931 0 0 9.931 370.8112 655.2583 Tm +0.0011 Tc +0.1083 Tw +[( r)-9.6(a)7.4(nkin)-14.5(g)1.1(s )-15.6(a)7.4(nd h)-14.5(u)-14.5(m)13.3(a)-8.2(n)1.1( r)-9.6(a)7.4(n)-14.5(k)1.1(ings in)-14.5(c)7.4(l)-2.3(ud)-14.5(-)]TJ +-5.4062 -1.1563 TD +-0.0013 Tc +0.1888 Tw +[(ing \(S)-23.3(\) )-15.6(a)5(n)-1.3(d)-16.9( e)5.1(x)-16.9(c)-10.6(l)10.9(udin)-16.9(g)-1.3( )-15.6(\(S)-7.7(X\))-12( stop)-16.9(wo)-16.9(rd)-16.9(s. S)-7.7(D)-13.4(-100)-16.9( is )]TJ +T* +0 Tc +0.1875 Tw +[(for sing)-15.6(le)6.3( do)-15.6(c)6.4(u)-15.6(me)6.3(nt su)-15.6(mma)6.3(ri)-19(e)6.3(s)-1.5( of 10)-15.6(0 words )-15.6(a)6.3(n)0(d)-15.6( )]TJ +T* +0.0001 Tc +0.1405 Tw +[(MD)-12.1(-50, )15.6(1)-15.5(00, 200,)-15.5( )15.6(a)6.4(n)-15.5(d )15.6(40)-15.5(0 a)6.4(r)-10.6(e)6.4( for)-10.6( mul)12.3(t)-3.3(i)-18.8(-)5(doc)-9.2(u)-15.5(m)12.3(e)-9.2(n)0.1(t )]TJ +T* +0.0003 Tc +0.0309 Tw +[(summa)-9(rie)6.6(s)-16.8( of)-10.4( 50,)-15.3( 100)-15.3(, 20)-15.3(0, )-15.7(a)6.6(n)0.3(d)-15.3( 400)-15.3( w)-11.9(o)0.3(rds.)-15.3( MD)-11.8(-All)-18.7( )]TJ +0 -1.1719 TD +0.0097 Tc +0 Tw +[(av)25.3(era)]TJ +ET +q +1 i +317.122 595.672 96.983 11.017 re +W n +BT +9.931 0 0 9.931 338.6907 597.6893 Tm +0 Tc +(g)Tj +ET +Q +BT +9.931 0 0 9.931 343.6563 597.6893 Tm +0.0015 Tc +-0.0015 Tw +[(e)7.8(s)-15.6( r)-9.2(e)7.8(su)-14.1(l)13.7(t)-1.9(s f)-9.2(r)6.4(o)-14.1(m)13.7( s)-15.6(u)-14.1(mma)7.8(r)6.4(i)-1.9(e)-7.8(s)0( of)6.4( )-15.6(a)-7.8(l)-1.9(l)13.7( )-15.6(siz)7.8(e)7.8(s)0(.)]TJ +ET +1 1 1 sc +92.587 713.138 192.259 -135.931 re +f +/Cs5 CS 0 0 0 SC +0 J 0 j 0.155 w 10 M [2.88 2.88 2.88 2.88 2.88 2.88 2.88 2.88 ]0 d +1 i +92.587 586.982 m +284.846 586.982 l +92.587 596.603 m +284.846 596.603 l +92.587 606.379 m +284.846 606.379 l +92.587 616.155 m +284.846 616.155 l +92.587 625.776 m +284.846 625.776 l +92.587 635.551 m +284.846 635.551 l +92.587 645.017 m +284.846 645.017 l +92.587 654.793 m +284.846 654.793 l +92.587 664.724 m +284.846 664.724 l +S +q +92.587 576.12 192.414 137.948 re +94.294 667.362 43.914 43.603 re +W* n +92.587 674.189 m +284.846 674.189 l +92.587 683.965 m +284.846 683.965 l +92.587 693.896 m +284.846 693.896 l +92.587 703.362 m +284.846 703.362 l +S +Q +92.587 713.138 m +284.846 713.138 l +S +q +91.656 577.051 194.276 136.086 re +94.294 667.362 43.914 43.603 re +W* n +106.242 713.138 m +106.242 577.207 l +120.053 713.138 m +120.053 577.207 l +133.863 713.138 m +133.863 577.207 l +S +Q +147.518 713.138 m +147.518 577.207 l +161.329 713.138 m +161.329 577.207 l +175.139 713.138 m +175.139 577.207 l +188.794 713.138 m +188.794 577.207 l +202.294 713.138 m +202.294 577.207 l +216.104 713.138 m +216.104 577.207 l +229.915 713.138 m +229.915 577.207 l +243.57 713.138 m +243.57 577.207 l +257.38 713.138 m +257.38 577.207 l +271.035 713.138 m +271.035 577.207 l +284.846 713.138 m +284.846 577.207 l +S +q +0.9591 0 0 -1.0426 0 0 cm +1 J 1 j 0.247 w []0 d +96.535 -683.973 200.457 130.372 re +S +Q +1 J 1 j []0 d +92.587 713.138 m +92.587 577.207 l +91.656 577.207 m +92.587 577.207 l +91.656 586.982 m +92.587 586.982 l +91.656 596.603 m +92.587 596.603 l +91.656 606.379 m +92.587 606.379 l +91.656 616.155 m +92.587 616.155 l +91.656 625.776 m +92.587 625.776 l +91.656 635.551 m +92.587 635.551 l +91.656 645.017 m +92.587 645.017 l +91.656 654.793 m +92.587 654.793 l +91.656 664.724 m +92.587 664.724 l +91.656 674.189 m +92.587 674.189 l +91.656 683.965 m +92.587 683.965 l +91.656 693.896 m +92.587 693.896 l +91.656 703.362 m +92.587 703.362 l +91.656 713.138 m +92.587 713.138 l +92.587 577.207 m +284.846 577.207 l +92.587 576.12 m +92.587 577.207 l +106.242 576.12 m +106.242 577.207 l +120.053 576.12 m +120.053 577.207 l +133.863 576.12 m +133.863 577.207 l +147.518 576.12 m +147.518 577.207 l +161.329 576.12 m +161.329 577.207 l +175.139 576.12 m +175.139 577.207 l +188.794 576.12 m +188.794 577.207 l +202.294 576.12 m +202.294 577.207 l +216.104 576.12 m +216.104 577.207 l +229.915 576.12 m +229.915 577.207 l +243.57 576.12 m +243.57 577.207 l +257.38 576.12 m +257.38 577.207 l +271.035 576.12 m +271.035 577.207 l +284.846 576.12 m +284.846 577.207 l +S +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 SC +0.741 w +96.535 -553.601 m +110.773 -562.977 l +125.172 -572.204 l +139.571 -581.58 l +153.808 -590.956 l +168.208 -600.183 l +182.607 -609.56 l +196.844 -618.638 l +210.92 -628.014 l +225.319 -637.539 l +239.718 -646.617 l +253.956 -655.993 l +268.355 -665.518 l +282.592 -674.597 l +296.992 -683.973 l +S +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 SC +0.247 w +96.535 -553.601 m +98.315 -554.643 l +99.933 -555.387 l +101.874 -555.833 l +103.654 -556.577 l +105.434 -557.47 l +107.375 -558.81 l +109.155 -560.447 l +110.125 -561.786 l +110.773 -562.977 l +111.905 -564.465 l +112.552 -566.4 l +113.523 -568.483 l +114.332 -570.716 l +116.273 -575.627 l +118.053 -580.985 l +119.671 -586.194 l +121.774 -591.403 l +123.392 -596.165 l +124.201 -598.1 l +125.172 -600.183 l +126.951 -603.309 l +128.569 -605.839 l +130.673 -608.071 l +132.29 -610.006 l +134.07 -611.792 l +136.012 -613.727 l +137.791 -615.959 l +139.571 -618.638 l +140.542 -620.126 l +141.189 -622.21 l +142.969 -626.079 l +144.91 -630.544 l +146.69 -635.009 l +148.469 -639.176 l +151.22 -644.236 l +152.191 -645.427 l +152.838 -646.171 l +153.808 -646.617 l +154.779 -646.915 l +155.588 -646.617 l +156.559 -646.32 l +157.368 -645.576 l +158.339 -644.831 l +159.309 -643.938 l +161.089 -641.408 l +162.707 -638.432 l +164.81 -635.009 l +168.208 -628.014 l +169.178 -626.079 l +169.987 -623.847 l +170.958 -621.466 l +171.605 -618.936 l +173.708 -612.983 l +175.326 -607.327 l +177.106 -601.523 l +178.077 -599.142 l +179.048 -596.612 l +179.856 -594.677 l +181.474 -591.7 l +182.607 -590.956 l +183.254 -590.659 l +185.034 -590.659 l +185.681 -591.254 l +186.813 -591.998 l +187.784 -592.891 l +188.755 -593.933 l +189.726 -595.123 l +191.667 -598.1 l +193.609 -601.523 l +195.388 -605.244 l +196.844 -609.56 l +197.815 -612.536 l +198.139 -614.471 l +198.624 -616.406 l +199.595 -621.168 l +200.404 -626.079 l +201.374 -631.735 l +202.022 -637.539 l +202.992 -643.194 l +203.801 -649.147 l +204.772 -654.505 l +205.743 -659.714 l +206.552 -664.476 l +207.522 -668.346 l +207.684 -670.132 l +208.331 -671.62 l +208.817 -672.811 l +209.787 -674.299 l +209.949 -674.894 l +210.435 -674.894 l +210.92 -674.597 l +211.405 -673.853 l +211.891 -672.811 l +212.214 -671.323 l +212.7 -669.388 l +213.185 -667.155 l +214.156 -661.798 l +214.479 -658.523 l +214.965 -655.1 l +215.45 -651.529 l +216.421 -643.938 l +217.23 -635.753 l +218.2 -627.568 l +219.171 -619.233 l +219.818 -611.197 l +220.789 -603.607 l +221.274 -600.183 l +221.598 -596.612 l +222.083 -593.635 l +222.569 -590.956 l +223.054 -588.426 l +223.539 -586.194 l +224.025 -584.557 l +224.348 -583.068 l +224.834 -582.027 l +225.319 -581.58 l +225.805 -581.58 l +226.29 -581.729 l +226.613 -582.771 l +227.099 -583.961 l +227.584 -585.45 l +228.07 -587.533 l +228.555 -589.766 l +228.717 -592.147 l +229.202 -594.975 l +229.687 -597.951 l +230.82 -604.053 l +231.467 -611.048 l +233.409 -625.335 l +234.218 -632.33 l +235.188 -638.729 l +235.674 -642.004 l +235.997 -644.683 l +236.483 -647.064 l +236.968 -649.594 l +237.453 -651.529 l +238.424 -654.505 l +238.586 -655.547 l +239.233 -655.993 l +239.718 -655.993 l +S +239.718 -655.993 m +240.204 -655.547 l +240.689 -654.803 l +240.851 -653.612 l +241.336 -651.826 l +241.822 -649.891 l +242.307 -647.659 l +242.792 -644.831 l +243.116 -642.004 l +243.601 -639.027 l +245.057 -628.312 l +245.866 -620.722 l +246.837 -612.983 l +247.808 -605.095 l +248.617 -597.653 l +249.102 -593.933 l +249.588 -590.659 l +250.073 -587.533 l +250.235 -584.259 l +250.72 -581.58 l +251.205 -579.05 l +252.176 -575.181 l +252.823 -573.841 l +252.985 -572.948 l +253.47 -572.204 l +253.956 -572.204 l +254.441 -572.353 l +254.927 -573.097 l +255.25 -574.437 l +255.735 -575.925 l +256.221 -577.562 l +257.192 -582.027 l +257.515 -584.706 l +258.486 -590.659 l +258.971 -593.933 l +259.457 -597.356 l +260.104 -604.797 l +261.075 -612.536 l +262.207 -620.126 l +262.854 -628.014 l +263.825 -635.753 l +264.634 -643.194 l +265.605 -650.04 l +266.09 -653.315 l +266.575 -655.993 l +267.061 -658.821 l +267.384 -661.202 l +267.87 -663.435 l +268.355 -665.518 l +269.488 -669.685 l +271.267 -673.555 l +273.209 -677.127 l +275.474 -680.103 l +276.444 -681.294 l +277.739 -682.336 l +278.71 -683.229 l +279.68 -683.973 l +280.489 -684.27 l +281.46 -684.568 l +282.107 -684.568 l +282.592 -683.973 l +283.725 -682.782 l +284.372 -681.294 l +285.343 -679.359 l +286.152 -677.127 l +287.123 -674.299 l +288.093 -671.323 l +288.902 -668.197 l +289.873 -664.774 l +291.491 -657.779 l +293.271 -650.636 l +295.212 -643.641 l +296.021 -640.515 l +296.992 -637.539 l +S +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0.6 0 SC +0.247 w +96.535 -590.956 m +98.315 -586.045 l +99.933 -580.538 l +101.874 -574.883 l +103.654 -569.376 l +105.434 -564.167 l +106.404 -561.786 l +107.375 -559.554 l +108.184 -557.768 l +109.155 -556.131 l +109.802 -554.643 l +110.773 -553.601 l +S +Q +q +106.087 575.344 14.586 11.948 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +1 0.6 0 SC +0.247 w +110.773 -553.601 m +111.581 -552.857 l +112.552 -552.41 l +113.523 -552.113 l +114.332 -552.113 l +115.303 -552.41 l +116.273 -552.559 l +118.053 -553.898 l +119.671 -555.536 l +121.774 -557.768 l +123.392 -560.298 l +125.172 -562.977 l +S +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0.6 0 SC +0.247 w +125.172 -562.977 m +126.951 -566.251 l +128.569 -569.972 l +130.673 -574.139 l +134.07 -583.515 l +136.012 -589.021 l +137.791 -594.379 l +139.571 -600.183 l +140.542 -603.309 l +141.189 -606.732 l +142.321 -610.75 l +142.969 -614.917 l +144.91 -623.847 l +146.69 -632.776 l +147.66 -636.944 l +148.469 -641.26 l +149.44 -644.831 l +150.411 -648.106 l +151.22 -651.082 l +152.191 -653.315 l +152.838 -655.1 l +153.808 -655.993 l +154.294 -656.291 l +154.779 -656.291 l +155.588 -655.547 l +156.559 -654.356 l +157.368 -652.57 l +158.339 -650.338 l +159.309 -647.659 l +160.118 -644.683 l +161.089 -641.408 l +162.707 -634.711 l +163.678 -631.288 l +164.486 -628.312 l +165.457 -625.335 l +167.237 -620.424 l +168.208 -618.638 l +169.987 -616.257 l +171.605 -614.024 l +173.708 -612.238 l +175.326 -610.75 l +177.106 -609.708 l +179.048 -609.262 l +180.827 -609.262 l +182.607 -609.56 l +184.225 -610.304 l +186.328 -611.792 l +187.946 -613.727 l +189.726 -615.959 l +191.505 -618.489 l +193.447 -621.466 l +195.226 -624.591 l +196.844 -628.014 l +197.815 -630.098 l +198.624 -632.776 l +199.595 -635.753 l +200.404 -639.176 l +201.374 -642.748 l +202.022 -646.32 l +202.992 -650.04 l +203.801 -653.761 l +205.743 -660.309 l +206.552 -662.691 l +207.522 -664.923 l +207.684 -665.667 l +208.817 -666.709 l +209.302 -666.858 l +209.787 -666.858 l +210.435 -666.262 l +210.92 -665.518 l +211.405 -664.476 l +211.891 -662.988 l +212.214 -661.053 l +212.7 -658.97 l +213.67 -653.612 l +214.156 -650.636 l +214.479 -647.361 l +214.965 -643.938 l +216.421 -632.776 l +217.23 -624.591 l +219.171 -608.22 l +219.818 -600.63 l +220.789 -593.189 l +221.274 -589.914 l +221.598 -586.789 l +222.083 -583.813 l +222.569 -580.985 l +223.054 -578.753 l +223.539 -576.669 l +224.348 -573.692 l +224.834 -572.651 l +225.319 -572.204 l +225.805 -572.204 l +226.29 -572.353 l +226.613 -573.097 l +227.099 -574.437 l +227.584 -575.925 l +228.555 -579.794 l +228.717 -582.324 l +229.202 -584.706 l +229.687 -587.682 l +230.82 -593.933 l +231.467 -600.63 l +232.438 -607.476 l +233.409 -614.768 l +234.218 -621.615 l +235.188 -628.014 l +235.674 -630.991 l +235.997 -633.967 l +236.968 -639.027 l +237.939 -642.897 l +238.424 -644.385 l +238.586 -645.427 l +239.233 -646.32 l +239.718 -646.617 l +240.204 -646.617 l +240.689 -646.171 l +240.851 -645.427 l +241.336 -644.236 l +241.822 -642.748 l +242.307 -640.664 l +242.792 -638.729 l +243.116 -636.497 l +243.601 -633.967 l +244.087 -631.288 l +245.057 -625.633 l +245.866 -619.382 l +247.808 -606.583 l +248.617 -600.63 l +249.588 -594.975 l +250.073 -592.445 l +250.235 -589.914 l +250.72 -587.682 l +251.205 -586.045 l +251.691 -584.259 l +252.176 -583.068 l +252.823 -582.027 l +252.985 -581.58 l +253.47 -581.283 l +253.956 -581.58 l +S +253.956 -581.58 m +254.441 -582.324 l +254.927 -583.217 l +255.25 -584.557 l +255.735 -586.194 l +256.221 -588.277 l +256.706 -590.51 l +257.192 -592.891 l +257.515 -595.719 l +258.001 -598.695 l +258.486 -601.821 l +259.457 -608.518 l +260.104 -615.661 l +261.075 -623.4 l +262.207 -630.991 l +262.854 -639.027 l +263.825 -646.32 l +264.634 -653.612 l +265.605 -660.012 l +266.09 -663.286 l +266.575 -665.965 l +267.061 -668.346 l +267.384 -670.876 l +267.87 -672.811 l +268.355 -674.597 l +269.488 -677.573 l +271.267 -680.103 l +273.209 -682.038 l +275.474 -683.526 l +277.739 -684.568 l +279.68 -685.015 l +281.46 -684.717 l +282.592 -683.973 l +283.725 -682.484 l +284.372 -680.847 l +285.343 -678.764 l +286.152 -676.383 l +287.123 -673.555 l +288.093 -670.578 l +288.902 -667.453 l +289.873 -664.179 l +291.491 -657.333 l +293.271 -650.338 l +295.212 -643.641 l +296.021 -640.515 l +296.992 -637.539 l +S +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +96.535 -609.56 m +97.506 -605.839 l +98.315 -602.118 l +99.933 -593.933 l +101.874 -585.747 l +103.654 -577.562 l +104.625 -573.692 l +105.434 -569.674 l +106.404 -566.251 l +107.375 -562.977 l +108.184 -560 l +109.155 -557.47 l +109.802 -555.387 l +110.773 -553.601 l +S +Q +q +106.087 575.344 14.586 11.948 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +110.773 -553.601 m +111.581 -552.41 l +112.552 -551.666 l +113.523 -551.368 l +114.332 -551.071 l +115.303 -551.368 l +116.273 -551.815 l +117.082 -552.559 l +118.053 -553.303 l +119.671 -555.536 l +121.774 -558.066 l +123.392 -560.447 l +125.172 -562.977 l +S +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +125.172 -562.977 m +126.951 -565.209 l +128.569 -567.442 l +130.349 -570.121 l +132.29 -573.395 l +134.394 -576.818 l +136.012 -580.985 l +137.791 -585.747 l +139.571 -590.956 l +140.056 -592.742 l +140.542 -594.677 l +141.189 -598.844 l +142.321 -603.755 l +142.969 -609.262 l +143.939 -614.917 l +144.91 -620.87 l +146.69 -632.776 l +147.66 -638.729 l +148.469 -644.385 l +149.44 -649.594 l +150.087 -654.356 l +150.573 -656.291 l +151.22 -658.226 l +152.191 -661.798 l +152.676 -662.988 l +152.838 -664.03 l +153.323 -664.923 l +153.808 -665.518 l +154.294 -665.667 l +154.779 -665.965 l +155.103 -665.667 l +155.588 -665.518 l +156.073 -664.923 l +156.559 -664.179 l +157.368 -662.244 l +158.339 -659.714 l +159.309 -656.738 l +160.118 -653.315 l +161.089 -649.594 l +162.06 -645.576 l +162.707 -641.408 l +164.486 -633.223 l +165.457 -629.056 l +166.428 -625.335 l +167.237 -621.912 l +168.208 -618.638 l +169.178 -615.661 l +169.987 -612.536 l +171.605 -605.839 l +173.708 -598.844 l +175.326 -591.998 l +176.297 -588.724 l +177.106 -585.45 l +178.077 -582.473 l +179.048 -579.794 l +179.856 -577.413 l +180.827 -575.329 l +181.474 -573.692 l +182.607 -572.204 l +183.254 -571.46 l +184.063 -571.162 l +184.71 -570.865 l +185.681 -570.865 l +187.784 -571.162 l +189.726 -572.353 l +191.991 -573.841 l +193.609 -576.074 l +195.388 -578.604 l +196.844 -581.58 l +197.815 -584.259 l +198.624 -587.533 l +199.595 -591.403 l +200.404 -595.719 l +201.374 -600.332 l +202.022 -605.095 l +203.801 -615.215 l +204.772 -620.424 l +205.743 -625.037 l +206.552 -629.8 l +207.522 -634.265 l +208.331 -638.283 l +209.302 -641.706 l +209.949 -644.385 l +210.435 -645.576 l +210.92 -646.617 l +211.729 -647.808 l +212.376 -648.552 l +213.509 -648.85 l +214.156 -648.85 l +215.126 -648.403 l +216.097 -647.659 l +217.23 -646.915 l +218.2 -645.873 l +220.142 -643.492 l +222.083 -640.962 l +223.863 -639.027 l +224.51 -637.985 l +225.319 -637.539 l +227.099 -636.497 l +228.717 -635.455 l +232.438 -633.967 l +234.218 -633.074 l +236.159 -631.735 l +237.939 -630.098 l +239.718 -628.014 l +240.689 -626.526 l +241.336 -624.889 l +242.307 -622.805 l +243.116 -620.424 l +245.057 -615.215 l +246.837 -610.006 l +247.808 -607.476 l +248.617 -605.244 l +249.588 -603.309 l +251.205 -600.332 l +252.176 -599.588 l +252.985 -599.588 l +253.956 -600.183 l +254.441 -600.63 l +254.927 -601.374 l +255.735 -603.309 l +256.706 -605.839 l +257.515 -608.815 l +258.486 -612.238 l +259.457 -616.257 l +260.104 -620.126 l +261.075 -624.591 l +262.854 -633.521 l +263.825 -637.688 l +264.634 -642.153 l +265.605 -646.171 l +266.575 -649.891 l +267.384 -653.017 l +268.355 -655.993 l +S +268.355 -655.993 m +270.135 -661.202 l +271.753 -665.965 l +273.694 -670.132 l +275.474 -674.15 l +277.253 -677.573 l +279.195 -680.252 l +280.975 -682.484 l +282.592 -683.973 l +283.725 -684.568 l +285.343 -684.568 l +286.152 -684.27 l +288.093 -683.229 l +289.873 -681.592 l +291.491 -679.806 l +293.271 -677.871 l +295.212 -676.085 l +296.992 -674.597 l +S +Q +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0.502 SC +0.247 w +96.535 -600.183 m +97.506 -597.207 l +98.315 -593.635 l +99.933 -586.789 l +101.874 -579.348 l +103.654 -572.204 l +104.625 -568.632 l +105.434 -565.507 l +106.404 -562.679 l +108.184 -557.768 l +109.155 -555.833 l +109.802 -554.345 l +110.773 -553.601 l +111.905 -553.303 l +112.552 -553.601 l +113.523 -554.643 l +114.332 -555.833 l +115.303 -557.47 l +116.273 -559.554 l +117.082 -561.786 l +118.053 -564.019 l +119.671 -569.228 l +121.774 -574.139 l +122.421 -576.371 l +123.392 -578.306 l +124.201 -580.092 l +125.172 -581.58 l +126.143 -582.473 l +126.951 -583.515 l +128.569 -584.706 l +130.673 -585.45 l +132.29 -586.194 l +134.07 -586.938 l +136.012 -587.682 l +137.791 -589.021 l +138.6 -589.914 l +139.571 -590.956 l +140.542 -592.445 l +141.189 -594.23 l +142.321 -596.165 l +142.969 -598.398 l +144.91 -603.309 l +146.69 -608.22 l +147.66 -610.75 l +148.469 -612.983 l +149.44 -614.917 l +150.411 -616.406 l +151.22 -617.745 l +152.191 -618.638 l +152.838 -618.936 l +153.808 -618.638 l +154.779 -617.745 l +155.588 -616.257 l +156.559 -614.024 l +157.368 -611.494 l +158.339 -608.22 l +159.309 -605.095 l +160.118 -601.374 l +161.089 -597.653 l +162.707 -590.212 l +163.678 -586.491 l +164.81 -582.771 l +165.457 -579.497 l +166.428 -576.669 l +167.237 -574.139 l +168.208 -572.204 l +169.664 -569.228 l +171.443 -566.4 l +173.385 -564.019 l +175.326 -561.935 l +176.297 -561.191 l +177.43 -560.447 l +178.4 -560.298 l +180.018 -560.298 l +180.989 -561.042 l +181.798 -561.786 l +182.607 -562.977 l +183.092 -564.019 l +183.578 -565.209 l +183.739 -566.4 l +184.225 -568.186 l +185.195 -571.906 l +186.328 -576.074 l +186.975 -580.538 l +187.946 -585.45 l +188.755 -590.659 l +189.726 -596.165 l +190.696 -601.374 l +191.505 -606.583 l +192.476 -611.494 l +193.447 -615.959 l +194.094 -619.977 l +195.226 -623.4 l +195.712 -624.889 l +195.874 -626.079 l +196.359 -627.27 l +197.33 -628.758 l +197.815 -629.056 l +198.139 -629.353 l +198.624 -629.353 l +199.595 -629.056 l +200.404 -628.014 l +201.374 -626.526 l +202.022 -624.889 l +202.992 -622.656 l +203.801 -620.722 l +205.743 -616.257 l +206.552 -614.024 l +208.331 -610.75 l +209.302 -609.708 l +209.949 -609.262 l +210.435 -609.262 l +210.92 -609.56 l +211.891 -610.453 l +212.7 -611.792 l +213.67 -613.727 l +215.45 -618.638 l +216.421 -621.466 l +218.2 -627.568 l +219.818 -633.818 l +220.789 -636.497 l +221.598 -639.176 l +222.569 -641.706 l +223.539 -643.938 l +224.348 -645.427 l +225.319 -646.617 l +226.29 -647.361 l +227.099 -647.659 l +228.07 -647.361 l +228.717 -646.915 l +229.687 -646.171 l +230.82 -645.427 l +232.438 -643.194 l +234.218 -640.962 l +236.159 -639.027 l +236.968 -638.283 l +237.939 -637.688 l +238.586 -637.539 l +239.718 -637.539 l +S +239.718 -637.539 m +240.689 -637.985 l +241.336 -638.432 l +243.116 -640.218 l +245.057 -642.45 l +246.837 -644.831 l +248.617 -647.808 l +250.558 -650.784 l +252.176 -653.612 l +253.956 -655.993 l +257.515 -661.053 l +261.075 -665.965 l +264.796 -670.578 l +266.575 -672.662 l +268.355 -674.597 l +271.753 -678.317 l +273.694 -680.103 l +277.253 -683.08 l +279.195 -683.824 l +280.975 -684.27 l +282.592 -683.973 l +283.725 -683.526 l +284.372 -683.08 l +286.152 -681.294 l +288.093 -679.061 l +289.873 -676.531 l +291.491 -673.555 l +293.271 -670.578 l +295.212 -667.899 l +296.992 -665.518 l +S +Q +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0 SC +0.247 w +96.535 -590.956 m +98.315 -586.045 l +99.933 -580.538 l +101.874 -574.883 l +103.654 -569.376 l +105.434 -564.167 l +106.404 -561.786 l +107.375 -559.554 l +108.184 -557.768 l +109.155 -556.131 l +109.802 -554.643 l +110.773 -553.601 l +111.905 -552.857 l +112.552 -552.41 l +114.332 -552.41 l +116.273 -553.303 l +118.053 -554.791 l +119.671 -556.726 l +121.774 -558.81 l +123.392 -561.042 l +125.172 -562.977 l +128.569 -565.953 l +130.349 -567.739 l +132.29 -569.674 l +134.394 -571.906 l +136.012 -574.585 l +137.791 -577.859 l +139.571 -581.58 l +140.542 -584.259 l +141.189 -587.533 l +142.321 -590.956 l +142.969 -595.123 l +144.91 -603.755 l +146.69 -612.983 l +147.66 -617.447 l +148.469 -621.615 l +149.44 -625.633 l +150.411 -629.056 l +151.22 -632.33 l +152.191 -634.711 l +152.676 -635.753 l +152.838 -636.497 l +153.323 -636.944 l +153.808 -637.539 l +154.294 -637.688 l +154.779 -637.688 l +155.588 -637.241 l +156.559 -636.051 l +157.368 -634.562 l +158.339 -632.33 l +159.309 -629.8 l +160.118 -627.121 l +161.089 -624.145 l +162.707 -617.447 l +164.486 -611.048 l +165.457 -607.774 l +166.428 -605.095 l +167.237 -602.267 l +168.208 -600.183 l +169.987 -595.719 l +171.605 -590.956 l +173.708 -586.045 l +175.326 -581.58 l +176.297 -579.348 l +177.106 -577.413 l +179.048 -574.437 l +179.856 -573.097 l +180.827 -572.353 l +181.474 -572.204 l +182.607 -572.204 l +183.578 -572.651 l +184.225 -573.841 l +185.195 -575.329 l +186.328 -577.413 l +186.975 -579.497 l +187.946 -582.324 l +188.755 -585.003 l +189.726 -587.98 l +191.505 -593.933 l +193.447 -599.886 l +194.094 -602.862 l +195.226 -605.244 l +195.874 -607.476 l +196.844 -609.56 l +198.624 -612.983 l +202.022 -619.233 l +203.801 -621.615 l +205.743 -623.847 l +207.522 -625.782 l +209.302 -627.27 l +210.92 -628.014 l +212.7 -628.014 l +213.67 -627.568 l +214.479 -626.823 l +216.421 -624.889 l +218.2 -622.805 l +219.818 -620.722 l +220.789 -619.977 l +221.598 -619.233 l +222.569 -618.489 l +223.539 -618.191 l +224.348 -618.191 l +225.319 -618.638 l +226.29 -619.382 l +227.099 -620.424 l +228.07 -621.912 l +228.717 -623.4 l +229.687 -625.335 l +230.82 -627.27 l +232.438 -631.586 l +234.218 -636.051 l +236.159 -640.218 l +236.968 -642.004 l +237.939 -643.641 l +238.586 -645.427 l +239.718 -646.617 l +241.336 -648.552 l +243.116 -650.04 l +245.057 -651.082 l +248.617 -652.57 l +250.558 -653.612 l +252.176 -654.505 l +253.956 -655.993 l +255.735 -658.077 l +257.515 -660.309 l +259.457 -662.691 l +261.075 -665.518 l +262.854 -667.899 l +264.796 -670.43 l +266.575 -672.662 l +268.355 -674.597 l +S +268.355 -674.597 m +271.753 -678.317 l +273.694 -680.103 l +277.253 -683.08 l +279.195 -683.824 l +280.975 -684.27 l +282.592 -683.973 l +283.725 -683.526 l +284.372 -683.08 l +286.152 -681.294 l +288.093 -679.061 l +289.873 -676.531 l +291.491 -673.555 l +293.271 -670.578 l +295.212 -667.899 l +296.992 -665.518 l +S +Q +q +91.035 575.344 3.724 3.879 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +96.535 -555.387 m +98.315 -553.601 l +96.535 -551.815 l +94.755 -553.601 l +96.535 -555.387 l +b* +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +110.773 -564.763 m +112.552 -562.977 l +110.773 -561.191 l +109.155 -562.977 l +110.773 -564.763 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +125.172 -573.841 m +126.951 -572.204 l +125.172 -570.418 l +123.392 -572.204 l +125.172 -573.841 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +139.571 -583.217 m +141.189 -581.58 l +139.571 -579.794 l +137.791 -581.58 l +139.571 -583.217 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +153.808 -592.742 m +155.588 -590.956 l +153.808 -589.17 l +152.191 -590.956 l +153.808 -592.742 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +168.208 -601.821 m +169.987 -600.183 l +168.208 -598.398 l +166.428 -600.183 l +168.208 -601.821 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +182.607 -611.197 m +184.225 -609.56 l +182.607 -607.774 l +180.827 -609.56 l +182.607 -611.197 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +196.844 -620.424 m +198.624 -618.638 l +196.844 -617.001 l +195.226 -618.638 l +196.844 -620.424 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +210.92 -629.8 m +212.7 -628.014 l +210.92 -626.377 l +209.302 -628.014 l +210.92 -629.8 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +225.319 -639.176 m +227.099 -637.539 l +225.319 -635.753 l +223.539 -637.539 l +225.319 -639.176 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +239.718 -648.403 m +241.336 -646.617 l +239.718 -644.831 l +237.939 -646.617 l +239.718 -648.403 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +253.956 -657.779 m +255.735 -655.993 l +253.956 -654.356 l +252.176 -655.993 l +253.956 -657.779 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +268.355 -667.155 m +270.135 -665.518 l +268.355 -663.732 l +266.575 -665.518 l +268.355 -667.155 l +b* +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +282.592 -676.383 m +284.372 -674.597 l +282.592 -672.811 l +280.975 -674.597 l +282.592 -676.383 l +b* +Q +q +282.984 710.81 3.879 4.034 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +296.992 -685.759 m +298.771 -683.973 l +296.992 -682.336 l +295.212 -683.973 l +296.992 -685.759 l +b* +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 sc +1 0 1 SC +0.247 w +95.726 -553.154 1.294 -1.191 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 sc +1 0 1 SC +0.247 w +110.125 -562.53 1.294 -1.191 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 sc +1 0 1 SC +0.247 w +124.525 -599.588 1.133 -1.191 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 sc +1 0 1 SC +0.247 w +138.762 -618.191 1.294 -1.191 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 sc +1 0 1 SC +0.247 w +153.161 -646.171 1.133 -1.191 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 sc +1 0 1 SC +0.247 w +167.399 -627.568 1.294 -1.191 re +B* +Q +1 0 1 sc +174.363 616.931 1.241 -1.241 re +f +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 SC +0.247 w +181.798 -590.51 1.294 -1.191 re +S +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 SC +0.247 w +196.197 -608.964 1.133 -1.339 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 SC +0.247 w +210.273 -674.15 1.133 -1.191 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 SC +0.247 w +224.51 -580.985 1.294 -1.339 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 SC +0.247 w +238.909 -655.547 1.294 -1.191 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 SC +0.247 w +253.309 -571.609 1.133 -1.339 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 SC +0.247 w +267.546 -664.923 1.294 -1.339 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 SC +0.247 w +281.945 -683.526 1.133 -1.191 re +B* +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 SC +0.247 w +296.183 -636.944 1.294 -1.339 re +B* +Q +q +91.035 613.827 3.724 4.345 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +1 0.6 0 SC +0.247 w +96.535 -592.742 m +98.315 -589.17 l +94.755 -589.17 l +96.535 -592.742 l +s +Q +Q +q +104.38 575.344 4.19 3.879 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +1 0.6 0 SC +0.247 w +110.773 -555.387 m +112.552 -551.815 l +109.155 -551.815 l +110.773 -555.387 l +s +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0.6 0 SC +0.247 w +125.172 -564.763 m +126.951 -561.191 l +123.392 -561.191 l +125.172 -564.763 l +h +139.571 -601.821 m +141.189 -598.398 l +137.791 -598.398 l +139.571 -601.821 l +h +153.808 -657.779 m +155.588 -654.356 l +152.191 -654.356 l +153.808 -657.779 l +h +168.208 -620.424 m +169.987 -617.001 l +166.428 -617.001 l +168.208 -620.424 l +h +182.607 -611.197 m +184.225 -607.774 l +180.827 -607.774 l +182.607 -611.197 l +h +196.844 -629.8 m +198.624 -626.377 l +195.226 -626.377 l +196.844 -629.8 l +h +210.92 -667.155 m +212.7 -663.732 l +209.302 -663.732 l +210.92 -667.155 l +h +225.319 -573.841 m +227.099 -570.418 l +223.539 -570.418 l +225.319 -573.841 l +h +239.718 -648.403 m +241.336 -644.831 l +237.939 -644.831 l +239.718 -648.403 l +h +253.956 -583.217 m +255.735 -579.794 l +252.176 -579.794 l +253.956 -583.217 l +h +268.355 -676.383 m +270.135 -672.811 l +266.575 -672.811 l +268.355 -676.383 l +s +Q +q +269.173 710.81 4.19 4.034 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +1 0.6 0 SC +0.247 w +282.592 -685.759 m +284.372 -682.336 l +280.975 -682.336 l +282.592 -685.759 l +s +Q +Q +q +282.984 662.241 3.879 4.5 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +1 0.6 0 SC +0.247 w +296.992 -639.176 m +298.771 -635.753 l +295.212 -635.753 l +296.992 -639.176 l +s +Q +Q +q +91.035 634.931 2.172 2.638 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +96.535 -609.56 m +94.755 -611.197 l +S +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +96.535 -609.56 m +98.315 -607.774 l +S +Q +q +91.035 633.069 2.172 2.793 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +96.535 -609.56 m +94.755 -607.774 l +S +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +96.535 -609.56 m +98.315 -611.197 l +110.773 -553.601 m +109.155 -555.387 l +S +Q +q +106.087 575.344 2.483 2.172 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +110.773 -553.601 m +112.552 -551.815 l +S +Q +Q +q +104.38 575.344 2.483 2.172 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +110.773 -553.601 m +109.155 -551.815 l +S +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +110.773 -553.601 m +112.552 -555.387 l +125.172 -562.977 m +123.392 -564.763 l +125.172 -562.977 m +126.951 -561.191 l +125.172 -562.977 m +123.392 -561.191 l +125.172 -562.977 m +126.951 -564.763 l +139.571 -590.956 m +137.791 -592.742 l +139.571 -590.956 m +141.189 -589.17 l +139.571 -590.956 m +137.791 -589.17 l +139.571 -590.956 m +141.189 -592.742 l +153.808 -665.518 m +152.191 -667.155 l +153.808 -665.518 m +155.588 -663.732 l +153.808 -665.518 m +152.191 -663.732 l +153.808 -665.518 m +155.588 -667.155 l +168.208 -618.638 m +166.428 -620.424 l +168.208 -618.638 m +169.987 -617.001 l +168.208 -618.638 m +166.428 -617.001 l +168.208 -618.638 m +169.987 -620.424 l +182.607 -572.204 m +180.827 -573.841 l +182.607 -572.204 m +184.225 -570.418 l +182.607 -572.204 m +180.827 -570.418 l +182.607 -572.204 m +184.225 -573.841 l +196.844 -581.58 m +195.226 -583.217 l +196.844 -581.58 m +198.624 -579.794 l +196.844 -581.58 m +195.226 -579.794 l +196.844 -581.58 m +198.624 -583.217 l +210.92 -646.617 m +209.302 -648.403 l +210.92 -646.617 m +212.7 -644.831 l +210.92 -646.617 m +209.302 -644.831 l +210.92 -646.617 m +212.7 -648.403 l +225.319 -637.539 m +223.539 -639.176 l +225.319 -637.539 m +227.099 -635.753 l +225.319 -637.539 m +223.539 -635.753 l +225.319 -637.539 m +227.099 -639.176 l +239.718 -628.014 m +237.939 -629.8 l +239.718 -628.014 m +241.336 -626.377 l +239.718 -628.014 m +237.939 -626.377 l +239.718 -628.014 m +241.336 -629.8 l +253.956 -600.183 m +252.176 -601.821 l +253.956 -600.183 m +255.735 -598.398 l +253.956 -600.183 m +252.176 -598.398 l +253.956 -600.183 m +255.735 -601.821 l +268.355 -655.993 m +266.575 -657.779 l +268.355 -655.993 m +270.135 -654.356 l +268.355 -655.993 m +266.575 -654.356 l +268.355 -655.993 m +270.135 -657.779 l +S +Q +q +269.173 712.517 2.483 2.328 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +282.592 -683.973 m +280.975 -685.759 l +S +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +282.592 -683.973 m +284.372 -682.336 l +282.592 -683.973 m +280.975 -682.336 l +S +Q +q +270.88 712.517 2.483 2.328 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +282.592 -683.973 m +284.372 -685.759 l +S +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +296.992 -674.597 m +295.212 -676.383 l +S +Q +q +284.535 701.034 2.328 2.638 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +296.992 -674.597 m +298.771 -672.811 l +S +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +296.992 -674.597 m +295.212 -672.811 l +S +Q +q +284.535 702.741 2.328 2.638 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +296.992 -674.597 m +298.771 -676.383 l +S +Q +Q +q +91.035 623.603 3.569 4.19 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0.502 SC +0.247 w +97.991 -600.183 m +97.991 -601.076 97.344 -601.821 96.373 -601.821 c +95.564 -601.821 94.755 -601.076 94.755 -600.183 c +94.755 -599.291 95.564 -598.695 96.373 -598.695 c +97.344 -598.695 97.991 -599.291 97.991 -600.183 c +s +Q +Q +q +104.38 575.344 3.879 3.879 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0.502 SC +0.247 w +112.39 -553.75 m +112.39 -554.643 111.581 -555.387 110.773 -555.387 c +109.802 -555.387 109.155 -554.643 109.155 -553.75 c +109.155 -552.857 109.802 -552.113 110.773 -552.113 c +111.581 -552.113 112.39 -552.857 112.39 -553.75 c +s +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0.502 SC +0.247 w +126.628 -581.729 m +126.628 -582.622 125.981 -583.217 125.01 -583.217 c +124.201 -583.217 123.392 -582.622 123.392 -581.729 c +123.392 -580.836 124.201 -580.092 125.01 -580.092 c +125.981 -580.092 126.628 -580.836 126.628 -581.729 c +h +141.027 -591.105 m +141.027 -591.998 140.218 -592.742 139.409 -592.742 c +138.438 -592.742 137.791 -591.998 137.791 -591.105 c +137.791 -590.212 138.438 -589.468 139.409 -589.468 c +140.218 -589.468 141.027 -590.212 141.027 -591.105 c +h +155.426 -618.787 m +155.426 -619.68 154.617 -620.424 153.808 -620.424 c +152.838 -620.424 152.191 -619.68 152.191 -618.787 c +152.191 -617.894 152.838 -617.15 153.808 -617.15 c +154.617 -617.15 155.426 -617.894 155.426 -618.787 c +h +169.664 -572.204 m +169.664 -573.097 169.017 -573.841 168.046 -573.841 c +167.237 -573.841 166.428 -573.097 166.428 -572.204 c +166.428 -571.311 167.237 -570.716 168.046 -570.716 c +169.017 -570.716 169.664 -571.311 169.664 -572.204 c +h +184.063 -563.126 m +184.063 -564.019 183.254 -564.763 182.445 -564.763 c +181.474 -564.763 180.827 -564.019 180.827 -563.126 c +180.827 -562.233 181.474 -561.489 182.445 -561.489 c +183.254 -561.489 184.063 -562.233 184.063 -563.126 c +h +198.3 -628.163 m +198.3 -629.056 197.653 -629.8 196.682 -629.8 c +195.874 -629.8 195.226 -629.056 195.226 -628.163 c +195.226 -627.27 195.874 -626.526 196.682 -626.526 c +197.653 -626.526 198.3 -627.27 198.3 -628.163 c +h +212.376 -609.708 m +212.376 -610.453 211.729 -611.197 210.92 -611.197 c +209.949 -611.197 209.302 -610.453 209.302 -609.708 c +209.302 -608.815 209.949 -608.071 210.92 -608.071 c +211.729 -608.071 212.376 -608.815 212.376 -609.708 c +h +226.775 -646.766 m +226.775 -647.659 226.128 -648.403 225.157 -648.403 c +224.348 -648.403 223.539 -647.659 223.539 -646.766 c +223.539 -645.873 224.348 -645.129 225.157 -645.129 c +226.128 -645.129 226.775 -645.873 226.775 -646.766 c +h +241.174 -637.539 m +241.174 -638.432 240.366 -639.176 239.557 -639.176 c +238.586 -639.176 237.939 -638.432 237.939 -637.539 c +237.939 -636.795 238.586 -636.051 239.557 -636.051 c +240.366 -636.051 241.174 -636.795 241.174 -637.539 c +h +255.412 -656.142 m +255.412 -657.035 254.765 -657.779 253.794 -657.779 c +252.985 -657.779 252.176 -657.035 252.176 -656.142 c +252.176 -655.249 252.985 -654.505 253.794 -654.505 c +254.765 -654.505 255.412 -655.249 255.412 -656.142 c +h +269.811 -674.745 m +269.811 -675.638 269.164 -676.383 268.193 -676.383 c +267.384 -676.383 266.575 -675.638 266.575 -674.745 c +266.575 -673.853 267.384 -673.108 268.193 -673.108 c +269.164 -673.108 269.811 -673.853 269.811 -674.745 c +s +Q +q +269.173 711.12 3.879 3.724 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0.502 SC +0.247 w +284.21 -684.122 m +284.21 -685.015 283.401 -685.759 282.592 -685.759 c +281.622 -685.759 280.975 -685.015 280.975 -684.122 c +280.975 -683.229 281.622 -682.484 282.592 -682.484 c +283.401 -682.484 284.21 -683.229 284.21 -684.122 c +s +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0.502 SC +0.247 w +298.448 -665.518 m +298.448 -666.411 297.801 -667.155 296.83 -667.155 c +296.021 -667.155 295.212 -666.411 295.212 -665.518 c +295.212 -664.625 296.021 -664.03 296.83 -664.03 c +297.801 -664.03 298.448 -664.625 298.448 -665.518 c +s +Q +q +91.035 613.982 3.569 4.19 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0 SC +0.247 w +94.755 -589.468 3.236 -3.274 re +S +Q +Q +q +104.38 575.344 3.879 3.879 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0 SC +0.247 w +109.155 -552.113 3.236 -3.274 re +S +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0 SC +0.247 w +123.392 -561.489 3.236 -3.274 re +137.791 -580.092 3.236 -3.125 re +152.191 -636.051 3.236 -3.125 re +166.428 -598.695 3.236 -3.125 re +180.827 -570.716 3.236 -3.125 re +195.226 -608.071 3.074 -3.125 re +209.302 -626.526 3.074 -3.274 re +223.539 -617.15 3.236 -3.274 re +237.939 -645.129 3.236 -3.274 re +252.176 -654.505 3.236 -3.274 re +266.575 -673.108 3.236 -3.274 re +S +Q +q +269.173 711.12 3.879 3.724 re +W n +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0 SC +0.247 w +280.975 -682.484 3.236 -3.274 re +S +Q +Q +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0 SC +0.247 w +295.212 -664.03 3.236 -3.125 re +S +Q +BT +/TT10 1 Tf +3.0822 0 0 3.3544 88.5527 576.1204 Tm +0 0 0 sc +0 Tc +0 Tw +(1)Tj +0 2.9144 TD +(2)Tj +0 2.8219 TD +(3)Tj +0 2.9606 TD +(4)Tj +0 2.9144 TD +(5)Tj +0 2.8219 TD +(6)Tj +0 2.9144 TD +(7)Tj +0 2.8681 TD +(8)Tj +0 2.9144 TD +(9)Tj +-0.5034 2.9144 TD +-0.0527 Tc +(10)Tj +0 2.8681 TD +(11)Tj +0 2.9144 TD +(12)Tj +T* +(13)Tj +0 2.8681 TD +(14)Tj +0 2.9144 TD +(15)Tj +1.611 -42.004 TD +-0.0024 Tc +[(1)-3876.6(2)-3926.9(3)-3926.9(4)-3876.6(5)-3926.9(6)-3926.9(7)-3876.6(8)-3826.3(9)-3624.9(1)50.3(0)-3373.1(11)-3373.2(12)-3373.1(1)50.3(3)-3373.2(14)-3373.2(15)]TJ +/TT8 1 Tf +4.5048 0 0 4.9025 171.4147 563.2411 Tm +-0.0332 Tc +0.0309 Tw +[(Hu)-42.4(m)-39.6(a)-62.6(n)-42.4( R)34.5(a)-62.6(n)-76.8(k)-28.2(i)-30.9(n)-42.4(g)]TJ +/TT14 1 Tf +0 4.5048 -4.9025 0 84.6734 619.4135 Tm +0.0701 Tc +0 Tw +[(Ng)-8(r)45.9(a)6.2(m)]TJ +/TT8 1 Tf +3.789 0 TD +0.0115 Tc +0.0207 Tw +[(\(1)-52.4(,)13.8( 4)-52.4(\))]TJ +0 3.0822 -3.3544 0 84.6734 647.8101 Tm +0 Tc +0 Tw +(n)Tj +0 4.5048 -4.9025 0 84.6734 649.8273 Tm +0.0322 Tc +[( R)-37.9(a)-31.7(n)-45.9(k)-31.7(in)-45.9(g)]TJ +ET +1 1 1 sc +94.449 710.81 43.603 -43.448 re +f +94.294 667.362 43.759 43.603 re +S +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 SC +0.741 w +106.566 -678.615 m +113.523 -678.615 l +S +Q +q +0.9591 0 0 -1.0426 0 0 cm +0 0 0.502 sc +0 0 0.502 SC +0.247 w +110.125 -679.508 m +111.096 -678.615 l +110.125 -677.573 l +109.155 -678.615 l +110.125 -679.508 l +b* +Q +BT +/TT10 1 Tf +3.0822 0 0 3.3544 109.6561 706.3101 Tm +0 0 0 sc +0.0378 Tc +[(Av)135(g)90.5(C)]TJ +ET +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 SC +0.247 w +106.566 -671.323 m +113.523 -671.323 l +S +Q +q +0.9591 0 0 -1.0426 0 0 cm +1 0 1 sc +1 0 1 SC +0.247 w +109.316 -670.876 1.294 -1.191 re +B* +Q +BT +3.0822 0 0 3.3544 109.6561 699.1721 Tm +-0.0173 Tc +0.0415 Tw +[(Ng)-14.9(r)13.6(a)-14.9(m)10.2(\()-36.7(1)35.4(,)-41.5( 4)-14.9(\))13.6(5)-15(0)]TJ +ET +q +0.9591 0 0 -1.0426 0 0 cm +1 0.6 0 SC +0.247 w +106.566 -664.476 m +113.523 -664.476 l +110.125 -665.518 m +111.096 -663.435 l +109.155 -663.435 l +110.125 -665.518 l +s +Q +BT +3.0822 0 0 3.3544 109.6561 691.879 Tm +[(Ng)-14.9(r)13.6(a)-14.9(m)10.2(\()-36.7(1)35.4(,)-41.5( 4)-14.9(\))13.6(1)-15(0)-14.9(0)]TJ +ET +q +0.9591 0 0 -1.0426 0 0 cm +0 0 1 SC +0.247 w +106.566 -657.779 m +113.523 -657.779 l +110.125 -657.779 m +109.155 -658.821 l +110.125 -657.779 m +111.096 -656.738 l +110.125 -657.779 m +109.155 -656.738 l +110.125 -657.779 m +111.096 -658.821 l +S +Q +BT +3.0822 0 0 3.3544 109.6561 684.8962 Tm +[(Ng)-14.9(r)13.6(a)-14.9(m)10.2(\()-36.7(1)35.4(,)-41.5( 4)-14.9(\))13.6(2)-15(0)-14.9(0)]TJ +ET +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0.502 SC +0.247 w +106.566 -650.784 m +113.523 -650.784 l +110.773 -650.933 m +110.773 -651.38 110.449 -651.826 109.964 -651.826 c +109.478 -651.826 109.155 -651.38 109.155 -650.933 c +109.155 -650.487 109.478 -650.04 109.964 -650.04 c +110.449 -650.04 110.773 -650.487 110.773 -650.933 c +s +Q +BT +3.0822 0 0 3.3544 109.6561 677.7583 Tm +[(Ng)-14.9(r)13.6(a)-14.9(m)10.2(\()-36.7(1)35.4(,)-41.5( 4)-14.9(\))13.6(4)-15(0)-14.9(0)]TJ +ET +q +0.9591 0 0 -1.0426 0 0 cm +0.502 0 0 SC +0.247 w +106.566 -643.938 m +113.523 -643.938 l +109.155 -643.194 1.618 -1.637 re +S +Q +BT +3.0822 0 0 3.3544 109.6561 670.4652 Tm +[(Ng)-14.9(r)13.6(a)-14.9(m)10.2(\()-36.7(1)35.4(,)-41.5( 4)-14.9(\))13.6(a)-15(l)-46.9(l)]TJ +ET +0.004 0.004 0.004 SC +0 j 0.5 w 8 M +76.915 558.586 216.776 161.534 re +S +1 1 1 sc +77.225 557.81 216 -99 re +f +BT +/TT4 1 Tf +9.931 0 0 9.931 84.5182 545.0859 Tm +0 0 0 sc +-0.0004 Tc +0.0942 Tw +[(F)8.9(i)-3.8(gu)-16(re)5.9( )-15.6(2. S)-6.8(c)-9.7(a)5.9(tte)-9.7(r p)-16(l)11.8(ot o)-16(f)4.5( )]TJ +/TT2 1 Tf +10.2969 0 TD +0.002 Tc +0 Tw +[(Ngra)-13.6(m)]TJ +/TT4 1 Tf +2.7969 0 TD +0 Tc +[(\()-10.7(1,4\))]TJ +/TT2 1 Tf +6.5172 0 0 6.5172 233.6389 543.5342 Tm +(n)Tj +/TT4 1 Tf +9.931 0 0 9.931 236.8975 545.0859 Tm +0.0156 Tc +0.0938 Tw +[( s)14.1(c)21.9(o)15.6(r)4.9(e)21.9( r)20.5(a)21.9(nk-)]TJ +-15.3438 -1.1719 TD +-0.0005 Tc +0.6568 Tw +[(ings ve)5.8(rsus)-17.6( )15.7(hu)-16.1(ma)5.8(n ra)-9.8(nking fo)-16.1(r the)5.8( m)11.7(u)-16.1(l)11.7(t)-3.9(i)-19.4(-)]TJ +0 -1.1563 TD +0.0009 Tc +0.1866 Tw +[(doc)7.2(u)-14.7(m)-2.5(e)7.2(n)0.9(t t)-18.1(a)7.2(sk d)-14.7(a)7.2(ta)7.2( f)-9.8(r)5.8(o)-14.7(m)13.1( )-15.6(DUC 20)-14.7(01.)-14.7( T)-13.3(h)0.9(e)7.2( sa)-8.4(m)13.1(e)-8.4( )]TJ +T* +0.0003 Tc +0.0935 Tw +[(s)-16.8(y)31.5(st)-18.7(e)-9(m)12.5( )15.7(is a)6.6(t)-3.1( )15.7(e)-9(a)6.6(c)-9(h)0.3( ve)6.7(rtic)-9(a)-9(l)12.5( l)12.5(i)-3.1(n)-15.3(e)6.6( )15.7(with ra)-9(n)-15.3(k)0.3(ing )15.7(gi)-18.7(ve)6.6(n )]TJ +T* +0.0132 Tc +0.0493 Tw +[(by)28.8( d)13.2(i)9.8(ff)18.1(e)3.9(r)2.5(e)19.5(n)13.2(t)9.8( )]TJ +/TT2 1 Tf +5.0938 0 TD +0.0025 Tc +0 Tw +[(Ngr)-14.6(a)2.5(m)]TJ +/TT4 1 Tf +2.8125 0 TD +-0.0012 Tc +[(\(1,4)-16.8(\))]TJ +/TT2 1 Tf +6.5172 0 0 6.5172 182.1216 497.448 Tm +0 Tc +(n)Tj +/TT4 1 Tf +9.931 0 0 9.931 185.3802 498.9997 Tm +-0.0005 Tc +0.063 Tw +[( s)-17.6(c)5.8(or)-11.2(e)5.8(s)-2(. T)-14.7(h)-16.1(e)5.8( s)-17.6(t)-3.9(ra)5.8(ight)-19.5( )-15.6(l)11.7(i)-3.9(ne)-9.8( )]TJ +-10.1563 -1.1563 TD +0.0004 Tc +0.1402 Tw +[(\()-10.3(A)3.8(v)16(g)0.4(C)-20.1(\))5.3( is the)6.7( hu)-15.2(ma)6.7(n ra)-8.9(nking )-15.7(a)6.7(nd )]TJ +/TT2 1 Tf +14.5469 0 TD +0 Tc +0 Tw +(n)Tj +/TT4 1 Tf +0.5 0 TD +0.0025 Tc +0.1381 Tw +[( ma)8.8(r)7.4(k)-13.1(s su)-13.1(m-)]TJ +-15.0469 -1.1563 TD +-0.0057 Tc +0.1151 Tw +[(m)-9.1(a)0.6(ri)-24.7(es)-7.2( o)-21.3(f)-0.8( d)-5.7(i)-24.7(ff)-16.4(er)-16.4(en)-5.7(t)-9.1( )-15.6(s)-7.2(i)-9.1(z)-15(e)0.6(s)-7.2(.)-5.7( )]TJ +/TT2 1 Tf +10.6406 0 TD +0.0028 Tc +0 Tw +[(Ng)-12.8(ram)]TJ +/TT4 1 Tf +2.8125 0 TD +-0.0012 Tc +[(\(1,4)-16.8(\))]TJ +/TT2 1 Tf +6.5172 0 0 6.5172 237.2078 474.4825 Tm +0 Tc +[(al)-7.9(l)]TJ +/TT4 1 Tf +9.931 0 0 9.931 244.1906 476.0342 Tm +-0.0063 Tc +0.1157 Tw +[( co)-21.9(m)5.9(b)-6.3(i)-9.7(n)-21.9(es)-23.4( )]TJ +ET +q +84.518 462.379 3.259 11.172 re +W n +BT +9.931 0 0 9.931 84.5182 464.5514 Tm +0 Tc +0 Tw +(r)Tj +ET +Q +BT +9.931 0 0 9.931 87.7768 464.5514 Tm +0.0156 Tc +-0.0156 Tw +[(e)21.9(s)14.1(ul)27.8(t)12.2(s)14.1( )-15.6(f)20.5(r)4.9(om)27.8( a)6.3(l)12.2(l)27.8( s)14.1(i)-3.4(z)6.3(e)21.9(s)14.1(.)15.6( )]TJ +ET +0.749 0.749 0.749 sc +327.363 719.189 209.328 -9.31 re +f +BT +/TT8 1 Tf +9.068 0 0 7.1767 329.5354 712.517 Tm +0 0 0 sc +-0.0248 Tc +0 Tw +[(S)-42.3(D)-4.2(-10)-16.2(0)-546.7(M)-30.3(D)-4.2(-A)12.9(l)-55(l)-585.4(M)-47.4(D)12.9(-5)-16.2(0)-546.7(M)-30.3(D-10)-16.2(0)-546.7(M)-30.3(D)12.9(-)0.2(2)-16.2(0)0.9(0)-546.7(M)-47.4(D)12.9(-)0.2(4)-16.2(0)0.9(0)]TJ +-1.9166 -1.2973 TD +0.0175 Tc +(SX)Tj +/TT10 1 Tf +2.9091 0.0216 TD +-0.0257 Tc +[(0)-17.1(.)-55.9(60)-17.1(4)-1232.1(0)-17.1(.)-55.9(875)-1009.6(0)-17.1(.)-55.9(54)-17.1(6)-1540.1(0)-17.1(.)-55.9(5)0(7)-17.1(5)-1540.1(0.)-55.9(7)-17.1(7)0(5)-1557.2(0)0(.)-55.9(8)-17.1(61)]TJ +/TT8 1 Tf +-2.9091 -1.3405 TD +0 Tc +(S)Tj +/TT10 1 Tf +2.9091 0.0216 TD +-0.0257 Tc +[(0)-17.1(.)-55.9(61)-17.1(5)-1232.1(0)-17.1(.)-55.9(832)-1009.6(0)-17.1(.)-55.9(64)-17.1(6)-1540.1(0)-17.1(.)-55.9(5)0(2)-17.1(9)-1540.1(0.)-55.9(8)-17.1(1)0(4)-1557.2(0)0(.)-55.9(8)-17.1(43)]TJ +ET +q +310.604 719.655 226.086 0.155 re +W n +0 0 0 SC +1 j 0.155 w 10 M +310.604 719.81 m +536.691 719.81 l +S +Q +310.76 719.81 225.931 -0.621 re +f +q +310.604 710.189 226.086 0.31 re +W n +0 0 0 SC +1 j 0.155 w 10 M +310.604 710.5 m +536.691 710.5 l +S +Q +310.76 710.344 225.931 -0.465 re +f +q +310.604 700.879 226.086 0.31 re +W n +0 0 0 SC +1 j 0.155 w 10 M +310.604 701.189 m +536.691 701.189 l +S +Q +310.76 701.034 225.931 -0.621 re +f +q +309.984 691.103 0.155 28.707 re +W n +0 0 0 SC +1 j 0.155 w 10 M +309.984 719.81 m +309.984 691.103 l +S +Q +309.984 719.81 0.776 -28.707 re +f +q +327.363 691.103 0.31 28.241 re +W n +0 0 0 SC +1 j 0.155 w 10 M +327.363 719.344 m +327.363 691.103 l +S +Q +327.363 719.189 0.776 -28.086 re +f +q +362.277 691.103 0.31 28.241 re +W n +0 0 0 SC +1 j 0.155 w 10 M +362.277 719.344 m +362.277 691.103 l +S +Q +362.277 719.189 0.776 -28.086 re +f +q +395.639 691.103 0.31 28.241 re +W n +0 0 0 SC +1 j 0.155 w 10 M +395.639 719.344 m +395.639 691.103 l +S +Q +395.794 719.189 0.621 -28.086 re +f +q +427.139 691.103 0.31 28.241 re +W n +0 0 0 SC +1 j 0.155 w 10 M +427.139 719.344 m +427.139 691.103 l +S +Q +427.139 719.189 0.776 -28.086 re +f +q +463.449 691.103 0.155 28.241 re +W n +0 0 0 SC +1 j 0.155 w 10 M +463.449 719.344 m +463.449 691.103 l +S +Q +463.449 719.189 0.776 -28.086 re +f +q +499.604 691.103 0.31 28.241 re +W n +0 0 0 SC +1 j 0.155 w 10 M +499.604 719.344 m +499.604 691.103 l +S +Q +499.76 719.189 0.621 -28.086 re +f +q +310.604 691.413 226.086 0.31 re +W n +0 0 0 SC +1 j 0.155 w 10 M +310.604 691.724 m +536.691 691.724 l +S +Q +310.76 691.724 225.931 -0.621 re +f +q +535.915 691.103 0.31 28.241 re +W n +0 0 0 SC +1 j 0.155 w 10 M +535.915 719.344 m +535.915 691.103 l +S +Q +536.07 719.189 0.621 -28.086 re +f +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 23 0 R +/TT14 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +/ColorSpace << +/Cs5 12 0 R +>> +>> +endobj +29 0 obj +<< +/Length 58031 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 79.7078 747.8962 Tm +/Cs5 cs 0 0 0 sc +/GS1 gs +0.0007 Tc +0.0079 Tw +[(I)6.1(n)0.7( P)25.3(r)-6.7(oceedings)-6.7( of the)13.5( Human T)5.1(e)13.5(chnology )17.2(C)12.5(onfer)-6.7(ence)13.5( 2003 \()23.4(H)-1.3(L)5.1(T)5.2(-)6.1(N)-4.7(A)8.1(A)8.1(C)-4.7(L)-12.1(-)6.1(2003\))6.1(,)-7.9( M)6.1(a)0.7(y )17.2(27 June)13.5( 1,)9.3( 2003,)9.3( E)8.1(d)0.7(monton,)-7.9( )17.2(Canada )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 736.4135 Tm +0 Tc +0 Tw +( )Tj +0 -2.5781 TD +0.0017 Tc +0.0921 Tw +[(me)8(a)-7.6(n)1.7(s tha)8(t)-1.7( hu)-13.9(ma)8(n r)-9(a)8(nks its pe)8.1(r)-9(f)6.6(o)-13.9(r)-9(m)13.9(a)-7.6(n)-13.9(c)8(e)8( a)8(t)-1.7( th)-13.9(e)8( 5)]TJ +6.5172 0 0 6.5172 272.5872 715.3101 Tm +0.0079 Tc +0 Tw +(th)Tj +9.931 0 0 9.931 277.863 710.8101 Tm +-0.002 Tc +0.0958 Tw +[( ra)4.3(nk )]TJ +-20.7344 -1.1563 TD +-0.004 Tc +0 Tw +[(whi)-23(l)8.2(e )]TJ +/TT2 1 Tf +2.5937 0 TD +0.002 Tc +[(Ngra)-13.6(m)]TJ +/TT4 1 Tf +2.7969 0 TD +0 Tc +[(\()-10.7(1,4\))]TJ +/TT2 1 Tf +6.5172 0 0 6.5172 144.5699 697.7755 Tm +(400)Tj +/TT4 1 Tf +9.931 0 0 9.931 154.3458 699.3273 Tm +0.0024 Tc +0.1226 Tw +[( )-15.6(r)7.3(a)8.7(n)-13.2(k)2.4(s it a)8.7(t)-1( the)8.7( 8)]TJ +6.5172 0 0 6.5172 224.4837 703.8273 Tm +0.0079 Tc +0 Tw +(th)Tj +9.931 0 0 9.931 229.7596 699.3273 Tm +0.0026 Tc +0.1224 Tw +[(. I)7.5(f)7.5( a)8.9(n)2.6( )-15.6(a)8.9(u)2.6(to)-13(ma)8.9(tic)-6.7( )]TJ +-15.8906 -1.1563 TD +0.0007 Tc +0.1556 Tw +[(ra)7(n)-14.9(k)0.7(ing fu)-14.9(lly)16.3( ma)7(t)-18.3(c)7(h)-14.9(e)7(s )15.7(th)-14.9(e)7( )15.7(h)-14.9(u)-14.9(m)12.9(a)-8.6(n)0.7( ra)7(n)-14.9(k)0.7(ing, )15.7(its p)-14.9(l)12.9(ot will)-18.3( )]TJ +T* +0.0014 Tc +0.1392 Tw +[(c)7.7(o)1.4(in)-14.2(c)7.7(i)-2(de)7.7( w)4.8(i)-2(t)-17.6(h)1.4( the)7.7( he)-7.9(a)-7.9(v)1.4(y)17( di)-17.6(a)7.7(gon)-14.2(a)-7.9(l)13.6(. )-15.6(A)20.4( )-15.7(line)7.7( w)4.8(ith le)7.7(ss d)-14.2(e)-7.9(-)]TJ +T* +0.0016 Tc +0.264 Tw +[(v)17.2(i)-17.4(a)7.9(tion f)-9.1(r)6.5(o)-14(m)13.8( th)-14(e)7.9( h)-14(e)7.9(a)-7.7(v)-14(y)17.2( dia)-7.7(gon)-14(a)-7.7(l)13.8( l)13.8(i)-17.4(ne)-7.7( indic)7.9(a)7.9(t)-17.4(e)7.9(s)0.1( b)-14(e)7.9(tte)-7.7(r)-9.1( )]TJ +T* +0.0017 Tc +-0.0017 Tw +[(c)8(o)1.7(r)-9(r)6.6(e)-7.6(l)-1.7(a)8(tion )-15.6(w)5.1(ith th)-13.9(e)8( hu)-13.9(ma)8(n )-15.6(a)8(s)0.2(s)-15.4(e)8(ss)-15.4(me)8(nt.)-13.9( )]TJ +T* +0.0013 Tc +0.1237 Tw +[(T)-12.9(o)1.3( qua)7.6(ntif)-9.4(y)16.9( th)-14.3(e)7.6( )-15.6(c)7.6(o)1.3(r)-9.4(r)6.2(e)-8(l)-2.1(a)7.6(tion, )-15.6(we)7.6( )-15.6(c)7.6(o)-14.3(mp)-14.3(ute)7.6( the)7.6( S)-5(p)-14.3(e)-8(a)7.7(r)-9.4(m)-2.1(a)7.6(n)-14.3( )]TJ +T* +-0.0059 Tc +0.4903 Tw +[(ran)-21.5(k)-5.9( )15.6(o)-5.9(r)-16.6(d)-5.9(e)-15.2(r co)-5.9(r)-16.6(r)-1(e)-15.2(l)-9.3(at)-9.3(i)-9.3(o)-5.9(n)-5.9( co)-21.5(ef)-16.6(fi)-9.3(ci)-24.9(en)-5.9(t)-9.3( \()]TJ +/TT15 1 Tf +15.8125 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5 0 TD +-0.0056 Tc +0.4744 Tw +[(\) f)-16.3(o)-5.6(r )-15.6(ea)-14.9(ch)-21.2( )]TJ +/TT2 1 Tf +5.5156 0 TD +0.0049 Tc +0 Tw +(N-)Tj +-21.8281 -1.1562 TD +0.0004 Tc +(gram)Tj +/TT4 1 Tf +2.125 0 TD +-0.0012 Tc +[(\(1,4)-16.8(\))]TJ +/TT2 1 Tf +6.5172 0 0 6.5172 112.1389 617.3962 Tm +0 Tc +(n)Tj +/TT4 1 Tf +9.931 0 0 9.931 115.3975 618.948 Tm +-0.0058 Tc +0.1151 Tw +[( )15.5(ru)-21.4(n)-5.8( )15.5(at)-9.2( d)-5.8(i)-9.2(ff)-16.5(e)-15.1(r)-0.9(en)-5.8(t)-9.2( s)-7.3(u)-21.4(m)-9.2(m)-9.2(a)0.5(r)-16.5(y)9.8( s)-22.9(i)-9.2(zes)-7.3( \()]TJ +/TT2 1 Tf +13.6562 0 TD +0 Tc +0 Tw +(n)Tj +/TT4 1 Tf +0.5156 0 TD +-0.0057 Tc +0.1151 Tw +[(\).)-5.7( We a)-15(l)6.5(s)-7.2(o)-21.3( )]TJ +-18.5469 -1.1563 TD +0.0006 Tc +0.1869 Tw +[(te)6.9(st the)6.9( e)-8.7(f)5.5(f)-10.1(e)6.9(c)6.9(t)-2.8( o)-15(f)5.5( inc)-8.7(l)12.8(usio)-15(n or e)-8.7(x)0.6(c)-8.7(l)12.9(usi)-18.4(on of stopw)-11.6(ords)-16.5(.)-15( )]TJ +T* +-0.0059 Tc +0.0059 Tw +[(T)-20.1(h)-5.9(e res)-23(u)-21.5(l)6.3(t)-9.3(s)-7.4( a)-15.2(r)-1(e)-15.2( s)-7.4(u)-21.5(m)-9.3(m)-9.3(a)0.4(ri)-24.9(ze)-15.2(d)-5.9( i)-9.3(n)-5.9( T)-20.1(a)0.4(b)-21.5(l)-9.3(e 1)-5.9(.)-21.5( )]TJ +0 -1.2344 TD +0.0012 Tc +0.1394 Tw +[(Al)13.4(t)-17.8(houg)-14.4(h the)7.5(s)-15.9(e)7.5( r)-9.5(e)7.5(su)-14.4(l)13.4(t)-2.2(s )-15.7(a)7.5(r)-9.5(e)7.5( sta)7.5(tisti)-17.8(c)7.5(a)-8.1(lly signific)-8.1(a)7.5(nt \()]TJ +/F2 1 Tf +21.2188 0 TD +0 Tc +0 Tw +()Tj +/TT4 1 Tf +0.6406 0 TD +0.0298 Tc +0.1108 Tw +[( = )]TJ +-21.8594 -1.1562 TD +0.0002 Tc +0.1092 Tw +[(0.025\))-10.5( a)6.5(nd a)6.5(r)-10.5(e)-9.1( )15.6(c)6.5(o)-15.4(mpa)-9.1(r)5.1(a)-9.1(b)-15.4(l)12.4(e)-9.1( )15.6(to IBM BLEU)-10.5(s)-1.3( c)6.5(o)-15.3(rr)-10.5(e)-9.1(l)12.4(a)6.5(tion)-31.1( )]TJ +0 -1.1719 TD +0.0009 Tc +0.3272 Tw +[(figur)-9.8(e)7.2(s)-0.5( sho)-14.7(w)4.3(n in S)-5.4(e)7.2(c)7.2(tio)-14.7(n 3, the)-8.4(y)16.5( a)-8.4(r)-9.8(e)7.2( not c)7.2(onsist)-18.1(e)7.2(nt)-18.1( )]TJ +0 -1.1563 TD +-0.0062 Tc +0.0374 Tw +[(ac)-15.5(ro)-6.2(s)-7.7(s)-7.7( s)-7.7(u)-21.8(m)-9.6(m)-9.6(a)0.1(r)-32.6(y)25( s)-7.7(i)-25.2(zes)-7.7( )-15.7(an)-6.2(d)-6.2( t)-9.6(a)0.1(s)-23.3(k)-6.2(s)-7.7(.)-6.2( Fo)-21.8(r ex)-21.8(a)-15.5(m)6(p)-21.8(l)-9.6(e,)-6.2( t)-9.6(h)-6.2(e co)-21.8(rr)-16.9(e)-15.5(-)]TJ +T* +0.0015 Tc +0.0454 Tw +[(la)7.8(tions )15.6(o)-14.1(f)6.4( )15.7(the)7.8( )15.7(si)-17.5(ng)-14.1(l)13.7(e)7.8( doc)-7.8(u)-14.1(m)13.7(e)-7.8(n)1.5(t )15.6(ta)7.8(sk a)7.8(r)-9.2(e)7.8( a)7.8(t)-1.9( )15.6(the)7.8( 60%)6.4( le)-7.8(ve)-7.8(l)13.8(;)-17.5( )]TJ +T* +-0.0041 Tc +0.3478 Tw +[(whi)-23.1(l)8.1(e t)-7.5(h)-19.7(e)-13.4(y)11.5( r)-14.8(a)2.2(n)-19.7(g)-4.1(e )-15.7(fro)-19.7(m)8.1( )-15.7(50% t)-23.1(o)-4.1( 80)-19.7(% fo)-19.7(r t)-7.5(h)-4.1(e )-15.7(m)-7.5(u)-19.7(l)8.1(t)-7.5(i)-23.1(-)]TJ +T* +0.0006 Tc +0.0463 Tw +[(doc)6.9(u)-15(m)-2.8(e)6.9(n)0.6(t t)-18.4(a)6.9(sk. T)-13.6(h)0.6(e)6.9( in)-15(c)6.9(l)-2.8(usion o)-15(r)5.5( e)7(x)-15(c)-8.7(l)12.8(us)-16.5(ion of stop)-15(wor)-10.1(d)0.6(s)-16.5( )]TJ +T* +-0.0001 Tc +0.1095 Tw +[(a)-9.4(l)12.1(so show)-12.3(s m)12.1(i)-3.5(x)-15.7(e)6.2(d r)-10.8(e)6.2(su)-15.7(l)12.1(t)-3.5(s. )-15.6(In ord)-15.7(e)6.2(r to )-15.6(me)6.2(e)6.2(t)-3.5( th)-15.7(e)6.2( re)-9.4(quir)-10.8(e)-9.4(-)]TJ +T* +0.002 Tc +0.123 Tw +[(me)8.3(nt o)-13.6(f)6.9( the)8.3( )-15.6(f)6.9(i)-1.4(r)6.9(s)0.5(t c)-7.3(r)6.9(ite)-7.3(r)6.9(i)-1.4(on st)-17(a)8.3(t)-1.4(e)-7.3(d)2( in Se)-7.3(c)8.3(tion 3, )-15.6(w)5.4(e)8.3( n)-13.6(e)-7.3(e)8.3(d)-13.6( )]TJ +T* +0.0016 Tc +-0.0016 Tw +[(be)8(tte)-7.7(r)6.5( r)-9.1(e)7.9(su)-14(l)13.8(t)-1.8(s. )]TJ +T* +0.0142 Tc +0 Tw +[(Th)14.2(e)20.5( )]TJ +/TT2 1 Tf +1.8281 0 TD +0.0016 Tc +(Ngram)Tj +/TT4 1 Tf +2.7813 0 TD +0 Tc +[(\()-10.7(1,4\))]TJ +/TT2 1 Tf +6.5172 0 0 6.5172 136.8113 467.1893 Tm +(n)Tj +/TT4 1 Tf +9.931 0 0 9.931 140.0699 468.7411 Tm +-0.0059 Tc +0.0215 Tw +[( s)-23(c)0.4(o)-5.9(r)-16.6(e i)-9.3(s)-7.4( a wei)-9.3(g)-21.5(h)-5.9(t)-9.3(ed)-5.9( )-15.7(a)-15.2(v)-5.9(er)-16.6(ag)-21.5(e o)-5.9(f)-0.9( )-15.7(v)9.7(a)-15.2(ri)-9.3(a)-15.2(b)-21.5(l)6.3(e)-15.2( )]TJ +-6.8594 -1.1563 TD +0.0008 Tc +0.1398 Tw +[(le)7.1(ngth n)-14.8(-)5.7(gr)-9.9(a)-8.5(m)13( )-15.7(m)13(a)7.1(t)-18.2(c)7.1(h)-14.8(e)7.1(s. B)-19.7(y)32( t)-18.2(a)7.1(king )-15.7(a)7.1( log su)-14.8(m)13( of the)7.1( n)-14.8(-)]TJ +T* +0.0006 Tc +0.1244 Tw +[(gra)-8.7(m)-2.8( m)12.8(a)6.9(t)-18.4(c)6.9(h)-15(e)6.9(s, )15.6(th)-15(e)6.9( )]TJ +/TT2 1 Tf +7.9219 0 TD +0.0205 Tc +0 Tw +[(Ng)20.5(r)19(a)20.5(m)]TJ +/TT4 1 Tf +2.8125 0 TD +-0.0012 Tc +[(\(1,4)-16.8(\))]TJ +/TT2 1 Tf +6.5172 0 0 6.5172 197.6389 444.2238 Tm +0 Tc +(n)Tj +/TT4 1 Tf +9.931 0 0 9.931 200.8975 445.7755 Tm +-0.0009 Tc +0.1103 Tw +[( )-15.6(fa)-10.2(vors)-18( ma)5.4(t)-19.9(c)5.4(h o)-16.5(f)4( )-15.6(l)11.3(o)-0.9(n)-16.5(g)-0.9(e)-10.2(r)-11.6( )]TJ +-12.9844 -1.1563 TD +0.0093 Tc +0.2251 Tw +[(n)-6.3(-)29.8(g)9.3(r)-1.4(am)21.5(s)7.8(.)9.3( )-15.6(F)18.6(o)-6.3(r)14.2( e)15.6(x)-6.3(am)21.5(p)-6.3(l)5.9(e)15.6(,)9.3( i)5.9(f)14.2( )]TJ +/TT2 1 Tf +11.5938 0 TD +0.001 Tc +0.2334 Tw +[(Unit)-18(e)7.3(d)1( St)-18(ate)7.3(s)-0.5( of A)-13.2(m)4.4(e)7.3(r)-0.5(i)-18(c)7.3(a)]TJ +/TT4 1 Tf +10.7969 0 TD +0.0093 Tc +0 Tw +( )Tj +-22.3906 -1.1563 TD +-0.0055 Tc +0.2243 Tw +[(o)-5.5(c)0.8(c)-14.8(u)-5.5(rs)-22.6( i)-8.9(n)-5.5( )-15.6(a )-15.6(re)-14.8(fe)-14.8(re)-14.8(n)-5.5(c)-14.8(e s)-7(u)-21.1(m)-8.9(m)-8.9(a)-14.8(r)-16.2(y)10.1(,)-21.1( wh)-5.5(i)-24.5(l)-8.9(e o)-5.5(n)-21.1(e )-15.6(p)-5.5(e)-14.8(er)-16.2( s)-7(u)-21(m)-8.9(-)]TJ +T* +0.0034 Tc +0 Tw +[(ma)9.7(r)-7.3(y)19(,)-12.2( )]TJ +/TT2 1 Tf +2.625 0 TD +0 Tc +(A)Tj +/TT4 1 Tf +0.6094 0 TD +0.0625 Tw +[(,)-15.6( us)-17.1(e)6.3(s)-1.5( )]TJ +/TT2 1 Tf +3.0781 0 TD +0.0009 Tc +0.0616 Tw +[(Unit)-18.1(e)7.2(d)0.9( St)-18.1(ate)7.2(s)]TJ +/TT4 1 Tf +5.4688 0 TD +0.0013 Tc +0.0768 Tw +[()7.6( a)7.6(nd a)7.6(n)-14.3(o)-14.3(t)-2.1(he)7.7(r)-9.4( )15.6(su)-14.3(mma)7.6(r)-9.4(y)16.9(,)-14.3( )]TJ +/TT2 1 Tf +10.1875 0 TD +0 Tc +0 Tw +(B)Tj +/TT4 1 Tf +0.6094 0 TD +0.0156 Tc +(, )Tj +-22.5781 -1.1563 TD +-0.006 Tc +0.1779 Tw +[(u)-6(s)-7.5(es)-7.5( t)-9.4(h)-21.6(e fu)-21.6(l)-9.4(l)6.2( p)-6(h)-6(r)-16.7(as)-23.1(e )]TJ +/TT2 1 Tf +9.1094 0 TD +0.0006 Tc +0.1713 Tw +[(Unite)-8.7(d State)6.9(s)-0.9( of)-18.4( Ame)6.9(r)-0.9(i)-18.4(c)6.9(a)]TJ +/TT4 1 Tf +10.5938 0 TD +-0.0063 Tc +0.1782 Tw +[(,)-6.3( s)-7.8(u)-21.9(m)-9.7(-)]TJ +-19.7031 -1.1563 TD +0.0034 Tc +0 Tw +[(ma)9.7(r)-7.3(y)19( )]TJ +/TT2 1 Tf +2.4063 0 TD +0 Tc +(B)Tj +/TT4 1 Tf +0.6094 0 TD +0.0014 Tc +0.0923 Tw +[( g)-14.2(e)7.7(ts )-15.7(m)13.6(o)1.4(r)-9.3(e)7.7( )-15.7(c)7.7(ont)-17.6(r)6.3(i)-2(bution to its o)-14.2(v)1.4(e)7.7(r)-9.3(a)-7.9(l)-2(l)13.6( sc)-7.9(or)-9.3(e)7.7( si)-17.6(m-)]TJ +-3.0156 -1.1563 TD +0.0004 Tc +0.2027 Tw +[(ply)16( )-15.7(du)-15.2(e)6.7( to th)-15.2(e)6.7( )-15.7(l)12.6(o)0.4(n)-15.2(g)0.4(e)-8.9(r)5.3( )-15.7(ve)6.7(rsio)-15.2(n of)-10.3( the)-8.9( na)-8.9(me)6.8(. )-15.7(How)-11.8(e)-8.9(ve)6.7(r,)-30.9( )]TJ +T* +0.0014 Tc +0.0298 Tw +[(intuitive)-7.9(l)-2(y)17( on)-14.2(e)7.7( shou)-14.2(l)13.6(d)1.4( p)-14.2(r)6.3(e)-7.9(f)6.3(e)-7.9(r)6.3( a)7.7( sho)-14.2(r)6.3(t ve)-7.9(r)6.4(s)-0.1(ion of)6.3( th)-14.2(e)7.7( na)-7.9(me)-7.8( )]TJ +T* +0.0021 Tc +0.2635 Tw +[(in su)-13.5(mma)8.4(r)7(i)-16.9(z)8.4(a)8.4(tio)-13.5(n. T)-12.1(h)2.1(e)-7.2(r)-8.6(e)8.4(f)7(o)-13.5(r)7(e)8.4(,)-13.5( w)-10.1(e)8.4( )-15.7(ne)-7.2(e)-7.2(d)2.1( to )-15.7(c)8.4(h)-13.5(a)8.4(n)2.1(g)-13.5(e)8.4( th)-13.5(e)-7.2( )]TJ +T* +-0.0003 Tc +0.0003 Tw +[(we)6(ig)-15.9(hting s)-17.4(c)6(h)-15.9(e)-9.6(m)11.9(e)-9.6( to n)-15.9(o)-0.3(t p)-15.9(e)6(na)-9.6(l)11.9(i)-19.3(z)6(e)-9.6( or)-11( e)-9.6(v)-15.9(e)6(n)-0.3( )-15.6(re)-9.6(wa)-9.6(rd s)-17.4(hort)-19.3(e)6(r)-11( )]TJ +T* +0.0007 Tc +0.1087 Tw +[(e)7(qui)-18.3(va)-8.6(l)12.9(e)-8.6(nts. W)7.1(e)7( c)7(ond)-14.9(uc)7(t e)7(x)0.7(p)-14.9(e)7(ri)-18.3(me)7(nts to )15.6(unde)-8.6(rsta)-8.6(nd )15.6(th)-14.9(e)-8.6( )]TJ +T* +-0.0005 Tc +0.0942 Tw +[(e)5.8(f)-11.2(fe)-9.8(c)5.8(t)-3.9( o)-16.1(f)4.4( indi)-19.5(v)15.1(i)-3.9(d)-16.1(u)-0.5(a)-9.8(l)11.7( )-15.6(n)-16.1(-)20(g)-16.1(r)4.4(a)-9.8(m)-3.9( c)-9.8(o)-16.1(-)20(o)-16.1(c)5.8(c)-9.8(ur)-11.2(re)-9.8(nc)5.8(e)-9.8( sc)-9.8(or)-11.2(e)5.8(s)-1.9( in )-15.7(a)5.9(p)-16.1(-)]TJ +0 -1.1719 TD +0.001 Tc +0.1396 Tw +[(proxi)-18(ma)7.3(ting)-14.6( hu)-14.6(ma)7.3(n )-15.7(a)7.3(s)-0.5(s)-16.1(e)7.3(ss)-16.1(me)7.3(nts.)-14.6( T)-13.2(a)7.3(b)-14.6(l)-2.4(e)7.4(s)-0.5( 2)-14.6( a)-8.3(nd )-15.7(3 sh)-14.6(ow)-11.2( )]TJ +0 -1.1562 TD +0.0005 Tc +0.2339 Tw +[(the)6.8( r)-10.2(e)6.8(su)-15.1(l)12.7(t)-2.9(s o)-15.1(f)5.4( th)-15.1(e)6.8(s)-1(e)6.8( )-15.6(runs )-15.6(without )-15.6(a)6.8(n)0.5(d)-15.1( with stop)-15.1(word)-15.1(s)-16.6( )]TJ +T* +0.0028 Tc +0 Tw +[(r)7.7(e)9.1(sp)-12.8(e)-6.5(c)9.1(ti)-16.2(v)18.4(e)-6.5(ly)18.4(.)-12.8( )]TJ +T* +0.0003 Tc +0.1247 Tw +[(F)9.6(o)-15.3(r e)-9(a)6.6(c)6.6(h)0.3( s)-16.8(e)6.6(t of )-15.6(DUC 20)-15.3(01 da)6.6(t)-18.7(a)6.6(, sing)-15.3(le)6.6( doc)-9(u)-15.3(m)12.5(e)-9(n)0.3(t 100)-15.2(-)]TJ +T* +0.0005 Tc +0.0308 Tw +[(word)-15.1( su)-15.1(mma)6.8(ri)-18.5(z)6.8(a)6.8(tio)-15.1(n ta)6.8(s)-16.6(k, )-15.6(m)12.7(u)-15.1(l)12.7(t)-2.9(i)-18.5(-)21(d)-15.1(o)0.5(c)-8.8(u)-15.1(me)6.8(nt 50, )-15.6(100, )-15.6(200,)-15.1( )]TJ +T* +0.0006 Tc +0.0775 Tw +[(a)6.9(nd 40)-15(0 )-15.6(-wor)-10.1(d su)-15(mma)6.9(ri)-18.4(z)6.9(a)6.9(tio)-15(n ta)6.9(sks)-16.5(,)0.6( w)-11.6(e)7( c)6.9(o)-15(mput)-18.4(e)6.9( 4 dif)-10.1(-)]TJ +T* +0.002 Tc +0.0918 Tw +[(f)6.9(e)-7.3(r)6.9(e)8.3(nt )-15.6(c)8.3(o)2(r)-8.7(r)6.9(e)-7.3(l)-1.4(a)8.3(tion st)-17(a)8.3(tistic)8.3(s)-15(:)14.2( Spe)-7.3(a)8.4(r)-8.7(m)-1.4(a)8.3(n)2( )-15.6(r)6.9(a)8.3(n)-13.6(k)2( or)6.9(d)-13.6(e)8.4(r)6.9( )-15.6(c)8.3(o)2(r)-8.7(r)6.9(e)-7.3(-)]TJ +T* +-0.0059 Tc +0.0997 Tw +[(l)-9.3(a)0.4(t)-9.3(i)-9.3(o)-5.9(n)-5.9( co)-21.5(ef)-16.6(fi)-9.3(ci)-24.9(en)-5.9(t)-9.3( \(S)-12.2(p)-5.9(e)-15.2(ar)-16.6(m)-9.3(a)0.4(n)-21.5( )]TJ +/TT15 1 Tf +11.9531 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5 0 TD +0.0118 Tc +0.0663 Tw +[(\),)11.8( )-15.7(l)24(i)8.4(near)16.7( re)18.1(gr)16.7(e)18.1(s)10.3(s)10.3(i)-7.2(o)11.8(n)11.8( )]TJ +/TT2 1 Tf +8.3594 0 TD +0 Tc +0 Tw +(t)Tj +/TT4 1 Tf +0.2969 0 TD +-0.0205 Tc +[(-t)-39.5(e)-14.2(s)-22(t)-39.5( )]TJ +-21.1094 -1.1562 TD +0.0107 Tc +[(\(L)27.8(R)]TJ +/TT2 1 Tf +6.5172 0 0 6.5172 87.932 214.4135 Tm +0 Tc +(t)Tj +/TT4 1 Tf +9.931 0 0 9.931 89.7941 215.9652 Tm +0.0155 Tc +-0.0155 Tw +[(,)15.5( 1)15.5(1)15.5( )-15.6(d)15.5(e)21.8(gr)20.4(e)6.2(e)21.8( of)20.4( )-15.6(f)20.4(r)4.8(e)21.9(e)21.8(dom)27.7( fo)15.5(r)20.4( s)14(i)12.1(ngl)27.7(e)21.8( )-15.6(do)15.5(c)21.8(u)-0.1(m)12.1(e)21.8(n)15.5(t)12.1( ta)21.8(s)14(k)15.5( )-15.6(a)21.8(n)15.5(d )]TJ +-1.7969 -1.1563 TD +-0.0002 Tc +0.0315 Tw +[(13 de)6.1(g)-15.8(r)4.7(e)-9.5(e)6.1( o)-15.8(f)4.7( fr)-10.9(e)-9.5(e)6.1(do)-15.8(m)12( f)-10.9(o)-0.2(r )-15.6(m)12(u)-15.8(l)12(t)-3.6(i)-19.2(-)4.7(do)-15.8(c)6.1(u)-15.8(me)6.1(nt ta)6.1(sk)-15.8(\), P)-6.6(e)-9.5(a)6.1(r)4.7(s)-17.3(o)-0.2(n)-15.8( )]TJ +T* +-0.0006 Tc +0.1569 Tw +[(produ)-16.2(c)5.7(t)-4( m)11.6(o)-16.2(me)5.7(nt c)5.7(o)-16.2(e)5.7(f)-11.3(fic)5.7(i)-19.6(e)5.7(n)-0.6(t )15.7(of c)5.7(o)-16.2(rr)-11.3(e)-9.9(l)11.6(a)-9.9(tion )15.7(\(P)-7(e)-9.9(a)5.7(rs)-17.7(on )]TJ +/TT15 1 Tf +21.7344 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5 0 TD +0.0132 Tc +(\), )Tj +-22.2344 -1.1563 TD +-0.0056 Tc +0.6931 Tw +[(an)-5.6(d)-5.6( co)-21.2(ef)-16.3(fi)-9(ci)-24.6(en)-5.6(t)-9( )15.6(o)-21.2(f)-0.7( )15.6(d)-21.2(e)0.7(t)-24.6(e)0.7(r)-16.3(m)6.6(i)-9(n)-21.2(at)-9(i)-9(o)-5.6(n)-21.2( \(C)-10.5(D\))-16.3( )15.7(fo)-21.2(r ea)-14.9(ch)-21.2( )]TJ +/TT2 1 Tf +T* +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7969 0 TD +0 Tc +(\()Tj +/TT2 1 Tf +0.3281 0 TD +(i)Tj +/TT4 1 Tf +0.2813 0 TD +(,)Tj +/TT2 1 Tf +0.25 0 TD +(j)Tj +/TT4 1 Tf +0.2813 0 TD +0.0002 Tc +0.0936 Tw +[(\) e)-9.1(v)15.8(a)-9.1(l)-3.2(ua)6.5(tion)-15.4( m)12.4(e)6.5(t)-18.8(r)5.1(ic)6.5(. Amo)-15.4(ng )15.7(t)-18.8(h)0.2(e)-9.1(m)12.4( )15.7(S)-6.2(p)-15.4(e)6.5(a)-9(r)-10.5(m)-3.2(a)6.5(n)0.2( )]TJ +/TT15 1 Tf +18.3906 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5156 0 TD +( )Tj +-22.8438 -1.1563 TD +0.0006 Tc +0.4056 Tw +[(is a)6.9( nonp)-15(a)6.9(r)-10.1(a)-8.7(m)-2.8(e)7(t)-2.8(ri)-18.4(c)6.9( te)6.9(st, )-15.7(a)6.9( high)-15(e)6.9(r)5.5( )-15.7(nu)-15(m)12.8(b)0.6(e)-8.7(r)5.5( indi)-18.4(c)6.9(a)6.9(t)-18.4(e)6.9(s)-16.5( )]TJ +T* +-0.0056 Tc +0.1306 Tw +[(h)-5.6(i)-9(g)-5.6(h)-5.6(e)-14.9(r co)-21.2(rr)-16.3(e)-14.9(l)6.6(at)-9(i)-24.6(o)-5.6(n)-5.6(;)-9( wh)-5.6(i)-24.6(l)-9(e t)-9(h)-5.6(e )-15.6(o)-5.6(t)-9(h)-5.6(e)-14.9(r t)-9(h)-5.6(r)-16.3(ee t)-24.6(e)0.7(s)-7.1(t)-9(s)-7.1( a)-14.9(r)-0.7(e p)-21.2(a)0.7(r)-16.2(a)-14.9(-)]TJ +T* +0.0016 Tc +0.139 Tw +[(me)7.9(tr)6.5(i)-17.4(c)7.9( te)-7.7(sts. H)5(i)-17.4(ghe)-7.7(r)6.5( )-15.7(LR)]TJ +/TT2 1 Tf +6.5172 0 0 6.5172 170.0182 134.0342 Tm +0 Tc +0 Tw +(t)Tj +/TT4 1 Tf +9.931 0 0 9.931 171.8802 135.5859 Tm +0.0005 Tc +0.1401 Tw +[(, P)-5.9(e)-8.8(a)6.8(r)5.4(so)-15.1(n )]TJ +/TT15 1 Tf +4.2188 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5 0 TD +0.0016 Tc +0.139 Tw +[(,)-14( a)-7.7(nd CD)-10.6( a)-7.7(l)13.8(so)-14( sug)-14(-)]TJ +-14.7813 -1.1563 TD +0.0005 Tc +-0.0005 Tw +[(ge)6.8(sts hig)-15.1(h)0.5(e)-8.8(r)5.4( )-15.6(l)12.7(i)-2.9(ne)-8.8(a)-8.8(r)5.4( c)-8.8(o)0.5(rr)-10.2(e)-8.8(l)-2.9(a)6.8(tion. )]TJ +T* +0.0001 Tc +0.2655 Tw +[(Ana)-9.2(l)-18.9(y)15.7(z)6.4(in)-15.5(g a)-9.2(l)-3.3(l)12.3( runs a)-9.2(c)6.4(c)-9.2(o)0.1(rdi)-18.9(ng to T)-14(a)6.4(ble)6.4(s)-1.4( 2 a)6.4(nd 3, w)-12.1(e)-9.2( )]TJ +T* +0.0008 Tc +-0.0008 Tw +[(ma)7.1(k)-14.8(e)7.1( the)-8.5( fo)-14.8(ll)13(o)-14.8(w)4.2(ing )-15.6(obse)-8.5(r)-9.9(va)7.1(tions)-16.3(:)13( )]TJ +T* +-0.0025 Tc +0 Tw +(\(1\))Tj +/TT10 1 Tf +1.1719 0 TD +0 Tc +( )Tj +/TT4 1 Tf +0.7188 0 TD +0.0015 Tc +0.9048 Tw +[(S)-4.9(i)-1.9(m)13.7(p)-14.1(le)7.8( unig)-14.1(r)6.4(a)-7.8(m)13.7(, )]TJ +/TT2 1 Tf +8.75 0 TD +0.0205 Tc +0 Tw +[(Ng)20.5(r)19(a)20.5(m)]TJ +/TT4 1 Tf +2.8125 0 TD +-0.001 Tc +0.9073 Tw +[(\(1,1)-16.6(\), a)-10.3(n)-16.6(d bi)-20(-)19.5(g)-1(r)-11.7(a)-10.3(m)11.2(,)-16.6( )]TJ +/TT2 1 Tf +-11.5625 -1.1562 TD +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7969 0 TD +0.0018 Tc +0.4201 Tw +[(\()6.7(2,2)-13.8(\))6.7(,)1.8( c)8.1(o)-13.8(-)6.7(o)1.8(c)-7.5(c)8.1(u)-13.8(r)6.7(r)-8.9(e)8.1(nc)-7.5(e)-7.5( )15.6(sta)8.1(tistic)-7.5(s)-15.3( )15.7(c)8.1(o)-13.8(nsiste)8.1(nt)-17.2(ly )]TJ +21.4844 17.4063 TD +-0.0009 Tc +0.5165 Tw +[(outpe)-10.2(rfo)-16.5(r)-11.6(m)11.3( \()-11.6(0.99 )]TJ +/F2 1 Tf +8.1563 0 TD +0 Tc +0 Tw +()Tj +/TT4 1 Tf +0.5469 0 TD +0.0076 Tc +0.508 Tw +[( Sp)7.6(ea)13.9(rma)13.9(n)7.6( )]TJ +/TT15 1 Tf +5.5625 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5 0 TD +( )Tj +/F2 1 Tf +0.7813 0 TD +()Tj +/TT4 1 Tf +0.5469 0 TD +-0.0008 Tc +0.5164 Tw +[( 0.75)-16.4(\) the)-10.1( )]TJ +-16.0938 -1.1719 TD +0.0146 Tc +0.376 Tw +[(w)18(e)20.9(i)11.2(g)-1(h)14.6(t)11.2(e)20.9(d)-1( )15.6(a)5.3(v)14.6(e)5.3(r)19.5(a)20.9(g)-1(e)21( o)14.6(f)19.5( n-)35.1(gr)19.5(a)5.3(m)11.2( )15.6(of)19.5( v)14.6(a)20.9(ri)11.2(a)20.9(b)-1(l)26.8(e)5.3( l)26.8(e)20.9(ng)14.6(t)11.2(h)-1( )]TJ +/TT2 1 Tf +0 -1.2188 TD +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7969 0 TD +-0.0012 Tc +0.1106 Tw +[(\(1, 4\) )-15.6(\(0.88 )]TJ +/F2 1 Tf +5.0937 0 TD +0 Tc +0 Tw +()Tj +/TT4 1 Tf +0.5469 0 TD +0.0076 Tc +0.1018 Tw +[( Sp)7.6(ea)13.9(rma)13.9(n)7.6( )]TJ +/TT15 1 Tf +4.7344 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5 0 TD +( )Tj +/F2 1 Tf +0.3594 0 TD +()Tj +/TT4 1 Tf +0.5469 0 TD +0.0008 Tc +0.1086 Tw +[( 0.)-14.8(55\) in sing)-14.8(le)-8.5( )]TJ +-14.5781 -1.1719 TD +0.0011 Tc +0.1864 Tw +[(a)7.4(nd )-15.6(m)13.3(u)-14.5(l)13.3(tip)-14.5(le)7.4( do)-14.5(c)7.5(u)-14.5(me)7.4(nt ta)7.4(sks )-15.6(wh)-14.5(e)7.4(n)1.1( st)-17.9(opwo)-14.5(r)6(ds a)-8.2(r)6(e)-8.2( )]TJ +0 -1.1563 TD +-0.0007 Tc +0.157 Tw +[(ignor)-11.4(e)5.6(d. )-15.6(Im)11.5(p)-16.3(o)-0.7(rt)-19.7(a)5.6(n)-0.7(t)-19.7(l)-4.1(y)14.9(,)-0.7( unig)-16.3(r)4.2(a)-10(m)11.5( p)-16.3(e)5.6(r)-11.4(f)4.2(or)-11.4(m)11.5(s)-2.2( e)5.7(s)-17.8(pe)-10(c)5.6(i)-4.1(a)-10(l)-4.1(l)-19.7(y)-0.7( )]TJ +T* +0.0027 Tc +0.2004 Tw +[(w)6.1(e)-6.6(ll)14.9( w)6.1(ith )15.6(S)-19.3(p)2.7(e)-6.6(a)9(r)-8(m)-0.7(a)9(n)-12.9( )]TJ +/TT15 1 Tf +8.875 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5 0 TD +0.1875 Tw +[( )-15.6(ra)-9.3(nging)-15.6( f)-10.7(r)4.9(o)-15.6(m)12.2( )-15.6(0.88 to)-15.6( 0.9)-15.6(9)-15.6( )]TJ +-9.375 -1.1563 TD +0.0018 Tc +0.1076 Tw +[(tha)8.1(t)-1.6( is be)8.1(tt)-17.2(e)8.1(r)6.7( th)-13.8(a)8.1(n)1.8( th)-13.8(e)8.1( b)-13.8(e)8.1(st c)-7.5(a)8.1(se)8.1( in )-15.6(w)5.2(h)1.8(i)-17.2(c)8.1(h w)-10.3(e)8.1(ight)-17.2(e)8.1(d)-13.8( )]TJ +T* +0.0007 Tc +0.1087 Tw +[(a)-8.6(v)16.3(e)-8.6(r)-10(a)7(g)0.7(e)7( o)-14.9(f)5.6( )-15.6(va)7(ri)-18.3(a)7(b)-14.9(l)12.9(e)7( )-15.6(le)7(ngth n)-14.9(-)5.6(gr)-10(a)-8.6(m)12.9( )-15.6(ma)7(t)-18.3(c)7(he)-8.6(s is use)7(d)-14.9( )]TJ +T* +0.0149 Tw +[(a)7(nd )15.6(is c)7(onsist)-18.3(e)7(nt a)7(c)-8.6(ross diff)-10(e)-8.6(r)5.6(e)7(n)0.7(t da)7(t)-18.3(a)7( )15.6(s)-16.4(e)7(ts. )]TJ +-1.8906 -1.1719 TD +-0.0025 Tc +0 Tw +(\(2\))Tj +/TT10 1 Tf +1.1719 0 TD +0 Tc +( )Tj +/TT4 1 Tf +0.7187 0 TD +-0.0063 Tc +0.5063 Tw +[(T)-20.5(h)-6.3(e p)-6.3(e)0(r)-17(f)-1.4(o)-6.3(r)-17(m)-9.7(a)0(n)-21.9(c)-15.6(e o)-6.3(f)-1.4( w)-18.5(e)0.1(i)-9.7(g)-6.3(h)-6.3(t)-25.3(ed)-6.3( a)-15.6(v)-6.3(e)-15.6(r)-17(ag)-6.3(e n)-21.9(-)-1.4(g)-21.9(r)-1.4(a)-15.6(m)-9.7( )]TJ +0 -1.1563 TD +0.0006 Tc +0.0306 Tw +[(sc)6.9(or)-10.1(e)6.9(s)-0.9( is in the)6.9( r)-10.1(a)6.9(ng)-15(e)6.9( b)-15(e)6.9(tw)-11.6(e)6.9(e)6.9(n)0.6( bi)-18.4(-gr)-10.1(a)-8.7(m)12.8( )-15.7(a)6.9(nd tri)-18.4(-)5.5(gr)-10.1(a)-8.7(m)-2.8( )]TJ +T* +0.0008 Tc +0.3897 Tw +[(c)7.1(o)-14.8(-oc)-8.5(c)7.1(ur)-9.9(r)-9.9(e)7.1(nc)-8.5(e)7.1( s)-16.3(c)7.1(or)-9.9(e)7.1(s)-0.7(. T)-13.4(h)0.8(is )-15.8(m)13(i)-2.6(ght s)-16.3(ugge)7.1(st so)-14.8(me)-8.5( )]TJ +T* +-0.006 Tc +0.1154 Tw +[(s)-7.5(u)-6(m)-9.4(m)-9.4(a)-15.3(ri)-9.4(es)-7.5( )-15.6(ar)-16.7(e o)-21.6(v)-6(e)-15.3(r)-16.7(-)14.5(p)-21.6(en)-21.6(a)-15.3(l)6.2(i)-9.4(z)-15.3(ed)-6( b)-21.6(y)9.6( t)-25(h)-6(e )-15.6(wei)-9.4(g)-21.6(h)-6(t)-9.4(ed)-6( )-15.6(a)-15.2(v)-6(-)]TJ +T* +0.3498 Tw +[(er)-16.8(ag)-21.7(e )-15.7(m)6.1(e)0.2(t)-25.1(r)-1.2(i)-9.5(c)0.2( d)-6.1(u)-21.7(e t)-9.5(o)-6.1( t)-9.5(h)-21.7(e l)-9.5(a)-15.4(ck)-6.1( o)-6.1(f)-1.2( )-15.7(l)6.1(o)-21.7(n)-6.1(g)-6.1(e)-15.4(r n)-21.7(-)14.4(g)-21.7(r)-1.2(a)-15.4(m)-25.1( )]TJ +T* +0.0004 Tc +0.5777 Tw +[(ma)6.7(tc)-8.9(he)6.7(s. F)9.7(o)0.4(r e)6.7(x)-15.2(a)-8.9(m)12.6(p)-15.2(l)12.6(e)-8.9(,)0.4( )15.6(gi)-18.6(v)16(e)6.7(n a)6.7( )15.6(m)12.6(o)-15.2(de)-8.9(l)12.6( )15.6(strin)-15.2(g)-15.2( )]TJ +T* +0 Tc +0 Tw +()Tj +/TT2 1 Tf +0.4531 0 TD +0.001 Tc +0.2178 Tw +[(Unite)7.3(d)-14.6( State)7.3(s)-16.1(, )-15.6(J)7.4(apa)-14.6(n, a)-14.6(nd T)-5.3(a)1(iwa)-14.6(n)]TJ +/TT4 1 Tf +14.5313 0 TD +0.0093 Tc +0.2094 Tw +[()15.7(,)-6.3( a ca)15.6(n)9.3(d)9.3(i)5.9(d)-6.3(a)15.6(t)-9.7(e)0( )]TJ +ET +1 1 1 sc +309.984 296.81 226.707 -36 re +f +BT +9.931 0 0 9.931 317.1216 284.0859 Tm +0 0 0 sc +-0.0003 Tc +0.0784 Tw +[(T)-14.5(a)6(ble)6( 3. Va)-9.6(rious )]TJ +/TT2 1 Tf +7.1875 0 TD +0.002 Tc +0 Tw +[(Ngra)-13.6(m)]TJ +/TT4 1 Tf +2.7969 0 TD +0 Tc +(\()Tj +/TT2 1 Tf +0.3281 0 TD +(i)Tj +/TT4 1 Tf +0.2813 0 TD +(, )Tj +/TT2 1 Tf +0.5781 0 TD +(j)Tj +/TT4 1 Tf +0.2813 0 TD +0.0114 Tc +0.0667 Tw +[(\))16.3( ra)17.7(n)11.4(k)11.4(/)8(s)-5.7(c)17.7(ore)17.7( c)17.7(o)11.4(rre)17.7(l)8(a)17.7(t)8(i)8(o)11.4(n)11.5(s)-5.7( )]TJ +-11.4531 -1.1875 TD +0.0019 Tc +-0.0019 Tw +[(f)6.8(o)1.9(r)6.8( 4)-13.7( dif)-8.8(f)6.8(e)-7.4(r)6.8(e)-7.4(n)1.9(t sta)8.2(tisti)-17.1(c)8.2(s)0.4( \()-8.8(w)5.3(ith stop)-13.7(w)5.3(o)-13.7(r)6.8(d)-13.7(s\))6.8(. )]TJ +ET +1 1 1 sc +309.984 548.81 226.707 -81 re +f +BT +9.931 0 0 9.931 317.1216 536.0859 Tm +0 0 0 sc +0.0003 Tc +0.1403 Tw +[(T)-13.9(a)6.6(ble)6.6( 2. V)-11.9(a)6.6(rious )]TJ +/TT2 1 Tf +7.375 0 TD +0.0025 Tc +0 Tw +[(Ngr)-14.6(a)2.5(m)]TJ +/TT4 1 Tf +2.8125 0 TD +0 Tc +(\()Tj +/TT2 1 Tf +0.3281 0 TD +(i)Tj +/TT4 1 Tf +0.2813 0 TD +(,)Tj +/TT2 1 Tf +0.25 0 TD +(j)Tj +/TT4 1 Tf +0.2812 0 TD +-0.0007 Tc +0.1413 Tw +[(\) r)-11.4(a)5.6(nk/s)-17.8(c)5.6(or)-11.4(e)5.6( c)5.6(o)-16.3(rr)-11.4(e)-10(l)11.5(a)5.6(tions)-33.4( )]TJ +-11.3281 -1.1719 TD +0.0006 Tc +0.0775 Tw +[(for )-15.7(4 dif)-10.1(f)5.5(e)-8.7(r)5.5(e)-8.7(n)0.6(t sta)6.9(tisti)-18.4(c)6.9(s)-0.9( \()-10.1(w)4(ithout st)-18.4(op)-15(word)-15(s\))-10.1(:)12.8( S)-5.8(p)-15(e)6.9(a)-8.6(r)-10.1(-)]TJ +0 -1.1563 TD +-0.0058 Tc +0.037 Tw +[(m)-9.2(a)0.5(n)-287(r)-0.9(a)-15.1(n)-5.8(k)-5.8( )15.6(o)-21.4(r)-0.9(d)-21.4(e)0.5(r co)-21.4(ef)-16.5(fi)-9.2(ci)-24.8(en)-5.8(t)-9.2( co)-21.4(rr)-16.5(e)-15.1(l)6.4(at)-9.2(i)-9.2(o)-5.8(n)-21.4( \(S)-12.2(p)-5.8(e)-15.1(ar)-16.5(m)-9.2(a)0.5(n)-5.8( )]TJ +/TT15 1 Tf +20.2969 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5 0 TD +-0.0049 Tc +[(\),)-20.5( )]TJ +-20.7969 -1.1563 TD +0.0144 Tc +0.1887 Tw +[(l)26.6(i)11(ne)20.7(a)5.1(r)19.3( r)19.3(e)20.7(gre)20.7(s)12.9(s)12.9(i)11(o)14.4(n)-1.2( )]TJ +/TT2 1 Tf +7.3125 0 TD +0 Tc +0 Tw +(t)Tj +/TT4 1 Tf +0.2969 0 TD +-0.0205 Tc +0.208 Tw +[(-t)-23.9(e)-14.2(s)-22(t)-39.5( \()-31.2(L)-19(R)]TJ +/TT2 1 Tf +6.5172 0 0 6.5172 430.2423 499.9307 Tm +0 Tc +0 Tw +(t)Tj +/TT4 1 Tf +9.931 0 0 9.931 432.1044 501.4825 Tm +-0.0009 Tc +0.1884 Tw +[(\), P)-22.9(e)5.4(a)-10.2(r)4(son)-16.5( pro)-16.5(duc)5.4(t)-19.9( )-15.6(m)11.4(o)-16.5(-)]TJ +-11.5781 -1.1563 TD +0.002 Tc +0.123 Tw +[(me)8.3(nt c)8.3(o)2(e)-7.3(f)6.9(f)6.9(i)-17(c)8.3(i)-1.4(e)-7.3(n)2(t )15.6(of)6.9( c)8.3(o)2(r)-8.7(r)-8.7(e)8.3(la)8.3(tion \()6.9(P)-4.4(e)-7.3(a)8.3(r)6.9(s)-15.1(o)-13.6(n)2( )]TJ +/TT15 1 Tf +16.8438 0 TD +0 Tc +0 Tw +(!)Tj +/TT4 1 Tf +0.5 0 TD +-0.001 Tc +0.126 Tw +[(\), a)5.3(nd c)5.4(o)-16.6(-)]TJ +-17.3438 -1.1719 TD +-0.0001 Tc +0.0001 Tw +[(e)6.2(f)-10.8(fic)6.2(i)-19.1(e)6.2(n)-0.1(t o)-15.7(f)4.8( de)6.2(t)-19.1(e)6.3(r)-10.8(m)12.1(i)-19.1(n)-0.1(a)6.2(tio)-15.7(n \(C)-20.6(D\). )]TJ +ET +0.749 0.749 0.749 sc +1 i +375.622 719.5 161.224 -6.517 re +f +0.796 1 1 sc +310.449 713.293 226.396 -27.31 re +f +310.449 658.672 226.396 -28.086 re +f +310.449 603.12 226.396 -28.086 re +f +BT +/TT14 1 Tf +5.362 0 0 4.9382 376.863 714.9997 Tm +0 0 0 sc +-0.0276 Tc +0 Tw +[(Ng)-24.5(r)-14.7(a)-21.3(m)]TJ +/TT8 1 Tf +3.2991 -0.0314 TD +-0.0147 Tc +[(\(1)20.5(,)-55.2(4)20.5(\))]TJ +/TT14 1 Tf +2.6914 0.0314 TD +-0.0276 Tc +[(Ng)-24.5(r)-14.7(a)-21.3(m)]TJ +/TT8 1 Tf +3.2991 -0.0314 TD +-0.0147 Tc +[(\(1)-8.4(,)-26.3(1)-8.4(\))]TJ +/TT14 1 Tf +2.6914 0.0314 TD +-0.0276 Tc +[(Ng)-53.4(r)-14.7(a)7.6(m)]TJ +/TT8 1 Tf +3.328 -0.0314 TD +-0.0436 Tc +[(\(2)-37.3(,)-84.1(2)-8.4(\))]TJ +/TT14 1 Tf +2.6914 0.0314 TD +-0.0276 Tc +[(Ng)-24.5(r)-14.7(a)-21.3(m)]TJ +/TT8 1 Tf +3.2991 -0.0314 TD +-0.0147 Tc +[(\(3)20.5(,)-55.2(3)20.5(\))]TJ +/TT14 1 Tf +2.6914 0.0314 TD +-0.0276 Tc +[(Ng)-24.5(r)-43.6(a)7.6(m)]TJ +/TT8 1 Tf +3.2991 -0.0314 TD +-0.0147 Tc +[(\(4)-8.4(,)-26.3(4)-8.4(\))]TJ +-39.5312 -1.3198 TD +-0.0031 Tc +0.0436 Tw +[(S)-30.7(i)-43.6(ngl)-43.6(e)-54.7( D)24.5(o)0(c)-517.7(S)-30.7(pe)-54.7(a)-83.6(r)9.8(m)-40(a)-54.7(n )]TJ +/TT16 1 Tf +11.2285 0 TD +0 Tc +0 Tw +(!)Tj +/TT10 1 Tf +4.1673 0.0314 TD +-0.0352 Tc +[(0.)-75.7(6)-28.9(0)0(4)-3559.5(0)-28.9(.)-46.8(9)-28.9(89)-3559.5(0)-28.9(.)-75.7(86)-28.9(8)-3559.5(0)0(.)-75.7(5)-28.9(27)-3559.5(0)-28.9(.)-46.8(5)-28.9(0)0(5)]TJ +/TT8 1 Tf +-15.3957 -1.414 TD +-0.0063 Tc +[(10)28.9(0)-4225.1(L)-3.2(R)]TJ +/TT14 1 Tf +3.712 0 0 3.4186 349.5526 700.7238 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.362 0 0 4.9382 393.7768 701.9652 Tm +-0.0352 Tc +[(1.)-75.7(0)-28.9(2)0(5)-3559.5(7)-28.9(.)-46.8(1)-28.9(30)-3559.5(2)-28.9(.)-75.7(44)-28.9(4)-3559.5(0)0(.)-75.7(7)-28.9(04)-3559.5(0)-28.9(.)-46.8(0)-28.9(5)0(3)]TJ +/TT8 1 Tf +-9.55 -1.4769 TD +0.0516 Tc +[(P)24(ear)35.6(s)144.7(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.312 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.238 0.0314 TD +-0.0352 Tc +[(0.)-75.7(2)-28.9(9)0(5)-3559.5(0)-28.9(.)-46.8(9)-28.9(07)-3559.5(0)-28.9(.)-75.7(59)-28.9(3)-3559.5(0)0(.)-75.7(2)-28.9(08)-3559.5(0)-28.9(.)-46.8(0)-28.9(1)0(6)]TJ +/TT8 1 Tf +-9.55 -1.2569 TD +-0.0276 Tc +(CD)Tj +/TT10 1 Tf +9.55 0.0314 TD +-0.0352 Tc +[(0.)-75.7(0)-28.9(8)0(7)-3559.5(0)-28.9(.)-46.8(8)-28.9(22)-3559.5(0)-28.9(.)-75.7(35)-28.9(2)-3559.5(0)0(.)-75.7(0)-28.9(43)-3559.5(0)-28.9(.)-46.8(0)-28.9(0)0(0)]TJ +/TT8 1 Tf +-15.3957 -1.5083 TD +0.0116 Tc +[(M)5.4(u)-14.2(lt)26.3(i-)26.3(D)39.2(o)14.7(c)-1284.3(S)-16(p)14.7(e)-40(a)-68.9(r)24.5(m)-25.3(a)-40(n)14.7( )]TJ +/TT16 1 Tf +11.2285 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +4.1673 0.0314 TD +-0.0352 Tc +[(0.)-75.7(8)-28.9(7)0(5)-3559.5(0)-28.9(.)-46.8(9)-28.9(93)-3559.5(0)-28.9(.)-75.7(95)-28.9(0)-3559.5(0)0(.)-75.7(7)-28.9(82)-3559.5(0)-28.9(.)-46.8(7)-28.9(3)0(6)]TJ +/TT8 1 Tf +-15.3957 -1.4769 TD +-0.0276 Tc +[(Al)-68.1(l)-4582.6(L)-24.5(R)]TJ +/TT18 1 Tf +3.712 0 0 3.4186 349.5526 673.4135 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.362 0 0 4.9382 393.7768 674.9652 Tm +-0.0063 Tc +[(3)28.9(.)-46.8(91)28.9(0)-2980.7(13.)-17.9(23)28.9(0)-3530.6(5)0(.)-46.8(8)28.9(30)-3530.6(3)28.9(.)-46.8(35)28.9(6)-3530.6(2)0(.)-17.9(4)0(8)28.9(0)]TJ +/TT8 1 Tf +-9.55 -1.634 TD +0.0516 Tc +[(P)24(ear)35.6(s)144.7(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.312 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.238 0.0314 TD +-0.0352 Tc +[(0.)-75.7(7)-28.9(3)0(5)-3559.5(0)-28.9(.)-46.8(9)-28.9(65)-3559.5(0)-28.9(.)-75.7(85)-28.9(1)-3559.5(0)0(.)-75.7(6)-28.9(81)-3559.5(0)-28.9(.)-46.8(5)-28.9(6)0(7)]TJ +/TT8 1 Tf +-9.55 -1.2569 TD +-0.0276 Tc +(CD)Tj +/TT10 1 Tf +9.55 0.0314 TD +-0.0352 Tc +[(0.)-75.7(5)-28.9(4)0(0)-3559.5(0)-28.9(.)-46.8(9)-28.9(31)-3559.5(0)-28.9(.)-75.7(72)-28.9(3)-3559.5(0)0(.)-75.7(4)-28.9(64)-3559.5(0)-28.9(.)-46.8(3)-28.9(2)0(1)]TJ +/TT8 1 Tf +-15.3957 -1.5083 TD +0.0116 Tc +[(M)5.4(u)-14.2(lt)26.3(i-)26.3(D)39.2(o)14.7(c)-1284.3(S)-16(p)14.7(e)-40(a)-68.9(r)24.5(m)-25.3(a)-40(n)14.7( )]TJ +/TT16 1 Tf +11.2285 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +4.1673 0.0314 TD +-0.0352 Tc +[(0.)-75.7(5)-28.9(4)0(6)-3559.5(0)-28.9(.)-46.8(8)-28.9(79)-3559.5(0)-28.9(.)-75.7(74)-28.9(6)-3559.5(0)0(.)-75.7(4)-28.9(96)-3559.5(0)-28.9(.)-46.8(3)-28.9(4)0(3)]TJ +/TT8 1 Tf +-15.3957 -1.4769 TD +-0.0047 Tc +[(50)-4744.4(LR)]TJ +/TT18 1 Tf +3.712 0 0 3.4186 349.5526 645.6376 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.362 0 0 4.9382 393.7768 647.3445 Tm +-0.0352 Tc +[(2.)-75.7(1)-28.9(4)0(2)-3559.5(5)-28.9(.)-46.8(6)-28.9(81)-3559.5(3)-28.9(.)-75.7(35)-28.9(0)-3559.5(2)0(.)-75.7(8)-28.9(46)-3559.5(2)-28.9(.)-46.8(6)-28.9(6)0(4)]TJ +/TT8 1 Tf +-9.55 -1.6654 TD +0.0516 Tc +[(P)24(ear)35.6(s)144.7(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.312 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.238 0.0314 TD +-0.0352 Tc +[(0.)-75.7(5)-28.9(1)0(1)-3559.5(0)-28.9(.)-46.8(8)-28.9(44)-3559.5(0)-28.9(.)-75.7(68)-28.9(1)-3559.5(0)0(.)-75.7(6)-28.9(20)-3559.5(0)-28.9(.)-46.8(5)-28.9(9)0(4)]TJ +/TT8 1 Tf +-9.55 -1.2569 TD +-0.0276 Tc +(CD)Tj +/TT10 1 Tf +9.55 0.0314 TD +-0.0352 Tc +[(0.)-75.7(2)-28.9(6)0(1)-3559.5(0)-28.9(.)-46.8(7)-28.9(13)-3559.5(0)-28.9(.)-75.7(46)-28.9(3)-3559.5(0)0(.)-75.7(3)-28.9(84)-3559.5(0)-28.9(.)-46.8(3)-28.9(5)0(3)]TJ +/TT8 1 Tf +-15.3957 -1.4769 TD +0.0116 Tc +[(M)5.4(u)-14.2(lt)26.3(i-)26.3(D)39.2(o)14.7(c)-1284.3(S)-16(p)14.7(e)-40(a)-68.9(r)24.5(m)-25.3(a)-40(n)14.7( )]TJ +/TT16 1 Tf +11.2285 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +4.1673 0.0314 TD +-0.0352 Tc +[(0.)-75.7(5)-28.9(7)0(5)-3559.5(0)-28.9(.)-46.8(8)-28.9(96)-3559.5(0)-28.9(.)-75.7(76)-28.9(1)-3559.5(0)0(.)-75.7(5)-28.9(43)-3559.5(0)-28.9(.)-46.8(4)-28.9(6)0(8)]TJ +/TT8 1 Tf +-15.3957 -1.5083 TD +-0.0063 Tc +[(10)28.9(0)-4225.1(L)-3.2(R)]TJ +/TT18 1 Tf +3.712 0 0 3.4186 349.5526 617.8618 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.362 0 0 4.9382 393.7768 619.5687 Tm +-0.0352 Tc +[(2.)-75.7(3)-28.9(6)0(9)-3559.5(7)-28.9(.)-46.8(8)-28.9(73)-3559.5(3)-28.9(.)-75.7(64)-28.9(1)-3559.5(1)0(.)-75.7(8)-28.9(28)-3559.5(1)-28.9(.)-46.8(3)-28.9(8)0(5)]TJ +/TT8 1 Tf +-9.55 -1.634 TD +0.0516 Tc +[(P)24(ear)35.6(s)144.7(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.312 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.238 0.0314 TD +-0.0352 Tc +[(0.)-75.7(5)-28.9(4)0(9)-3559.5(0)-28.9(.)-46.8(9)-28.9(09)-3559.5(0)-28.9(.)-75.7(71)-28.9(1)-3559.5(0)0(.)-75.7(4)-28.9(52)-3559.5(0)-28.9(.)-46.8(3)-28.9(5)0(9)]TJ +/TT8 1 Tf +-9.55 -1.2883 TD +-0.0276 Tc +(CD)Tj +/TT10 1 Tf +9.55 0.0314 TD +-0.0352 Tc +[(0.)-75.7(3)-28.9(0)0(1)-3559.5(0)-28.9(.)-46.8(8)-28.9(27)-3559.5(0)-28.9(.)-75.7(50)-28.9(5)-3559.5(0)0(.)-75.7(2)-28.9(04)-3559.5(0)-28.9(.)-46.8(1)-28.9(2)0(9)]TJ +/TT8 1 Tf +-15.3957 -1.4769 TD +0.0116 Tc +[(M)5.4(u)-14.2(lt)26.3(i-)26.3(D)39.2(o)14.7(c)-1284.3(S)-16(p)14.7(e)-40(a)-68.9(r)24.5(m)-25.3(a)-40(n)14.7( )]TJ +/TT16 1 Tf +11.2285 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +4.1673 0.0314 TD +-0.0352 Tc +[(0.)-75.7(7)-28.9(7)0(5)-3559.5(0)-28.9(.)-46.8(9)-28.9(79)-3559.5(0)-28.9(.)-75.7(90)-28.9(4)-3559.5(0)0(.)-75.7(7)-28.9(82)-3559.5(0)-28.9(.)-46.8(7)-28.9(5)0(4)]TJ +/TT8 1 Tf +-15.3957 -1.5083 TD +-0.0063 Tc +[(20)28.9(0)-4225.1(L)-3.2(R)]TJ +/TT18 1 Tf +3.712 0 0 3.4186 349.5526 590.2411 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.362 0 0 4.9382 393.7768 591.7928 Tm +-0.0063 Tc +[(3)28.9(.)-46.8(24)28.9(3)-2980.7(15.)-17.9(64)28.9(8)-3530.6(4)0(.)-46.8(9)28.9(29)-3530.6(2)28.9(.)-46.8(77)28.9(2)-3530.6(2)0(.)-17.9(1)0(2)28.9(6)]TJ +/TT8 1 Tf +-9.55 -1.634 TD +0.0516 Tc +[(P)24(ear)35.6(s)144.7(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.312 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.238 0.0314 TD +-0.0352 Tc +[(0.)-75.7(6)-28.9(6)0(9)-3559.5(0)-28.9(.)-46.8(9)-28.9(74)-3559.5(0)-28.9(.)-75.7(80)-28.9(7)-3559.5(0)0(.)-75.7(6)-28.9(09)-3559.5(0)-28.9(.)-46.8(5)-28.9(0)0(8)]TJ +/TT8 1 Tf +-9.55 -1.2569 TD +-0.0276 Tc +(CD)Tj +/TT10 1 Tf +9.55 0.0314 TD +-0.0352 Tc +[(0.)-75.7(4)-28.9(4)0(7)-3559.5(0)-28.9(.)-46.8(9)-28.9(50)-3559.5(0)-28.9(.)-75.7(65)-28.9(1)-3559.5(0)0(.)-75.7(3)-28.9(71)-3559.5(0)-28.9(.)-46.8(2)-28.9(5)0(8)]TJ +/TT8 1 Tf +-15.3957 -1.5083 TD +0.0116 Tc +[(M)5.4(u)-14.2(lt)26.3(i-)26.3(D)39.2(o)14.7(c)-1284.3(S)-16(p)14.7(e)-40(a)-68.9(r)24.5(m)-25.3(a)-40(n)14.7( )]TJ +/TT16 1 Tf +11.2285 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +4.1673 0.0314 TD +-0.0352 Tc +[(0.)-75.7(8)-28.9(6)0(1)-3559.5(0)-28.9(.)-46.8(9)-28.9(82)-3559.5(0)-28.9(.)-75.7(96)-28.9(1)-3559.5(0)0(.)-75.7(8)-28.9(54)-3559.5(0)-28.9(.)-46.8(6)-28.9(6)0(1)]TJ +/TT8 1 Tf +-15.3957 -1.4769 TD +-0.0063 Tc +[(40)28.9(0)-4225.1(L)-3.2(R)]TJ +/TT18 1 Tf +3.712 0 0 3.4186 349.5526 562.4652 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.362 0 0 4.9382 393.7768 564.1721 Tm +-0.0063 Tc +[(4)28.9(.)-46.8(39)28.9(0)-2980.7(10.)-17.9(56)28.9(9)-3530.6(6)0(.)-46.8(4)28.9(09)-3530.6(3)28.9(.)-46.8(90)28.9(7)-3530.6(2)0(.)-17.9(7)0(5)28.9(5)]TJ +/TT8 1 Tf +-9.55 -1.6654 TD +0.0516 Tc +[(P)24(ear)35.6(s)144.7(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.312 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.238 0.0314 TD +-0.0352 Tc +[(0.)-75.7(7)-28.9(7)0(3)-3559.5(0)-28.9(.)-46.8(9)-28.9(46)-3559.5(0)-28.9(.)-75.7(87)-28.9(2)-3559.5(0)0(.)-75.7(7)-28.9(35)-3559.5(0)-28.9(.)-46.8(6)-28.9(0)0(7)]TJ +/TT8 1 Tf +-9.55 -1.3198 TD +-0.0276 Tc +(CD)Tj +/TT10 1 Tf +9.55 0.0314 TD +-0.0352 Tc +[(0.)-75.7(5)-28.9(9)0(7)-3559.5(0)-28.9(.)-46.8(8)-28.9(96)-3559.5(0)-28.9(.)-75.7(76)-28.9(0)-3559.5(0)0(.)-75.7(5)-28.9(40)-3559.5(0)-28.9(.)-46.8(3)-28.9(6)0(9)]TJ +ET +/Cs5 CS 0 0 0 SC +0 J 0 j 0.155 w 10 M []0 d +310.294 719.81 m +375.156 719.81 l +S +310.449 719.81 64.707 -0.31 re +f +q +376.242 719.655 160.603 0.155 re +W n +376.242 719.81 m +536.846 719.81 l +S +Q +376.397 719.81 160.448 -0.31 re +f +0.749 0.749 0.749 SC +341.328 719.5 m +341.328 713.448 l +S +0.749 0.749 0.749 sc +341.328 719.5 0.466 -6.207 re +f +0 0 0 SC +310.294 713.448 m +375.156 713.448 l +S +0 0 0 sc +310.449 713.293 64.707 -0.31 re +f +q +376.242 713.138 160.603 0.31 re +W n +376.242 713.448 m +536.846 713.448 l +S +Q +376.397 713.293 160.448 -0.31 re +f +341.639 706.931 m +375.156 706.931 l +S +341.794 706.931 33.362 -0.466 re +f +q +376.242 706.62 160.603 0.31 re +W n +376.242 706.931 m +536.846 706.931 l +S +Q +376.397 706.931 160.448 -0.466 re +f +341.639 699.793 m +375.156 699.793 l +S +341.794 699.638 33.362 -0.31 re +f +q +376.242 699.482 160.603 0.31 re +W n +376.242 699.793 m +536.846 699.793 l +S +Q +376.397 699.638 160.448 -0.31 re +f +341.639 693.276 m +375.156 693.276 l +S +341.794 693.276 33.362 -0.465 re +f +q +376.242 692.965 160.603 0.31 re +W n +376.242 693.276 m +536.846 693.276 l +S +Q +376.397 693.276 160.448 -0.465 re +f +310.294 686.758 m +536.38 686.758 l +S +310.449 686.758 225.931 -0.31 re +f +310.294 686.138 m +536.38 686.138 l +S +310.449 685.982 225.931 -0.31 re +f +0.749 0.749 0.749 SC +310.294 679.931 m +341.328 679.931 l +S +0.749 0.749 0.749 sc +310.449 679.931 30.879 -0.466 re +f +0 0 0 SC +341.328 712.982 m +341.328 686.758 l +S +0 0 0 sc +341.328 712.982 0.466 -26.224 re +f +375.156 719.81 1.241 -33.052 re +f +341.639 679.931 m +375.156 679.931 l +S +341.794 679.931 33.362 -0.466 re +f +407.742 719.5 m +407.742 686.758 l +S +407.742 719.5 0.466 -32.741 re +f +439.863 719.5 m +439.863 686.758 l +S +439.863 719.5 0.466 -32.741 re +f +471.984 719.5 m +471.984 686.758 l +S +472.139 719.5 0.31 -32.741 re +f +504.26 719.5 m +504.26 686.758 l +S +504.26 719.5 0.466 -32.741 re +f +q +376.242 679.62 160.603 0.31 re +W n +376.242 679.931 m +536.846 679.931 l +S +Q +376.397 679.931 160.448 -0.466 re +f +0.749 0.749 0.749 SC +310.294 672.017 m +341.328 672.017 l +S +0.749 0.749 0.749 sc +310.449 672.017 30.879 -0.466 re +f +0 0 0 SC +341.639 672.017 m +375.156 672.017 l +S +0 0 0 sc +341.794 672.017 33.362 -0.466 re +f +q +376.242 671.707 160.603 0.31 re +W n +376.242 672.017 m +536.846 672.017 l +S +Q +376.397 672.017 160.448 -0.466 re +f +0.749 0.749 0.749 SC +310.294 665.5 m +341.328 665.5 l +S +0.749 0.749 0.749 sc +310.449 665.5 30.879 -0.466 re +f +0 0 0 SC +341.639 665.5 m +375.156 665.5 l +S +0 0 0 sc +341.794 665.5 33.362 -0.466 re +f +q +376.242 665.189 160.603 0.31 re +W n +376.242 665.5 m +536.846 665.5 l +S +Q +376.397 665.5 160.448 -0.466 re +f +310.294 659.138 m +536.38 659.138 l +S +310.449 658.982 225.931 -0.31 re +f +310.294 658.362 m +536.38 658.362 l +S +310.449 658.207 225.931 -0.31 re +f +341.328 685.672 m +341.328 659.138 l +S +341.328 685.672 0.466 -26.69 re +f +375.156 685.672 1.241 -26.69 re +f +341.639 652.31 m +375.156 652.31 l +S +341.794 652.155 33.362 -0.31 re +f +407.742 685.672 m +407.742 659.138 l +S +407.742 685.672 0.466 -26.69 re +f +439.863 685.672 m +439.863 659.138 l +S +439.863 685.672 0.466 -26.69 re +f +471.984 685.672 m +471.984 659.138 l +S +472.139 685.672 0.31 -26.69 re +f +504.26 685.672 m +504.26 659.138 l +S +504.26 685.672 0.466 -26.69 re +f +q +376.242 652 160.603 0.31 re +W n +376.242 652.31 m +536.846 652.31 l +S +Q +376.397 652.155 160.448 -0.31 re +f +341.639 644.241 m +375.156 644.241 l +S +341.794 644.241 33.362 -0.466 re +f +q +376.242 643.931 160.603 0.31 re +W n +376.242 644.241 m +536.846 644.241 l +S +Q +376.397 644.241 160.448 -0.466 re +f +341.639 637.879 m +375.156 637.879 l +S +341.794 637.724 33.362 -0.31 re +f +q +376.242 637.569 160.603 0.31 re +W n +376.242 637.879 m +536.846 637.879 l +S +Q +376.397 637.724 160.448 -0.31 re +f +310.294 631.362 m +536.38 631.362 l +S +310.449 631.362 225.931 -0.466 re +f +310.294 630.586 m +536.38 630.586 l +S +310.449 630.586 225.931 -0.466 re +f +0.749 0.749 0.749 SC +310.294 624.534 m +341.328 624.534 l +S +0.749 0.749 0.749 sc +310.449 624.379 30.879 -0.31 re +f +0 0 0 SC +341.328 657.896 m +341.328 631.362 l +S +0 0 0 sc +341.328 657.896 0.466 -26.534 re +f +375.156 657.896 1.241 -26.534 re +f +341.639 624.534 m +375.156 624.534 l +S +341.794 624.379 33.362 -0.31 re +f +407.742 657.896 m +407.742 631.362 l +S +407.742 657.896 0.466 -26.534 re +f +439.863 657.896 m +439.863 631.362 l +S +439.863 657.896 0.466 -26.534 re +f +471.984 657.896 m +471.984 631.362 l +S +472.139 657.896 0.31 -26.534 re +f +504.26 657.896 m +504.26 631.362 l +S +504.26 657.896 0.466 -26.534 re +f +q +376.242 624.224 160.603 0.31 re +W n +376.242 624.534 m +536.846 624.534 l +S +Q +376.397 624.379 160.448 -0.31 re +f +0.749 0.749 0.749 SC +310.294 616.62 m +341.328 616.62 l +S +0.749 0.749 0.749 sc +310.449 616.465 30.879 -0.31 re +f +0 0 0 SC +341.639 616.62 m +375.156 616.62 l +S +0 0 0 sc +341.794 616.465 33.362 -0.31 re +f +q +376.242 616.31 160.603 0.31 re +W n +376.242 616.62 m +536.846 616.62 l +S +Q +376.397 616.465 160.448 -0.31 re +f +0.749 0.749 0.749 SC +310.294 610.103 m +341.328 610.103 l +S +0.749 0.749 0.749 sc +310.449 609.948 30.879 -0.31 re +f +0 0 0 SC +341.639 610.103 m +375.156 610.103 l +S +0 0 0 sc +341.794 609.948 33.362 -0.31 re +f +q +376.242 609.793 160.603 0.31 re +W n +376.242 610.103 m +536.846 610.103 l +S +Q +376.397 609.948 160.448 -0.31 re +f +310.294 603.586 m +536.38 603.586 l +S +310.449 603.586 225.931 -0.466 re +f +310.294 602.81 m +536.38 602.81 l +S +310.449 602.81 225.931 -0.466 re +f +341.328 630.276 m +341.328 603.586 l +S +341.328 630.12 0.466 -26.534 re +f +375.156 630.12 1.241 -26.534 re +f +341.639 596.758 m +375.156 596.758 l +S +341.794 596.758 33.362 -0.466 re +f +407.742 630.276 m +407.742 603.586 l +S +407.742 630.12 0.466 -26.534 re +f +439.863 630.276 m +439.863 603.586 l +S +439.863 630.12 0.466 -26.534 re +f +471.984 630.276 m +471.984 603.586 l +S +472.139 630.12 0.31 -26.534 re +f +504.26 630.276 m +504.26 603.586 l +S +504.26 630.12 0.466 -26.534 re +f +q +376.242 596.448 160.603 0.31 re +W n +376.242 596.758 m +536.846 596.758 l +S +Q +376.397 596.758 160.448 -0.466 re +f +341.639 588.844 m +375.156 588.844 l +S +341.794 588.689 33.362 -0.31 re +f +q +376.242 588.534 160.603 0.31 re +W n +376.242 588.844 m +536.846 588.844 l +S +Q +376.397 588.689 160.448 -0.31 re +f +341.639 582.327 m +375.156 582.327 l +S +341.794 582.327 33.362 -0.466 re +f +q +376.242 582.017 160.603 0.31 re +W n +376.242 582.327 m +536.846 582.327 l +S +Q +376.397 582.327 160.448 -0.466 re +f +310.294 575.965 m +536.38 575.965 l +S +310.449 575.81 225.931 -0.31 re +f +310.294 575.189 m +536.38 575.189 l +S +310.449 575.034 225.931 -0.31 re +f +0.749 0.749 0.749 SC +310.294 569.138 m +341.328 569.138 l +S +0.749 0.749 0.749 sc +310.449 568.982 30.879 -0.31 re +f +0 0 0 SC +341.328 602.5 m +341.328 575.965 l +S +0 0 0 sc +341.328 602.344 0.466 -26.534 re +f +375.156 602.344 1.241 -26.534 re +f +341.639 569.138 m +375.156 569.138 l +S +341.794 568.982 33.362 -0.31 re +f +407.742 602.5 m +407.742 575.965 l +S +407.742 602.344 0.466 -26.534 re +f +439.863 602.5 m +439.863 575.965 l +S +439.863 602.344 0.466 -26.534 re +f +471.984 602.5 m +471.984 575.965 l +S +472.139 602.344 0.31 -26.534 re +f +504.26 602.5 m +504.26 575.965 l +S +504.26 602.344 0.466 -26.534 re +f +q +376.242 568.827 160.603 0.31 re +W n +376.242 569.138 m +536.846 569.138 l +S +Q +376.397 568.982 160.448 -0.31 re +f +0.749 0.749 0.749 SC +310.294 561.069 m +341.328 561.069 l +S +0.749 0.749 0.749 sc +310.449 561.069 30.879 -0.466 re +f +0 0 0 SC +341.639 561.069 m +375.156 561.069 l +S +0 0 0 sc +341.794 561.069 33.362 -0.466 re +f +q +376.242 560.758 160.603 0.31 re +W n +376.242 561.069 m +536.846 561.069 l +S +Q +376.397 561.069 160.448 -0.466 re +f +0.749 0.749 0.749 SC +310.294 554.707 m +341.328 554.707 l +S +0.749 0.749 0.749 sc +310.449 554.551 30.879 -0.31 re +f +0 0 0 SC +341.639 554.707 m +375.156 554.707 l +S +0 0 0 sc +341.794 554.551 33.362 -0.31 re +f +q +376.242 554.396 160.603 0.31 re +W n +376.242 554.707 m +536.846 554.707 l +S +Q +376.397 554.551 160.448 -0.31 re +f +q +309.984 547.724 0.155 172.086 re +W n +309.984 719.81 m +309.984 547.724 l +S +Q +309.984 719.81 0.466 -172.086 re +f +q +341.329 547.724 0.155 27 re +W n +341.328 574.724 m +341.328 547.724 l +S +Q +341.328 574.724 0.466 -27 re +f +375.156 574.724 1.241 -27 re +f +310.294 548.189 m +375.156 548.189 l +S +310.449 548.034 64.707 -0.31 re +f +q +407.742 547.724 0.155 27 re +W n +407.742 574.724 m +407.742 547.724 l +S +Q +407.742 574.724 0.466 -27 re +f +q +439.863 547.724 0.31 27 re +W n +439.863 574.724 m +439.863 547.724 l +S +Q +439.863 574.724 0.466 -27 re +f +q +471.984 547.724 0.31 27 re +W n +471.984 574.724 m +471.984 547.724 l +S +Q +472.139 574.724 0.31 -27 re +f +q +504.26 547.724 0.155 27 re +W n +504.26 574.724 m +504.26 547.724 l +S +Q +504.26 574.724 0.466 -27 re +f +q +376.242 547.879 160.603 0.31 re +W n +376.242 548.189 m +536.846 548.189 l +S +Q +376.397 548.034 160.448 -0.31 re +f +q +536.38 547.724 0.31 171.776 re +W n +536.38 719.5 m +536.38 547.724 l +S +Q +536.38 719.5 0.466 -171.776 re +f +0.749 0.749 0.749 sc +376.087 467.5 160.759 -6.517 re +f +0.796 1 1 sc +310.449 461.293 226.396 -27.931 re +f +310.449 406.051 226.396 -28.086 re +f +310.449 350.655 226.396 -28.086 re +f +BT +/TT14 1 Tf +5.3426 0 0 4.9298 377.3285 462.9997 Tm +0 0 0 sc +-0.0251 Tc +[(Ng)-24.2(r)-42.6(a)8.2(m)]TJ +/TT8 1 Tf +3.3111 -0.0315 TD +-0.0135 Tc +[(\(1)19.8(,)-55.2(4)-9.2(\))]TJ +/TT14 1 Tf +2.7011 0.0315 TD +-0.0251 Tc +[(Ng)-24.2(r)-13.5(a)-20.8(m)]TJ +/TT8 1 Tf +3.3111 -0.0315 TD +-0.0426 Tc +[(\(1)-38.3(,)-84.3(1)-9.3(\))]TJ +/TT14 1 Tf +2.7011 0.0315 TD +-0.0541 Tc +[(Ng)-82.2(r)-42.5(a)-20.8(m)]TJ +/TT8 1 Tf +3.282 -0.0315 TD +-0.0135 Tc +[(\(2)-9.2(,)-26.1(2)-9.2(\))]TJ +/TT14 1 Tf +2.7011 0.0315 TD +-0.0251 Tc +[(Ng)-24.2(r)-13.5(a)-20.8(m)]TJ +/TT8 1 Tf +3.3111 -0.0315 TD +-0.0135 Tc +[(\(3)19.8(,)-55.2(3)19.9(\))]TJ +/TT14 1 Tf +2.7011 0.0315 TD +-0.0251 Tc +[(Ng)-24.2(r)-13.5(a)-20.8(m)]TJ +/TT8 1 Tf +3.3111 -0.0315 TD +-0.0426 Tc +[(\(4)-38.3(,)-55.2(4)-38.3(\))]TJ +-39.7037 -1.322 TD +-0.0009 Tc +0.0135 Tw +[(S)-31(i)-13.5(n)-29(g)0(l)-13.5(e)-83.7( D)24.2(o)0(c)-519.4(S)-31(pe)-54.7(a)-83.7(r)10.7(m)-41.2(a)-54.7(n )]TJ +/TT16 1 Tf +11.2402 0 TD +0 Tc +0 Tw +(!)Tj +/TT10 1 Tf +4.2986 0.0315 TD +-0.0043 Tc +[(0.)-16.9(61)29(5)-3543.4(0)29(.)-46(9)29(51)-3514.4(0.)-16.9(86)29.1(3)-3543.4(0)29(.)-46(6)29(15)-3514.4(0.)-16.9(533)]TJ +/TT8 1 Tf +-15.5388 -1.4794 TD +[(10)29.1(0)-4211.4(L)-3.4(R)]TJ +/TT18 1 Tf +3.6987 0 0 3.4126 349.3975 448.4135 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.3426 0 0 4.9298 394.2423 449.9652 Tm +-0.0043 Tc +[(1.)-16.9(07)29(6)-3543.4(4)29(.)-46(8)29(73)-3514.4(2.)-16.9(22)29.1(8)-3543.4(0)29(.)-46(9)29(42)-3514.4(0.)-16.9(246)]TJ +/TT8 1 Tf +-9.7009 -1.6368 TD +0.0538 Tc +[(P)23.7(ear)36.3(s)145.2(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.3276 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.3732 0.0315 TD +-0.0043 Tc +[(0.)-16.9(30)29(9)-3543.4(0)29(.)-46(8)29(27)-3514.4(0.)-16.9(55)29.1(8)-3543.4(0)29(.)-46(2)29(73)-3514.4(0.)-16.9(074)]TJ +/TT8 1 Tf +-9.7009 -1.259 TD +-0.0251 Tc +(CD)Tj +/TT10 1 Tf +9.7009 0.0315 TD +-0.0043 Tc +[(0.)-16.9(09)29(5)-3543.4(0)29(.)-46(6)29(83)-3514.4(0.)-16.9(31)29.1(1)-3543.4(0)29(.)-46(0)29(75)-3514.4(0.)-16.9(005)]TJ +/TT8 1 Tf +-15.5388 -1.4794 TD +0.0412 Tc +[(M)31.9(u)42.1(lt)83.8(i-)54.7(D)66.3(o)42.1(c)-1232.4(S)11.1(p)42.1(e)-12.6(a)-41.6(r)52.8(ma)-12.6(n)42.1( )]TJ +/TT16 1 Tf +11.2402 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +4.2986 0.0315 TD +-0.0043 Tc +[(0.)-16.9(83)29(2)-3543.4(0)29(.)-46(9)29(18)-3514.4(0.)-16.9(93)29.1(6)-3543.4(0)29(.)-46(8)29(32)-3514.4(0.)-16.9(732)]TJ +/TT8 1 Tf +-15.5388 -1.5109 TD +-0.0251 Tc +[(Al)-37.7(l)-4597.7(L)-24.2(R)]TJ +/TT18 1 Tf +3.6987 0 0 3.4126 349.3975 420.6376 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.3426 0 0 4.9298 394.2423 422.3445 Tm +-0.0043 Tc +[(3.)-16.9(75)29(2)-3543.4(6)29(.)-46(4)29(89)-3514.4(5.)-16.9(45)29.1(1)-3543.4(3)29(.)-46(7)29(45)-3514.4(2.)-16.9(640)]TJ +/TT8 1 Tf +-9.7009 -1.6368 TD +0.0538 Tc +[(P)23.7(ear)36.3(s)145.2(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.3276 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.3732 0.0315 TD +-0.0043 Tc +[(0.)-16.9(72)29(1)-3543.4(0)29(.)-46(8)29(74)-3514.4(0.)-16.9(83)29.1(4)-3543.4(0)29(.)-46(7)29(20)-3514.4(0.)-16.9(591)]TJ +/TT8 1 Tf +-9.7009 -1.259 TD +-0.0251 Tc +(CD)Tj +/TT10 1 Tf +9.7009 0.0315 TD +-0.0043 Tc +[(0.)-16.9(52)29(0)-3543.4(0)29(.)-46(7)29(64)-3514.4(0.)-16.9(69)29.1(6)-3543.4(0)29(.)-46(5)29(19)-3514.4(0.)-16.9(349)]TJ +/TT8 1 Tf +-15.5388 -1.5109 TD +0.0412 Tc +[(M)31.9(u)42.1(lt)83.8(i-)54.7(D)66.3(o)42.1(c)-1232.4(S)11.1(p)42.1(e)-12.6(a)-41.6(r)52.8(ma)-12.6(n)42.1( )]TJ +/TT16 1 Tf +11.2402 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +4.2986 0.0315 TD +-0.0043 Tc +[(0.)-16.9(64)29(6)-3543.4(0)29(.)-46(5)29(86)-3514.4(0.)-16.9(65)29.1(0)-3543.4(0)29(.)-46(5)29(89)-3514.4(0.)-16.9(600)]TJ +/TT8 1 Tf +-15.5388 -1.4794 TD +-0.0026 Tc +[(50)-4732.5(LR)]TJ +/TT18 1 Tf +3.6987 0 0 3.4126 349.3975 393.0169 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.3426 0 0 4.9298 394.2423 394.7238 Tm +-0.0043 Tc +[(2.)-16.9(61)29(1)-3543.4(2)29(.)-46(5)29(27)-3514.4(2.)-16.9(80)29.1(5)-3543.4(2)29(.)-46(3)29(14)-3514.4(1.)-16.9(691)]TJ +/TT8 1 Tf +-9.7009 -1.6682 TD +0.0538 Tc +[(P)23.7(ear)36.3(s)145.2(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.3276 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.3732 0.0315 TD +-0.0043 Tc +[(0.)-16.9(58)29(7)-3543.4(0)29(.)-46(5)29(74)-3514.4(0.)-16.9(61)29.1(4)-3543.4(0)29(.)-46(5)29(40)-3514.4(0.)-16.9(425)]TJ +/TT8 1 Tf +-9.7009 -1.259 TD +-0.0251 Tc +(CD)Tj +/TT10 1 Tf +9.7009 0.0315 TD +-0.0043 Tc +[(0.)-16.9(34)29(4)-3543.4(0)29(.)-46(3)29(29)-3514.4(0.)-16.9(37)29.1(7)-3543.4(0)29(.)-46(2)29(92)-3514.4(0.)-16.9(180)]TJ +/TT8 1 Tf +-15.5388 -1.4794 TD +0.0412 Tc +[(M)31.9(u)42.1(lt)83.8(i-)54.7(D)66.3(o)42.1(c)-1232.4(S)11.1(p)42.1(e)-12.6(a)-41.6(r)52.8(ma)-12.6(n)42.1( )]TJ +/TT16 1 Tf +11.2402 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +4.2986 0.0315 TD +-0.0043 Tc +[(0.)-16.9(52)29(9)-3543.4(0)29(.)-46(6)29(36)-3514.4(0.)-16.9(62)29.1(5)-3543.4(0)29(.)-46(5)29(71)-3514.4(0.)-16.9(468)]TJ +/TT8 1 Tf +-15.5388 -1.5109 TD +[(10)29.1(0)-4211.4(L)-3.4(R)]TJ +/TT18 1 Tf +3.6987 0 0 3.4126 349.3975 365.3962 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.3426 0 0 4.9298 394.2423 366.948 Tm +-0.0043 Tc +[(2.)-16.9(01)29(5)-3543.4(3)29(.)-46(3)29(38)-3514.4(2.)-16.9(89)29.1(0)-3543.4(2)29(.)-46(0)29(39)-3514.4(1.)-16.9(310)]TJ +/TT8 1 Tf +-9.7009 -1.6368 TD +0.0538 Tc +[(P)23.7(ear)36.3(s)145.2(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.3276 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.3732 0.0315 TD +-0.0043 Tc +[(0.)-16.9(48)29(8)-3543.4(0)29(.)-46(6)29(79)-3514.4(0.)-16.9(62)29.1(5)-3543.4(0)29(.)-46(4)29(92)-3514.4(0.)-16.9(342)]TJ +/TT8 1 Tf +-9.7009 -1.259 TD +-0.0251 Tc +(CD)Tj +/TT10 1 Tf +9.7009 0.0315 TD +-0.0043 Tc +[(0.)-16.9(23)29(8)-3543.4(0)29(.)-46(4)29(62)-3514.4(0.)-16.9(39)29.1(1)-3543.4(0)29(.)-46(2)29(42)-3514.4(0.)-16.9(117)]TJ +/TT8 1 Tf +-15.5388 -1.5109 TD +0.0412 Tc +[(M)31.9(u)42.1(lt)83.8(i-)54.7(D)66.3(o)42.1(c)-1232.4(S)11.1(p)42.1(e)-12.6(a)-41.6(r)52.8(ma)-12.6(n)42.1( )]TJ +/TT16 1 Tf +11.2402 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +4.2986 0.0315 TD +-0.0043 Tc +[(0.)-16.9(81)29(4)-3543.4(0)29(.)-46(9)29(64)-3514.4(0.)-16.9(87)29.1(9)-3543.4(0)29(.)-46(8)29(14)-3514.4(0.)-16.9(746)]TJ +/TT8 1 Tf +-15.5388 -1.4794 TD +[(20)29.1(0)-4211.4(L)-3.4(R)]TJ +/TT18 1 Tf +3.6987 0 0 3.4126 349.3975 337.6204 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.3426 0 0 4.9298 394.2423 339.3273 Tm +-0.0333 Tc +[(3)-29(.)-45.9(2)-29(0)0(4)-3020.6(1)-29(0.)-75(13)-29(4)-3543.4(4)-29(.)-45.9(9)-29(26)-3572.4(3.)-75(32)-29(8)-3543.4(2)-29(.)-45.9(1)-29(7)-29(3)]TJ +/TT8 1 Tf +-9.7009 -1.6682 TD +0.0538 Tc +[(P)23.7(ear)36.3(s)145.2(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.3276 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.3732 0.0315 TD +-0.0043 Tc +[(0.)-16.9(66)29(4)-3543.4(0)29(.)-46(9)29(42)-3514.4(0.)-16.9(80)29.1(7)-3543.4(0)29(.)-46(6)29(78)-3514.4(0.)-16.9(516)]TJ +/TT8 1 Tf +-9.7009 -1.259 TD +-0.0251 Tc +(CD)Tj +/TT10 1 Tf +9.7009 0.0315 TD +-0.0043 Tc +[(0.)-16.9(44)29(1)-3543.4(0)29(.)-46(8)29(88)-3514.4(0.)-16.9(65)29.1(1)-3543.4(0)29(.)-46(4)29(60)-3514.4(0.)-16.9(266)]TJ +/TT8 1 Tf +-15.5388 -1.4794 TD +0.0412 Tc +[(M)31.9(u)42.1(lt)83.8(i-)54.7(D)66.3(o)42.1(c)-1232.4(S)11.1(p)42.1(e)-12.6(a)-41.6(r)52.8(ma)-12.6(n)42.1( )]TJ +/TT16 1 Tf +11.2402 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +4.2986 0.0315 TD +-0.0043 Tc +[(0.)-16.9(84)29(3)-3543.4(0)29(.)-46(9)29(14)-3514.4(0.)-16.9(94)29.1(6)-3543.4(0)29(.)-46(8)29(57)-3514.4(0.)-16.9(721)]TJ +/TT8 1 Tf +-15.5388 -1.5109 TD +[(40)29.1(0)-4211.4(L)-3.4(R)]TJ +/TT18 1 Tf +3.6987 0 0 3.4126 349.3975 309.9997 Tm +0 Tc +(t)Tj +/TT10 1 Tf +5.3426 0 0 4.9298 394.2423 311.5514 Tm +-0.0043 Tc +[(4.)-16.9(34)29(4)-3543.4(5)29(.)-46(3)29(58)-3514.4(6.)-16.9(34)29.1(4)-3543.4(4)29(.)-46(3)29(28)-3514.4(3.)-16.9(066)]TJ +/TT8 1 Tf +-9.7009 -1.6368 TD +0.0538 Tc +[(P)23.7(ear)36.3(s)145.2(o)54.7(n)54.7( )]TJ +/TT16 1 Tf +4.3276 0 TD +0 Tc +(!)Tj +/TT10 1 Tf +5.3732 0.0315 TD +-0.0043 Tc +[(0.)-16.9(76)29(9)-3543.4(0)29(.)-46(8)29(30)-3514.4(0.)-16.9(86)29.1(9)-3543.4(0)29(.)-46(7)29(68)-3514.4(0.)-16.9(648)]TJ +/TT8 1 Tf +-9.7009 -1.322 TD +-0.0251 Tc +(CD)Tj +/TT10 1 Tf +9.7009 0.0315 TD +-0.0043 Tc +[(0.)-16.9(59)29(2)-3543.4(0)29(.)-46(6)29(88)-3514.4(0.)-16.9(75)29.1(6)-3543.4(0)29(.)-46(5)29(90)-3514.4(0.)-16.9(420)]TJ +ET +310.294 467.81 m +375.622 467.81 l +S +310.449 467.81 65.328 -0.31 re +f +q +376.863 467.655 159.983 0.155 re +W n +376.863 467.81 m +536.846 467.81 l +S +Q +377.018 467.81 159.828 -0.31 re +f +0.749 0.749 0.749 SC +341.173 467.5 m +341.173 461.448 l +S +0.749 0.749 0.749 sc +341.173 467.5 0.466 -6.207 re +f +0 0 0 SC +310.294 461.448 m +375.622 461.448 l +S +0 0 0 sc +310.449 461.293 65.328 -0.31 re +f +q +376.863 461.138 159.983 0.31 re +W n +376.863 461.448 m +536.846 461.448 l +S +Q +377.018 461.293 159.828 -0.31 re +f +341.484 454.931 m +375.622 454.931 l +S +341.639 454.931 34.138 -0.466 re +f +q +376.863 454.62 159.983 0.31 re +W n +376.863 454.931 m +536.846 454.931 l +S +Q +377.018 454.931 159.828 -0.466 re +f +341.484 447.017 m +375.622 447.017 l +S +341.639 447.017 34.138 -0.466 re +f +q +376.863 446.707 159.983 0.31 re +W n +376.863 447.017 m +536.846 447.017 l +S +Q +377.018 447.017 159.828 -0.466 re +f +341.484 440.655 m +375.622 440.655 l +S +341.639 440.5 34.138 -0.31 re +f +q +376.863 440.345 159.983 0.31 re +W n +376.863 440.655 m +536.846 440.655 l +S +Q +377.018 440.5 159.828 -0.31 re +f +310.294 434.138 m +536.38 434.138 l +S +310.449 433.982 225.931 -0.31 re +f +310.294 433.362 m +536.38 433.362 l +S +310.449 433.362 225.931 -0.466 re +f +0.749 0.749 0.749 SC +310.294 427.31 m +341.173 427.31 l +S +0.749 0.749 0.749 sc +310.449 427.155 30.724 -0.31 re +f +0 0 0 SC +341.173 460.982 m +341.173 434.138 l +S +0 0 0 sc +341.173 460.982 0.466 -27 re +f +375.777 467.81 1.241 -33.828 re +f +341.484 427.31 m +375.622 427.31 l +S +341.639 427.155 34.138 -0.31 re +f +408.208 467.5 m +408.208 434.138 l +S +408.208 467.5 0.466 -33.517 re +f +440.173 467.5 m +440.173 434.138 l +S +440.328 467.5 0.31 -33.517 re +f +472.294 467.5 m +472.294 434.138 l +S +472.294 467.5 0.466 -33.517 re +f +504.26 467.5 m +504.26 434.138 l +S +504.415 467.5 0.31 -33.517 re +f +q +376.863 427 159.983 0.31 re +W n +376.863 427.31 m +536.846 427.31 l +S +Q +377.018 427.155 159.828 -0.31 re +f +0.749 0.749 0.749 SC +310.294 419.396 m +341.173 419.396 l +S +0.749 0.749 0.749 sc +310.449 419.241 30.724 -0.31 re +f +0 0 0 SC +341.484 419.396 m +375.622 419.396 l +S +0 0 0 sc +341.639 419.241 34.138 -0.31 re +f +q +376.863 419.086 159.983 0.31 re +W n +376.863 419.396 m +536.846 419.396 l +S +Q +377.018 419.241 159.828 -0.31 re +f +0.749 0.749 0.749 SC +310.294 412.879 m +341.173 412.879 l +S +0.749 0.749 0.749 sc +310.449 412.879 30.724 -0.466 re +f +0 0 0 SC +341.484 412.879 m +375.622 412.879 l +S +0 0 0 sc +341.639 412.879 34.138 -0.466 re +f +q +376.863 412.569 159.983 0.31 re +W n +376.863 412.879 m +536.846 412.879 l +S +Q +377.018 412.879 159.828 -0.466 re +f +310.294 406.517 m +536.38 406.517 l +S +310.449 406.362 225.931 -0.31 re +f +310.294 405.741 m +536.38 405.741 l +S +310.449 405.586 225.931 -0.31 re +f +341.173 433.051 m +341.173 406.517 l +S +341.173 432.896 0.466 -26.534 re +f +375.777 432.896 1.241 -26.534 re +f +341.484 399.689 m +375.622 399.689 l +S +341.639 399.534 34.138 -0.31 re +f +408.208 433.051 m +408.208 406.517 l +S +408.208 432.896 0.466 -26.534 re +f +440.173 433.051 m +440.173 406.517 l +S +440.328 432.896 0.31 -26.534 re +f +472.294 433.051 m +472.294 406.517 l +S +472.294 432.896 0.466 -26.534 re +f +504.26 433.051 m +504.26 406.517 l +S +504.415 432.896 0.31 -26.534 re +f +q +376.863 399.379 159.983 0.31 re +W n +376.863 399.689 m +536.846 399.689 l +S +Q +377.018 399.534 159.828 -0.31 re +f +341.484 391.62 m +375.622 391.62 l +S +341.639 391.62 34.138 -0.466 re +f +q +376.863 391.31 159.983 0.31 re +W n +376.863 391.62 m +536.846 391.62 l +S +Q +377.018 391.62 159.828 -0.466 re +f +341.484 385.258 m +375.622 385.258 l +S +341.639 385.103 34.138 -0.31 re +f +q +376.863 384.948 159.983 0.31 re +W n +376.863 385.258 m +536.846 385.258 l +S +Q +377.018 385.103 159.828 -0.31 re +f +310.294 378.741 m +536.38 378.741 l +S +310.449 378.741 225.931 -0.466 re +f +310.294 377.965 m +536.38 377.965 l +S +310.449 377.965 225.931 -0.466 re +f +0.749 0.749 0.749 SC +310.294 371.913 m +341.173 371.913 l +S +0.749 0.749 0.749 sc +310.449 371.913 30.724 -0.466 re +f +0 0 0 SC +341.173 405.276 m +341.173 378.741 l +S +0 0 0 sc +341.173 405.276 0.466 -26.534 re +f +375.777 405.276 1.241 -26.534 re +f +341.484 371.913 m +375.622 371.913 l +S +341.639 371.913 34.138 -0.466 re +f +408.208 405.276 m +408.208 378.741 l +S +408.208 405.276 0.466 -26.534 re +f +440.173 405.276 m +440.173 378.741 l +S +440.328 405.276 0.31 -26.534 re +f +472.294 405.276 m +472.294 378.741 l +S +472.294 405.276 0.466 -26.534 re +f +504.26 405.276 m +504.26 378.741 l +S +504.415 405.276 0.31 -26.534 re +f +q +376.863 371.603 159.983 0.31 re +W n +376.863 371.913 m +536.846 371.913 l +S +Q +377.018 371.913 159.828 -0.466 re +f +0.749 0.749 0.749 SC +310.294 364 m +341.173 364 l +S +0.749 0.749 0.749 sc +310.449 363.845 30.724 -0.31 re +f +0 0 0 SC +341.484 364 m +375.622 364 l +S +0 0 0 sc +341.639 363.845 34.138 -0.31 re +f +q +376.863 363.689 159.983 0.31 re +W n +376.863 364 m +536.846 364 l +S +Q +377.018 363.845 159.828 -0.31 re +f +0.749 0.749 0.749 SC +310.294 357.482 m +341.173 357.482 l +S +0.749 0.749 0.749 sc +310.449 357.482 30.724 -0.466 re +f +0 0 0 SC +341.484 357.482 m +375.622 357.482 l +S +0 0 0 sc +341.639 357.482 34.138 -0.466 re +f +q +376.863 357.172 159.983 0.31 re +W n +376.863 357.482 m +536.846 357.482 l +S +Q +377.018 357.482 159.828 -0.466 re +f +310.294 351.12 m +536.38 351.12 l +S +310.449 350.965 225.931 -0.31 re +f +310.294 350.345 m +536.38 350.345 l +S +310.449 350.189 225.931 -0.31 re +f +341.173 377.655 m +341.173 351.12 l +S +341.173 377.5 0.466 -26.534 re +f +375.777 377.5 1.241 -26.534 re +f +341.484 344.293 m +375.622 344.293 l +S +341.639 344.138 34.138 -0.31 re +f +408.208 377.655 m +408.208 351.12 l +S +408.208 377.5 0.466 -26.534 re +f +440.173 377.655 m +440.173 351.12 l +S +440.328 377.5 0.31 -26.534 re +f +472.294 377.655 m +472.294 351.12 l +S +472.294 377.5 0.466 -26.534 re +f +504.26 377.655 m +504.26 351.12 l +S +504.415 377.5 0.31 -26.534 re +f +q +376.863 343.982 159.983 0.31 re +W n +376.863 344.293 m +536.846 344.293 l +S +Q +377.018 344.138 159.828 -0.31 re +f +341.484 336.224 m +375.622 336.224 l +S +341.639 336.224 34.138 -0.466 re +f +q +376.863 335.913 159.983 0.31 re +W n +376.863 336.224 m +536.846 336.224 l +S +Q +377.018 336.224 159.828 -0.466 re +f +341.484 329.862 m +375.622 329.862 l +S +341.639 329.707 34.138 -0.31 re +f +q +376.863 329.551 159.983 0.31 re +W n +376.863 329.862 m +536.846 329.862 l +S +Q +377.018 329.707 159.828 -0.31 re +f +310.294 323.345 m +536.38 323.345 l +S +310.449 323.345 225.931 -0.466 re +f +310.294 322.569 m +536.38 322.569 l +S +310.449 322.569 225.931 -0.466 re +f +0.749 0.749 0.749 SC +310.294 316.517 m +341.173 316.517 l +S +0.749 0.749 0.749 sc +310.449 316.517 30.724 -0.466 re +f +0 0 0 SC +341.173 349.879 m +341.173 323.345 l +S +0 0 0 sc +341.173 349.879 0.466 -26.534 re +f +375.777 349.879 1.241 -26.534 re +f +341.484 316.517 m +375.622 316.517 l +S +341.639 316.517 34.138 -0.466 re +f +408.208 349.879 m +408.208 323.345 l +S +408.208 349.879 0.466 -26.534 re +f +440.173 349.879 m +440.173 323.345 l +S +440.328 349.879 0.31 -26.534 re +f +472.294 349.879 m +472.294 323.345 l +S +472.294 349.879 0.466 -26.534 re +f +504.26 349.879 m +504.26 323.345 l +S +504.415 349.879 0.31 -26.534 re +f +q +376.863 316.207 159.983 0.31 re +W n +376.863 316.517 m +536.846 316.517 l +S +Q +377.018 316.517 159.828 -0.466 re +f +0.749 0.749 0.749 SC +310.294 308.603 m +341.173 308.603 l +S +0.749 0.749 0.749 sc +310.449 308.603 30.724 -0.466 re +f +0 0 0 SC +341.484 308.603 m +375.622 308.603 l +S +0 0 0 sc +341.639 308.603 34.138 -0.466 re +f +q +376.863 308.293 159.983 0.31 re +W n +376.863 308.603 m +536.846 308.603 l +S +Q +377.018 308.603 159.828 -0.466 re +f +0.749 0.749 0.749 SC +310.294 302.086 m +341.173 302.086 l +S +0.749 0.749 0.749 sc +310.449 302.086 30.724 -0.31 re +f +0 0 0 SC +341.484 302.086 m +375.622 302.086 l +S +0 0 0 sc +341.639 302.086 34.138 -0.31 re +f +q +376.863 301.931 159.983 0.155 re +W n +376.863 302.086 m +536.846 302.086 l +S +Q +377.018 302.086 159.828 -0.31 re +f +q +309.984 295.258 0.155 172.552 re +W n +309.984 467.81 m +309.984 295.258 l +S +Q +309.984 467.81 0.466 -172.552 re +f +q +341.173 295.258 0.31 27 re +W n +341.173 322.258 m +341.173 295.258 l +S +Q +341.173 322.103 0.466 -26.845 re +f +375.777 322.103 1.241 -26.845 re +f +310.294 295.724 m +375.622 295.724 l +S +310.449 295.569 65.328 -0.31 re +f +q +408.208 295.258 0.155 27 re +W n +408.208 322.258 m +408.208 295.258 l +S +Q +408.208 322.103 0.466 -26.845 re +f +q +440.173 295.258 0.31 27 re +W n +440.173 322.258 m +440.173 295.258 l +S +Q +440.328 322.103 0.31 -26.845 re +f +q +472.294 295.258 0.31 27 re +W n +472.294 322.258 m +472.294 295.258 l +S +Q +472.294 322.103 0.466 -26.845 re +f +q +504.26 295.258 0.31 27 re +W n +504.26 322.258 m +504.26 295.258 l +S +Q +504.415 322.103 0.31 -26.845 re +f +q +376.863 295.413 159.983 0.31 re +W n +376.863 295.724 m +536.846 295.724 l +S +Q +377.018 295.569 159.828 -0.31 re +f +q +536.38 295.258 0.31 172.241 re +W n +536.38 467.5 m +536.38 295.258 l +S +Q +536.38 467.5 0.466 -172.241 re +f +endstream +endobj +30 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT14 27 0 R +/TT15 31 0 R +/TT16 32 0 R +/TT18 33 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +/ColorSpace << +/Cs5 12 0 R +>> +>> +endobj +35 0 obj +<< +/Length 54304 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 79.7078 747.8962 Tm +/Cs5 cs 0 0 0 sc +/GS1 gs +0.0007 Tc +0.0079 Tw +[(I)6.1(n)0.7( P)25.3(r)-6.7(oceedings)-6.7( of the)13.5( Human T)5.1(e)13.5(chnology )17.2(C)12.5(onfer)-6.7(ence)13.5( 2003 \()23.4(H)-1.3(L)5.1(T)5.2(-)6.1(N)-4.7(A)8.1(A)8.1(C)-4.7(L)-12.1(-)6.1(2003\))6.1(,)-7.9( M)6.1(a)0.7(y )17.2(27 June)13.5( 1,)9.3( 2003,)9.3( E)8.1(d)0.7(monton,)-7.9( )17.2(Canada )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 736.4135 Tm +0 Tc +0 Tw +( )Tj +1.8906 -2.5781 TD +0.0005 Tc +0.2182 Tw +(string )Tj +/TT2 1 Tf +3.2031 0 TD +0.001 Tc +0.2178 Tw +[(U)-11.2(n)1(ite)7.3(d)-14.6( Stat)-18(e)7.3(s)-0.5(, T)-5.4(a)1(iwa)-14.6(n, a)-14.6(nd )-15.6(J)-8.3(apan)]TJ +/TT4 1 Tf +14.5625 0 TD +-0.0063 Tc +0.2251 Tw +[( h)-21.9(a)0(s)-7.8( )-15.6(a)-15.6( )]TJ +-17.7656 -1.1563 TD +-0.0008 Tc +0.1414 Tw +[(unigr)-11.5(a)-10.1(m)11.4( s)-17.9(c)5.5(or)-11.5(e)5.6( o)-16.4(f)4.1( 1, bi)-19.8(-g)-16.4(ra)-10.1(m)11.4( s)-17.9(c)5.5(o)-16.4(r)4.1(e)5.5( )-15.7(of )-15.7(0.5, a)-10.1(nd tri)-19.8(-)]TJ +T* +-0.0012 Tc +0.1887 Tw +[(gra)-10.5(m)11( )-15.6(a)5.1(n)-16.8(d 4)-16.8(-)19.3(g)-16.8(r)-11.9(a)-10.5(m)11( sc)-10.5(or)-11.9(e)5.1(s)-2.7( of )-15.6(0 wh)-16.8(e)5.1(n)-1.2( t)-20.2(h)-1.2(e)5.1( stop)-16.8(wo)-16.8(rd)-16.8( )]TJ +T* +0 Tc +0 Tw +()Tj +/TT2 1 Tf +0.4531 0 TD +(and)Tj +/TT4 1 Tf +1.5 0 TD +0.0007 Tc +0.2962 Tw +[()7( is ignor)-10(e)7(d. T)-13.5(h)0.7(e)7( w)-11.5(e)7(ight)-18.3(e)7(d)0.7( a)-8.5(v)0.7(e)-8.6(r)5.6(a)7(g)-14.9(e)7( n)-14.9(-)5.6(gr)-10(a)-8.6(m)-2.7( )]TJ +-1.9531 -1.1563 TD +0.0002 Tc +-0.0002 Tw +[(sc)6.5(or)-10.5(e)6.5( )-15.6(for t)-18.8(h)0.2(e)6.5( )-15.6(c)6.5(a)-9.1(ndid)-15.4(a)6.5(te)6.5( st)-18.8(ring is )-15.6(0. )]TJ +-1.8906 -1.1563 TD +-0.0025 Tc +0 Tw +(\(3\))Tj +/TT10 1 Tf +1.1719 0 TD +0 Tc +( )Tj +/TT4 1 Tf +0.7188 0 TD +0.0005 Tc +0.4214 Tw +[(Exc)-8.8(l)12.7(u)-15.1(d)0.5(ing st)-18.5(opw)-11.7(ords)-16.6( in )-15.6(c)6.8(o)-15.1(m)12.7(p)-15.1(uting)-15.1( n)-15(-)21(g)-15.1(r)5.4(a)-8.8(m)-2.9( c)-8.8(o)-15.1(-)]TJ +0 -1.1563 TD +0.0019 Tc +0.1387 Tw +[(oc)8.2(c)-7.4(u)1.9(r)-8.8(r)6.8(e)8.2(n)-13.7(c)-7.4(e)8.2( sta)8.2(tistic)-7.4(s ge)8.2(n)-13.7(e)8.2(r)-8.8(a)-7.4(lly)17.5( )-15.7(a)8.2(c)8.2(h)1.9(i)-17.1(e)-7.4(ve)-7.4(s be)8.2(tte)-7.4(r)6.8( c)8.2(o)-13.6(r)-8.8(-)]TJ +T* +0.0009 Tc +-0.0009 Tw +[(re)-8.4(la)7.2(tion th)-14.7(a)7.2(n)0.9( in)-14.7(c)-8.4(l)13.1(udin)-14.7(g)0.9( stop)-14.7(wor)-9.8(d)0.9(s. )]TJ +/TT6 1 Tf +11.9483 0 0 11.9483 71.9492 608.0859 Tm +0.0065 Tc +0 Tw +[(4.)9.7(2)]TJ +/TT8 1 Tf +1.2597 0 TD +0 Tc +( )Tj +/TT6 1 Tf +11.0172 0 0 11.0172 100.3458 608.0859 Tm +0.006 Tc +0.4763 Tw +[(S)12.9(t)1(ati)16.2(s)0.8(ti)16.2(ca)13(l S)12.9(i)2.1(gn)12.9(i)16.2(f)1(ic)13.2(an)12.9(ce o)27.1(f)-13.1( N)23.9(-)1(g)13(r)13.2(am)8( C)9.9(o)13(-)]TJ +-0.0282 -1.1549 TD +0.0066 Tc +0.4617 Tw +[(O)9.8(ccu)13.5(r)13.8(ren)13.5(c)13.8(e)-0.3( S)13.5(c)-0.3(o)13.6(res v)13.6(e)13.8(rsu)13.5(s)1.4( H)9.8(u)13.5(m)8.6(a)-0.4(n)13.5( A)10.6(s)1.4(-)]TJ +0 -1.1408 TD +0.0056 Tc +0 Tw +[(ses)14.5(s)0.4(m)7.6(e)-1.3(n)12.5(t)14.7(s )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 564.948 Tm +0.0152 Tc +0.0004 Tw +[(W)21.5(e)5.9( ha)5.9(v)15.2(e)21.5( s)13.7(h)15.2(ow)18.6(n t)11.8(h)15.2(a)21.5(t)-3.8( s)13.7(i)-3.8(m)27.4(p)-0.4(l)27.4(e)5.9( u)15.2(n)15.2(i)11.8(gra)5.9(m)27.5(,)15.2( )]TJ +/TT2 1 Tf +15.3594 0 TD +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7969 0 TD +-0.0012 Tc +0.0168 Tw +[(\(1,1)-16.8(\), o)-16.8(r)3.7( bi)-20.2(-)]TJ +-18.1563 -1.1563 TD +0 Tw +[(gra)-10.5(m)-4.6(, )]TJ +/TT2 1 Tf +2.9219 0 TD +0.002 Tc +[(Ngra)-13.6(m)]TJ +/TT4 1 Tf +2.7969 0 TD +0.0005 Tc +0.3589 Tw +[(\()-10.2(2,2\),)-15.1( c)-8.8(o)-15.1(-)21(o)-15.1(c)-8.8(c)6.8(ur)-10.2(re)-8.8(nc)-8.8(e)6.8( st)-18.5(a)-8.8(tistic)6.8(s b)-15.1(a)6.8(se)6.8(d)-15.1( on)-15.1( )]TJ +-5.7188 -1.1563 TD +0.0014 Tc +0.1079 Tw +[(e)7.7(q)1.4(u)-14.2(a)7.7(tion 6)-14.2( outp)-14.2(e)7.7(r)-9.3(f)6.3(or)-9.3(m th)-14.2(e)7.7( w)-10.8(e)7.7(ight)-17.6(e)7.7(d)1.4( )-15.7(a)-7.9(v)1.4(e)7.8(r)-9.3(a)7.7(g)-14.2(e)7.7( o)-14.2(f)6.3( n)-14.2(-)6.3(gr)-9.3(a)-7.9(m)-2( )]TJ +T* +0.0019 Tc +0 Tw +[(ma)8.2(tc)-7.4(he)8.2(s, )]TJ +/TT2 1 Tf +3.8281 0 TD +0.0205 Tc +[(Ng)20.5(r)19(a)20.5(m)]TJ +/TT4 1 Tf +2.8125 0 TD +0.0005 Tc +0.0464 Tw +[(\(1,4)-15.1(\), in t)-18.5(h)0.5(e)6.8( p)-15.1(r)-10.2(e)-8.8(v)16.1(ious s)-16.6(e)6.8(c)6.8(tio)-15.1(n. T)-13.7(o)0.5( e)6.8(x)-15.1(a)-8.8(m)-2.9(-)]TJ +-6.6406 -1.1563 TD +0.0026 Tc +0.0286 Tw +[(ine)8.9( ho)-13(w)6( w)-9.6(e)-6.7(ll)14.8( th)-13(e)8.9( sta)8.9(tisti)-16.4(c)8.9(a)-6.7(l)14.8( sig)-13(n)2.6(if)7.5(i)-16.4(c)8.9(a)8.9(n)-13(c)-6.7(e)8.9( in th)-13(e)8.9( a)8.9(u)2.6(t)-16.4(o)-13(m)14.8(a)8.9(ti)-16.4(c)-6.7( )]TJ +/TT2 1 Tf +T* +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7969 0 TD +0 Tc +(\()Tj +/TT2 1 Tf +0.3281 0 TD +(i)Tj +/TT4 1 Tf +0.2813 0 TD +(,)Tj +/TT2 1 Tf +0.25 0 TD +(j)Tj +/TT4 1 Tf +0.2813 0 TD +-0.0056 Tc +0.1619 Tw +[(\) )-15.6(m)-9(e)0.7(t)-9(r)-0.7(i)-24.6(c)0.7(s)-7.1( t)-9(r)-16.3(an)-5.6(s)-22.7(l)-9(at)-9(es)-22.7( t)-9(o)-5.6( r)-16.3(e)-14.9(al)-9( s)-22.7(i)-9(g)-5.6(n)-5.6(i)-9(fi)-9(c)-14.9(a)0.7(n)-21.2(c)0.7(e)-14.9( wh)-21.2(en)-21.2( )]TJ +-3.9375 -1.1563 TD +0.001 Tc +0.0928 Tw +[(hu)-14.6(m)13.2(a)7.3(n )-15.6(a)7.3(s)-0.5(s)-16.1(e)7.3(ss)-16.1(me)7.3(nts a)-8.3(r)5.9(e)7.3( in)-14.6(vo)-14.6(lve)7.3(d, w)-11.2(e)7.4( s)-16.1(e)7.3(t up the)7.3( )-15.6(fo)-14.6(ll)13.2(o)-14.6(w)-11.2(-)]TJ +T* +0.0014 Tc +-0.0014 Tw +[(ing te)7.7(st p)-14.2(r)6.3(o)-14.2(c)7.8(e)7.7(d)-14.2(ur)-9.3(e)7.7(s)-15.7(:)13.6( )]TJ +T* +-0.0025 Tc +0 Tw +(\(1\))Tj +/TT10 1 Tf +1.1719 0 TD +0 Tc +( )Tj +/TT4 1 Tf +0.6406 0 TD +0.0019 Tc +0.1544 Tw +[(Compute)8.2( p)-13.7(a)8.2(ir)-8.8(wise)8.2( st)-17.1(a)8.2(tistic)-7.4(a)-7.4(l)14.1( signif)6.8(i)-17.1(c)8.2(a)-7.4(nc)8.2(e)8.2( t)-17.1(e)8.2(st suc)-7.4(h)-13.7( )]TJ +0 -1.1563 TD +-0.0063 Tc +0 Tw +[(as)-7.8( )]TJ +/TT2 1 Tf +1.0937 0 TD +0 Tc +(z)Tj +/TT4 1 Tf +0.4063 0 TD +-0.0205 Tc +0.0361 Tw +[(-t)-23.9(e)-14.2(s)-22(t)-23.9( o)-36.1(r)-15.6( )]TJ +/TT2 1 Tf +3.0781 0 TD +0 Tc +0 Tw +(t)Tj +/TT4 1 Tf +0.2969 0 TD +-0.0049 Tc +0.0205 Tw +[(-)15.6(t)-8.3(es)-6.4(t)-8.3( fo)-20.5(r a s)-22(y)10.7(s)-6.4(t)-23.9(e)-14.2(m)7.3( pai)-23.9(r)0( \(X,)-20.5(Y)-17.1(\) at)-8.3( ce)-14.2(rt)-8.3(ai)-23.9(n )]TJ +/TT15 1 Tf +15.625 0 TD +0 Tc +0 Tw +(")Tj +/TT4 1 Tf +0.5313 0 TD +( )Tj +-21.0313 -1.1563 TD +-0.0056 Tc +0.1619 Tw +[(l)-9(e)-14.9(v)10(e)-14.9(l)6.6(,)-5.6( fo)-21.2(r )15.7(ex)-21.2(a)-14.9(m)6.6(p)-21.2(l)-9(e )]TJ +/TT15 1 Tf +7.9531 0 TD +0 Tc +0 Tw +(")Tj +/TT4 1 Tf +0.5313 0 TD +0.0013 Tc +0.1393 Tw +[( = 0.)-14.3(05, using )-15.7(a)7.6(u)-14.3(toma)7.6(tic)7.6( )-15.7(me)7.7(t)-17.7(-)]TJ +-8.4844 -1.1563 TD +0.0006 Tc +0.015 Tw +[(ric)6.9(s)-0.9( a)6.9(nd hu)-15(ma)6.9(n a)7(ssign)-15(e)6.9(d)0.6( )15.6(s)-16.5(c)6.9(or)-10.1(e)6.9(s)-0.9(. )]TJ +-1.8125 -1.1563 TD +-0.0025 Tc +0 Tw +(\(2\))Tj +/TT10 1 Tf +1.1719 0 TD +0 Tc +( )Tj +/TT4 1 Tf +0.6406 0 TD +0.0014 Tc +0.0142 Tw +[(Count th)-14.2(e)7.7( )-15.7(nu)-14.2(m)13.6(b)-14.2(e)7.7(r)-9.3( of)-9.3( c)-7.9(a)7.7(s)-15.7(e)7.7(s )-15.7(a)7.7( )]TJ +/TT2 1 Tf +11.7969 0 TD +0 Tc +0 Tw +(z)Tj +/TT4 1 Tf +0.4062 0 TD +0.0024 Tc +0.0132 Tw +[(-)7.3(t)-1(e)-6.9(s)0.9(t indi)-16.6(c)8.7(a)8.7(t)-16.6(e)8.7(s)0.9( th)-13.2(e)-6.9(r)7.3(e)-6.9( is)-14.7( )]TJ +-12.2031 -1.1563 TD +0.0151 Tc +0.063 Tw +[(a)21.4( s)13.6(i)11.7(gn)15.1(i)11.7(f)20(i)11.7(c)5.8(a)21.4(n)15.1(t d)15.1(i)11.7(ff)20(e)5.8(r)20(e)5.8(n)15.1(c)5.8(e)21.4( )-15.7(b)15.2(e)21.4(tw)18.5(e)5.8(e)21.4(n X a)21.4(n)-0.5(d)15.1( Y ba)21.4(s)13.6(e)21.4(d on )]TJ +T* +0.0022 Tc +-0.0022 Tw +[(the)8.5( a)-7.1(u)2.2(to)-13.4(ma)8.5(tic)8.5( )-15.6(me)8.5(tr)7.1(i)-16.8(c)8.5(. C)-18.3(a)-7.1(ll)14.4( this nu)-13.4(mbe)-7.1(r)7.1( )]TJ +/TT2 1 Tf +15.75 0 TD +0 Tc +0 Tw +(N)Tj +6.5172 0 0 6.5172 253.0354 402.6376 Tm +0.0082 Tc +(As)Tj +9.931 0 0 9.931 259.5527 404.1894 Tm +0 Tc +(.)Tj +/TT4 1 Tf +0.25 0 TD +( )Tj +-19.1406 -1.1563 TD +-0.0025 Tc +(\(3\))Tj +/TT10 1 Tf +1.1719 0 TD +0 Tc +( )Tj +/TT4 1 Tf +0.6406 0 TD +0.0014 Tc +0.0142 Tw +[(Count th)-14.2(e)7.7( )-15.7(nu)-14.2(m)13.6(b)-14.2(e)7.7(r)-9.3( of)-9.3( c)-7.9(a)7.7(s)-15.7(e)7.7(s )-15.7(a)7.7( )]TJ +/TT2 1 Tf +11.7969 0 TD +0 Tc +0 Tw +(z)Tj +/TT4 1 Tf +0.4062 0 TD +0.0024 Tc +0.0132 Tw +[(-)7.3(t)-1(e)-6.9(s)0.9(t indi)-16.6(c)8.7(a)8.7(t)-16.6(e)8.7(s)0.9( th)-13.2(e)-6.9(r)7.3(e)-6.9( is)-14.7( )]TJ +-12.2031 -1.1563 TD +0.0151 Tc +0.063 Tw +[(a)21.4( s)13.6(i)11.7(gn)15.1(i)11.7(f)20(i)11.7(c)5.8(a)21.4(n)15.1(t d)15.1(i)11.7(ff)20(e)5.8(r)20(e)5.8(n)15.1(c)5.8(e)21.4( )-15.7(b)15.2(e)21.4(tw)18.5(e)5.8(e)21.4(n X a)21.4(n)-0.5(d)15.1( Y ba)21.4(s)13.6(e)21.4(d on )]TJ +T* +0.0015 Tc +-0.0015 Tw +[(the)7.8( hu)-14.1(ma)7.8(n )-15.6(a)7.8(s)0(s)-15.6(e)7.8(ss)-15.6(me)7.8(nt. C)-19(a)-7.8(ll)13.7( this nu)-14(mbe)-7.8(r)6.4( )]TJ +/TT2 1 Tf +16.4062 0 TD +0 Tc +0 Tw +(N)Tj +6.5172 0 0 6.5172 259.5527 368.1894 Tm +-0.0079 Tc +(Hs)Tj +9.931 0 0 9.931 266.6906 369.7411 Tm +0 Tc +(.)Tj +/TT4 1 Tf +0.25 0 TD +( )Tj +-19.8594 -1.1563 TD +-0.0025 Tc +(\(4\))Tj +/TT10 1 Tf +1.1719 0 TD +0 Tc +( )Tj +/TT4 1 Tf +0.6406 0 TD +0.002 Tc +0.076 Tw +[(Count th)-13.6(e)8.3( )-15.8(c)8.3(a)-7.3(se)8.3(s)-15.1( wh)-13.6(e)8.3(n)-13.6( a)-7.3(n)2( )-15.8(a)8.3(u)2(to)-13.6(ma)8.3(tic)-7.3( )-15.8(me)8.3(tri)-17(c)8.3( p)-13.6(r)6.9(e)8.3(d)2(i)-17(c)8.3(ts)-15.1( )]TJ +0 -1.1563 TD +0.001 Tc +0.1395 Tw +[(a)7.3( signifi)-18(c)-8.3(a)7.3(nt dif)-9.7(f)5.9(e)-8.3(r)-9.7(e)7.3(n)1(c)-8.3(e)7.3( )-15.8(a)7.3(nd th)-14.6(e)7.3( hu)-14.6(ma)-8.3(n a)7.4(s)-0.5(s)-16.1(e)7.3(ss)-16.1(me)7.3(nt)-18( )]TJ +0 -1.1719 TD +0.0018 Tc +0.0607 Tw +[(a)-7.5(l)14(so d)-13.8(o)1.8(e)8.1(s)-15.3(. C)-18.7(a)8.1(ll this )]TJ +/TT2 1 Tf +8.1094 0 TD +0 Tc +0 Tw +(N)Tj +6.5172 0 0 6.5172 177.1561 333.5859 Tm +[(hi)-7.9(t)]TJ +/TT4 1 Tf +9.931 0 0 9.931 184.1389 335.1376 Tm +-0.0067 Tc +0.0848 Tw +[(.)-6.7( Fo)-22.3(r ex)-6.7(a)-16(m)-10.1(p)-22.3(l)5.5(e,)-22.3( i)-10.1(f)-1.8( )15.6(a)-16( )]TJ +/TT2 1 Tf +7.9688 0 TD +0 Tc +0 Tw +(z)Tj +/TT4 1 Tf +0.4063 0 TD +0.0034 Tc +0.0591 Tw +[(-)23.9(t)-15.6(e)9.7(s)1.9(t in)-12.2(-)]TJ +-17.8594 -1.1563 TD +0.0001 Tc +0.1562 Tw +[(dic)6.4(a)6.4(t)-18.9(e)6.4(s)-1.4( s)-17(y)15.7(st)-18.9(e)-9.2(m)12.3( )-15.6(X is signi)-18.9(fic)-9.2(a)6.4(nt)-18.9(ly)15.7( di)-18.8(ff)-10.6(e)-9.2(r)5(e)6.4(n)0.1(t )-15.6(fro)-15.5(m Y)-12.1( )]TJ +T* +0.0023 Tc +0 Tw +[(w)5.7(ith )]TJ +/TT15 1 Tf +2.0937 0 TD +0 Tc +(")Tj +/TT4 1 Tf +0.5313 0 TD +0.0012 Tc +0.0613 Tw +[( = 0.05 b)-14.4(a)7.5(se)-8.1(d on the)7.5( )-15.6(a)7.5(u)1.2(to)-14.4(ma)7.5(tic)7.5( )-15.6(me)7.5(tri)-17.8(c)7.5( sc)7.5(o)-14.4(r)6.1(e)-8.1(s)-15.9( )]TJ +-2.625 -1.1563 TD +-0.0006 Tc +0.0475 Tw +[(a)5.7(nd t)-19.6(h)-0.6(e)-9.9( c)5.7(o)-16.2(rr)-11.3(e)5.7(s)-2.1(p)-16.2(onding)-16.2( )]TJ +/TT2 1 Tf +9.3438 0 TD +0 Tc +0 Tw +(z)Tj +/TT4 1 Tf +0.4062 0 TD +0.0021 Tc +0.0448 Tw +[(-)22.6(t)-16.9(e)8.4(s)0.6(t )-15.6(a)-7.2(l)14.3(so s)-15(ugg)-13.5(e)8.4(s)0.6(ts th)-13.5(e)8.4( s)-15(a)-7.2(me)-7.2( )]TJ +-9.75 -1.1563 TD +0.001 Tc +-0.001 Tw +[(ba)7.3(s)-16.1(e)7.3(d on t)-18(h)1(e)7.3( )-15.6(hu)-14.6(ma)7.3(n a)-8.3(g)1(r)-9.7(e)7.4(e)-8.3(m)-2.4(e)7.3(n)1(t,)-14.6( the)-8.3(n)1( w)-11.2(e)7.3( h)-14.6(a)-8.3(v)16.6(e)-8.3( a)7.3( hit. )]TJ +-1.8125 -1.1563 TD +-0.0025 Tc +0 Tw +(\(5\))Tj +/TT10 1 Tf +1.1719 0 TD +0 Tc +( )Tj +/TT4 1 Tf +0.6406 0 TD +0.002 Tc +0.0761 Tw +[(Compute)-7.3( th)-13.6(e)8.3( r)-8.7(e)-7.3(c)8.3(a)-7.3(ll a)8.3(n)-13.6(d p)-13.6(r)7(e)-7.3(c)8.3(ision)-13.6( usin)-13.6(g the)-7.3( f)-8.7(o)2(llow)-10.2(-)]TJ +0 -1.1563 TD +-0.0011 Tc +0.0011 Tw +[(ing fo)-16.7(r)-11.8(m)11.1(u)-16.7(l)-4.5(a)5.2(s)-18.2(:)11.1( )]TJ +3.625 -2.1406 TD +-0.0042 Tc +0.0198 Tw +[(re)-13.5(ca)-13.5(l)-7.6(l)8( = )]TJ +ET +/Cs5 CS 0 0 0 SC +1 J 1 j 0.494 w 10 M []0 d +1 i +160.863 247.931 m +183.829 247.931 l +S +BT +11.9937 0 0 11.9937 179.794 235.6721 Tm +0 Tc +0 Tw +( )Tj +/TT2 1 Tf +6.9961 0 0 6.9961 171.1044 232.7238 Tm +-0.0124 Tc +(Hs)Tj +0.1996 2.3732 TD +0.0103 Tc +(hit)Tj +11.9937 0 0 11.9937 162.2596 235.6721 Tm +0 Tc +(N)Tj +0.1294 1.3843 TD +(N)Tj +/TT4 1 Tf +9.931 0 0 9.931 185.8458 244.9825 Tm +( )Tj +-6.0313 -3.4219 TD +0.0156 Tw +[(pre)-9.3(c)6.3(ision = )]TJ +ET +175.294 213.948 m +197.794 213.948 l +S +BT +11.9937 0 0 11.9937 193.7596 201.6894 Tm +0 Tw +( )Tj +/TT2 1 Tf +6.9961 0 0 6.9961 185.8458 198.7411 Tm +-0.012 Tc +(As)Tj +0.1331 2.3732 TD +0.0103 Tc +(hit)Tj +11.9937 0 0 11.9937 176.6906 201.6894 Tm +0 Tc +(N)Tj +0.1164 1.3843 TD +(N)Tj +/TT4 1 Tf +9.931 0 0 9.931 200.2768 210.9997 Tm +( )Tj +-12.9219 -2.4375 TD +0.0014 Tc +0.2017 Tw +[(A)20.4( good a)7.7(u)1.4(to)-14.2(ma)7.7(tic)7.7( me)7.7(tri)-17.6(c)7.7( )15.6(sho)-14.2(u)-14.2(l)13.6(d )15.6(ha)-7.9(v)-14.2(e)7.7( )15.7(high )15.6(r)-9.3(e)-7.9(c)7.7(a)-7.9(ll)13.6( a)7.7(n)1.4(d)-14.2( )]TJ +0 -1.1563 TD +0.0018 Tc +0.0138 Tw +[(pre)-7.5(c)8.1(ision. T)-12.4(h)1.8(is impl)14(i)-17.2(e)8.1(s)0.4( tha)8.1(t)-1.6( if )-15.6(a)8.1( sta)8.1(tistic)-7.5(a)-7.5(l)14( te)8.1(st indic)-7.5(a)8.1(te)8.1(s )-15.7(a)-7.5( )]TJ +T* +0.0008 Tc +0.093 Tw +[(signific)-8.5(a)7.1(nt )-15.6(diff)-9.9(e)7.1(r)-9.9(e)7.1(n)-14.8(c)-8.5(e)7.1( b)-14.8(e)7.1(tw)-11.4(e)7.1(e)7.1(n)-14.8( two )-15.6(run)-14.8(s)-0.7( using th)-14.8(e)7.1( )-15.6(a)7.1(u)0.8(to)-14.8(-)]TJ +T* +0.0025 Tc +0.1068 Tw +[(ma)8.8(tic)8.8( )-15.7(me)8.8(t)-16.5(r)7.4(ic)8.8( th)-13.1(e)8.8(n)2.5( )-15.7(ve)-6.8(r)-8.2(y)18.1( p)-13.1(r)7.4(ob)-13.1(a)8.8(b)-13.1(ly)18.1( t)-16.5(h)2.5(e)-6.8(r)7.4(e)-6.8( is a)-6.8(l)14.7(so )-15.7(a)8.8( sig)-13.1(n)2.5(if)7.4(i)-16.5(-)]TJ +T* +0.0013 Tc +0.0456 Tw +[(c)7.6(a)7.6(n)1.3(t)-17.7( dif)-9.4(f)6.2(e)-8(r)6.2(e)-8(n)1.3(c)-8(e)7.6( in th)-14.3(e)7.6( )-15.6(ma)7.6(nu)-14.3(a)-8(l)13.5( )-15.6(e)-8(v)1.3(a)7.6(l)-2.1(ua)7.6(tio)-14.3(n. T)-12.9(h)1.3(is wou)-14.3(l)13.5(d)-14.3( be)-23.6( )]TJ +T* +0.001 Tc +0.2959 Tw +[(ve)7.3(r)-25.4(y)32.2( )-15.6(use)-8.3(f)5.9(u)-14.6(l)13.2( du)-14.6(ring th)-14.6(e)7.3( s)-16.1(y)16.6(st)-18(e)-8.3(m)13.2( d)-14.6(e)-8.3(ve)7.3(lop)-14.6(m)13.2(e)7.3(n)1(t )-15.6(c)-8.3(y)16.6(c)-8.3(l)-2.4(e)7.3( t)-18(o)-14.6( )]TJ +T* +0.0013 Tc +-0.0013 Tw +[(ga)7.6(ug)-14.3(e)7.6( if)-9.4( a)7.6(n)1.3( i)-17.7(m)-2.1(pro)-14.3(v)1.3(e)-8(m)-2.1(e)7.6(n)1.3(t is )-15.6(re)-8(a)-8(lly)16.9( sig)-14.3(n)1.3(i)-17.7(f)6.2(ic)-8(a)7.6(n)1.3(t o)-14.3(r)6.2( not. )]TJ +T* +-0.0001 Tc +0.1406 Tw +[(F)9.2(i)-3.5(gu)-15.7(re)6.2( )-15.8(3 sho)-15.7(w)3.3(s th)-15.7(e)6.2( )-15.8(re)-9.4(c)-9.4(a)6.2(ll a)6.2(n)-15.7(d pr)-10.8(e)-9.4(c)6.2(isi)-19.1(on c)6.2(u)-15.7(r)-10.8(v)-0.1(e)6.2(s)-1.6( )-15.8(for t)-19.1(h)-0.1(e)-9.4( )]TJ +T* +0.0008 Tc +0.2023 Tw +[(DUC 2)-14.8(001 sing)-14.8(le)7.1( do)-14.8(c)7.1(u)-14.8(me)7.1(nt t)-18.2(a)7.1(sk )-15.7(a)7.1(t)-2.6( )-15.7(diff)-9.9(e)7.1(r)-9.9(e)7.1(n)0.8(t )]TJ +/TT15 1 Tf +19.5 0 TD +0 Tc +0 Tw +(")Tj +/TT4 1 Tf +0.5312 0 TD +-0.0122 Tc +0.2309 Tw +[( le)-21.5(v)-12.2(e)-21.5(ls)-29.3( )]TJ +-20.0313 -1.1719 TD +0.0003 Tc +0.0622 Tw +[(a)6.6(nd )-15.6(F)9.6(i)-3.1(gur)-10.4(e)6.6( 4 is for th)-15.3(e)6.6( mul)12.5(t)-3.1(i)-18.7(-)5.2(do)-15.3(c)6.6(u)-15.3(me)6.6(nt)-18.7( ta)6.6(sk with diff)-10.4(e)6.7(r)-10.4(-)]TJ +24.2813 7.8906 TD +0.0013 Tc +0.2175 Tw +[(e)7.6(n)1.3(t su)-14.3(mma)-8(r)-9.4(y)16.9( si)-17.7(z)-8(e)7.6(s. )-15.6(B)12(o)1.3(th)-14.3( of)-9.4( the)-8(m)-2.1( )-15.6(e)7.7(x)-14.3(c)-8(l)13.5(ud)-14.3(e)7.6( stop)-14.3(wo)-14.3(r)6.2(d)1.3(s.)-14.3( )]TJ +0 -1.2188 TD +-0.0063 Tc +0.0532 Tw +[(We u)-6.3(s)-23.4(e )]TJ +/TT2 1 Tf +3.3125 0 TD +0 Tc +0 Tw +(z)Tj +/TT4 1 Tf +0.4063 0 TD +-0.0058 Tc +0.0527 Tw +[(-)14.7(t)-24.8(es)-7.3(t)-9.2( i)-9.2(n)-5.8( al)-9.2(l)6.4( t)-9.2(h)-5.8(e s)-7.3(i)-9.2(g)-5.8(n)-5.8(i)-24.8(fi)-9.2(c)-15.1(a)0.5(n)-21.4(ce t)-24.8(e)0.5(s)-22.9(t)-9.2(s)-7.3( wi)-9.2(t)-9.2(h)-5.8( )]TJ +/F2 1 Tf +15.2344 0 TD +0 Tc +0 Tw +()Tj +/TT4 1 Tf +0.6406 0 TD +-0.0133 Tc +0.0602 Tw +[( le)-22.6(ve)-22.6(l a)-7(t)-32.3( )]TJ +-19.5938 -1.1719 TD +0 Tc +0 Tw +[(0.10, 0.)-15.6(05, 0.)-15.6(25, 0.)-15.6(01, )-15.6(a)6.3(nd 0)-15.6(.005. )]TJ +0 -1.1563 TD +-0.0002 Tc +0.2971 Tw +[(F)9.1(r)-10.9(o)-15.8(m)12( F)9.1(i)-3.6(g)-15.8(u)-0.2(r)-10.9(e)6.1(s 3 a)6.1(n)-15.8(d 4, we)6.1( )-15.5(c)6.1(a)-9.5(n se)-9.5(e)-9.5( )]TJ +/TT2 1 Tf +16.125 0 TD +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7813 0 TD +-0.0029 Tc +0.3154 Tw +[(\(1)-18.5(,1\) a)3.4(n)-2.9(d)-18.5( )]TJ +/TT2 1 Tf +-18.9062 -1.1563 TD +0.0016 Tc +0 Tw +(Ngram)Tj +/TT4 1 Tf +2.7969 0 TD +-0.0001 Tc +0.0156 Tw +[(\(2,2)-15.7(\) r)-10.8(e)6.2(side)-9.4( on th)-15.7(e)6.2( up)-15.7(pe)-9.4(r right )-15.8(c)-9.4(o)-0.1(rn)-15.7(e)6.2(r)4.8( o)-15.7(f)4.8( th)-15.7(e)6.2( r)-10.8(e)6.2(c)-9.4(a)-9.4(ll )]TJ +-2.7969 -1.1563 TD +0.0007 Tc +0.1868 Tw +[(a)7(nd p)-14.9(r)5.6(e)-8.6(c)7(ision g)-14.9(r)5.6(a)7(p)-14.9(hs. )]TJ +/TT2 1 Tf +9.375 0 TD +0.002 Tc +0 Tw +[(Ngra)-13.6(m)]TJ +/TT4 1 Tf +2.7969 0 TD +0.016 Tc +0.1715 Tw +[(\()20.9(1)16(,1)16(\))20.9( ha)22.3(s t)12.6(h)16(e)22.3( b)16(e)22.3(s)14.5(t)12.6( ov)16(e)22.3(r)5.3(a)6.7(l)12.6(l)12.6( )]TJ +-12.1719 -1.1563 TD +0.0008 Tc +0.3742 Tw +[(be)7.1(h)-14.8(a)-8.5(v)16.4(i)-2.6(o)-14.8(r)5.7(. )15.6(T)-13.4(h)0.8(e)7.1(s)-0.7(e)7.1( gr)-9.9(a)7.1(phs c)7.1(o)0.8(n)-14.8(f)5.7(ir)-9.9(m)13( )]TJ +/TT2 1 Tf +14.4687 0 TD +0.0028 Tc +0 Tw +[(Ng)-12.8(ram)]TJ +/TT4 1 Tf +2.7969 0 TD +-0.0014 Tc +0.3764 Tw +[(\()-12.1(1,1\) \(si)-20.4(m)10.8(p)-17(l)-4.8(e)-10.7( )]TJ +ET +q +310.412 533.487 226.007 186.673 re +W n +1 g +289.911 523.6 268.914 201.814 re +f +Q +1 g +324.882 710.274 208.347 -164.449 re +f +1 G +0 J 0.233 w +324.882 545.825 m +324.882 710.274 l +533.229 710.274 l +533.229 545.825 l +324.882 545.825 l +S +0 G +0.156 w [0.233 1.868 ]0 d +324.882 545.825 m +324.882 710.274 l +345.694 545.825 m +345.694 710.274 l +366.544 545.825 m +366.544 710.274 l +387.355 545.825 m +387.355 710.274 l +408.206 545.825 m +408.206 710.274 l +429.056 545.825 m +429.056 710.274 l +449.867 545.825 m +449.867 710.274 l +470.717 545.825 m +470.717 710.274 l +491.529 545.825 m +491.529 710.274 l +512.379 545.825 m +512.379 710.274 l +533.229 545.825 m +533.229 710.274 l +324.882 545.825 m +533.229 545.825 l +324.882 562.29 m +533.229 562.29 l +324.882 578.715 m +533.229 578.715 l +324.882 595.179 m +533.229 595.179 l +324.882 611.605 m +533.229 611.605 l +324.882 628.069 m +533.229 628.069 l +324.882 644.533 m +533.229 644.533 l +324.882 660.959 m +533.229 660.959 l +324.882 677.384 m +533.229 677.384 l +324.882 693.849 m +533.229 693.849 l +324.882 710.274 m +533.229 710.274 l +S +0.233 w []0 d +324.882 710.274 m +533.229 710.274 l +324.882 545.825 m +533.229 545.825 l +533.229 545.825 m +533.229 710.274 l +324.882 545.825 m +324.882 710.274 l +324.882 545.825 m +533.229 545.825 l +324.882 545.825 m +324.882 710.274 l +324.882 545.825 m +324.882 547.927 l +324.882 710.274 m +324.882 708.211 l +S +BT +/F3 1 Tf +4.668 0 0 4.6707 323.5986 540.1816 Tm +0 g +0 Tc +0 Tw +(0)Tj +ET +345.694 545.825 m +345.694 547.927 l +345.694 710.274 m +345.694 708.211 l +S +BT +4.668 0 0 4.6707 342.465 540.1816 Tm +(0.1)Tj +ET +366.544 545.825 m +366.544 547.927 l +366.544 710.274 m +366.544 708.211 l +S +BT +4.668 0 0 4.6707 363.3152 540.1816 Tm +(0.2)Tj +ET +387.355 545.825 m +387.355 547.927 l +387.355 710.274 m +387.355 708.211 l +S +BT +4.668 0 0 4.6707 384.1266 540.1816 Tm +(0.3)Tj +ET +408.206 545.825 m +408.206 547.927 l +408.206 710.274 m +408.206 708.211 l +S +BT +4.668 0 0 4.6707 404.9769 540.1816 Tm +(0.4)Tj +ET +429.056 545.825 m +429.056 547.927 l +429.056 710.274 m +429.056 708.211 l +S +BT +4.668 0 0 4.6707 425.8271 540.1816 Tm +(0.5)Tj +ET +449.867 545.825 m +449.867 547.927 l +449.867 710.274 m +449.867 708.211 l +S +BT +4.668 0 0 4.6707 446.6385 540.1816 Tm +(0.6)Tj +ET +470.717 545.825 m +470.717 547.927 l +470.717 710.274 m +470.717 708.211 l +S +BT +4.668 0 0 4.6707 467.4888 540.1816 Tm +(0.7)Tj +ET +491.529 545.825 m +491.529 547.927 l +491.529 710.274 m +491.529 708.211 l +S +BT +4.668 0 0 4.6707 488.3001 540.1816 Tm +(0.8)Tj +ET +512.379 545.825 m +512.379 547.927 l +512.379 710.274 m +512.379 708.211 l +S +BT +4.668 0 0 4.6707 509.1504 540.1816 Tm +(0.9)Tj +ET +533.229 545.825 m +533.229 547.927 l +533.229 710.274 m +533.229 708.211 l +S +q +310.412 533.487 226.007 186.673 re +W n +BT +4.668 0 0 4.6707 531.9457 540.1816 Tm +(1)Tj +ET +Q +324.882 545.825 m +326.944 545.825 l +533.229 545.825 m +531.129 545.825 l +S +BT +4.668 0 0 4.6707 320.9534 544.1128 Tm +(0)Tj +ET +324.882 562.29 m +326.944 562.29 l +533.229 562.29 m +531.129 562.29 l +S +BT +4.668 0 0 4.6707 317.0634 560.5771 Tm +(0.1)Tj +ET +324.882 578.715 m +326.944 578.715 l +533.229 578.715 m +531.129 578.715 l +S +BT +4.668 0 0 4.6707 317.0634 577.0025 Tm +(0.2)Tj +ET +324.882 595.179 m +326.944 595.179 l +533.229 595.179 m +531.129 595.179 l +S +BT +4.668 0 0 4.6707 317.0634 593.4668 Tm +(0.3)Tj +ET +324.882 611.605 m +326.944 611.605 l +533.229 611.605 m +531.129 611.605 l +S +BT +4.668 0 0 4.6707 317.0634 609.8922 Tm +(0.4)Tj +ET +324.882 628.069 m +326.944 628.069 l +533.229 628.069 m +531.129 628.069 l +S +BT +4.668 0 0 4.6707 317.0634 626.3565 Tm +(0.5)Tj +ET +324.882 644.533 m +326.944 644.533 l +533.229 644.533 m +531.129 644.533 l +S +BT +4.668 0 0 4.6707 317.0634 642.8208 Tm +(0.6)Tj +ET +324.882 660.959 m +326.944 660.959 l +533.229 660.959 m +531.129 660.959 l +S +BT +4.668 0 0 4.6707 317.0634 659.2462 Tm +(0.7)Tj +ET +324.882 677.384 m +326.944 677.384 l +533.229 677.384 m +531.129 677.384 l +S +BT +4.668 0 0 4.6707 317.0634 675.6716 Tm +(0.8)Tj +ET +324.882 693.849 m +326.944 693.849 l +533.229 693.849 m +531.129 693.849 l +S +BT +4.668 0 0 4.6707 317.0634 692.136 Tm +(0.9)Tj +ET +324.882 710.274 m +326.944 710.274 l +533.229 710.274 m +531.129 710.274 l +S +BT +4.668 0 0 4.6707 320.9534 708.5613 Tm +(1)Tj +ET +324.882 710.274 m +533.229 710.274 l +324.882 545.825 m +533.229 545.825 l +533.229 545.825 m +533.229 710.274 l +324.882 545.825 m +324.882 710.274 l +S +/Cs5 CS 0 0 1 SC +[2.802 ]0 d +452.979 651.072 m +448 650.099 l +440.064 647.492 l +429.056 641.731 l +416.53 636.282 l +S +[]0 d +454.392 651.103 m +454.392 650.33 453.765 649.702 452.992 649.702 c +452.219 649.702 451.591 650.33 451.591 651.103 c +451.591 651.877 452.219 652.505 452.992 652.505 c +453.765 652.505 454.392 651.877 454.392 651.103 c +449.423 650.095 m +449.423 649.321 448.796 648.694 448.023 648.694 c +447.25 648.694 446.622 649.321 446.622 650.095 c +446.622 650.868 447.25 651.496 448.023 651.496 c +448.796 651.496 449.423 650.868 449.423 650.095 c +441.513 647.534 m +441.513 646.761 440.886 646.133 440.113 646.133 c +439.34 646.133 438.712 646.761 438.712 647.534 c +438.712 648.308 439.34 648.936 440.113 648.936 c +440.886 648.936 441.513 648.308 441.513 647.534 c +430.46 641.793 m +430.46 641.02 429.832 640.392 429.059 640.392 c +428.286 640.392 427.659 641.02 427.659 641.793 c +427.659 642.567 428.286 643.194 429.059 643.194 c +429.832 643.194 430.46 642.567 430.46 641.793 c +417.986 636.284 m +417.986 635.511 417.359 634.883 416.586 634.883 c +415.813 634.883 415.186 635.511 415.186 636.284 c +415.186 637.058 415.813 637.686 416.586 637.686 c +417.359 637.686 417.986 637.058 417.986 636.284 c +S +0 0.502 0 SC +[2.802 ]0 d +505.066 685.48 m +500.087 675.282 l +505.727 681.51 l +503.432 661.932 l +499.892 653.719 l +S +[]0 d +503.666 685.48 m +506.466 685.48 l +505.066 686.881 m +505.066 684.079 l +498.686 675.282 m +501.487 675.282 l +500.087 676.684 m +500.087 673.881 l +504.327 681.51 m +507.128 681.51 l +505.727 682.911 m +505.727 680.109 l +502.032 661.932 m +504.833 661.932 l +503.432 663.333 m +503.432 660.531 l +498.492 653.719 m +501.293 653.719 l +499.892 655.12 m +499.892 652.318 l +S +1 0 0 SC +[2.802 ]0 d +465.077 671.001 m +462.159 668.198 l +450.917 667.848 l +443.838 671.157 l +441.543 660.959 l +S +[]0 d +464.104 671.974 m +466.049 670.028 l +466.049 671.974 m +464.104 670.028 l +461.187 669.172 m +463.132 667.225 l +463.132 669.172 m +461.187 667.225 l +449.945 668.821 m +451.89 666.875 l +451.89 668.821 m +449.945 666.875 l +442.865 672.13 m +444.81 670.183 l +444.81 672.13 m +442.865 670.183 l +440.57 661.932 m +442.515 659.986 l +442.515 661.932 m +440.57 659.986 l +S +0.004 0.745 0.745 SC +[2.802 ]0 d +449.05 654.381 m +429.056 646.324 l +418.008 639.084 l +421.548 643.015 l +416.53 628.069 l +S +[]0 d +447.65 654.381 m +450.451 654.381 l +449.05 655.782 m +449.05 652.98 l +427.655 646.324 m +430.456 646.324 l +429.056 647.725 m +429.056 644.923 l +416.608 639.084 m +419.409 639.084 l +418.008 640.485 m +418.008 637.683 l +420.148 643.015 m +422.949 643.015 l +421.548 644.417 m +421.548 641.614 l +415.13 628.069 m +417.93 628.069 l +416.53 629.47 m +416.53 626.668 l +448.078 655.354 m +450.023 653.408 l +450.023 655.354 m +448.078 653.408 l +428.083 647.297 m +430.028 645.351 l +430.028 647.297 m +428.083 645.351 l +417.036 640.057 m +418.981 638.111 l +418.981 640.057 m +417.036 638.111 l +420.576 643.989 m +422.521 642.042 l +422.521 643.989 m +420.576 642.042 l +415.558 629.042 m +417.503 627.096 l +417.503 629.042 m +415.558 627.096 l +S +0.745 0 0.745 SC +[2.802 ]0 d +432.985 644.495 m +424.232 636.788 l +412.562 628.069 l +414.235 624.761 l +374.868 595.179 l +S +0 j []0 d +432.985 642.665 m +434.385 644.495 l +432.985 646.324 l +431.584 644.495 l +432.985 642.665 l +h +424.232 634.958 m +425.633 636.788 l +424.232 638.617 l +422.832 636.788 l +424.232 634.958 l +h +412.562 626.24 m +413.963 628.069 l +412.562 629.898 l +411.162 628.069 l +412.562 626.24 l +h +414.235 622.931 m +415.635 624.761 l +414.235 626.59 l +412.835 624.761 l +414.235 622.931 l +h +374.868 593.35 m +376.269 595.179 l +374.868 597.009 l +373.468 595.179 l +374.868 593.35 l +s +BT +4.668 0 0 4.6707 422.5984 534.6156 Tm +(Recall)Tj +0 4.6707 -4.668 0 314.924 618.4941 Tm +(Precision)Tj +4.668 0 0 4.6707 375.8409 713.9716 Tm +(Significance Predication Recall and Precision Curve)Tj +ET +1 g +473.868 592.26 38.939 -27.752 re +f +1 G +473.868 564.508 m +473.868 592.26 l +512.807 592.26 l +512.807 564.508 l +473.868 564.508 l +S +0 G +473.868 592.26 m +512.807 592.26 l +473.868 564.508 m +512.807 564.508 l +512.807 564.508 m +512.807 592.26 l +473.868 564.508 m +473.868 592.26 l +473.868 564.508 m +512.807 564.508 l +473.868 564.508 m +473.868 592.26 l +473.868 592.26 m +512.807 592.26 l +473.868 564.508 m +512.807 564.508 l +512.807 564.508 m +512.807 592.26 l +473.868 564.508 m +473.868 592.26 l +S +BT +4.668 0 0 4.6707 486.8219 587.5116 Tm +0 g +(Ngram\(1,4\))Tj +0 -1.15 TD +(Ngram\(1,1\))Tj +T* +(Ngram\(2,2\))Tj +T* +(Ngram\(3,3\))Tj +T* +(Ngram\(4,4\))Tj +ET +/Cs5 CS 0 0 1 SC +[2.802 ]0 d +476.436 589.069 m +484.216 589.069 l +S +[]0 d +481.671 589.034 m +481.671 588.261 481.043 587.633 480.27 587.633 c +479.497 587.633 478.87 588.261 478.87 589.034 c +478.87 589.808 479.497 590.436 480.27 590.436 c +481.043 590.436 481.671 589.808 481.671 589.034 c +S +0 0.502 0 SC +[2.802 ]0 d +476.436 583.697 m +484.216 583.697 l +S +[]0 d +478.925 583.697 m +481.726 583.697 l +480.326 585.098 m +480.326 582.296 l +S +1 0 0 SC +[2.802 ]0 d +476.436 578.326 m +484.216 578.326 l +S +[]0 d +479.353 579.299 m +481.298 577.353 l +481.298 579.299 m +479.353 577.353 l +S +0.004 0.745 0.745 SC +[2.802 ]0 d +476.436 572.955 m +484.216 572.955 l +S +[]0 d +478.925 572.955 m +481.726 572.955 l +480.326 574.356 m +480.326 571.553 l +479.353 573.928 m +481.298 571.981 l +481.298 573.928 m +479.353 571.981 l +S +0.745 0 0.745 SC +[2.802 ]0 d +476.436 567.544 m +484.216 567.544 l +S +q +477.486 564.664 5.718 5.722 re +W n +[]0 d +480.326 565.715 m +481.726 567.544 l +480.326 569.374 l +478.925 567.544 l +480.326 565.715 l +s +Q +[]0 d +510.423 566.026 m +S +q +310.409 283.038 226.01 185.119 re +W n +1 g +290.035 273.234 267.261 200.134 re +f +Q +1 g +324.791 458.353 207.066 -163.079 re +f +1 G +1 j 0.232 w +324.791 295.274 m +324.791 458.353 l +531.857 458.353 l +531.857 295.274 l +324.791 295.274 l +S +0 G +0.155 w [0.232 1.854 ]0 d +324.791 295.274 m +324.791 458.353 l +345.474 295.274 m +345.474 458.353 l +366.196 295.274 m +366.196 458.353 l +386.88 295.274 m +386.88 458.353 l +407.602 295.274 m +407.602 458.353 l +428.324 295.274 m +428.324 458.353 l +449.007 295.274 m +449.007 458.353 l +469.729 295.274 m +469.729 458.353 l +490.413 295.274 m +490.413 458.353 l +511.135 295.274 m +511.135 458.353 l +531.857 295.274 m +531.857 458.353 l +324.791 295.274 m +531.857 295.274 l +324.791 311.601 m +531.857 311.601 l +324.791 327.89 m +531.857 327.89 l +324.791 344.217 m +531.857 344.217 l +324.791 360.506 m +531.857 360.506 l +324.791 376.833 m +531.857 376.833 l +324.791 393.16 m +531.857 393.16 l +324.791 409.449 m +531.857 409.449 l +324.791 425.737 m +531.857 425.737 l +324.791 442.065 m +531.857 442.065 l +324.791 458.353 m +531.857 458.353 l +S +0.232 w []0 d +324.791 458.353 m +531.857 458.353 l +324.791 295.274 m +531.857 295.274 l +531.857 295.274 m +531.857 458.353 l +324.791 295.274 m +324.791 458.353 l +324.791 295.274 m +531.857 295.274 l +324.791 295.274 m +324.791 458.353 l +324.791 295.274 m +324.791 297.358 l +324.791 458.353 m +324.791 456.308 l +S +BT +4.6393 0 0 4.6318 323.5149 289.6772 Tm +0 g +(0)Tj +ET +345.474 295.274 m +345.474 297.358 l +345.474 458.353 m +345.474 456.308 l +S +BT +4.6393 0 0 4.6318 342.2653 289.6772 Tm +(0.1)Tj +ET +366.196 295.274 m +366.196 297.358 l +366.196 458.353 m +366.196 456.308 l +S +BT +4.6393 0 0 4.6318 362.9874 289.6772 Tm +(0.2)Tj +ET +386.88 295.274 m +386.88 297.358 l +386.88 458.353 m +386.88 456.308 l +S +BT +4.6393 0 0 4.6318 383.6708 289.6772 Tm +(0.3)Tj +ET +407.602 295.274 m +407.602 297.358 l +407.602 458.353 m +407.602 456.308 l +S +BT +4.6393 0 0 4.6318 404.3929 289.6772 Tm +(0.4)Tj +ET +428.324 295.274 m +428.324 297.358 l +428.324 458.353 m +428.324 456.308 l +S +BT +4.6393 0 0 4.6318 425.115 289.6772 Tm +(0.5)Tj +ET +449.007 295.274 m +449.007 297.358 l +449.007 458.353 m +449.007 456.308 l +S +BT +4.6393 0 0 4.6318 445.7984 289.6772 Tm +(0.6)Tj +ET +469.729 295.274 m +469.729 297.358 l +469.729 458.353 m +469.729 456.308 l +S +BT +4.6393 0 0 4.6318 466.5205 289.6772 Tm +(0.7)Tj +ET +490.413 295.274 m +490.413 297.358 l +490.413 458.353 m +490.413 456.308 l +S +BT +4.6393 0 0 4.6318 487.2039 289.6772 Tm +(0.8)Tj +ET +511.135 295.274 m +511.135 297.358 l +511.135 458.353 m +511.135 456.308 l +S +BT +4.6393 0 0 4.6318 507.926 289.6772 Tm +(0.9)Tj +ET +531.857 295.274 m +531.857 297.358 l +531.857 458.353 m +531.857 456.308 l +S +BT +4.6393 0 0 4.6318 530.5811 289.6772 Tm +(1)Tj +ET +324.791 295.274 m +326.84 295.274 l +531.857 295.274 m +529.769 295.274 l +S +BT +4.6393 0 0 4.6318 320.886 293.5757 Tm +(0)Tj +ET +324.791 311.601 m +326.84 311.601 l +531.857 311.601 m +529.769 311.601 l +S +BT +4.6393 0 0 4.6318 317.0199 309.903 Tm +(0.1)Tj +ET +324.791 327.89 m +326.84 327.89 l +531.857 327.89 m +529.769 327.89 l +S +BT +4.6393 0 0 4.6318 317.0199 326.1916 Tm +(0.2)Tj +ET +324.791 344.217 m +326.84 344.217 l +531.857 344.217 m +529.769 344.217 l +S +BT +4.6393 0 0 4.6318 317.0199 342.5188 Tm +(0.3)Tj +ET +324.791 360.506 m +326.84 360.506 l +531.857 360.506 m +529.769 360.506 l +S +BT +4.6393 0 0 4.6318 317.0199 358.8074 Tm +(0.4)Tj +ET +324.791 376.833 m +326.84 376.833 l +531.857 376.833 m +529.769 376.833 l +S +BT +4.6393 0 0 4.6318 317.0199 375.1347 Tm +(0.5)Tj +ET +324.791 393.16 m +326.84 393.16 l +531.857 393.16 m +529.769 393.16 l +S +BT +4.6393 0 0 4.6318 317.0199 391.4619 Tm +(0.6)Tj +ET +324.791 409.449 m +326.84 409.449 l +531.857 409.449 m +529.769 409.449 l +S +BT +4.6393 0 0 4.6318 317.0199 407.7505 Tm +(0.7)Tj +ET +324.791 425.737 m +326.84 425.737 l +531.857 425.737 m +529.769 425.737 l +S +BT +4.6393 0 0 4.6318 317.0199 424.0392 Tm +(0.8)Tj +ET +324.791 442.065 m +326.84 442.065 l +531.857 442.065 m +529.769 442.065 l +S +BT +4.6393 0 0 4.6318 317.0199 440.3664 Tm +(0.9)Tj +ET +324.791 458.353 m +326.84 458.353 l +531.857 458.353 m +529.769 458.353 l +S +BT +4.6393 0 0 4.6318 320.886 456.655 Tm +(1)Tj +ET +324.791 458.353 m +531.857 458.353 l +324.791 295.274 m +531.857 295.274 l +531.857 295.274 m +531.857 458.353 l +324.791 295.274 m +324.791 458.353 l +S +/Cs5 CS 1 0 0 SC +406.983 387.911 m +395.192 362.976 l +400.565 356.453 l +412.55 352.361 l +421.481 353.828 l +408.445 387.931 m +408.445 387.164 407.822 386.541 407.054 386.541 c +406.285 386.541 405.662 387.164 405.662 387.931 c +405.662 388.698 406.285 389.321 407.054 389.321 c +407.822 389.321 408.445 388.698 408.445 387.931 c +396.581 362.948 m +396.581 362.181 395.957 361.559 395.189 361.559 c +394.42 361.559 393.797 362.181 393.797 362.948 c +393.797 363.715 394.42 364.338 395.189 364.338 c +395.957 364.338 396.581 363.715 396.581 362.948 c +401.955 356.431 m +401.955 355.664 401.332 355.041 400.563 355.041 c +399.795 355.041 399.172 355.664 399.172 356.431 c +399.172 357.198 399.795 357.821 400.563 357.821 c +401.332 357.821 401.955 357.198 401.955 356.431 c +413.921 352.397 m +413.921 351.63 413.298 351.007 412.53 351.007 c +411.761 351.007 411.138 351.63 411.138 352.397 c +411.138 353.164 411.761 353.786 412.53 353.786 c +413.298 353.786 413.921 353.164 413.921 352.397 c +422.845 353.793 m +422.845 353.026 422.222 352.404 421.454 352.404 c +420.685 352.404 420.062 353.026 420.062 353.793 c +420.062 354.56 420.685 355.183 421.454 355.183 c +422.222 355.183 422.845 354.56 422.845 353.793 c +502.243 390.034 m +506.998 375.868 l +511.56 363.787 l +512.991 357.263 l +504.292 351.049 l +500.851 390.034 m +503.635 390.034 l +502.243 391.423 m +502.243 388.644 l +505.606 375.868 m +508.39 375.868 l +506.998 377.258 m +506.998 374.478 l +510.168 363.787 m +512.952 363.787 l +511.56 365.176 m +511.56 362.397 l +511.599 357.263 m +514.382 357.263 l +512.991 358.653 m +512.991 355.874 l +502.9 351.049 m +505.684 351.049 l +504.292 352.439 m +504.292 349.66 l +426.661 410.259 m +403.465 402.115 l +385.449 388.413 l +368.671 390.381 l +359.353 397.213 l +425.695 411.224 m +427.628 409.294 l +427.628 411.224 m +425.695 409.294 l +402.499 403.08 m +404.432 401.15 l +404.432 403.08 m +402.499 401.15 l +384.483 389.378 m +386.416 387.448 l +386.416 389.378 m +384.483 387.448 l +367.704 391.346 m +369.637 389.416 l +369.637 391.346 m +367.704 389.416 l +358.387 398.178 m +360.32 396.248 l +360.32 398.178 m +358.387 396.248 l +S +q +324.791 295.235 207.105 163.118 re +W n +380.694 394.28 m +357.884 372.085 l +360.165 422.186 l +349.843 425.737 l +345.474 458.353 l +S +Q +379.302 394.28 m +382.086 394.28 l +380.694 395.669 m +380.694 392.89 l +356.492 372.085 m +359.276 372.085 l +357.884 373.475 m +357.884 370.696 l +358.773 422.186 m +361.557 422.186 l +360.165 423.576 m +360.165 420.797 l +348.451 425.737 m +351.235 425.737 l +349.843 427.127 m +349.843 424.348 l +344.082 458.353 m +346.866 458.353 l +345.474 459.743 m +345.474 456.964 l +379.727 395.245 m +381.66 393.315 l +381.66 395.245 m +379.727 393.315 l +356.918 373.05 m +358.851 371.12 l +358.851 373.05 m +356.918 371.12 l +359.199 423.151 m +361.132 421.221 l +361.132 423.151 m +359.199 421.221 l +348.876 426.702 m +350.809 424.773 l +350.809 426.702 m +348.876 424.773 l +344.508 459.318 m +346.441 457.388 l +346.441 459.318 m +344.508 457.388 l +S +q +324.791 295.235 207.105 163.118 re +W n +364.109 370.619 m +349.611 393.122 l +339.868 458.353 l +324.791 295.274 l +S +Q +0 j +364.109 368.804 m +365.5 370.619 l +364.109 372.433 l +362.717 370.619 l +364.109 368.804 l +h +349.611 391.307 m +351.003 393.122 l +349.611 394.936 l +348.219 393.122 l +349.611 391.307 l +h +339.868 456.539 m +341.26 458.353 l +339.868 460.167 l +338.477 458.353 l +339.868 456.539 l +h +324.791 293.46 m +326.182 295.274 l +324.791 297.088 l +323.399 295.274 l +324.791 293.46 l +s +BT +4.6393 0 0 4.6318 421.9062 284.1577 Tm +(Recall)Tj +0 4.6318 -4.6393 0 314.8936 367.3377 Tm +(Precision)Tj +4.6393 0 0 4.6318 375.4361 462.0202 Tm +(Significance Predication Recall and Precision Curve)Tj +ET +0.004 1 0 SC +[2.781 ]0 d +461.031 398.371 m +449.626 390.69 l +456.469 384.514 l +453.144 380.924 l +442.396 375.212 l +S +[]0 d +462.395 398.328 m +462.395 397.561 461.771 396.938 461.003 396.938 c +460.235 396.938 459.611 397.561 459.611 398.328 c +459.611 399.095 460.235 399.717 461.003 399.717 c +461.771 399.717 462.395 399.095 462.395 398.328 c +451.037 390.724 m +451.037 389.957 450.413 389.335 449.645 389.335 c +448.877 389.335 448.253 389.957 448.253 390.724 c +448.253 391.491 448.877 392.114 449.645 392.114 c +450.413 392.114 451.037 391.491 451.037 390.724 c +457.933 384.517 m +457.933 383.75 457.309 383.128 456.541 383.128 c +455.773 383.128 455.149 383.75 455.149 384.517 c +455.149 385.284 455.773 385.907 456.541 385.907 c +457.309 385.907 457.933 385.284 457.933 384.517 c +454.485 380.948 m +454.485 380.181 453.861 379.559 453.093 379.559 c +452.325 379.559 451.701 380.181 451.701 380.948 c +451.701 381.715 452.325 382.338 453.093 382.338 c +453.861 382.338 454.485 381.715 454.485 380.948 c +443.735 375.207 m +443.735 374.44 443.112 373.817 442.344 373.817 c +441.575 373.817 440.952 374.44 440.952 375.207 c +440.952 375.974 441.575 376.596 442.344 376.596 c +443.112 376.596 443.735 375.974 443.735 375.207 c +S +[2.781 ]0 d +503.48 405.705 m +508.854 397.869 l +512.991 387.911 l +506.998 386.135 l +508.235 378.956 l +S +[]0 d +502.088 405.705 m +504.872 405.705 l +503.48 407.094 m +503.48 404.315 l +507.462 397.869 m +510.246 397.869 l +508.854 399.259 m +508.854 396.48 l +511.599 387.911 m +514.382 387.911 l +512.991 389.3 m +512.991 386.521 l +505.606 386.135 m +508.39 386.135 l +506.998 387.525 m +506.998 384.746 l +506.844 378.956 m +509.627 378.956 l +508.235 380.345 m +508.235 377.566 l +S +[2.781 ]0 d +458.131 411.417 m +449.626 406.014 l +452.757 408.484 l +444.871 416.628 l +428.324 407.48 l +S +[]0 d +457.165 412.382 m +459.098 410.452 l +459.098 412.382 m +457.165 410.452 l +448.659 406.979 m +450.592 405.049 l +450.592 406.979 m +448.659 405.049 l +451.791 409.449 m +453.724 407.519 l +453.724 409.449 m +451.791 407.519 l +443.904 417.593 m +445.837 415.663 l +445.837 417.593 m +443.904 415.663 l +427.357 408.445 m +429.29 406.515 l +429.29 408.445 m +427.357 406.515 l +S +[2.781 ]0 d +441.159 403.08 m +413.594 388.914 l +415.063 404.084 l +399.328 396.557 l +395.385 397.213 l +S +[]0 d +439.767 403.08 m +442.551 403.08 l +441.159 404.47 m +441.159 401.691 l +412.202 388.914 m +414.986 388.914 l +413.594 390.304 m +413.594 387.525 l +413.671 404.084 m +416.455 404.084 l +415.063 405.473 m +415.063 402.694 l +397.937 396.557 m +400.72 396.557 l +399.328 397.946 m +399.328 395.167 l +393.993 397.213 m +396.777 397.213 l +395.385 398.603 m +395.385 395.824 l +440.193 404.045 m +442.126 402.115 l +442.126 404.045 m +440.193 402.115 l +412.628 389.879 m +414.561 387.949 l +414.561 389.879 m +412.628 387.949 l +414.097 405.049 m +416.03 403.119 l +416.03 405.049 m +414.097 403.119 l +398.362 397.522 m +400.295 395.592 l +400.295 397.522 m +398.362 395.592 l +394.418 398.178 m +396.352 396.248 l +396.352 398.178 m +394.418 396.248 l +S +[2.781 ]0 d +418.349 388.104 m +403.658 386.29 l +381.313 371.777 l +374.47 380.423 l +367.201 408.137 l +S +[]0 d +418.349 386.29 m +419.741 388.104 l +418.349 389.918 l +416.958 388.104 l +418.349 386.29 l +h +403.658 384.476 m +405.05 386.29 l +403.658 388.104 l +402.267 386.29 l +403.658 384.476 l +h +381.313 369.962 m +382.704 371.777 l +381.313 373.591 l +379.921 371.777 l +381.313 369.962 l +h +374.47 378.609 m +375.861 380.423 l +374.47 382.237 l +373.078 380.423 l +374.47 378.609 l +h +367.201 406.322 m +368.593 408.137 l +367.201 409.951 l +365.81 408.137 l +367.201 406.322 l +s +0 0 1 SC +[0.232 1.854 2.781 1.854 ]0 d +487.745 423.653 m +482.951 416.474 l +478.428 409.449 l +480.09 404.084 l +474.291 408.793 l +S +[]0 d +489.166 423.621 m +489.166 422.854 488.543 422.231 487.775 422.231 c +487.006 422.231 486.383 422.854 486.383 423.621 c +486.383 424.388 487.006 425.01 487.775 425.01 c +488.543 425.01 489.166 424.388 489.166 423.621 c +484.299 416.483 m +484.299 415.716 483.675 415.093 482.907 415.093 c +482.139 415.093 481.515 415.716 481.515 416.483 c +481.515 417.25 482.139 417.872 482.907 417.872 c +483.675 417.872 484.299 417.25 484.299 416.483 c +479.837 409.5 m +479.837 408.733 479.213 408.11 478.445 408.11 c +477.677 408.11 477.053 408.733 477.053 409.5 c +477.053 410.267 477.677 410.89 478.445 410.89 c +479.213 410.89 479.837 410.267 479.837 409.5 c +481.459 404.069 m +481.459 403.302 480.836 402.679 480.068 402.679 c +479.299 402.679 478.676 403.302 478.676 404.069 c +478.676 404.836 479.299 405.458 480.068 405.458 c +480.836 405.458 481.459 404.836 481.459 404.069 c +475.679 408.724 m +475.679 407.957 475.056 407.335 474.287 407.335 c +473.519 407.335 472.896 407.957 472.896 408.724 c +472.896 409.491 473.519 410.114 474.287 410.114 c +475.056 410.114 475.679 409.491 475.679 408.724 c +S +[0.232 1.854 2.781 1.854 ]0 d +516.315 425.12 m +517.552 418.095 l +522.501 412.074 l +517.127 402.617 l +520.259 404.701 l +S +[]0 d +514.924 425.12 m +517.707 425.12 l +516.315 426.509 m +516.315 423.73 l +516.161 418.095 m +518.944 418.095 l +517.552 419.484 m +517.552 416.705 l +521.109 412.074 m +523.893 412.074 l +522.501 413.463 m +522.501 410.684 l +515.735 402.617 m +518.519 402.617 l +517.127 404.006 m +517.127 401.227 l +518.867 404.701 m +521.651 404.701 l +520.259 406.091 m +520.259 403.312 l +S +[0.232 1.854 2.781 1.854 ]0 d +485.232 437.664 m +474.291 429.829 l +462.886 425.737 l +461.649 426.394 l +458.943 431.141 l +S +[]0 d +484.266 438.629 m +486.199 436.7 l +486.199 438.629 m +484.266 436.7 l +473.325 430.794 m +475.258 428.864 l +475.258 430.794 m +473.325 428.864 l +461.92 426.702 m +463.853 424.773 l +463.853 426.702 m +461.92 424.773 l +460.683 427.359 m +462.616 425.429 l +462.616 427.359 m +460.683 425.429 l +457.977 432.106 m +459.91 430.176 l +459.91 432.106 m +457.977 430.176 l +S +[0.232 1.854 2.781 1.854 ]0 d +472.397 429.983 m +457.087 424.618 l +440.927 413.54 l +432.035 416.628 l +428.324 417.593 l +S +[]0 d +471.005 429.983 m +473.789 429.983 l +472.397 431.373 m +472.397 428.594 l +455.696 424.618 m +458.479 424.618 l +457.087 426.008 m +457.087 423.229 l +439.535 413.54 m +442.319 413.54 l +440.927 414.93 m +440.927 412.151 l +430.643 416.628 m +433.427 416.628 l +432.035 418.018 m +432.035 415.239 l +426.932 417.593 m +429.716 417.593 l +428.324 418.983 m +428.324 416.204 l +471.43 430.948 m +473.363 429.018 l +473.363 430.948 m +471.43 429.018 l +456.121 425.583 m +458.054 423.653 l +458.054 425.583 m +456.121 423.653 l +439.961 414.505 m +441.894 412.575 l +441.894 414.505 m +439.961 412.575 l +431.069 417.593 m +433.002 415.663 l +433.002 417.593 m +431.069 415.663 l +427.357 418.558 m +429.29 416.628 l +429.29 418.558 m +427.357 416.628 l +S +[0.232 1.854 2.781 1.854 ]0 d +449.007 425.737 m +416.726 416.628 l +409.457 411.224 l +402.421 422.186 l +378.413 422.186 l +S +[]0 d +449.007 423.923 m +450.399 425.737 l +449.007 427.552 l +447.615 425.737 l +449.007 423.923 l +h +416.726 414.814 m +418.117 416.628 l +416.726 418.442 l +415.334 416.628 l +416.726 414.814 l +h +409.457 409.41 m +410.849 411.224 l +409.457 413.039 l +408.066 411.224 l +409.457 409.41 l +h +402.421 420.372 m +403.813 422.186 l +402.421 424.001 l +401.029 422.186 l +402.421 420.372 l +h +378.413 420.372 m +379.805 422.186 l +378.413 424.001 l +377.021 422.186 l +378.413 420.372 l +s +1 0 1 SC +[0.232 1.854 ]0 d +499.73 434.731 m +492.926 431.141 l +489.408 424.927 l +480.902 426.239 l +476.766 439.942 l +S +[]0 d +501.133 434.793 m +501.133 434.026 500.509 433.404 499.741 433.404 c +498.973 433.404 498.349 434.026 498.349 434.793 c +498.349 435.56 498.973 436.183 499.741 436.183 c +500.509 436.183 501.133 435.56 501.133 434.793 c +494.338 431.147 m +494.338 430.38 493.715 429.757 492.947 429.757 c +492.178 429.757 491.555 430.38 491.555 431.147 c +491.555 431.914 492.178 432.536 492.947 432.536 c +493.715 432.536 494.338 431.914 494.338 431.147 c +490.789 424.862 m +490.789 424.095 490.165 423.473 489.397 423.473 c +488.629 423.473 488.005 424.095 488.005 424.862 c +488.005 425.629 488.629 426.252 489.397 426.252 c +490.165 426.252 490.789 425.629 490.789 424.862 c +482.271 426.259 m +482.271 425.492 481.647 424.869 480.879 424.869 c +480.111 424.869 479.487 425.492 479.487 426.259 c +479.487 427.026 480.111 427.648 480.879 427.648 c +481.647 427.648 482.271 427.026 482.271 426.259 c +478.214 439.914 m +478.214 439.147 477.591 438.524 476.823 438.524 c +476.054 438.524 475.431 439.147 475.431 439.914 c +475.431 440.681 476.054 441.303 476.823 441.303 c +477.591 441.303 478.214 440.681 478.214 439.914 c +S +q +324.791 295.235 207.105 163.118 re +W n +[0.232 1.854 ]0 d +531.857 442.566 m +529.344 440.096 l +528.957 428.71 l +528.725 427.397 l +528.532 430.485 l +S +Q +530.465 442.566 m +533.249 442.566 l +531.857 443.956 m +531.857 441.177 l +527.952 440.096 m +530.736 440.096 l +529.344 441.486 m +529.344 438.707 l +527.566 428.71 m +530.349 428.71 l +528.957 430.099 m +528.957 427.32 l +527.334 427.397 m +530.117 427.397 l +528.725 428.787 m +528.725 426.008 l +527.14 430.485 m +529.924 430.485 l +528.532 431.875 m +528.532 429.096 l +S +[0.232 1.854 ]0 d +497.256 441.563 m +487.745 444.188 l +489.408 450.363 l +493.544 446.967 l +483.377 446.156 l +S +[]0 d +496.289 442.528 m +498.222 440.598 l +498.222 442.528 m +496.289 440.598 l +486.779 445.153 m +488.712 443.223 l +488.712 445.153 m +486.779 443.223 l +488.441 451.328 m +490.374 449.398 l +490.374 451.328 m +488.441 449.398 l +492.578 447.932 m +494.511 446.002 l +494.511 447.932 m +492.578 446.002 l +482.41 447.121 m +484.343 445.191 l +484.343 447.121 m +482.41 445.191 l +S +[0.232 1.854 ]0 d +470.116 432.762 m +459.368 441.563 l +458.131 448.588 l +452.1 443.531 l +447.77 442.875 l +S +[]0 d +468.724 432.762 m +471.508 432.762 l +470.116 434.152 m +470.116 431.373 l +457.977 441.563 m +460.76 441.563 l +459.368 442.952 m +459.368 440.173 l +456.739 448.588 m +459.523 448.588 l +458.131 449.977 m +458.131 447.198 l +450.708 443.531 m +453.492 443.531 l +452.1 444.921 m +452.1 442.142 l +446.378 442.875 m +449.162 442.875 l +447.77 444.265 m +447.77 441.486 l +469.149 433.727 m +471.082 431.797 l +471.082 433.727 m +469.149 431.797 l +458.402 442.528 m +460.335 440.598 l +460.335 442.528 m +458.402 440.598 l +457.165 449.553 m +459.098 447.623 l +459.098 449.553 m +457.165 447.623 l +451.134 444.496 m +453.067 442.566 l +453.067 444.496 m +451.134 442.566 l +446.804 443.84 m +448.737 441.91 l +448.737 443.84 m +446.804 441.91 l +S +[0.232 1.854 ]0 d +445.489 426.239 m +425.618 433.573 l +426.855 445.809 l +423.53 439.787 l +402.421 445.809 l +S +[]0 d +445.489 424.425 m +446.881 426.239 l +445.489 428.053 l +444.097 426.239 l +445.489 424.425 l +h +425.618 431.759 m +427.009 433.573 l +425.618 435.387 l +424.226 433.573 l +425.618 431.759 l +h +426.855 443.995 m +428.246 445.809 l +426.855 447.623 l +425.463 445.809 l +426.855 443.995 l +h +423.53 437.973 m +424.922 439.787 l +423.53 441.602 l +422.138 439.787 l +423.53 437.973 l +h +402.421 443.995 m +403.813 445.809 l +402.421 447.623 l +401.029 445.809 l +402.421 443.995 l +s +0 G +492.307 439.44 m +492.307 438.475 l +492.926 436.043 l +490.413 438.321 l +492.075 439.942 l +493.628 439.448 m +493.628 438.681 493.005 438.059 492.237 438.059 c +491.468 438.059 490.845 438.681 490.845 439.448 c +490.845 440.215 491.468 440.838 492.237 440.838 c +493.005 440.838 493.628 440.215 493.628 439.448 c +493.628 438.517 m +493.628 437.75 493.005 437.128 492.237 437.128 c +491.468 437.128 490.845 437.75 490.845 438.517 c +490.845 439.284 491.468 439.907 492.237 439.907 c +493.005 439.907 493.628 439.284 493.628 438.517 c +494.338 436.034 m +494.338 435.267 493.715 434.645 492.947 434.645 c +492.178 434.645 491.555 435.267 491.555 436.034 c +491.555 436.802 492.178 437.424 492.947 437.424 c +493.715 437.424 494.338 436.802 494.338 436.034 c +491.803 438.362 m +491.803 437.595 491.18 436.973 490.411 436.973 c +489.643 436.973 489.02 437.595 489.02 438.362 c +489.02 439.129 489.643 439.752 490.411 439.752 c +491.18 439.752 491.803 439.129 491.803 438.362 c +493.426 439.914 m +493.426 439.147 492.802 438.524 492.034 438.524 c +491.266 438.524 490.642 439.147 490.642 439.914 c +490.642 440.681 491.266 441.303 492.034 441.303 c +492.802 441.303 493.426 440.681 493.426 439.914 c +518.596 449.553 m +517.978 447.43 l +519.602 443.531 l +513.609 445.963 l +510.516 445.5 l +517.205 449.553 m +519.988 449.553 l +518.596 450.942 m +518.596 448.163 l +516.586 447.43 m +519.37 447.43 l +517.978 448.819 m +517.978 446.04 l +518.21 443.531 m +520.993 443.531 l +519.602 444.921 m +519.602 442.142 l +512.217 445.963 m +515.001 445.963 l +513.609 447.353 m +513.609 444.574 l +509.124 445.5 m +511.908 445.5 l +510.516 446.89 m +510.516 444.11 l +498.725 446.812 m +494.549 452.023 l +490.413 447.276 l +487.745 446.311 l +486.701 450.711 l +497.758 447.777 m +499.691 445.847 l +499.691 447.777 m +497.758 445.847 l +493.583 452.988 m +495.516 451.058 l +495.516 452.988 m +493.583 451.058 l +489.446 448.241 m +491.379 446.311 l +491.379 448.241 m +489.446 446.311 l +486.779 447.276 m +488.712 445.346 l +488.712 447.276 m +486.779 445.346 l +485.735 451.676 m +487.668 449.746 l +487.668 451.676 m +485.735 449.746 l +483.377 440.289 m +482.951 439.286 l +478.196 439.942 l +464.549 437.317 l +452.1 437.664 l +481.985 440.289 m +484.768 440.289 l +483.377 441.679 m +483.377 438.9 l +481.559 439.286 m +484.343 439.286 l +482.951 440.675 m +482.951 437.896 l +476.804 439.942 m +479.588 439.942 l +478.196 441.331 m +478.196 438.552 l +463.157 437.317 m +465.941 437.317 l +464.549 438.707 m +464.549 435.928 l +450.708 437.664 m +453.492 437.664 l +452.1 439.054 m +452.1 436.275 l +482.41 441.254 m +484.343 439.324 l +484.343 441.254 m +482.41 439.324 l +481.985 440.251 m +483.918 438.321 l +483.918 440.251 m +481.985 438.321 l +477.229 440.907 m +479.163 438.977 l +479.163 440.907 m +477.229 438.977 l +463.582 438.282 m +465.515 436.352 l +465.515 438.282 m +463.582 436.352 l +451.134 438.629 m +453.067 436.7 l +453.067 438.629 m +451.134 436.7 l +454.806 432.762 m +452.757 439.942 l +446.533 438.321 l +425.618 430.64 l +420.437 431.797 l +S +454.806 430.948 m +456.198 432.762 l +454.806 434.577 l +453.415 432.762 l +454.806 430.948 l +h +452.757 438.128 m +454.149 439.942 l +452.757 441.756 l +451.366 439.942 l +452.757 438.128 l +h +446.533 436.507 m +447.925 438.321 l +446.533 440.135 l +445.141 438.321 l +446.533 436.507 l +h +425.618 428.825 m +427.009 430.64 l +425.618 432.454 l +424.226 430.64 l +425.618 428.825 l +h +420.437 429.983 m +421.829 431.797 l +420.437 433.612 l +419.045 431.797 l +420.437 429.983 l +s +1 g +434.2 344.179 38.699 -27.521 re +f +1 G +434.2 316.658 m +434.2 344.179 l +472.899 344.179 l +472.899 316.658 l +434.2 316.658 l +S +0 G +434.2 344.179 m +472.899 344.179 l +434.2 316.658 m +472.899 316.658 l +472.899 316.658 m +472.899 344.179 l +434.2 316.658 m +434.2 344.179 l +434.2 316.658 m +472.899 316.658 l +434.2 316.658 m +434.2 344.179 l +434.2 344.179 m +472.899 344.179 l +434.2 316.658 m +472.899 316.658 l +472.899 316.658 m +472.899 344.179 l +434.2 316.658 m +434.2 344.179 l +S +BT +4.6393 0 0 4.6318 447.0742 339.4695 Tm +0 g +(Ngram\(1,4\))Tj +T* +(Ngram\(1,1\))Tj +T* +(Ngram\(2,2\))Tj +T* +(Ngram\(3,3\))Tj +T* +(Ngram\(4,4\))Tj +ET +/Cs5 CS 1 0 0 SC +436.752 341.013 m +444.484 341.013 l +442.012 341.069 m +442.012 340.302 441.388 339.679 440.62 339.679 c +439.851 339.679 439.228 340.302 439.228 341.069 c +439.228 341.836 439.851 342.458 440.62 342.458 c +441.388 342.458 442.012 341.836 442.012 341.069 c +436.752 335.687 m +444.484 335.687 l +439.226 335.687 m +442.01 335.687 l +440.618 337.076 m +440.618 334.297 l +436.752 330.36 m +444.484 330.36 l +439.651 331.325 m +441.584 329.395 l +441.584 331.325 m +439.651 329.395 l +436.752 325.034 m +444.484 325.034 l +439.226 325.034 m +442.01 325.034 l +440.618 326.423 m +440.618 323.644 l +439.651 325.999 m +441.584 324.069 l +441.584 325.999 m +439.651 324.069 l +436.752 319.668 m +444.484 319.668 l +S +q +437.796 316.812 5.683 5.674 re +W n +440.618 317.854 m +442.01 319.668 l +440.618 321.483 l +439.226 319.668 l +440.618 317.854 l +s +Q +470.53 318.163 m +S +/Cs5 cs 1 1 1 sc +327.984 530.81 207 -63 re +f +BT +/TT4 1 Tf +9.931 0 0 9.931 335.1216 518.0859 Tm +0 0 0 sc +-0.0066 Tc +0.2879 Tw +[(Fi)-10(g)-6.6(u)-22.2(re)-15.9( 3)-6.6(.)-6.6( R)-27.1(e)-15.9(ca)-15.9(l)-10(l)5.6( )-15.6(an)-22.2(d)-6.6( p)-22.2(r)-1.7(e)-15.9(c)-0.3(i)-10(s)-8.1(i)-10(o)-6.6(n)-22.2( cu)-22.2(r)-17.3(v)-6.6(es)-8.1( o)-22.2(f)-1.7( )-15.6(N)-18.7(-)]TJ +0 -1.1719 TD +0.0004 Tc +0.4684 Tw +[(gra)-8.9(m)-3( c)6.7(o)-15.2(-)20.9(o)-15.2(c)-8.9(c)6.7(ur)-10.3(re)-8.9(nc)-8.9(e)6.7( )15.7(st)-18.6(a)6.7(tistic)6.7(s)-16.7( ve)6.7(rsus)-16.7( )15.7(hu)-15.2(ma)6.7(n)-15.2( )]TJ +0 -1.1563 TD +0 Tc +0.3906 Tw +[(a)6.3(sse)6.3(s)-17.1(s)-17.1(m)12.2(e)-9.3(n)0(t fo)-15.6(r )-15.7(DUC)-20.5( 200)-15.6(1 sing)-15.6(le)6.3( d)-15.6(o)0(c)6.3(u)-15.6(me)6.3(nt)-19( )]TJ +T* +0.0013 Tc +0.0768 Tw +[(ta)7.6(sk. T)-12.9(h)1.3(e)7.6( )-15.7(5 points)-15.8( on )-15.7(e)7.6(a)-8(c)7.6(h)1.3( )-15.7(c)7.6(u)-14.3(r)-9.4(v)1.3(e)7.6( r)-9.4(e)7.6(p)-14.3(r)6.2(e)-8(s)-0.2(e)7.6(n)1.3(t )-15.7(va)-7.9(l-)]TJ +ET +q +335.122 471.379 15.672 9 re +W n +BT +9.931 0 0 9.931 335.1216 471.379 Tm +0 Tc +0 Tw +[(ue)6.3(s)]TJ +ET +Q +BT +9.931 0 0 9.931 348.3113 471.379 Tm +0 Tc +0 Tw +( f)Tj +ET +q +350.794 471.379 36.31 9 re +W n +BT +9.931 0 0 9.931 354.2079 471.379 Tm +(o)Tj +ET +Q +BT +9.931 0 0 9.931 359.1734 471.379 Tm +-0.0049 Tc +(r )Tj +ET +q +350.794 471.379 36.31 9 re +W n +BT +9.931 0 0 9.931 364.9148 471.379 Tm +0 Tc +(t)Tj +ET +Q +BT +9.931 0 0 9.931 367.7079 471.379 Tm +0 Tc +(h)Tj +ET +q +350.794 471.379 36.31 9 re +W n +BT +9.931 0 0 9.931 372.8286 471.379 Tm +(e)Tj +ET +Q +BT +9.931 0 0 9.931 377.1735 471.379 Tm +( )Tj +ET +q +350.794 471.379 36.31 9 re +W n +BT +9.931 0 0 9.931 379.6563 471.379 Tm +(5)Tj +ET +Q +BT +9.931 0 0 9.931 384.6218 471.379 Tm +( )Tj +ET +q +387.104 471.379 6.362 9.931 re +W n +BT +/F2 1 Tf +9.931 0 0 9.931 387.1044 471.379 Tm +()Tj +ET +Q +BT +9.931 0 0 9.931 393.4664 471.379 Tm +0.0156 Tc +( l)Tj +ET +q +396.104 471.379 25.759 9 re +W n +BT +9.931 0 0 9.931 398.8975 471.379 Tm +0.0093 Tc +[(ev)9.3(e)]TJ +ET +Q +BT +9.931 0 0 9.931 412.8631 471.379 Tm +0 Tc +(l)Tj +ET +q +396.104 471.379 25.759 9 re +W n +BT +9.931 0 0 9.931 415.501 471.379 Tm +0.0015 Tc +(s.)Tj +ET +Q +BT +9.931 0 0 9.931 421.863 471.379 Tm +( )Tj +ET +1 1 1 sc +318.984 278.81 216 -108 re +f +BT +9.931 0 0 9.931 326.1216 266.0859 Tm +0 0 0 sc +-0.0006 Tc +0.1256 Tw +[(F)8.7(i)-4(gu)-16.2(re)5.7( 4. R)-21.1(e)5.7(c)-9.9(a)-9.9(l)-4(l)11.6( a)5.7(n)-16.2(d pr)-11.3(e)5.7(c)5.7(i)-4(sio)-16.2(n)-0.6( c)5.7(u)-16.2(r)-11.3(v)-0.6(e)5.7(s)-2.1( of N)-12.7(-)4.3(gr)-11.3(a)-9.9(m)-4( )]TJ +0 -1.1719 TD +0.0004 Tc +0.0934 Tw +[(c)6.7(o)-15.2(-oc)-8.9(c)6.7(ur)-10.3(re)-8.9(nc)-8.9(e)6.7( sta)6.7(tistic)6.7(s)-16.7( ve)6.7(rs)-16.7(us )15.7(h)-15.2(u)-15.2(m)12.6(a)6.7(n)-15.2( a)6.7(sse)6.7(s)-16.7(s)-16.7(m)12.6(e)-8.9(n)0.4(t )]TJ +0 -1.1563 TD +0.0465 Tw +[(for)-10.3( D)-11.8(U)3.8(C 20)-15.2(01 )-15.6(mu)-15.2(l)12.6(t)-3(i)-18.6(-)20.9(do)-15.2(c)6.7(u)-15.2(me)6.7(nt t)-18.6(a)6.7(sk.)-15.2( D)-11.8(a)6.7(rk)-15.2( \(b)-15.2(la)6.7(c)-8.9(k)0.4(\))-10.3( )]TJ +T* +-0.0059 Tc +0.1622 Tw +[(s)-7.4(o)-5.9(l)6.3(i)-9.3(d)-5.9( l)6.3(i)-9.3(n)-21.5(e)0.4(s)-7.4( )15.7(a)-15.2(r)-1(e fo)-5.9(r a)-15.2(v)-5.9(er)-16.6(ag)-21.5(e )15.7(o)-5.9(f)-1( a)-15.2(l)6.3(l)6.3( )15.7(s)-23(u)-21.5(m)-9.3(m)-9.3(a)0.4(r)-16.6(y)9.7( )15.7(s)-7.4(i)-24.9(ze)-15.2(s)-7.4(,)-5.9( )]TJ +T* +-0.0035 Tc +0.0816 Tw +[(l)8.7(i)-6.9(ght)-6.9( \(r)-14.2(ed)-19.1(\) )15.6(s)-5(o)-19.1(l)8.7(i)-6.9(d l)8.7(i)-6.9(n)-19.1(e)2.8(s)-5( ar)-14.2(e for 50)-19(-wo)-19.1(r)1.4(d s)-5(u)-3.5(m)-6.9(m)-6.9(a)-12.8(ri)-6.9(es)-5(,)-19.1( )]TJ +T* +-0.0041 Tc +0.051 Tw +[(das)-5.6(h)-19.7(ed \(g)-19.7(r)-14.8(een)-19.7(\) )-15.6(l)8.1(i)-7.5(nes)-5.6( )-15.6(ar)-14.8(e fo)-19.7(r 100)-19.6(-w)-16.3(ord )-15.6(s)-5.6(u)-4.1(m)-7.5(m)-7.5(a)-13.4(ri)-7.5(es)-5.6(,)-19.7( )]TJ +T* +-0.0032 Tc +0.0344 Tw +[(das)-4.7(h)-18.8(-dot)-6.6( l)9(i)-6.6(n)-18.8(e)3.1(s)-4.7( )15.6(\(b)-18.8(l)-6.6(u)-3.2(e)-12.5(\))1.7( )15.6(a)-12.5(r)1.7(e for 200)-18.8(-wo)-18.8(r)1.7(d s)-4.7(u)-3.2(m)-6.6(m)-6.6(a)-12.5(ri)-6.6(es)-4.7(,)-18.8( )]TJ +T* +-0.0009 Tc +0.4384 Tw +[(a)5.4(nd )15.6(dott)-19.9(e)5.4(d \()-11.6(m)11.3(a)-10.2(g)-0.9(e)5.4(n)-0.9(t)-19.9(a)5.4(\) l)11.3(i)-4.3(n)-16.5(e)5.4(s a)5.4(r)-11.6(e)5.4( )15.6(fo)-16.5(r)-11.6( )15.6(400)-16.4(-wor)-11.6(d )]TJ +ET +q +326.122 174.379 45.621 8.69 re +W n +BT +9.931 0 0 9.931 326.1216 174.0687 Tm +0.0023 Tc +0 Tw +[(summa)-7(r)7.2(i)-1.1(e)8.6(s)0.8(.)]TJ +ET +Q +endstream +endobj +36 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 5 0 R +/F3 37 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT15 31 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +/ColorSpace << +/Cs5 12 0 R +>> +>> +endobj +39 0 obj +<< +/Length 25861 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 79.7078 747.8962 Tm +/Cs5 cs 0 0 0 sc +/GS1 gs +0.0007 Tc +0.0079 Tw +[(I)6.1(n)0.7( P)25.3(r)-6.7(oceedings)-6.7( of the)13.5( Human T)5.1(e)13.5(chnology )17.2(C)12.5(onfer)-6.7(ence)13.5( 2003 \()23.4(H)-1.3(L)5.1(T)5.2(-)6.1(N)-4.7(A)8.1(A)8.1(C)-4.7(L)-12.1(-)6.1(2003\))6.1(,)-7.9( M)6.1(a)0.7(y )17.2(27 June)13.5( 1,)9.3( 2003,)9.3( E)8.1(d)0.7(monton,)-7.9( )17.2(Canada )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 736.4135 Tm +0 Tc +0 Tw +( )Tj +0 -2.5781 TD +0.0007 Tc +0.093 Tw +[(unigr)-10(a)-8.6(m)12.9(\) is a)7( goo)-14.9(d a)7(u)0.7(to)-14.9(ma)7(tic)7( s)-16.4(c)7(ori)-18.3(ng me)7(tri)-18.3(c)7( with good)-30.6( )]TJ +0 -1.1563 TD +0.0019 Tc +-0.0019 Tw +[(sta)8.2(tistic)-7.4(a)8.2(l)-1.5( signif)6.8(i)-17.1(c)-7.4(a)8.2(nc)-7.4(e)8.2( p)-13.7(r)6.8(e)-7.4(d)1.9(ic)8.2(tio)-13.7(n po)-13.7(w)5.3(e)-7.4(r)6.8(.)1.9( )]TJ +/TT6 1 Tf +11.9483 0 0 11.9483 71.9492 673.879 Tm +0 Tc +0 Tw +(5)Tj +/TT8 1 Tf +0.5065 0 TD +( )Tj +/TT6 1 Tf +9.931 0 0 9.931 91.8113 673.879 Tm +0.0003 Tc +[(Con)-6.1(c)6.6(l)-3.1(u)-6.1(si)-3.1(on)-6(s )]TJ +/TT4 1 Tf +-2 -2.0625 TD +0 Tc +0.0156 Tw +[(In this p)-15.6(a)6.3(p)-15.6(e)6.3(r, )-15.7(w)-12.2(e)6.3( g)-15.6(a)-9.2(v)15.6(e)-9.3( a)6.3( )-15.7(bri)-19(e)6.3(f int)-19(r)4.9(odu)-15.6(c)6.3(t)-19(ion of th)-15.6(e)6.3( )-15.7(ma)6.4(nu)-15.6(a)-9.3(l)-3.4( )]TJ +0 -1.1563 TD +0.001 Tc +0.3271 Tw +[(summa)-8.3(r)-9.7(y)16.6( )-15.7(e)-8.3(v)1(a)7.3(l)-2.4(ua)7.3(tio)-14.6(n pr)-9.7(otoc)-8.3(o)-14.6(l)13.2( us)-16.1(e)7.3(d)1( i)-18(n)1( the)7.3( )-15.7(Do)-14.6(c)7.3(u)-14.6(me)7.3(nt)-18( )]TJ +T* +0.0006 Tc +0.0619 Tw +[(Und)-15(e)7(rst)-18.4(a)6.9(nding)-15( Con)-15(f)5.5(e)-8.7(r)5.5(e)-8.7(n)0.6(c)-8.7(e)6.9(. )-15.6(W)-8.7(e)6.9( the)-8.7(n)0.6( d)-15(i)-2.8(sc)6.9(uss)-16.5(e)6.9(d th)-15(e)6.9( )-15.6(IBM)-16.5( )]TJ +T* +0.0016 Tc +0.2484 Tw +[(BLEU)5( MT)-12.6( e)-7.7(v)1.6(a)-7.7(l)13.8(ua)7.9(tio)-14(n me)7.9(tr)6.5(i)-17.4(c)7.9(, its a)7.9(p)-14(pl)13.8(i)-17.4(c)7.9(a)8(tio)-14(n to sum-)]TJ +T* +0.1078 Tw +[(ma)7.8(r)-9.2(y)17.1( )-15.7(e)-7.8(v)1.5(a)-7.8(l)13.7(u)-14.1(a)7.8(tion, )-15.7(a)7.8(n)-14.1(d the)-7.8( dif)-9.2(f)6.4(e)-7.8(r)6.4(e)-7.8(n)1.5(c)-7.8(e)7.8( b)-14.1(e)7.8(tw)-10.7(e)7.8(e)-7.8(n pr)-9.2(e)-7.8(c)7.8(ision)-14.1(-)]TJ +T* +0.001 Tc +0.3896 Tw +[(ba)7.3(s)-16.1(e)7.3(d BLEU)-11.2( )15.6(tr)-9.7(a)7.3(n)1(s)-16.1(l)-2.4(a)7.3(tion e)-8.3(v)1(a)-8.3(l)13.2(ua)7.3(tio)-14.6(n a)7.3(nd re)-8.3(c)-8.3(a)-8.3(ll-)21.5(b)-14.6(a)7.3(s)-16.1(e)7.3(d)-14.6( )]TJ +T* +0.0013 Tc +0.2174 Tw +[(DUC su)-14.3(mma)7.6(r)-25.1(y)32.5( )-15.7(e)-8(v)1.3(a)7.6(l)-2.1(ua)7.6(tio)-14.3(n. T)-12.9(h)1.3(e)7.6( disc)7.6(r)-9.4(e)7.6(pa)-8(nc)-23.6(y)32.5( )-15.7(le)7.6(d us to)-14.3( )]TJ +T* +-0.0063 Tc +0.3969 Tw +[(ex)-6.3(a)-15.6(m)-9.7(i)-9.7(n)-6.3(e t)-9.7(h)-21.9(e e)-15.6(f)-1.4(f)-17(e)0.1(ct)-9.7(i)-25.3(v)-6.3(en)-21.9(es)-7.8(s)-7.8( o)-21.9(f)-1.4( i)-9.7(n)-6.3(d)-6.3(i)-25.3(v)9.3(i)-25.3(d)-6.3(u)-6.3(a)-15.6(l)5.9( n)-21.9(-)-1.4(g)-6.3(r)-17(a)-15.6(m)5.9( c)-15.6(o)-21.9(-)]TJ +T* +0.0019 Tc +0.2012 Tw +[(oc)8.2(c)-7.4(u)1.9(r)-8.8(r)6.8(e)8.2(n)-13.7(c)-7.4(e)8.2( sta)8.2(tistic)-7.4(s a)8.2(s)0.4( a)8.2( s)-15.2(ubstitute)8.2( )-15.7(f)-8.7(o)1.9(r)6.8( e)8.2(x)-13.7(pe)8.2(nsi)-17.1(v)1.9(e)8.2( )-15.7(a)8.2(n)1.9(d)-13.7( )]TJ +T* +0.0005 Tc +0.0776 Tw +[(e)6.8(r)-10.2(ror)-10.2(-)5.4(pr)-10.2(one)-8.8( )-15.7(ma)6.8(nu)-15.1(a)-8.8(l)12.7( )-15.7(e)-8.8(v)16.1(a)-8.7(l)-2.9(ua)6.8(tion)-15.1( o)-15.1(f)5.4( su)-15.1(mma)6.8(ri)-18.5(e)6.8(s)-0.9(. T)-13.7(o)0.5( )-15.7(e)-8.8(v)0.5(a)-8.8(l)12.7(u)-15.1(-)]TJ +T* +-0.0063 Tc +0.2094 Tw +[(at)-9.7(e t)-9.7(h)-21.9(e p)-21.9(e)0(r)-17(f)-1.4(o)-21.9(r)-17(m)5.9(a)-15.6(n)-6.3(c)-15.6(e o)-21.9(f)-1.4( au)-6.3(t)-25.3(o)-21.9(m)5.9(a)0(t)-9.7(i)-25.3(c s)-23.4(c)0(o)-21.9(r)-1.4(i)-9.7(n)-6.3(g)-6.3( )-15.7(m)-9.7(e)0(t)-9.7(r)-1.4(i)-25.3(c)0(s)-7.8(,)-6.3( w)-18.5(e)-15.6( )]TJ +T* +0.0009 Tc +0.0147 Tw +[(propos)-16.2(e)7.2(d)-14.7( two)-14.7( te)7.2(st)-18.1( c)-8.4(r)5.8(ite)-8.4(ria)7.2(.)-14.7( O)-11.3(n)0.9(e)-8.4( w)-11.3(a)7.2(s to)-14.7( )-15.7(ma)7.2(k)-14.7(e)7.2( su)-14.7(re)-8.4( s)-16.2(y)16.5(st)-18.1(e)-8.4(m)-2.5( )]TJ +T* +0.0001 Tc +0.2186 Tw +[(ra)6.4(n)-15.5(k)0.1(ings pro)-15.5(duc)-9.2(e)6.4(d)-15.5( )15.6(b)-15.5(y)15.7( a)6.4(u)0.1(t)-18.9(o)-15.5(m)12.3(a)6.4(ti)-18.9(c)6.4( )15.6(s)-17(c)6.4(o)-15.4(r)5(ing me)6.4(tri)-18.9(c)6.4(s we)-9.2(r)-10.6(e)-9.2( )]TJ +T* +0.0015 Tc +0.3735 Tw +[(sim)13.7(i)-17.5(la)7.8(r)6.4( to hu)-14.1(ma)7.8(n r)-9.2(a)7.8(n)-14.1(k)1.5(ings. T)-12.7(h)1.5(is w)-10.7(a)7.8(s qu)-14.1(a)7.8(n)1.5(tif)6.4(i)-17.5(e)7.8(d b)-14.1(y)1.5( )]TJ +T* +-0.0058 Tc +0.0996 Tw +[(S)-12.2(p)-5.8(ea)-15.1(r)-16.5(m)-9.2(an)-5.8()-16.5(s)-7.3( ran)-21.4(k)-5.8( o)-5.8(r)-0.9(d)-21.4(e)0.5(r )-15.6(co)-5.8(r)-16.5(r)-0.9(e)-15.1(l)-9.2(at)-9.2(i)-9.2(o)-5.8(n)-5.8( c)-15.1(o)-5.8(e)-15.1(ffi)-9.2(ci)-24.8(en)-5.8(t)-9.2( a)-15.1(n)-5.8(d)-5.8( t)-9.2(h)-5.8(r)-16.5(e)0.5(e)-30.7( )]TJ +T* +-0.0009 Tc +0.2197 Tw +[(othe)5.4(r)-11.6( )15.7(p)-16.5(a)5.4(r)-11.6(a)-10.2(m)11.3(e)5.4(t)-19.9(r)4(ic)-10.2( )15.7(c)5.4(o)-16.5(rr)-11.6(e)-10.2(l)11.4(a)5.4(t)-4.3(i)-19.9(on c)5.4(o)-16.5(e)5.4(ffi)-19.9(c)5.4(i)-19.9(e)-10.2(n)-0.9(ts. A)18.1(n)-16.5(othe)-10.2(r wa)5.4(s)-18( )]TJ +T* +-0.0061 Tc +0.2405 Tw +[(t)-9.5(o)-6.1( co)-21.7(m)6.1(p)-21.7(ar)-16.8(e t)-9.5(h)-21.7(e s)-7.6(t)-9.5(at)-9.5(i)-9.5(s)-7.6(t)-9.5(i)-9.5(c)-15.4(a)-15.4(l)6.1( s)-7.6(i)-9.5(g)-6.1(n)-6.1(i)-25.1(fi)-9.5(c)-15.4(a)0.2(n)-21.7(c)-15.4(e t)-9.5(e)0.2(s)-7.6(t)-9.5( r)-16.8(e)0.2(s)-7.6(u)-21.7(l)6.1(t)-9.5(s)-7.6( b)-21.6(e)-15.4(-)]TJ +T* +0.0009 Tc +0.3429 Tw +[(twe)-8.4(e)7.2(n a)-8.4(u)0.9(to)-14.7(m)13.1(a)7.2(ti)-18.1(c)7.2( sc)-8.4(oring )-15.6(me)7.2(tri)-18.1(c)7.2(s a)-8.4(n)-14.7(d hu)-14.7(m)13.1(a)7.2(n )-15.6(a)7.3(s)-0.6(s)-16.2(e)7.2(ss)-16.2(-)]TJ +T* +0.0096 Tc +0.1467 Tw +[(m)6.2(e)15.9(n)9.6(t)6.2(s)8.1(.)9.6( )-15.6(We)15.9( u)-6(s)8.1(e)15.9(d)-6( re)15.9(cal)6.2(l)21.8( )-15.6(a)15.9(n)9.6(d)-6( p)9.6(r)-1.1(ec)15.9(i)6.2(s)8.1(i)6.2(o)9.6(n)9.6( )-15.6(o)9.6(f)14.5( t)6.2(h)-6(e)15.9( )-15.6(a)15.9(g)9.6(reem)21.8(en)9.6(t)-9.4( )]TJ +T* +0.0018 Tc +0.092 Tw +[(be)8.1(tw)-10.4(e)-7.5(e)8.1(n th)-13.8(e)8.1( te)8.1(st st)-17.2(a)8.1(tistic)8.1(s )-15.6(re)8.1(s)-15.3(u)-13.8(l)14(t)-1.6(s to id)-13.8(e)8.1(n)1.8(tif)-8.9(y)17.4( )-15.6(good )-15.6(a)8.1(u)1.8(to)-13.8(-)]TJ +T* +0.0022 Tc +-0.0022 Tw +[(ma)8.5(tic)8.5( s)-14.9(c)8.5(o)-13.4(r)7.1(ing )-15.6(me)8.6(tr)7.1(i)-16.8(c)8.6(s. )]TJ +0 -1.1719 TD +-0.0001 Tc +0.172 Tw +[(Ac)-9.4(c)6.2(o)-0.1(r)-10.8(d)-0.1(ing to our e)6.2(x)-15.7(pe)-9.4(ri)-19.1(m)12.1(e)-9.4(nts, we)6.2( f)-10.8(o)-15.7(und tha)6.2(t)-3.5( unigr)-10.8(a)-9.4(m )]TJ +0 -1.1563 TD +0.0013 Tc +0.3425 Tw +[(c)7.6(o)-14.3(-oc)-8(c)7.6(ur)-9.4(r)-9.4(e)7.6(nc)-8(e)7.6( st)-17.7(a)7.6(tistic)7.6(s)-15.8( is )-15.6(a)7.6( g)-14.3(ood )-15.6(a)-8(u)1.3(to)-14.3(m)13.5(a)7.6(ti)-17.7(c)7.6( s)-15.8(c)7.6(orin)-14.3(g)-14.3( )]TJ +T* +0.0019 Tc +0.3419 Tw +[(me)8.2(tr)6.8(i)-17.1(c)8.2(. I)22.4(t)-1.5( c)8.2(onsist)-17.1(e)8.2(nt)-17.1(ly)17.5( )15.7(c)-7.4(o)1.9(r)6.8(r)-8.8(e)-7.4(l)-1.5(a)8.2(t)-1.5(e)8.2(d)1.9( hig)-13.7(h)1.9(ly)17.5( w)5.3(ith )15.7(hu)-13.7(ma)8.2(n)-13.7( )]TJ +T* +0.0007 Tc +0.0305 Tw +[(a)7(sse)7(s)-16.4(s)-16.4(m)12.9(e)-8.6(n)0.7(ts a)7(nd h)-14.9(a)7(d high r)-10(e)7(c)-8.6(a)-8.6(l)-2.7(l)12.9( a)7(nd p)-14.9(r)-10(e)7(c)7(i)-2.7(sio)-14.9(n)0.7( in signifi)-18.3(-)]TJ +T* +0.0019 Tc +0.1856 Tw +[(c)8.2(a)8.2(n)-13.7(c)-7.4(e)8.2( te)8.2(st w)5.3(ith )-15.6(ma)8.2(nu)-13.7(a)-7.4(l)14.1( e)-7.4(v)1.9(a)-7.4(l)14.1(u)-13.7(a)8.2(tion r)-8.8(e)8.2(s)-15.2(u)1.9(l)14.1(t)-1.5(s. )-15.6(I)6.8(n)1.9( c)8.2(o)-13.7(ntr)-8.8(a)8.2(st,)-13.7( )]TJ +T* +0.0007 Tc +0.0462 Tw +[(the)7( )15.6(w)-11.5(e)7(ight)-18.3(e)7(d)0.7( a)-8.6(v)0.7(e)7(r)-10(a)7(g)-14.9(e)7( )15.6(of va)-8.6(ria)-8.6(b)0.7(le)7( le)7(ngt)-18.3(h )15.6(n)-14.9(-)21.2(g)-14.9(r)5.6(a)-8.6(m)-2.7( m)12.9(a)7(t)-18.3(c)7(h)-14.9(e)7(s)-16.4( )]TJ +T* +0.0004 Tc +0.0465 Tw +[(de)6.7(ri)-18.6(ve)6.7(d)-15.2( )15.6(f)-10.3(r)5.3(o)-15.2(m)12.6( IBM)-16.7( BL)17.5(E)-13.8(U)3.8( did )15.6(n)-15.2(o)0.4(t a)6.7(l)-3(w)-11.8(a)-8.9(y)16(s)-16.7( )15.6(gi)-18.6(ve)6.7( )15.6(g)-15.2(ood c)6.7(o)-15.1(r)-10.3(-)]TJ +T* +0.001 Tc +0.0146 Tw +[(re)-8.3(la)7.3(tion )-15.7(a)7.3(nd hig)-14.6(h)1( r)-9.7(e)7.3(c)-8.3(a)-8.3(l)-2.4(l)13.2( a)-8.3(nd p)-14.6(r)5.9(e)-8.3(c)7.3(ision. )-15.7(W)7.3(e)-8.3( sur)-9.7(m)13.2(is)-16.1(e)7.3( th)-14.6(a)7.3(t)-2.4( )-15.7(a)-8.3( )]TJ +T* +-0.0004 Tc +0.2348 Tw +[(re)-9.7(a)6(s)-1.9(on )-15.6(fo)-16(r th)-16(e)5.9( dif)-11.1(f)-11.1(e)5.9(r)-11.1(e)5.9(nc)-9.7(e)5.9( )-15.6(be)5.9(t)-19.4(w)3(e)-9.7(e)5.9(n s)-17.5(u)-16(mma)5.9(ri)-19.4(z)-9.7(a)5.9(tion )-15.6(a)5.9(n)-0.4(d)-16( )]TJ +T* +0.0019 Tc +0.4981 Tw +[(ma)8.2(c)-7.4(h)1.9(ine)-7.4( )15.6(tr)-8.8(a)8.2(n)1.9(s)-15.2(l)-1.5(a)8.2(tion might be)-7.4( )15.7(tha)8.2(t)-17.1( )15.6(e)8.2(x)1.9(t)-17.1(r)6.8(a)-7.4(c)8.2(tion)-13.7(-)6.8(b)-13.7(a)8.2(se)8.2(d)-29.4( )]TJ +T* +0.0018 Tc +0.0294 Tw +[(summa)-7.5(r)6.7(i)-1.6(e)8.1(s)0.3( d)-13.8(o)1.8( not r)-8.9(e)8.1(a)-7.5(lly)17.4( su)-13.8(f)6.7(f)-8.9(e)8.1(r)6.7( )-15.7(f)6.7(r)6.7(o)-13.8(m)14( )-15.7(gr)-8.9(a)-7.5(mma)8.1(r)6.7( pr)-8.9(ob)-13.8(l)14(e)-7.5(ms,)-13.8( )]TJ +T* +0.0002 Tc +0.0779 Tw +[(whi)-18.8(l)12.4(e)-9.1( tr)-10.5(a)6.5(n)0.2(s)-16.9(l)12.4(a)6.5(t)-3.2(i)-18.8(ons d)-15.4(o. )-15.7(Long)-15.4(e)6.5(r)-10.5( n)-15.4(-)5.1(gr)-10.5(a)-9.1(m)12.4(s)-16.9( te)6.5(nd)-15.4( to s)-16.9(c)6.5(o)-15.4(r)5.1(e)-9.1( fo)-15.4(r)-10.5( )]TJ +T* +0.002 Tc +-0.002 Tw +[(gr)6.9(a)-7.3(mma)8.3(ti)-17(c)8.3(a)-7.3(l)14.2(i)-1.4(t)-17(y)17.6( )-15.6(r)6.9(a)8.3(t)-17(h)2(e)-7.3(r)6.9( th)-13.6(a)8.3(n)2( c)-7.3(o)2.1(nte)-7.3(n)2(t. )]TJ +T* +0.0014 Tc +0.1392 Tw +[(I)21.9(t)-2( is )-15.7(e)7.7(n)1.4(c)-7.9(our)-9.3(a)7.7(g)1.4(in)-14.2(g to know th)-14.2(a)7.7(t)-2( the)7.7( si)-17.6(m)13.6(p)-14.2(le)7.7( unig)-14.2(r)6.3(a)-7.9(m)13.6( )-15.7(c)7.7(o)-14.2(-)]TJ +T* +0.0006 Tc +0.1557 Tw +[(oc)6.9(c)-8.7(u)0.6(r)-10.1(r)5.5(e)6.9(n)-15(c)-8.7(e)6.9( )-15.6(me)6.9(tri)-18.4(c)6.9( )-15.6(work)-15(s in th)-15(e)6.9( )-15.6(D)-11.6(U)4(C)-19.9( 2001)-15( se)6.9(tu)-15(p. T)-13.6(h)0.6(e)-8.7( )]TJ +T* +0.0014 Tc +0.1392 Tw +[(r)6.3(e)-7.9(a)7.7(s)-0.1(on )-15.7(f)6.3(o)-14.2(r)6.3( this )-15.7(m)13.6(i)-2(g)-14.2(h)1.4(t be)-7.9( tha)7.7(t)-2( )-15.7(most o)-14.2(f)-9.3( the)7.7( s)-15.7(y)17(st)-17.6(e)-7.9(m)13.6(s )-15.7(pa)-7.8(r)-9.3(-)]TJ +T* +0.0021 Tc +0.1229 Tw +[(tic)8.4(ipa)8.4(ting in )-15.6(D)5.5(U)5.5(C)-2.8( g)-13.5(e)8.4(ne)-7.2(r)-8.6(a)8.4(te)8.4( su)-13.5(mma)8.4(r)7(i)-16.9(e)8.4(s)-15( b)-13.5(y)33.3( s)-15(e)8.4(nte)-7.2(n)2.1(c)-7.2(e)8.4( e)8.5(x)-13.5(-)]TJ +T* +-0.0008 Tc +0.1726 Tw +[(tra)-10.1(c)5.5(tion. )-15.7(W)-10.1(e)5.5( p)-16.4(l)-4.2(a)5.5(n)-0.8( to )-15.7(run)-16.4( si)-19.8(m)11.4(i)-19.8(l)11.4(a)-10.1(r e)-10.1(x)-0.8(p)-16.4(e)-10.1(ri)-19.8(m)11.4(e)5.5(nts)-17.9( on )-15.7(DUC)-21.3( )]TJ +T* +0.0008 Tc +0.0773 Tw +[(2002 d)-14.8(a)7.1(ta)7.1( to s)-16.3(e)-8.5(e)7.1( if uni)-18.2(gr)-9.9(a)-8.5(m)13( do)-14.8(e)7.1(s)-0.7( )-15.7(a)7.1(s)-0.7( w)-11.4(e)-8.5(l)13(l)-2.5(. )-15.7(I)21.3(f)5.7( it d)-14.8(o)0.8(e)7.1(s)-16.3(, w)-11.4(e)-8.5( )]TJ +T* +0.0025 Tc +0.0913 Tw +[(w)5.9(ill)14.7( )-15.6(ma)8.8(k)-13.1(e)8.8( a)-6.8(v)2.5(a)8.8(ila)8.8(b)-13.1(l)-0.9(e)8.8( our)7.4( )-15.6(c)8.8(o)2.5(d)-13.1(e)8.8( a)-6.8(v)2.5(a)8.8(i)-16.5(l)14.7(a)8.8(b)-13.1(l)-0.9(e)-6.8( v)18.1(i)-0.9(a)8.8( )-15.6(a)8.8( w)5.9(e)-6.8(bsite)8.8( to)-13.1( )]TJ +T* +0.0023 Tc +-0.0023 Tw +[(the)8.6( su)-13.3(mma)-7(r)7.2(i)-1.1(z)-6.9(a)8.6(tion )-15.6(c)8.6(o)-13.3(mm)14.5(u)-13.3(n)2.3(it)-16.7(y)17.9(.)2.3( )]TJ +0 -1.1719 TD +0.0002 Tc +0.1404 Tw +[(Al)12.4(t)-18.8(houg)-15.4(h this stud)-15.4(y)31.4( s)-16.9(hows th)-15.4(a)6.5(t)-3.2( unigr)-10.5(a)-9.1(m)12.4( c)-9.1(o)-15.3(-)20.7(o)-15.4(c)-9.1(c)6.5(ur)-10.5(re)-9.1(nc)-9.1(e)-9.1( )]TJ +0 -1.1563 TD +0.0017 Tc +0.3889 Tw +[(sta)8(tistic)8(s )-15.7(e)8(xhi)-17.3(bit so)-13.9(me)8( g)-13.9(ood )-15.7(pro)-13.9(p)1.7(e)-7.6(r)6.6(t)-17.3(i)-1.7(e)8(s)0.2( in s)-15.4(u)-13.9(mma)8(r)-9(y)1.7( )]TJ +T* +0.0016 Tc +0.1703 Tw +[(e)-7.7(v)17.2(a)-7.7(l)-1.8(ua)7.9(tio)-14(n, it still)13.8( do)-14(e)7.9(s)0.1( not c)7.9(o)-14(r)6.5(r)-9.1(e)-7.7(l)13.8(a)7.9(t)-17.4(e)7.9( t)-17.4(o)1.6( hu)-14(m)13.8(a)7.9(n )-15.6(a)8(s)0.1(s)-15.5(e)7.9(ss)-15.5(-)]TJ +T* +0.002 Tc +0.0918 Tw +[(me)8.3(nt )-15.6(100)-13.6(%)6.9( o)-13.6(f)6.9( th)-13.6(e)8.3( ti)-17(me)8.4(. T)-12.2(h)-13.6(e)8.3(r)-8.7(e)8.3( is )-15.6(mor)-8.7(e)8.3( to)-13.6( be)-7.3( d)-13.6(e)8.3(sir)-8.7(e)8.3(d in)-29.3( )]TJ +T* +-0.0061 Tc +0.178 Tw +[(t)-9.5(h)-6.1(e r)-16.8(e)0.2(c)-15.4(a)-15.4(l)-9.5(l)6.1( an)-21.7(d)-6.1( p)-6.1(r)-16.8(eci)-9.5(s)-7.6(i)-9.5(o)-21.7(n)-6.1( o)-6.1(f)-1.2( s)-7.6(i)-9.5(g)-6.1(n)-6.1(i)-25.1(fi)-9.5(c)-15.4(a)0.2(n)-21.7(c)-15.4(e t)-9.5(e)0.2(s)-7.6(t)-9.5( a)-15.4(g)-6.1(r)-16.8(e)0.2(e)-15.4(m)-9.5(en)-6.1(t)-25.1( )]TJ +T* +0.0019 Tc +0.045 Tw +[(w)5.3(ith ma)8.2(nu)-13.7(a)-7.4(l)14.1( e)-7.4(v)17.5(a)-7.4(l)14.1(u)-13.7(a)8.2(tion)-13.7(.)1.9( W)8.2(e)-7.4( )15.6(a)-7.4(r)6.8(e)8.2( sta)-7.4(r)6.8(tin)-13.7(g )15.6(to e)8.2(x)1.9(p)-13.7(l)14.1(o)-13.7(r)6.8(e)8.2( va)-7.4(r)6.9(i)-17.1(-)]TJ +T* +0.0001 Tc +0.2343 Tw +[(ous me)6.5(tri)-18.9(c)6.4(s sugg)-15.5(e)6.4(s)-1.4(te)-9.2(d in Dona)-9.2(w)-12.1(a)-9.2(y)31.3( )-15.6(e)-9.2(t)-3.3( a)6.4(l)12.3(. \(2)-15.5(000)-15.5(\). F)9.4(o)-15.5(r)-10.6( )]TJ +T* +0.0002 Tc +0.1561 Tw +[(e)6.5(x)0.2(a)-9.1(m)-3.2(p)-15.4(l)12.4(e)6.5(,)0.2( )-15.6(we)6.5(ig)-15.4(ht n)-15.4(-)20.7(g)-15.4(r)5.1(a)-9.1(m)12.4( )-15.6(ma)6.5(tc)-9.1(he)6.5(s di)-18.8(ff)-10.5(e)6.5(r)-10.5(e)6.5(n)0.2(t)-18.8(l)-3.2(y)15.8( a)-9.1(c)-9.1(c)6.5(ordi)-18.8(ng)-15.4( )]TJ +T* +0.0022 Tc +0.2322 Tw +[(to the)8.5(i)-16.8(r)7.1( in)-13.4(f)7.1(o)-13.4(r)-8.5(m)14.4(a)8.5(tio)-13.4(n )-15.6(c)8.5(ont)-16.8(e)8.5(n)2.2(t )-15.6(me)-7.1(a)8.5(s)0.7(ur)-8.5(e)-7.1(d)2.2( b)-13.4(y)17.8( )-15.6(tf)7.1(,)-13.4( tf)7.1(id)-13.4(f)7.1(,)2.2( o)-13.4(r)-8.5( )]TJ +24.2813 63.625 TD +0.0028 Tc +0.0128 Tw +[(SV)6.2(D)6.2(.)2.8( )-15.6(I)7.7(n)2.8( f)-7.9(a)-6.5(c)9.1(t)-0.6(, N)-9.4(I)7.7(ST)-11.4( MT)-11.4( a)9.1(u)2.8(to)-12.8(ma)9.1(tic)9.1( s)-14.3(c)9.1(o)-12.8(r)-7.9(ing )-15.7(m)15(e)9.1(t)-16.2(r)7.7(ic)9.1( )-15.7(\()7.7(N)-9.4(I)7.7(S)-3.6(T)-11.4( )]TJ +0 -1.1563 TD +0.0002 Tc +-0.0002 Tw +[(2002\) )-15.6(a)-9.1(l)12.4(r)-10.5(e)-9.1(a)6.5(d)-15.4(y)15.8( int)-18.8(e)6.5(g)-15.4(r)5.1(a)6.5(t)-18.8(e)6.5(s)-1.3( su)-15.4(c)6.5(h)0.2( )-15.6(modifi)-18.8(c)6.5(a)6.5(t)-18.8(ions. )]TJ +T* +0.001 Tc +0.1083 Tw +[(One)-8.3( futu)-14.6(re)-8.3( dir)-9.7(e)7.3(c)7.3(t)-2.4(i)-18(on in)-14.6(c)-8.3(l)13.2(ud)-14.6(e)7.3(s)-0.5( usin)-14.6(g a)-8.3(n)-14.6( a)7.3(u)1(to)-14.6(ma)7.3(tic)-8.3( qu)-14.6(e)7.3(s)-16.1(-)]TJ +T* +0.0017 Tc +0.1858 Tw +[(tion a)8.1(n)1.7(s)-15.4(w)5.1(e)-7.6(r)6.6( te)8(st )-15.6(a)8(s)0.2( d)-13.9(e)-7.6(m)13.9(onst)-17.3(r)6.6(a)8(t)-17.3(e)8(d)1.7( in t)-17.3(h)1.7(e)8( pi)-17.3(l)13.9(o)1.7(t stud)-29.6(y)17.3( in)-13.9( )]TJ +T* +0.0008 Tc +0.1711 Tw +[(S)-5.5(U)4.2(MM)-16.3(A)19.8(C)-4.1( )-15.6(\(M)-16.3(a)7.1(n)0.8(i )-15.6(e)7.1(t)-2.6( a)-8.5(l)13(. 1)-14.8(998\))-9.9(. )-15.5(I)21.3(n)0.8( th)-14.8(a)-8.5(t)-2.6( stud)-14.8(y)16.5(,)0.8( a)7.1(n)0.8( )-15.6(a)7.1(u)0.8(to)-14.8(-)]TJ +T* +0.0018 Tc +0.5295 Tw +[(ma)8.1(tic)-7.5( sc)8.1(o)-13.8(r)6.7(ing)-13.8( sc)-7.5(r)6.7(i)-1.6(pt d)-13.8(e)-7.5(ve)-7.5(l)14(o)1.8(p)-13.8(e)8.1(d b)-29.5(y)1.8( Chr)6.7(i)-1.6(s )-15.6(B)12.5(u)-13.8(c)8.1(k)-13.8(le)-7.5(y )]TJ +T* +0.0006 Tc +0.2806 Tw +[(show)-11.6(e)6.9(d)0.6( high )-15.7(c)6.9(o)-15(rr)-10.1(e)-8.7(l)12.8(a)6.9(tion )-15.7(with hu)-15(ma)6.9(n)-15( e)-8.7(v)16.2(a)-8.7(l)12.8(u)-15(a)6.9(tions)-16.5(, a)-8.6(l)-2.8(-)]TJ +T* +0.0008 Tc +0.0461 Tw +[(though th)-14.8(e)7.1( )-15.6(e)7.1(x)0.8(p)-14.8(e)7.1(ri)-18.2(me)7.1(nt )-15.6(wa)7.1(s )-15.6(on)-14.8(ly)16.4( t)-18.2(e)7.1(ste)7.1(d)-14.8( on a)7.1( s)-16.3(m)-2.6(a)-8.5(l)-2.6(l)13( s)-16.3(e)7.3(t of)-25.6( )]TJ +T* +0.0009 Tc +-0.0009 Tw +[(3 topic)7.2(s)-0.6(. )]TJ +T* +0.0003 Tc +0.0465 Tw +[(Ac)-9(c)6.6(o)0.3(r)-10.4(d)0.3(ing )15.5(to O)-11.9(v)0.3(e)6.6(r)5.2( \(200)-15.3(3\), N)-11.9(I)20.8(S)-6.1(T)-13.9( )15.5(spe)-9(n)0.3(t )15.5(a)6.7(bout 3,000 ma)-9(n)-15.3( )]TJ +T* +-0.0004 Tc +0.1098 Tw +[(hours e)5.9(a)-9.7(c)5.9(h)-0.4( )15.7(in DUC 2001 a)5.9(nd )15.6(2)-16(002 fo)-16(r )15.7(topic)5.9( a)5.9(nd doc)-9.6(u)-16(-)]TJ +0 -1.1719 TD +0.0019 Tc +0.1387 Tw +[(me)8.2(nt s)-15.2(e)-7.4(l)14.1(e)-7.4(c)8.2(tion,)-13.7( su)-13.7(mma)8.2(r)-24.5(y)17.5( c)-7.4(r)-8.8(e)8.2(a)8.2(tion)-13.7(,)1.9( a)-7.4(n)-13.7(d )-15.6(m)14.1(a)8.3(n)-13.7(u)1.9(a)-7.4(l)14.1( )-15.7(e)-7.4(v)1.9(a)-7.4(l)14.1(u)-13.7(a)-7.4(-)]TJ +0 -1.1562 TD +0.0011 Tc +0.1239 Tw +[(tion. T)-13.1(h)1.1(e)7.4(r)6(e)-8.2(f)6(or)-9.6(e)7.5(,)1.1( it wou)-14.5(l)13.3(d b)-14.5(e)7.4( wis)-16(e)7.4( to use)7.4( the)7.4(s)-16(e)7.4( )-15.6(v)16.7(a)-8.2(l)13.3(u)-14.5(a)7.4(b)-14.5(le)-8.2( )]TJ +T* +0.0017 Tc +0.0296 Tw +[(r)6.6(e)8(so)-13.9(ur)-9(c)8(e)8(s)0.3(,)-13.9( i.e)8(.)1.7( )-15.6(ma)8(n)-13.9(u)1.7(a)-7.6(l)13.9( s)-15.4(u)-13.9(mm)13.9(a)-7.6(r)6.6(ie)-7.6(s a)8(n)-13.9(d e)-7.6(v)1.7(a)-7.6(l)13.9(u)-13.9(a)8(tion r)-9(e)8(su)-13.9(l)13.9(t)-1.7(s)-15.4(,)-13.8( )]TJ +T* +0.0096 Tc +0.0685 Tw +[(n)9.6(o)9.6(t)6.2( o)9.6(n)9.6(l)6.2(y)25.2( i)6.2(n)9.6( t)6.2(h)9.6(e)15.9( fo)9.6(rm)6.2(al)21.8( ev)9.6(al)21.8(u)-6(a)15.9(t)6.2(i)6.2(o)9.6(n)9.6( ev)9.6(e)15.9(r)-1.1(y)25.2( )-15.7(y)25.2(ear)14.5( b)9.6(u)9.6(t)6.2( al)21.8(s)8.1(o)9.6( i)6.2(n)-6( )]TJ +T* +0.0012 Tc +0.0769 Tw +[(de)-8.1(ve)-8.1(l)13.4(oping s)-31.5(y)16.8(ste)-8.1(m)-2.2(s a)7.5(n)-14.4(d de)7.5(si)-17.8(gning )-15.6(a)7.5(u)1.2(t)-17.8(o)1.2(ma)7.5(tic)7.5( )-15.7(e)-8.1(v)1.2(a)-8.1(l)13.4(u)-14.4(a)7.5(tion)-14.4( )]TJ +T* +0.0925 Tw +[(me)7.6(tri)-17.8(c)7.5(s. W)7.5(e)7.5( wou)-14.4(l)13.4(d l)13.4(i)-2.2(k)-14.4(e)7.5( )15.6(to )15.6(p)-14.4(r)6.1(opos)-15.9(e)7.6( a)7.5(n)1.2( a)7.6(nnu)-14.4(a)-8.1(l)13.4( )15.6(a)-8.1(u)1.2(to)-14.4(ma)7.5(tic)-8.1( )]TJ +T* +0.0023 Tc +0.0602 Tw +[(e)-7(v)17.9(a)-7(l)-1.1(ua)8.7(tio)-13.3(n tr)-8.4(a)8.6(c)8.6(k)-13.3( in D)-9.9(U)5.7(C th)-13.3(a)8.6(t)-1.1( e)-7(n)2.3(c)8.6(o)-13.3(ur)-8.4(a)8.6(g)-13.3(e)8.6(s)0.8( p)-13.3(a)8.7(r)7.2(t)-1.1(i)-16.7(c)8.7(ipa)-7(n)2.3(ts to)-13.3( )]TJ +T* +0.0021 Tc +0.0448 Tw +[(inve)8.4(nt n)-13.5(e)8.4(w)5.5( )-15.6(a)8.4(u)2.1(to)-13.5(ma)8.4(te)-7.2(d e)-7.2(v)2.1(a)-7.2(l)14.3(u)-13.5(a)8.4(tion )-15.6(me)8.5(tr)7(i)-16.9(c)8.4(s. E)-12.1(a)8.4(c)8.4(h)2.1( )-31.2(y)17.7(e)-7.2(a)8.4(r)7( th)-13.5(e)-7.2( )]TJ +T* +0.0008 Tc +0.2179 Tw +[(hu)-14.8(m)13(a)7.1(n )-15.7(e)-8.5(v)0.8(a)-8.5(l)13(ua)7.2(tio)-14.8(n re)7.1(s)-16.3(u)-14.8(l)13(t)-2.6(s c)-8.5(a)7.1(n be)7.1( us)-16.3(e)-8.5(d)0.8( to e)-8.5(v)16.4(a)-8.5(l)13(u)-14.8(a)7.1(te)7.2( th)-14.8(e)-8.5( )]TJ +T* +0.0019 Tc +0.17 Tw +[(e)8.2(f)-8.8(f)6.8(e)-7.4(c)8.2(t)-1.5(i)-17.1(v)17.5(e)-7.4(n)1.9(e)8.2(ss )-15.6(of)6.8( th)-13.7(e)8.2( )-15.6(va)8.2(r)6.8(i)-1.5(o)-13.7(u)1.9(s a)-7.4(u)1.9(to)-13.7(ma)8.2(tic)-7.4( e)-7.4(v)1.9(a)8.2(l)-1.5(ua)8.2(tio)-13.7(n )-15.6(m)14.1(e)8.3(t)-17.1(-)]TJ +T* +0.2325 Tw +[(r)6.8(i)-1.5(c)8.2(s)0.4(. T)-12.3(h)1.9(e)8.2( be)8.2(st )-15.6(a)8.2(u)1.9(to)-13.7(ma)8.2(tic)8.2( )-15.6(m)14.1(e)8.3(t)-17.1(r)6.8(ic)8.2( w)5.3(i)-17.1(ll)14.1( )-15.6(be)8.2( poste)-7.4(d a)8.2(t)-1.5( the)-7.4( )]TJ +T* +-0.0001 Tc +0.172 Tw +[(DUC )-15.6(we)6.2(b)-15.7(s)-1.6(ite)6.2( )-15.6(a)6.2(nd us)-17.2(e)6.2(d)-0.1( )-15.6(a)6.2(s)-1.6( a)-9.4(n)-0.1( a)-9.4(l)12.1(t)-19.1(e)6.3(rn)-15.7(a)6.2(t)-19.1(ive)6.2( in)-15.7(-hous)-17.2(e)6.2( a)-9.4(n)-0.1(d)-15.7( )]TJ +T* +0.0017 Tc +0.1389 Tw +[(r)6.6(e)8(p)-13.9(e)-7.6(a)8(t)-1.7(a)8(b)-13.9(le)8( e)-7.6(v)1.7(a)-7.6(l)13.9(u)-13.9(a)8(tion )-15.7(me)-7.6(c)8(h)1.7(a)-7.6(n)1.7(is)-15.4(m)13.9( du)-13.9(r)6.6(i)-17.3(ng the)8( n)-13.9(e)8(xt )-15.7(y)17.3(e)-7.6(a)-7.6(r)6.6(.)-13.9( )]TJ +T* +0.0012 Tc +0.1082 Tw +[(In this)-15.9( w)-11(a)-8.1(y)16.8( t)-17.8(h)1.2(e)-8.1( e)-8.1(v)1.2(a)-8.1(l)13.4(u)-14.4(a)7.6(tion)-14.4( te)-8.1(c)7.6(hno)-14.4(logie)-8.1(s)-0.3( c)-8.1(a)7.5(n )-15.6(a)7.6(d)-14.4(va)7.5(n)-14.4(c)-8.1(e)7.6( )-15.6(a)7.5(t)-17.8( )]TJ +T* +0.0019 Tc +0.2012 Tw +[(the)8.2( sa)-7.4(me)8.2( p)-13.7(a)8.2(c)-7.4(e)8.2( a)8.2(s)0.4( th)-13.7(e)8.3( su)-13.7(mma)8.2(r)6.8(i)-17.1(z)-7.4(a)8.2(tion )-15.7(te)8.2(c)8.3(h)-13.7(no)-13.7(l)14.1(ogi)-17.1(e)8.2(s)0.4( i)-17.1(m)-1.5(-)]TJ +T* +-0.0025 Tc +0 Tw +[(pro)-18.1(v)-2.5(e)3.9(.)-2.5( )]TJ +/TT6 1 Tf +13.0345 0 0 13.0345 313.0872 385.7238 Tm +-0.0034 Tc +[(R)-7.4(e)0(f)-15.6(eren)-6.8(ces)-7.1( )]TJ +/TT4 1 Tf +9.931 0 0 9.931 313.0872 368.6549 Tm +0.0007 Tc +0.3274 Tw +[(Don)-14.9(a)7(w)-11.5(a)-8.6(y)16.3(,)0.7( R.)-14.9(L., D)-11.5(r)5.6(u)-14.9(mme)-8.6(y)16.3(,)0.7( K)-11.5(.)0.7(W)-8.6(., a)-8.6(nd Ma)7(th)-14.9(e)7(r)-10(, )-15.7(L)17.8(.)-14.9(A.)-14.9( )]TJ +1.1562 -1.1563 TD +0.0001 Tc +0.4687 Tw +[(2000. )-15.6(A Co)-15.5(m)12.3(p)-15.5(a)6.4(r)5(iso)-15.5(n)0.1( of R)-20.4(a)6.4(nki)-18.9(ngs)-17( P)-6.3(r)5(odu)-15.5(c)6.4(e)6.4(d)0.1( )-15.6(b)-15.5(y)0.1( )]TJ +T* +0.0006 Tc +0.1557 Tw +[(S)-5.8(u)0.6(mma)6.9(ri)-18.4(z)-8.7(a)6.9(tion )15.7(E)-13.6(v)0.6(a)-8.7(l)12.8(u)-15(a)6.9(tion Me)-8.7(a)6.9(s)-0.9(u)-15(r)5.5(e)6.9(s)-16.5(. In )]TJ +/TT2 1 Tf +17.0313 0 TD +0.0001 Tc +0 Tw +[(Pr)-17(oc)-9.2(e)6.4(e)-9.2(ding)-15.5( )]TJ +-17.0313 -1.1563 TD +0.0013 Tc +0.0925 Tw +[(of the)7.6( )-15.6(W)6.2(o)1.3(r)-15.8(k)7.6(shop)-14.3( on )-15.6(Autom)-10.9(a)1.3(tic)7.6( S)-14.3(u)1.3(m)-10.9(m)4.7(a)-14.3(r)-0.2(ization)]TJ +/TT4 1 Tf +19.0625 0 TD +0.0003 Tc +0.0935 Tw +[(, post)-18.7(-)]TJ +-19.0625 -1.1563 TD +-0.0014 Tc +0.2982 Tw +[(c)4.9(o)-1.4(n)-17(f)3.5(e)-10.7(r)3.5(e)4.9(n)-17(c)-10.7(e)4.9( wor)-12.1(k)-1.4(shop o)-17(f)3.5( )-15.7(A)17.6(N)-13.6(LP)-23.4(-N)-13.6(AAC)-21.9(L-2000, pp)-17(.)-17( )]TJ +T* +0.0012 Tc +-0.0012 Tw +[(69)-14.4(-)21.7(78,)-14.4( Se)-8.1(a)7.6(ttle)7.5(, )-15.6(W)-8.1(A)4.6(, 20)-14.4(00. )]TJ +-1.1562 -1.6563 TD +-0.0002 Tc +0.0783 Tw +[(DUC. 200)-15.8(2. )]TJ +/TT2 1 Tf +5.2812 0 TD +0.0002 Tc +0.0779 Tw +[(T)-6.2(h)0.2(e)6.5( Do)-15.4(c)6.5(u)-15.4(me)-9.1(nt Und)-15.4(e)6.5(rstan)-15.4(ding Confe)6.5(r)-16.9(e)6.5(n)-15.4(c)6.5(e)]TJ +/TT4 1 Tf +17.2813 0 TD +0.0313 Tc +-0.0313 Tw +(. )Tj +-21.4063 -1.1719 TD +0.0016 Tc +-0.0016 Tw +[(http:)13.8(//du)-14(c)7.9(.nist.)-14(g)1.6(o)-14(v)17.2(. )]TJ +-1.1562 -1.6562 TD +0.0002 Tc +0.0467 Tw +[(F)9.5(u)0.2(k)-15.4(u)0.2(si)-18.8(m)12.4(a)6.5(, T)-14(.)0.2( a)6.5(n)-15.4(d Oku)-15.4(m)-3.2(ur)-10.5(a)6.5(,)0.2( M. 20)-15.4(01. )-15.5(T)-14(e)6.5(xt S)-6.2(u)0.2(mma)6.5(ri)-18.8(z)-9(a)-9.1(-)]TJ +1.1562 -1.1563 TD +0.0014 Tc +0.2799 Tw +[(tion Cha)-7.9(lle)7.7(ng)-14.2(e)-7.9(:)13.6( T)-12.8(e)7.7(xt S)-5(u)-14.2(mma)7.7(ri)-17.6(z)7.7(a)7.7(t)-2(i)-17.6(o)1.4(n)-14.2( E)-12.8(v)17(a)-7.9(l)13.6(u)-14.2(a)7.7(tion )-15.6(a)7.7(t)-17.6( )]TJ +T* +0.0002 Tc +0.2498 Tw +[(NT)-14(CI)20.7(R W)-9.1(o)0.2(rks)-16.9(hop2. In )]TJ +/TT2 1 Tf +10.2656 0 TD +0.001 Tc +0.249 Tw +[(Proc)-8.3(e)-8.3(e)7.3(dings of )15.7(the)7.3( )15.6(S)-14.6(e)-8.3(c)7.3(o)1(n)-14.6(d)-14.6( )]TJ +-10.2656 -1.1563 TD +-0.0053 Tc +0.1616 Tw +[(N)-10.2(T)-11.7(C)-10.2(I)-0.4(R )-15.6(Wo)-5.3(r)-22.4(k)1(s)-6.8(h)-5.3(o)-5.3(p)-20.9( o)-5.3(n)-20.9( R)-19.5(e)1(s)-6.8(e)-14.6(a)-5.3(r)-6.8(ch)-20.9( i)-8.7(n)-5.3( C)-25.8(h)-5.3(i)-8.7(n)-5.3(es)-22.4(e )-31.2(&)22.5( )-15.6(Ja)-20.9(p)-5.2(a)-5.3(-)]TJ +T* +0.001 Tc +0.2803 Tw +[(ne)7.3(s)-16.1(e)7.3( T)-5.4(e)-8.3(x)7.3(t)-2.4( )-15.6(Re)7.3(tri)-18(e)7.3(v)-8.3(a)1(l an)-14.6(d T)-5.4(e)-8.3(x)7.3(t)-2.4( )-15.6(Sum)-11.2(m)-11.2(a)1(rization)]TJ +/TT4 1 Tf +19.2344 0 TD +-0.0029 Tc +0.2998 Tw +[(, N)-15.1(II,)-18.5( )]TJ +-19.2344 -1.1563 TD +0.0002 Tc +-0.0002 Tw +[(T)-14(o)0.2(k)-15.4(y)31.4(o,)-15.4( Ja)6.5(p)-15.4(a)6.5(n, )-15.6(2001)-15.4(. )]TJ +-1.1562 -1.6563 TD +0.0008 Tc +0.3586 Tw +[(L)17.9(i)-18.2(n, C.)-14.8(-)21.3(Y)4.2(. 20)-14.8(01. )]TJ +/TT2 1 Tf +7.9531 0 TD +0.0001 Tc +0.3593 Tw +[(Sum)-12.1(mar)-17(y)6.4( Ev)-9.2(aluati)-18.9(on Env)6.4(i)-3.3(ro)-15.5(nm)-12.1(e)6.4(n)0.1(t)]TJ +/TT4 1 Tf +14.625 0 TD +0.0156 Tc +-0.0156 Tw +(. )Tj +-21.4219 -1.1563 TD +0.0013 Tc +0 Tw +[(http:)13.5(/)-2.1(/)-17.7(w)4.7(w)-10.9(w)4.7(.isi.e)-8(du/~)-4.6(c)-8(y)16.9(l/S)-20.7(EE. )]TJ +-1.1562 -1.6563 TD +0.0008 Tc +0.1398 Tw +[(L)17.9(i)-18.2(n, C.)-14.8(-)21.3(Y)-11.4(. a)7.1(nd )-15.7(E. Ho)-14.8(v)-14.8(y)16.4(. 2002. )-15.6(Ma)7.1(n)-14.8(u)-14.8(a)-8.5(l)13( a)7.1(nd )-15.7(Auto)-14.8(ma)7.1(tic)-8.5( )]TJ +1.1562 -1.1719 TD +0.0025 Tc +0.3256 Tw +[(E)-11.7(v)18.1(a)-6.8(l)14.7(u)-13.1(a)8.8(tions o)-13.1(f)7.4( Summa)-6.8(r)7.4(i)-0.9(e)8.8(s)]TJ +/TT2 1 Tf +11.25 0 TD +0 Tc +0 Tw +(.)Tj +/TT20 1 Tf +0.25 0 TD +( )Tj +/TT4 1 Tf +0.5781 0 TD +-0.0025 Tc +(In )Tj +/TT2 1 Tf +1.4063 0 TD +0.0014 Tc +0.3267 Tw +[(Pro)-14.2(c)7.7(e)-7.9(e)7.7(dings of th)-14.2(e)-7.9( )]TJ +-13.4844 -1.1563 TD +0.0002 Tc +0.7654 Tw +[(Wor)-16.9(k)6.5(shop)-15.4( on)-15.4( Auto)-15.4(mati)-18.8(c)6.5( Su)-15.4(mm)-12(ari)-18.8(z)-1.3(ation,)]TJ +/TT4 1 Tf +18.6406 0 TD +0.0156 Tc +0.75 Tw +[( po)15.6(s)14.1(t)-3.4(-)]TJ +-18.6406 -1.1562 TD +-0.001 Tc +0.0166 Tw +[(c)5.3(o)-1(n)-16.6(f)3.9(e)-10.3(r)3.9(e)5.3(n)-16.6(c)-10.3(e)5.3( wo)-16.6(rksho)-16.6(p)-1( of )-15.7(A)18(C)-21.5(L-2)-16.6(002, p)-16.6(p)-16.6(.)-1( 45)-16.6(-)19.5(51, P)-7.3(h)-1(i)-20(l)-4.4(a)-10.3(-)]TJ +T* +0 Tc +0 Tw +[(de)-9.3(l)12.2(phi)-19(a)6.3(,)0( P)-22(A)19(,)-15.6( 2002)-15.6(. )]TJ +-1.1562 -1.6562 TD +0.0146 Tc +0.2042 Tw +[(M)13.1(c)20.9(Ke)20.9(ow)18(n)14.6(,)-1( K)18(.)14.6(, R)9.7(.)14.6( )-15.6(B)9.7(a)20.9(rz)20.9(il)26.8(a)5.3(y)30.2(, D.)14.6( Ev)14.6(a)20.9(n)-1(s)13.1(,)14.6( V)18(.)-1( Ha)20.9(t)11.2(z)20.9(iv)14.6(a)20.9(s)13.1(s)13.3(i)-4.4(-)]TJ +1.1562 -1.1563 TD +0.0002 Tc +0.3279 Tw +[(l)12.4(o)0.2(g)-15.4(l)-3.2(ou, J. )-15.7(L)17.3(.)0.2( K)-12(l)-3.2(a)-9.1(v)0.2(a)6.5(n)0.2(s, )-15.7(A)19.2(.)0.2( )-15.7(Ne)-9.1(nko)-15.4(va)6.5(,)-15.4( C. S)-6.2(a)6.5(ble)6.5(,)0.2( )-15.7(B)10.9(.)-15.4( )]TJ +T* +0.0008 Tc +0.1242 Tw +[(S)-5.6(c)7.1(hif)-9.9(f)-9.9(m)13(a)-8.5(n, S)-5.6(.)0.8( S)-5.6(i)-2.6(ge)7.2(lma)7.1(n)-14.8(.)0.8( T)-13.4(r)5.7(a)7.1(c)-8.5(king a)7.1(n)-14.8(d)-14.8( S)-5.6(u)0.8(mma)7.1(ri)-18.2(z)7.1(i)-2.6(ng)-14.8( )]TJ +ET +endstream +endobj +40 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT20 41 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +/ColorSpace << +/Cs5 12 0 R +>> +>> +endobj +43 0 obj +<< +/Length 9504 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 79.7078 747.8962 Tm +/Cs5 cs 0 0 0 sc +/GS1 gs +0.0007 Tc +0.0079 Tw +[(I)6.1(n)0.7( P)25.3(r)-6.7(oceedings)-6.7( of the)13.5( Human T)5.1(e)13.5(chnology )17.2(C)12.5(onfer)-6.7(ence)13.5( 2003 \()23.4(H)-1.3(L)5.1(T)5.2(-)6.1(N)-4.7(A)8.1(A)8.1(C)-4.7(L)-12.1(-)6.1(2003\))6.1(,)-7.9( M)6.1(a)0.7(y )17.2(27 June)13.5( 1,)9.3( 2003,)9.3( E)8.1(d)0.7(monton,)-7.9( )17.2(Canada )]TJ +/TT4 1 Tf +9.931 0 0 9.931 71.9492 736.4135 Tm +0 Tc +0 Tw +( )Tj +1.1562 -2.5781 TD +-0.0021 Tc +0.0021 Tw +[(Ne)-11.4(ws o)-17.7(n)-2.1( )-15.6(a )-15.6(Dai)-21.1(l)-5.5(y)13.5( )-15.6(B)-7(a)4.2(si)-5.5(s)-19.2( wi)-5.5(t)-5.5(h)-17.7( C)-7(o)-17.7(l)10.1(u)-17.7(m)-5.5(b)-2.1(i)-5.5(a)4.2()-12.8(s)-3.6( N)-14.3(e)4.2(wsb)-17.7(l)-5.5(ast)-21.1(e)4.2(r)-12.8(.)-17.7( )]TJ +0 -1.1563 TD +-0.0025 Tc +0 Tw +(In )Tj +/TT2 1 Tf +1.5 0 TD +0.0004 Tc +0.4215 Tw +[(Pro)-15.2(c)6.7(e)-8.9(e)6.7(ding)-15.2(s of Hum)-11.8(an L)-6(angua)-15.2(g)-15.2(e)6.7( T)-5.9(e)6.7(c)-8.9(hnolog)-15.2(y)-8.9( )]TJ +-1.5 -1.1563 TD +-0.0063 Tc +0.0063 Tw +[(C)-11.2(o)-6.3(n)-6.3(f)-9.7(er)-23.4(en)-21.9(ce 2)-21.9(0)-6.3(0)-6.3(2)]TJ +/TT4 1 Tf +6.8906 0 TD +-0.0008 Tc +0.0008 Tw +[( )-15.6(\(H)-13(L)16.3(T)-15( 2)-16.4(002\))-11.5(. S)-7.2(a)5.5(n)-16.4( Di)-19.8(e)-10.1(go, C)-21.3(A)18.2(, )-15.6(2002. )]TJ +-8.0469 -1.6563 TD +-0.0002 Tc +0.0158 Tw +[(Ma)6.1(ni, )-15.7(I)20.3(., )-15.7(D. Hous)-17.3(e)6.1(,)-0.2( G. K)-12.4(l)-3.6(e)6.1(i)-3.6(n, )-15.7(L)16.9(.)-0.2( Hi)-19.2(rsc)-9.4(h)-15.8(ma)6.1(n, )-15.7(L)16.9(.)-0.2( O)-12.4(b)-0.2(rst, T)-14.4(.)-0.2( )]TJ +1.1562 -1.1563 TD +0.0005 Tc +0.2495 Tw +[(F)9.8(i)-2.9(r)-10.2(m)12.7(in)-15.1(, M. Ch)-15.1(rz)-8.8(a)6.8(n)0.5(o)-15.1(w)3.9(ski, )-15.6(a)6.8(nd )-15.6(B)11.2(.)0.5( S)-5.9(u)-15.1(ndhe)6.8(i)-18.5(m)12.7(. )-15.6(1998.)-30.8( )]TJ +/TT2 1 Tf +T* +0.006 Tc +0.8221 Tw +[(Th)6(e)12.3( TIP)7.5(S)6(TE)-8.2(R)7.5( S)-9.6(U)9.4(MMA)7.5(C Tex)12.3(t)2.6( )-15.7(S)6(u)6(m)-6.2(m)9.4(a)6(riza)6(tio)-9.6(n)-9.6( )]TJ +0 -1.1719 TD +0.0004 Tc +0.1402 Tw +[(Ev)6.7(alu)-15.2(a)0.4(tion: Final Re)6.7(p)-15.2(o)0.4(rt)]TJ +/TT4 1 Tf +10.4219 0 TD +-0.0007 Tc +0.1257 Tw +[(. M)-17.8(I)19.8(T)-14.9(R)-5.6(E C)-21.2(o)-0.7(rp. T)-14.9(e)-10(c)5.6(h. R)-21.2(e)-10(-)]TJ +-10.4219 -1.1562 TD +-0.0003 Tc +0 Tw +(port. )Tj +-1.1562 -1.6563 TD +0.0008 Tc +0.0461 Tw +[(N)-11.4(I)21.3(S)-5.5(T)-13.4(. 2002. )-15.6(A)19.8(u)0.8(t)-18.2(o)-14.8(m)13(a)7.1(ti)-18.2(c)7.1( E)-13.4(v)0.8(a)-8.5(l)13(ua)7.1(ti)-18.2(on of )-15.6(Ma)-8.5(c)7.1(h)0.8(in)-14.8(e)7.1( T)-13.4(r)5.7(a)7.1(n)0.8(s)-16.3(l)13.1(a)-8.5(-)]TJ +1.1562 -1.1562 TD +0.0007 Tc +-0.0007 Tw +[(tion Qu)-14.9(a)-8.6(l)12.9(it)-18.3(y)16.3( usin)-14.9(g N)-11.5(-)5.6(gr)-10(a)-8.6(m)12.9( Co)-14.9(-O)-11.5(c)-8.6(c)7(ur)-10(re)-8.6(nc)7(e)-8.6( S)-5.7(t)-2.7(a)7(tistic)7(s. )]TJ +-1.1562 -1.6563 TD +0.0002 Tc +-0.0002 Tw +[(O)-12(v)15.8(e)-9.1(r)5.1(, P)-6.2(.)0.2( 2)-15.4(003. P)-21.8(e)6.5(rso)-15.4(n)0.2(a)-9.1(l)12.4( C)-20.3(o)-15.4(mm)12.4(uni)-18.8(c)6.5(a)6.5(t)-3.2(i)-18.8(o)-15.4(n. )]TJ +T* +0.2498 Tw +[(P)-6.2(a)6.5(pine)-9.1(ni, K.)-15.4(, S)-6.2(.)0.2( Rouk)-15.4(os, T)-14(.)0.2( W)-9.1(a)-9.1(r)5.1(d, )-15.6(W)6.5(.)-15.3(-)20.7(J)-16.9(. )-15.6(Z)17.3(h)-15.4(u. 200)-15.4(1.)-15.4( )]TJ +1.1562 -1.1562 TD +0 Tc +0 Tw +(B)Tj +8.069 0 0 8.069 89.9492 552.9997 Tm +0.0045 Tc +(LEU)Tj +9.931 0 0 9.931 105.7768 552.9997 Tm +0.0006 Tc +0.2182 Tw +[(:)12.8( a)6.9( M)-16.5(e)6.9(thod )-15.6(for )-15.6(Auto)-15(ma)6.9(tic)6.9( )-15.6(E)-13.6(v)0.6(a)-8.7(l)-2.8(ua)6.9(tion o)-15(f)5.5( M)-16.4(a)-8.7(-)]TJ +-2.25 -1.1562 TD +-0.0063 Tc +0.2719 Tw +[(ch)-6.3(i)-9.7(n)-21.9(e T)-20.5(r)-1.4(an)-6.3(s)-23.4(l)-9.7(at)-9.7(i)-9.7(o)-6.3(n)]TJ +/TT2 1 Tf +7.2656 0 TD +0 Tc +0 Tw +(.)Tj +/TT4 1 Tf +0.25 0 TD +( )Tj +/TT2 1 Tf +0.5312 0 TD +-0.0004 Tc +0.266 Tw +[(IB)-14.6(M R)-14.6(e)5.9(s)-17.5(e)5.9(arc)-9.7(h)-0.4( R)-14.6(e)-9.7(port RC22)-16(176)-16( )]TJ +-8.0469 -1.1719 TD +-0.002 Tc +0 Tw +[(\(W0)-17.6(109)-17.6(-022)-17.6(\))]TJ +/TT4 1 Tf +5.3594 0 TD +0 Tc +(. )Tj +-6.5156 -1.6563 TD +-0.0004 Tc +0.0942 Tw +[(P)-6.8(o)-0.4(rte)-9.7(r)4.5(, M.)-16( F)-6.8(.)-0.4( 198)-16(0. )-15.6(An )-15.6(Algorit)-19.4(h)-16(m)11.8( f)-11.1(o)-0.4(r )-15.6(S)-6.7(u)-0.4(ffix S)-6.8(t)-19.4(ripping.)-31.7( )]TJ +/TT2 1 Tf +1.1562 -1.1563 TD +0.0003 Tc +0 Tw +[(Progra)-15.3(m)]TJ +/TT4 1 Tf +3.625 0 TD +-0.0003 Tc +0.0003 Tw +[(, 14)-15.9(, pp. )-15.6(130)-15.9(-137. )]TJ +-4.7812 -1.6563 TD +0.0007 Tc +0.2181 Tw +[(Ra)7(de)-8.6(v, D. )218.8(R.)-14.9(, S)-5.6(.)0.7( Bla)7(i)-2.7(r)-10(-)5.6(Go)-14.9(l)12.9(d)-14.9(e)7(n)0.7(s)-16.4(ohn, )-15.6(Z. Zha)7(n)-14.9(g, a)7(n)-14.9(d R.)-14.8( )]TJ +1.1562 -1.1563 TD +0.0004 Tc +0.0465 Tw +[(S)-6(.)0.4( )46.9(Ra)6.7(gh)-15.2(a)-8.9(v)0.4(a)6.7(n. N)-11.8(e)6.7(wsi)-18.6(n)0.4(e)6.7(s)-1.1(s)-16.7(e)6.7(n)-15.2(c)6.7(e)-8.9(:)12.6( )-15.6(A)19.4( S)-21.6(y)16(st)-18.6(e)-8.9(m)12.6( f)-10.3(o)0.4(r Do)-15.2(ma)6.7(in)-15.2(-)]TJ +T* +0.0001 Tc +0.078 Tw +[(Ind)-15.5(e)6.4(pe)-9.2(nde)-9.2(nt, Re)-9.2(a)-9.2(l)-3.3(-)20.6(T)-14.1(i)-18.9(m)12.3(e)6.4( )-15.7(Ne)-9.2(ws C)-20.4(l)12.3(uste)-9.2(r)-10.6(i)-3.3(ng a)6.4(nd M)-17(u)-15.5(l)12.3(t)-3.3(i)-18.9(-)]TJ +T* +0.0005 Tc +0.0933 Tw +[(Doc)-8.8(u)-15.1(m)12.7(e)-8.8(nt S)-5.8(u)0.5(mma)6.8(ri)-18.5(z)-8.8(a)6.8(tion. )-15.6(I)21(n)0.5( )]TJ +/TT2 1 Tf +12.4375 0 TD +0.0001 Tc +0.0937 Tw +[(Pro)-15.5(c)-9.2(e)6.4(e)-9.2(d)-15.5(i)-3.3(ngs of human)-15.5( )]TJ +-12.4375 -1.1563 TD +0.0005 Tc +0.1245 Tw +[(L)-5.9(anguag)-15.1(e)6.8( T)-21.5(e)6.8(c)-8.8(hnolog)-15.1(y)6.8( C)-20(onfe)6.8(r)-16.6(e)6.8(n)-15.1(c)-8.8(e)6.8( )]TJ +/TT4 1 Tf +14.5 0 TD +0 Tc +0.125 Tw +[(\()-10.7(H)-12.2(L)17.1(T)-14.2( 2)-15.6(001)-15.6(\))]TJ +/TT2 1 Tf +5.0313 0 TD +0 Tw +(,)Tj +/TT4 1 Tf +0.25 0 TD +0.022 Tc +0.103 Tw +[( Sa)28.3(n)6.4( )]TJ +-19.7813 -1.1563 TD +0 Tc +0 Tw +[(Die)6.3(g)-15.6(o, C)-20.5(A)19(, )-15.6(2001)-15.6(. )]TJ +-1.1562 -1.6563 TD +0.0009 Tc +0.171 Tw +[(S)-5.5(p)0.9()7.2(r)-9.8(c)7.2(k)0.9( J)-16.2(o)0.9(n)-14.7(e)7.2(s, )-15.6(K. )-15.6(a)7.2(n)0.9(d)-14.7( J. R.)-14.7( G)-11.3(a)-8.4(ll)13.1(ie)-8.4(rs. )-15.6(1996. )]TJ +/TT2 1 Tf +18.4063 0 TD +0 Tw +[(Ev)-8.4(aluatin)-14.7(g)-14.7( )]TJ +-17.25 -1.1719 TD +0.0011 Tc +0.1395 Tw +[(Natural L)-5.3(a)1.1(n)-14.5(guag)-14.5(e)7.4( )-15.7(Pro)-14.5(c)7.4(e)7.4(ssi)-17.9(ng S)-14.5(y)7.4(st)-17.9(e)7.4(m)-11.1(s: A)-13.1(n)1.1( A)-13.1(naly)-8.2(s)-0.4(is)-16( )]TJ +0 -1.1563 TD +0 Tc +0 Tw +[(and R)-14.1(e)6.3(v)6.3(i)-19(e)6.3(w)]TJ +/TT4 1 Tf +4.6563 0 TD +-0.0029 Tc +0.0029 Tw +[(. )-15.6(Ne)-12.2(w Y)-15.1(o)-2.9(rk)-18.5(:)9.3( S)-9.3(p)-18.5(ri)-6.3(ng)-18.5(er)-13.6(. )]TJ +-5.8125 -1.6563 TD +0.0007 Tc +0.2337 Tw +[(Ra)7(th, G.J.)-14.9(, Re)7(sni)-18.3(c)7(k, )-15.6(A., a)7(n)-14.9(d S)-5.6(a)-8.6(va)7(ge)-8.6(,)-14.9( T)-13.5(.)0.7(R. 1961. T)-13.5(h)0.7(e)7( )]TJ +1.1562 -1.1563 TD +0.0026 Tc +0.3412 Tw +[(F)11.9(o)-13(r)-8.1(m)14.8(a)8.9(tio)-13(n of)-8.1( )-15.6(A)21.6(b)2.6(st)-16.4(r)7.5(a)-6.7(c)8.9(t)-0.8(s b)-28.7(y)18.2( th)-13(e)8.9( Se)-6.7(le)-6.7(c)8.9(tion o)-13(f)7.5( Se)-6.6(n)-13(-)]TJ +T* +0.0017 Tc +0 Tw +[(te)8(nc)-7.6(e)8(s)0.2(.)-13.9( )]TJ +/TT2 1 Tf +3.3594 0 TD +-0.0005 Tc +0.3443 Tw +[(Am)-12.7(e)5.8(r)-2(i)-19.5(c)5.8(an)-16.1( Do)-16.1(c)5.8(u)-16.1(me)-9.8(ntation)]TJ +/TT4 1 Tf +10.7188 0 TD +-0.0011 Tc +0.3449 Tw +[(, )-15.6(12)-16.7(\(2\),)-16.7( pp.)-16.7( 139)-16.7(-)]TJ +-14.0781 -1.1563 TD +0.0008 Tc +0.1867 Tw +[(143. R)-19.7(e)7.1(p)-14.8(r)5.7(inte)7.1(d)-14.8( in)-14.8( Ma)-8.5(ni, )-15.6(I., )-15.6(a)7.1(n)0.8(d)-14.8( M)-16.3(a)-8.5(ybur)-9.9(y)16.4(,)-14.8( M.,)-14.8( e)-8.5(d)0.8(s,)-14.8( )]TJ +/TT2 1 Tf +T* +0.0014 Tc +0.3424 Tw +[(Adv)7.7(a)-14.2(nc)-7.9(e)7.7(s)-0.1( in )-15.6(Autom)-10.8(a)1.4(tic)7.7( T)-20.6(e)7.7(x)7.7(t)-2( S)-14.2(u)1.5(m)-10.8(m)4.8(a)-14.2(r)-0.1(ization)]TJ +/TT4 1 Tf +18.9844 0 TD +0 Tc +0.3438 Tw +[(, M)-17.1(I)20.5(T)-29.8( )]TJ +-18.9844 -1.1563 TD +0.0003 Tc +0.0153 Tw +[(P)-6.1(r)5.2(e)6.6(ss, pp. )15.6(28)-15.3(7)-15.3(-)20.8(2)-15.3(92. )]TJ +-1.1562 -1.6562 TD +0 Tc +0.2656 Tw +[(W)-9.3(A)19(S)-6.4(.)0( 2000. )]TJ +/TT2 1 Tf +5.75 0 TD +0.0006 Tc +0.2494 Tw +[(Wor)-16.5(k)6.9(sh)-15(op on )-15.6(Auto)-15(matic)-8.7( Sum)-11.6(marization)]TJ +/TT4 1 Tf +16.8125 0 TD +0.0313 Tc +0 Tw +(, )Tj +-21.4063 -1.1719 TD +-0.0015 Tc +0.2203 Tw +[(post)-20.5(-)3.4(c)4.8(onf)-12.2(e)-10.8(r)3.4(e)4.8(n)-17.1(c)-10.8(e)4.8( wo)-17.1(rksh)-17.1(op of )-15.6(AN)-13.7(LP)-23.4(-N)-13.7(AAC)-22(L-2000,)-32.8( )]TJ +0 -1.1563 TD +0 Tc +0.0156 Tw +[(S)-6.4(e)6.3(a)6.4(t)-3.4(t)-19(l)12.2(e)-9.3(,)0( W)-9.3(A)19.1(, )15.6(2)-15.6(000. )]TJ +-1.1562 -1.6563 TD +0.2656 Tw +[(W)-9.3(A)19(S)-6.4(.)0( 2001. )]TJ +/TT2 1 Tf +5.75 0 TD +0.0006 Tc +0.2494 Tw +[(Wor)-16.5(k)6.9(sh)-15(op on )-15.6(Auto)-15(matic)-8.7( Sum)-11.6(marization)]TJ +/TT4 1 Tf +16.8125 0 TD +0.0313 Tc +0 Tw +(, )Tj +-21.4063 -1.1563 TD +0.0012 Tc +0.4051 Tw +[(pr)6.1(e)-8.1(-)6.1(c)-8.1(onf)-9.5(e)7.5(r)-9.5(e)7.5(n)-14.4(c)7.5(e)-8.1( w)4.6(o)-14.4(r)6.1(k)1.2(sh)-14.4(op o)-14.4(f)6.1( N)-11(A)-11(A)4.6(C)-19.3(L)2.8(-)6.1(2)1.2(0)-14.4(01, Pitts)-15.9(-)]TJ +T* +-0.0004 Tc +0.0004 Tw +[(burgh,)-16( P)-22.4(A)18.6(, 2)-16(001. )]TJ +-1.1562 -1.6562 TD +0 Tc +0.2656 Tw +[(W)-9.3(A)19(S)-6.4(.)0( 2002. )]TJ +/TT2 1 Tf +5.75 0 TD +0.0013 Tc +0.2487 Tw +[(W)6.2(o)1.3(r)-15.8(k)7.6(sh)-14.3(op on )-15.6(Auto)-14.3(m)4.7(a)1.3(tic)-8( Sum)-10.9(m)4.7(arization)]TJ +/TT4 1 Tf +16.8125 0 TD +0.0313 Tc +0 Tw +(, )Tj +-21.4063 -1.1563 TD +-0.0006 Tc +0.2975 Tw +[(post)-19.6(-)4.3(c)5.7(onf)-11.3(e)-9.9(r)4.3(e)5.7(n)-16.2(c)-9.9(e)5.7( wo)-16.2(rksh)-16.2(op o)-16.2(f)4.3( )-15.6(A)18.4(C)-21.1(L-2)-16.2(002, P)-7(h)-0.6(i)-19.6(l)11.6(a)-9.9(d)-0.6(e)-9.8(l)-4(-)]TJ +T* +0.0003 Tc +-0.0003 Tw +[(phia)6.6(,)0.3( P)-21.7(A)3.7(, 200)-15.3(2. )]TJ +ET +endstream +endobj +44 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT4 7 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +/ColorSpace << +/Cs5 12 0 R +>> +>> +endobj +18 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 682 +/Height 594 +/BitsPerComponent 8 +/ColorSpace 12 0 R +/Length 1215325 +>> +stream +`deNRSңʭ¯楨ߨ२ݒǝӒǧݗͰ籼떡ϋȘ֖ן֤ݧޣڟӝѝ͛˧חǟӧۜҤڬ朤բ٧ޥܡاޛҔ˛ү瞦եܬ䷿ǥܴ읥ԡإܥܡ؞՟֡؟ֽ䞦ԥ֧۠֠ݛͮӨܣפ؟բؤۤۤۤۤݤݤݤݣգդ֤֥ץץץעԢԣգդ֤֤֥פڤڤڥۥۦܦܦܦܦܦܦܦܦܦܦܧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۨܨܨܨܨܨܨܨܩݩݩݩݩݩݩݩݩݩݩݩݩݩݩݩݩݩݪުޫ߫߫߬ળުުޫ߫߬ଵଵযڦڦڧۧۨܨܨܥ٦ڦڦڧۧۨܨܧۧۧۧۧۧۧۧ۩ݩݩݩݩݩݩݩݩݩݩݩݩݩݩݩݩ۩۩۪ܪܫݫݫݩ۩۪ܪܫݫݫݫݪܪܪܪܪܪܪܪܬެެެެެެެޫݫݬެޭ߭߮ஷଵެެޭ߭߮ஷஷ୶߭߭߭߭߭߭߭߯᯸᯸᯸᯸᯸᯸᯸᮷ޮޮޮޮޮޮޮޮޮޮޯ߯߰హహஷޮޯ߯߰హహ౺᯸߰హహ౺ᱺ᲻ⲻⰹహహ౺ᱺ᲻ⲻⲻⰹ౺ᱺᱺ᲻ⲻ⳼䳼䲻ⲻⲻⲻⲻⲻⲻⲻⲻⲻⲻⲻⲻⲻⲻⲻ⳽೽೽೽೽೽೽೽೽೽೽ാᴾᵿ⵿⵿ⴾᴾᵿ⵿崾ᴾᴾᴾᴾᴾᴾᴾԵյյնֶַ׷׮ήίϯϯϰааааабѱѲҲҲҲҲҲҳӳӴԴԴԲҲҳӳӴԴԴԵճӳӳӳӳӳӳӳӯүүҰӰӰӱԱ԰ӰӰӱԱԲղղհհձֱֲײײ׳رֲײײ׳سشٴٳسسسسسسسشٴٴٴٴٴٴٴٳֳֳֳֳֳֳֳִ״״״״״״״׳ֳִ״׵صضٶٵصضٶٷڷڷڸ۵صضٶٶٷڷڷڸ۸۸۸۸۸۸۸۹ܹܹܹܹܹܹܹܵصضٶٷڷڷڸ۹ܹܹܹܹܹܹܹܵصصضٶٷڷڷڶ׶׶׷طظٸٸٴմյֵֶ׶׶׷صֵֵֶ׶׷ططض׶׶׶׶׶׶׶׸ٸٸٸٸٸٸٸٸٸٸٸٸٸٸٸٹڹڹڹڹڹڹڹڹڹڹںۺۺۻܻܺغغػٻټڼڼںغغغغغغغؽ׻᯾赼ٷ泵εѸ춺GJK訢&!+lhxlTX}eiA')~p^dtbh]Vd ALH*-^).Z"N$NH!J C 9'Q)4c!+Z +K&X&S#*X!)T!L"J (O!)M&J!)M'J (O!)P%O&P 'T$Q#N 'R#N")U&-Y J-4`)1\J&Q$+W J$O!)T 'RF&-Y&-Y&-Y%,X$+W#*V#*V#*V#N*2] 'Q!(R$+V&-X07b%,W'L2:`#+S+3[08`)2Z,3^/6a*2]*2]*2]*2]*2_*2_*2_*2_*2Y*2Y*2Y+3Z+3Z+3Z,4Z,4Z-5[-5[.6\.6\/7]/7]/7]/7]07b18c18c18c29d29d2:e2:e3;f3;f3;f3;f3;f3;f3;f3;f4=e4=e4=e4=e4=e4=e4=e4=e5=f5=f5=f5=f5=f5=f5=f5=f9Aj9Aj9Aj9Aj9Aj9Aj9Aj9Aj;Cl;Cl;Cl;Cl;Cl;Cl;Cl;ClGo>Go>Go=Fo=Fo=Fo>Go>Go?Hp?Hp?Hp@Iq@Iq@IqAJrAJrBJsBJsBJsDLuDLuDLuEMvEMvFNwFNwFNwFNwFNwFNwFNwFNwFNwFNwFNwJR{JR{JR{JR{JR{JR{JR{JR{JS|JS|JS|JS|JS|JS|JS|JS|JSzJSzKT{KT{KT{LU|LU|LU|LU|LU|LU|MV}MV}NW~NW~NW~PYPYPYPYPYPYPYPYRZRZRZRZRZRZRZRZRZRZS[S[T\T\U]U]S[S[T\T\U]U]V^V^V^V^V^V^V^V^V^V^X`X`X`X`X`X`X`X`ZcZcZcZcZcZcZcZc[d[d[d\e\e]f]f]f\e\e\e]f]f^g^g^g^g^g_h_h`i`i`iaj_h_h`i`iajajajbk`i`iajajbkbkbkclgogogogogogogogohphphphphphphphpiriririririririrjsjsktktlululumvktlululumvmvnwnwmvmvmvmvmvmvmvmvnznzo{o{o{o|o|o|wxxxyyzzzzz{{|||||}}~~~}}~~ŸŸ¡¢ââãģģĤŤťƥƣĤŤŤťƥƦǦǦǦǦǦǦǦǦǦǨɨɨɨɨɨɨɨɩʩʩʩʩʩʩʩʫ̫̫̫̫̫̫̫̫̫̬ͬͬͭέέέ˭ˮ̮̯ͯͰΰαϱϱϱϱϱϱϱϦѣεȻ½þ½ƺ˶᰿Ʃ˸°ݨǭ붽ګտ갹ڶ߫ݪ׷JMN岫$մ٬ܯͩth$h#0t%2t ]X !a,l(g#4u);|$k$k'p!k/})v $u%v #s +"r)r.x.r)m +%f!5w.o(i1u*o #i 3z/o$5v)j"3t(h !`):{+l->!2r!2s#4u/o->+l'8y#1 -*}+~"1&4&4%3*:)u)q)8)9(8)9%l!9x4s-n2r#<}2s7z";~ 7} 7} 7} 7} 7~ 7~ 7~ 7~!9|!9|!9|!:}!:}!:}";~";~$=$=%=%=%=&>&>&>#<#<$=$=%=%=%=&>'?'?'?'?'?'?'?'?)A)A)A)A)A)A)A)A)B)B)B)B)B)B)B)B-F-F-F-F-F-F-F-F0I0I0I0I0I0I0I0I2J2J2J2J2J2J2J2J2K2K3L3L4M4M4M5N4M4M4M5N5N6O6O6O7P7P8Q8Q9R9R9R:S;T;TX>X>X>X>X>X>X>X?Y?Y?Y?Y?Y?Y?Y?Y?Y@Y@Y@YAZAZB[B[C\C\C\D]D]E^E^E^F_F_F_F_F_F_F_F_IbIbIbIbIbIbIbIbIbIbJcJcJdJdJdKeJdJdJdKeKeLfLfLfNhNhNhNhNhNhNhNhQkQkQkQkQkQkQkQkToToToToToToToToVpVpVpWqWqXrXrXrWqWqXrXrYsYsYsZtZtZtZuZuZu[v[v[vZu[v[v[v\w\w]x]x\w\w\w]x]x^y^y^y_z_z_z_z_z_z_z_za|a|a|a|a|a|a|a|b~b~b~b~b~b~b~b~dddeefffeeffggghiiiiiiiijjkklllmeeffgggghhhiijjjjkkkllmmlllmmnnnppppppppnnooooopppqqqrrrrrrrssttttuuvvwwwwwwwwwwyyyyyyyy}}}}}}}}~~~~~~~~~ɀʀʁˁˁˁ˂̂̂̃̓̓̓̓̓̈́΄΅υυχчччччччш҈҈҈҈҈҈҈ҊԋՋՋՌ֌֍׍׎؎؎؎؎؎؎؎ؑۑےܒܓݓݓݔޑْْؑؑؒٓړڕݕݕݖޖޖޗߗߖޖޗߗߗߘᙽᙽᙽᙽᙽᙽᙽ򄒚x|𲻸EMJ%񽜻|Ѥ}!dP"dY)i.o !_$c^V*q +!h %od1)w1--~ 2 2},v(l %i)j 4v0q,n!5z2v-s&:.o/o #c'8yL^k}$5vZ](h"3t&7x%eX "b);|(5$2!0!/!0"1!0!/+;-z)9)9!2y+r/?qQk6u#<}!:{(@#<}!:}(@&=&=&=&=&=&=&=&=(@(@(@)A)A)A)B)B)A)B)B)B*C*C+D+D)B)B*C*C+D+D+D,E-F-F-F-F-F-F-F-F/H/H/H/H/H/H/H/H1J1J1J1J1J1J1J1J2J2J2J2J2J2J2J2J4M4M4M4M4M4M4M4M6O6O6O6O6O6O6O6O7P7P8Q8Q9R9R9R:S9R9R:S:S;T;T;TX>X?Y?Y@Y@Y@YAZAZB[B[B[C\C\D]D]B[B[B[B[B[B[B[B[D]D]D]D]D]D]D]D]E^E^E^F_F_G`G`G`G`G`G`HaHaIbIbIbKeKeKeKeKeKeKeKeNhNhNhNhNhNhNhNhOjOjOjOjOjOjOjOjPkPkQlQlQlRmRmRmRmRmRmSnSnToToToToUoUoUoVpVpWqWqVpWqWqWqXrXrYsYsXrXrYsYsZtZtZuZuZtZtZtZtZtZtZtZt[v[v[v[v[v[v[v[v]y]y]y]y]y]y]y]y^z^z_{_{`|`|a}a}`|`|`|`|a}a}b~b~eeeeeeeeefffgghhllllmmnnmmnnooooopppqqrrqrrrssttvvvvvvvvstttuuvvvvvwwxxxxxxyyzzzzz{{|||}}}}}}}}}ˀʀʀʀʀʀʀʀʂ̂̂̂̂̂̂̂̃̓̈́΄΅υυφЅυυφІЇччш҈҈҈҉ӉӊԊԋՋՋՋՋՋՋՋՌ֌֌֌֌֌֌֌֍׍׎؎؏ُُِڐڐڐڐڐڐڐڐڍ׍׍׎؎؏َُُՎՏ֏֐אאבْؑؑؑؒٓړړړړړڔ۔۔ܔܔܕݕݕݕݕݕݕݕݗߗߗߗߗߗߗߗߙᙽᙽᙽᙽᙽᙽᙽ闹߼ڽݳp6h?qw>w>w?x Au Au Au!Bv!Bv!Cw!Cw!Cw"Dx"Dx"Dx"Dx"Dx"Dx"Dx"Dx$Fx$Fx$Fx$Fx$Fx$Fx$Fx$Fx&Hz&Hz&Hz&Hz&Hz&Hz&Hz&Hz)J|)J|)J|)J|)J|)J|)J|)J|)K})K})K})K})K})K})K})K},N,N,N,N,N,N,N,N,N,N-O-O-O.P.P.P.P/Q/Q/Q0R0R1S1S4W5X5X5X6Y6Y7Y7Y5X5X5X6Y6Y7Y7Y7Y8Z8Z8Z8Z8Z8Z8Z8Z<^<^<^<^<^<^<^<^>a>a>a>a>a>a>a>a?c?c?c@d@dAeAeAe@d@d@dAeAeBfBfBfCgCgCgCgCgCgCgCgCgCgCgCgCgCgCgCgDhEiEiEiFjFjGkGkGkGkGkHlHlImImImJnJnJnJnJnJnJnJnLpLpLpLpLpLpLpLpMqMqMqMqMqMqMqMqNrNrNrOsOsPtPtPtPtPtQuQuRvRvRvRvRvRvRvSwSwTxTxTxTxTxUyUyVzVzVzW{VzW{W{W{X|X|Y}Y}Z~Z~Z~Z~Z~Z~Z~Z~\\\\\\\\^^^^^^^^^___``aa```aabbbddddddddddeeefffabbbccddbbccdddefffgghhhhhhiijjjkkkkkkkkjjkkllmmllmmmnnnnnooooppoopppqqqssssssssuuuuuuuuuuuuuuuuwwwwwwwwyyyyzz{{yyzz{{{|}}}~~~~~~~~~~~ف܁܁܁܁܁܁܁܁܁܁܂݂݃ރރރރރރރރރރފ拴狴狴猵茵荶鍶鏹珹琺萺葻鑻鑻钼ꐺ萺萺葻鑻钼꒼꒼꒼꒼ꓽ듽딾씾씾씾˻ΰMPW ! +  +yvͿ]hZ}vzjPQ@lj[LMI哕NQZ洿FPL "3{Z3:qBfZ~k@_mkTrOKm9MrH\)J+?bK`2Hl.T%R;O9M@VJ`awiSj4JvwG^%J(X%Gx=nb>b;^;^<_<_=`=`=`=aBfBfBfBfBfBfBfBfBfBfBfBfBfBfBfBfCgCgCgDhDhEiEiEiEiEiFjFjGkGkGkHlFjFjFjFjFjFjFjFjJnJnJnJnJnJnJnJnMqMqMqMqMqMqMqMqMqMqMqNrNrOsOsOsOsPtPtPtQuQuRvRvQuQuQuQuRvRvSwSwSwSwTxTxTxUyUyUyUyVzVzVzW{W{X|X|X|X|X|X|X|X|X|X|Z~Z~Z~Z~Z~Z~Z~Z~\\\\\\\\\\\]]^^^]]]^^___aaaaaaaa_```aabbgghhiiijgghhhiiikkkllmmmmmnnoooonnnnnnnnmmmnnooonnnoooooooppqqrrpqqqrrssttttttttwwwwwwwwyyyyyyyy||||||||}}}~~}}}~~ڀہ܁܁܂݂݃ރނ݂݂݂݂݂݂݂݄߄߄߄߄߄߄߄߆ᆯᆯᆯᇰ⇰∱䈱䉲割割割割割割割劳抳抳拴狴猵茵茵苵⋵⋵⌶䌶䍷卷卷匶䌶䍷卷厸掸掸掸揹珹珹珹琺萺葻鑻钼꒼꒼꒼꒼꒼꒼꒼ꓽ듽듽듽듽듽듽듽ϿӨdgnFG6оŴƵx~pq|oT^QŴ89)EF5ɠWZbֵFPL'ŬșlNxuXlQwzyq,GVn(6KM\rȡTgQc'Q)S!3i0e0a $U,X+?lݮF]{3Ss-Lbun{v.G1J|$6O*C/Na{h{*M&I$B萢oi}Mbo2`#@o =k!>o;k7j8k;n;n w#>w#>w$?x$?x$?x#>w#>w$?x$?x$?x%@y%@y%@y$@s$@s%At%At&Bu&Bu'Cv'Cv(Dw(Dw(Dw)Ex)Ex)Fy)Fy)Fy)Fy*Gz*Gz*Gz+H{+H{,I|,I|,I|,I|,I|-J}-J}.J~.J~.J~-J{-J{.K|.K|/L}/L}/L}0M~-J{-J{-J{.K|.K|/L}/L}/L}/L}0M~0M~0M~1N1N2O2O2O2O2O2P2P3Q3Q3Q6T6T7U7U7U8V8V8V6T6T6T7U7U8V8V8V8V9W9W9W:X:X;Y;Y;Y;Y;Y\>\>\?]?]?]@^@^>\>\>\>\?]?]@^@^?]?]?]@^@^A_A_A_@^@^@^A_A_B`B`B`B`CaCaCaDbDbEcEcFdFdGeGeGeHfHfHfIgIgIgJhJhJhJiJiHfIgIgIgJhJhJiJiJiJiJiKjKjLkLkLkNmNmNmOnOnPoPoPoQpRqRqRqSrSrTsTsQpQpRqRqSrSrTsTsQpQpQpRqRqRqSrSrSrSrTsTsUtUtUtVuVuVuVuWvWvWvXwXwXwXwYxYxYxZyZyZyZzZzZz[{[{\|\|\|[{[{[{\|\|]}]}]}]}]}^~^~___`aabbcccdbcccddeeeeeffgggffggghhhjjjkklllkkkllmmmmnnnoooomnnnoooopppqqrrrppqqrrrssssttuuutttuuvvvxxxyyyzz{|||}}~~}}}~~|}}}~~΀ππρЁЁЁЂтту҃҄ӄӅԅԆՆՇևևֈ׆Շևևֈ׈׉؉؈׈׈׉؉؉؊يييًڋڌییۍ܋ڋڌیۍ܍܍܎ݐߐߑᒳᒳᓴ␱ߐߑᒳᒳᓴ⓴ᓴᓴᔵ┵┶䔶䔶䔵┵┵┶䔶䕷啷啷嗹痹痹瘺蘺虻陻陻閸斸斸旹痹瘺蘺蘺蚼ꚼꚼ꛽뛽뛽뜾윾옺蘺虻陻隼ꚼꚼ꛽뜾윾윾읿흿흿ɳкϺɿÿ]VTC8AztmiyUQa=2;Z]f䮺HSO򚪺)89)SпԵ᳔ũѸijҨǂ/z[kWh)q">q#?s#?s$@v$@v$@v%Aw"=v"=v"=v#>w#>w#>w$?x$?x&Az&Az&Az'B{'B{(C|(C|(C|'Cv'Cv(Dw(Dw)Ex)Ex)Ex)Fy)Ex)Fy)Fy)Fy*Gz*Gz+H{+H{+H{,I|,I|,I|-J}-J}.J~.J~-J}-J}.J~.J~/K/K/K0L/L}/L}0M~0M~1N1N1N2O2O2O2O2P2P3Q3Q3Q3Q3Q4R4R5S5S6T6T4R4R5S5S6T6T7U7U5S6T6T6T7U7U8V8V6T6T7U7U8V8V8V9W9W9W9W:X:X:X;Y;Y:X:X:X;Y;Y;Y\>\>\?]=[=[=[>\>\?]?]?]A_A_A_B`B`CaCaCaB`B`B`CaCaDbDbDbDbEcEcEcFdFdGeGeFdGeGeGeHfHfIgIgIgIgIgJhJhJiJiJiJhJhJhJiJiKjKjKjKjKjLkLkMlMlMlNmKjKjLkLkLkMlMlMlMmMmNnNnOoOoOoPoQpQpQpRqRqRqSrSrWvWvWvWvXwXwYxYxYxYxZyZyZyZzZzZzZzZz[{[{\|\|]}]}[{[{\|\|]}]}^~^~ZzZzZz[{[{\|\|\|]}]}]}^~^~_____``aaab__``aaab`aaabbccccdddeeecdddeeffggghhiiihhiijjjkkkkllmmmmnnnoooooopppqqqooppqqrrrrrsstttsstttuuuuuvvwwwxuuvvwwwxwwxxyyyyzzz{{|||||}}~~~~΀πρЁЁЁЁЂту҃҃҃҃҃҄ӄӅԅԅԄӄӄӅԅԆՆՆՆՇևևֈ׈׉؉؊يًڋڌیییۊييًڋڌییۋڋڋڌییۍ܍܍ۍێ܎܏ݏݏݏݎ܎܏ݏݐސޑߑߒᓴᔵ┵┵◹痹痹瘺蘺虻陻陻陻陻隼ꚼ꛽뛽뛽뛽뛽뛽뜾윾읿흿흿ƿտŽaZXɻTIR|[Xh졕"! MN?刌\`i׮HSO$2MQ|imƿ왒ƾ}uxo%WK:hock&/\&T/:iFR$.h(2l(e$a!e#.s +\ ]"\KY;I)["U!TR`1>vcq >3>o+6gjuI]iOZ @$/_ZeQ\an!G)J.p)n$6{(:0t,s*<"3|#4}#4}#4}$5$5%6%6$5$5$5%6%6&7&7&7):):):););*<*<*<););*<*<*<+=+=+=*<*<+=+=,=,=,=->.?.?.?/@/@0A0A0A/@/@/@0A0A0A1B1B2D2D2D2E2E3F3F3F3F3F4G4G5H5H5H6I6I6I6I7J7J8J8J8J6I6I6I7J7J7J8J8J9K9K:L:L;M;MQ>Q>Q?R?R=O=P=P=P>Q>Q?R?R@S@S@SATATBUBUBUATBUBUBUCVCVDWDWEXEXFYFYGYGYHZHZGYGYGYGYHZHZI[I[I[I[J\J\J\J]J]J]J\J\J\J]J]J]K^K^K^K^L_L_M`M`M`M`M`M`M`NaNaObObObObPcPcPcQdQdReReReReReSfSfTgTgTgSfSfSfTgTgUhUhUhWjWjXkXkYlYlZmZmTgTgTgUhUhViViViViWjWjWjXkXkYlYlXkXkYlYlZmZmZnZnXkXkYlYlZmZmZmZnatbububucvcvdwdwdwexexexfyfygzgzfzfzg{g{h|h|i}i}i}i}j~j~kkllkkklllmmmmnnnooomnnnoooopppqqrrrqqqrrsssstttuuvvvvwwwxxxxyyyzz{{xxxyyyzzzz{{|||}{|||}}~~|}}}~~ĀŀŁƁƁƂǂǂǃȃȄɄɄɅȅȅȆɆɆɇʇʇʇʈˈˈˉ̉̉̉̉̉̊͊͋΋΋Ί͊͋΋ΌόόύЍЍЎюяҏҏҐӎяҏҏҐӐӑԑԑԑԑԒՒՓ֓֓֔ההٕٕٖؔؕڕٕٕٖږڗۗۗۗۗۗۘܘܘܙݙݙڙښۚۛܛܛܜݚۛܛܛܜݜݝޝޞߞߞߞߟ࠼ᠼᚶۚۛܛܛܜݜݜݛܛܜݜݝޝޝޞߞߞߟ࠼ᠼ᡽⡽⡽⢾䢾䢾䣿壿棿壿壿鞸٣үmcXe[PgcY}ͰOJGQJHـ~vuzJJN{{!& AFJԬTZj鮺HSSߙ -JNy\_SV}jz &XowNVMYLWR(e)o"g +m4@!ZU쩸9G{#V>+9pmx&V$/_u4䊖?"/Qfst%7z 2v+=)<%7|!2z*<(9(9(9):):););););););*<*<+=+=+=+=,=,=,=->->.?.?->->->.?.?/@/@/@.?/@/@/@0A0A1B1B2C2D2D2D3E3E4F4F2C2D2D2D3E3E4F4F5H5H6I6I7J7J7J8J5H5H6I6I7J7J7J8J8J8J8J9K9K9K:L:L8J8J9K9K9K:L:L:L=O=O=O=P=P>Q>Q>Q>Q?R?R?R@S@SATATATATATBUBUCVCVCVATBUBUBUCVCVDWDWDWDWEXEXFYFYFYGYGYGYGYHZHZI[I[I[HZHZHZI[I[J\J\J\I[I[J\J\J\J]J]J]K^K^K^L_L_L_M`M`K^K^L_L_M`M`M`NaNaNaNaObObPcPcPcPcPcQdQdReReSfSfSfSfSfTgTgUhUhUhViWjWjWjXkXkYlYlXkXkYlYlZmZmZmZmZmZnZnZn[o[o\o\o]p]p]p^q^q_r_r_r_r_r`s`satatatbuatatatbubucvcvcvatatbubucvcvcvdw]p]p^q^q^q_r_r_r_r_r_r`s`satatat`t`tauaubvbvbvcweyeyeyfzfzg{g{g{fzfzfzg{g{h|h|h|h|i}i}i}j~j~kkjjkklllmmmmnnooonnoooooppppqqrrrpppqqqrrsssttuuurrsstttuuuuvvvwwvvvwwxxxxxxyyyzz{{||}}}~ĀŀŁƁƁ€ÀÁāāāāĂłŃƃƄDŽǃƃƃƄDŽDžȅȅȄDžȅȅȆɆɇʇʈˈˉ̉̊͊͋΋Ί͊͊͋΋΋ΌόόόύЍЍЎююьόύЍЎююяҐӐӐӑԑԒՒՒՒՓ֓֓֔ההؔؔՔՕ֖֕֕זזו֖֕זחؘؗؗ٘٘ٙڙڙښۚۚۛܛܜݜݝޝޝޞߝޝޝޞߞߟߞߟ࠼ᠼᠼ᡽⡽⡽⡽⢾䢾䣿壿壿墾䢾䣿壿|ytHD:Ŀb]Z2*)aZXRLLHBBECFDBEYX\˿ӱόIO^ծHSS +"~lrgnbaUT|ԞΦ{(j"d].7xS![Q%]&4m$[ 0jU +!]"2p-=.o*o!e+l*k -j Y+e!0j#2l+e!/l +Z)j%e)6y$1s)c .h-g W3B}(a(a$2m$2m2A|)c-v"Y)`"1h&4l!X.=t"Y#2iAP$Z!0g3Bz$2j.b2Bw7J-l1o':y!4s+>~);|'9z(:}(:}(:););)<)<)<&8{&8{&8{'9|'9|(:}(:}(:}(:}(:}(:});~);~)<)<)<);~);~)<)<*=*=*=+=+=,>,>,>-?-?.@.@/A/A0B0B1C1C1C1C/A/A0B0B0B1C1C1C2F2F2F3G3G4H4H4H2F2F2F3G3G4H4H4H4H4H5I5I6J6J6J7J6J6J7J7J8K8K8K9L6J7J7J7J8K8K9L9L9L9L9L:M:M;N;N;N;NR>R?S?S?S?S?S@T@TAUAUAUAUBVBVBVCWCWDXDXBVCWCWCWDXDXEYEYDXDXDXEYEYFYFYFYFYFYGZGZH[H[H[I\H[H[I\I\I\J]J]J]J]J^J^J^K_K_L`L`L`L`MaMaMaNbNbNbOcOcOcPdPdPdQeQeMaNbNbNbOcOcPdPdQeQeQeRfRfSgSgSgSgSgThThUiUiUiVjVjWkWkWkXlXlYmYmYmYmYmZnZnZoZoZoZnZnZnZoZo[o[o[o[o[o[o\p\p]q]q]qdxdxeyeyfzfzfzg{g{h|h|h|i}i}j~j~h}i~i~i~jjkki~i~i~jjkkkjjkkllllmmmnnnoooooppqqqqqrrssstrsssttuuuuuvvwwwuuuvvwwwyyzz{{{|xyyyzz{{{{{||}}}||}}~~~€€ÁÂĂ~€ÁÂĂăŃńƄƄƅǂ‚ƒÃÄĄĄĄąŅŅņƆƆƇLJdžƆƆƇLJLJLjȈȉɉɉɊʊʋˋˋˍ͍͍͎ΎΏϏϏώΎΎΏϏϐАААБёёђҒғӓӐАБёёђҒҒґёђҒғӓӔԔԔԔԔԔՔՕ֕֕֕ԖՖՖ՗֗֘טח֗֗֘טטיؙؙؙؙؚٚٛڛڛڜۜ۝ܝܝܞݞݞݟޠߠߠߡࡾࢿᢿ᡾ࡾࡾࡾࢿᢿ暾ء߽ЪѼͬתcmnƳźZncڍ–T^s󮹽HRVqeusvnu a"d%.o Q![2,>+=+=+=,>,>-?-?-?.@/A/A/A0B0B1C1C1C1C1C2D2D2E2E2E2D2D2D2E2E2E3F3F4H4H4H5I5I5I6J6J6J6J7J7J8K8K8K9L9L9L9L:M:M;N;N;N;NR>R>R=Q>R>R>R?S?S@T@T@T@TAUAUAUBVBVBVCWCWCWDXDXEYEYEYDXEYEYEYFYFYGZGZFYFYGZGZH[H[H[I\J]J]J^J^K_K_K_L`J^K_K_K_L`L`MaMaMaMaMaNbNbOcOcOcOcOcOcPdPdQeQeQeQeQeRfRfSgSgThThSgSgThThUiUiUiVjVjVjVjWkWkWkXlXlVjVjVjWkWkXlXlXlZnZnZnZoZoZo[o[o]q]q]q^r^r_s_s_sZnZoZoZo[o[o\p\p\p\p]q]q]q^r^r^r]q]q]q^r^r^r_s_s_s_s`t`tauauaubvZoZo[o[o[o\p\p\p`t`t`tauaubvbvbv`uavavavbwbwcxcxbwcxcxcxdydyezezdydydyezezf{f{f{f{f{g|g|h}h}h}i~iijjkkllkkllmmmnlmmmnnoooooooppppqqqrrssttuuvvvwstttuuvvvvvwwxxxwwxxyyyz{{||}}}~{{||}}}~~~€€Á‚ƒÃÃÃÄĄĄąŅņƆƄĄĄąŅņƆƆƈȈȈȉɉɊʊʊʋˋˋˌ͍͍͍͎̌̍͌̌̍ΎΎΏϏϏϏϐААБёёёёёђҒғӓӔԔԔԔՔՕ֖֕֕֕֕֕זחؗؗؗ֗֘טיؙؙؚ٘יؙؙؚٚٛڛښٚٛڛڜۜ۝ܝܗ֗֗֘טיؙؙ؛ڛڛڜۜ۝ܝܝܞݞݞݟޟޠߠߠߠߠߠߡࡾࢿᢿᢿ᡾ࡾࡾࢿᢿޤߤߤߥYm}NRZPT\SRZTSZNU^;AJ=JREQZNXYHQRlpjJOIV`QNYJJVIQ\OQ`VL[QEXM?RH(:0P_UNZLU`SR\MKVGPZZKUV_itU^jAK``k뮹HRV򵩽%,pzꖩԊ.8b!*T, HŚZX G !X A-`1_;A"KC.V H(P$N)S3_I#O!M 'Q J (P.W!F0V 'O!I %QH)Z2cH*_-YD#b#>b#>b"=d"=d"=d#=e#=e#=e$>f$>f#=e$>f$>f$>f%?g%?g&@h&@h%@`%@`&Aa&Aa'Bb'Bb(Cc(Cc(Cc(Cc(Cc)Dd)Dd)Ee)Ee)Ee)Ee*Ff*Ff*Ff+Gg+Gg,Hh,Hh+Gg+Gg+Gg,Hh,Hh-Ii-Ii-Ii/Jk/Jk/Jk0Kl0Kl1Lm1Lm1Lm0Kl0Kl0Kl1Lm1Lm1Lm2Mn2Mn2Mn2Mn2No2No2No3Oo3Oo3Oo3Oo3Oo3Oo4Pp4Pp4Pp5Qq5Qq4Pp4Pp5Qq5Qq5Qq6Rr6Rr6Rr5Qq5Qq5Qq6Rr6Rr7Ss7Ss7Ss9Vs9Vs9Vs:Wt:Wt;Xu;Xu;Xu:Wt:Wt:Wt;Xu;Xu[y>[y=Yw=Yw=Yw=Zx=Zx>[y>[y>[y>[y?\z?\z?\z@]{@]{A^|A^|?\z?\z@]{@]{A^|A^|A^|B_}B_}B_}B_}C`~C`~C`~DaDaDaDaEbEbFcFcFcGdGdGdHeHeHeIfIfIfJgJhJhJhKiKiLjLjOmPnPnPnQoQoRoRoRoRoRoSpSpTqTqTqRoRoSpSpSpTqTqTqTqTqTqUrUrUrVsVsZwZwZxZxZx[y[y[y]{]{]{^|^|_}_}_}]{]{]{^|^|_}_}_}bbbccdddccdddeeeffffgghhgggghhiihhiiijjjiijjkkkllllmmnnnnoooooppooopppqqooooopppppqqrrssrrrssstttuuuvvwwwwxxxyyyyyyzz{{{|||}}}~~~~Āŀŀŀ~~ĀŀŁƁƁƁƂǂǃȃȃȃȃȃȄɄɄɅʅʅʄɄɅʅʆˆˇ͈͉̇̇̇̇̈ΉΉΈ͉ΉΉΊϊϋЋЎӎӎӏԏԏԐՐՎӎӏԏԐՐՑ֑֑ԑԑԒՒՓ֓֓֒ՒՓ֓֓֔הההההההٕؔؕ٘ܙݙݙݚޚޛߛߛߛߜ᝾ឿ➿❾ឿ➿➿۔ٯ䊨ƺܽ࡫IJ⥽լܤƬέ½ԢӬߠڠڢ礼ް뛰ϔȴ橼ڴʖөǜ箹HRXɏwewruxtxuuÆԐeyz…uz{ouvyfr{vyro}y}y~vrsʂktv~zvkvn~ǀ{}wp}yp{}ɀ|oxƀ}mwz~{|||}}~~}}}~~{{||}}}~|}}}~~~~~€ÀÀ~~~ŀƀƀƀƁǁǁǂȂȃɃɂƒƒ„ÄÁƒ„ÄÄÄÄÅąĆņņńÄÅąąĆņņńÄÄÅąĆņņńÄÄÅąĆņņņŇƇƇƈLjljȉȆŇƇƇƈLjljȉȈLjLjljȉȊɊɊɈLjLjljȉȊɊɊɉƉƉƊNJNjȋȋȊNJNjȋȋȌɌɌɍʍʍʍʎˎˏ̏̋ȌɌɌɍʍʎˎˎˎˎˏ͎̏̐͐͐ˎˎˏ̏̐͐͐͐͑ΑΑΒϒϓГЏ̏̐͐͐͑ΑΑΐˑ͓̑̑̒͒Γΐːˑ͓̑̒͒͒Ώʐːːˑ͓̑̒͒͒͒͒ΓΔϔϔϒ͓͒͒ΓΔϔϔϒ͓͒ΓΓΔϔϔϔϔϔДЕѕѕіғΓΓΔϔϔДДГ͓͓͔ΔΔϔϔϔΔΔϔϔϕЕЕДϔϕЕЖіїҗҗҗҗҘӘәԙԙԖݖݖݗޗޗޘߘߗޗޗޘߘߙߘߙᚷᚷᛸ⛸⛸⛸✹䜹䜹䝺坺嚷ᛸ⛸⛸✹䜹䝺坺噶ᚷᛸ⛸✹䜹䙺ݙݙݙݚޚޛߛߛߛߜ᝾᝾᜼䜼䝽坽垾枾柿矿瞾枾枾柿矿矿蜼䜼䝽坽垾枾枾柿睽垾枾枾柿矿蝽䞾垾垾埿柿žο讹HRXȽϷPOKľſľȽʿʵƻʿɾɾøǼǼźʿϷPOKſýо¼ּȿȿϷPOK½žļ׿ƽǾƽȿϷPOKɿŽǿſĿſúÿúȿĻƽżȿϷPOKͺ|چwВƿſý×Ӏ|sɶɄw¹ӞϷPOKhc]  +\XRſyto zt½þ2.)+'!~ȮID>߻ +~xľwrm¼ǰ ¼MICE@;ϷPOKJE?)% ſſľĿ;61 +þ94/Ѫľsoiƹ83.(#ϷPOKXSM +|yt½khcURMgd_־þþ)%  ojd}TOK}yVQMnieUPLNJFUPLnkfYVQ[YTێxup[YTSPKWRNid`~yurnj¾e`\tolMIE=952.*ZVR~zZVRvqnϷPOKVQK/*%þzwrgd_ ¼ſﶱٽ[WQ"  +hc_  a\Y}olg + [YT    nkf '"}xtοrnjsok +LHD!(# ojfϷPOKQLG  rqm,+'rqm540[ZVڭýѡý UPJ )$!VQM62. ׼ =<7IHC񻺵43/gfa[ZVᕔNMI䔐UPL½rnj  =84RMJ2.*C>;XSO(# ϷPOKVQK + fe` +*&.-)DC> + ˨!޸94/OJEس +אNMIxwr½nmh !rnjsok  ;623/+?;7<73C>;" +`[XzvϷPOKVQK +YXT FEA873BA=21-JIEݣ zuo˵WRL |wt¿ + ـ{ QPL%$!ތJJF=85ojgrnkܴ?;8<74C><-)&\XU62/@<9XSPhc`ϷPOKWRL&!! gfb  建NJDkf`"tomwvrTSO }|xJFCϻrnk GB?%! c^[ϷPOKOJE ook?>;)($fea('#ӿľſE@;{&! #OJHۚ +LKH))%'&"xwsVUQ҂}lkg'&"ytq%!rnk嵰FA>B=;[WT=85A=:2.+%! +B=;1,)ĿϷPOKZUO +¼ý jieԣ('#ռJE?¿IDA Ŀ.)' _ZX虘 ! ONJՏcb^ '" ½rnk̡ ڐ /*(831720!62/&! + +|¿ϷPOKſDz½Ȭýɹ½ϹĿĿϹŸ¼ʤǿ®йŷplfľεRQMſplfa\W׵RQMĿٶſľſ<72}wĿ¼¼ſſſſý¼þ40*rnhſҵRQMɱYTNID>LHBWRLZVPMICFA<]YS|vѽ|vQLG?;5GB=KGAPKFQLGNJDLHBMICPKFſýɨfa[40*FA9#ÿľþfa[PKF}c^Y C>9ʼ佸ĿĿſ½_ZUqmgrnhojd=82 ýojd˱¼¼¿ԲZYZȜ}}}iiiǿğ򵰪ĿſĿľУ岭ľľ¼߽ўſſƻZURзPOKľgb\ ĿnieͲĿȶľýWRL~xýǢԗĿݲÿþ¼ɴƴĿſחþZUO*&!ѹ 強_ZU(#ɢʵĿӛZYZѢooo󮮮uuuǿĔſĿփ~xʗҶŽſҴýПՕ½Нþʪ½̽˷ſؠſýȽǼZURзPOKje_ nhh춰)$$߄~~:44WRL-)#1,'e`ZA=7upkǚe`Z QLG hbb500ſZTTe__ soi2-(  XSM a\W3/)½YTNysoi40*# ~ A=7 0+&יonozx}vvvsssuuuwwwӮyyy~~~iiijjjχjjjnnnyyyzzzЈmmmjjjvvv}}}~~~cccgggppprrrsssggg~~~ǿҤ׫Ὼ}w衜¼ȖþᲭýљʎþƮÑˢĿ¼}wΕ¼ٹ嵰|výZURзPOKmhbwrmkeetoo + +#gaa>99:44>:4rnhɈ} &!,("ſfa[؛¼toj 94/nic@;;#!#nicgb\b]X酀z +'!PKF94/ɶ~XSM ojd{ wrm{vpRMHƝ +-)# |trs຺ǂgggttt࿿~~~ooo֍сzzzooo億sss۱ꪪ|||~~~Ճ愄oooǿЍþۉ~Ơ佸zĿźþʔ׏𤟙½ۖꙔ잙骥yſ|~ysþ½ؤþ迺ZURзPOKlga + TNN볭hbb}ww||?:: 2-(0+&TOJ>:4"hc] Ԗ mhbګſ  d_ZĿkf`ꌇՅzܩojd b]X׍ qmgxsnߥ Қomnvty{{{}}}kkkvvvlllsssؐÀppppppzzzsss{{{sssǿϓحȵ✗ܧýŨ½ſýҕý׃~x˕Х׼vql½¼;ѻ}亵ำZURзPOK^ZT |v}|v'!!  {{  +'!>:4FA<ý罸TOJ je_ǟ¼xsn ʑ +`[Vþ3/)FA<hc]{u +ӸID>2.)ID>TOJ~||ˋVQK-)#|qmgǧþ裢fdesqvÔsssdžyyyoooyyytttѣiiiނ}}}rrrvvvzzzxxxrrrǿ¼¼̞ϺϠĉ~҈}êږŋ̏½¼ύۉ~× 󨣝|vܬ޽ӶЬм٘٨䶱ZURзPOKlga ۿ upm¾¾Ŀ׉ þ!FA<⻶½TOJ߼ٱytoԥ ojdܞ  + hc] '"=82 ]YSzuo\XR83.ý nicYTN$ þз qmg +mhbwrm ו][\jjjyyyvvvɃzzzkkkyyyrrr}}}sssДxxxzzzwwwwwwǿΚ˴Ю½ńyěľþӺ{uɈ}Ĉ}•ҏſȞɨގþ¼þ½¼ʆ{؊½龹䳮ZURзPOKnic830XSOa\Yþ Ԛsoi40*)$Ƣ!fa[JE? `[VD?:upkޏؾ +þ fa[{uojd쇂| HC=2-(SNIű"掉soinic إԚomn伺uuu~~~sssuuufffgggdddiiiwwwppp~~~oooxxx}}}rrrooojjjuuuoooǿľþϥ؋ĿЭȫzt~ysʀ{u¼yľЏľĿţþĿƙý꽸ZURзPOKje_٢$! +NJB`\T62*!# okeGB=40*C>9  xsnՍ &!$ qmgĿїܩ սxid^#'" %![WQˑ`[V 1,'LHB ľѰ0+&" +lga҈}!½Ŀ ~xܗpooɆzzzxxxqqqzzzoooyyy}}}~~~qqqdddvvv~~~{{{ttttttqqqrrrvvvǿģѴýýɟĿүӝ¤®Ҧçǵ½ܨȣ|wqýľʹ|׫ͼ޼ZURзPOKѣje_Ԁ|sNJBXTKwskǾb^VPLDEA9~wrmſYTNZVPJE?yC>9b]Xrnhlga¼`\T[XOgcZ¾¹^ZRlh_ۦB=8MICC>9fa[塜wrmľԔqmgPKF@<6¼MIC{vpD?:RMH¼id^ſј[ZZşݱ길䡡⧧fffݢ໻绻ǿĿſľýýſýſĮ}ĿſZURзPOKƻ·þþĿÿź쯪¶"þýͬ`^_󇇇ǿ̼ľýſýſþľľĿԿſĿſĿſýĿþľýZURзPOK¼ľþʿǼ·ʿɾȽ׺þ½ľȽǼýupk "þĿĿľ͙ljkgggǿνľſſþſſĿľĿſ½ӹĿſĿZURзPOKī~ľٛd_ZſXSMηPOKſý٨d_Z¼ľýXSMηPOKʟZVPſĿZUOͷPOKľŦ~ysſſ¼ſſnicͷPOKſ®xsnXSMZVPb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]X_ZU`[Vb]Xd_Ze`Ze`Zd_Zd_Zb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]Xb]X]YS\XR[WQ`[V]YSe`Zgb\A=7ηPOKþϷPOKľľѷPOKľҷPOKýĿշPOKſýſշPOKľԷPOK¼ϖ{~x~}w{u|~z~x|{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||||||||||||||{{{{{{{{{{{{{{{{z~~zz~~z{{{{{{{{{{{{{{{{||||||||{{{{{{{{{{{{{{{{z|~x|wq¼ӷPOKڔOJEd_Z`[V[WQYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZUYZULHB_ZUb]Xb]Xſч|Ŀý¼ľ¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼ýýýýýýýýýýýýýýýý¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼ſſſſ¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼ýýýýýýýý¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼ſſſýĿ?;5ѷPOK՟vql~ys䔐62,зPOKǙje_}wſzt{~ys:50ϷPOKϫe`Z¼soi׿½ýſĿĿĿĿĿĿĿĿĿĿĿĿĿĿĿĿ½½½½ĿĿĿĿĿĿĿĿýupk83.ϷPOKӽĿĿľþƻٹʿɾźʿɾɾɾÿɾʹſں¼þĿĿľý½þݢcab~yuκøǼѻź·¼ľľĿþſݾĿľſľľſú׀zz<66ϷPOK׉~SNIþ^ZTwrmյ<72MICڬ ۟2.) /*%ỶǼǼݹ忻ȽĹƻɾȽɾĹ·ƻƻſþ̹ʮ.)$  toj쿺Բت½¼0+&c^Y˜dbc~yuýҿȽý¼ľľĿľľľľл¼ľþú׀zz<66ϷPOKa\W ݢ fa[ѿJE?ȿſɠ '"YTNhc] ľĹĻǾƽú¹ǾĿҼſص=93hc]ZUOKGA~ysϮ ]YSɼľü।XVW~yuúƽſľſý̰ýο¼Ŀſýľſľ½ú׀zz<66ϷPOK½nic }xr˪ @<6½Ŀ=93B=8½¼ƿʲ ˿rnh ֶVQK澹ľηŹȿĻżÿʫθþþ¼ 40*51+½ʺ|vؿ [WQſեb`aȟ~yuιC>9OKC`\TȿÿԹvql3/)2-(,("hc]ľſýýſ½ξþzt3/)(#0+&40*62,Ԉ})% úƻú׀zz<66ϷPOKZUO&!~ys [WQGB=b]X+'!1,'|wq  +RMH$ 1,'WRL"~x{vpþþ hc_ID@)%!$ vqn MIE;62 ½HC?$ nie٨c^Z wro c^Y*&!JF@½ +ο +vqlͧ\XR }wJF@A=7 GB=<72}wƿͥ`^_捍vvvooo~yuݭ ^ZVÿſyxsnJE?=93YTNĿľľſ¼½¼ľýþҾUPJ +D?:QLG=9372-¼ϒA=7ú׀zz<66ϷPOKýxsn$  +|62,62,SNI +HC=NJD >:4꣞72->:4޿ſˮ(#&!JE?e`Zͽ½¾ a\Y}3/+.)&_ZW0+(830.)&mhd51-(# WRN=9551-3/+?;7  }w{{)$C>9(#ýϧ¶:50)% 2.)72-72-ſ SNI2-(kf`~83.40*»ޘ`^_Öooonnn~yu½ A=7[WS½ľľTOJWRL½ľ¼¼ýп۽ſľĿþſ@<6<72Ы}ľ¼ĿǼú׀zz<66ϷPOK\XR$  ſ +},("SNI椟je_ZVP $ 94/'"51+ý{u +ľmhb!1,'լ 3.._ZZ + +]XXC==3..e__F@@/))rmmtooľfa[꼷ojd{uĿ½ +"ſLHB!  [WQXSM$ ɉvtu̖yyyڔϋԳރyyypppԑzzz΢{{{yyyxxx߼|||텅zzz~~~yyyɈnnn䋋{{{uuu~yu¼¼zUOOJEE,'';55c]]埚 +&!A=7¼gb\_ZU=82Ӗd_Z(#nicc^Y܈}#plf~0+&ܓ;6140*כrnh ĿQLG72-QLG,("ĿՐ2.) +;61rnh(#OJE0+&a\WsnnǾĻú׀zz<66ϷPOKtoj;61QLGYTN 0+&LHBڔɕ _ZU)% <72+'!   | ſݴmhb! gaa +snnD>>.))$[VV=77:44xrr + +b\\[VV'!!% {LHB +Ǐ'"ľΞUPJje_|vc^Y\XRid^ ++'! |v _ZUA=7/*%¼Яljk~̨{{{lllaaa|||rrrʺqqq򇇇oooiiiܐtttŤmmmĂppp~yu״RMH94/ \WW퐊pkk}} d^^𡛛822e__ ~@<6ýZVPMICfa[ſnic׎e`Z ;61wrmOJE/*%B=8hc]rnh&!yTOJ.)$72-b]X}xr~ys%!PKFupkd_Z߅z zuowrmC>9NJD¼62,_ZUľJF@#ˁ|v +~x _ZUyto|vupk +@<6HC=jddøú׀zz<66ϷPOKa\W=82JF@id^!FA<썈ſ݈}LHB&!;61+'! +UPJDZľý͸󾹳 a\W d^^ + + + +d^^?:::44 e__6112--qllQKK kee +id^ľߝ¼b]X¼ѩ=82 +"b]X"ľ!`[VJF@2.)Ŀ՜nlmƅzzzxxxwwwoooxxxxxxxxx􏏏ǁpppnnnooorrrsss~yuʼOJJ mgg ]XX tood^^=93ý ſĿʻ;61GB=ZVP!ҕ nic +边¼~ys +lgaѵſ +kf`xsn½upk䏊 ZVP   RMH¼߽yplf51+3/)~xx:44ϷPOKhc] {vp+'!83.\XR40*LHBۺ'"ytoHC=:50֕ +嵰*&!A=7e`Z0+&wrmο)$VQKҧd_Ze__ kee=772,, icc:44722tooHBB722MHH ƿ ztB=8#>:4c^Yۭ)% NJD(#)% οd_Z@<6+'!أb`a׀~xv{vvv~~~nnnpppnnn~~~Ǭuuuuuu҇wwwsss}}}wwwuuurrr~yuӶӎ"C==(""   ~x½¼~x0+&NJDd_Z ztQLG2.)͖ ޻þѼſ kf`ľojd^ZTwrm爃})$ם[WQMICID>ľLHBUPJYTN[WQd_Z𛖑yto:50 a\W =8262,ſú؁{{=77ϷPOKid^ ½  TOJwrm40*)$ 2.) ,(")% @<6-)#72-/*%2.) +yto(#.)$?;5 72- ?;5 mhd |nieFA=*&" YTP2-)0+(b]Z VQM;62'" id^ϱ ľڨľID>D?: "ſ  +LHB94/`[V=93-)#՟igh└{{{qqq}}}uuuuuummmuuusssܣddd򠠠zzzuuuˀoooyyy{{{~yuľǭzuq!plhĿ~wro þztc^Yc^Y蝘$ Ŀkf`⪥c^Y Ӛߴ¼DZsoi  +2.) d_Zplf ý83.NJDokeMIC2-(ſ˵%! +FA<ojdlga-)#94/ú؁{{=77ϷPOKǑUPJ[WQID>ýb]X[WQ>:4<72{uۤGB=E@;}xrmhbupk݃~x83.<72E@;½竦ID>ОVQKGB=*&!¡NJD+'!^ZV@<8RMJytpc^ZYTPvqntolՕHC?40,72/jeaplhtojSNIľ¼'"(#þӺMICe`Z72-gb\TOJϫJE?\XRE@;|wqqmgώkijkkk·oooЀyyy|||qqquuuaaaaaattt{{{Ɗyyyrrr|||uuu~yuҶ +ԗid`@<8ZVR}yNJFB=:_ZWۄyOJEfa[ +XSMje_(#ſ  yto {wrm 䵰ojdľOJE+'!§쥠id^ (#JF@~xx:44ϷPOKľ¼¼ýĿ¼ľýȿ¹Ǿȿ¹ojdþϘqopᔒiiiooohhhqqqiiizzzuuuuuuooowwwvvvtttdddtttsss~yuݱSOG ZVM镒?<3=9173++( ÿvql  xsnľ"<72;612.)*&!TOJ{vpVQK>:4 VQK +Ӎ Ŀػ oke +.)$A=7 + YTN݁|vſGB= PKFID>%!ľ +GB=B=8'" mhbje_ =8283.~xx:44ϷPOKýľ½ſýľ¼¼þľľĻÿʿżȿȿƽͦ SNIſýþý٨cabវʧᔔ󞞞؋򙙙ٓhhh󔓔ʜף𖖖񙙙~yuþѷFA<Ļ0,$jf]ȿ{wo.*"A=573+¹ID>":50þ`[VB=8,("(#þLHB%!3/)72-¼83.棞83.ʢ51+40*Ŀӻ83.<72zqmg,("!Ŀ2-(3/)ޤvqlhc]XSMqmg  =93~ys=93]YSPKFú؁{{=77ϷPOK;ľþľ»½¼ʿøƻÿȽƻּ¼fa[id^ſپſſľ¼ýĿמOMN~yuɿʿʿźľ½ľ׽ڸ׽ľĿ2-( ľýʿú؁{{=77ϷPOKýý¼ľȽɾʿȽɾʿǼĿľ¼¼ſľĿ¼ɝqopɅ~yuľ¾Ǽʿſýxsn ~ľþ~xx:44ϷPOK¼ƾԔ``Y׸هϲŽʒSRMڂ|983˴NOJſƾצdd\tsqќºŽƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾǽþƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾƾþþzyt.-)¿ºӴNOJſʜWWOyxvʊGFBʴNOJǠvvoސkjf984വNOJýÿɹoom@?=432432==9762652<;7=<8762873==9=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=;<=;<=;<=;<=;<=;<=;<=;<534:89<:;867756<:;B@AFDE978322756B@ACAB:89867>===;<=;<=;<=;<=;<=;<=;<=;<=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=<8=;<=;<=;<=;<=;<=;<=;<=;<756201A?@<:;B@AGEF?=>201˴NOJ½յſNOJ쵰RMHgb\TOJID>FA>7RRJ??8QQJDD=IHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDONJGFBCB>FEAFEACB>CB>HGCNMJIHDIHDMLILKHGFBED@HGCIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDFEAFEAJJFGFBFEAXWSdc_[ZW=<8GFBMLIJIEED@GFBIHDHGCIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDIHDCB>DC?ED@GFBGFBFEAED@CB>XWSDC?KJGSRNUTPPOKWVRNMJXWUVUSWVTZZXZZXXWUXWUZZXWVTWVTWVTWVTWVTWVTWVTWVTVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSWVTWVTWVTWVTWVTWVTWVTWVTVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSVUSWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTVUSVUSVUSVUSVUSVUSVUSVUSWUVWUVWUVWUVWUVWUVWUVWUVSQRPNOQOPYWX`^__]^XVWPNOZXYYWXWUVVTUTRSSQRVTUZXYWUVWUVWUVWUVWUVWUVWUVWUVWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTWVTVTUVTUVTUVTUVTUVTUVTUVTUUSTa_`XVWYWXUSTVTUVTU[ZZB?9JHA\ZSHE>992UUMýߴNOJ䭨;61}wÿqpmشNOJ糮2-(ͧᴴֱNOJ鸳51+½{xsŤʯ}ͱNOJ蹴94/ſȻspjЭ¢}}uⱲNOJ鶱40*ѿurlϣ̩x߱NOJ쵰2-(¼̼tojѣ¼̬zӱNOJ趱72-пvql֭ɮ۱NOJ嵰94/ʽrnhɥ~~vرNOJ鴯2.)~ysͪʨwٱNOJ豰32/͛~~yĿýĿǢ|}wĿĹƻʿ¼wroӫӖ{u͛wrmڿĹʿlh]¾ȽzſҺ}upkźƻ·ʿÿɾø۽¼þΤ۲ONJ豰32/  +޿ýĿĿ +!$ Ͽý½ľƻÿȽź¼¼wroӫſ51+LHBߐ$ ſĿſźʿԴ)%~sÿǼQLG2.)þ  +źɾʿøɾǼʿǼź϶þʻ½ſſΤ۲ONJ豰32/#OJE2.)ſ¼宩ާ94/؅z62,½強ĻĿſ¼ſwroӫ #]YS ¼Ļ¾UPJ$ ý$ #,(" ȿǾúúſ½漷ſΤ۲ONJ豰32/e`Zҿ뮩PKFA=7[WQſޙTOJFANJB|se`Z d_Z~ysſhd[ża]U¹b^VLI@PLDVRJHD<зqnelh_OKCWSJD@8|sȿ݆yNJDYTNxsnA=7UPJJE?YTNȇ|NJDΤ۲ONJ豰32/upkᐋPKF,(" $ !!=82þ  +ĿĪ94/ PKFC>9)% ! #$ vql + +40*ZUO zuq#)%!̃~z  +PKH   ij|vwroӫſľ ojd94/MICҢ ;61 /*%ѱ   +}xtWRLſ62,ynieĦytp   d_[941 )$!%! JFBZUQ qmi  (# plf~ys""  +TOJ3/)ſΤ۲ONJ豰32/)% .)$plf}id^SNIķ)$kf`plf2-(렛72-JE?ĿҚ:50 VQKſ&!NJD@<6,("# 3/)kf`FA<} ~zۯVQMఫ40,! hc]ZUO$ ¼wroӫje_;61D?:|v  ɪ +a\Y,($lgc3/+lgcSNJ>:6a\W ¼je_ +ID>|ws៚{vrokg߹id`:52 _ZWKGC RMHojdmhb¼ӭ¼Τ۲ONJ豰32/   +51+ſ|wqJE? 51+ +2.)40*0+&40*2.)a\Wϳ}w .)$Ŀ +]YS;61>:4%!QJE?:50upk +D?:72-}ww󖑑gaa/))¼)##<7272-0+&B=8½wroӫý\XR83.YTN KGA-)#2-(LHB% }ww1++611#a\W =82|zttޙwqq ўľ ¼շ"ICC⦡ `[V݊Ě^ZT򏊄 +ýΤ۲ONJ豰32/ d_ZſwrmA=7NJD>:4OJE[WQ/*%'"B=8GB=JE?GB=ľʊ@<662, hc]RMH  ZUO@<6)$c^Y HC="uoo٪ý" +&&933)##-((RMHĿ޽ľwroӫ(#ZUOC>9-)#1,'GB=||0**KFFMHHICCJDDa\Wʪz١ýojjϦľxrrަſý ZTTUOO \XRd_Z~ys#62,QLGvqlþΤ۲ONJ豰32/ ]YSýje_ ý a\W mhbC>9# [WQHC=/*%id^NJDupk +ýKGA;61pkk ޚ ~xx׵*%%TOJID>HC= ľwroӫſb]Xſ ~?;583.+'!KGAſZUO)% UPJ$ þؚ }wwꚔ +uoo +⤞ ᳭QKKgaa NJD甏Ɣ +"nicΤ۲ONJ豰32/\XRľ.)$40*]YSokeyxsn ,("[WQsoi#OJEplf2-(fa[OJE&!plf83.!܀zzܲɇ 2,,=82̦nicwroӫ +[WQ~ys?;5ٯĿ gb\þUPJޑ![VV!KFF;55a\W¼ yto!þsnn ̆Ңľ ¼+&&`ZZ +jdd94/$ soiↁ{!п62,1,'Τ۲ONJ豰32/&!`[VΎ + + SNID?:#zt|ľ|wq +-)#upk 62,3/)2-( +GB=62,!soi +JF@.)$okg!ʧ wro830LHD)$!HC=ɾ+'! ľwroӫþ83.WRLۘZUOϣKGA +{830 JFB&!ܽ<73je_ϻ֕94/ a\Wڹ!FA=!e`\ +ը  ~z PKHZVR@<6e`Z¼~ý̔ 0+&Τ۲ONJ豰32/˯ŴijʼſýſҴľſ͹½ؿ½½Ԥʶþӣ˼ý(#@<6wroӫ͢¼גֲد¾ſ˭½ɩҭ­Ͱÿʺͱа׺~ysΤ۲ONJ豰32/ľ¼¼ľþľ¼ĿҿĻ}xr)$|wqwroӫý¼ȿ¹ú¹ȿμƽǾȿ¹¹ȿ¹żùÛYTN2-(Τ۲ONJ豰32/¼¼ýľ¼ſĿƽúżǾƽһRMH zſwroӫſþмṴƽÿǾżý̵ſ޺Ǿżȿ¾֓ QLGΤ۲ONJ豰32/¼ľľýýýýľӺֹƻ¾ʿƻøſwroӫ̻¼ſɾ·ɾƻǼľĹη੥·źźƻƻʿ¾ý½зΤ۲ONJ豰32/¼ĿĿþľþýʿƻ¾ٶź½wroӫýýſ¼ĿĹɾɾʿýĿþĹźʿǼĹɾɾ¼Τ۲ONJ540ɭ赭ԽԽսս׽׽ططӻӻӹӹյյӻӻӹӹײײԷԷػػллբբծծѽѽ׫׫ᳳ}}uѭսս۶۶䩷һһҽҽվվٴٴֻֻչչֲֲӽӽҾҾؙؙԽԽҵҵԲԲիիҹҹ֮֮ٙٙϹϹοοיڱNNL10+ʮ鶮վվ־־ؾؾٸٸԼԼԺԺֶֶԼԼԺԺسسոոټټѼѼ֣֣֯֯ҾҾججŲ}ϗѾҿܷݸ媹ӼӼӾӾֿֿڵڵ׼׼ֺֺ׳׳ԾԾӿӿٚٚվվӶӶճճ֬֬ӺӺׯׯښښкк֟{zv౱NNL滺872ϷζȞǝΞΞֽֽ࿸࿸ɿɿȽȽſſſſǿǿοοˣˣɶɶȼȼȼȼȿȿƺƺǽǽǽǽ÷ԶԶѺѺ̿̿ɹɹɫȪĪĪά⾲˿ɽȼǻȵqqjͰɽɽūƬѿֻֻſſɱɱ̣̣ммɳɳſſǪǪɶɶƺƺŶŶ׾׾żżŽŽɶɶɯɯӿӿɬɬɶȵǽȾ̫~}yϱNNLڵ540yxswvqwvqwvqwvqwvqwvqwvqwvqwvqzuozuozuozuozuozuozuozuozuozuozuozuozuozuozuozuos}fr|evNuMopoqw}Ox~Pkkdada]~]~mfmfytoyto{rs{rs{rw{rw{rs{rs{to{toytoytoysuysuxr|xr|{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sposos|rp|rpuvpuvpvuqvuqpwpwowow|rq|rqvvmvvmyukyuk{sq{sq|qy|qy|qu|qu}rm}rm}rm}rm|qw|qw|o|o|so|so|qu|qu}pz}pz}py}py}qq}qq|so|so{sq{sq{rw{rw{rs{rs{rs{rs{rs{rs{rs{rs{rs{rs{rs{rs{rs{rs{rs{rs{tm{tm{m{m|rs|rs}xR}xR}pw}pw|p||p|{vd{vd{sq{sq{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{spyujyujqpqpououpupuxtqxtquvpuvp{sq{sqosos{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp}pz}pz|o|oyujyujxumxumxtqxtqytpytp|o|o}sh}sh{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{qy{qypupuoqoqpqpq{ru{ruxtuxtu|rq|rqqoqo|p~|p~|p~|p~{tk{tkytqytqyswyswytpytpyryyry{tk{tk}qq}qq}qs}qs}qu}qu|qu|qu|qu|qu|qu|qu{rs{rs{sq{sq{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{spededi~hi~hqymqymytoyto|uf{te{vZ{vZsZt[odpewvrwvrwvrwvrwvqwvqwwowwoyyqyyqyyoyyoyynyynxxmxxmyyqxxp~~vxxpzzrեzywvus~}{srpjigsrpzuozuozuozuozuozuozuozuozuozuozuozuozuozuozuozuoyvoyvoywlywlys}ys}zurzur}w^}w^ppkjotosuusuusxtqxtq{to{to}rm}rmqoqo|rp|rpyssyssvtwvtwqoqo{sq{sqvtuvtuyssyssqpqppopo}qq}qqyssyss{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{rs{rs{rs{rs{ru{ru|qu|qu|qu|qu|rs|rs|rq|rq}rp}rp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp|rq|rq|v_|v_|o|o|qy|qy|yR|yR}j}j}rp}rp}qq}qq{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp|o|o|va|va|rs|rs|qy|qy|o|o}o}o}rm}rm}n}ntYtYpsps|so|so{vd{vd{sp{sp}sh}shrdrdll{qz{qz{ru{ru|qw|qw|p||p|}pw}pwrjrjrkrkoyoyxpxpyvdyvd}v]}v]mmozoz}vZ}vZ{sq{sqxrxr{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sppopo|rs|rsxsyxsyxsyxsy}qu}quqqqq|rq|rqxtuxtu{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{sp{spzwezwevwovwouvxtuwxswwrv~up}to~tkvm|yr}zsuyxswv~y}zunkfxupqpm౱NNLڶ32/zz{{rryyxx}}vvttnn{{}}ZZbb}}{{qqvvkkkk{{kk{{{{ࡠookxx||ttzz}}xx}}{{SS}}JJ}}zzZZgg}}{{rr}}nnxxrrvvzzwxޱNNL佼541ᠠܲ[ZWԣԱNNL652ߓVVNТWVR߅}cb^鱱NNL⧦DC?ԁyWWOʱjiehe`mlhױNNL賲875lYJ7        + +'     + +    +    + + + + +  +  +  + +    + +  )       + +  + +  &&##09LUƾƁy]]VӵZYUZC*, ' )   + +         +  +     +      1 3  2/(( +!  /$! 2" +)"    + +       # + + +   οomhsroޱNNL賲875{h?- +      + +   + +       + + + + + !  + +  +($  + +  + ! +      + +  &&##09LUª~~vZZSϥed`W@ )#   + +            +  + +  $    4 2 + + +2 3 ++ *  2 0) +$.3 *  +  + +     +   + +   ǸƼgd_onjױNNL곱867rg>2HJ$% + /,  " + -#  +  ')+ 5 9 +       + + +!  *) "  2%M@Ӑ\[WڂzNNG˫[ZWTB   +  +#   +   +!  +    + + '   5?  DžμʻǘYJJjgbmlhѱNNL곱867{@5 BC  27    &#'%2)    $-#"&67   +     $ --! !  + &2%M@юHGB)(#KJFчLLEǷJIEG5     "" +  +       + $&  "  +#!  >G   &. " DžѾoqgE66;,,omhomhkjfֱNNL곱867݀=[ # -C#a , ,EH<#U!  +-5G202!%  ͈ь'!  /#CJ9H + +~(& + + $ 1-kX62 + ;?!Y$[)#n]%0!ro;L 6/ + * 2)!!!!)2DMyxtnmirqmjid‡WWOŰhgcMa,W&P))/;-/)8oR"L!K 9#@[%e (&       3 : ȑܤ""2)JI  +4/ %((" FK\ +W (00 ٢̕$ !!5] 9G$M|̀ǰrukuba|{pnilidjie۱NNL곱867>==_]^fdeZZYEL7zyDc +R + - EJ#!:,%!  J_  #;27# + +Z= ,oF.F!1&Q $@ +Q% -d,F3-  +!!!!)2DMÿǿՇVVN˪VUQGFDedbJIG𞞜SSQW@UoYnL`$MG9 + /*64(@  +-$Z*$ +      +;) Z !! +   DP +$ 4!  +Q=La % $00 vV)!!I#G|̀lidookұNNL쳱869ZY[,*-⥣VTWHJEن!(7\m9Q-!5Oeeff)<aj"E C                   + + ))`\g66 + + +  !)*\*3]!+ ## + + + + + + + +  + +   Bc".$1(                  !-NA)u>u** + + + +                :)'Fh)%!Y{z0Q                DQ6'[ &$2Qxc&-5'U2$#KT,'"mG A +   + +   + ,* ):                ,H7рxUUMЯ\[X VXS@B=Ղs!F#^^8fBp#)J + + + + + +4-%S-)h P$Th ~l_ ">G=(                != )2"+                    uF$$1<u#/                !ac#)o8QKnw*%'"'2,+shQkqqx)8;JCZ^Xpjsj0ĺ& *\xGs\p'"22   C C vHx95                $<2&dY%#]++                                                                w~lidwvrұNNL쳱869cad!!#!$ !tvq,Xh4[R4_/ZKvLA=3yZ$r*M!D                    + + ))%g3o!m .5 + +' /Ny$>$N J!.$1  +## + + + + + + + +  + +  Jm-:*6&                  ={)+w/q0r** + + + +                -7&Ik + o/P                -JW=0e % _ +Y=֥/ǖ9'L&*2$˦W4G2ժoF~&q#H B   + +   '@.Q 2                ,H7ܵssl]]Vήed`DFA +ikf~~{|~y  |n1bWc2TBe + + + +20!Nwr#aD ?P%u#v$w$* 0W3F<"                843!5 + +                   q-"*@3>u#&                 OR"A }"яhqox%!*%#3E #{d0ho%(7$;4ƿnd/rAkT)22   C C "%N .*                 221o]+,h++                                                                w~˦da\xwsᱱNNL66=l[m6'7s`b!!AoJKJ9 +2 r'N;6%LJ o6'pd8$*Y?ou z+ceuFxS.-~%ʑ~B W5HEm.Yg2ŃCL$%#̏…! A-+&_Tf)",.84D#2.0 *Ͱ1g2h*җƌx-/?A7(.]LÊ՛ +4 +?5>\9X#d%f !4H>.5I;A3")&5(*=> 9 + #Tod@4*yk%J+PAG.x*t*DCU0Aɉ T5π%bT t .%,"++?4V%#/cYJ{Wʤ8Z?*Gs,_1d<@'  J)(2Šr&2`/4-Þ)0 *_bC א=Ft(#&!zm&r@ʏ;0>ZK5>;+5%0a7ć5… ?GJΙ:n3f)14; '-u#jo{f2z96SOL\YV`\ZPKH`[Xa\YZUQCSJgwnjJYgGVֲ`^SVUScy2DY2W#I-;>/*%. sBk19r,M%@(C+Z-\5q=y0tO4:"i/wU4+$}'V NKAb^&a5q%fX4K2JSE"qB_Nd;4R;({%#0%2ZJ̀t56().*'4$نn,7)329%/C + +'A:ʢ+a#v% -׏u42421>>./.""w d4Z*O2* 8_.& %=v3m"z#`5t +^bKO r ɂ +]K΃o9kvu\?ip2(8A(($$ ܦ-v'o#V=pxH'd (##څ["!=!.¨ EI4A 'ПÓ6z4x5J `>*J¦  }03\U04yA7A5zʔjzL_UATJcf_UXQ_JMePS`]YYVQkhcVSNpol߱NNL66=YIZ)*zgi,+)>lGHN==)}O&<_Jm0=!_bfor1/^ZJ$EZ=Q.OMK_ SWR.As aMa+pqf]R q[J5uePCkWD ^m. H#'(,,Z`'if$ +8$x=sYl&P}Kx+-('mnRq6m"`^(\j=4523gP\F +u>|9=7/4d2:47?qz +vVb&ocrmlVU+$d]jc#J +  +>ZOj5["D';'PU% Xjmfi:Kil/gb;FsNhtK\Z}5W )6k7_4q*`}Y-ݷ#C{udTXu1de.bY3_L~k&[+AW!:%*}ZnJjQj')-?B%L!<q/-˅1,j#QTd*F2v TX#DA`]8C~5bP["3Sm6Oh]iN;j}Zey +WbWZh#j  # =:鬋yYhּ`^S+*)#B)f|4La9L3C< +nf|mZJ(7  +Z==B- WD)>C_!Om]z6AB* \Sg,-rkYR|Mo@9aTE8C:o +"\ R|`>WP %t +t^{GP% AoZePnTIC50T@v012+- :i|o_ !(!=!3NoO*9o+ *|7p,me;:13Xe1HI! E + ++7!\&vwZ/H +0ً5\D: S"I=ER3 ++Z)-ͧg[0)<,ca, + ,$u5p1sb^M ML~Xw2w/U5_{pJq'!Sg19r)r&AJMn|8H 2AQr+~Q\jQaF T9&OczoHX1o<QJd1,/b)rp~J   .1uoW* }d!2yn?Z(Mo]SB(*bH j""o8]jHxVDJG|`pBIj <p=}n~ӈ{zvϱNNL۵:9&vbvf/ =aF21= 1=]IkYn';<A g yK4k@&Ee(1 ++9%~ C"^1π>;ɜ6ė9"Sәt=Z4y=G#^F1#mm=^%L7X}<7bK5tXI  S0dEŤ>2Qo83p_vL>× 2!!6(>=}EE\EE O;:KP<HsMR39r02+HI".kY^֪ !OEH8G]J>2w 37bM3ѓmz . %6dYnL-Yih:ʇW|wsr#>Ea a7=ՅXFW8 ^@qW1(+3 )0"xB2%Bȵwu$2sMHGiI\ o8%̒{;q2ZY4nI*IG98N"2&9e7+o.M2"FB[X TCJ1:^4ӏp0n8>-/nJB98A8@!67^*J$\*6K4J"D-1<}./N'#/ +9bU)T!K=IֹgF^<M6M8o7*[V !k , 0,y7 [8ͅpOw.#4;n#KWc08JZ ,<l1phY6-u4ІPSR8>,=2>|*-|+IJ@ONxIr@$N?9%.PG#ko]JB­=2VDLg5&ol+si@,Ө2G ' *&M7Q^$c}%=eo +*sXT@1p"7ӆg2MKu7&! *' #'qCI Ї~8kTKaDJ:M8*i F_32Ŗ8\&Q^!!O<LW{Y#Ġ$;S)G2\кgG +-Z!FL /)i4Y<JYEb1A>Р}O(p)= ! ;^?|Y,ȣCy2s 2\PD̿=AY'Q <21t242w#m6Ɖ%e 12[J@]fl8CЙ`o1.Φ_1"Տw4eD*)Bp 5:K0фw.aFŸQ*+ŕm?JbB2JT)A2JA@mJD2#vvsoed`ڱNNL۵:9&vQeU.DiM6"CbMoWl%9CJ'!m$ T0fFKGg!AI 3 72r5? YS,>O&{P2cAs ֜JE$2DδE-E'q :W"N9W"[Gr@^Y5)gB+fU9T5*Ѱ+ #Ki!?~o#oF9 = 7.B 0Y0 ߋ|,Wo hbPT0>PD?!1[Xj2O%| %1I$tZq\Jo˟&2~>}+A?4w7*""46aNEep+!?÷\QgFBġ"GVv6k+(W ++0F6~5m~<!E<b}OX.w<"< :/'k1: ZIK,nYYY~m5JouH,ԙ9Ɇ +ZG77p(*DBF=S<'1\@`eI9ӵ52_[ K:A68\+Ʌi)j4N̔Dp$xMGP_0G#GoBc DV5BXL:\#59!4u"}zh?3$E @!+*´*+",U+JGgʽǑsnQ\Ѱa]UŬa_l]?X6>6M1gD=ſe_X )#HL [ tCk:n"J5@L+]n9.;3aY)x>+sYx2HG6H@> 99v+z)]^K_vZ'Oyیg*+.nrH44D> XL2L+ +1 ~jG "ǜ.B( 6$/& F +9!2*%")-ZL30 $ےBV?I"d/@FMBE:y3ٝ|CpD3Ɨ1U 4Q^. $! x?neC&ǣ-)QQ<C/>b42)1n)$V CJA 55Z@M[1 r$;RtG9$<=0$4PԳQ2pM4ѬAw*k'%iAY4.Y2M1.2x"lkn3 +zW)i&'S[U"I֟tYid0#8#בx5oN;à59g+9WF!s],^930ʚuHWoN::C1J>WhJ,X/# t}lid^]ZױNNLָ=8'{NZQ(3*Qca& !7LcCgR4! *%0>r&u" W.GY?CHb/MI~/5QK4P3O$2F=`j=>qO-~-h$"'BZe1~=h/Z* KՄkflJ#;J45>ʃ>#C)s47^ZT;10+NR*i0o>KP]|E"3,>31n-2 ԤX+ 29ZZa2w&.ވ)!S+H-J48AE"p4D8=b'@1c +!$6J8$ Z +(G3,>,Α|AdX8˾0P#R=1ì[̧H&_DD̎w<pWr#Mo'J'JEDR$)rMQQ)ɛg< a=H. gf27o+pBPKqmU8Ɓ 2(f); ';Qn"ÿԏ{}hUWαc\WŪ +󒄄p5UxJK.rF8r>3b1=+Յ57 "U<Qs+8{;{ 1<nZ` ..g7AМq@t)/o]O%$0b1Wi%0h"Y)FH\B#ɭ*r7AT.@QXsLCQR E>2#)I~#(! o\" nJ0&¥(S4#) #;+aA=H>^4TAALvs5p]F0KĬ +$=,EMJ)Q(m:c)gVG$=";n7r&,c85Ƙ1Zl!o$+'dp|shJ2Ŧ$8D0!>Bb!30Yf +hB,p4o4pS"l?@A`4C8̌>Y1A +v06!E[$~4[Z1+X!b".ϋ{:jA”2Z 8vk<)>3I(!H8K=>9̀t8x#8KQO){2BX;U_99 L)(2A[`!DpQT?4N2flB)!7Q//@Ap,.E* J3 ;VOT XS?=:4k?| 1- +A"<I +;+ Q <_Z-AtRbT +0!C=Un b 7?xjdj3 WgV,)o*۔Y 2AbU*:`[bIUѶ.(a,L"`5B&- #%7"C05 +͝Zx>_J{Fov4)36NTL$Z0T/5x6i%7/w0M #A510{5ؚ`RF"De YC.KI'|RI–>Ňg,k>Y4:[)Gl3=K#)7TjY)ɛdG' >6/c[66o)y$e4|-- |>h+R2Y4Jq&ωuw`MOѹc\WŪ +PCCõ`SSƸVIIʼ:uZTl(6YFI[G=x>4_.~2+Յ( 2%sa#ȵ6J#5L܂3gHj$`4t*Iy' C}9)k:q&4s<h=JXP8:>'2Dy'Gf6 pY=)U)0:K6%1uG$D=)_5{hT=Et$.^6 :>" +1,@ +U% 8%gMxVQZ3Q9xIW5Y*28!'nB7Ț6ėxM[,{ Jl H\TgJ# +/;B:7_!qI10d~(@/T @2R+=.S_<[)W=:$o2=$5>^2}?CؗBp!O<4DP:r[T-{ -N&c%.v#jB v/>ReFɡT/TACl24y3$;25vql:7Ž*F]10B3!ot*|I>!W)*Wp [1=FBQ"3K¾oklIm)$ $ɌsplnmiܱNNL춮;3?o^s-1g<8EYT5ID:MI񚯪Xlg 7JF-0GZ]xCTH!6nT( B}5M? Y8g5h#ڮi?mult-#X.u/tQq=p@sdjp21e1w2BV2>gZUImDyjC41X`vsHRo)'vs@)t$!'*mj=vryu#%ZSnZp2?.<:3vp]Xs1-˅X9wITHLc&+!3o5gkqKU Sm5q{dm" vIZ+<0A0)>$KI[#LY=x) ++OsoTjQJTe{4K5Ma\?< G0= IP_g ' Dja6N[$\diUM:l7{\H-5+_9$^I!#; 0,tMZgpS\ L +069(j;YkO1ynIgjbrVf%2;HRaiuEn*<Qv_E} N*x_NV+&VHz7yhfU02N@7${\Bo? bEqb +`4/;x2=8ړ,Bb1Pƒ66=zcjpX-^Sk^5*p;&'HCU5¸YPee,Kf'E"b>܏e\XƫdZY (# DXS _so  9pS?DJAB[Zmt4r" YFG%90D%_#LzHuqhyo.A<N>L*<n_!i a.ǧaC[E"m\SNDbs1x5}[N=jZ$̒q:D!MN|<2tq9G#%KqMxTZJ=Zl4x?fL2! u +40}dfMSn7T3k_wCZ#E J!=tLH"\(R*:zr5L4JgMv\bW?PBSdK/(9tR)Y +_>ykzlo)7u6OZlv!oq_act6ԟLvHa{#`)=0{IL~iiTA%Q"+D(VnqMm.QTvy:~P~JAf4o@uopg\S6!fLB4`%cyZ]n))Ub/K?_S#CrM}# BT;iij'T^w\nodsJZ``kkCs)j2l;=)Kgz| "aUC.7+3o\p^^a5`twX4n{  ')8KLTX"}LY^$}=I%j5ccYrB[bO{^W=SGK+y>1ˎ)> 7DɼźǼrokihdܱNNL춮;3?o]r+/13J^arN'7('*"g# J I + '& "'>5K] +>*( 2 !d"lJ M ')1 ' CJ"71'(}, NF%#<(O6 ¶+H; +$#$rZ0))L.R7%9F}m$-$TkUau +U$r E-jvv &10o@/3&=o8!z9zP9zP3/Ls)N6>E*t>72ZU3tӇ~y]UP̶dZY mg./g3y=eZ fOlł + Q; $M=7)|@n=l@/x"#^ +}@9|{Aw)+VO #ls +xZcV_KV3<?&v,"*xa2q+ 6${1$>K62!G6)"(2,)Ū)e|!."&P8 8v3p  mw8  ##{v MZ+ &1֡g =@ C/ r#v '(l%-i)d'_RIE(qQm0Cp4C`tb,0+xbs臀s  gg33@@IIIIZZ--**[[==LL$$VV55??oo55]]@@ii7777[[FFIILLOO%%IIGGBB++@@55YZ|r^]Дz))CCQQ nrnr==::`eV\'%JHBB++FF``))``--66<<??@@==))\\XXDD==33II^^<<nn77DDOOggKK>>ZZII@@OOeeddLLiitt++::DDQQJJ??--++??SS + +DDUU++%%QQ::Zg-2dZDE44>>@@<<>>jjQQCC==lo + +9/o +kkqnt +"%,)((\\44! ޜwUXMŲh^_ͫ|j[Yee77BB--XX^^DD%"PSPMsTlL}}qrVVCC**DD55<<PPAA<<??bb==22[[[[33??BB;;77XX::[[11oo33}}LL99JJ--@@<<??''$$99SS<<iiee66llII + +LLii[[giSVddFE!!OOIIZZ--@@++JJggKKLL<<33II55))VV""LJÎVOMM66@@==::77GG9977ddDD +t|a]jCB))QQ//::DD==bb<<++--LL::IIA03*&nl<<EE..EI52lpt_Zd? =EF=E,ӸlidmlhٱNNL>4CZo\HeGml䏄D:=3/iz싄4.*:*:// O O \ \eeeevv +I +IFFxxZZii??rr Q Q[[QQzz\\SS S Sxxbbee +i +ikk??ddbb^^GG \ \ Q Qbd~mm"D"D^^))#m#m**,,WWTTdjZd 13^]^^GG +b +b}}DD||%H%HQQ +X +X[[$"$"\\XXDD"7"7xxtt``ZZOO88 +e +e{{XX +S +S``llgg"9"9ZZvv +e +e \ \ll 2 2ii77"G"GVV``nngg[[II"G"G[[oo++``qq G G"@"@nnVV w +ELtZXKKVVXX S SVViiZZUS++((S$Jo +mo vv}."4>=">">tt22KK(!៣wUXMŲaXY- 2SS"2"2\\EE X\JE~yv +)U&R ["]mu[lidmlhٱNNLԷC7/͜bg]by^irwvvvvvvvveomwuywr}nxlvrwbg}yoap],!//= += +<<<<33>>++BB&&==**44663355884488<<88335522662266334466667!7!999999;;;;::EBEEIL335*5*>>MM<<II99++=*@-DH<<UT8 8 //444455550077AA66FF++DD,,@@9 9 00EE55..FF>>//CC>>..;;##DD//<<**AA22>>//66KK4466//884400996622;;==;;))AA33EE2288??0 0 ==CC9AV~m|ZWuuzqzq}V}V~k~kq}q}ssoowgwgwAu?hpjrxzvxew_qy|wz^aw}zuSsQxoxooov}v}\\k}i{vwL\Mʳh_d}zvplq{twywvwxvvvvvvvvxg{b\j|gyoVioxjsr^DN&V] ;;;;<<<<;;663322QN7(8)JJ$ >?24JLKL?? <<EE**::JJ223355226622663344>>22;;88330099..<<88>>668899AA55??66//0 +0 +::>>;;66<<==1133;!;!>>@@22?@**IHLL&&22EE33998866669 9 ::9999>>::>>8855660033;<>,7%<GNH==GGBB??55//443399225588>4MW32]c 88<<??5544558899884400//IB~1*?;k|tOOoo~I~IggqrwxpkwH{Kgx\vn|s|G~IĂA>xmynlidmlhٱNNLԸC7/ABZZ+/37>H+44D5E4=4=4=4=4=4=4=4=BLCM?J4>*3)24=?I49$)>38.D#U3S"Mc,c,qCqCp*p*p1p1ggs s _/_/w"w"ZZq q ];];iikkggjjm!m!iim4m4qqmmggj7j7f5f5kkf.f.kkg,g,iij,j,j"j"kSkSmmnnnNnNp.p.p)p)^%]$i i ppppf5f5i]i]qq;;p$p$~~nn_=_=q]q]po ][s rmDmDcciii i iii i c c k=k=vvkk{A{A__x/x/__t=t=mAmAddz5z5j j b,b,{{s$s$ccx x ssb&b&p"p"WWx&x&b=b=p2p2]*]*vvffsscck4k4i/i/kkc9c9mmi"i"d9d9nnkkffppq q p*p*\*\*vvggz&z&f4f4mmtAtAdDdDqqx)x)m&u.2Y۷شvwL\Mʳg^c[famIEC?1;4=6@6@5?4>5?6@4=4=4=4=4=4=4=4=B2K;820*/@1B!2+=1:6?O<4!c:sJt'}/ppppppp*p*pApAkkggf=f=kZkZ}DFY=X=pp^C\Apn jjt t S/S/p p zz\8\8n+n+ + +e-e-ggj"j"f f k7k7f f kHkHg2g2iJiJq3q3e!e!ool +l +g"g"d(d(nnbbppm*m*sskAkAmJmJn n vvjjttk"k"c!c!dCdCn#n#qqoMoMj+j+ppp p ddg7g7oToTr!r!t%t%eev)v)]]|{ZZf,f,z&z&g2g2nPnPmmkkkkmCmCnnm"m"m m qqn)n)q)q)lljNjNkkd/d/g;g;_*`+gTbOfmqm pp{,{,v;v;ssjjc1c1i i g=g=nnffjjm)m)g5a0}V+R(-2m/m/p)p)ttj)j)iijjm&m&nnm2m2iid)d)cc,z(_%Yq4x;lidmlhٱNNLٹC70521. +  +   !! + +  !!))  ##''!!   + + 22(( !!    ..;*iXowF_MӶUPW2?"/  + +  !!  + +    EE + +!!##!!..55''  + + + + + + + +  ##+)..  ((88..-) %%!!!!!!  "'ͿlidmlhٱNNLڹB6/ï)&      + + + +%%!! + +""%%,,  + +**""%%   + +55++ + + + +  %%   ""    22  ;*lZowF_MӶmho5C* + +    !! + +%%    AA + +  %%   ''  $$22   + +99   !! + + ))  + ""!!'' ((!!  22++<< + +22)) ))$$  %%%% + * )ͿlidmlhٱNNL=2HӲ72(#         + +$ + +    !! $$    + +!!,,) ) *)!" ,,!!   EE 0 0((..   ))!!CC  ((&&**       $$    (*< +oAmwCaMطYV^,!    +           # !#     !!  + 0 0   + + ))    + +))++""&&.. D D + +    + +       %%""    ) +)! ?@ + +.. "$;:23,, ##  +ͽlidmlhٱNNL<1Gճ/*62 +    + + +    !! $$    + +!!,,( *('!" ,,!! +  + + EE 0 0((..   ))!!CC  ((&&**       $$    '):l>mwCaMطc`i,  $ & + + !! +()   + + ))    + +))++""&&.. D D + +    +         %%""   ( +)  >@ + +.. $'<901,, ##ͽlidmlhٱNNLE> +"1  +%!!#"' $4- !"+&^T@~7aR%( 3mcpjCƿ%    &! 2:1-$ɺ}o+h&.* % +  +'e)"`)%"9#:,]~.(A%# 2$? P6 ! K iC!2 + ' .(!2'R"[ +M١ _R~N.+؂ %K ^( +) 6*,>,P*`%r"& !2$# ><5($ $!)& uyEA &#, +<JGH͢+++CCCHHH666JJJKKKv~LZTھU\^")  ! .1 + 4R%C6M9!T  & #-# +2vAʇXѬ9=α 4!"˟D6c  " *    10jAq ## ,G9/E1G! + +!# +% ' \?TX> ) ! + !  "F[}Tomf() @9Z 'pL  (uF!$# K@iVt $ !   + + & #+4#2.S95S'1)! + & 9+_ 3) 5;*(lidmlhٱNNLD= . ! + +$ #' 5A4 &^ ]1q  `Wc\@ü # +("!#$(cUu+g( ++  A +\ "9"9$ 2Q"/I)' , 8$ 2)dD".! /' &8 O + b{FŔC` ;X % %=< 67Uq$) *# + +$&0+!Z0 * +$  +O?h4O˔- $%+ [A GH͢탃 + + +vvv tttv~LZTھfno46 !@ +  8W8A2< +B*  ",n?xJk+"e[Y6dY= (Z1c2 + !   +!! *-_v7n )1;#!,- +&   '   +T+:=- !&.!   #  ,9Z7#u + +{~6&od8 + I+$ +<2ZL${  & "&   !2 & ##4& + -z(69W!"  93 !.rL +=, 25+*lidmlhٱNNL񛻦)F2yھ)+7$6$<%/ 2M7" "F8' + +HL!6$1 ?O13)) 2/b}#r,v3 & 411! + +=; +DSo).domT5ʰ WP $ L$W(),7$/&`+e$W"U $QF)0.5]>}1EӃ HR@A/) +  +]TX!З/6#N0[$'8 6+!A-N#D=~@(ʊ +T: C?,-< +2 C/Ɛ`)N$(C c9d" ' eN2!<,XFN U, B X&7;,$@90/$"!&CQ$1$1!@1-&/( +~m]|#.#F"M!40 &-)44 ˙gDd!$2+ 7LK,ӨsJn*7̅3/ +>J $8"5$MF +.UXuuuOOOkkkݞYYYhhhkkk]|4hRƲhY[+<'7;E52"''&+*)%!~Ls5"[ 1qI"(2=[ClzX?wo2|bl/B3F !2O.Kho )3#$2% +"NN +)')b&_(0SE*)()7O436(+1(8I-WR";2Y ['5 62)"aE+ 3.W<  1D8.4 dY +, + 3,%$! /ƳZI&4{)2@&O1 6T/ =B9&$/=55 7 %4e/#0B?L:F $&8)6#C>e[ ,'E7'K2 $PE;H  %&$& 36#3O!"KJ#k&o=p/V0()):') 6)#1 9==AI{ 6>#" +E +E)(!"lidmlhٱNNL񛻦(E2xٽ))0I +-2 $3&'! I8^  ,/t}#v,v$8 +./  , +!!L9{g"p|hO.3$ (? )C0Q#" )0?tU26s!1H )! PZ&m1=73!2#! )8 APz \1&"0 +:gX%B$ + t ci\ +U: 5a?#4@>2&$#D#XB +7!# /(qg5Cl$0",?! +) +Sh9=W- +:  sJu2;Љ ) + + %(3 ,/UX^^^~~~rrr]|4hRƲk[^1A !-6 +  &er-[j"^"kkN',5.LQ R,$34-;@%92&!_F %*= 6'GA 8-2(.,# -?%:('SE/.,!  + +.1-GX 4</ *9& ) 6&7>*! 3#={""  +0; 5#!9 <iWz!.t! ; ((^5$C>* 3+$$ =n+* G=J/ 8,=4%$/N%& @  &1$(  &$9$( + 6>!m!k_9  !  3=%'22;w &! /9= !lidmlhٱNNLծ9>'~/!5]><jX2pHrH_<%v;C @3m=xI8V!=Z$~F-3R_tf*W ca@>y: +N=M/S.C/Y[Pi7BĐ !( A cYj~==g_|w5BDw'#s4bKlmSlR(qe@aQOn|nU( +wd @2lcf?''"%\&a}L%YŃ] e3X~Ri**MpnR|{+#"$-{c&8P*:*2Z{%Z~odcG`86o x ?B[JAA+hOXD=)r+Au;0 +25A+u$ ;'! 2yldqh2/%SI`B;"C|=24,w*5=~Ng7#\ = 6q0{T(CTgut7Do&ZzUx=.RZ*S1>3#]!$( D#~'9AU +f<4pGhkwz-|1ih@SNKwwLuD)0),]!Rx ?Sj~000###___iii~~~ۀyVWOռeWTup=2F=v:k4$%WC WgIYA-i8d*K,bGB;= (ay1= 5)'!OQupuAxDK*` tNX1P@vz82W"w_&Q]~q^RTAք<­T@!+% @C!{v*=>̲eLL9SD7Sօ +4$83H2J/*$+U,!B?Wg$qjTJ3 9<{ZH*>d;o([<&p6>Fl3ΜOK0N 06qA,e":/l :_m#e9} +n-`MU]9o Ph8!Z*##.n)5KMVDS$2Wf+ft + +:RLcpJ} @Tk[[[VVV...WWW[[[oooۀyVWOռcURun;Km:l@qp",-;<t &0&0#nYBn"8,LN=6Jû,%_w)8}/4 +!6CEvq(9yk7Sc~D^$v cu414#z1hW2Ɖ~CQ]*;p#,n=îYE#7dv`6q!;-F6t m>Z !]O%*ÈKx0vH`>/ßf8 "#Szf3juw) v6g4iL`Z$ao X'q\sUi mGW9Ή~<Ov1XxY7y GÉb+xOV)g NZ3C) -'I#6n$cK(g&e~_|=J/F1H2^%y 8VIN's3Nd,g_ÜAj9G*7yFʔ3.&$ R|5Zr+{+Cp*L 4[>~9uOd(uVglidmlhٱNNL!H?F(=18,#|3-j&Z=>Ŧ/vA>2P`\0F_cF3Ƨ}F*ϕ=,fQY,#<G_$Bw!00I !!QD:/F]":f/z4ʁJ2,#1)׮~:67oJJ>K4z-Hj%;iktX+׹0>sa"'HZ32b-p +Ryj)!'vu--2F(` I7f'9J=)ҫyT[BH:=N0#H?;=)*fp=+iEC? 2)$O/#,X6+w.ZCA˳1F02Ia!3 +jFZ\p@=oL +)U#e}q$5A RJ,9U?6ŌNYI0-p9A[+.I0";I)0PNhgL:s77> $9K5Rp>j H>q!IY !*6v&/4k2,LJL`5K=qq,r19ԏ2"feFp_8,A 2WQ>c 8;nJJI?@הg +[Nv *~AJ 2 2-N$`3%"=Q6UWC*0K!J\%<Pl64{6';;Z= 7!"O/!'@Dƫ~%= +!= +&"X|q:s!?%.#@ (iB7.G8 ~#=FU +~P{ +!GϞZ,e+KfJF̀6R(DȚ.GI3)$1Ηk7BY(;ZEQL_#T8A8_;Ks8)G%Ai*@$!E3l  $'ƠR/ . =CM;|AJ[hvv 0' jxFT|YG'o*VT;?*5Z w&$2{ewH@3S!_< <KRV7LG=#FN:)ƭU=v3sҌBu{J~>9O.[2=vG9̿}pquvBy\-JErm5 2<klAD  lidmlhٱNNL!I@&Q7%<0'8#^T7Bɪ4{SNA25noh~Ɖibsc,Ҙ"KECJR*]v#p!l  F/$?WkX:C!:L>/@\:ob,pƉ,\P:T  "J9 )!=K/"A5V(wPCKFM DW`P-.@l%C>q +MY 0 )k1p14kAHWOc6LQЇ_u3<ג]QXK"?mL@םLlCZ32H23.)XS zzzbbbeeeRRRFFF@@@)))nnniw?cM߷aQJ1@ee*9MT_GR%Gve<6  -!*6$p-& -q3A/sxQPDE):_=Ej">4gGKJK2DŽUYKo&z.cOq>_)J>1=2#I\>ɖl<_KC,H -Oa,@Nj39؀?4i/d0ф,̀-+ *"[. =5N5>-c6*G#9oOsl1 1Bg0S@d2.L )kP:S)A72PY'hKDV2C3f8{@3{>7B|:N$DȚ5JL=3,(,ɓk7E< =LCDg%!!^2 +0p2Y # 9VgŇKk -%AK:4'4v0h1#(ǡV2>\-UB 7?+gsr=L$C$ !Nj@[jX5Q?mՄMM4=$$3Ej"Ao;i +\\xF9B\5 Í{G\`L<9/78C64ҹV>)?Ph#U&X23{2c3`+=vJWJG:By >7-CYakv4B6v$ynCB'6{?8k<#EX,̚$D)JNAʨ7?QZV[au:W)E/Aq~4 #ΑIL{01-i/*=1Vqr}?1R~E629F,)H!?3.x(ʟZKn3=AD6W7+hZ`%& nZP'%=-bZSn"x0Q-4/Δ uBJZG~(ъi7n/~(d@?$$M&0(*ˑt=}4ğ$|\;?b 8&Mtg[ND'y%yc) R4v=J(l: tQh6 e.K/ToA0Lkk*wB\0Γ~E<~527.ĮrOY՗[[[777󇇇%%%[[[uuuewzkshy|Dх@;O#b'G<Ռ\e2++@IKmD+ǜJWv :r/~f)63kS$ +~%ДU{]Gv ?quCP>][s6Ě+]TYe l# -/J=(`&^2jSwH$(>at9}N 1: !V,vk!P ,& +9w.4q,h%7~:izc$)WPr +z@q6;l;2k;+ȕWFJ@ HCUZW3%2!k3:&SjH(b*JRUb.}C23e'&"!6PqDȚR"-JB:$" ZJQsC@x^,Bo)P%4$f5,7k wMU]i "o4t|74Ӌ5ji~.GDw +{GbuZe1V.dDqD?]2PK<S:(@ =_ `=*8GZ[o%3wN9Aaj/HPZ1332Cc,+].ЕS{XtQc*>Fis1Y0`SuNd=Y3'= +QCJ ! )"8*3wbxtR6}4DdfXvt3)Ʌp\gG<~!u[ +j wfQ'Z:uE0Λ,x;;6-2I7 [2 E&fF=RU.#i=)W06#UEʓNe:wKhy&2"-I?g^,,!'_WcouJNY*NlHI`*"7HW~j7&RqUv{[)W,) ċML `6B\)/=(Q feYYqnW3ɍ=}Xys_;V.2JiNV015945cO2.+F i1|r,lidmlhٱNNL8=2xتD6=/^uf[rc~mtY|[o|ZifagNw}dhXr~poq`qZlxxyy^jfquj{vxjmcf`~xYvpyoxzpyrntsoudYwrUqTN^Zj`fqkl^xyls`n|_ZrT^_j`doowtok^Zowmoor\[c~}dbpaKsdNbndr~t\f]gj\wj}hp[kizxloYflrx~|}vtu]qk]qk!onuqUmQTkmjopqexy\gismtho`o~_o}os~\uluxhkn]nqo{7ju2boboVs[yp~[il]qvmn^_sJyQfXiZi^pecpdqql_Uxojm~g^c_dqRjJsonjfRvbo{^ks_[qxtyc\Oj\w|~ytvq}sksja^^ykknukr^y]x\lRav\ajoyoUKOkJeFZpXm\vok~QRJKpt^vzdsWntprohmfbilrpi{Z~th~jUVaW|tfiuxVIcVoKhfPbfrv~aiVr[hnZoRbYouicd^ocvui|qoomdc_^`nqrukkPPoozywvm[g|\h}yqzrzy}|_^dpitmXZLj}i^lhaqkZcbl/+eFvWaZf_bvIr\|hhh׊}w_SMؠK_Wfyz^[|]Up~xwmNcab{fk]b`zlhsZ]ehjkde]su`aiY|gsc|xov,2'-Y_[umj{txosisyalqbvqpnijsrlutg{j~JJhg~m_reT}Mvaglq~w~wPczexijijZwl^{ore~u^wd}RoZvt{lrpwfmtcaHuFJJNw`~et[u>pI{aqeul]k\shh\pwemk{um~UfsZh~pzXfzcpqgr\hZ}Stmd{qUvEfk_i|pzmObzdjrxlodfi^jmqfocCNgax\WnSmnnylwnha[~t`o]mPcjexxu^f[jHpNj~mno^qogzxV{[Yd&6[<1TG<_E@UFAV9CE;EG6925BAICBJR6iM2dJ<'eV@=I?@KB J)!J)L?oE8hH3aM9gFDZB@WK6]O:a?Ee16V756A?@3G@7JDg)'0G,2J/+AC/EG;KO2CG,>?:LM7Av#-a18Z+2T1?MDSa48e(+X4L\.FV7:*GJ:aGtF,Y0;Q\,Q9%J2M8P;0=g0=gH:MH:MFGZDEYJUKVK={D6s%H,O"2?Z%2LS4MW8Q:c>h@Q;2C-'JL$GJ$GH"EFH)J+0@,1A-P=rP=r;GO8DLA=S>;P<5e@:jO7#U=572=?;C:2=4,IIcAA[48,-x j>B-=A,3\1ZIE\=:Q/3-HLF06_%+TW7MY9OK,NJ*L+@M#8EX"q_)y?f=dG95U>5UITi3>S@9_B;a)1\18dJINA@F:2b[T47v,/nE;HB8E=7D=5>)2u:[9Z5bB$o+K%5V/ H2G2J2U:"Djjj---׊}w_SMؠYmd6IJ0BC97HF#PHc5-H8A77@64IG';91Ih.L/T3&J*%=01J<@C@C>?[BC_1FW1FWIVBO11_66eT?R=]/Q#t0IO8QXNCWKO>dB2W=Jl7De+=w*=v+@^,A_*Iq1Ox(M`*Pc;8d;8d26Q04OO)\&_+GQJ[F?PHYBS34N@A[AJ:>G7&UNE><1TMBf+MU,NV(3$?K<Z.J>0K@,D<,D<)J@*KBM9 O;8>O7=N=DK=CJ'S%@$gcVR +K7 L8S;TS;T"SbM\(G7'F6+I-J E:xMB(E//L61@l)9d2CP?P]=J`.l/Er=a/OsJ>H4)24G^F<8Z3U.AF+>C9;h35b*=;/A?"Fa#Gb V9D(;>C O+;?K@MF;H(4 @M8L1?$tX0K]5Q=4 +>62=E;GN?I2IR;S;EO7A6P~5bE7m]O:;26F%Nj)So78m89nH+V*>2_7*X,@V2G\C26%{;=^?Bc!R"$V&HB\@;U/D=5JC3G`1D]J#S'Y2O)[PglidmlhٱNNL蕿C:{}TnNh7!>(243 ) !! "%  77%+") ,( )( >A;98 +2!$%;>%7"1#%   + '!# + #$2'+&*!#db '. GN#A3$% " 1;@ 9%! (% *1' CD(!5 >SO! %? E! "%(*  /2& '"! #'+  "$"+* ) JJok'.-$5,#!-&7#4*&2**")&'%7 "8&< - +2/!' +  #"*2".&( = ,!!)" $)  oWk$ $22@)C ,ïDDDLLLJJJ---888q{H^QʙLTWJU.=*=; +382-'F7691 / 2)<3%28(&+0 ./=7(&/-3=9.$ & ;?0=1,.-o%12*,4 3/"/%32%*@84,#X|>rKa;@76;2& 89&)36C@ +)%38BA:>6- +7))*-4(*-0:81.$'0)#A*>372,65,'(.+59)"'1551/)-=4,.,((2"!?B# + 35& & 2)'= &3;"(#0H=9?34))-2F17G'$KZ "!!!!%2$ (!13 & $ "  "4&*):(9!.-(  & &%20@A0 5   )- +#%"  (%'""#/&.%ABlidmlhٱNNL䓼!G=ŸӰwpo]wfw:e)\xeozkubS_PeniqfMiPbdqKnHkQsZszZ`pO|Zc^ZUc^vqkIxVs8{?p>d2ibemoSkNgfjVmY_ZgafucrkXo[f_hfoUgL]vfnNrSpdvjkrfndInRgehftVtVsjulphofrkqjo~kzkov[j]l[r`wlqjoXao^WGi/h.`ThJeGV }ErhbXhfpoZ^lab^d`pUpU`zjzCo9]XXR\_Zv_{gdQ\Wk\p\`_@iJi`jar%o!y\beqo{e~k`y`ysZrZjMnQuyvzRd[n`cZ]^pP`Q`Qf]h_s^u`Z[myelvozlh_kqXioezpdqqhzrer^le;sIiQdLo]m[lspx_^^]vZsX]Za]l9l9hqHhZ{]h_anoh_}^y\w]HgQovmtvorla`cbg}_unSkPowe2r?fdiOy_kt_imPnQhbsnqv_dmMsTxpkcngf_xs}x]kzR[4^fPXdskzjhq{H^QʙZadg$u2MMJ[P%K!SLC=ScYPF&F&\IP=Z]C B +`kQ-D!FL%YZVC`1W(JW +Z)],X%MIST>P;[ +^KY!LPMLNMR^JVPVV2R.ML_UR"NJKI7UCD<>6JUHLiUR2K,\iVOIBR Z\,Y)U$OY([*J&N)WO_$^#JY [=D'^VT0R.KKE%J)Z%LOHJZ+S\'>7@9RBe*X;?"ccP%GH%T1YQ]2M"MXS*M%KNPUB&M1H$@^QVIX RJ;N>30C?^\8%7$U%V&A-@,W2K'JX>EDJZZ_&RM)M)c`C.Q<^fPWK=SDSZ#UOXZGDqo`df^iaahahjjddcKlTfHyZhZfXog`Y_Nn\q[nXmXiTTc9tNlFdfceyvlihToZc`wtseZKhc|i"m&xmiqfogihSePm]pand`Wntkqy|coS\riq_p^~wxqdPYE]bnrS^Q\lyerdpZfnros`]ZWZTqljetoo`n^qhwlidmlhٱNNLظ޾E2`{q׿u|K[Rħceq - -)/ +( #  &)  #6,@& +(5",  + !70G!'-   1'F?  $$0/#   ! +%$( +  !.# !=0     &!! !*/ + #.! .QlidmlhٱNNLݽ޾F3azp׿u|K[RħXZf'",&!  + !  0  +';2*  $+0 + +#9%%-) %  16 + + +AK ++,!   +  #6) +"'  :!B   "("  #%+ +#$>blidmlhٱNNL貭=85ȶо|~RTh޼l]@ ""-#- + )=7  )2 9&(  '* +!!!$ (/$408 +  + +% +  +( (*  + $$  $""2  (+!!$'")   820!% +C^lidmlhٱNNL籬=96ȶо|~RTh޼fX; $(   (. $ :4  #( 7B*) + +  !) +% " +) #$4/;< +  %! + + ,5,/#%  +&* )& + !   $#( &-$  + +   14( A ]lidmlhٱNNLⰬ=:0Ȱø^5daںdSO +-) , +( 51  +)& +" )- + +  -  bP  )):3)5'Q!J,A2 $C3//  ! ,"!  "   -$&:cG%R4a #!3''*@$; 4(9D)'#).= 422;2#+ '$  + +&" Y>   + %"EFlidmlhٱNNL䯫<8.ݿײthD8/#oߧNK>8zsLJthfL1/uRJ_ZCAgfcpp\T>6/+ZxjPBXU~4/rȰø^5daںdSO22'- /. +)    ++&     &)K  +  +*2 .,1 0E#8%%!.+-+* +-#!#%&&!&""J}0] +  5(%# (*8)%,,! (72%!'!.   %% ss\\  '#EF񉉉III^^^[[[RRR)))ooo칷ָ0)h겴Dzþ޺lidmlhٱNNL<<|ph*"<7d`YU=.%mied|xq)%<;DB~ |qh,)x2-8(F5 yfӠ陑*1A2+wpsJYh[Z^ %C:$$ '!%   !$   !)    !! ' &% *ni.CDQ + +H'mM|\N LJ#"2.N!T/5CJ $f]"h|%?88' 1 +"/#-ZAR* A  U; ]" $ %>k % ; +:- ($) + +%" )$$4& U0 +&8qlll000jjj333BBB򳳳-&xp{f!OG|sZK! T?H;-xg^V;2vlqlRLznJ>#.rZ +E4k2bIh ?5#܊Yd_ 9%I-6p3nOr/nz3.ƍf} (,&G;s2p`##AB1lR|'%6Ź *$"";oPӻ2- !0U>=WV0ɒZ'*0 = =:7xk/ϐ!!/:F&d;I. "",,.|_  + :F)4,(e'\%ݨ~Y?ڃ ! u +D_Qeo$8r5C 00$z*11C6ɏo*! +h^"", +dN52 + '1ɀY o&v +( *?4=2!ckooo%%%~~~fff:::BBB! ͗~u"Z]ekxeglidmlhٱNNL==!pxQJc\άy{dWO07rx}΀֮.&J;uo42X_U\>3)77Wc\F9fYz A:0)$"oh inC=yzt?1|wü1/~##w/*½ J9cnoz||;._Mw245%_1!ceZu0$\ThqZ4$!Nt<;>=+ÌU!+2 +p]vc{qtk% 8KCWy~ap4w!. .J1dAO}~YG-.ao5wl #'!-#) Ax3qőg5e-p#T~pY{c8ĵYJV`ih7qnEt8+]EsZ&8pe.IA~Fw +_YysikdzaS'Y`QT9&^*t20$ru0wVi!%;1<2!ckqqquuu!!!eee@@@==={;=@?on҇}t*!OR-.holidmlhٱNNL>B}0&95UQ  ƥ t_#2'MB \22eaC0dPw}-)"e^,&  +YPb`qjptƫ()wĵ6(a` " ˾60xtz $)q{Zb;9YDA,PM;5BG+oYj)'~o2%} +cfй懋ӯ=7c]y`V_a EIG@{ncutȹ G@JCo_*p0,IETYþ YYénpyꖎ +o^R>?,CEy~ + ZaѺdj@=Ⱥe<\wߥn^>95 +!>ICZ +&He3j3s|N g*lC9I)F&vT:J8=<@9OO# #x%x+L 2JUOLu+2)/J0%@KI!R=Zv$ @N?3n2 #$`Z;Y.{=_CҴ= H$2-QX + %^-[ EH==UJ4M,a!_g/߈$OU%Z'sjnhXTڡyC\0>Ξ If1+90gRn&BՉKj2Z +8M/5<Qpdo9n92Ĉz@dEk4+ ';pz4a,|wd1ۑ.G7:|:#͈0>J12w.q2 !&2roX'+Ȕ#5bqqqQQQrrrYYY;;;FFF""|w䵤 +=2tig`WP)"w0'\b7) lidmlhٱNNL>B{soJH?=(МuvᙚxcC85*y|풘45a]}% EDwm) ci(ojc.(#1*H?caB;Zdg_[mi$ֳeg,%`RO@jimZ6%]k^ lq/3oyV^ECT>I3gd׋=7;?.D/@Ix\(sUGw~_b!ύك}{f[mp@:=2nm⬝#<5WPob~ptp{U27skltwoq%!xf+¹5%hWWC7$su + ^ZW̸y~51~)$ BI:@SZek*(Ⱥe<\wߥ{lK9)DV;Q)C`Gt+ze it3uBV=?@^?wW6i=+m +!A QH??#&{2+L.)4\R{ uZ# 3 7e/a+\nUs,1 RN|q"C +'ic0M+w9vZͯ*K@O$TZ% + $.o%S,BE=9J@&,E9Io>LJK@1UܣSi<:əTq!%?M,:,^J{23x*>\7` +8I*@̫14Seogqq ?Ӗg.kBh$7("=2oyNXG5zun(,֌+C/H(`WVD~Xc|,q/r4*6opIk'Đ"74\~lllnnnRRRppp;;;DDD!!z䫚 l`ZS잗rk'PVtezlidmlhٱNNL챴;=#vy$!~|-%E=F@ceQKQOт{q o~{-% da] ¹ |SKk-0xuw237*.!Ƕ2(XS?4yxǰXVc`ߋ)!fiTTOMRDRD(&FBBF +\NckGN~y!:>uOGtlRIzpǿ +''ttCJB?xu"!I<໵,'TQFCdY+!%%TX,.B?]Z  +!j_jW)-+<:}!# qogm ,.KMgi80h>Zݾc[:<0T2B)A+Fn|$ȇ)͌0$%,Uu)#OW7)*KRjLV 50x"41AK=_T Մ q12B&6DhD/®o\pi4@KX5& +qSw$aI./&5DΦDΦjZ}n% +!$(+5~r,rImDyj t<ѕ=J>E =?$* +)una<BK?@ôG9O=u3#gHՑ4|\p A2( Jl {5|w+JL*J;G#u5̝4Ǎs<nW5*e2Z3H0Bѷ5Ơ\9uA̸6_'ؓJuG$$"! %!n|=;XU'_'Os3E^4MXnKUn|JAǔI7W-U4[֝-=+:AMjjj%%%AAAXXXCCC)))ZZZZZZGGGGGG000LLL@@@@@@ l˱ +nb {.)Y[kk<-XIlidmlhٱNNL쯲:="+(g B6rtgi˻| ~ NVv~pv1+eg]Xoj}{ 91ƽ]_hhie?ZݾohFI3W2B)H233Ni+Z+ >)I8#O)b!W26=JQ=G(51DgS'݌, p7 AmNrTsmyq%,9 ++'Y}$Ab&V .*gmG^OFϿ "%+.6>s+N2fv]ՙOH5=`c" I"{Z$BK::I;AFAHCCP {UI 84Ij#>ֆy-BC9o^bGko2Ċp9bK9ª M0X3J2 [P=iV6Kϊx6n?4֥!! !J}L%]9Dhc!!D.Mc717Od'wV) +]2 lڡ !@Lyyyvvv<<3nbd` eyzֈ̈́#yz{bb!ǺݶE6ܗ|lidmlhٱNNL7:)SOTPE>~wEDnyr%HH51LHާUJ+!xw'G=\OIO<620$93AþynbXȽ{pMJd]WRЗ<>58\V7-F;˿/*el~kfqD6^Y @;@3A7peK@̞}H?̎md=7F?/&?6 02xlro[P%joC>2&ε(%ic߰z\]jdB5gYvnE>)#qnۗPIʘʻibZWkoƙ4,jaVVbgeja_@<62L8E1jeלTPƫc\jdso62;5zuqꍉgcϪvqJ>Цخ}OS`'ƵϤHWo3R9[ hVX(s}VCn{?=*(RoWt29VVӲvW}t]xGaL|A{haW:̆8iy-mm_Rl^#HVx{"+D 8 wjOBP!\NFv1jBX%FU?1=F4RA`3X}xw2-y劣|v{~i~vt{舃҃{ꌄ䈆딒np΍NHӖё֓ىӉӟ|ʇ蒋tsڊݛ˥yt꓌ޖ{{}zzꅀݎxp靕}zzӒ}uфޗሇҕwіڏstŕsۘЗϓ}vޝym}~wzǗٚ}vxvߕur͋ʦ}Ս充ڥ{g_urv݃xvt}Ӡydx撐⏊qkxz|v˕枙z{֝!faיokן}{Цخ}OS`'ƵϤQ`xCbEd"k*r&n"m`x85'$!-J .#|f{r*.1k*d.~wOc-]!P| z//+ } * +)!|{nSN"x3y~qq-P -*% 6o'|~drWoo`^bZ] (.JP<F |h:n^%u&vs+y "!:M*"{)%vD3s$$ +0na!po +b +bd_xv"D)K)z##% +T%_ z{ C<@1G\|u29> + + Z]=A!s%xhoss~@->p3e4F]oggg)))===ܕ~r掎צ|焀ԓ砗ч裓x及所{ڥ|oڒ䄇ץt{뚓t҅lidmlhٱNNLް574ˮݨ䎉Ⱥӭ姜ޣˢųÙΛ장Ӛϵîś˴ՙ᝙栨̞ʥWf21us뫪C=ÍᔛǤؖʠҵ螢șîԢȣڎpc +Ԡ즬ĦĜѐĬв앛נНƎܛӯ舋ϥϔ):8ÛŬ˰ˣ᝝̤ۘئީ៟ժ൵۪иǨŜĨǛ񠟾ëݡӞݛᳲђݗҹꏒ¬५ߕϡߟשࠨĞ霙癠˜³ݣ›ٟݤٙΰɟ룵ާ䗤Ӵϱ﫸Ȉಶ۽ʸŦƝ֫孺٤ѦӮӗ׬괰ѥŸЕƣ١סɓґá┚ʡ ۠ۥ⡨ީ«ҡ旝۬՝ơǛ챭ʓ२ݔޥȔܪۉ:6GGpp\^͖̙˨֨ϡȯӝ瘝ﳺȺopEaGάĬE^85.,!) o_ !- G.'od  +",C: +AP + 1a^!2C'/@ +C:4WD434Y"y{oqo +LeC8 >L +@ 84)0(7C='2?' &>F /87.*A%  I:B= ++&!SE _V-&,8E0'8P<DG9@ 2*? @93-J)Sd2-6:=:):4%=; F; 0520&1/ $#(C1F Q1OnR$PK/1"2-& :96>kkk666MMMכᛜՒĮᥤ뛚ϣʣ柢ôػᔐӧȟɠ̫陛ֺķΩ򙩩좦䥱떒lidmlhٱNNL൷685ig\Zgfa`ưbUTG{zVMSJgcSSvvȺopEaGάĬD]*! +HB-)B -lh)&5 +EC'5| ! +V%}9< ,)8 <dg*)=F/< % +CJ?FH%cL:$H)Lc[sQ4r <)LL$$'A=?-? KHC7-; @24ET  +*/0<D$K  )!*DJQJ :6+ 0#+N\+oe3=?6J J +2'GN\bP A);KC22=7J1($9Z]H?"Z +I8M-)/$ CQBE ]Q$B = :?(-FTP D: ;WUYMZh1IX.1-=&)?3%&P*U888eee[[[hhh^^^???lidmlhٱNNL淺<>كjYY@߯]_:˶DZ˵ٴЫǦ׶ŢЭαҵϩϩϯϯϭϭϰϰߢܟ૛ܧݥ⪭١֞ݡݡݟݟݦݦݥݥХЫ˦תܯƴ߳ӬӬҰҰҩҩҭҭ̰rϳuά˩ΦԬӲϮֳʧƢЬӮͨʨ̧̧̪شšϥȠ̤ѮѮѭѭѬѬѩѩڪڪڥڥککککڢڢڤڤڬڬڪڪѬѬѪѪѦѦѧѧѬѬѪѪѨѨѫѫѱή˝שΧΧȩ{ծȡȣ໳ɩѱΦΦ۶ѫڴʢʢˢدѭѭѲѲѣѣѨѨبب٥٥٥٥٨٨ڨڨککܧܧܤܤѬѬѩѩѫѫѩѩѨܳʣڳŞΧְ˥ѫѫҩҩӧӧӨӨҫӬέʩʭܿlidmlhٱNNL淺<>كjYY@߯\^9lidmlhٱNNL;8*Ƀ~YTXʮacYlidmlhٱNNL;8*Ƀ~YTXʮZ[QlidmlhٱNNL:3BѴټzYPj׺XZhlidmlhٱNNL;4CѴټzYPj׺`bplidmlhٱNNLȷ<6CD3O>8+[T2+y94svt4+8&ta#yyWWODynaY3.q|mWU21uмĄ|ZR^ŬU[e\6AHClj-$meLE*uf3,y{,-l ǻ)#flidmlhٱNNLȷ=7D;*<+|\U ^ czg'xoogZG8мĄ|ZR^ŬW]g12lxn限zv95L'2ԉ ;-vo>Auu}moU#ʾlidmlhٱNNL캮428mT*ȴx(/o]L> &mf~s),кՃnYXDڮbkZ=FOaպ +#wh̼eV &VKlidmlhٱNNLウ:7=eLF.|z|bb䍃}zysemgl‰v}z ikvx|lkkl~( ֽyx䉂ѽ'}|jvrsox}k嚘ǫzynnrqyx۩飥t}mr +iZż ͂}~qf-"G@ywɎ߅{} G=c`ւxo|rny{~|}lpf^q\kulpړbf᷻z~nqu{}|{gdՃnYXDڮRZJ:>{lg蚝oqe9 +kVvr|prqrZZw~{ȵ ѿ3kQqw~~斖xxpqozzjWU{ofҺypy{gh2$uf@2"wwmiVUpcxθ~oqmɐ{xspxuzppЂxv|{~el{vujotu}yʍ~sظ秪B8!jpׄ|Аᳯ|灃kuo(}xŵ𣱘zlidmlhٱNNL綳<9?{mZͧٙ!ca(#{<.m^ {73CESh\8624{(#)! Zb)!WMDBvu`OK@ĸ# _JKNIN@@ZY)){j^ KLJ;o_gZ<2xn8:2'ODUVqn$!m¿zqojn3*ùKP$n_|)!聎q,Ѯ e\겳\]GJ}|˭%f&64QX  z36VM3+|hb^Y´"JEkd7;tB4iZSV!_Q}24S%\Q +C9ХꃇaYou:>Z|u@MV4+tkZRH?.*gaH;ux68q&loFN%(#!~{on.,2! 6'E5XP><4'ՊJCtxOSPNᡗ¸f[f[ރcYZ:ᰫZ`FhT:o`ôiXy70x8B\g ,/hw,.Ӑ?62)&I0_Eʶ3!yWNZU̹" v-SV4'û tpj]I|29EccjzwvNMxy!"jlSKt=3tol3!4%,$-|e\J$\IZR;9~%追ǝOOHHvvc" +hvWA6ʾ$I<ʦ;+ӷwxǺ-KPtSLSL$ůvr58jlZ=-73u{,ǿﶷ uu <)+੦.+soI=tSQJITQ ZM!+7)ԏ|}&!&zpv|CAlidmlhٱNNL洱8556i0%od., (O<_[]cM!]Y%jd |%ҿ I;F8|rmr llidmlhٱNNL66-sse"zƹmZE3ij!#@AOT{OIч >=>9vޥŸff)*onnspv$ tpLVUQ})%yНܳYonaaUsm)&u|+*posW% vz"!FD_P. BETO( !)zo&"84kc9.cm) .'oh#½ '!,!alXb}q +nbȈznD=2,8.]NՁwWWM̳fcZY"x}!˨۴謧 }{rn!%''NN+'dq ~%"dEB˓3-OH饘2&3("$qS#'fs  t誩m^&LHo^_Nu#td0!!o^ga!ڶv{oE9B6&xl=:ZW|n$pgkazo*!=1z$هzj\=0`Y-"ḾNFy{qs2&ʼ@BVQֶƩ"|l4+G=)%. RC柧YI4&>FC<شy 7*]P#!aS^`bdlidmlhٱNNL77.wSE8*!¶ w<*cdgYca 23chz++ō^]PJdpnľcc()==XXD8ob~z"HQ;7$"zrV-&mr2' (%sz&%hg|_2#ϯorKIMK~-58[W t!)!sl* nw"  +v þ0)$¸ YaKV'yn-"%וsw33HA;4&!&zkՁwWWM̳QNFqp))~ lr] Ǿ)! ttp  ~w--ii[W=8׫{}V b[A:%m`j)hILHK! t|?9b[NJ:5B2zj! 3$n]wq! Ф|**C72'Г1-B> d{ubqo=3!ç83 |o-!yrњk_mo5-g^1,ORꭽ0${=3I@ ~ yj_P3%=DF>  +>EE^f 0,&-zqcZ*'<5 |!s}$!0&[Q``PTXU|/*EM[A:a]'#ѳ7=0)rpVP=8 ,)mX* +fj!)/9nZX̳ HQcY( qpDwXSOJ<9gdZ]EJ3.ø7Ctcg'*o7/SJ[^%ORWY`d=0#wZSǫwhYIgWA6F;%!QG[Q󔞼UH2% MF\fv&#~{ou& +}f"QEH<)*2+ʝlidmlhٱNNL쮲7;K=PAΊ7.lb\]de]V|o|JB~FIX_ȴqo@>x`Y_YQ]POEDISuκRSF=ǾeZ퉑z^M_NOO<棚TTR\tp92˖b]]Y_gZbb]daZ]fjf`F@tfgXM\RWciu®D9ag>DIOa[PJݠK>eXMWB:ܟ=9ZVWYKNͦxcWɀ|VRhԳ`VeXYhjkcRJ믩OO??b_heZML<^MUUKK25:=AB*+hs֧LIWS`Q@=FJ֨}ADxvA?loksIQhnttXXꬪVTwDBgefR5+WY陒Z[ZNrfBAosTH7+̶BJi]y86ҧ>8leYgJS/(YRa]H4ZGLMߞLHJJZZ﮵LSbeIKI@vp>M+/痒ZQkn<.v訫znicV812#͉xE:TIBD}72Α6,ʅzK>WI1)^hURntK5Ȱ]QVIE9K?|FE|{I9|}笭>7גlidmlhٱNNL|<<k}}~x~x||||́zzyyx~w~w~w|t|t|t|t|t|t|t|tyvyv~wՀy׆w݇xފuvttyهyق|ӂ|~}~}ڂ~т~тzz{{xx{v쌇rfSUNd]yv||w}x~xy}ׂك~~~~܃܃||}}}o}o}z}z}}}s}s~܄}ۃ}ҁ{Ѐ~|n|n{{xx{ހ{ހ|ـ|ق~ہ}ځ|߀{ހxy|}~uvx܁y݂xzxxus~t|r|s~u݀wy{{ҁҁzz}ځ}ڀ|ـ|ـyy~р~рzzzszs{{{{|t}u}q}q}؂}؂zzvv~Ԃ~ԁzzzzzzzz{{{{{{{{{{{{{{{{x~w|u{t{t|u~wx߀|ـ|ـ~Ѐ~ЁɁɁ{܁{}u}u~q}p|v|v{p{ptt{ׄ{ׄxxxx|ڃ|ڂ|ۂ|ۂ}؂}؂{{zzss|jg؏aYvn~x}wzvyuyyzz}|~}{{|ـ|ـ~р~рuuyr{t}xzs}q{|yzxxqrxwss}х}хww}҅}҅xxx؂x؃wwstzzuuvvz߅z߅{݅{݅yڅyڄyyyy{ށ{ށ~؀}}|zyvstqpnom˃pYXGƯ]\b|v|~v}Ӂ}Ӂww{܁{܁}Ӂ}ӆ|yw|t|wzӃy|zz|܀|܀{{|ڀ|zuۆ{xo}ryj\B5΄|om==wxቊ䁂vpys~uxyv{pxn~ԁ~ԁxxȁȁ{{{t{t{{{{{r{r{x{xЀ|ـ|ـ|ڀ|ڀssyy~Ѐ~Ё}ڂ~ہȀ~v|t{u{u{u{u{v{v{w{wԀ}ׁ~؀z{xupwHDea|~y{odrgyu{w~~~y~y~~~w~w}Ӂ}Ӂxxyy~΁~|ʀ}˂z{{z|{}w~x~z{}}~~~|~|wwrrppuuuuu{u{uququruruzԔ4.4.͉|omxxxxvvuu}ԃ}ԃyy}ԃ}ԃzzف~؀wv~}|{{t{t{t{t{z{z{q{q{w{wՀ{ހ{ހyyyyyy}|~؀}yy~w~w|w}x~xۀz݂|݃}ޅԅ~tvrpw~uzzст~Ԃ~Ԃyyuw{ۇ}݇υ~̈́|Ăz…|~t{q{t~wwz~р~рzz~р~рzz䄁́~}t{r{u}wځ~΄сzz|ف|ف}Ё}Ёvv|z|z|s}tqqsvlidmlhٱNNL~==lŶŶȳȳDzDzŷŷþZV<)Ľü»伭µµ²²¹¹¶¶me' ¯ðöµûûõõûûöö¶±òøøóóôôøøùù÷÷··˃pYXGƯ^]cŽļ¸¸·m_'OL¹úUI #ǰǰʮʮ$¾¾ùĺĽüº¿¿ƶlidmlhٱNNL=96hoꆑV\u{YQgѯZZVڋnvr{vproj|vlidmlhٱNNL=96{YQgѯXYTlidmlhٱNNL<6C̃wYVMͯ[[[lidmlhٱNNL<6C̃wYVMͯ[[[lidmlhٱNNLӪ;;2|ӱ۹jYY@ͯ[[]lidmlhٱNNLѨ;;2ӱ۹jYY@ͯbbdlidmlhٱNNLʰ783w|YRaկghblidmlhٱNNLγ894u>):$!cV +Yruzրs)oj"m~z"lHGBed_甓|{vied?;>vȡ"~pz#hwоx`|YRaկYZTEǔ×Ƙϼѥ모M kZ{qzmӓrmD;sgY# }lidmlhٱNNL鳬82YN5:!뽵{þſ50q# +rc! ںhĺ>>5䌌!!  )$VfK3ƨ &VdkgsmكYUVͯMMO}3)4*6)v +okNEƼ*ɤŢ9)xgtl%n_+#oӰhnfۺlidmlhٱNNL沫82YiO.54]' Z~d幹DD;++"xxo + +~~t }oU2(҇v.% Ƹ~/كYUVͯZZ\[_hHD~fXph}| .gVSSsNJzSJ'?2G3*"u.'oWKʾlidmlhٱNNLٲ80ejV?,Yenhcidgc|xWTQOb])#PJY]gaľ_UXRztokRMnqOJSJUVwm/(ibcflo# 0,]b}ZYi]ރ}봮VV.!XLznRThj`_\VnoSNjdlfР&}}ۘ~ +xg'pNQLIZ[[]øLCĢj`ZQ}~`a_TjgMXkgg)~so^Y]X{VNǿ[_{½zd_wҸhYY>ůYWcĺf\õreoqocxv\P沥WONCөwpmsouOHTXIJgYദJHH?̛nfRYahpkhbSNzmhܴSJ03o)RFcforg\_WǾroչUSDFnnggrl^XaNnjޤg_dest|SSWM͇_[^[Š ! ĬbWVJׯeV#{]tlyuuquo鼽op{sZZRVuy_SEI[^h[bjuoaZSGz]HN9V_w!M?dYԸ_UZ\ztƻD:nfh`E=noZM؝mmngxqAKhNQtompw~)J=}lidmlhٱNNL޶91foZ$ ߯Ŵ l^]ZUNJoD@#!u(%vڽ& #^rim#cYᑋ<6`^a\SY!=AtoOJ$fg56cY !z2.XZbM)ol)puvq**nmȩwƺA>yUUwwPBF;PTu:3s32ln(#}<7om®onQSvx + +xxѪ}l2!D3or/2nɾ6,kbǾ&MCQG!y}+" mŹ!̾$! ؝R;RMYV93ZU}ļF?}9+ +g_TJ>ҸhYY>ů_]j\S+"uxk|oHJVJodnldh,!E9oh(*[ \V/)DJvOIɾ uo +L?zw qj0)kq70#HC_ZТGF|`d*fzo*!nr ú"!x nXYJLJJb_'!=*R?{tB;2+f^F:ͽ9mn2+((xA<|a^ !vvF:$[cwyÊü|oZM⠓%2T>OF~)NJsiFPc'!2)ø描kjON+#}~& +_j-)ɦplCGx}lidmlhٱNNL93Sy[O6*»abʐ$&km } +bhlÃ-2;?05Y^to73 v~ow",h{ +v~#dj#i{''!y 0.}SRϑCE24 b`*(»VM;>)"d\F4;))1tovw nUPsn=;86RTYV +]a` + !_Loevfrk`!SGYL2'* y"痘 owOARR =¯UV/0~|wþXQro;.9,}YS^ȯa`f"b(pf}kSN)2d ߾ .)";-)풙dl+*`y $~GE@> ]j  J>&%WYIJ),Y @1fV>;kqfZ3)W_ x^Z84 tsegRE!oD1шu0+  xl%+wzft )ܫMC7-䅑^j [hm\U-#loH=QGл$ ϙeb$!Zoc'$39,⡒KMtYT䫦/-\`|³F=~tCD PG1/'/bMG_YlidmlhٱNNL󬴮82RzgZ+  +̺u rĿſ5;flc^0,| *'ci4<$&v{rwtrom2/"ZRBLR\Y+.adɜ +|(#IIqJJLX|!%!p +ms))tyLFSZ>8ns  SMOI壝jk,,'H@=Es!̚)3Xa )&ify)(VV^hw}40 uqoEA>>;:ea`?<;}Qg0o pr)6,"(TBHuxtɳ̷ E;"2rl{U?& ܙ~v nj ?:%%gi#"B>JG֤/!͏>?EM21[Y=@#&)8-st'2 +ܡҲ׃{YVQ篫dfY~,6/,%F<_U!SW34 !MIJEP]CC鬳FF%#9)潹>;y@6cYQW " +76sr#zxqo،wwNMLF$CLn=Fg)/[[55!ʟ,!WK/&B9=D\c ^T{0/-2?Dhpyꦬ9ACK{ p{JKþidUQJ=4(PVspjc +`n"'#DJtJIdhNN73~yMJSSvKIWUђCGx|hmnlidmlhٱNNL竬9:)dYj^祰hatlWNi\[Zh`沪oe甊A;oe纯kfؑwtc`NNGHUQ֝}|{wrnloeefdNFkb^Xb_omkhFC鞭ԨZS|uhc⪥ZNۇ{h^WMϿ`PsgX]XoqNPlnooط}YWјpnZXga䢜齷SMJA^]e;:A==>eabWRV]Y\,(+IEFÿ󩨰 eoEnյRYoxfj睡`lp|ŴMQO>2"_[{wǴMC.p~ϵ 랚qnkHDARMJZUQ_ZWZVRKIDQNJda\khcqpm豱NNLﲻ7? XWPBjn<+ZM*,&#!~yb[͝$y[J ZeЃYUV٨bc^oX1sc0))ÑTI٫K?B6ZL,xv &$|&!&o6)}}nh2)^R>7͠$hkqÿͩ˱NNLﲻ7? 턁QMkt}FEed4:ZIHL>]ZUWkxxXOZQHEy]TXJ;fc}gd~\Ne[KKBB{e[D;aaZY}ށ{ܔTYwWFgVZWxcUYJZUZT~LDYZwrq?9m25{_cZYWVJLsRQ<+ocDAhshTMd]4-UBFJmpj{A;^[NId_BBZvvYYsbTô~u{KH~sWLURphӓJLqG?{O[Vbyz]jÙEBtmjzuZZxZVIE% ybyY^khXUozx<+ۯMM|ygfYez'1rꪼ +BJoweayvoUMzH?sЃYUV٨^_Z{sTLhqzry-hg#z}~^YUOU\o?@FD~^``bYQť%RC}nXJOBϔi[K>ͲznHE`TC7坙NJPI|tohG@pLEslYZob_ރ|FGdD=%(hlw|hmfi\_$^SibVOrp!y'`R"!eh }qq__`_rqjs}XY}ʯ”QT]`^[2&rrZYDBz91SUTNnaB;QI“SPSPliMKorWZcZZZz[[|ź]Scde`[ZLFrle_F@ZVjixjcROijSTZRSKlancث(:=ASTeUUnCC[󒔛 +ثᱱNNL52J{+̬ +} +oyź$ҺJQJDJN$%)!yAAxb!ٔv98#|$CGiX! +QQ<<¯# ׫EH|`\{. v( !ʺ`]=DE=/ xh%iL?uw PKVIlq=+YHZa:9{SIx*^R*2fku{2(sqoa- 9$ϸ}$ɚ{߆tkY5R[SjOC,UKhY  +i$"l|x)w.,32Tq-1,%î`bdž˿* е?A5$ygۃ{ݶzubd& ǰﺩ)GBpj20pIJ2"2w$p~%A1ߧK>TFaSry!̩,oV qd+"npzB3 *O^kYYпnWYDӿ`\tOIYgTX=@bI,2Y;ꨪEG%%hځiJE)*i||# 4;Sv(NHZYs*æ%T@$ ˼˹<1ogG2ůֽ/̛DBqö'=(mW#1:Z-![I>!K.Ⱦ Ľ20]]ŷ#[ISAiqB@,*ݓ|qӏo#糡x;!Q7P6|d~t ;?MHú ;/ fj-+ͽ<(ei ZO$qwPV35pzr?8yI3QJQ\ Rfga[yY>I/ 1=}@AD?lsi#"Wb¥em|B@ge @Jvhm ;2i_{'"X`um"%))|rl*$ z^Z)&COUT!![spQ^!&JCaZj{1;\\22_fKM$e[on!!x !w A9OGC>?E~$$~u^L* ~ih]A7ֵ%)Pbh42 )#ZT!&xvۃx=22(.2GUԿ́jWZ@Ѳhgo޳]fV,0(ȃzv~GJqu؀z9,i[ab()35tv祠  zFJE[_ o˿XP>7lj!ywm=PnDENODJX\ #x3)YNvv66Å+*^^",! nx60tkrJR őER}NI72488;"%ejw!lkV\IKGGǥ$(cmɬiuz  R\`Y!{X`8= [Pxy!"̣MMMnnnpppfffΦױNOJέ<=1dpS=!-{s0/cb#"ӹOU@Gu"tyt k yx!!AL?J + + !P5A' S_@A)$mh(,wv}끍-021A? 8BnMR<2;2 <7_hbY$]60PL`\5AA@1+MZBH!26]mfn"oVV ;2tkpq_eqeJBF=GBUZFFeS>-yՙ +!&| n 퓦$%:3VOo8?dgԯ(J[+ο$* >3SI=3jfrrng ~ef qtokln>@GB )*oiC/I4 ?B2.3-zs7> 38!FT(5*)1,RM)#WUC?ox.-&.c)+#\o'O?x)wqaVMym!ŽXTQSBBxx lzr;3n{o5(zl +~7D=@ + |1+Ž%"c-1=={h^IM%)v~ !4MnOU^_[LI>;yc823-$+DG)/6/31(-0.rv½.)͹ggg$$$444QQQ ΦױNOJݲ=6=Z\36Lkup;uɾ|qxoxtjgztuuoipja\폊pqzxnjy|hdd`ceokprokwbzeoq~rlovW[^mbpih43Ȅtp[W|wf_}]evm\ʼdTĘuЂz{rtˇnfvTFٴmrᝣx{~ji܄hhurltx݇wrwy~wi~o|~ⱳ~plovu|ƍr|wx~ox[fxvsyvll̴yo}sohoo۹}xohzqos}ZSpl|wjg隕ȹǸӶ۾oWYEӲ_`YmmÇ~somh܎`gonvgjم\]ٚkeztyha}vrm}}oq藙XZecxv}rx;3tvȠ笸wrsnlwsl]x|frѨmlxzaac\vw`b譬nmvo~kwx~ځb_wtmszmnrsw{z|_qWdx̭z~imu}jkvwmn년zvjiz}~hkzwZ]trroȋ|w뒘󂓫ie{wkdhav~퀈jmnsԲyvpnqo`[ʶ vvv___ooooooΦױNOJשּׂ22FQ?RV3.~,@27`3[)C?D=y:v,AB7sD5T7>3|L:2wM1uHU<7x=~ZFJ=G3yZL7w=}@R2wPGDG<5q?|0),)4oL2+845:2<+dPI!o2FJ?~;Gb+F@0@(;6@"7+K2BF'D!~6E2!;.r4y*.=8;F75(rE=w9raTB=E(zB3|TJ/{%pE.;N=CN79X8W8F9-7H>O)4>MD-n0f-c>iGqDF3zZ9)t8yFA--.H492w;79{*l=7A;1%z@u1eWyٴسف{WVQư]\XpemafYtvjbVdY|pqfxm{jyhubL:xekXynrgzq_W_Y`Ywub`mawl{sslkcZR}pi\\Yvsslld{sqjRDUGvh|nkivt~sPF~pgYf\pga[jdhcQL`__U|qpoJJoofesjvmyTNdU>0ZEcMaQcSi^_UmfxqrjmduldZyoeZoetjzrjbvvTTkXIfW[Wfa]]vnnzrg_dd{JJ`qaqask_Wom\Zr" D<~uwojaje]Y{a]ZYrqh`{sSMc]e`hcysgah_yl_m`bTzlcZe[k`bX_TbWneh_kcZRmbk`wlk_{nXJrawfutkiflef_yoe[\ZcaxrqlZOwmgmgTNojooddhctoiaNGvuutkgqnf\oeroZWRHqg΁{qloic\eY|o{ukWTyvYWqoe]h`olspXZuxnigboommVQlgdYg\݀}ecigkavncLB_OjY$hNyondaRqbYJdVri_VeUaQj]l_oqbgSlXq_]KZQnd^UdS^MfdŁZ^ko\[wve^zsقRUrkjgfnbqfZWolZ[`btkrioj]X|nm^TOvni- + + +ΦױNOJ-.AոEUrX1v{~} q!r%M)Q"d0u]XZ$%`Tt#{!l [$l+s!hc"fa%i],oZ%e,mV#c[7#hc\*mT(g&h +Q5{_jh)xl0l~%`_O "z#{(aRn$z'!{!z3lKi)w(yZ0n "]eiira|o&xZ c8zYa'q!o(v +W#k/nY$wl%z`&wl.zb]a&k!e%qkk({+^K+X!M$|r"m!q*n!c!|!{$m,k#ao!u+&3+d)bf q) x*e[!o%s"X$]"kco($"g d!lg(vc)o=!C(bV!xi"zd)z!=+I$!;/Jt$~% z"% z +g*o&r{x!~{/$h-q +~!wq'q#nQ;t$jZ'w og'y Y=T(o'rjl. e e"ha!y%C)Gop&r2B"2&|$z!|o^&f.d(]E!Ja$h+qvJ*v0|\$d!{!! d$i!a+m k#|z#xo/c2gМٴسف{WVQư^]Yýg^yi!ɄjӛXXXΦױNOJ֪4:1{` yd#}--22)2)2 75-.-..'.'+9+9.).),4,4)C)C.).))A)A,','. . +,+,//+,+,//,','. . /!/!-,-,11.&.&.'.'00+2+2.'.'+)<9{ ]~ `:/4)/0 &L&L33//..%?%?*&*&*)*),,,,3 2.2*/$L!Ix!Av?)6)6+$,%-)-)11+2+2.$.$+.+.. . +*+*)2)2..,&,&!313#/),+/4'(.'.'2 2 .&.&33*&403+2(4*00-1!6.-&.'%0%+.+.33//+/+/)2)200//,','&8(:3")?.35')/ / 3 3 .!.!-'-'1 1 00+,+,-!-!+4+4-,-,-'-'+1+1*4*4.!.!,$,$&D&D)N!G+2'5.=2)!I$K'(@A'1G$:.!.!11.!.!-)-)0000.!.!22-)-)-'-'//*7*7++))=."2A.=2 30 / ++/590(+J,K/ 5/<(4).*4(20%'1-3/+).,6!& '1(/9-74*!$0254L4$$)'.,+(1-9'08F 29 )))ΦױNOJ@9Oѷʲ޸hda .!;& %,,G-! !%#(( + >6%#D9 % -((* +C=1";. L7 8,/-*)))  ΦױNOJׯ@=.sȴܴ쥤甜ŽѾѿ̺о޽Ȩ^\GOe۪ޭ~֥w6Z$$Ȯ#$$ΉW;R + $AAi;-p# 00 !!,3  β6-.-;잩O +#$  -U#M#%CCڻrH;(%&& ..:V°\ղ!%iy aWTb;;!!"ΦױNOJح=:*p@.)JMMXZ3.o9>n))ӳ-$+,1-upmy*)aﴻ xsz~KKlWWwroER!ҝ;=K$\]xfgggiijkeffdmkRL!ϼμڻϭa_J|zva3yd6x^erroofW)A2R""bnF *""u3V;G'??]rkF9Q#.. 5-tZFC) 7j;.= y9*$# #N_SzB*AAuX/G*'Q#!(.,, D1_>Q_r)~p:{oa^99 ΦױNOJ:5;܁q)붘x궨~eos#ŞaW%|,u^"¹,,,222%%%oon,'Jľ=5TR,-{r̼Զ֩Y^F.&m䔁z/4.žֆ@=q7Y5$$?% +"(<3!@/K) +#ӭ8,j +3HM4)˰  '82(! |1` 2 !-28?(16%* () "; +8栀w6 +%!MQr7!o 7);!*%$#K8pU78KABV=4J2TM2%E- +1#>3ΦױNOJ:5;ː[Wkbz]tXRĖy%\]{mb${A+nWNNNHGK ~~| +A9KJy̼Զ֩bhO{t)0)⒯]عC'e9π/*83 +% $J$952`&" 2=1*V%5*D%-"  G/$&ϚA q9     4;>A5 ! 1,-! $ $ 26 ):Ҏ=4&Y=& +];!.-!<-FI(d8B 'Bf6@_yJ=]-2#7H +ΦױNOJݯ492@=e[D;"%:M"5)5`nhz9H;5wq?5][FDUH_R1)+#LILE6/#'yiokD@і~E=I@ceD>PJ830(giEGI@i`osMR-+geGB`[>A~$")%JD`e.*bGWDg2Jxyy|pBDCAom8 vFCKIQNo|%# t|›FOktbU1)LCRXTY>7H@/$~r~=Aw|ea>>=2((jjwd**$|t2*RLо(*'x92MY+$NLSQxuA>FGQT)kY?'`s 갮tttssq C@MKʾ edC;û}=8˾ѻҼ˶T\2 0*+<0)6\[(pD2].^OCob8ث#K_IVk\G~7NB$uڑb\GFxhYq`o_o\V~3.M;H<"ZJ0iF=39{ #20}`~y\E1mͷ󙳯YWLGj_ZP6nU9P=txr|ys}8+C +&+cW`Jv8#MʹaU&;aWQJ@;ЀĠD#]JND=̅;%=gX?ȸ "'DȮ5o@Y3T/ٟ_CByof¸gHaBX󔱙C-vF퀋jdDKfc#qdaٽxqWZPQndeF:JdzH5ye_m**BFF^2&gYҾA:^"n7;3gVeZJYѷqfMD.\[f}cZAqST6GCǔW>&nĵN'n~tBD;tחM7}\E(*ob4ZL !Cgd2%XinNU_fq[!8ø+!Inc1ǒ\=4F4BG2\>QR~BR2{l8( +sƕӢ+_- +yJWYLXZMF=oޥck5pgh~tuO0il!+ΦױNOJݯ492eaKH'"NQ~䥺Ym7Ceq-;%6$ 7-ÊmkOJ 6)_[үƔ"z|xt=-l|je`[02zq9;HLmg0+fjWNbdGE80! ?G;@kfoqwz¼ w|lh @.[IbyAAYM#%'q1.|URZTܜx" zA4fYiaؖ?6qhjo25 +!xmb^ggPWma52' %E=}snP?LIvo' SQQXOL7&\J8 ǒwYl嵳 + + +hhhJJNttrMJTR!_^\TA9:4a`˾ѻҼ˶Ya7.,)84>;3ATS Ə! 9E6*ɜJ='(YBOϸykU?>J,~jJՌýt!!󆘉'0k.(N&W1pC>4:մbKY +!î?,=WR6va6"]YU]SMԯ5R*D1h}uoy6)A# ,%c~q<,\}-`>ϓ0-҂b5or^cîAɂK5Mٿ\M5F*d|c5oDa[6't!of\طsT7;䇊r0bRy5}4|o}2%"Ľ=6¸PDUym~!PSMZYYq!}8.`Y4 r_j `bZkZi̲Լ4\!;޾<yEaZ*պ=$l4'!qk4>ڥx&!񰝆E}Lx)Ѡ@4\PI2$Wg'0R=8%B٣J?/QW>(L˲;&PJ()S~9 kjQuT=J0F!,z +{qD;m4<)!!׵=W!ΦױNOJݬ2;2}mn !eRt&kc<,+ ='bK#^\:/F=%hU>, px%嘎xʼ'm\AA;8(Նtgwn a]miJw!/*LFt0%XLQog>t +{$(zi &P=vo#eLN\  Z!!oa)#E6PA|i# CE!c_ZR!k7(uh9.ɽW# }d!" ZZZHGKzzzEJ:=fY9-8;7,_TNH#eҵӶ׿ƫab\씇}+*1"#!ۣ8D o2)Xg%"vxmUUl&&<%]+GͷA1f]Bpz 344iOa+<0}؋oށw6q*3>k`C9IMP^[^mLP(+"3&sAcZH4#(оS9* o (,d$#3qoſ=7`+b ! (o2-6"2)fXDnm[.-a0Ǭ !$/ :fV/ 7cve{@FFť(2+~e\D<{;J u{7ԘrO>5@7t;!)Ns-8n&)5+/ɾݙ8>\e)ﭱ [Ν|u!r +O's[w=ZU9w[o$-.002D_xOe^2)4(e^*$&jE"EqvZf L;DJZmvtw64)ұ ,@ +(c?/z -JET ap,J/"%.<(na 2+*Md}") gΦױNOJݬ2;2}=@HI +kc5&)Φ +!?)YB#RPJ>62xo~bO!%h`j{ +dpWWKIhW`e[) f!}.)jc1.?4TI@-zfٓf˜ nt! q`zt'Ʋh¶oaWP))w%&sxA2XIjW1?AFBνJ?ۭ,/qj~*:"t[-ӷvvtoooDJ:=UID8)+sqfҵӶ׿ƫZ[V w&)/!'$0D~q%~bq/MBLcFHD3 i`E^h67 I0fLZ  +[܏TdAYM21ig"-E;[Q$)`cq +" +\)zh! =7=Nbiz$` #(9 /RGezt{uR)13`2,5,:# +nлʸ0 *!%0 Myi(3'(!p~vu&$6yrj O== yZt:JŊ7'TC + l$I6o:-O~0:#"JQbk.%c JX*R_2lbxl)sL^@&Z?T2!!#,/@c|  &&v#.(wp@)ng)#Ytn=0#,GUZTgwhp*)*N&s)PI.`E_pۄ}("z"pz|!2UZ~$& +!)aiu\s 6BLYloIbMO+-du (Wgwm }v!))0LSϓ0漡~~~ڀ|pprMKROŻ"_W914:p!ȿܺ\c1 ۩R8,^,*/r"6!^lAݧDLTi_hYRr?>MC3YIG Pwh!x^W br$QCο%39O`J횒 hu~>,'HN bqqdq8@/m29?5/a~wŲ7&z 'x!2s\ʇF/z 22O%gP2jhz.9>=$#psU* 1$56c^uH=J?%&Xk ?kv@^H%cQ- +\ܼJB_EHķ&_䂎B&)%}vӸ`hܐ߱xybV'1ޣ.<v)w}{krzDF蜨XUttLn}vv(ݮÔ dCTHFZid29! 0@ n[f2#Lo`\.25!􈁟3<}ո25pdXf|EOSҽ$ i:ΦױNOJҲ79-{5)YEҢqhf`ST! +~t)2-@{;;!2{ex)!Ώlq5?P:PI%n{DqVPrJEgX>S;.gY! 22ZZȩ{=J ! +L~9-!G;ĩY6Nd]&h?Ziq% !!SS=:b|h0{' +,}BF0,#xsiCU %#ئ") wgG), )}oBA4 +RHGH{M}z\J48?3l 1`0(DWZ0ת~$]UT'-6hc li|boi-4o")d'#qeB\^ R{}Z"&G1auTEoeCC"BwB=wQK\MZJXHZJb=iCgL]C^@hJfFZ:W=W=WAYC\?aDfBiE[=P2P:r]GdA_=_;e@Y>M3cCH)Y4|WZ;kJ[<_?W5[:[>X;\IWC^=Z9Z=[>]>U6P2zP2zP+jD]@S6eDY8I-`DaEhKhKaEaC!%M>WHkTM70$V[O77==MU5=kQO6dD_?^?^?L/}hJQ3eGlF^9P7T;Z=[?X7\<\?V9L6I2|M8zT>Z=dFdJZAY9cBcGZ=bDT6P2Z<`BZ=Z>aET9S8[BgMaFY=\?jLJ+ZU:^CZ=jLT=[ET6bDE-ZAgEb@[E]GZ@R8U7Y;lIU3`IO8bA^=L.\=aHUY6V'2JoSntXrpubJN -- 6 36011/ +" + &-"#!0# +!!)   /@8 2 #%  " .7%% !, ,. SLx Y[$>9#*/ *  "+"  +!)   1) + *D* "# 4) 6 ) +  )4" - /.$(  +""/  + + " +# " + + !+.3 0 $, %!#$! ' &'-06游ʷ̼ѾҿگeeE&11.A=(2 ))#sLɶð'11  $!# & .!$.! IJ q5 55 +  [ 1(3"=0% Z2m>XA59' +8'"/& LZ +'))* 02  $%BB +++ ΦױNOJ汬=93ͷҼӷԸػ߬bYc   '.!! $')53* 2"':210 +)+ # +9,970&#+, + )<:+!%$.137.%!),$'<! %+($ !"@? <> /2 +-  "! + +&&$$77ΦױNOJ泮=93ͷҼӷԸػ߬ofp#* 0, ;+% )#3. 2,"!6;822-' 9;<=5%22.3&   "33!#$)*25&(!"* + / & + +!'..( + # >9 +F< NP  [A1!$ + !2"J* +2#2!5 !  "44'ΦױNOJ䵩:/kJ7WC]Xc],]O}} Ftl=+lY\IcPWI³2E?Zdf|rgJ|셁30w +t(#/2_Rq]UfaQLhe,#ַ׸бѭpjb"8$=L[b\6Z"' <('#$]O/'.215'q*O= + + .hS3@yPѦ#( =):T + U +!) %Z%,AJ8ڎiwq'̽f '>@V%UUYi4= m>Ԝ Ξ˛mcbKBeOYbJ_wX[=p~nV|fNtI+M,&ΦױNOJ䵩;0l ~tfĬ|%skjW`\|@?Z^}."ocso$(T_XZf ַ׸бѭibZ !2(4/0rh*N߹-(*"+  璓35-  9=( ڏ "%u~8/- 2FE+2 #"2N& + MJ$%F*627-  + ۃۃ , !p_<n_ǎsk k)"د{f?bP4Զ"  "L=($!',0+w@OMIՉߓ];<.IXL=&l<=?BHyhg_ƽHskm>: ̔&ѹT= ɿT>HfPZ*lZBWqRne yZCihT6Y+ ΦױNOJ׳88-Z vw@5…y+ť |sZ]<3 AYPg`/2_p4F \D}z&!.қiiGy=TXT9*K + ߲ըޘΉ̽7DusʬϷJ9Ÿ>$$_8>eiY\5!<#"!D y|K5J^ςRvoe844ŭ>- <P:PbKbHB*g2lA;,&ٽI/[8` ΦױNOJز55*W1!pp@?A=eauh6)򆐘<1{}""[ooPMRO +}}tldgδ!"oJJ 0(djzp+"bfIF74sz30tv!oka]w/$tv{`Z}wXQ!u~x|}=={}zC9;1礡(%v45t38_''l-#bpk:6|VRLJ~jl"R2)QH=;MJOMTOڛ;6\]]YPKWUDB  z`_HG_ZJUlb]=9RL "[WaW70]JHH2XC=6¿:-bU_g65%%hngMGBEfeh XKCRILCE8MIoj+38s|ki=:Ϊ?:VPB<|uAGxu{TTMMA@NQu<26,A8RIEC*) lJ==0ӽԾȲ۬onjS@IVCK$JNmq'OP +UKBHaZ@ +H=.Ap/"&!˓ FBG6hW§@GrDC]Wxq_RG:mYjY;*F9AF)Zbzj^-"Z[ZO|UQ;>]S9/D9=F|c_33NMs)+Ufc +JI +gOUFB=/ έWLE;)%""譺91,'Ze,&=4&*,2==VV22)kr)sbǞ3G.̬*뱺'(~nttv=2HLp($kzJFQFŲYM=2~%$CGUFus`^"75L@IKSV4*HJJDha" ~m v  |;/idYXZY 쵬嫪U`'=)RZ8{Z9Js g|d/2,'<3+5/UNa="`}ʺLM>ah nTW=D-S<"$ bY1n_hCL8#uL7$0;\6iB~dytzU$;BSQ|6D'2Դ +"MKVF%˸/jH2 0,"|zq{r} )Fqz^A'ʴ-223 )h2#kZWWKZMj{dSb.Y;ZH="uYXA%|oXqPN; 6)'/EZ?jV=Sku,Ա:6sz$2rBZ(5,6)h !-R2z{EwxB;AMTo]~R<وgl nP_gg6ӟH$"WNQa_JО2/=/ڴ)3$-siN?"iּeL* +%5tO74{OWD# V zތлj" |Bk &D0u`/3 oP=:H |c};#=OKOM\PźMCx!Ä (׆tq )si"PKZUFERQ쵬嫪\h.jzyDTS ;~[rGDR%3`ZTOG>=R,&`Yb&0&o45'nt+t2i,.)D\4|neQkUk݁Y`}握*p)Z3rYvM4QZUsj8EE2"!bkF)4 +W1;+cuYķVG&XEea=;7!Dv#/0;j|mh[, 2=A-_aL⨐& |LED4XH))E9Uk^{XGVD3B70ơ1 okX<* +|iMaJ:$t{v( kt]Η4*R" (Sg+70tp +5&L۸62+==${Z~("&1 "-lKמfm=DE3o^LYBD.Z^JJN0""d?O+==WNQJI3л')6Ğp-7!q) +oç2EaYHZ]za>ӹ,-p- ?;x12.ټJ%']˾& 甄o"0\JqCKt% n0'ȳhTQJ3ޗ~)Ex`3/#,/!Xĵ \!)'KlpΦױNOJᶮ92X0({닊px|s +tȽ]b䯶$mVJC883Ȃ֯d\' + viOG=4.0pw }{DB">8SYVK +ŹHJCJvOC8,[^LjABz{׫ji.3 + eX(q~00\OSFݳLENU  ok)*{%"{xwAGGM r  1 p^٢ +]R)lr)+"'\kc|~'(oh$າp{8= eB>ECef*./2$|s2!vd'! !ӲԳٶbk@-!RYm_:u5CO'mz#uTU0\`!h]%?Pmnp5UFW_^-4îJ_.2-JrV?$x-2ߑiu+=%&>&gŲ:RRg+򱱠! f{.%fMW;DG%a@@ && +ӻem7J\IgW8)@U\n 뇹I>9?3ZN'$=WAP+2XQ-$ί28))|evy_խ*/}Bs*n!.bU' ,o 6$ +uqn|#  $v + 4"eo>3&(dl9D+)) V>H1 +EKUa!颶 bPBF8nYJ9*g0$Q²91Ρ|h u-oI8oveW6< +05&)!Ela,&gX:a='dB!,l +  tx2(308/.Z8N,=/+ñ3%=Ľ#&)<55. ΦױNOJ۲81W4,_^x#x"wn)!' Ɂkaf!fa{"YR3,y(oaC;@8 + w|$}u:3\bw{>9 PR:A@6WL>2OCVRy"%ur&+?kl~{ +XW))yl+%} *#ah wr!}eoʿ28X^!}ƛ '$hVǠyn +ǟqx "yOT' ! un' 顙 +l/2CAv41^\klޛQXrXQ)"$. tqr + +fa|IMy~ӲԳٶT\2C[lc" +",jYM){ST/MQ) ZP!))H=JP^"oZE/aJ*@pf/%l|r >?P-$#&ɹT\[JSR) &K L%%6B[?="v 16`m#@))=.oλ?XH\!𥚚^UF~I$-=ƑʔjjS&GZI(EZXi'Y=2'bVDAZBEɔk=QZ2! ^R%$^A!/ffZ~g D)m/ca-"6٥//+z*& wpy{*41&$z *Zr6=/.D<@!Zb=Ho>>'ؾoW>(LS$P\埣]=)Pŵ)VGy-Z129-b>+f +q) +jL@OJ\X˫TK X:2&bY$36|^ZKOOPnbfjKD}-#67GJzr3-FF!V[lg[WSV6/!a`F>LCyC:kbz-%g]6-nfd^!}5'IGxo/'0(wp:2%.)lg37 7'@0$!32ꏣQF╊8/x~z~(SDso^u$Ȏ>Evmo$ 5*3)$!ajk?@*!zkvm!$nnr80Ä{! BC,-z-0o4/|vtyvx<3QIkn(*^#!SS%mo>/%VḼ{x#90% OT|ӭԮ׻嬩jd}N*g=%z}}]݀MQ^aF7-J;1NqY.NJBʒ>8I@|DU\`JGB`5lB;iZ[W()$oj *2)a3?NÒ4.)NV3|?10 P6c<"NJ8KnnJB?PBƷf(+u1/ Ru4-BJL%۰*3 _pmn7/phW,7U\`~?DRZqjvRMT2-3gU+nRQ7ͱr+>=9-^SGy2\) R_\kw9*v)/)#2pb21gcY*oKF7ē6$^ki3y C2\73~ae% & +Vcoa"N<)elXo`n)%92+ og~˅C?'gfLF+>%yMK_Z==)oY+#0D'17VxD=e_[+(JA2)=vpt.),ZMw=2Z- Vvh :7)%iR#\0:#V>Ҭ{wS! =D!(e2%'[`b^iJ$=!)}ML1tYU2R?`B0P5;ı,+ +k#b-RYDREQ7BҺeF?xl]WUeP+"D2J~[#.!W{QI#XB-09ΦױNOJܴ{:Bڅ{v֦׸yu䠜ٸx|x罾ɾ{݋zuyo~uul~v˻pa~|~y褙|bQtqrpꒆѠyj~Ï֐vlyj*]Tv䬱ȷvs輹擈sӭԮ׻嬩PJc&5rYr|vy]z_!/шw̢ż}tLDŽoAGkQ:hPo`{iʳMOsl˓uTG\򣷰d|ğ/#!xyU>}zEʻj#fUzʧ[ʟ}J蟛*)` u=sX{ijR[th +)ܚm wi3k廠p|̽1wo|vg`ZKڙĉPcjpyoDxÞ!K8!{}sIŷ~5t}?ēy? zp!JkjV)jS!3}։R|zľ¥yfcUԐxͮ +;z޺^Bz3׷С~ZϪκ=+vשvƸXx]i}@~oi=B!ʱJE##˖›k޵22ΦױNOJ536Esuprzp9pg0nb,s=dR4r`Bh_xo rdugqi|swc9bN%|l+sc#f[rhra(o^%]Mrb wg&o^lj%hf!}{-tr%soZWqo ~jngk[gxim%rv.kp6pvfpisZ\ pr4: +2(6dZikZPfUKmc5mc5fdtr*[h|`^/om=s~mwzrFd\1kpkZ*yi8nlzovkZl=j{KlZn[_qYk|orf WWoo]agkmumun]L{kZqj'[T `Yrk(~|~qm{_cuy3]O4XJ/kd#D=jtp{~{Ga^+jg5UR!de ]^qnronewo'nia\ WWaaz})fizs*g`ub+s`)m`_SkYðΦױNOJ869?4'E6,k\QClmňkeѭ9&" ţ߶۴ZUQxюԢڨ׹onؾ׽rצ= &ڢy݋zqو?fֽَ̈ݖӖwyԠ}zݰjmtpݩlv҅ւlޙ׍ڠݭuoÚҩ|zw҅}ٶءݦuo؈G1vowhqo{ީީsqՔحfk۠۠ۡںwz֩ӏ}xݕԂy^fxԓ|ۙB3ہv߮ݬSe߬Z^̝\J٥JbfxَtiNޖ~xWa؏¯[]עՄߕ܄ޣΦױNOJy' &!#&9J+25 +CB  &)! + " 7 +!:& +0! +2  + + + #)(=$ +" +wlz{՞MkRpokbhp{knoso}vayznٟtukؕ?>ٕxsshtxynwaz{y~ΦױNOJv8A^۶ܫe\X 3'")- $$.14V //73* @B !#!  +  +  )  +#).<& ! $!+ !)   wt|}~zxw|SZoΦױNOJ೩8/]pӻԼ׹ꬨZ]U20./ +   %#%'%,;6;? ,2 KK"")+ + + +!98FE+* + + ΦױNOJ೩8/]pӻԼ׹ꬨ[^V1.-. + + !!)* +=8@+A& &$KJ""%'  B=ED)(!%  + +ΦױNOJ۳84Dyض笩ZZq &'. $$)2 6: +$' +@5 !" JI ++1 +  '&  +  ΦױNOJ۳84Dyض笩ZZp## 2$ $#&2*@ #$) 8G  + +!!GI,-)'  ΦױNOJԳ88-zsuhfY虙nq²~nRFid|ʺbUp^ډ{춫ߤ{Y^S 66!&$r(04  +˘_sDo,-^=o@}h9h!:2$'! //%%),2*|w 66+, + ""!! *2. pwsq|򐐐mmmhhhǑΦױNOJԳ88-1$SS6:]| +}J=2.b~phVH6$q춫ߤ{Y^S 44!$!^J*\,@B  +m,} a& # ,0+erp@B^  % 81f;3i)*#!00 ))+--%5$>-!'2"Z]L#97)( $$!$ L4WN6Y #21!!W]g$-ᝧ.7!ddd^^^OOOIII!!!```fc.N9aZSL~tD;b]YOΦױNOJԵ:7/rk>9vlB6D>ߺ!ܘ|1&rkrh/hOomשت¶ܳYaM'# %0.+-3(i  85A> +VRȫ65Ǿ(M+Wּ,2XOD<bTǸݓ::ZJGϲ43=J +W'.H?2)*\%̓)*UN@D6,,))+*>=:=  !JJ<=*'!')1_I! + + 2<  +28pP= >G$(RZZ'/.")uo}JJJ>>>!!!ooo÷\]dgJPXruΦױNOJڱ>8I5!aksF=dk|4;Ke^ 7?hu~JVhE=jYi\!}]O$}a^I;prIJket4,QILB=9' mby;5ic2#sc?0kd{2.`[x` ޺ư82C6bY'!pj%ldwoD=dO +vfȰ!ZWxu +REJ7m]:+og  ]<2*)ona84NJpg̿VPrm'#q]Qj_ZP92ohE4nTL1'uWIQC1#gcxt( +/Zf_˸<*e^2+R@=>'ypܯ}n)E@%o[ wG@ uN=! RD3&/)`YJ=rEӿ5#RZQFGGG9NefHI|fǦ1ZqWe}bpEJ5t2+d __IYEWr^pI!tJ/ZuuBHHNݟN=OSFlZSo;.Foazf$b9 00%JAQ[_:rzHh}o.% wp=xq>E2I!/oW}YV9BE24qJ:!`fɰ>9lf,>(gҹTYg)%ɲ#6x 󌛔xXQ6tJ;,BGJpbB4u]&z{axg;*WCdRmNL@4-92qop"kX`-B.K?H_MyߔZJF _Z3Mjf-dUyx)$ĿΦױNOJݯ92C[G@,1(|r(zDPbQIɸ$RGdV YJ&!D6i^=3>;. ,$$o&/)""{ +ퟫ5/| 2&(b]ngĽů@1dTkhyeR>vgyqm2)fYI=1(HBdXZP92{t%C4|,ĴupΦױNOJ屦9/Tt\& +ɹ$Ʌkz2|sv')n v\TB=!qm&"ZS+'E4bQ%w{) 2)rq*o\\W-(74hwK@ G8 us&"'ĺ!H/U<&( Ϭ +ona(ZR\UJMi"!03x`Y=El`Q. ~,Vc}3+אָ1$'RG$UPmh22l='F/ +}H>_buRIRITW%!+&ԻռٶX`[ޱ/!d)J ,9Q)_M=JEQ ]y)*3(taU-,9H3;=v/▸b$=@7)!{ow$MV52c,%C@]#$=VCTAJe#2^8'\y`p 4I~aT\1GO$:0>4S(6 +b@gKJBAVG-\´%gc901pOIp/)OE&z};:|?ZpBR)wbHJ)+k) vns +DG;=.ɀlĶOЉN/.2/,='uomkp2I=Xob@>WU/FC> +ù|w/*GN}(-]LRPa\Г$ՔVP3.ixw9.B7qqBC "4^Eַ͟ t$#sg$ƽ0)|tWH2#\j7/$$!8-g[#m` P9YA I?HJ |7/NF!-)ԻռٶT\Xи)].Q,)9:/wıow"+L@VJ + Z8?BjX َ20|$7=4_Vqg1o`eH:>%&?ZHJ82 _ȴ$ l/!*VB%ZN^Y=n˜ RH5+30!!; ʺ#g7q;:>=T* ?Y]8646Jlvsm5.AXPd4 7AGnx~),[w"p FNd>N0{f>A<> +56AO <>TW2./*Ŀ+õ$iܔ]! $3owuPV8NB۲;:Yc?Ju 8Aտ~(0A0Jg)&he#+)$TaB9F(>5?YKkwwlAAATTT\\\u襰WR 2._bad;7u]O9++ʻ78U\?/yh +UI(~o`\ \V´' w""zq̿ΦױNOJ嵪=3Yul]- -%Ǒ' ~{22:`c!!raXoc5(!"ɻ y}| ! }8)rj)!Zi75 + UK2%G: -)RV.+vs>=ML\avy('۳^mF߮^cꌵ(X)'[H՟M,%Gsl+)/.rlZᴻ+2\ IO_i'?J/?fpk/2a^kG e #LB2gmTBC4=iR-`oj\ǻnh\M=9y:G/#0ŹYLiQOC===+++[[[ zzz/"УRT!"hoWZ63 ^W)!!ZN ӼqsVXwpqsx6;ȺӠLX +˯̽ΦױNOJ屦9/TsYJ3&S[ú)!ÃGKxЈ&!JH٤,,12LETH(֌ ?2Wc d`=Jo1%:Er($dc!!|mhPKIC$&km煊BDI@ӓh_*"rw(of!"} +kx53DH!&KHssԍ61gpx3):0܃Z^ZNnq}ebWJrv^bNQ!"AQn:1̊~u|/0E=ll!!v[e+'qvkYA*>(cl943/{pY]{v# )͟khfo y6(iY\edm6.jn"sqì*"umsxȆ(D;Wb!"if} &6)! ÿ52),'$}5DvszܽΤ%4d]KsJP|ntwo ^FOi(;,9o)l]F8n*4/Kil'E}-#ltꠇPPX2~^oV9!|dy6saCST5Bwf!.6$,!qh\%&$'~t1@,)!(kah顐CP&>2vsD))+kln~97\8?MJXV`}]44www{!JMWV.76! vf׽28!)*#Ϲ>*eoF-!"͛MB qnj3*/#Sb{kwIKUJ7*pr?S,"X寯//$JY@:M_en1.z)+,;1(!KE6Qc\Yqn_^gfLKa`sxhme_pk`c]`^\ecg^phzzPPinkolhb^&  [Vc]qlW\_ejo]b`bxzdjkpokZUbdmnrwSXedut^_ablq\bT\r{wzY[ejZ_MWjsmllkOLxuTVgiqvchc`gdmlbagljnSVknmojlRQjijgol_bmohmPUcijoXYZ\wxklRSicZUniojcbedWWkkc`ebkigePVhndls{YW^\UWikkjba^Vxo\[vu_hZcdn_iaYqi[ZlkYLwjop^_]jgs[_]afnfneca_fhopidfajlZ[os]arnWSIIxxUWsunjhd_qL^\_ehipair{T\bZjbifomjmfik_eYZdoycahffcurWVkjfeon`fgmms[bUTgf^\qoc^e`eibfS[hpl_`T]]aa^[`]vylongd]X\nrQW`fhfjhbgnr`WZQmhytYYno^`rtXVlj_egmkq^e`dX[on49_dfi\_ackmifb_c\SLvqlg`bhjW`S\lucmNVowaY`XyosjRZgodbZXgimoedkj_PteWajtz[cim\`e`okeaZWZ_ag`a\]omom_k_kiikkkm]_jlgiZ]fjnq]aioRXfkZ^x}af\d]ejj``aabboocc`Y٤ڥ϶ߟvQXa_Vhtqcpn_jePhcNjn'bf lap~sspOda@jn&tx0go fn~t}mclniWa\Ja] tQDr{n`yNXpFv^doX]e=Zs2u]pYSl?b{N\ol+gV4oMgU6o]>ph4of2ai1mtlo?l^~j\|@ff%so/oj*fpceob`oFbpHptw[_byud`xgk;Se_Ruobsx!mqtlZkbQi|M^qC}r6~s7^Xpj\uVo s\Qh\d\GnfPfzDmJgOlzbobm_ckho +wm|g\l|Zb_>VS2jmecf^\srg|tqTomO]pWcv\eYJwk[`sRReDy`|cbU+xMiwR`oJwj$re fke[`Zsoeb^TllJaa?sw=pt;UX%|J_h kse]jjbo{xjmj[\e ox!v+lanZeX)!!!lllZVslc[mnabjrenfiZ]kloouN[deklbdegjokpnlVTpmkghi_`suceotZ_lnnplmTUlkbafdmklk\[suTVcfbej`ka\Y_\gfkjjfolecb`otRWloZ]_[olipqyZ^`d^aeh`^nldc!&zjo]b\h]iqk^Xoi̽ΦױNOJ泮83F;2#m2(~+!w³֯`b=je_1,'y=!!!! ((.. ^+1Tad>2$$""&& --!!78GF--44))** 8800,,;;2299"19/0%**&&(())"+#"),#0/160(.4Ἁ ;;(*$EC *:)) &&))!&,())$$..--99-. rikf)VZJxdc_VUQ3c\z87`@ΦױNOJ泮83F³֯jlGſ""((((&&..44&& Ǚl;7),,00))$$55))AA%%PP66>=((0011&&&& >>66 $$22AA99??.)(.6@*/11,,..00'69'.-!0D:697=2)4:;555!$GH10,1G@!&==""00$$&&,,00",!22$$00**44""77##""BC77&&gpϾΦױNOJ۳85?ӻԼгϭ``HΦױNOJ۳85?ӻԼгϭbbJΦױNOJγ85<ղֳ⳯ƭ^^WΦױNOJγ85<ղֳ⳯ƭYYQΦױNOJγ84A֫׬í``bΦױNOJγ84AѕZTsuqiېv{{{XXXQQQXXXJJJiiii`̽^P`Vfdpqhioovɑmm֫׬íWWY增lhliioy̓}PJ]`m^ôΦױNOJҮ72K D7kl%/)72|* G. mmm򘘘!!!yyy}}}EEE...ooo<<<UUUy o)rtqS@iYZT<5+OG[F)QIbZһabv!ZLSLխ֮쵬ͬ_a`i ȟOCZU% oWQMH:1]RKF0*F2*$uEF`D=!XKMIWH)nI7$>6?:_YuwZ\t0ũ?3^T1')ΦױNOJֱ82Lxk2&b\@l)#t ~peaϿy:)ZI!]X;4cID*svj]X'ΦױNOJ޴90OcQA0 ij$$ƺõǹ +]BJ0xxxwww󐐐󗗗mmm˸eQ&~lŽʸ̾!H2YCɻʼӵԶ۵⬪fm[м¿OMo(:&mX5#Ʉ6-pl-q5"ye̺лs"sZ2ȼȵֽNAUDĤʻĵnZ4"|=2VN_QA3"˾8-əοºΦױNOJ۴8/NeSno<5)"zrKEXQ'#|uvpq00zu3/|dg)fY$vojMF..\RJUMRQmlfYaf{ FMB#qr02f44vTTr)77}b]QRVT'O4vvvsss雛}}} Q?N=A.1ᬸ:)෤ +qwo1)F?!{ƶ +VR:5|XGpp$$TCE_ay+*uh.#plƘ>2!QPwozƂ~KH-1\MVuia!LM&jhB@ZV!tcc2/@*R<_R1$84[W݋ie|xČ1+|{upjNHjm"|}@?u?>t4*siݵ?1"bch`23\~4-ƾVZq|hON0ӵԶ۵⬪PWFi^2( +vjrhS@zg%%\%l`JHolMKon>= TOy?+oY/ž90e` +ZGL9WF|uZI>0=/gY´Ŷ;-vbE2x z~om22Qr;2~nvL:]Z&yROEXVdbmlrnLH{p[Q3%Q9la~s&ZO|pZ;)~uc%"cY΅{D;ykvhpYF/ w6&}l5n_ڐ?2\TUL|qo[cey{D:tmJJSW)/ei>Aq { tiIOUu|zqME--_KJT>=TRmj52ĭ2g\}>FhXY|yዐfp<5 +/۱ N=)r +! ƵZe?%+&JE! [U/!|94_XLCsk-%.ʌtF;j^52po& zeiP # '!)~|fO>TC{<3o%- וfm!B=NI)'|z<9[V i% fT7,pk{w' 2.gg;,cTZYJ=*" {qBHLOE>>84:|d_rUH! $ pZwn3*"DFGE x#!yЎ_Y92)Nvss(&df /(ty62D4&ol()&)tΦױNOJָ=6LdR'!]O,$lq<>%%u|sZO@=he̐fhDGKDoo-*(XI} +~oZJeeYY,"dYJ2R9ttt + + +vvv===TTT + + + be,)hfǰ} %?5srhggY/؄p!?;]Yffff7&wezjxqA; sKADD[]&!E2O@3Ѡ ot?>‚~==ZaC=33K=QB&+#]g@; hdW&VYDHΦױNOJ̰61=okX$ ZLJ=pt+#  {ch32vhњ+YT JSNKDJ^a1(YO{z44Ň xZa1!#ޫʉH8P@>%?&tttpppsss...RRR #2 +rºdV҉ȼ׎{55{~ު+oY"B3땢 odWK>:HF'"ێ $)&&K=N?ym(D5"Ф~dfȷqx^k-( vekbY3+ #)OQGzظ[j6" +HPtt{0.k$KWa , [NJ4eNƒyOJy, eRQV32榪 wn^셐޾s  +-(ep980n`z{;1&Ҭ$E?2*f]b`e-,"ZWYXOI4242*"qqijb_]k!%!6~z +?CBORZ47?s5B HFlz^c^aII!y}W[@2'ΫZR&`bb^ 825072=1R^o_]/'/'"d}QB&Z[NNjnǍ29zlp"'}sQS=>~X`IJ%,$RN +vPM fU\_uxehwz4-nfxr,'IE&" |wD= zz!ibDHlo>g_?C]]XWCB{wTUH?v$#z* pl;6;!iextIM=4-%CAol`63|d\Ԍ +gZLMyPJZZwrA=MN!H>) ZZ D>XWbaFC~reh=7277=!B:py,'—sz{00"$ELq+)$%:>KB|C@gaJD63(%xq75ЦرNNL鯫<8.}{橭ŽXXݻΘ⬲~雒겷﨤mnfЫ䮬੮࡯|~¿⦖q߸ܿ鷼qt᪙vq 䔖ឡ镘ۍٖٞܥƸȫPZQ狍ɾ lg窥ۓ՞綸{wzȸѳjUשּׂ몱߽"ɞȸ½ڛ׿ꎎ먦diϫͽٹʹݘո≊檫pY!]a뜤˒¿ĽҾųЦرNNL쯬=:2heonjh~ordlpxmowwzz}ouzzwws{u}||Älppukl2*:4f`snsnjfjfkfupngoiсz{tofsjۂdc~}wzfi{~xtngmmkppz}c^}}ppŀ}}fgopsuioiovvjm}z}jmxsohŅ~oqy|sptqysoiǂia€xgh&( oqZ拈]Zzxyw|zonussqwtuqpmlf}ẇsmuwswpt}|ˈnunuyx}|t~foxih{złz}rqtsjjhhswqurk{qqoompuy}svrzfnkjts†|hipqxtv{lpnmzy{wolooyyzxq~ks|iqzwxz{dboqy|gltyhkstюJIk[jguryxՏMA~z{haletxpttvvxtuxy~uqnjogvo~u|syvzwwxʀvwnowxvwpotsifyvwuopx}v{qslntsdcuymh|wx|hdgctsrqtnolwsy{uvr~zÁvuyuywvtpq~lkjkvw}~jhwuvwoooqɸˬmriutnmrsk\YJ{wzy|~~yyyqohfaytτooycjniiimmszdkqt~{|yiizvokF@snZX}je|rvmۉfftw}v|q{x|ynq|pkՂ|vtzxprvxhh{{wxA2+vr{wec}qmupwvttspmjom|zrlyr\`jVrr|x~zhgutuq΄yxedwvŀ΄xہuvtnlrn~y}wtozzxxvsxu|u|uxztvswptsxzyzrsuy~kplq}w|fmikmnnotzlq}su{qlք|jonrsmrl|}st}zԂqshjwxjh҃oovtƃwwoopxipge}{zxqo|x{wnklizvso͂~uqii{{~}zysooklgokvr{wzyvutxmps{~owovs{s{oprogd~HC _Z}}yy|puj΁t{ohb̋mjÁ~؆dbtqmjurʆjh~}a`yvkhilxwsr{xЉP@#hiwoun~|mkffccw{oropx|wyy{qyx{ilowv~uzzicͅJHIFy{^Uxonlʄ~rmppuj`|sۉnkc`Ł~oj|soqn}̅qooluynqsvwzwwfaoj}vtnЦرNNL밭=;2YQ(!=?)02TUHvwj9;1XZOA?. СF:/#ĐɸˬX]TJ=K<p\!YYjewrZJ%ЦرNNL𯬧<94Ͷѭ^`VЦرNNL򯬧:72Ͷѭ^`VЦرNNL986е֯^\QЦرNNL򱰮=<:е֯caVЦرNNL쳱867Ӱسa^V֟ڱNNL쳱867ʾشԲa^VצڱNNL嵱:67=>b33MLL~??pI>99SLAaYg]xZNtmǼҭήbc]WG|ld`NE@ú嫳Z\69m׳ᢨö빹먫ηξ +~׭സղĿADc>Aðmjeed`ֱNNLֶ;55ek^` +KHᕔ)*znhz{ d[II11icwvt᷵2%!oqtv32|vzLPRExk: ߈ooJ=ݺu:)ܐ:9JA( ! ǐ `bZ\=> +01| tge<:he+zmICmga\a\oj{=,==TT߯D.DH^Y?:^X81XP}u}4.]Wm{}ϋ葒HNyjrtȻwI=錐bfTJĺNFomvt3+Ҷwn(HMO@wq1+IGonHF|r-$&6'ad4'xjzJCae b_⿽SQ+2}eZI>~lE3눃ꕑt益Z]QIvI:ӟOIρzXObYf[I>ޗMJ {PGok-)A9~82tn{)YR͈{OICѬYa`koPvwH=3)~~UUFD@:tnހyC3߶ ho+$T>% +!D,<,UT{zֿ+"=7GB|4+J@j_|lOKaOH2~g⎍PJÉ*$71a_6&o|2.aXOFߌ[YSS8$svoq21r"˜C=x/"5(™CDai)f[21vx;7hmC4)(731+ztx̤D=KCoh>4|yww{{OF<+2!WD{C?ksedٻWW-0_XG?}sJ@{ IM>;rn|KM%"nb1&/%郃 }I@7/VPqe z<2kZhi'(fWH%MH~6DkC? @6}w}yVRKExqqj81Ԍ}uNG-)"(ACno߂z)>1_Q3,phe`nmiٱNNLֶ;55ot=?"湺!)$ G9,zѿ/"OBi* +-!{nI?g]aR$s%(%v|!ZZ&q [_KF_ZUY} +>.\K#%DD48*nW hbke ,&vo~ PRɽƶPDsgum| o`'&$ y^N! ld*.j +=;7=ʿ r! z˗{un08lnpƽ1)r;,YI YR +/%roo}t@5͡%%]Ibxr9,dV*+j1'k`!@?C;>0IG0,X~xnf0)ZW`XbYcY]L8(†r`\6>[EE47º,$XYGICH.0~ZV~no(%}q24F3$ H?IC<1 " +rm" +ɾ(RHۂ|iemmQJ +c[HCQW"pr2+bZn_þnkf|{w۱NNL޲˳83Y)A:Ɯ `a݈ṫVK2(/F=H~n$ ܑ}2)g^ve# +p  +v|#! }2=y[`x9Ayqs׆:;C=/)QJ2-vqE?掟 +З +lwepmh +VPz[c#~t Zf,,vn&dm!&17OSxgoqzȳy镠杖62A=WZûhkʌ LC_o:3 +m!! d]mf +GJFKfec321)(&CB@؄|[YT쭪TZZ "mb]so{"" C2E3""_ cabVUHF m+-rHIghv}sm32-,ZYᤩVI3( HR=GywFJhZ)īg|0%ae+,w`X}ˁ!SQ tozoyx!o#kGMJPZa06 o^ay|qrč h^gfȹ(/l,'~xte%bk#(29VY~hoovȺ ہtZ_%!XPvn|넀UU;:YWI/"JQQVȺkfnpu|,!禚y~3ln ʽ I>G:pnijie߱NNLͮ72XbZ!z|/0 ̾mb)  (,\aսs&ˏ{:2_Wq`yu{ + jo)'zy=GKPai21̛ߧ*$*$ib앑 e_Ȋs m)%)$xs!50%9º +jh=<t +~x! lc +w)- CJKO+&+!$ӈԚy!p&)NR{@7OF ^o*${04=AAGyxv=<:퇄\ZU]cc0&XM"gTBC2[vxgi]\21,*^z{))bxqed&%JI!E9F:­ZeHR32>=!$i["]RRSTK+&/-VT!"!kb!'{_fjp!(| u8/x.%ͮ50FMsd( u~).DJRU.+*"ˈ{ wo__98&iSF/"7>JN-!裸 +16 k!MBE:TR44$%UaEB"]{Ľ߳im_,0#olgqpmݱNNLʦ84Wi`Ӫrv*%pt1) ϩ]O2$ȭURޗ{0'ZOncD>|vvFF"jn;?~"! GEº$YT0%ywNHJCXdjB;N=gU:0bX`T}!!F=UK}~%!fZ!)odx;>ʥ E>XQno'cO!&݊x"yn 72cg94|q3)$ɡnl#!ϽIE;4 +F>Φ¸UN92ҵIK$}_Y~} +7)ej !ඡ9DQ^hDA,%2.ܺ|ytXUPSYW +v9*K=##z&ȹJ=4( +tz)&('qdc^ZNJ&! vts Ž1)IB92ȼ31{~D;JAòJQAG,)zvlnqRG'lc!!bYR l ka sr !@6yp-"@:*$)yf"y}ej2$4' `TKI)!J@UWDF~}}g 𑜴]i99 rvLP8?V_w0.zxun jp"nc?;0%ʨ!gbಭ1(YO걯}=7C=yYY rkYGehjm:0'rtH<$#++ZZ)aa׏-%D<뢡NM ZY HC,(73H@1)mm`jsYTtm<5kk-#[Q~otgbto尷PE ܔaS64)#rc($=7^X prȾ-$mdo$H;TOwVU;;}zzWT[Y;-,ֶ21~|sdǩJBVMᓘ27@H+2% WQP>6=iwz0''ZY~XRE@pl쑄TXa_~|aVZ_92F>#wpwLJ\khcihdNNL⴮50Oټ皘䍋զδܙ氯x듋|ijڷ⵱蓑ꅅʺ펉}pXKޯl]sn«ŷǺaB%Ļz~tzٟ}s]Sҧ^U͝۝䑆螖v{Ҧ٦쟞w얎돊挂䴲דuݤږԥϪ벲~䓌ۘذs≂ΗȽ꩕ި⧣䒐ڛ߫~תrx嚒䛚눅QNJپǴUZT~yȕţӌݺ제驨w畖֠籱䡜ﰫ|xڣ~~~½vue}䬬|ܦ~豬{uذگu~xؖէѮﯯ䗑찰О枚袙~ڙΡv}yn[Fµ~楞¿ݹʿomhed`ӱNNL䲬2,K|plږߢ}لȝ⠗wꖌ~sy蜔~}}}r듐狈ē튆熂⊄$SGٗm^SEⓎ䒌ᕊpz{nyxi{nٝM/%~uwtk唉z텁xoz{{폂vw䑆y~~t܎⛓woޓv}}߇qlĚz}zxrц摊z'f[ۑ~x90ga瓏{r~謥Ċϛފډ䊅|tꌉאyuȓ{ޒxϊ~oŁ؅əᜒy~ƕ܉♓v흙}vߎՒېvtq쓊Ћʓoڋߠ~yyz|}ܕЃ™ywtnۑ֔{鑁ywt·ޘoהۑڈzъvxqzo~u蕍~撎vyn⡟닅鐊֑ؒ哎xy|؋~昊|u磜⒎׈͌⬫mjeOLHһ\a[셈艆ކx{wԅ~{{zɉ׆s{΅Œ׌хy{rxs٣|yۏ╏ፅ~{蓋|钉yߒ닄qlćږ뒒섃~ȍˋ׆Қ됌}zuz싅熁ڎ┅ىۗw~uꙑᒉynyَ擈s!z:*~y勃莅{ys{z{͆zt߇펊뗓x톁甐ْ圔~vz䟘懁⍈up͌퐉x}wД鐄y|ō~wӒ~t|u}}vԐ؍՘{ړ~v؅}ߌutq꓊ӈǔs~׋ߥ|}|䏈y敒tqƏnkꎂ{Ǔܟ}ptx街oh}uۡwj|t|ǡօَ✔rꑎވ}wv{v& <'~vꖊ}҈~Ӟ䉈yvƋؖ짟un܍y{{؈ۑܑyp睑u鍅{|ٙ듑샀ڂ~ތ钌퉂|u珉soԏ쇃䑐fc^qpmܱNNL⪦:6M|ݸQLBA^KJhkeG9d82[^YZU|b]ᎍBA=GFBNMJFEADC?ba]ED@KHIVRSSPKXUP˫]`XAAZ2QTfxwrCChc]ȷĻÿ伷½ZVPĿľ¼úĻǾĻý½ſſſڧZUO۲ONJ䫦~x伷Ϊý¼ľýĿ½ľýĿýſټýľſݹÿƽǾǾ¾ݻȿż½ľե +%!$  ʼýſ {vpD?:2-(ټ83.QLG%!ľˆ}$ ! +# upkͽοľ̷ZVPϺçľſijȿ¹ț̽αſýԪ^ZT۲ONJ䫦~x:501,'¼ýȊje_!־뜗#!KH?Ļٱ;7/*'%!lh_lh_ſĿ˴(#!*&!¼ſ|vľB=840*Ŀ½ý&! E@; ԻĿýſܣ¼ZVP@<6C>9Ƃ}w +¼¼ýý)&ZWNȿȿȧ+'!ytoplf~xſ=93KGA˧^ZT۲ONJ䫦~xľJE?~x  Ǖ_ZU ˷ Ŀzuo +}xr½;6172-ۨľԭe`Zzt#(#51+ E@; +~xC>9/*%UPJid^GB=!>:4¼HC=}wZUO +LHBkf`|ýC>951+|v  72-½य़<66yss4//0**=77<66"TNNoii+'!:50¼ý"y83.)% UPJ72-~xý[WQID>*&!ؓþľ40*@<6ý 膁{c^Y +fa[ ,(";61̨^ZT۲ONJ䫦~xFA< XSM ǝÅzojdþḳy߫soi{vp}xr +ľPKF,("ѪojdþGB=ţʽޅz|wq|>:43/)ܑ[WQ{vpľ׼ý¼ݴ¼=82$  40*ZVP$ +'!ܶ =93PKF½ſ soiA=7/*%  @<6VQK :50 +b]Xupk3/)tojſ:50?;5ͺC>9WRL<72 C==B== xrrjdd.))᭧ +C==KGA FA<0+&=93C>9 }xrLHB 94/{uý[WQNJD +ýᛖſ{u䝘~x{vpĿ~ys|vý~xyto;61=82Ϸojdؼqmg½ǟ{u}xr je_ VQK|v¼"C>9Ʈ~ysѰd_Z۲ONJ䫦~xХ}ƾ VQKWRL2-(ľ1,'KGAC>9 GB=%!!HC=܍ +XSM.)$UPJĿſҏ|x½)$! + E@=830$ e`\;62 + +RMJZVR ľtojýȞ)% HC=:500+& ~xXSM.)$ӫ |^ZTý¼ý plfľA=7.)$+'!3/)D?:+'!.)$TOJľJE?+'!PKF<72䤟nhh?::JDDڔ  ¼WRLHC=,("˔d_Z# +'!nic%!MIC '" +(#ID>-)#gb\E@=40,軶%!.)&$ YTPʸ%!?;5Ŀψ}"OJEzuo40*<72rnh  ,("ýӦje_۲ONJ䫦~x؞,("ZVP|vkf` }w ½ +YTNrnhQLG \XR-)#ҵո¾Ӛ"A=9ٹ@<8)$! fa]fa] zuqe`Z!̹ + 40*=82$ 3/)  "xsn¼ľĿRMH'"fa[B=8=93OJE94/40*ĿnicĿ|vvzzľ + }WRLB=80+&䕑 +b]X~ysˋ +kf`}{LHBӡE@;ɽ@<6 |þ941>:6 + ͝0+(򊅁Ŀ]YU JE? Ŀ}xrUPJ{vp}ſ2-(>:4}xrһnicPKFߚVQK۲ONJ䫦~x ľ)% OJE'"ojdtoj @<6 PKFd_ZVQK`[V~JE?zuoܘLHB(#D?:$ ſ| Ჭ +ÿڕ,($E@=/*' e`\%!")% E@;ľýϧ +0+&1,'vqlupk~x¼ {B=872-"]YSFA<&! +mhb |¼ſþOJE}xrid^ kf`id`Ŀ vqn a\Yvqlzt{vpĿϺWRLJE?*&!ýВplfý阓]YS,("ے슅E@;SNI&!A=9! +B=: +gb^]YUc^Z +RMJ Ⱥwrm mhbľ83.=93#"wrmźe`Z۲ONJ䫦~x𓎈½\XR|wq 2-(!  1,' upk +}xr׀{u +/*%XSMnicE@;94/ĿWRLſ݃~zMIE!&!=952.*vqn¾ڡ  öTOJ62,պ˾{ý1,'JE?.)$SNI TOJLHB)%  +hc]Ŀֿ˾ JE?臂|FA<0+&2-(¼ |ws$ ZVRٸçþVQKFA<)$ZUO ~ysojdzͭ62, 2.)B=8޿?;7 0+(51-'" )%!kfb~ysֱ|wq,("}w?;572-٭  +ŦMIC۲ONJ䫦~xϾKGA oke +Ξ :50%!soi=82)% [WQӓ NJD1,'҆{ {ǔkf`$ ^ZW¿ +RMJ=961,) b]Z )%"jeb ¼ҺſRMHwrmzuo'"~ nicĿͣ c^Ywrmkf`\XRplfFA<40* +VQK)% ľMIC qmg{uTOJ C>9TOJ}YTN߿uqiMJA𦢙EA9c^Y^ZT ɡ]YS½VQKHC=<72ý뜗_ZU ͝ XSM&!ȋ%!!D?:QLG0+&&!<740+)-)&/*(942¼qmgĿſ)% qmgſ51+.)$ZVP&!D?:¤oke۲ONJ䫦~xǼ94/(#~ӹ72-HC= PKFӫ|wq;61}xra\Wއ|VQK 83.ſNJD )$!kfc/*(zw½=85LHE3/,"fa^|y !`[V׹ԡ&!~ys ½ľ  +A=7)$TOJYTNC>9<72je_{vpGB=ýѠ2-(fa[֧¾:6.rof\YP!FB:ȿSOG  ,("þἷ|XSM OJE½VQKϳvqlľje_c^Y܈}kf`ʣ ີ =82NJD'"=96JFC֍ D?=רGB?jebrnk +½2.)ſݑľlga +ČGB=]YSþ1,'94/쨣PKF۲ONJ䫦~x*&! þxsn +ſTOJ OJEʽ +nic72- +D?:=93)% ztgb\/*%½晔  .)'@<9Ŀ! =85  +PKI=85GB?942#mhe!XSP½@<9ʿľ¼ý½ľ½Ŀ¼ľڹſѼֹɾ·ÿ̺¼½¼½VQKZUO2.))% FA:4 ľnicýþФJF@!)$MICè/*% :50kf`۲ONJ䫦~xˇ|Ѫ¼~x؉~ľ}w½Џ½̣⠛FA>鬧zurݰѵƧӠى)%",("¼ſ½˾¼ĿſӾ½¼¼ƻʿʿźøʺþVQK|yΜſĿľയýý}w٨vqlͶĝݶzwwroѫ}ztͺ⍈ٷzt˧e`Z۲ONJگ~ÿزNJF þſƿ^ZVӪ_ZW߾ױNNLܩ{u¾ⶱ1,) +d_[ſc^ZӤa\Yʿʿøſ˿Ŀ߱NNL⪥|vľſ¾VQMʛe`\ʿſſſſſſſſſſſſſſſſƽƽƽƽƽƽƽƽƽƽƽƽƽƽƽƽſſſſſſſſľľľľľľľľſſſſſſſſſſſſſſſſſſſſſſſſſſſſſſſſſſſſſſſſᱱNNL߬ZVRɮþ걱NNL⧤žɹlheߊ߱NNL礡ιر¾ƽƽ½ſľƽa`\ݱNNL⣠½¿þnmiﱱNNL颟{xsa^Zifaifaifahe`he`he`he`gd_gd_gc`hdajfckgdkgdjfchdagc`gc`gc`gc`gc`gc`fb_fb_fb_jfciebgc`fb_fb_gc`iebjfckgdkgdkgdkgdkgdkgdkgdkgdiebiebiebhdahdagc`gc`gc`iebiebhdahdahdahdagc`gc`iebiebgc`gc`gc`hdaiebjfciebiebiebiebiebiebiebiebiebiebiebiebiebiebiebieblhec_\fb_jfcgc`kgdnjgd`]b_Z_\Xnkfb_Zqojc`[nkfhe`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`he`gc`b^[\YVokhfb_fb_mifjfcgc`hdaiebiebiebiebhdagc`hdahdahdahdahdahdahdahdahdahdahdahdahdahdahdahdahdahdahdahdahdahdahdahdafb_fb_gc`hdahdaiebiebjfcfb_iebkgdjfcgc`ea^hdajfciebiebiebiebjfcjfcjfcjfciebiebiebhdahdagc`gc`gc`iebiebiebiebiebiebiebiebgc`hdaiebjfcjfchdagc`fb_hdagc`fb_ea^ea^fb_gc`hdaieb]ZWjfcieboliZVSqnkjfciebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiebiediediediediebiebifaifa_\XqojÇ|܀}xonj߱NNLZZV ǣʧc^Yþý¼ѲYVQrqn걱NNL⨧Іľ˧c^YýѲYVQrqn걱NNLޤý˧d_ZýýýѲYVQrqn걱NNLƔ˨d_ZľýþſýѲYVQrqn걱NNLґ̨e`Zſ¼ſѲYVQrqn걱NNL}}{̩e`ZſѲYVQrqn걱NNL󝟜̋䠡󙚜ϫԡᨪ֩´չǹ󡢤⨩ꜝߪѯ럠씔ȑ¼ͩe`ZľѬĿ~ýýѲYVQrqn걱NNL񠢟~ |} + `ac + +   bce!"$󐑓wyvoqo^`]8:7^`]!#!  ()'[]Z\^[$%'^_apqs + EFHZ[] + ghj)*,  stv>?A>?A lmo BCEIJK󨩫 ȔӸþͩfa[c^Y٢ ¼×soiѲYVQrqn걱NNL᧨ʼn {{{ 444RRR ZZZ䔔sss///XXX===EEE혘 gggVVV###999ZZZ???JJJppp@@@222iii!!!888MMMǗҮþſ½Ŀ̱˧c^Y^ZT +٩ſ~ys +ѲYVQrqn걱NNL᧨ʼnχnno횚;;;uuuwwwggg߄zzznnnrrr{{{yyy{{{ǃsss222lllhhhvvvꜜäZZZwww|||JJJuuu~~~iiihhhccclll|||IIIhhh+++IIIϲ999III222RRRyyyqqqvvvzzzɅuuuyyyppplll777vvvzzz}}}~~~ggg݀fffooo񏏏YYYۈ```uuu```~~~iii}}}Ўxxxvvv惃Ƃ}}}hhh܆aaa...oooooo===111666RRR ď~~~yyy|||lllrrroooփqqqlllZZZ)))tttxxxmmm|||fff󮮮℄mmmQQQNNNzzzpppooocccrrrjjjeee |||uuulll<<<>>>___mmmhhh~~~ooowww蔓iiiȭiiizzzܐtosǃ~xެzuo맢ztꟚſ˧c^Yfa[ ?;5PKFݮxsnb]Xa\WϜmhb¼檥gb\=82_ZUѲYVQrqn걱NNL᧨ʼn ***lllwww)))--- ###  + + +WWW$$$222ZZZ###LLL---ќ lllggg222KKK>>>^^^&&&### KKK!!! ...aaaooo̯WWW%%%)))HHHDDDIII!!!zzz CCC+++999kkk888,,,ggg((( !!! ---""",,,dddggg>>>###vvv ''' + + + 鹹 + + +111 ]]]777KKK"""^^^ 666 444 $$$TTT"""xxx ///444qqq###???___,,,666NNN!!!DDDFFF rrrꓒ)))qqq+++ 111lll$$$999WWW***'''666999 + + +%%%666 WYTYWZ + ǎ畑upkÖȒʾĿy˧c^Yid^  + e`Z  XSMଧwrm 0+&|ѲYVQrqn걱NNL᧨ʼnvvvrrr + + +sss+++~~~!!!sss + + +CCC򗗗___######]]]oooOOOqqq(((FFF<<<{{{```%%%###NNN(((aaaccc򭭭ddd̷KKK>>>222TTT픔}}}===###jjjaaa$$$ddddddNNNQQQAAA + + +222)))GGG+++xxxXXX===JJJIIIDDDPPP???dddDDD222뒒 PPPBBB򽽽DDDZZZUUU~~~HHH<<<***ZZZ OOO```666000zzz;;;xxxAAAyyy888 VVVhhheee333OOOlll,,,;;;333YYYBBBeeelll֫ + + +MMM###sss 222IIIsss>>>999\\\QQQ񪪪{{{sssMMMHHH󂂂iiiEEEyyyúǚ{}xrȬͻ܊˧c^Yc^Y +94/.)$ľyto40*b]Xje_soiֺѲYVQrqn걱NNL᧨ʼn ---~~~nnn)))```ccc))) WWW000bbbjjj + + +wwwCCC>>>XXXzzzPPPZZZAAA>>>333sss===ݻ222ͷJJJ===333VVVFFF!!!ggg ѥ[[[222```)))&&&666CCC```]]]===CCCCCCIII333 xxx...+++֙''' + + +888뻻bbbHHH:::+++VVV ҮHHHAAA<<<555\\\KKK***lll{{{ϲ~~~VVVAAAFFF999ttt***sss!!! nnnvvvBBBJJJKKKGGGEEE"""@@@GGGKKK777@@@BBBRRRJJJ000666~~~===lll 444999XXX555RRR󇇇JJJ%%%JJJ^^^ywz PKOKGJ񻶰ǔɚĿ˭}{塜½˧c^Y_ZU zt ½C>940*@<6!!}xr +0+&ك~x¼ѲYVQrqn걱NNL᧨ʼn{{{ 555 KKKBBBXXX### + + +dddKKK444+++OOO;;;555%%%sss>>>==="""LLL)))jjj+++999111GGGRRRAAA(((FFF{{{훛$$$RRRаWWW!!!---JJJOOO===!!!ddd 􌌌 ===CCC999777LLLAAA666hhhLLL%%% LLL444www444TTTKKK"""WWWZZZIII---ooo)))CCCqqq???...{{{HHH///EEE^^^KKK!!!mmm񧧧777III$$$ZZZ뛛555KKKLLLLLLRRR111444(((HHH333>>>888ZZZ~~~hhh%%%'''GGG+++^^^ FFF===222:::~~~FFF999 OOO)))FFF(((SSSCCCAAAKKKFFFMMMeeeFFF&&&>>>𴴴qqq666YYY555:::NNN000<<< 222,,,GGG222^^^mkn<7;RMQǞȶΌܼщ~˧c^Yc^Y ׏ wrm<72GB=E@;2.)kf`ýý83.҃~x¼ѲYVQrqn걱NNL᧨ʼn!!!wwwrrr|||hhhmmm999)))888HHHTTT + + +iiiRRR+++FFF!!!SSS$$$fffaaakkkΊ٫sss + + +Ե ;;;EEE333TTTCCCYYYnnn%%%LLL333fffYYY***%%%AAALLL...iiiqqq + + +WWW """{{{ + + +www$$$pppWWW}}}nnn >>>000666XXX JJJ999YYYժppprrrmmmJJJHHH===SSSIII$$$󧧧qqq333===򸸸𗗗 sss333666OOOrrr +틉 +¼ztڞϲſşד˧c^Yid^ ½/*%SNIſ0+&JF@!yѲYVQrqn걱NNL᧨ʼnwww򯯱222~~~---111bbb^^^ TTTdddRRR===LLLhhh}}}MMM444======"""zzziii000 aaannn߻٬###EEE &&&XXX???777꭭ + + +ݐ000LLL,,,___((('''ooo222GGGfffGGGMMM@@@'''aaaLLL=== ___󓒓???rrrᬬ 999&&&йOOO{{{///DDD999 + + +%%%۴III丸555MMMỻzzz666JJJ000aaaHHHEEErrrMMM~~~ ///UUU!!!***YYYkkkHHHsss``` + + +RRR{{{LLLZZZRRRꄄ ʵWWW---nj///}}}CCC߹fff222RRRర!!!ZZZ555μ888׿ jjj###666NNNfff + &$'ZVZսǔ¼½ϒ{þŶ|vľ˧c^Ymhb zuo(#?;5=93WRL@<6֭ +>:4JF@ޅzѲYVQrqn걱NNLLj ||| 222\\\BBBvvv>>>UUU\\\111XXX444TTT SSS%%%///!!!ooo???EEE222mmm222bbb!!!ZZZ + + +ggg OOOhhh333裏 000777 + + +jjj /// + + + 777pppxxx mmm222```WWW 󨨨>>>222LLL)))YYYYYY)))---&&&ZZZ """444___^^^;;;/// EEE SSSUUU888222@@@[[[hhh???𓒓&&&|||wwwQQQlll!!!lll888JJJ+++ooosssHHH+++PPPzzz!!! |||DDD}}}wwwjjjWWWDDDsss666  +++fff!!!fffwww888EEE;;; EEEWWW???}}}qqq))) ttt555nnn,,,TTTiii} ľ½ƥc^YWRLokeڈ} 3/)Ҩ +/*%_ZU вYVQsro山NNLᠡЄֺ츸Ž̻@@@뾾ι𦦦̿|||ݻ˿涶ɽQQQϱҬgb\ǿ½Ɵνجָ½ϯSPKqpmNNL壤|}x XXX111...͒ȃLLLooo$$$bbbʣ[WQϼýĿýýֶZWRpol鱱NNL񦧡{XXX+++[[[^^^ľþ̨b]Xýŷý½ľſд]ZVqpm䱱NNL񜝗ʂ~ȿľΪe`ZлE@;62,ID>ID>=93ZVPJF@PKFe`ZȭWTOpol뱱NNLꔔxytſ¼ſϦ_ZUָ[YTĿmlh񱱯NNL晚̪id^ýſľҷ^[WonjNNL榧Ϯ󹴮c^YƬQNJsro걱NNLߧ袝a\WXSM`[V^ZT[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ_ZU^ZT]YS\XR[WQZUOYTNYTN[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQ[WQWTMZWPtqkoog鱲NOJޣžnnf౲NOJ䦡lldNOJ䨣ľſnnf걲NOJޥ˿˿ppiⱲNOJৢƿnnf鱲NOJ嫦þjjb屲NOJᨣƫſnnf汲NOJ⩤ýľý½ľĿľſȿȿ¹ÿǾǾĿſ¼ýľýnnf豲NOJ⩤ľľþ¼ľĿľƽȿϼſýີĿȿĿnnf豲NOJ⩤þľýſſǾúż¼ĿĽƽ¿nnf豲NOJ⩤ytoqmgҨ^ZTľſy`[V¼БOJERMH¹żúǾſýĿſ޿ɴ¾蘗ۚVVTnnf豲NOJ⩤<7283.~ys ľXSM)% 40*hc]þſ¼83.$ D?:ú޾ÿÿýýľͼ½ڸƽú硠-,*..,{{yلHHFOOMnnf豲NOJ⩤?;594/ׅzſ'"VQK¼D?:ſՒPLD¾żȿĻĻչþýýȿEDB鼼NNL^^\__]RRPMMKnnf豲NOJ⩤ſ<7262,ډ~ojdUPJ}b]XQLGytoB=8ӕTOJsoi *''#~zqhd[>;2sog:6.ꫦ(#  yE@;mhbD?: zytoLHBþPKF 94/vql&!λ!# hd[Ǿutr}|opnWYV芌YZXnnf豲NOJ⩤62,51+ׅzOJE-)#d_Z3/)LHB94/.)$ID>ſ|wqĿý 30(QME.*"ˎ ȿ%!fbZ (#oke=93$  JE?HC=!'"_ZU_ZUVQK`[V[WQOJE +)$e`Z@=4 VUSGIFUWTsur󜞛-/,,.+nnf豲NOJ⩤ý<72;61܍XSMߊVQK&!+'!RMH½ҋľľlga$ !NJD)$XSM}gb\62,½,("ZUO OJEϞľ!GB?𮩦 e`]̀{x "WRL湴OOMRWQY]X`e_쭲*/)nnf豲NOJ⩤Ŀý2.)@<6soiID>(#֑ SNI!LHBľ|wq b]X%!UPJE@;=9362,ľ[WQ94/lga!FA<_ZUҕvql  IDAΣ♔\XU  ID>ͨſdicjoi󮳭04/į~}nnf豲NOJ⩤ý1,'2-(掉[WQ!مzTOJ)% E@;~x zuoþͧGB=PKF ¼>:4.)$׸&! +^ZT {u{ulgad_ZϿRMH !NJG +zwYTQ ~ysz\a]nnf豲NOJ⩤plf je_#d_Zں VQK(#a\Wľľ$ 62,Ჭ /*%rnhý!LHBsoi ]YS&!Ǵ\XRwrm =85½ytqc^[#Ŀپÿnnf豲NOJ⩤.)$72-wrm^ZT`[VZVP+'!⊅]YS =82 je_ћ=82kf`lga! *&!%!d_Z40* Ɋ gb\%!&!\XRb]X'"kf` +id^ ?;5hc]@<8 e`\¾id`plhTOK  ojfplf(#qmgnnf豲NOJ⩤ɥUPJ)$%!3/)=82}w mhb3/)ڣ +'!ľռZVPz~ys)%  kf`λNJD/*%{u*&!id^Ă}w#XSO 51- 72/wro ÿƦ xsnŧnnf豲NOJ⩤ſþ޿þ¼ľľݾþ澹ѳxsob]Z½ľÿnnf豲NOJ⩤¼ľľſſ˻ýȱ9412.*830|ws¼ſnnf豲NOJ⩤βkf`2.)3/){uý¿ÿnnf豲NOJ⩤ľnnf豲NOJ⩤żúþnnf豲NOJ⩤ĻžŽnnf豲NOJ⩤nnf豲NOJ⩤ǾƽĻĻnnf豲NOJ⩤ɾżȿnnf豲NOJ⩤Ǽɾƻʿnnf豲NOJ⩤nnf豲NOJ⩤nnf豲NOJ⩤nnf豲NOJ⩤nnf豲NOJ⩤nnf豲NOJ⩤nnf豲NOJ⩤nnf豲NOJ⩤nnf豲NOJ⩤ýſſɽĿſ¼ſnnf豲NOJ⩤ſʾþľſſ¼ýſľ¼ĿĿþľýľĿnnf豲NOJ⩤ľƾſþĿýſſýľſľ¼½þſýýſýſľ¼ýnnf豲NOJ⩤ľĿĿľ¼¼ýľ¼ýľſþýnnf豲NOJ⩤ýƶſľþ¼ſ¼ſ¼ſýĿþý⽸ľſ¼ľìſľ½ýýþĿֹźŧſý;nnf豲NOJ⩤ٔ!¼ڼ~ys ;61ýľ\XRC>9Š  + }w +~xĿ҉~)$¼ſFA<=93Ъ  E@;WRL2.) ǚ=82ع{ytoľ/*%`[Vſnnf豲NOJ⩤ϷZVP½ҿ-)#|vQLG `[VKGA ι2-(ýz2-(/*%~~ ᎉý$ NJDľſ LHBlga GB=;61"זȷ¼՝ӑ/*%!ytoWRLnnf豲NOJ⩤ʃ~x#~ ZVP +|vüʻ¼ľ½a\Wέrnh½þŸƸ¼¶@<6=93þĿĿţ¼ϞĹƜ3/)E@;ľ]YSJF@.)$ ýŴ¦ |v½¼ҴѪĿſzt½þó½ľԦhc]gb\þþҦüȷľýƻǶýnnf豲NOJ⩤¼Ө| +=93upn唏   +okhB=; wvr541 DC?)($TSO 32/  +a`\))% +10,;:6 +ߣ +ED@ +ޫ +  کe`] +ݕ[WT E@;0+&ζ32/  + ߼ ո +GB?!FA>  lgd2.+ +صA=:+'$okhVQN՗ + +%!TOL)%")$!HC=zuoB=82.+¿!þ?;8 &!ſþ+'!ID>zuo3/) +}|x娧 yxt984Ư!!RQM GFB FEA¾ + qmj໶  ytq +-)&HGC\[X541 +,+('&"('#*)& + rqn/.* ʻ @?< + C>9  zuoje_ ߕ.)$62,*&!nic۶ +JFC ȩ  +ݓ\XU !ѭRMJ (#!D?=nnf豲NOJ⩤˽ǩýſ¼ +~ys佸jeb62/RMJokh OJH{zv0/+-,)}\[X ⥤ +RQM%$!rqnΓIHD!!޴ ]\Y))%׬/*(b]Zojgzw҂}z Ņz$ ľGB=1,'652XWSed`0/+#"TSOЪ&!62/JEB&!c^[ ;63򍈅(#!@<9|y +e`]/*(51.֭~fa^e`]KGA¼~ys1,'SNIWRO720½Ŀkfc&!ҿצ \XR½Ŀ)($<;7唒} 430A@=ѪlkgڄJIEyxt}|xida$ )$!OJH +GB? %!تԀ{һ +ZZV21- wvr10,&%!Ԟjie +䰯 ¾þľþ}hc]$ ſmhb3/) 72-|XSM"  XSP)%"'" jeb菊pli!kfc ytq/*(Ϯnnf豲NOJ⩤Οſ¼|vث ܙtom BA='&"$# lkgpolRQM~xws~z +ihd  +^]Z|wt[WT Ȅ|jebnifsolýſ?;5)% ! a`\ QPLqpm~zμ +fa^E@=@<9Ɓ|y)$!>:7 D?=ojgӔ|wt}zsolQLJJEB3/,.)'B=8Ŀ 1,'ľ=82942؟lgdupnſɴ ۷Ӕ$# 652 a`\ JIE֣ihd}~}y]\Y ba]))%䋊¾ˢÿҳۢ |yTOL 430ihd~z'&"=<8"!652LKH430))%"!tso~zpol"'"{uy ojd!JE?0+&.)$WRL"kf`̼lgdwro~{OJHþ]YV rnkqmjwronnf豲NOJ⩤ݔĿʾ|vþͧ"ם~yvƗÿ֮wvrihd10, + nmi%$!ÿ + ÿ kjf + %! %! 0+)+'$)%"ľýſFA<0+&ľز + _^Z պĿþ|wt-)&?;8ۯ-)&/*( +ZVS٠ gb_zur   -)&þSNK*�+)E@;ɿ +VQKGB= ʟ )%"831½ȶߪ1,'40* ED@ڞA@=ۖ  ZZVǞ ⑐ ޵թ rnk?>; + fea + }! SRNYXT 21-  +%$!\[X¾ټ¼3/) +qmgLHB!ZUOqmg ֭" + +þ2.+(#! '" ɼ"51..)'nnf豲NOJ⩤Ⓨ¼/*%̮~yu½ͥ ͨݼגGFAJID$#xwr֦  wvq +sok*&" þokg3/)LHB62,̺`_Z괳˼ zuqplh*&"ID@+'#VQM=95! +YTP⊅62.0+(941LHB RMH=84~ ZUQ40, ¼ý¼ٸ1,' JF@DC>ݯ + 娧þ_^Z⊉nmh; ¾upmZVR 983540Ͻxwr#"hgb872#" POJ3/)E@;ľ<72JE?)% NJDտb]Xչfa]2.*e`\¾Ϲnnf豲NOJ⩤̄y +ýľ۞b]X2-)E@=-)%VQMfa]ᒑұ +  YXS21,`_ZONJ+*&ч))$IHC\[Wٽ[ZVsrn983DC>ý=95gb^殩C>;ճ +ſ<72'"½]\XYXS+*&ԧ21,ȸ }xtA=9@<8mhd ZVRֱǑ(# ¾ID@OJGڍJFB¨ + >:4ſ|wqϽľ'"QLI锏C>;ÿý zuoA@<񜛖&%!=<7HGBܔBA=qpl + ԛ֬ RMJ62.@<8E@=̽%!lgcڽ%! Ӝed_}|w DC>a`[،IHC}|wſ¼̿hc]"ýQLGqmg 2.)~½¾ID@:52ÿC>;hc_Ŀ裞YTP߽ܺnnf豲NOJ⩤½Ŀۓ A=7>:4ӻfa[! + 72/׎  [WS ɟ¿  +ZWR=:5½!!C@<,)% +)&!Ը{ +upm0+( |x@<8 fa[¼PKF:50|wYVQ򥢝 +  yvq¿Ԫÿ lgc=84941=95 +  "C>;ǚ 덈½ٮytpd_[#0+( MIC¼ zt¼MIE,($KGC[WQõ JE?1,'  (%!.+'Þ#!_\X񍊅  +~b_Z +ך¿Ǩ}xt֙tol '" + %"Ƚ)'"0-)+)$LJETQLĿ!JHCɴplf ý¼   NJDĆ{ {vpĿ:50 _ZUڲ  +tol$   +~72/}62.C>;¾nnf豲NOJ⩤ýҸa\WЏ}xr½je_d_[¾~yuplh]YUԩzuqҼfc^ZWRãqojb_Zݘsplȼqojkhcb_Z¿VSN~{vϭfc^nkfpniݹb_Zolg]YUzvupmqmi|wsojffa]{¼ľ˒zuoZXSvso՚he`XUPzojfqmivqn渳c^Zqmid_[a\Y½αokgĿչvqnokgÿ؍]YUVQMĿxsoTOK{þľ_ZUþѸۨlgchc_plh\XTytp{nicPKFܳgb\zþXSM~he`URM¿þzeb]xupyvq_\XŞtqmϟvsoʴWTOzv}xtmhd}ywrovqnfa] ]ZVpnigd_ĿĿURM|ytgd_Ԇ~ֱc`[gd_b_ZsplþӘ62,̻ZVPvqlvql½ojd{vp,("_ZUupkupkgb\ڿ؉]YUmhd¾mhde`\߷WRN{wÿ|xnnf豲NOJ⩤ݚyto΃~x ý̦51+ýMICýHC=nnf豲NOJ⩤Ֆ!Ȥ櫦51+ E@;Ⱦ51+b]Xnnf豲NOJ⩤ǿ{Ļ٨ɾĿՓnnf豲NOJ⩤ſýľnnf豲NOJ⩤ƾĻȿſnnf豲NOJ⩤þnnf豲NOJ⩤ǽƼƼɿɾʿȽſ¼nnf豲NOJ⩤»ǽɿʿʿƻľľſſýnnf豲NOJ⩤ýýľſȾſǼȽƻſſĿþǼĹĹźƼĺɿɿýſſǼźȽʿnnf豲NOJ⩤þľȾƻøľĿĿÿýſľƻȾſſ¾Ǽnnf豲NOJ⩤ϿþýżýýѽƽĻĻżƽǿ˾ÿƽnnf豲NOJ⩤ýþľſľĻĻþľúĻǾ¼ý¹ûþ¼ƽιnnf豲NOJ⩤ſýſǾſýľżƽľƽĻȿŽǿľĿƽnnf豲NOJ⩤½ɓ]YS{rie\ſſľۺ¼ݵe`Za\WUPJYULżľדokbƽÿeaYȿjc[haZý¼½upkԊ}tphnnf豲NOJ⩤ýoke +wrm0+&c^YWRL¼ýplf}ýNJD'"Оe`ZſͿVQKXSMýÀ{uoke½ĿԿMIC  +UPJ½je_~xþa\W ֨ +soiľſupk ;6140*nnf豲NOJ⩤[WQ[WQĿԺ%!gb\ſwrm=821,'c^YvqlvqlľPKF ي vqlľ,("JE?½KGA}wZUOa\W |בplfʻd_Zyokezuogb\⣞ Ŀokeɧhc]mhbUPJý  62,83.:50nnf豲NOJ⩤XSM|vĂ}wokeýĿ¼soi! ľvqlE@;0+&þ_ZUſWRL)% QLG:50ľgb^ +nieӷ62.1,) Ӡ )% vql~"2-(ý\XRMICƵXSO+'#*&"SNJᒍE@=zvD?<"+'#+'#`[XOJG,($(# d_[ľҨLHBfa]ꮩϽ72/?;7 a^Zurnjgbqoj󓐋)'"+)$~{vlid +72-"ý]YS%!_\XܒDA=}1.)%"}x¿$!ߔ2.)upk|v½kf`&!>:6830zv/*'!B=:̴62.941 [WSVQM)$!*&"NJFnnf豲NOJ⩤ȔwrmNJD83. id^E@;0+&ľrnhA=7:50je_ ſ }!qmiE@= JEAE@=!=84RMJJE?!}xr C>9”{$ þΔ E@;plfқRMJGB> ytp}y!;62)%!E@=62.;62NJF hc_!?;7.)& +ľhc]nie |ws~okg{ +TOK+'#ID@IFA,)%=:5 +/,(KID&# urn0+&JE?/*%>:4̷!-)#JE?WTOkhc儁|42-*(#63/%"SPK94/KGAľПid^zuoa\Y830:522.*೮,($WRN*&" 941SNJ kfb}xt JEA51-~znnf豲NOJ⩤TOJڷ¼ID>@<6xsn +E@;0+&ľTOJKGA/*%{vpľľ|wsߧ +94162.3/+JEA乴|vC>9>:4soi=82@<6b]XՙMIC '"@<8 mhdfa]2-)ÿrnj#⾹ |wstol)%!^ZVojfJE?ſnie!  ytp872 ]\X('"Ԯqpl +  ĿztľLKG񒑌¼ԗ\XR +{uHC??;72.*ID@>:6̮ +id`|!e`\upm#ÿnnf豲NOJ⩤WRLĿytozuo +ztE@;0+&~LHB2-(%!ytoC>9B=:niejeaVQM0+(_ZW )% <72ՎzuoVQKľſzuo;62 꾹 ~zӦĿ (#  + ſ{vpc^ZĿ˰SNJ22-651))$^]Yfe`½.)$ͣyqplↅþۨ ==8zytſͨrnh|wqߊ +OJG&!(# `[X +|xÿrnj½ Ŀnnf豲NOJ⩤ȋzt40*NJDRMHgb\b]X|lgaE@;0+&ý‘C>9.)$ soi2-(E@=idavqo +VQNȎzur#e`Z)% B=8ľ~حNJDsol и˶  UPM~{plid_\þй]YV֟  51.mheFEA984%$!ZYU tso`[V/*%[WQ˼A=7 -)#zyu pol|{wѥ430<;7 e`Zҕzuo@<9]YVFA>831 fa^ +|y|y +YTQ{xd_\tomnnf豲NOJ⩤ȸľ[WQ+'! )$ oke!E@;0+&ſSNI83.RMHUPJUPM~yvΥ MIF/*(૦SNI2-(94/½Ŀ̽ᯪſ fa^}܉ kfc¨{xﷲýýpliӹ¿娣 +*'/.*:95-,)𼻷rqn ĸ ~ys2-(lgaytoihdث +ȼba] }wĿxsnՑ GB?)$!RMJ +鬧nnf豲NOJ⩤ſ|wqˬ&!zt E@;0+&¼UPJ-)#籬|y,(%;63^ZWokh1,)|y:50id^ý72-,("nicſgb\ 1,'lga62/ +ytq sol ]YV|ЭˬqmjqmjvqoUPM.)'¿ýd_\ڬ +xsp~ +652==9׼ ONJ}|x==9 ba]a\Wþľľſ +je_-,)jiesroשMLICB>ytoXSP2.+먣LHE(#!$  +tomxspzw~JEB(#!nnf豲NOJ⩤ý՟83.UPJytoE@;0+&ſýA=7B=8 (# +xsp☓ a\Ze`] + UPJ֨ +½ľ䶱ſſþ}w  +d_\½3/, %!|wtۥ|y罸1,)¿ſþkfc.)'¿RMJXSPDC?984984ihd`_[|{w ¼2-(VQK#ihdӣ妥21-ſľ{u<74<74\XU Ӳ + +|y)%" '" nnf豲NOJ⩤۹GB=þޏ\XRJF@b]Xztoja\Wnnf豲NOJ⩤ýǨ62, KGAЏ-)# UPJnnf豲NOJ⩤͸½þӭ"JF@җ0+&WRLþnnf豲NOJ⩤þſṴýnnf豲NOJ⩤λýnnf豲NOJ⩤ľ¼ý¼Ŀſnnf豲NOJ⩤ľ¼ľſnnf豲NOJ⩤ſ¼nnf豲NOJ⩤ýľſnnf豲NOJ⩤ľýýľľnnf豲NOJ⩤Ŀſýľſ̾ľ¼ľĿ¼¼ſ¼¼nnf豲NOJ⩤ſľ¼ý¼¼nnf豲NOJ⩤ĿĿþľſſĿľͻýľýýnnf豲NOJ⩤ýľ¼þſýɿſľľnnf豲NOJ⩤ſĿſ׽ſĿ⼷½ſſnnf豲NOJ⩤䔏A=7D?:ʼNJDd_Zid^PKFʽa\W½ſ[WQ}w½LHB½vqlje_ľje_je_ľnnf豲NOJ⩤ľſĿ +)$!֔ľþվ½ý¿¿ľſje_OJEſľľſĿֽľľ׾{u + \XRſſĿþ迺ſ½Ŀmhe ľſý዆½þ'"FA<ſJF@]YS{ýnnf豲NOJ⩤ط؋ٴݺýĿ۲þľþ¼þſſоľɽýþղ⻶zwrmƽս򾹳{vs ſ缷޾ý窥 ſ2-(=82¼¼ {vpþ¼ľnnf豲NOJ⩤Т.)$|wqztHC@Ŀ   +upnþ }xu,(%NJDLHB$ LHBҝ  JFC,(% +%!ZUR 942ľſ&!2.)]YS\XRfa[[WQ a\WKGA(#RMH]YS ¼~x40*oke+'!Žmhb+'!62,hc]ؼ A=7kf`=82,("vql)% HC=!kf`½ SNIܼ#LHBȨ  +nic soi zuoqmg=82-)# ڋ 0+&MIC40*VQK0+& +,("a\W-)# +#ſ`[V ﹴ1,'?;5e`Znic y!=82 +]YV{vs40-b]Z"zur½ +þ(#kf`)$ ?;5C>9*&!mhb62,HC= +soi ͽ$ '"a\W/*%JF@ýB=8fa[qmg3/)YTNQLGA=7 RMHd_Z[WQ<72nnf豲NOJ⩤E@; nic;61 +ǓLHE +'$~¿JEBFA>"RMJgb\mhb~ysc^Yfa[ſ½˽坘 +WROTOLE@=0+)WRONJGnif甐PKIupnc^Y}wMICqmgKGAYTN=93lga;61@<6$ <72JE?lga!򾹳;61oke51+ ztۨ_ZUy:50$ rnh {u +D?:_ZU RMH爃}!`[VnicA=7_ZUTOJLHB|wqUPJ/*%<72d_Z]YSMICGB=OJE +2.)id^@<6ʲ^ZTrnh&!½ý UPJZUO QLG<72KGAFA<=82ſSNI 94/ E@;wrm 94/ͰKGAnic +:50ſ׊XSM3/)a\WID> +nicYTN b]Xc^Yb]XqmgZVS|a\Z$ fa^FA>3/,LHE¿Ŀ¼ϳ$ HC=QLG<72=93@<6fa[!=82ѩ_ZUa\W 2-(fa[ +ZVPsoi +0+& plfHC= JE?ý!B=8WRL +51+LHBlga/*%51+"YTNvqlC>9lgaջnnf豲NOJ⩤Λ:50C>9Ŀ¾؝谫 lgc{!{vpſ^ZT#՞ +qmi!d_[)%!WRNɀ{w +ſꨣ?;5,("~ys GB=2-(!D?:ZVP D?:;61嶱 wrm2.)WRLoke*&!hc] GB=񘓎뚕 UPJ0+&[WQ!ͩMIC je_  }xr72-XSM䜗plf½ZUOک  QLG;61:50<72UPJ͖þ3/)NJDþ)$QLG#zt)$LHB HC= rnhԺ upmlgc䴯ȇ~ֵ̿ hc] LHB>:42-(2-(LHBݶ"!}xr y(#XSM<72@<6þ?;5VQKTOJ +"51+LHB&!$ @<6 +fa[nnf豲NOJ⩤b]X䷲nic  {vr Ȳ toj +#қʹ #KGC   亵|3/) B=8,("ojd \XR zuoE@;2-( kf`ľwrmľ&! +  +|wq ¼je_½ ̖   zuo +yzt}xrwrm~ľJF@ @<6 soi տ¼ٰ JE?⎉ е e`Z51+@<6,("|v½̽{u#ZUO¼ ӯ (# ^ZVǍ e`\ÿid^B=83/) e`Z {蟚þ~ys /*%FA< ;61\XR .)$QLGZVP72-A=7yӸſnnf豲NOJ⩤vql TOJ)$ẵ һĐ ÿ zzt}̚[WSkfbupmſ + ]YS}xr GB=40*rnh<7240*$ LHBHC=1,'a\Wvql ZUO~~ys40* +}xrnic½ľ揊 {uxsn♔(#B=8Ԣ'" 83.TOJ +|wq}xrojd}xrĻ~վlgad_ZĿ ^ZT40*62,!=82~}xr yto&!@<6¼'"kf`ިښ}xrtol띘 +ÿھ'"ZUO0+&=93e`Z~ys Эplf}wRMHĿ(#A=7TOJ/*%72-:50d_Z""NJD soiſnnf豲NOJ⩤ԏ UPJ!ݒݟfa[ ~xբſ˩ Կ ^ZV-)%okg֮ľդID> |wq \XR!\XRHC=)% =82A=7ﷲwrmſ'"MIC򣞘hc]$ qmg _ZU⢝ +˦ҖΘΉ~ vql +ojd ,("LHBߛ {vpgb\՟  YTN.)$qmgɷ qmg62,;61GB=HC=瘟'"`[Vľ PKF |v¼c^Y|ý ץjeaѡqmiĿe`Z?;572-=82E@;׺  |wqqmg +½z崯*&!ID>+'!ID>JF@ +2-(MICMIC&!@<6D?:|vſٽnnf豲NOJ⩤D?:^ZTLHB +ľ}wˉ~ JE? }xr}xrYTNZVP2.)E@;ɡ þ gb\舃}OJEVQKHC=/*%]YS_ZU  ?;5!nicC>9"\XRID>)$ýQLGYTN(# +nicѶC>9e`ZMIC3/) wrm!xsnRMHd_ZMICޱWRLZVPd_Z1,'SNIzuo'"gb\d_ZlgaԐ)% YTNb]X(#[WQ+'!rnhOJE#Ҷ XSM\XR!|v VQKMICe`ZZUO $ þB=8~ysa\W=822.)]YSTOJVQK,("ľߐZVP2-( +)% b]X1,' +WRLxsn +lga ZUO[WQ2.)ID>hc] ˖ ľqmg JE?ýje_94/<72ᰫTOJfa[D?:xsnZUOc^Y51+kf`MICrnh&!JE?>:4 a\W>:4 (#(#A=7VQK)% NJD ,("vqlE@;nnf豲NOJ⩤ٲ3/) mhbʴ=82FA<ſ'"hc]?;5!SNI꿺ݩ浰%!51+kf`HC=  =82d_Z)$soiB=8|wqPKFّ nicHC=;61fa[UPJ=82fa[ ~ zuoojd  ytoܺ d_Z<72 1,'䣞.)$诪=82 +YTN芅id^ёe`ZϏ,("{ufa[&!wrmA=7z83.\XRHC= $ Ŀ3/)¼\XRXSMJE?}xrHC=SNIoke";PKF |wq$ vql:50kf`<72¼ +SNIXSMvql3/)ܟ JE?62,zuoUPJFA> +endobj +45 0 obj +<< +/Type /FontDescriptor +/Ascent 891 +/CapHeight 656 +/Descent -216 +/Flags 70 +/FontBBox [-498 -307 1120 1023] +/FontName /KAEGAE+TimesNewRomanPS-ItalicMT +/ItalicAngle -15 +/StemV 83.318 +/XHeight 0 +/FontFile2 46 0 R +>> +endobj +46 0 obj +<< +/Filter /FlateDecode +/Length 28710 +/Length1 44204 +>> +stream +HV TSWYD&LJ +5q$!R$'+ RCYQ@0lٲȇQ<+Hj$(xP0dIZ;i̓QH aѲH>ՊxuZT(t*Ag@#GGErY85 Ѳ?T}:,T.qaWVRx4G*߾^}MwAϡ'MJ#a]ʹNW˲Y_Ϻ9kf/UۑVbϖnjK|Fʹ~kU퓓j[u-x[j6s%b׼ÛpJғozl s]QH޴Uv:[9ՠy9#[[?mbͻSvY˜H _Q<׾&Ldea r q˖Y =W|Ĭ5յ7E"0T“[Gx#OF"rU[ia%hTY^)m[&՞mIj#'R,rziUiV}SP?Fov͓wjӺvI⻅]wYSV2_5J6VuKn.^xвl +ڒp[/F&)[|G<*_rsv]^=Ings-P6ONM<1NwȾbC;W_Ĥ-IQgEgyw܆˂e!>z%SaO ENuxy6p,6۫$:k'%k}{4b6.h/D@?b!FRo[.]w0`&)ᠠR1PP, +'%ɐhy4d!KD FqEEEBlHaCf FQL0{v)4 "W*aZM`j9J6#O HoNJ` )a0!:Ӥ + eBELLU$LhU<CAXlHp8b!JpX.|>EN;|Wm^ې>-4}[p~WuQN"S]K|=Co>d,vӭhUx֜glX=uww/޳H+yf"B^O\yy0PtK$m<ޡ{3[NO͊spvUMflhyÛQ?l)}bHT=t?1 Zys-(il[[=eR\}4;[\p#7;y '@v^q !rؼTYP,ne[UZף>ӊ(t6 _!cpY~$F̟Пpۥlc0xDF=#`LT1Dv*&,_4FiӚH + MF=M@rab#(kD. FBH,)Ais*0"4mH8'~~Iw43h a$HaRL&zҬ7$z:14A +`7XBD~AglV}lN%0\ӨRQH`FJ1*IIp +at$djX^ L43$eQϹPa6 F" +d"G + B*Pj* LPk +u**R5RNMI*QD S' + +bRP+o@MfdR i@;UՕqק%"hmnZb#{4; qDHq Ѹb":.1##A7խafΙ_sջ罻ԽUu[W)W`@!X){ˈ&؆%*P %b!CAYTBVd@o0Kg9 SzSC + 4ҿTjT)A*" +j>Mf4Bfd +TB$\@,Pw<VJG Lfnp^(,%O-vT + yB6x<[G3ȁ5owzTRFH"huBFR<$QBTLLڢ]l $K]\7hO:̏d4DˮdIL,"1U0Č +S'#Iߏd$3%C %+8س>hΓ}L⣢$K0>.ng&1hGoǐmQZnEZ*/]Zْ Mn37r-_|US}啿aѳoX/z$ŚECo),u(]un=n^<ϱqQ "%i$&fo<̮ zoc׃fؑdpŲl0HF޵B+Yec$r{+B<$RA@fW ZjhT b'teY h{䎤Lj6ݢ4nn)`fR׹f< J)l/z IUN~ZviɄ3R?+}Ft^#dUB. +vKo讗i{DQM^Cۖ^Ľ^GI>P;v?[80N>qiv:cc7vN?iwndfYB[ [L; zZ'LylAwex]ydP3~MyR#ҕ?tՌqm=\WqY^sLs5U@]eé|B~݀.+H0~;4\M%t8|>_`,/b:je~7r쬴L͑S6[ vyVG.ӳ5W=Q8PiF"vD76x罞,}Y'?h)+h{~yP:y2) f3wGY٫5? AY7,;3~Ne 0b A\-vt[pZC_\!7s `,e8te0dȄSp(XBŞPpCZ`87!cG]q<#X E \Gd*@:EAZ5jF@I—|#0F{"2V>oLݯHLgۍ$r(&*3dX͜wjoГdUCE̕j~Vfk ZqD.RV&DUqΨkӓIbV0_u!>$z_&?S!M;d̆w_8 +p~xAL|3ӿ{ι{weYwe'iv];%|s|3_~.V#~_bV" +ŷ2))qF\wQ5HC\@ѨSH{w\]\\ow}vG sܯ6v.ڀ]ƽo"Kev76ޗrA+3Yt)lx%cL.Pþ|vW vqxXدOX ΛOb^b~j{ B-+b-C /C/G&T) +ScZt>hx +DJOj8-D|_wG8g8 F4ήoQ~b{d~HR&y-\< vK`VR]cQkej1u3!keUFUEy!xJXM > ?bwo0i/֫^0򔂰YGQEDTj*6^[F(H2-*YiJJe_n 5-U4ƑYDhQƾ"JJuќpt`ӑIDWu6WUeXhʮ[ZJ n}RRboR9n[ii|,$r'x3i׍ű:GsD=}TU[hTDutun\DԮO\wukFQqYPHmJ{:]f dxp`byWjX2fwX^`ņ ;C٩پz9AHVnz14{ +pfaٮ4X| ?,sq ܹV&QruMQOGw\w!J㝨/\W=sP%b[m$6BO8`~cˁ0xx >ˁc𞒰vSdo>撩O>緈:{6>"\[_j0^_֢}N^by֌~P9tN D%7x=AqDQl4 +sڷ1DU3 ҋ0nʎ @@9|"x,{,ȼ9''uGG~ C1!3II\qZ}^϶}d%?Cn@ߒo/ݵ6^ǃc>q-4mÅ*nrl),:R6:D<:hK ,EnMz.0Z8"nXs&O(uGd}:qN wK*{` 2 KÈR|/nvp~Cq|#Toű}Ö \D;#x1~QUyFnSRnYS*"1rr$#bO+f*Ϊ1dsM풑|ĹqޑWiny2R] +WY~3(pG G>i+1ŹQ&r6ܬ>ar\7yoO8)I*7zo7DeF뼉wZ +$e-⛁Rqh3"Zdnʧmxd'ЪK|*Pcz C}K"#?[L\4w p=Мk,ެ 30>'}Bۍcc;-.q^o7si:~-i>O{Jz_w M=.3.sWAZMw/=r->zVe6.ޣ='9=I%/* N^kgZæz^:k̯Ծ]H Y>q%~*ՌE,.x96ˁ5 x r`f Оa\|5;7>%:f #rh9JCQ?*wu+/ہ:~.?G_+i9(/喅gp8e=-G;z]?LfwezM@ 0xCH@xgp8 OUoVz 79gzX>0z>0M9n?S}·zsu׮F~85j5vn+t+ϘT&. +@g[j_4O t*T7}0H<䏱siW%tvW3?ўj= ǨMMI59v nl7f?C}dG/B-^,F{JQឰQ#bwҭWKm+iTT`՞[Pյ}f:y")ObmحP\rKO7ھ㙪yeI8HMs@~xҩsJkpMp `*ƻG6V#E6曌c07f'r.x-o-ӌO㶣pEtV|Q JX$=U&z}؈<0>,>X1fPJϊBGFdF]r_&I놤5?iIZ$䤕.1Q,c*1]l]Ǭ1k fY+bcwcV{fJ[B@5NUɎo+UL#v4,v cL$E8MhP'c0k !0sIQBE%\3S%2WYV6cr{* Lݺ%4? A|1U`OOrK`xqX*g̩oZ.)*6~6* դm +qv z( đ;;_1p h/!an1v{gP ;ZGZNoLb]Zh%Ė~K`Rі5uM\oujt2w1TmJN=)J`ҟP2ȠG1|SD FWՠrsKחeR‚ڳNBT :Z4譩lbY./XKb\{k쨭 ۗ!39ryVd_ga`W!sB7.xfwrf&$gB̧eWjaGbw`N*]qKvgXWUzNhz]ֲUbGGh R] +$$Ulx_hWl;|_ێ)ι]}mӝF߮j_ѰCqg#:U /~sƵn?t֚= ;7Xx[7 o8 &u1wa#h[pRx1܄2jqɐ؜ fWv;@ CJk C[vO4^]0yq|aRME\s4_>Pת) EP&PAPãg:&p1%>Tu8珠Ff*n#ˉ?$"y*t2^rsl=HBL\CF$PYǁs{y9-mS BeERI9I{]K'?WZ\s}5>Di8:FJF*3 *K¶hع$%8=< ?H +g.K=rꉂHh#WR{ѡ}/nEE$J6HƂX7쾂}=փn};`9l=fOYϰ߷<;Zp'.믰7 nYr(s w&Eqt0 gAH?&i"MI9 BzSx+_>灅<+DsD'q!ofQE1,fpŸ5JidoB\p)$z.0N9d"xy^d + D(-jżf,6+& q>Bnjo^~3x5{LsBP2 f>=ƙ4: ÂT'.vϧ~jvoU$٭~_GNɓ[_`RG1pJm>Ѩ)tWVj +GykWߓxG6%T/{ߠxHY!+QoGF +^OC!R%X#^%USF,xJu`+*@RH d aZg $} 2oYbXJԁ;l*dL + ';Ʌ]6>MxcXOcwlW¡3wS׭bfxy`z/rS|([/=]F[ J Ep4|W{p޽tw<֝d>R,[0@C% o BBICfȑ1LҖdmf m m=4@%wgӐNڹ~`jA1k6qx}X=p8(0y/0 $ů"bVC.bB *Vb@@'f)W.¡Q~FgE6ଢ EP7Uofս]YO#M̩! @GU8hף3wnæ5KnzGWtS;?o~suTSc43~)vAuX+xc3e06&:ws{k䏄cyָ^aFuD.OR6R`j 1zu&#|a<DzwxIO + +v1Rg``q1Ѻc"#9xLQTWwy!a +$gaj7P8o4@,-ƍzHp +&ʥӑ%C!2gwHg\.O$`܁DӼQnu]JBif&3!Yrt9|yi̥WX҂KҕB>4ЯDs)Pam,efC,Ū^{#(ԫFF&lvR7`KJtښ!46"YY,~HSJ5I5M3:9Pvݹ.>7]P&;w|R:VEC؝;XT}O{\*7|p|vWs3$ZK4C+&褩> G!N[7!ׇA3Xa0aӣ" +1M05 +3R})f3䓂 +QMش**N4Y E^3%wSjvX>_hh4Pd\iLo_z>v;YȬ t|u=Ca!2Uun;}KPs3A!w`톍y8J@Fag[pM9 +񬆇jsM)Î4TPta hj]߾3־z.-x#.P϶,Rܕx)h;;xWC??dy'\k\(5tאXƦٶl7 !x\\u?+.JL8Wt ]xZU%iJ6GDepp@b8`/A +pXl` NHvVD$sk UD$GU%,yŷ$KT<8 df4A<[1aҒ48R,%UdŬ\djU`:2tBG(ʼ@4t:1’3LFh `DQl[R"QoMqӡ}"W5&`9Ky;[][Iv|H'&Ѩ^>?ҖrW6P(sۈL +:G^=1Vh%:_HH. $rt^Iؗ׽CSbu؇>9^;=o6Ti™vL by-,[]?@v &:jSj麷?r9&>nn^^!8HLf,bLBzNWW{jӜ1(peٝ ~7w\Y+}6~BlZYݱR]\|sƱO_y?v}ÑUk (_56 sfⳗYuֳ3;czc1:1..BULH@`B01+ꪡiD)j"I66VIR)GBTЂ̬co{9s=^_,}j}A^&Gn}C}b?΢vo:w_'Ĉ{#G:DH5-HI7 cSAl4 \LBLGc(EݲDzHC t [haԨ``,GokqRI$YfVo>3GVp|ue`f[ǷV*L\no #˩EFsDlrR3Chi t +(@*sjgS{ < +y +_ܞG臱"oP|Gy᫨Uw*Ky/R=BK Rq&mKP[N[mOQփN!??{b޻>i*VXz*HHz𵿵/W+w}\&=>a/Uئ4gsQ6n]zr_UuF ԏ0Jԁؠzp Qn46 5aEB~ I3E %Yv$hPB[oBα$7G{TDڲ(+g,qhR$df@ i*KSOq9c'z0TcÅpnHXhF1R$߆I6sx5M%$Ϲ`Asd^=ԗ,Ó- +*F5 O0}}2=3Dga(&o=żcBT[Ls2R)sJYźx/NV){g!K=i~߿Y~%rQv'.odWӯǶWl>NS͛ \9kr! 2 *VS3?;Oc z/^Kj`x!``!dK Mj\V$I:a"ݔӏF|Dġ z8F5 77t穙E XBU~a_w,HEt_Z{J6OB)|ّ>,(QQiYz5Eunt +ס<]]IVyyDNuEmD=mOJ2zc ԒIxVtg#c>W_=M(D+a9D#BA w}Ih$B)U/6/ @rqT*5֌d">JڋEdC}}8*)6k,IOD +Gh"- +. +fUͪRK694@DwbP +gMby3r( .q83YҪ,YwxI`1K͟6߸twjU7ɌK ؛xM? ^/ٗpY aC}t-CqC9WbIgڈΥ&3ͱpaLzV&xk{vHvhP譙]XGSBCb6.wM ze??M+&\LُV6.Zz DXDj`=~4L`[:F$|&J Ĕ@bq!0|p8]<.Gש.̆.aE!3^cPڧ3FkizZ)zPm| OX]uq +S(9w v^GhggDQMDqQ:j4hHA,RZfM:S=.xvW.N˟ǧLF~0;Ujg٫h6H݊G 4#)&;}w}}s}vI↣P mڰR(0(1 I a=V(*y,ĺжNL4QmVmZH¾lBƤM˝~C%3Wʺ}}e;mt&"ḯ!^gYx/}6jqI K`Dq%L-i,#34 N7#&m^I5^Et3&iKb S>c@vcIݪ(㨏?wюo)79fDXnn̎Q;ٿ8pz :> uYd__{xQ{)4G\5.S0c})(7).Z(_6Rz.SBQfKCKԵ`H&Bu:qfx&@䬐ɫPi$*j\``h$Ah9HX%ٰB +)t:EM ↡!hES<>$cIb}%TKs4ٮ>)"dZH-_sKj=E9dV&] kO1Ř\7՝_bjWMO*abaab(>r \hv78(#VN!L0'ئmԁ"-rKR J7>6{&frʪt$ze[q=,>i愨/{nxl f[lI ¹ĜK.k Sl sQAn +{!ٕ2iHRn I"\DRbaDD̠!q,KÈ-)94J[hfVq%ncC3n*'$rDH`2SW^Fy 1W:, HuҞRSI`n?Mq3j\ ңX!" X*[ xs>~W +O$E zVptAVn96T˝8 mc_Do'\'##au0Ev˸#2>]]mEGK'E?ZϷ&˪ 6aW09.,0Qx0-gX5&%̀.н)G`BCBQTt@/H5_jA] \d>l||$ZI|X(W\=`K7ԉ;I5sH l˭U]ТzwW|xv -m|=/ǻ")a=A;bٺlڇ71jq_zɝyzve/n|U<󳞞H'tcǯv- 3Y o{]7: ˇ6mg0z `:|z9jwoEz&ߦM|[ez;Zϛ -ee31}[:\:J-\Dh]ETnY`D<Ƿ~:W,JMr Ou3&\~HupP6|# +*`GBnB픎O.l[18ة3UcUmD߷9xyo*v򾢶~ϯBuQDZ^K7^UY5!O53o|e}].,Xv3pab:ٽKRيdXN}_OEuNߥd1YAl&{G3,VjtXeD@qQbQSu31=;Yv] fg$-.M.Rрt %)H(@#``JPHUQDQH(Y"YTڄcohRղܹsǶ HG%ӈѶF + +F|jdJs"=jܧ3.],W^Wry͕g_T'G0F x[ԆE ) V%yŒm|O)]ָodgnmr>:WD*o|l<ҁ:R0Bmp2{eXl\$mgE 9[g$ V%A"Z.5'B7pb B*E"Q^x^|`$7Xȧd:%8"y l׍ۃ:K9^G[|hg-t=*i=j|~z!Bww[kza#j(:x)VVuyL mlz' ͑Pb”&ɬ-MK'~';3 :_㗌YEki/N L$]tl8k6wӄ|:ɏM/GnGN.O JO{kN "6{`qwՙb |0-%d[ƌ1Ō+JTk5]"[ +[N TFH&TEmԈWeJԐ2LtfDI % 8l~W@L ]ʤ, H`42? fsB6(esF9!XV跱9JiHȲ-l" aqA":kԲl?Om+ {S7}3߯u; U^ |\06Z7}`L4Ufh&[#ĩ:$rcMay,!s^@/I:TvMPϸɮԼix6.,pZ ^fMS-^u/" h&XW"!]k԰B$baJ$ʂ(QؕE{v& $E+D \4^ D 3 G0N%x"%)x[N{G@GIߴ .GO\69$аI=^phreJ>"7pReJ`n%` g  nsܾ؆0|S{O_jDq=DUAUDtR[ +n9}wݦ$n8/\lccǏ(K|~KoƷo_7s{G9E_8lG`gf-#h󶵖Nͩ׏¹gKr~>DYrrXNL]_axcW@?HɄLOyނ$rrӎ&zmXp}q9κٸFJ 3wՆ憾?bE҃=" $@5"b*R;;:gC'FP.pEmoC{xc_9:hp},oW^ʓTg >X \NMChGJ"!ztcO'y<>8K].tv>KHIzML\FQXIKIP:kp)Z$X'(#؛`A,v-kKTkJWVڰ~>OߠߥMY0A;&pWP/9`qńb2P1׀Ơ!uƛtC6nʿgEC7ɭmR=km 1gOO`W~WWi$-pSP%Y6U +F*x +utiG ߭chUkťGEssg, ^NorRb[B Kx~L-6ss>vsj;v&qܷ&kXSvteNF FQxYH2Ɔ@Il1**M9i>62}M"qtqr'.*5<'}IcC8+mߧR/#ԑ<5_FJbqǘ|~b͏i^9Q 2eQqDriY<ъtk%H9чuc s5DRIƬ13pxbT˰,ޱ%K@zR: Qu5ʿu~r/ɄʽQ Sp@ȥ(:X T؂%U 㠳=DMEܯL`S~;f"OGƪ#s}áw!?p1=0| #n`^-ǰk6St -.3tO4[3]N"v80&dgeg-RF+SPB59Hdq^罜<Şw@@_NؼLZjc阍W8Ges)+nO40acO76eX1cy/eZ[SduumT m{vNEʌbd +& C-VdZJmoٜ$o2bdy)9lXpqjL1Tl=YN +.ݎn¨& 3&9a(M|:rl4h2a$rG/X5N&tTv{?I0Vl&nCqp#MC]Mج3TծVt[ytm\/z3dX֍=u@hJQ|~JH5ETbAuJTK/`nXda!0kvDY# +"k&yOdQZ$ce9f#keDC֘ly!v=`ď$J@2a _J&ȆSirJȜn0 +2 2yaT'6 7D.S^b'DK{.Iq[WNwwbRu(/.H?e 63kʪZfkcsDjH5aNV'9i7:ʰJb&)m'`^%|}˫]McEi7uM*re2ѪݨڽzšUqwV]:˯S,pφh9l~NBK1b ⶮrg($Yھ"`}P$2#l=됇/+b&~; 5[< 8l%Vk˹rªgg]ݮ= +c[['ibbbBl+WsW{"m}mcW~ڍiݕZ FѥU[kJI+A?5 l9;mDRlyB"r9~!/=`_,bI{z j =t(QFRZY?&y”5/`N>μ*(yېٚ>IxJN郠_.)oLT咙⽢\+rCšח5lG>]ކW5OsUSy5U#6]_F9l +!2 ?봞50"Z(aPn \y=Bnmݙ0׌fVW?vDɥqKOrł<%l%>FD!)MoJzaE\` Oqo['P+*yoWǢ\ge>"p&㔎SBǰs+ɠG/MowV cq V9QQW vMTU} +uIIJ[ &|Eߕ&Mu \# +b#H@ +}QjZlQ|(t0|BI"S`<1}NOMݏ= PnԵEO3a ٭&ٸi_-C;]!pҟ>~5 xHX) /R +ߩckbf 1 VjbywZƴ} +k-P\F9c<W;Le.Oy/ї\kGAs}[)A'HXM 6[ lJ/2KW =Z* +P)xcQ2"{V]1Iv2m-N?:׶̤-]>Yzyl=p{=tצ?xu(k7*˰ߡ]@U(y'ojXB-q4]Ov{Knךn{š>0Da) pså\NM9n|_PJa!&'jH+ P@/x0aEO{EzIl?QB/Pp-ec (WVPSMHbyaƒnEZ>C hm@/<-pFQOYk6VUʵb>[s[(bQ\-x!+ +BLݛ ӽZ*2Q p@cfg36w7}֌Uyウ}㏳wvĉcP( 5PĊB'Vk⩀VFi u*XtʤSm:-$]ɞ!M{rw:Ky~}as%18775O,f!>V9zz84h3&YH:bb_~;:#؞S+i鄉 ibLՈaVcu"'d),'iXac͞Ա;g#6v% (D hd%L +L:Dhn + F > <-_L"-\'m.e5сۆMW?ܕP 1RJo2nmG;.Rg@7q)őSx|[;ޥؒrgH,Vk+y%#{ϰەm:8Ϡ9.B(VU~W_œtD\'8.hAlB&bL39m)tR83Q]i?_`n> +M/~\Ӓ! DrpptEbt]FKw)EW&lhZ74Cj5Bѩ7B,4..d[g1Օm]:b b=ۆ6vcu'CO-#Ȏ[2hOXI,>|%0eBcwD\_o_r%m}̷[9n>$6ĴL[0"%̲ Ydd^dN"8@5Q%E-)nv8vC.̜]1<HK+5d٠-=&MmKIF$A\=2BQ4=cdL\Fod9J6GF(ɰ5x^>t;viDh}o1`B<dˌ8M(,:TaRYpkj-4T \ ˜pT8%H%SIebWm%Z&uQ0*#BN%iS50'UVz^lf4)ԍ7!66U4#܅lوIR4 +P*M7/9J4'', n{ݕOtk*lOwi NdH&S ;MnI~}'xsGx? jIITܭxB[`D,?TI3_ŗJw1IZ7~mH7+Y76;jq##^͛Vt+!QOEm"U4NoH%"헎IHfIIj5̬-b5>7"tLG!Sy>iRsx N&},6F >뮯Y5u u"6uxȌ +13R 4H]AHcm}Z:ӝ|$EʑޏICr+V\ߚ>!UY‹١L>J]<]O!em*(lRFRU>Q)V-+1.k iNz@+fe2|Hr`AI $1Zl:!䃪*˒Lf#i%9s\zH .פJ\W#ĮւXNqى 5QZ'EZ+]  vp- Ѩ4FV m^FY *,[5)}|SR.c6K("@3-,P2pc  \.{{ǀ#f%Whοm࣮oDZk1eE-k|_Bok;X1,u~GVIM)fU|92VW/U+`݁mlG8(l*J$0(ZIRILzKjO3qv/NLaJv*A 8er@U$Qlg+P!mJe9vQ9ɩX$/B> +POGP|ZS(ZYY&R ou@4`C7*nL9Y| }С]WklU=3wر=3;qmǎ`7$vt4N# m4"Z@OKUGYJծ*ʖlҊJ@%( ׯ O7SP)3:~/s=w"|UkxPmslLc{:͆B;p H^OY EG hꈞLsO-u_{SAtr..m@/|h s<0Sz`}fZ00I~[im^_UEc?keQFeQFe{< e`3̰PUv\nOu~!mljF,63Yt`]o6b˷n:ψ cz4 YTjڢԌک:nV}WVWWjڡ#iu^z^{^[Dž +?aեrm#Y9'L5qLl"lFlK95ӻ7ivM3]{э{f~ zЋ4Mn& Sz p=qFJ3{1G5j䱇Jsu%ƽحȰC]EŽuʓ ;>7yMP%o-z5,4}aJBۢ= +endstream +endobj +47 0 obj +<< +/Type /FontDescriptor +/Ascent 891 +/CapHeight 656 +/Descent -216 +/Flags 6 +/FontBBox [-568 -307 2028 1007] +/FontName /KAEGDF+TimesNewRomanPSMT +/ItalicAngle 0 +/StemV 94 +/XHeight 0 +/FontFile2 48 0 R +>> +endobj +48 0 obj +<< +/Filter /FlateDecode +/Length 38979 +/Length1 59044 +>> +stream +HW Tg\Mn +$aj !`\ Hu"3-WiUAZ/C:ŊMsHh 6gNR𺸝;x^DBb@7DD>)Bz/1: u o1 7 +׳Opt2eX&]EPN$ FD +7cf?orC-l+)V5{ *[ ^ϰ2cPt p'#m@,$)SvT`ԟV*fhx ߒ@GaVa:YDp)H4O;"SՊduZ6P(,*E Fb{bQ, +E5qh?V9\ `ܫ.rB +n%RWz?;O3ǼW <MsB%L`ݰ-9j=_+`SGD1-ܘ1ʍ୆3VY*Ʀ-Ҹ!T7Or1n%`A\~yJSJ9K +B6E87_W=a|0aůk>ўcS=kw8:% +NtޠE"{2Xג/_R۱*|˂IKG- 0s؝a+|Cy=Qj쪖E 90Tғ[Ƈ>C詶QӆS%=fa][[TUmDO*?L=_|$ڭkMۤЛkcHx~5n2G)kkm Nz,Xk9l;ðnW]es6/2m՟Τ%ߑd~-'ħ'JƐ0n[3|i* +w?Ië1%^}'i돍O=9p'7$Q+/ytִKM:ֲu"]fl#U"yc1LoI^m݌WmMx@LXدDFe} VJՊ;Mf:{U9qUhw@-QHY >+I&nƻqT4(XZ Ih(5٭pI;K"Y:z!bcdo}~)D>A )@iHD LN; !0`" E( +: O!b-UhtbΟ4]ޣ~J'؇߻sa]|ȧQ9woBK7;kmfg;.ܷO̰hUsOg3iei Tx=K0=,׻ 53sܥ7xr.sSjmlݣ%Ӵv-Zfq[󄕣tx_pG6bգ4۹F 9%U y8+=5ZѶ#>I޷ږy !"f:UIS Y[ZsǼ#5B#9FVH `To~ovXLrf\F:|ua ##EcqܬF wRDa( CN]p'n3brAj$ )'a,%|87QeA%ˉ(z DVFI$ia3Zh${?x@VI p/(IɇOϩDa18!E8dd mQX SF#:s8|3EIY\\ PX,@Kk3ϕJW3Z"SV@ZLW3T)@2`3p Kv:3-Ǩ@N4ZNV**I^V*5 ߠҪjMWiTTGU=@Dlv +H4tKM0fB 6K"4cb ((Qf KhdQqDqon7"3s3|~խnD*Œ(DvA4< +iTjO VG"ź<,R!Y:/R)U^a% +uZk&UJdeR, +7cY,#GZ!V +"tyhB!%5I!5H"U9j$/+&IM?J)C*/J*6i/L}IBpgk1)9ӂv CaUbvo!2sqYkY܋4iZAB Ck :|܉&GIH[t^Է` T\ecYi$WRrp)jAh+RbIVxZXaV8̠cc$aT8W8aP>a1G6y`'~Siɚx/A?.'tx#ӍaйtR@I~~]iu[-=e!9BsWgxbR>we?kՉ@_#B|^ُO_sh_yh> {lf&HcB%A[K^zzc=?XBt]??apU_P(AUQ4xx vNh;֝/tR2^/E U ɐZ}1ޕ: d`9fp1땼9f}sLA@jQtgE3e0yy(t}SiG?_鍳rY<׮j>XBXƝ[b2ztwlJ?UuM6~veU--V iӱ-}8xUc{c/U6+zs_>1Ů'3ǩOyumͅiqY7w_D?V::q^D9m`v,DE8V5ɮ_w~1njjG>fwrw]jK"^Ft]Y{:{ݎ*| F*>ѽTA"A8J-(,]iKV0]Ap3"ZXfu&\)U}uFn$4lb g`?yXp w :a>dM + +]d#Lp UQle HQ,$2GID5"LD6,B(P h p qF8z:El"Fr4k IәTBi-Algi$09t,MEȸrڢRfoswBoLo7n46os< DP;{PG4\J8T0 gm& !rDP#I,BCBD1"53>Bv"1ESN=:=A$Cdp^-QW{o?࿗[?րlލ$g6c;1"ԕG&*Q§BBXJI@U'j҈ 8i+RZHG-[Z}gwfsomءcu~,҅O&EwyR+Jr[v_}GhKuZv@vEKsո]]]v ~&>%l5-jr-ڏzk'j/=n!=ߧ2Dh'-i!?@nւ'!I%,2}EG-|~KTjvf:N0WO 2P{i:D/ioMF9c<*}:*84Z{1 g85J*>vZ;=S{Wgؽ}@OP}w}.5"e)j{~zQS#ˡ/y UT.vD<fܢ|qôda>hEnTkdj7򞦣.fG-+]b2,ZXrOpyFW3{LO^nNvVFiSRS$4U0pL +bR`TU˶ф 1KGWx5}fmwi⚁qM˩د :[iCl}mJ#[!çz1@W!+ *1`Jr&i09l +8+daxvlSRʐkTJ , 5X5P-d4[d<`M+rT(,ciA,wHoW}Cnj-M"h5aJ+K9w|F0k#PN.KF&J7cf !:;CɞXnM106&ϴYI3 fCZAle%+w(@hXݵx[f +E-$st'$c DVRw;+=^f n˫=db[0q,.@-ŇH6zu#_6B*5h#ãq{3w̲Is)>!WazrǪd4dߔrgؘOVYړK5 V +xuzL$ Xffl m'EDD̮P,C[+X#;Gt;u2g&Be+yW6["fQ!|fA}Yʡ5bVꆼ`ky@<ǥ͠m}6رm0l]GaL9/7>f:T q1O-gͥ.MH]̹@\`C\A2 ~K>IMaiDs mwl*8{1_%ohp]KTi\, +l\ANr9Nqi7-TA.| EilC.̅^3f+)|@"qBlՠAz0GPl_"c 5@*dO[#@6NcukN2 O) 8A SRfA6xAM27G>99+q+b#s,~f6 d~C!t"Q,ς[̙ Sj~gm ܚ@ܗTaZ.s6ul(D&9#IJXlzPYDw׀@|3xCy.]^ʳ{.z@5:10bYS:_#Ow eJLBme^3'u}~1[X ikJXmY֌Y[:%V-YJKYAIWf 5-jbV Ӷn LմXT1~&sϽ{}s_X-U:r9 "4W맰6Q;0w@kJ"n}/g ٔlїu giIy*s\ULV)I8>@26O5oL 8w_f-$`qyqEw"szRi4QG̭b{A(=*Jq1{vMƐ@ׯkOKƻ2{ +9A"Q-'x>ȱW0WN)y4J>>9f5 r?3_9Ju1+`loQ9ZBr+hָ(zXXB^oF*A\(|ӝj\-2hOMiz bBLyWWPo~Wφ~y?{*05|;C^Ή9 * +{=hm)LWB G^@qM^.ꐿ!7V"Wa43 \/[Ɲag^Ę!$=#q?w| ,/+Ԡ~F z9rr񆜟Yk|Cy9Db5?k\'q<>F."cKѥ6:ճzVكkXnCK<Q,mϡ~/Лjxs2SQ! :o-[&ئ탴Q.WsTk1T6 sfvVj=B9CA)"o>?nV\E) ZZǠ]~*kzU/ng[$X~&F ?n瞠M~ c7oA(;HXV[jF-Z嘭L}Nȳ w&mC/3ZgJ~~v>{_Z2f痦=XIVkgYٜOoR8FV"}ի yN@ P!: _4##pѝZ>D/1ڔ{2ؐ{D`1l‘wwd?X1<]~05Wσ!ZJݎg#c|~f+⿑%-1`_X;q{G _O.Z,%e_DЯy `bi9X1UIS@ SY +E\B^MgE3C`?)NSr؉sBȃi9̛lB(5^+J/k>xhm@G^{*[vxU7!!wC? hehO0kO ,l#)𸵦kӼ4 @Զ[5JEӌ] 5xvnP} }(oB:%6`K-bU}+Y Oc#CmZq숐ytqߕҺ2iڕSyI>PNE~hDQK0ΥHUmZM .TGca}HmzP5zޤoNޮ&Fp; +AGQys (ݠ  {@<xql|EIhC6\B?.h]JԀzdZmv0@ZNh9k@ +( @ R75(-[д]ڇeH%J_Y(h(2}qKk,l5XaǺpa@a4o{gxucukWLCR<>oC(wA ȅ  Mh{FpA5m%m\cz]w'͎Ev`n;U>CR3wJ=k:p ( XN& 4Qr\[FMҤIx&亣nu<|k0"˰,"yUU#UŨ~֫7Y,ɶOӉ`Ɏ,c$K2F1Sc%S[IHii + @K(!xZRqNg`&N'tCd>% 3ۓk)_:ӳﷷwۻ[TE_[A=D[HOUğNETs?s_ww9O8uSE*'U\KecX},(b% aʾ?GaqJx^@s4g+  +6<8A37g{ nFc +Ҙ%brS}c|E팄'AB$~i'pbQ8jd'Gdl*eE)ˈD]U5 ) V!QȩrRD!`y`<[FD)AG T@AJn^Ȕ@G 55e4 +4b}O ̬rc(0!0vCr1ԍJ" +!@ R{eI‹:N"gF:ԒU:lVuԔ4YieH2Z)D(oO#8#Ί_-"j@arxvIY7 k5! ~xV H<.jG./ +IDޤqRLz34ER|X)֌zI4 Ɖ,: OHūeeƹkk*B*ԇ>ak:n(evf8ӳ 54E6@il*%rEo+AMpu qyQ0%e 6oCAg ׺UZ& qֆs,ZՏl(_eCO<Pd(a/R-~ԃ{0g1iy^/%%*__r ,Tܚ}/VZLN3|vbӑ7l:4h}tڶ-77J V\R5o{9ThVŪ[CѼ +*?i:o~wD6SVhN|M:& gz J:pk6Y`@Ձήsyqnv1|};;yϗ? 5T@ ]j sEVZCCrQ( 3"pOa5rوt~%,SGؖs`9C|@>4J*8FуPA;D:b<`x??U<Mߏ2M]~aUq:V3E6#o=sׯc:8~$q$!< @>^LV-HX5(UHIR2Hh&^LԎ&͕:oKٹN8{}~ǔu:m]뺇C;UۻvyU|j_ׁ5[UלWuЇ-򆞮4؟\]p4>-imvWX9 I߭tV{ܟ ̛tvUR1-...,-,,f7w*Ga|6 h*˥ZRB#\.p(L~T٩E},_A A_m_Yv]۔z{jW"{0VyGqUU'jkݹR}/yQwm^5;5F^hE}Jpao}]OC$bc%75Xb [pqwn\mrpL vQ52Oǁl\7 +FulT6 @K:bTaHDon2~3rp?,l,l+8zyAΜtSx84pт:Uv^ud3" Hģ?nvbIhIå $[ uT +T?x y)[Ck_sd|zr֦ۇFΪO7'ГI|ˈ<g8CQzSpބ,,0A`b1r9^"(+I b ao<,Qp`U: +󸵙C򍤈਀eC<6qi(@TQ/Pot>Kӵ$ѱ;p`c̯ʧ^x_+9{h)sd{¿r|`t%s؆Ŝ8+΋4^dgafI7CUb > dϰ +dxQ`#`(`ssBY$ +rr#&L]J4%<YVRd9N 5 P(¡IVx O.7dOzƓd^uiX2)b2H xZ.pr,7ӛ4oivwX~h:scq^OwCK.9$GxNyפI%.I/JB +BYiCn*BprT/[E*\QP LEzv{y?=_rTy8EZ'̬ٓ;=p蹁Mokҙ=?]kvVw{FƏ +-.^&j8 P,PXuzh爜BgXHu@ 47Ta qFCTPg[ۻ{a@&$qF%؀VQ\hi5ճJ:N$(":fҩ6iNNkl-q Ѵ5ޙavyyy-LpR90Fȱf3{b7I5 Ie(GuB<h@[ŠguH[^ +l HWYVܜ +kU\XFZhXW5!o(>^30O)N{<œԈz䪉 3,jr6p=11oܚ>v>Mq"Ym,1*Re8PYdSraO!'ԮbN>a2z1xx`ɕ8t FA7?6F$&!URBb$Wz&R]qZFkX9`,*0]$ڐ'ԮWM6wrs۽\] Z%^Yf9H5? ș_]ۊ`;Nm,W}~$xhH<`I.*t9)JH)@a/b; +G9.գ!EFXbvN0V frfpC8aW2%{]Ɨh'RNCGbWӕlEysU֗ǗX]&X< TvB6 +I_y }9׎ICSFܝoErՁG7[t\$@Хh8-ڕ7qwӫ眃ʰjzV-]1'i`nETҗxUܟ~/$尌,sh iLs%) +l?^k??MGcY?\ ^#I?͓!^ =k$fwoCnEY@]kWc *cXC,1 |AQaTxZġ:*Y) '.Z3=8'Ϛ3e潍Pn$E6ky,2dm$ֹI]M9 %mZ_U|#ϔҔ5 #5Щ;|¥?em'ۭjj敮Yut¾}^}tnП]cʒM3.lxx׺Z0ϣFM8HjtOw7^vr{]Byi_ r%<7U8;PlSݒ<eN/n\%6Q( xP"4bCJƯi1i9p%d:z),No +{Vs@R@(7E[mL9X'(J'#VZj[%aE(Y!C[ziO=vۧn2Q[U,/^w^wWZk+6|;qk +p=R5D]^tM%qmQ3q-Ld27@{ IRLX_fY1ҋWa*I/5mJFUym!- Ai0t*eQNenO3p,x4Pc\F-vAGjWC&H,^H[FFaՀ+2#@ o,(6{NMkbzW[(#Zۑm4{S첁mc"ei,bdqѕeX~&j]bv +mOqʄ.G?H/EB^;]wup0MY.: ax>1 z~No焯} ~E c~A2=Ir1NεEa +<dci=\p 0 9^AAper/k)3鬽{75o,$5 }&Qȣ@cD[KJ"4 Ke3_֚BGOkƞ%3k ]pR[HJ{M+|άZ)pe%1tqE9r=ލu #NaDǾʱm/csWB[1err̔_N #ry.EF OS#pIPIT[=$\u +nvk+@;g S[YK MQlog!싙,8!x6m_jO***rU|2p}&e Jun0 Ů(r9"dMSKFDVωjDm0LZaǍ׆ f Cd15斄qyŨ;3+yP&y0E9: 8?ZYfc La 6~cxQ<;nAۓyk#jns0<iC|Ep=FнoE"Ej%W$8bRhUaobddJ#N#B\Z SA ꉤ#'P˜f ˀ~?1~YJj 䤄W]ܑdNwhK[KMfcZ?i +6ϵ +1cDLCч唀=?_umqArMasIZAM!0((y8 ,O<}< ǯ3#<2>j{džDLvZ 2 ΰ:5+zq"umo [' ќ2S=S7'N!1Plg UʭZ8k VB 3׀2h]N$ Fw(F2J`:/M7^68s[ŗ +N>u4{ts #򅿽9?Ŀ?KO.tWrqԍdԍ"q#aPΕwB tf}YEHy/ dٝ,"Ol|bnᾰۍQ|Jwcl+9 >]LȒRRӭ3V~slhTUwօ?#v(۷c{2;`r iB(2mYTܼ0«oWC@}{j4@l +D]S +7N]\Ã|`,i_=OƯ'N_ÖarZKAU"LIvh(Rq‘

`5&Jڡmݧh7Zѓž߮q=B_[yzrݦ޾{tr=綿?~Y957ihR_|׏=G㚊H#<ʃߘC:g;:SUfN-OuE"'5=5)W+Ek&En"'#[[}>/JWUl\GPՉ>g9ݥO#լ:7vt2j'zSwfceVʼn +WG,#6K +[^>JY0@ӨGm3oJq$)Oͯʏ!hT u^'F>VCg7C|IP.aD}Ɓ[K1K4,P٧&I dYEF9"C-Q X=C8;2,$l7e63,˰6i Ѻ3jȂ% -:% SYĦ)6 +aoSӓjoOp%:fqke2S Ge^9jf +j't(7Vn"%b\ ,cuGn c?Z_kn,o*'8Y8yW$Su +m5ڴԭ+rlz mqA%3P?^-F +FYPCܫ*xҔ @ףNOT_R_SP2Z@5Jhzxhս,hUQ&`_ 4D jxU [|Vڈhw扊Vb߬㠶i\gT؁bzUwt'61+Lq^"^b ++0/aV%.^VSV `+lMp3ޒOgRo? "8LS"LgI'f$qa'E&j4pD]`7؁Gmd؋ ixJI3{x6}I ͥ׉%J}R7|'<rh$".T*j4x.aߺiAFzN#@1?JќM)?̈́. JMXwUVzd*55JVhDc ut1j>~WȚ$,w<CGxrH6ݝWŪհ}f`w6o1k`2~A?ȝ`Cė$#pY8 bHkk5&W4ʱEj 3x8 G㢄oTGTZ,y0=tFXUY="Ie +j +")8z/S.=A0OplZLڗ豿VT*B$(:V&P:5% RІ=­Gk%n6a{ ^H8JXk!ˑ:AC (86SM)\5`C"]*g? +VbAu3;3Ql<2(p68OtѲ%b\6cb6|~{p:GOc;HB=v-$h6Ah%?}8]վ7vja1;{2s i]Q\7 vo?ԛ=0^H[w +_J %$[$96T7;@_nQ ~"SNXPcAl0 +a$Ȩ1Xg b&OT]fC~/UoAf/dTv:d d'1a{eC˗O0?VZ{zDJ[++* j޸H$ Ȓ!Γ<8ɞ=C4i!vDn{Ҏo W~9Y;et&x%Xxun&yooqKuW]0ͅ~˴8xzpewVp^z;I{PUSj`*찊T`aPYif&3WK,Bfz2f]9F.q.etKT KVa-lö䮗 ;ZJ'eD$HX*p7.1\D3 %dI8ɩeUUd} 8 J_:@9Bz(Ro e#Ђ&]JGG6,+F NppmG7NWEO=ټxo _מT;`pSC;)b$l&P#\S'QO\]0w3n Xh5q"(Fe̬詈}ɗW|Z<)8T ~I/fyT֌yEqG$AIv !⺸(F11`SmUkZaz64a'kA +adW +$p'%Xg@mmnbj†zs%lwQt2WfensTb -r4Qli>=sq!]dP/{)m3X8P"K6ZG1Q47ɬ})tGsIhE"PeYEfDW||6ш s&6n^ +- +:uG ςEO<׼bm~~پ{2ڿ +F>{E|o Fxԁ AB)c:< M oX][_WmF;j6[mGo7ܛ땇E[ѾQLF,gm`>,[3H(N2f}rH¢E]֕Ut0 aiX_׸i;c\V>F[Rrs%榤7koo75/QópM2R}Pʿب;go_9咳/\H$-aDzď1e)hjULa@3 `iJUAbS %{Zi~֝E+h x<ެKXPȻ4#ǁHS 5475?P'.>rV>9p)ynhN\XNYЂE+E RyB74u 2T24xpzQOA<߂+~֬,ΩhHq l3!C@[pn4c!=z]Ř|ֱ"g}2̈n}S,Q- $|Wj|Nb~-kI*N_hߜ(ORbaNs9s]ԅ'wg⼂N,ZKzs[ӿ9-%;rhe;?s`5lO}{W?״!ΖWM0t}}0$SmWJG;^MH5:a2ul,bv.ua'MYMCr6͋c >*q(A$/+kˑ,gt,Ր+|w|[mqz~Ӊ6'+i j) +pEu_姺/kV~W%t';]:ԃKx'|[$y +VDaLfBI_s ꤶ]MZSz0FΤKi/ڼBp5)RTMP5Q"X#n԰,؞ctX ĜSڋ6[֤EX"$1jNͶAe zF8 jڱl IJ58zWixʓi[FtA5% "~/:h| +ÍIڻ>][WrR>ތ/)tEk;ŸNu`_n?qa ]/ UN-:dp}Ҁd\UbX8&qLvXpjTUE+C'V]"b'ջ49=HѰ=BǂGB==hhJn o!wd_hyK]Gmt/½$m v-'AZ ZǼNeh1FJ*@|A^y+<13bC404 ?}(b( ga3{/ ŸX!;'t;D>v+x2x;H*]A"8vFQ ":UQ"NYQX#M +*;B <c|%-%K4lgψ%!ՏNJ:2@k6 B!"bND>6_ْ6[SQ=G lu49" i:= QQ=n*т7"<(.T3f[4D{RTi !TosR`=J}KT{<=;ZKoc@Vb+m۔o/0/w~q`5u9ŎJccGqz9랈uݯ,7YXEژ$XGcYW)/6:LWZn.\]tǹs񌜧K ˺0 $ FA8KHd_4?g=Hp %Q1u-F@6zR)UОwυS[I + hJ5CLΊ+l0^ivg' v?V J +P&md \ GX +[mg6&ja~LKi B|˙wwJ|(|n/ &I.kL,e6:|Nۗ8v|;K%MC3ڦl -JMtcMP6Ub11u(Z$e j1 @C~":]Ve|=c+=izbA|̯ 43NFhs 4Nrp{ ss=4NF䴨8DE*!J ֒q~4XY c}|RE']'%I".YN"4<4 +ǚX¥6d'5|Bl'i{B)+/˃gNL10ð Sܴ ^:SlYN%=@%Pd:q$=5HL0H$bjdZd} NX2!M2;Kʫ%@qdZ!}k#uK e Dlj(vDKouŨ 8-\(:Zރ|tOԢ]]R.?$ǀ.KeH(vz8ndlWYch#L3OSg9~y9Wy9UZVl.ais䥘-.p fdvؼBE:RLZn6ɜΕΒsv:zdhːcw%r"fn~֊-KڹJ@ HKy K.òr_ﻌfOp'#YQ1OR6Rw>PSw,Ďf.pӓ/ D-%'m>_>"Q-k^RBz 9N \)j1FQnQ-KK&K /#e f"ln*lٰ[8(,OXN==TDM2H^'fEV Ja 1PȊ`r(t([kr`i7}0[r*v13jJf;zSkIRQffCaVz[*VPCGn0haýۂi/2?WyZmj3%YK [sbmtTwj7+lim>M8 D"-'CܭC8/Sd1Q\D +-h?kP+l nQ`)pT] !;=CDJRC-nx(Q[>h4K /\![`I@@5C534**PrTe{'Ds{]ͽ\z|Gd_s1P#6=QRcT:/}a?$Yv..uޕ=qKC_վt@Q + x[1f;RwM#Dݿw&ʾfؐc3'EG?ɥma׊jںib`iVBvUflmL6Dl5uoXڦ_lk+P)npUPi PTrxk 2-1nq !OLpf"2 j2j8%9v  RM]| i+fҒzpS˾Pg v&3'|s:S~;߭ +?3x/=\ {V~RL|gEzmY*|`'Cu6qw}}s'vjH @Mc*ԉ+:2jRYSm4F7&3h-!5ڦvIi"eZ&w|wC̰gXdK$O<+̓/wv+/uS+/ˁ]x+ MZ.e=iiX +06 <hD #K22'K򠜗|NgYy^^䧼sVh-(K#Eɧq$္lF(b@y0*` +̀y`  hN6*4 5ә5@X_)V +#  p8XfǢ ;aC ;+nO9.Iϼո _p& AЀǿ4&thHe{O2޺g3~~| ĵ =wZhy?a&h1Y{y#8MFLV'P0zVL~`QxޙJe  i|WCKҙHXXW#X8f"#p_!ֱMJm@XB"}DXH'XH85].&bM-)e0%ufO髥} :97LPc??';^Xj~6Нp/ʨn~5΃JDbJPŔhdׯPB;k$<0lR502Ќ5띏ew 5ѧϸeOce9cL6;nxкĘu{ Q;aϴzQa? Q *{0eF;@2Hb*9f19@Lp{)~y9sNti:b}vR[.n2=0wY!IYxX8&JXv8J,2;R)vK[ZU>fQ- +X8d,BĀ_%ˬJ>+\qdDE[*J<{4 +#03о8Zwg<އo.u 7v>2e^uii9z YFێLYT9Z}kഏR&}|gkTaxGXK3oYaЫp2U +l W!օ!oqZx5OhVZmkUD9Q@e2cwM؏Ԑ_pj/GZݽRN 5m&TAE(UE!2gZ)~Mqru‹a͡M+WJf`DNm[XZُmHO[/)nd@_R</hrhѝziI8˕ue\ 7~\U tN֙ln>4Hε\div9 o㬖:h0<4 weB)UxV K2'-WjYͪPvU^gDfT\5ƨKn~@n|H3p{k*@?S]\ c1*LER!"oHCp 4 ͆t#R.SsKd2'r^hƄU۪}" 5HA +(DnoJ}9ÌoADL1Y,.p,7E3\WgKCin-/ZehcyNF#{ˋؼ\SȜծ HZܘ.*߈'18(-ʐu>lMK`LK`>-~I+]M{D{˃{ցmf*HX)6Extv6o7Y{?.>}wuwswvNbǾĭϩtIIBZ m@H,eJ @j' 1MOU#jƪZ$ʄXgv%Ry+cC!;ї8_)CMǴtŔNXyƃ,A`q&Aۣ.P3]ND~JmZFOR8j`o|Wl8SuZ3gɎ.χsWf-~a; ii>V&z @E^ȻmXZW[[6U /T wTK?!WbU)WNRD` ME^Ec I1h*aIjɀACޔeRFRgj̽,skw`ʠ2C.Ѫ\YSlB=r"LHt}-E2C']!V OnRI)\Oa^ ˬ~wD>U. 2hds:Կ%ƫo27.t|v(s0K =Iti,/l[1Ms#iG2ԝ(: N`xe:b/d\4Ox"5-R4H#ąǕ)'ǾZul$ۇZMDN-)0?V=eӋጛTrb:,lU4r?v-n,&r(Xpۮ: 5&6HDԗpU0Nb@qQ?C˵(P@jR-jڧlv1Lr鑤B1-T'UA^rrY %>ֶYeg*Ÿ:iN/۳@刽OE."2P]@N~ZpFfTMdkQ5)fw,kJR `t.Q=BГ=_ JE: FLN fy\ɰJ8+%t!J1[V/@mHz _j8Vcjx /5N.`WQ˨DN("Ɛ;+!?5w" (E +7q *Z Kċ26Ap6}_|~}~;wNb;95-I!iJ \:Q^ƋZN֩Q&Ge-ۊ +NĈjBE6||s9=.wpWЦcj`8' k(}qx*8T,Gբ%K"Wt:]Rħ 'fD +1K7Sr/F@˜Y-`b`UܖEqMJi +1(5I]H@˰\&3qyH.ˣ2YL`2+QnvX&r\0DXTh 5hڏ%*l :>|A7]n^%w?pV+ԫ?#{C&U2hё@Y}*Tǖ_#΁: ErG? 5hjr*:a(s5l" '7hH{hah~#D:BdވօldAn! +ؕ۞|hmq::x{?^.nĻi݆n`z#*V{ 3gԝ^^ymmwwJ;HQDZ漰w4{aDLJ J1l)ile;Qgjm)#tsqJeBOh$`Ӊĕ%Q^E=šE4^3lʄYO@Yc55ڊ6hq\9Z`{☙ cD!Rɳ~͜i.Y<,/2MqķƱGL直Z$y P[}|>ޖ$O>?N3ܦB,BGn+tC\EdbD>։%l.HtϠ PE +8&2"eaqsxmӠ c@޸)~PnyS1 #0i$?.Րs\ԴC J-''-Nr0ZLa /./$/,~^'דsQGofh * +_ W"G.18M؝~|Q"DEѐVۏ'WWNq~uGޣq!Nn#NŰx Qdη ^dp獋b3%Ed$`bmYRr Bb)΁!]N-YH>1ʠ23TAzHCq +Q꤄ҨTAjp]ȉy$-9Osv56g5M t9|.bJAyYݪ5ЬHZ j{[2e`%0p;ir@ N&$>IL:~|5\o>&Nf'hے/''THKOZitHC:F5ހ)lvƸ`t`gÚyiəg8@^WSƳƳ:4U|3 h|s.x  S%"MZ4E 1"ٮ6:~ϝ{rw真{Y;}IlE˕5Mҵ$ ֮n@kJ?(T" HU :`黻h4UV!el&Ixw/آp#_۴Mώ[x2˥E!^Yg6wNqpc׏Ԫ'~#2ڱ>e"E,_$zBq0Nc1RRpX#xhy4+Ҽ4!)!&SǡC/&Փ!CܽB#˥vD֊݃[' +!aG^L/xmJR}{ I" +N<6eI +4<t01%lh^]UʮRS73Fn@PսϘcSm&^f~ɞPN/~Ϝcs ʫbj 1-gvUp 5-F E+|A:&}!Ź6T\M){SgBDdRcDtrm?XUeEdr)Uͳ ccIQD@Urd8.s繿q~nM@8sy)Vٯ.,z^>Zas+&r1\Ēl\:/z[hTa)c&aRWwlu㤼 +& inj(7wڑa- +!cht͞kHqz" AͣxX4CqRёHO3M)rJR3P0M+iˉ__N2 +hČڢv1ag.(4us-@{3BMwߧ%eJoϢ>-PmEק݄-8^+߳?!6]Ie+bFwFQ)C(83c̪Dd|d'c[Vzo[Y.Y{֩_pQ/ڗW-}%>:%YH[p£qzs88'ʇ,5 \rƤp@8 P*A5A7rN8่gMˢV=ؖX<ufX:1DZQɰ1a/(<c|SVb8P#"ZSd/# Wx^P D-A//g2Wo{ay;p(:Dq`**^S*o#-y!_BI]y n`@D&qqxf$MdMg)ļ #6i[ϡ[tszu@#89 Βs͡]ʝ E]Y=ƠS*:.˷Tdb) b'C{J+!NAbyLnic4xxıd3b~v 02db7N[/@f_yTaPG?Vd+i1U?>k72}>--~~;ӗPRIW?uFB{.Qbm/[p`.<g̙rp9yúQf`>4EkE~g^߮V:kaDܤ [*^m iaZNL'B Iy"~^EbpNTњD\@U\0*KӊYq+eF%n(N2Sʨ|֘6Hcj#DZʣNitޅ1ׅeuCr9j-dقJ=d.lP*%EF$]ѡi.2ʹg Q 9+@J\OYPn*jc9\Ǿcv;IpR mA) 2ҪRQU1FaTlJiMH[Ze[55?2&=As>}sy TU<7jBFl:8p RQS| ɐWAZNc^|UN(RU7q4ء 9#LCNۮNԻA+aE/_h:3117G9ӜBȏTqDud U9U̿QQ*myn +t7hvs.GgmTQaEEmwgD/Rݺij# 3Vxê#k6z8][Y|VU۠)PHڠ%5YuUT{dZ3j4Tcl&_Rc 6_Fof{̏}Aa9BS."t5d_S BڇAkÖ05O, ǡr3*! \TPgrvrix v&28<8B5RD !]NGs5{p81yB7h9{m}g}Mc#sKhoAD"X7o/l{Lwq%Xޔ2i +=6RTfEz.gxO'=&E?S~aO'I&ij~'6T >0oTű微ο|ay!QLHBgiH#ec4t{kÂߕSmFSmnSq[[25Ww6IipTEJ?3[Bsv&M.qStM:h,1PC2ޣMbS;,kRU9jmbL|"8ݓ r5-aCZ+ +"VA~6d +i fx ekIS4~+X5먕XJ^yB!%m"3fB +K }RRqAxީp$:yB <97X{uԇuV5XdciYa"j*Rٕ?ϸT63N]e2~5#TԧIiLYgl 8H36?-}LF+Z~آHf)#D`R݃ςI~\5E2ev:+ͼ<촡a쨾bOV _t匬lݍ\rZաЪ"ڐ +4fu'\%;+.Ü^$}|dxG~vqҁŹ=BL8ћ{KW[C7վ$śMh L6͂ m#I<0,dlfID2dFp +rw@\^7p؂mg=61wtOiq)1d}"/0G*c5?7y36  ?tʳn:o :^X^0CG>B!›~aHŏzn~sK%XB٧ӪxbDc$"$Vf,3 f]+K d%we%Y.Y;BH3^~qIvcߤ^$ h tcxPoشי8;ۺczbN{Ϝ Tt/ZYA+Ae¨6SA(y3}{n]=Г`yz] ˌTdy"9vҎH;Y+<^D1iQ#?/3{`;'- Q_,,Bv$p#=2̙T>JiZ鼖LiyVVGO' #ȅRQ֭j&9(6<H=;M2 t/>*YrCin}oڱ֤=nsC]Cl1']u|0K.:}J8ܶ{} H퉆г]E4=6jPcbu2 XySZ +7oˆ &fAB$H$"6)_8)^W# +ebڪ89t -+cv] 2zrX`ɆTK"4^K,܃.{X|0,{pJ|eLc>}`9!͘Ӟ8&&{8~ٿmhmӜ5RVè ּ]=q8q 쵕㧓^-Һ)ʵЩFcQϨT4M>D0Im?U,[ BV1]#G7T]VmJMd$Rߖ`VoDBWW|Ļū|Q?ez]?k-6'$rfʥ5/"  H3y2x)q~&3YcUl D)ZE*+tO9#쓩zF6`qd^r7VkuFSeMttv.Sn_kwIvu*UkN?dJbP R4rbXrhCwп]%4,bIg^0P 8:2p^@Ҵ~?UTNuwPo0ZG& Y$Hso>O>%F9HC?ǯ'H:0fNLy4Le^}8Pٙ%-p`c:s<ck@ + %)$4e +Vg<öl)ڊ%p9wܻ={ʽU5`(@@[Sή=CO>Lف;xGR}K9N\Ur\)B\=ǽ].s+{y%[bl1 ÒlS* e0]"(4ӕ+)[ŇV!/gsB^NE!O M-fw|x,5ّ:}r,9oՎv4 -n110A7NsBb0EDz˵4 +k& /ŗF/v\9{a 2O7YJOdb +endstream +endobj +49 0 obj +<< +/Type /FontDescriptor +/Ascent 891 +/CapHeight 656 +/Descent -216 +/Flags 6 +/FontBBox [-558 -307 2034 1026] +/FontName /KAEGFG+TimesNewRomanPS-BoldMT +/ItalicAngle 0 +/StemV 160 +/XHeight 0 +/FontFile2 50 0 R +>> +endobj +50 0 obj +<< +/Filter /FlateDecode +/Length 25946 +/Length1 43452 +>> +stream +HW Tg@"WtE!~Ai !\&!RZ'a E"xbxAEQa 2UֶG.n[w%mUMx_.ޘY:qzggMo~-SzcEPC_- }4wF]r⮪+ AV삳>.ߧ~ēw=6,(uͥ?Mݒ,i-nU`y"!owf(aYVg-r +bin"s#梂&~#/PT&*qT.~EN;\'5U}c߯b)RBr[ևG]bP̾z<_ZgxU}wLmZ#؟uB#9&UY$| B˯n Rl#_xXGN~ b .fb;3bĿhuNR'Igh`$ M TOðFl8lAZ ,@14ȣ hAs3L% `l2Hg~~IwFh412`8B,B0iVA!h|23yo}#zAcY0 r!A4C}^!էT##P 4!$b P)@RG‘  Ta"::w(fa5hCDLfɁJ)TDFLj-Hd%NԄ~s8OXT<5)ƩAV +q'*N ip.-͈V.5J*e`@qA@~"# 08,΀* )"XM4Q TFMFpKbqA*Vy93XW޻s;+ R<r#`R۰B$`@"RReDTYՒn /Q1/Wyk*"8M2It QTUPZ>ָHBɍNRʍ jR^!S%Eb[.e*K/$j\l/ 24K&O{(2]\O,MHhuZ4DQfDS5ot$5>pեI5}5 +JDĤtf`.e1g; 4P'87i5s'-5T S#YKZhH"S*}X8fpD>ʠ +i;ϨH2\49ܚ>uw*nC_-/_ )i0qUܴ2;Um%ON[ ݷbyѡ7hiuT`i*Ik|rk^8 20ٖ llj_zg'ҡc݋ }%R:H Yk:z;皞:)j9wӨY{k#\r~ɫ_5V5Y-_lbG hs@M/\*lrJ-Q8qwՇ/1G?9l |kv_ʨ)ܖY_;㲣\>{PMdoնCc<Ø&<ϰ@9E_Q^IvS7:X@A _0W/Kv XjIg}pHkl!FA aP N>`60`0:#!m!65U! ?A1!j0.;PP3 H8@kLB؀}a$}p$pn`=_LRh8 KPPmɆA#~/@g]U.B>ep3&x`a 8iaTm.'gZ+A)kO:R0fa)W(!k\!>{.d9L.8' I`v~HQrZ)w*SPAO]jه$y'4khE{Llf*O#Ѓd( ^=0x71 l3s-pD0n2@-/HOV_B{aotBW, +>3ahZX(,+J$UxHa1+[?anO})gȕ|3y>˷KϲI LyD:_>C8Kpy]9[ gn~ylT'ى8_v~7qi-˧׊8oߣ :D/Q{хta%E[t^r̖wjqBYy7Qdt_ZX%k8QVfQ7kD'QosPATEy_Fv wǙkܫm; *qf 0U7,k=GOR6IG7dGWX1OYfz$GØa3US5a䅥f"򣸋.Ttd3^yeRt èd4L#x"6lSv(cʰrV`G_C>SJᩡ^9ހ)G,Gx}3aw` 'ُY=#x\OuYz:)(n'Ii&!OwX۱gALG9L+rVǼ8^\2VXDl)0yڀ=q!p#fPrq*|tiVuɾmC]fia!3vZ#˖.Y\W[Sª=P9]VZR*vfΘ^X=m,GfFzI)v"g4H5\!Cviu;#dO1ԐN=msDŽV^5c'  % +Rv%E#fEYG)`T5ƾN9(b~*FYްxF{bnB{Bxieo 6?n ]k_sGS~o+V_hD#냅Oj+DΨv?;|V3m5l8 yV϶ڎQ;=\cOS О ;G8X2psy,I}u)ȡ#7dPTFsm5pK3,sasR)f +*!v&9);%3G>Je2Ǡ0wƺr5п +m?Ɣc9^nfO@ 4#6k~ZTY d-&\Ji־c{ݽ=A>do b%Ck̿c[/q%WZ@u&vb*wN ̻u GS&7g2L EȰ >ܶ4U|8Tm+I_'|@=0ug ~n`.qMqdߥb56V"8k jAQpKpf\ +~[?~")E)HԪbBNE.2J1*+\LMZ.w +c(En'9B. tRGly)qr3q=Y6 )l_K8~޻of% d,/HB,dW8Gv*E+2b]*() dDG5LęvP[*eTZL(c{ a tv>{{߹s Z9QJJ%M +糖)p>5Zg=LZ|P +COQ~+2j!} X'Rx|Ȋ>vtcKRY`ےlk'lyҖdG^{Me NgYi7,m9|N1>d>tLۿvI?|}S +@kl??$**-\HnC>\%Tھll:8\8XF+mqwĦTSu<*[a|9uk Њi8@BT"n\ 's4Athm |//h}WuleuɋrL%ϨDsnRxl m8|F@^ m^lB1HfQc#a KsVڪr|q?P4U9Wٻ~c)N&ĔY>Coz9";m~MRa+Aд 2y;~Щ]s_oǸ{4Nb8=lc_Ǥ^j=ͅ$icyUZvW^UOGW})?i;^{!=2Sڷ/E){ͳ/9ꙸz6pV78;C>|G]C8;Ft XE# #! +Q=r3@g6vJ,DgAsjaH1ylAnG?c  e+~;ەyܬL7hrZf!+2͑[)`y\sR?}6MXwe! HiO2d9rѪ #? +s(YCwډ%59h$"|FB^VAC^ERq l6 ++RIEm@o+1khHTtUDGWh&]AUj/VjMJR,TŢF6E(-hQw;!w]>w[w7m#nGަOuGk^7Y,Uqglc}gc|{\ci; Mȇ6D~D +QR5Q4JA1㣑%ԨB +'iUIӦ%@gH$~O<μϼ;9s'>¦hGzƀXoWKK + M?=)|JkZGch}`|FN&Xd9UN YfN MCץ:tץ:tzXp@Z&p4`u-qG* x&,6˞1d#O=]7FxC?Ks4GhM7AFhћcGyTh,-_t3 KQQ9rWKk!YZgo'5s4N&*+i"0K.or}SU/xj.OՃ +BER a?xOIH ; p  yUПrS\Nr=I +zЏxhvxGIHy%r]ϭv÷-4M)JyJ{B:IH;H,ĖA" +M/$J[дbr0׃5ZCcaO'/?Whe@OC|\*LU6eQ%\*}{d#Շ{?/r 3\,:QjepU?m|zaf;QʯJ¬T/PeuԚQQϦdwS }"n3Cȁ@=귃a|^6B",uޮa![07E֏] 5um\C<%W\X:jWW8S4\{Djh5K0^Ο9_q89[y9Y*uy\Ů"Ws帘 fٌԤillzHa{..s<9>匉yg{XfE AfҊ3FOduZZP<ȞO}BOzRHsy -3 },ӺM34~1%+{bnZ/)^b7Y;WH1=C}޿d1⤟ [N32#匙nu90RFqB4=ūnMr͢7N>uv6ZbKݽ5hKf/Z4aQ %/Uu{w'N>݇;Ӻ;d,Y2ب#Ё[`!ii ԆbjB.iK)4@!1@̤i CmCL' +NL2FviPUZ噉̬쵝 ٺh&% \aGÎC+CkrMG(y9/FLD>W%8/k/yJq2pbǩyA|C+Q `C ܇A=XMٓ\:eR} B]?^b0jRa;)\𵥢\[lMٳXuu:pۅ5@ _ivXڵ-֦b>Psf2Ԥ8)vU.NÅg#q;!MO;T)t]`?z\|k/||3ˋ 2ZL|s WiC+n-33[90xRl-/q+C<:f5y\1,߄hqUKD8."f)$mh0u@SLv⺳,;΢f%{m3L.#IVwhƛAQVФϣRQjeRxٱn?q`~y3'f[_R?YEGQged$jٛqYH %qS]oC6cT1^/cKXDV M'[!1-Q|a+x72p2\#5ڕ: 2T"ezapl}AѮ• /pKaLA 8eXt38XlFbW[,%@l GXA2+7nP:NSX]+Fs K,ۋyS Ep޳ Sizvg91ME~ςz;Р0>Z%Lz*EPǩײ;sx^DV:2Btog3~'iMd2K<.$b0T3ېOF9`0@r,aQBL_C/t)[$.BqLisil(w*=}PN̑\y=WC/V/d|5F._G[{Lf(͌[5jRYPy;"֜tsF;ӖG(#{>j;nT6Q#?]O Q8~}830$w@)ܿfDۿ88uww.;N[?wæ1g5+^:&[]zK O=_tvu?<≣%~-fx{<ܬv[XJcy̵+N>3~-X]8|nDx%:tÓ*5<5:5{}Ľd׳,f<'|YEحRs##Vo(FAM.P"*8q>[8J|k;k"rاc|!L4& +Y! B^Q$|5:ykE[GF.TwB"!b"Й$#s-݌F{/ʦwH>=_499= U7HiZy'vn4 go$0}FM!ӭbz:}AX/ +>l2I Es(M 9[~vaŬ,cQQ ބu7qRQ8Y@X!7%nhH”)&hE9bsM6khwŶwtԢ~HQ?[`18d|犺7&jaG\J-Tфʓ=zGz#xrmX]2VR|@ z(iBjKZ )j=2CsoڳCGalMxӦ7~=|"]y&_ i"a TtCNy Y~{+HVE~ʻ;yqVd(JeUMƍ}d_6Ophv.8K\QXz ,β 1KOP=25zB8!M%NR2VT%89RdRZY +>ƥ!'0 B{=;C~bGk PzZo7A|aM `y-X`I|7P@h +A9瀷BSJVtST)W^W&jksxT>&G+.c(a{%"cR2(׃H4";EM|LݱV{^_FA/#~'1Fby~' P'4B?=m#<`ܙ4NToqZLڥ(֫ +QxMjY+ky^5 HzB,,|p-xk"M0Tm+$chZ_ m\`RZ][OhwJ#n?mrn5x Gh⨃Pk@fM;`֤ 8)| Ů;](~̜q~"5[Ʋ>hRYWj^f-2PʏK2A%)2q:3Xb0 2% +@gWp9]4lR]uQef ۻ -)CߥD : "2l!#HRG C$ +ښ:Nt3i^(]\(GC|* +23QfއESZ3/*.3Y58yF{՘ݥֱCh{IftBDct%qg7/I/a̹4Gh:VP +M-8K0Ox87X $ G\51B4H #DzL([*,K3ꌐ\[mLh!ibbK{&HQq uQ'c?ܴ<.\&k4%1l+O^u<;&R4KV@ +,[z'o9`urr9dr-䪍6QCàIz+Z׿1,80 WX5oYEUU~8cڿ3wd~UQF A]\"/zC·EƊlD% a{5Zíkthzv@t;_C,9g\y{lŋpB&jY\Al#=kw wEeyqc&:'KĹ%`ș:c :Jˮ*+Ж^lCЄnC]iP64vҎn^'GiQENy tV֗vh8#F'L@ oF!Wm|@9= _x7haոh!IPUG'Q T,B']F{*wy XDer,(,/:`e֫M2y shtmudUkb1)G@#~#]}.ٵ؆y+zxֆjojWj +8j<ќgqRN{Ueeg9yQdAl6Nr0#Y%]ycCtgtmku,NaP +|< R}(-2zei|H2%{ҸRtM¯I@1I\>y57`dRHM!M{4 +WQ5@.;*u1AgHa'ev9V ]!uN Rֲ(LّPtr`SZ A'=5@J ,ܞ k欋 XT)hH@Qo ;Sҏ[(Q\(:'s <'Fӛ<`MkjVY.9T7dI*‡h}$ +B"MGFtM7\I%Wv&qhƭy,&CJJ.RRҧ;+鋝Vq*~Xg$bBb-Xi.3x&1̎(s +C)㒉B;.8z [ +Lc5Uk.b(a:/3+zeJ1nV*U7G@UqrkY{<^-#5^mЁD[KɡعK{%nDpR`hvT}wrq8uy^ j}N/'H]\7n֙;%ؖv-,z'nىYN7~A`Ji1IwoIFA G0B==նmY)~3yGc~hRn%8IJ'rqLRLyݤШg'`P;DbܢKTwj SW+)dhf~գRYHIk`Ng +`9USӪ5[$)Kʝ?t?fhOgƬ&_ϭ戽U3Ml۱xajbW\.'jWOg[pr@y" V_[=_Y3BZU"(âIsN'1")WeSޡ|R] +hZFw(NхaBW ([^,jxVQY^ DTPUDzx<}~*TLliR& +K0X9tS Bvh8t. +]0! t0@؜|QeպQcGFACPM GhG:BR=ѨRQE cs nY/φ]Fi52ݒTj]{iPUY9\ǎGaBu&kǺa͑,kaww~9r緳s>3ə_  CѲ8`4mm:eRH0B!eJLH3h)4@Ӷ=s?{.]|Q?p#?}mW57?J0ŋ>Lsm\ -#tp[(ZEDHf lb2(V +SЍҠ2<bwAJԛY[W:Z 6\6M,}uƷ nͻVnvCcu˯* /MK{ZzcO5\bZ$#P¬%M 2hzWH yR00"a*N0rN 8l5U {q0:JM! *CʄrQVM!)Dgp4WjNj&naz2ǣd0fKTV ]*êjnU[ŭl}bRn U)WJGQtL- jdB"rKN +D8S I{ CH=ۙӶA;9bqH#{ c)6!0ηYz}Eұ@7iOXj :L;:[V/])H֎ +˶[~O$;WwO ZIch8C$o{ϤaC92QaǾ1,k+C GPh 5RCwiA~pq xo8Y7r'9Tш=:O/'Q)JFpҤ5+—`ݺ5j;aPev4tsU @1>iN6֊ϼXpieHݿwuiA + խkn|>w.`sʁWJPKO?T`MX+"~#箏]WFH +Rn ęd]H-׮ cs5b} +"6K9yn8!CEPXS$@j9Mh&Ǐ>YВM)0> +Y+ qW| MS"LtSFɐ3!.XdO<2jLJ&%ڐk7^Ԧ5z=#$xt\ZYl2tktkto2'Gul%>3RJ۞~ݫ&w+vvڙB5䠬yi@C߿n,m8PxW1?z/_M׫c<CEc#]wwۃVqIޤnnr/}ANF{m!lv flX@Sr$6L!qq8Nn%&'t8AOkRbK~’),fn<3zLtj(L"+AUŢ{4_w}^5+TQ +!^I$DODDK.(8UX<@/Ϫ?* =_֖W۵a쉛_$e>;kʊC_O}۲i< GQ& smKh"YJ4gdU!ù _X&%Yg(%lD""<ʻ` ȱC3w$FiFA|lPDJ€8hA(ej,boՠCr +^)z1$8 d&`8fyYc0V& +DuzX<"h\u +Ǽ{>׳}pXQmqqňPuZjwEORmeGw (ǎ]>wr}9ma81CzT +E +}[z/lxa6Ht' @,'ЇzsXG헔+Kt8ZE 4[ŮHmRHv~&fM.%T5V\c:0{m6%X^FIoP,cDc Ө-թ)*j0PK4kO5Qp4kc71P3[u4$HFц+,lI+#,ro79&XNHnj0i"uNF8Ж.X۴ktq}胁fӆx2ěbltX <,2(uQv4̀ =ҵx997'<& +>o~Y51A-K=[ \3oX$-\-~'FH@ak!h:čXYXb\fQSs_?|ZW=ݗo-7mLۙs~U.G/GO^9bohⓃ;3?vn/pY ]rBĕ8Eǿw͎IV/9qί` t29Ũ,5,?7t +QWD4Ԭ jLӆuO}:(_NYMcF~ItZUtwqDwGItw{d;L0}0X6 YZΚ8e5E$JX#5 Y쉱~&lE,F,lH,D@X7A$K`/5b!'E>S'DhN·"*hа^=xb (T%YaIB Rh83٪Fơfbg f qW`H84Q,k11kA&"$H0Y4cL֠0wbaSl ɂ` ph+7*'1]'Ժ\)hA7F{RΆ t>ZF=pb4۩,$U.A TZMf*"13л 5[(xڄ3\cR(fD$}U*̇r15F.l^¦b$nth1H* +*Ǖ%eY-\AAD;66YD/-~j3\wf]"wΐ=:QMp i N׎ hY@\b(^ 3,@ eL BmbŞa=`Ӵm{[W-hE˳4{QeW¢*|qnqG{~xxŜ.ӓFDB"$8˲B[YP•5CYPE]wM5Ts;;ʆ: +nPu= +~t$RLeϔHVU_/W:>qS9AdQWsEh lr˾a>^iŕ2]Y#`:kjRmZ`Xj +}aQZ( +[ަmT&q3i b6pg=Rb\:W {nEcfHA|Q^yWP3p&5TF V1P45NԭdSdx]STߌ[s^S!nUf tĂAxMļudαޜkbGΩ :,&g.hW>kc Y=Sv"YkM +>P{ +M/uغ| ћ:Bh:m/!D0%}NBiM%w .aKni sC0%w 󝗐ΩMYH &:&&&&< dbfs[ͭ|6sm<NNxtBtsHAܜA:mb+zzfzf09u\2tyh$hx̾[c/KV-mGm;1JCܮw#3'C\ Qd.=d,#h=`}4q_\N뜠 +ள %z4rXx,mFc߬>ؠl9|i|/ݫ*f$C&Jw崏b O٣ΰP]%q)HRҁI5Ʋ~PLbA{^|40\^gf1/ѿS#YRbp!-vPj>aupCA!ekHvBPC <‡}gTklYܙk`S;%)i%] QDJh #TAUS*%_H6%%MU CZ+H&¡"=wfں3w̽~gFC?3=Zd_~9ka?~Dnt>w4^(?;XeJⰨEB!s&e9nikfLkx-kCjxƈő3D+CLRqL7 ;gW*Uɇd^ՒD%Ux3(ކ8ҩ \UdvsiyZ8Mٞu5Uwfsx_1V'Ȟ y2Z kAK5`kͧX̠E 4hzh5`'l4PϞmZk﹛\44LR R!&0aiqL5]RR A>" +)V ttYgB^ D=J,A7»a e,`WT[?R׹QtVmNf-n%ΦdJduMU jA,åeI +QۀP$,%e7qgusUY!&~/һr/D7F4 ڦ9)_lu2e[XCXzW6i߽0kuW[j0gajTfpL+А4M;N/0+@)Y~ư[t"/8M)Pv"(GCb c4w|  < +!T##pNWs'KP+Fr21k#`Ԉ]Q./G|[27~Z> +!J][G&69|w6qe(ֻi|M bTd|¼ngM{Mॴq}  l +XNbYv*^/M Fh,AOJKqc^79b9 p; Wwca +n1^{G{QWNqS#2ɬ߶xצ0LX.!Jig65Nr ߖ +7AF=̓1Ca7xÃ}x>44cP,*YܽS|dUfE~rey.0 \g>\;UA,D]4",M7[Ƹ6S_ {Ns9ѿi0(lw8~QEq{wvvv,?v]a) K-?BKaKSD(@T&HjD I465iMԖ3;.Eϝs{g9%@|V,m֬TC q32BA(=n|N9܂3!#rGśW5>!eaV+ҒI1WAN^loCwLQB9ǝf_ +Io{JO%UR^Zeɪ'7 +]ɺ-vIq߱Ȕ4;g hH o"**UY9e]rg2ʢ +˜P8 %!y䵊bX `N60K6ъWHA@3K{R{^Iobt%F&2.erQjP]=ą% oM4HFܡ$"- yqPuX]dSi+-YnT;cOqz#8thL=Ys{R["h~4G;NLtcLEpCi.wӳEgS0{U}'S'ۚzJ*CLC, ,? *{J `%-l9u +ޱ,>N_kv[k@:PIs*9knY@h\mJ:]+`V -#ƻܞM}`y( URH񌿽#u;; =qI1p_~5֫A::ΫolVjڥi:i^̺o]mSY8P2w^Bn[jf2?C=U8M͌/f41>љ'g=7P:;=;HD1I`pycڣ8> Pkx3h4Ћ] +)< +MK˴g?{/x-ޮOhϒ+/;:zjj?]# +endstream +endobj +51 0 obj +<< +/Type /FontDescriptor +/Ascent 905 +/CapHeight 718 +/Descent -211 +/Flags 4 +/FontBBox [-628 -376 2034 1048] +/FontName /KAEGKH+Arial-BoldMT +/ItalicAngle 0 +/StemV 144 +/XHeight 515 +/FontFile2 52 0 R +>> +endobj +52 0 obj +<< +/Filter /FlateDecode +/Length 19506 +/Length1 34664 +>> +stream +HV TWy ] *yHk2 ںL@I&dQyhE|RZX֥K(UoV]Y[V|=;s~?pŀ2b5xue;@왬 +vfܚ)Ѱ0!<˚m\/>Toj3qq ٶ.k:ef@nMx]D3=o#M@nGrkvC{"$Esk^fj#vtI5p3O 桧 \~.zw/\zϙ!wlK ;ΰygd{[y@i7ig5]݇Bw4su~:5-e移R~ Y@[zg{NIżEa4'Nݔz:Si˔7s +<AIRJpHuyoZƂ>^ߊ.'"*KXXkwk(ݳ_h9:偺OφyNy$rXՔXbu||W9k6ebWTyX0;=F|ףEq啾=$n| 4Tʓ[G aÙ B6 Ac%5H( +eLJoo67-<6xNPˎt<) * [5MusgxЧW&Z¶:]yj/4CܹG%\w֓ŝEުWUYi_KGmJxڛֹ|&>03p~.6+ mx?;^h SƾvciNc_U}eiﻩj]zve'4IztZ܉;^GZ߈ + X{/u.`Ë;>X/ pxP|WSָ@6v-Ȫ,޹5RL<Ϙ:B!l02BÄ́MoMPCf):26 +*)aسdЈЈ,\/C )P'A&mA iJ,ki60ٛA;l#6TB (aQo#)DaGn2fⴑ`sbETL1H0 h"s\]&2ͤ%S6d4yH>b9\Ev3@zG͕ؔu'By!fcpFtU_kp?лwYU7[>o9٫[._]^8q}pri\uGo0tnz}G[;Z&Ĥh{aSh.CK.JVkţ6ɦVޏnqyswˍt'sGdEdz.6'xlv@\o}yg3Jec2ù\W3[R-(v-QEaÖ B!yl¼&\ w$&Ƙ??;ۡh#y$ {#`ڹ>H=֯xTdPп( v;Yk0RPOhcQ4 lT"lEOH nɄFQmF=m*Pل4)CNxfZM !&~Db2)6Í&\gbhm#:hZhFfmDN.AԤqMO/TC#BPq!yR$GҌDFƇR5r،iA(7APCDLdJBUIirZU)50VQ$UX(O}'U K :I 0UqU0S)Z%DFV) ӡ&5fRdf M=,늟{gfDAQG"b +,KbHY +-QJQ>?L(ᓨF[`gAWٙs9s{W^^+x_EPaT(U*ܽ}~/HUCbBB'xx#nO;>Z˻)t^ܗV)>VÃӟv{J1+/2^h/*PlyBS_d*p +=؏%ӄ ˆxL P>ZUX:TD }2M%j>><yIC +/Xa_ҳdRn> HBˆ0!.lJ,$K s'(/ìqAM-|tn$ +YonFr +bG&`,C0醳z=JmGr/3V_D)ZbᄂXPcuuЄ77aY[3+A_u!`]m\˥U]-YU,|D*_b2Wǽk7v:޶T1Ts.$S JzB9 4XX1 daTDVfrdB[ǡn()G !x]EC-uzK⦛U q1J67/ mɝ2BIFPkVBM+a7ǷOU$RmP@ӦQ5Wu>md9;^:b[WOG]>3ne˜ɻ;_uz:AvW\^m/zdh敥.k3*O=|1a1sP49V:7ǼT~f|0П?}yyZپrF8m39oUȒيKG{hR_"cUj7=JauWݷ&Y*9]?Ȗr;sd׻<6'me[>7?s݃ ]߽du 29]up|CVg $UJzN 3m{n?pi_y>yۗi#*I@ӣlA8c^MW|wд$fmlZxdYɊ?^W!ozoR:͌Pmdژ.:= M=W¨G ,,@RzrOByj5WigR'@DQԽJ +,ć6B|{&9|{|p'<!DJ`8 ] LvcL̉ l"9 |!WK`*xxPіt0G%3nb{vN8OߠVHEy0ra={D".#`$XFj#V0Bb!e;Ű9s v!CĸpPB楥ebL| qSU&]Em8fϱ +~/͐׳Tc.)l[n,)MU%6񚒭|)BGqO-T&nF9|G}uX#b6"{mn?zUNDrŪQa2zuN+P1W%1fTz&zBTZjYg`u[C\.;`G /YpD+uϊBøS=Cm^AFl΄[t M[ ϓژ']8^۩zhEy3r>mcJNvIv'|?%!S)W,c=pD0O]cj!LK]ʭi+ѕJjܥtZ55zf ~ +>Ӊ /ݫ,LvəӖY`'3,o(#Fg^n)­چ[t]&l[Lk)eb y1Bm5b8%TժrSˠkKC>؟,- _~Ƈ_3GR' 않!ĺIJ{½צLS3'z&v),t.SO36tH>@ƺ ZA5 `Δ̴%d9W.Y-W!!LmK:|*Revs'd8~3u&; JK@86ːVE-| q̿jCAkq]_R-Kv{͠%ߥtYKq*n7_W+G|!`lF|7 ^a$, ?#gcM Mo ;xLKl~]F$ٖt_$ ,Fq~W; T|[AV?\15]Ĕ>. .Q IZTh+ +/7m8=&,* qx%5/@ A<s8^:%ߣJb8 ={RNg/_ry8d;t|BI3>S+r&QD-j[ؿ(NSs sǧ,){Ҍ2v,c7?n7UnPFhKnĩm+D=/ԋ=tz#tI}(%s)NNy 1 _ ?=5ϋx~iiZ~2wNaGoy=9קӤ/wAQj\`>0g#rĺwְ}5,` ێ[oطYۆ>=7D{[;X?;!BxGE [7ܗpǟ}.@Bȝ`9O0N錭6NљJF57-DZkĶ5HZ(-b +)JȵʔZkolXS:ٽ#tnw?uK^5Po`1"w^>^Χ +':ISΞn+rg&-x)e,^3ek~Y#ofsfY PPAϜoɰ1|Ke_|2!>;Y;Fm 3!#UU`ٟ^ {vtkݱWYUXx>f}V+ZSfa5101I*waafqΧ 1|=[șJ}1}?oH{IbX D̹# .ԉ.ʖ;6VdVķ {~JY/j,w+Wxgh8,_sJZl:/I¹>+KOzxksκvJRTJ"tsQSBeYnl_2}~xT3wGu>9Mp$.Rx5"ulE)t㰲A %m[ߎ׃q:e#>Fn7gI{.0R?e¹ FTYޑǤHL8K]qVGOK(P- +iW/Rn1y iigϙ;$Q;E<x{_1]F;)Tv˵aTʷȺ/=|++[NzQ9?v^ϔ*AYg@}46kFcl~Q9?rөU0N p16&IJ@Lh$ʹFMFQvc'FѨq]lƕ{VScߥ1#yS5`'v'2#BfxF#|c>%#r|ȉ%C(t*&qxYt)tL~~}ks"ocv_\߅I?oS? w5Ij|Z@W/CG_<1D3FܜGN|WCgN;={y>c5&/KKѨoSvM~Ȑ~Pj|> Lhbݡs!y(IOJ)iJRTܛ}alIdc!ꯕFZRlĒ:Ws,wSLdBD|^)>}E> a݉OïůKe ź<ӵ2qNg1cAj^u>ތ b*Q]oq2A/.=uuO,ӿ/TwLV7&kt4#$qٺleX'շx4Rǵ i^m8su +̫Xf\u,ԗq512M$ޤgH)T%425LM/e+kӬo^!}hC#&ψԓu=#(mTV{'jcd!Rt~YfR}}>ʬL$ʳIŹ3s0iv$ε# OP93:u̯:DS%?X^Ȫ\;ԯSQ[~/ڥI9BVyKEOw{ê}އKpc)1iJ)1.oT2&~OZ&r)?vV?V?KWm<)1UkjtKizf&;7<>^[{J)9b\ƫH;ީT[6:ݬ#ّH<։cHD=E}j紤oL湔t󟲩66%Fæ;e!RщP7CoE*[ ulI$D"i$D" D޽ mmmm0mhD"HX"H@$,H@$,B.k …p!\K.k(D" +D" +Z" +Z"@D,@D "@D "A B!K B!%Bv~:!y")_Wp;d>FH6fO%¿-\\t%qظb`CI[R[3$̈́&<4q;ŦNNg02ƔtZ&ILhN0=ِL_Oz}۽[ւNsP!"͠ l |IjSwj[Z|%捝NAAZ]Gg^:ؙO^Nuo+6،Fx&08tg'x9 + dqjSׁz|,`,왠x +B1!,9i= +AI7ӔuN0Q'ȹ £ڦL5q)ԘW֓ek|K0mj/aX&D[V +BX"bX(ZDQ4HD$e?TmYf`Yu +v #X$ rq6w)ڽnw[j&wk%qhk0Y 㚰i["$jHDϳZI8ccc$ru%r|Zw'IU+q$)&Xt1H&&8I4XE@C>@#Ha4O"sy;\ g"ZnjQbь8`V f^Vpp­2(jP0Qliu(JCJG,rj?7]c}X?X=]9fE}va_K!wT4\[} IdQAmwFD ZGj%ڗ `Z0sViVH ZloJdDIvl8)p%#vy:'׺*.AVhV0 +ax8Uq YplsGbj#ŵޚ`KESw.=g2/2 >g%t:=ȊVZ AhV/qіXv~~19Vc?dPK #xye㷮908Ǒz]q88^a痡<^j teɣj @e3xF#A3NB#eRnCCD@u( ɆI 6ƋIQ'$>ӟ^^b8FOE' N%rYȒZL|CaͦᦰIX?)m|ЎBPCPﲹl(`GnjB!f\czhZTS<QHQxW! 6*xHHRzYrrvzSL=;'ϡPHnA KZ`!JIFv8}t+-\- n/sgN="HT# G|2`y3E$%2 ?6b:/~b:UȢ)zf)]ǵ4^L \;O}ձH\O +5ӛwrwsHҹI|;Q +]EjgxMmizȨpiOu>ι K]ft;k[['GwWV%jT]XaeN9dCCNLk6)#R &5%݂[|iAW#1|V8+] =YKl{{F̭Ru`IcҟuIYmCq<%fǨhuŤX_ţT9|yULo|t=){R2Jv,U&[WMۛ[6%?{bʦMMy0M|nGo$ހG'? +|#U54$\ CFB$ԫJ˄uW0aS|(0*exIJOyxwZ.1<,BwSs0(rBKkun71ñ?`sڄ_Tbc|777ŎSg\A5`|Q.V;_5 +{vÒ-KH/dl-pC50cq4 2@L +e@r0¡PBJ2mhaRCO 2к +f{|;ߥ콹{{ޠBA#N n v?*A'+$rrR7}kuBZ\#ϝ٠׋!ǠJr|; VUJZ[$vr#$_Gf2F*FRT0;n!~Su@C(PeeBRpF&* y@e^YLEFbS5)^,Zwb?nhl~9pV-BZ\D1\r`{ br9׃#`(nhj +;t؛tq7qs="@`^iO~H;k^cpc#::CC|y}x唌ʝb~9Ooak + zwAn2Qr2S_ CtYTm4MSG#Pɦ~J?'(R׏( ˾'vXipr|Rdl$L^iT uˋb#Jf t% 18p88-IYNL^IKn[q]a߃oKd Ʋ&=P݆YZq׬=]t"!OQU~ `]s{ H(T%ZY9"7 '6۬d*N|rZ}7H8=^6|MlG׽]Wp +XTŞbq {MTd}bR"rTsq7;'|dC67#gv"3:xOiw%5Kx;̬495^_磯%du!R(їʼQ6ANAAo?y%"a'r8C7XK8w)vߧ^Kr7 ] XuϺqs];ˀXÍfyH7H5ė.6yŤorn{qM 9 0"nWPrʘӸ<(ӽ)Ñ8]a6J 5/!O=A^Moނx]?0se$))TIf_lK^yZ[!Yr~xi&*6yd) 5ŧ}y`]$\%P$)0\Yw|#,CS}d5ACmh9ޅzu.`^WsM"&_(ID[%a>o2Z%mx{.,쟠cȇtl'c:JLƀwu$}q/?|yt}7WW&L[,"@ĉG\'f;<13n|T+ʬTIUoT)OI+=+k&n` 4]Z&!mޗh)& +( +CWEjJ*tA[¤[D^W"E!4s %&LҌZbﲆge ؏'968Lo,MAޓ4Z괅N ++3}p򽹝e; @ǎgrQ~/zdz?v;qvU4yc̱y&O7g$­HJ#tHlkv5l5&ZTe=ޙWy9 ,r +CtR)i_Tv\1v?aOjxpoӆ]im;7) p̅k؂?xg\1rJ:}? h[)".ī]ĝb?,4#m* OSq,3C0=$ʸ-AtٵMvBv؜p^ w~}_Ғδ TC N ' Y:;a?^n{.hIP'*GexáeegG5 f_Һ-ɆWqC6ΆѨ);fҊ">[[5 +8"ZRӿDHvCmZ֮H׊)Bӭ@&+ơC9VOyvG.3%ޜ *'A7A^S y=npqR#͙љx8}rݖ9hbac475i1D^f{'kT,u M3`@^-TY8[NX0zIEx +^U EV=uׇ}%*[E6=~tL= +qsa4#-I5F#+ʗ|#eoY{fÂ<&z|USǛV"Ks=xTx|f.SYJ~8k<zag/5yn+SG¯dvh/q]|!5ʲ6hMZ/6FOCۘT,vp(-x?y>NwqᖖT7>8>0t`iv9 ˕rg2^,qVg}%p5RZfe ?b˻UnzB5:bV-j-4c9mώU[3f,_`aFQj}&p'691;1WG0eLZ{6m .1iJC Щ' D7m {X,Z*EZkUe$&T<%S)yL6=4IHbȈ ZTϪWUF(M)c +2Nx,B> f\цzW-,[Q /oTPO,\YD{6U=SC>X lT~spaA:^գuEޕvQʈrGx)k JG=ʰn ݣq튈󣋸e-|*ć"Zt\, "<'1S49 +HH ؖ^wG?:Vq,.4en~{<{?_mP[H(HA2Cx7 Г d@`']CKYqeYIu+_S)I#"EMkt9b0@`bbbbbbbbbbbbbbbbb8  +ڐbU o.7 ৢ$9X-6 $@Q}[ ڡ:a]гgo氎A-+:Vϲme.ˆecldK%$K׉~+RsuVza1~1C?~tۊVLIp ri> +endobj +54 0 obj +<< +/Filter /FlateDecode +/Length 15290 +/Length1 28792 +>> +stream +HW TW$/PT K$@kM2!3 +AUIEiEEGjG*Yk+Vt*j9{ٳ3gO &&kT.i띩w!j2w!]Ѫo/[e,ax1~Hkɐ wxkܭ={B1DZRf`ODbLHaH~d!Y֌F=(HN;-BMo%`s _PFܙ(@ Q̍×qշY\g)gG`:׻ՌP؜+ +kY9uP&c9W(9?汳8рla֘ lP(hA%ct "g1Tٌ4[ VV5l$$i0< T$UJ; +X2Y Cc×ze(|8\$J7\c\vC^r: e&87wxӜ)j?={t,|woȏ6:]MMM_ݽF݄NwGo-\|*Hy/wV̞t܈ڜ|F*KeԥŜGh]b~%%؈WϪwT<.;sSikIBa>Oij+ > :|Ay`dܠJn4E[6ED [ZǾ*l~W+ַ,ZT=Q;w?B{=1,?g9)Yխ)U CnNKM!xHNNE~q>>3&rWha#hY0IF.<3|^PnXȓi{ZqiU⎓wk7{aQ[hoi_Mi7+,of%N:#<:o;+4-'mŲ+YY^tq)ɽF %%%bdH!CFLRftF*j5H] PMKL^KҴL.HG#{Ȓf-J +`4f>z9OOI, +q>c4R"A2ңI= +75g%myܟѰ}+Gټ5U<һ\>oW?3ɰ6uQ1O"V?SE|8=d.v-a(ݴ&,oTYgN'9~۞Ʋ4S" ;0{(.uڴ#3t |YSsrm%Zfu.Tv/nÃcgr[sEU#ζ{R_ '-}',`vi|q]yMN?-. ? ؒ +wqDm\ 86[; 8+e5=6-3-gkPH.. } = }q˯nVPDS5HL޵s;G SMn cmݞOԻ%&'2U r`9 sx^ O`;`%DzqdF~-(K?z:~i}ӵzjJp2z&.D[\w<)L<#W;ϙN + ~rWELKbt͕';ɣ'xqn6zt'$>_\Q^IݦYPᒖڬ.|^sg=11ko_dOu.5ʛ/zdӱC>{Vraď>'簦;ݳ"Zj^ y iW~_Ts-Fʯ}f=quˍ>,_[^v#G=> 8wk([qMuMnfzb2_w=yHf<8j8E$hf ҧD%F$I#9GR% m,#jqySiTaȇ<bdp\['/HHAYB֐|JpsG@S'2t=LϢg3Ʊl:ӣW 9pg9 qo^odf`ve+W-F07`k( } \ ȸ}pX!vąx "3!i$\NN߿ + }C;}v A4ZLKhL3d sa,ųLm`_Ş(g ᜹h.eq[VI +BH6^% ɢedղKf_A8o]c*vRΞg3a6 TZIbRE$:C;7>E't "%:C]ք|L澆a Z&Xp^5M]W$b~B~\3S 1:PeB alJ! /mjViCHҖUTSvi[/s9;ڌ;R*ߤ?טC:BIyפ:9Ln 7gB(Ax%;&JhS.F.iV3#?U +Ea Yû6z}]<|,\oe)`eᴸB#7nd36i֑#]Gu*ΗܐPU:P~>:X\M1hE8}9U-:qZ'O`:DқcMnLu"yQ̭8ݤqc{K#srH,L Wfao"VL4N ;LAs잍 +:i݀ U͐ Qy̜|W%L1Gobߢ>T[SVJeҗI-j`Yb Fά_s`wᵉf=ۆ^b:5fQ#5wb++- SC3ZsEq_e{l3ڲC ulhi1P-qR[v~Z͑j!d~>KnDݎ[B}szo0$N{eYkrڏ<^Ua7T,uLmf.4I蛘{ŐZo 6֭b@3c9{},sӓr+_ǀChIq6^ל|UN>b| t A*vc@ +snפ%=;q*Ѐ9!b!CR?z `z㋰n&hpST#LW!+>|M_FƆtM1oBٖ,,p%(-'xoȁY: + /tX1~t!(|JGU< +`!]ԂAVI7-q8ؠڄſb}3xۃ+x̽9Y| _<6Iœ=uH (6$a~}JnC@P  _M|1mg>33G9np=yp–<8gw=;s*%{-z` <`3χB+<srDžs͊ r– |rR$l'e2)MGgTDM9LҷP@CJ-jZϒ8l<?O"St4*̐F,4*(o$Fc\rI̓iŸyN8nJ@MJ}ܜ2/T>|T+h4)DG.@*O{9iԼOBG?Kx9i<\62lkͩ +-7l| +~g,zP y^ܝgO{li-<%8^#yu&9?[ׅ1×6?ٹ:^mJ<5|dnM c{:'&4.UѮgGzY*6s;jea;O#E4?J#@uD]ocęE{_|*hh5lhrujRn<󾻹[c]\n/!9$ $^! J`[)Nv)X08P +*2`h +JR~(b)u4H}߽ ` +v>y}w{Wga=LX!#^{Ҵ i+dP*eB~ydǜbD};d\ Yg1D_N[͐O)ea7im\D,O7؛b!9bה?`_>MRLB+TkX?.9bی}X'6OBl[H kH>>X%XP^ۄgC(gqFnP)$ )xrv(Si-qPی~XC`{0B+⬷yNKY2仔{1o;M]EOWF`5Z튃NڮFitsgKED>? +թQ~-}_%>̽S~cr)0OP*>:k9=_8u + ۚ <~1E{}S{v&x)E9nD ү YhuxWh4/nӭ닽㤘kN'x_?K2bp}w e`d(# +y^J˂E~~ryT-k-}xYa㬰X#-Zd+o +MMf*.RGHf%€+xZ|vE%p|cIKSyw 3u//^~ ׇCs/b9;@h]E\z T 4v R'?/6 +;8?oC ,HX4 +㆞7f W?OFzQQPoS;OL XgA3|y u/3T 0 h]_'4{w1oRC=N~,)x/8Nh1#-y.=Li1JP|݅JR'=GWeᛄ9oXHM>nH|6ozX"h,-%D⫫%_LXH7e 7KKKHE=hHAzlQ8@703g0ef>\̜Bfãl dܱ fv2s30|f1ʌ(ω<4Jd)-A&hcz4:˾iI@7 +RSx +v`:b:0:PI*p zpt!: oi1ztlN78ĽaFW +wŕslY蜢4*=1/LɕGYZi2 7F@lkc'[A=~F%ˇOք>@nꏸQX?QUqIrvFUO#gw~ʽN?^Րse^锡pc[D_!U_-o\ƮiS&g|ebEmm(ʪeya\q"NJf` )![$R N'@\Nȩ@ء@<̛|9hb#3o`ěOcχK FOiR8m=ѶlR;x5lDXh;Kj#Oy'TUwʍ]%rIij<]Qu*3X%,@uU#RqTW\BJWVwQYtim&:-k}Vn&)%xKrXzi SPќ%sP0-*oM$6zʐ%ނMjnk_= $f'DNz:Ģ>.Lw΅Eai_i4tfAƲ 7xIWX +j`5}p\C< +cόw4LM<ݦO3t<|X`.<*!xT'Iٌ8vAZ(SF 3@# >"OOWIᕓaT +sP2#7;HjRύup-0iՒntFV6g#Fb \4>BU&'Ƥ1S +*p {1,U<_ʚ= {|ؗZ=7&>zx? lhF& @{7sDxf2 +2lVL>_{jV~Zo?\9~'oMnݿV%qLaC:FQڂvpM b<6>*%Ҙ49BjQ+[*f\=Է^vBՄӃwp,=\0Dzv+ c٨GΔɩ{]ĭ`&A1A1UkzN$b^a]4\k|&o5_6egm'?Rm0Nǥksb9K39(`4Ds4G[zHӎVob[}xj>mE1>Y2l&pʓW5K6bgF:u5m9^z®e12Yb]wj?t2>z{x#|w~_A-nF&v7yTYA*0 iMtFHt,̔ +9dp>? [%¬|YV!r=F/%#Ue^3S9T Qh0rʺ>]6,8MfK.I=ăjVRTCNtɈ.)Iu?mpִ. \I/0=ȍ$Pl! K,8Qҙv88ǔtl26j4ѹCծ>NG>Bñ[sA`(UR|˄gA׿~K{O+o027Fҥ%]COtRLڀIgsME6b|θ-yٲ"nYfEN,=)A2 ֏ $A>re,ɱ'DSνMm|ܫ#%ޣsI+sA%÷g30>tRLy`P"ŦjapA&p+YsZ#A!0 ˈ"3a됵ellqZ9;'MMPB Nũ/L!19󇘼9!5 +F.$U )p6"7#c>rO>I{O86AC\Wwه4$\>RkvFS ]=ɬ!7[O6.Moju M/X>MAaM&iQT}S{w 0ˏӠ -lF%&Bcx>D$:)sWnj] /.q`z1 l>ޓe>_xޞ/VE#>7#ULF4ϔi_e2RLZǾb6Y?aj0нqCָ2Cq1"GvTYOC.CE(%fفW2더ƜLl3NMP7H$I[0ed=R0ZohB#f`3]#GOr +_>?X;b?뮫cy}𦍝TP&IN{"&BaO<Qvky{%PrYԪe ]~/T{ 9=~OLzo mNƵ^_B&8i\N4< PY晡Uw^xwiSUŶ˷Oi+rkkdD\;W  /U4V\x<-fG&ܢ98iyٱذб\iXe)wl[--vCerpSz(O7i2)`/)JRH.{Pʊ8EC4 +9X:%`biV#k3VPՀ 0Ij5Aꃭ2l.-˟^07mw+w׽ӱmP n\=j +]b{K +2@V08>Xڋ !\$&lDN+Ļ"E1>_PR* Sl`YA)ObT:tDtJ;Mvղ`Ud 1'kUSI>uFm|sME +3 d^Wi0Ԙх&跘EfSVşu=3AbߜhL89so8<, 7ӡ c1`1^$ JgT 8(2J˟"{"qvߦ6F.*E tmENڭG;oB8#,NPlq.&nWvJ):sD XlIH sK@kG#:aRB'F#T?>= ~|sܙsw|dͦ wFς՗nǿpҡ_{:pk N:OI>Nק5 B$Y%a)RR(hJj9V)`QY\QwHE̠b1C=uxzY9ۋP_SBe6{q?̨L #Xʜ:tQi 6Tqq}{y< tA'LФj@sp#Q60ڀtmהA `w+y[3"s>WKwM^g>6_p]_u3 i$Ӽ7!Py+͛fM!SgfLOn P_ CƩy _U^>͸ȷ() ^)( @f$s^M`a1RkrUٞ( +vKv5 rZNZ[F-L%bЖ +_x;?C#^ׁg*v]ֱdFEJ@Bk&RYWaXв4rŚ^t=,;ǫw-9]k IS?VURfBoe'ޥǟ:ű̯CXq(z0&Iuղp-zYYreL_EKZXQgKFAax;!PпE~ 2s`W H QIP~c!{?zV.7%&o]{3u/~ޝi?cpxL&քaI%\fO$ i<2I&jr:P~ ~ uhit o0Z:'èD/^[dŎ(RȄjWʃ+W-`O3IZ#֪uuBti ݀G:3:IA}yR7~vẙh[s{`6C̄ +|ԣspa ³j{OǴճVX, +M`R8(ϩ-[Oo`^h)erv^Wϟ'j-jK)) +endstream +endobj +55 0 obj +<< +/Type /FontDescriptor +/Ascent 891 +/CapHeight 0 +/Descent -216 +/Flags 70 +/FontBBox [-498 -307 1120 1023] +/FontName /KAEJMG+TimesNewRoman,Italic +/ItalicAngle -15 +/StemV 0 +/FontFile2 56 0 R +>> +endobj +56 0 obj +<< +/Filter /FlateDecode +/Length 6974 +/Length1 15184 +>> +stream +H\V tMgϹ7Mln$#TTnHJ"Dy!FhXz NKE0JURR023*%$]9{hPH7odش U*lXi8.k~];$܂ڔ:+ 0crg.ah]^kڧ%>NgP,)N9(xg{\ 9;#%M+pzUj#a*.}%^8{nQ`.\:@73o}M 8Tnu #7S٪Ht7l\ے}81%/$ JTLh ?eN|ͅTwP=J#0W̅f'ē7†;]/ E$UT넰K}#ROJ UO)<*}N܃~oڦchnjcfHfe::պ(nRvvR!D\p %;spYWXxm^Sb.Xw1X2!YTPHd%Z2e356r +zbZ+$B.[SΦr +< +Ij̙8.l_$g9G`9%`1 !iZ!qqqcc 28ꅁ"'"<,w!Awڥs':<ޯo6>xY-iwdGbbD˳% _-d46n{fqbq?[ϒ0,"ܞ఻8Z.NG}UOj׵mE NyN2 V%d:s>lpT{#(&[,*lKfxP.gق\) ήnrLu1.nܖxՍ}zK4(W׭Z]뇩aj:}o%YDD"ѺKU CB16F[ M5jjR@Ӭ艋VOmVS9hOb-j=Ɣ0{mczNo̽sܙsrwyi/(JxiwrϒK}ta+|+ "JWp _4`zR?W&̀#>/%n/s\s8@f.N?QEIw=v]#2Rù73{䞊(p Yx" HVdI@\6Y?h&Ź]On[{Nq$}Bv;LMpNAǯυq.l=ZQv<1OuUCef}%ԑ'#(YrЖ*`I-=1ɑnq{xfE<;,{ԝ7Y + "K" IsH.9crq)ߢNYK;j۹pHNdH;@ەJCs xU EX\-;]k|]%y鱘V-]\T;jۨWDBG w2 dhv9tW =>V%RL4h-,ǍQ#;6N^Wc!CqQ#6 AU .X:'ȑOYkz6zÁb (ԣm +q@LJ{=<1Aa;v[ g>z;@$F}$[F>*lI..D# q>Y kiO[F7m'b8k-@QNF8Cg&ψ,2mEuw_Xo:39NoU,}A$Oxok(1Ub,w[P` W+loðaȋjr0n` pfU !މq*oGK1.\[8sm0vzׯ#rHs;҈~va'ؾ!{#ôGJzQHEb =e"AVM5T.}kr]7LU搬&꧹CaWү=;)ec VL1|q, gȍ\SYY)&BzOQD1&$?RcY!;gÎrj4zX !٨ut g\/n6TzأP騤Mj?Xg9}㓗\z\xԒ(Unu-:x{3RA]E% 3A )M ~C/CJ4i0R4GVR7s'"!z+4`aT7:J;||qGK Kr F Fa?lHکM<_]7=;P/ ^-8)O]=~'?SvESnZ@M☼$ zg. ,MOz:*~,r؄Fkt Ԩ)(U{+,G@/Ww\'Qoq;WOGۿen0ƘBӈ0m3)漮r'qy<7=hWc-xxn(`0y+Tb|x}~hg}G3oේ +n8seZk 8kyb}F`0\_;K֣{PfǚhdQE}y(OHw{#b\&_&tڦ/ H<17 >VRa +dEҜ׳]+GS\Q[DSt@]u}di:t6iː ;FҦU5F4R=VYt{Y E)՚--[))͊0R$d8I17O%\!iaUMBHei@O`"k8&_[蒒rnJ u A +y͚c|<`OҢ r:ڥy)Z4T!%˯nx8B6A0uڠi~Uo +5 +Iz!VO=dqnʽ $IE<;|rLkq3Q LWSo,FWڈd~ + R#$͕Zj@Ia r#"P;Fa[ZG,hX>TX1J(G9 a?+߇?LlZV+{`NjލjJb4 A^99E%lԦEni ?5($ _i_ TkJZaF|KeI&`p?ze`3Sb",i4p4!T;Fp?ufܤċKMukdm_ ko>뼰8YNGfϑ@FC YlW~F,\SZ$II 1S*Mgp`XQ R8,qp$3q.n6i1l͂}S#QK>@;z@;6]q}=־4Јck]qD%ıZr ꎺ֖jWN4w🛻v<[05T'^ߎ!ΎA +;ԹqWG> + РfiI4$giP30g( ʌRc㤄}Y87cssdӕ3Jm-Pµ2T{Ys?gg~Nm) '羵Jηߠ`t@;FAg+v B%Szkeleks. kj`39%0 q}/Nn@#ܝC0Q @퍛m=TӬՑv:F>c(nAPbi@pOQQpӼ4KÖ3VVEudʥSrhȕ0̲ ޖ"]Lsbdyy*$mΝ7ޅoօM;ZQλ 5%5% +(x>~aC 0 -㏣ +7 e]^^]h@V=$A u\MUM(LՌ2Vɜꩰ9U}r(i3slU\FI(K#9}-ۘSl 4`ZZYL7#+/;6CC&C.C*C1,gbt<Jdx*C:C)PD ) l}4V` 0b`i53 @P"$͐$n >(r9a\ }^|^,c/}ֿ=8 \Pz  +endstream +endobj +57 0 obj +<< +/Type /FontDescriptor +/Ascent 1005 +/CapHeight 0 +/Descent -219 +/Flags 4 +/FontBBox [0 -220 1113 1005] +/FontName /KAEKAG+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 58 0 R +>> +endobj +58 0 obj +<< +/Filter /FlateDecode +/Length 4766 +/Length1 7412 +>> +stream +HV{t{gv< xk\B${[S5F>*/a )'1,V Hd0a(ct٘c]I~e! P]؋6@,혎+ó8)f #8,bIO ؉UU=NV(f S2?,z3!r &S5PW +'q_0J# gTcK&G 6-fY{6vf_ |"y _oouo2K8jc,Ίw{ +-~(4}SJ +ʐUt+:, דlBߪo'E=~I(NՇE49~ԻTn{x,۸p pc7YO}M%(sZX#P[IvAU¹5oM|/?: ]$bTQ(b/ů>_vĥ,HZ%mKcRPUaih '2(-Z\"x3IYiqjSU4VjE.g~NK՘çVhPh֔ 0ɡCa%F9جPIT+ \Q)7_oY|B_m8c(h]}vv < +XXP4F +UuW: g PՁ:z񸸼SU9@KkU7?e%)5i-ƶ }^] +TaIog:&BS| +eR R/hyit"KOe MNJ.h;x{$D]1'FG%'#bvЙR!ɴ5|)tzugonC1ZcWPycSGs M#MGI>lfIYm;46jaqKq<=-,u3zu=6"\kl0MJ)4ԕf MeH”}uSixnߺeҋJXJe@X_Yƒil~n j.ѿR.WJb)d0t;HH=0P! t$l ,f1 +A0D>H]M]W>c;/lK>ILG^(&5YCd)X eЎ-*jG)S7p"ѪB MVDVQy޹/[y~w} +>Vc^_- yHN6'o^%{1<^,,ƹaѶX(4 +6\7&+&0qOs,wq觑=lad.%\/:KØyFB"&bJ}NDG{+^.& pnjc@[ƩI.U5q#+asfh!{#M/x2ACvLk`ƹdf7ZL}R/Vv6hm9kip˕e0谳\Uigv}ڮYOQ~rV^A)Gي>RW޽le"Ir,y@ iͺ!B8ړ$ˆ]{ 9X( 'uA$1IO$a`h0/U5=Yk_x"[ዼ0"IlGhƵQ3q8ڞ8&X'댒SjXiFYxuFGΒ!Tk#ӱ)OwSB4 5=̍!knkSfO):9w+&I'[r~f0c?Q# i!G#TT/vGC6Ojyw;v@Nb~0ƅ̄a&#˙;Ddag?p441HƲfW?ʶ ᗱJ`oe!]z=nBUڀ]pOKwgӪ\ղֺy?bkwo6H[k(!o#9I9ctq7MS)kvTXkOUi _!{}"R%vǖZ|}1Ǵ/E_8U= a1 0 Oz4cGXVȄA: Dx (VLf.y*ߞx ́3'?]K7Nϵ7Ї*|yB;E)IFێL1$&0_Ĉx]xcTHݜzSɭV[/1e狸mYUZ! ' +z]qTUtyaBD`˳9qrwQεiSױ6wjjkZ4˗Gcû^ywc $%' dZnF~_1|HH_^HÒS`cJ_c\$꥚9܌:^&D>z R/f* ~GYIi[$3R< }铟ڝJf>sKruEJ#pL.ܑi2ޏ`X/@ +3Eq_1(b`pX.6{2fd!sw;pC=Q*p7y_?a~ZBfJ^̛ffV9oKḙ̗Si1k9tGO/R\ܖR $3Edf~HNB}f:nE-¥4PՐi)dL*AN#/#Ng۾ Z5 >4W:(9qHvL4).3u}қ|˚߇QH5#7-_4h {%=q흊s+*l _v+V.'BP, @RA.?(}PA>|MF( h+0[`@@@^Z*hXc5fyl6 K +d 'PDAfbcpP6 eގގI99 @\;6C0C%C.CC>CCC*C:C)PG92`_ +-0v,9Ҙx1 =08|Pꨝf: ael!Vc5s8spܰ$0ލ +endstream +endobj +59 0 obj +<< +/Type /FontDescriptor +/Ascent 905 +/CapHeight 718 +/Descent -211 +/Flags 68 +/FontBBox [-560 -376 1157 1031] +/FontName /KAEKPC+Arial-BoldItalicMT +/ItalicAngle -15 +/StemV 143.849 +/XHeight 515 +/FontFile2 60 0 R +>> +endobj +60 0 obj +<< +/Filter /FlateDecode +/Length 12502 +/Length1 23184 +>> +stream +HV TSWY!lMDBx qLBHu| F@TVEiu\LPUtluDRwй393g{  LUj)MW D3?/B<Ɇ; |0rMEL]V<-p[KܺFd0x.9fl B1~dw#P B"ф3^XĄvFLZ cs:HI7FZtγkLF; Nߋ[UN`61`HA\~ T.?`3c vq+ `$p+ }=vU)+X41v]MlA+)V7Xp/^uxV + U^粲|`=h-vsL'bktO+OPm7Ib,_<`iPK6Şb"ᠤј_;<=IT-(W(T:R GB He r'EI"/P38UŽYQNImLq"`'wW`WymGaѨ]ގ1oP_ܭY2?,/9m wCԱ{#~ւ3A3DnnNu+!h~ʖ)˦5o=Ë8BERIx8o*TzfS֒NĂM/'$3Yilk*޻_~tOǔqvE+9M3y Nc*_1?fYkڋlY+73&%. -^0sĝQG+>[y^q3QanukrUM-"*;a<7 >g|hSmBtIoo6o[TRsoXÕo{RAYu|miȹǤ'c߭cIS91emA}S)ok. R'ZO-7B6la {[f㹔$zw3_(hG+~Spc0%=0|a[+ bme , ?<"Վ,39B<s6b2Lߒ:{[3QAWg( +'p͔#l'zFntsܜs}y]fbЯ>l6i*h(f]95/q1{:f3*i$l {&//,G9@F*|6C17;9>mf#Qfr1ֹY*ܬfBB,yN0t$5."pv!=Z(H$岘(k ,4N#LbH 8g~~t&h4QSp4BG0IZA*!EŊ4 \TNO *UdS'r +"RӨԷ6+iJ ڄWi`â:9sEKQH5WAy/b7(KPUԨQCQRQᣊFM|`@⫱J$Ԩܞ]E(m락ݙ93;g~xy}nn*Gxv :>E[-fUJ{"#xyӪOTnT_>+E_%at T>jn<<=Eo*j_ PzocVLrJ U*}B;LIyn82Md_.F$RX4qZZED82<#4H?"ȝ!&F4Ibhp$!bHXXr$,~ʛ$ZJBIwj4Q1H"_)2E +`'ӣ"AM-d$E;IR +JVpݍ:b &/sv Ga+Yz +E;{gH lNdӘ3EbGleY+]ql(f{MٰSc-[< o>t6] +'\35[qg,o|U[:sʞe9L;s(Lޕb$R]?8?M2_(Lˌ3ԏs}c ;=yG#USU)$$YKc"Kt{PB@Ă3@CpIZ$ARtk-RliwXRBrDRZ|Ą>Pqwk;'0 [5Y/o𧱫J~nTP#KvzN:]401o{WDW=+]_g#Ïm2L,KicŗC]^(v)fyv>3C>$sUZ}-ebvIAQ evv},+YM5aV(~{YS]}\Π8?qnݚR/~j[:qȫL\gdx^FnGnY:xQ~0^w9yG@6 ;M ; +]2/2Տ̝ +Xm7}!3Ӈ!Esv0.Շϕ h-.NBlfO37'n?4r_{tK{6s8-je]_\mRk}̥ .S=Fl+)䮰*|a" G wHO`r1֏㥉HN'ʧaهE+ [ XH-oE+V`}kh 0ZE4XX0L :hɀ208QC#G=A a7xTmȤ4o"4a&ȱ,i kЈ}-]8{J\4gca } |+/-NsK_:lAM.հVa!,a:KHP*/s1]iMkBDȁ\8#dfp$tȄ PNq0`fYkMRIM´NYh'(CT 060di%'J UCl<(*iŹq˹#|;J(jJf̆ȍ䲸B{F ג]BA=ID +*ᩇZ+.Us|F2k6ig;~L9?.[}sF~0?+fxyH{,eHۤQj~0{: ba鵆,Y +'\p&N9@܌[pYel03a>̗ElvqsSJގwU<~ g NTX8(BHvPj^}}++떤/ K +)FzF7v/&&SԐUp nB3t19 'nybL \܅XX%MWa;v0 e#(6-dl l|vxR5= 9knJe*fp7>|2,^ğO =Ca0Z +Sye2YlllRMZ`}ofvƟl ,qc,ػ|6ݵdmldC +TF!&"a)B |$ +PJՆTRpDOϛxQ+>wޝbV6;k4f{vQL`Y,;0/DGuZGiIE~c{H YR %1*~Ih&hۅց]O:' rCY`>BM +"[S$6R.7tEgEK|v3_&3䶃)uQ1}%K7q+/čdg4-Xe#N17*{WKkl2=A:\J4' =dtcvH~9{X+l*%Mb|=gb>etzL_1yeUF4Ǩh7 Y†{X.'yG :*|?>.근$nMaOK+Q8DUn z7>2αܗӨK_+Zڅzqe3X#2%܀>dx5P/O^Q5nKqFU]@|b6:EH]i #w'huL~>PY\s]sfϚY:dzS&Ozhba3 9gTNvVfƘѣFSSF$&جEo *pku9O[PFt4tu]17#]rHWh+:Y4@uk~BSX}zWS~S_lrHF ՝Z̯u+H,[ 7q m]/(c3ܥlJ*zV!\Х\wc^UuW8КtNsrjnph[p>NM~gRեFcVof5rog5G +3T :U|7>\2ޔ԰DmfZeM4Lx- tu +O)_-%XQa1қq mzB?`/b55pZp%*%]w:| k9>i:m]@ʋi"EMh[JM9U/,#²%bNk $붼'>fTgc%d\UV{Uwmem\+d/ p]Ej`\MWtz4wn|G{ i֘  ̔f~E:;蟂Ӱֻ-nn6 +k75  ÜĪ1*g6_!7"?`/ļ}h~@OϹqSg.5j6]X >ţ",7 +boC};N)tU (Ws}r g؈M@^Elf:h#,rn5v$7NH-?c35 C.R'7 Lǚ&q]ȵ-N6_ܠ݅sEc$ˀq x"DŹA g8X[gcZ۱9`?!X"0ynjm\!gKS +imZLΆbX8췼OG? { +?#k n ^GմwsSpjHPVD{'/Ő>)H/ +Eȋ?Q9|SHup1"#3_8wԪkU&M[[pK1w05Va܃|b3A>N2Eͦ9|&@+=?a ]NX5" ۜmjg]Nv `REyD_ngݗ2vKAVdM.Ab/~bxǹ\_K0|;?\ۆT [<D}6@M(? +Ț?yj|ϫgp^"{䞊_GQDuNԀrh>ϧu*}qD$; xU p*DABk3$N3%NXlj^љ(&S xגMghDRѦN&JS3m&V}i6Qn>ww?o߾wY|qe#o!=sk6땴Y=E]i&s_ȩmvOKs)'ž< ^5" )(z>rURWwȿAt_?UZ'}D\P{DE$rшg-D]blUzfb>6_Ogn2 x߽}݌8q>Ӯ#m\}~X̵ !"ވf>!sb^akKԇU aw0D{||)Gȍ5MK[fOsuru[ =X݄:{D> ޯ}®1'n71VzFO& G?nS}r<Ӓ3?J,@;rɷ>ĸ:paa pAݨasho63|v|;9Ws*twva9&3GԥҒ@\]jW)VS'iiޙ%:ci$RRpPe ~E]cs_aä`XUUIנZUGUX/hdӔ<' O{% Ogsztc]( U hځ 1*~W +ԅ1Oa ؖ㠖v< + D1XV?\RbB!,i2u + +XT(cz}”Mia*c|ĩ3܁c +*%*ۭw=#X(u%{W,  ٠X^h-}>[#V6|ѽBRr{,n#IJCogO鵌f\c3| _˾-ư7@qNY oq$c:|m_/p +aF 0{ޏ>n4w|[v~3VYe,2p\Vsu +j,^uZF+f `2*r.-2^2r}5ƜLrZIJH?J=2_=5=G#z;՝v]nͭɝ/%4W +'KMS^@I +s+TOљjX 7n/5-}lZ +)7Φ<:b0W2ʏVfESZY>pkkU/Ӊmnf,FNYp/sR ܸeHL7h6offGZ=٭^[M[L%z@2Ŕ̚ܮŪ[[x-~ ~~~J3 d?#Ty<ӑK|X+/Ozdm܋^1i¥.l6b"..9KۿX&+|]l+Z#[,Ʋ*P n@f2ɀhZRLHB4ej$13&SBBghlʨLm&ٕd>j=Wݕ|| Ygp.;t7;!=ԲauwΥksDٴDF{~I$sV4 "\hO8 i>3f ؍+,\xGx]0YYb,!捥BtsKgi[RЭ}/=;6kղ9w:^~{{zҌG/inh|kEeoD_]Ǚ<4w5ws/aJzX`ΐR7CfH {zn9ߋY UCI9C P`t<$:XE[ڬC]âXP& T$ɷ)zMq[-Q TNrr+NpLPTM-krL _ ?jX<<Ԯb^SV|#Cū +*i#m,CGtE~ ׅ=b?9)[aq:7FN7ƟNY.M?+IG<: 7}CÂ.PX `Qly`W<\N(ΘS{xm&e賬h6p =4(T+tJwuw)܅ q4%djɾjajbK7ҍ&k9zC5 \=rZ~ ]im{7ɜR P T4$A%wf'IZӀ@"}fj/tHֹzd8̧H)߲?y߮Js $2O-Bhsss%4U!!Z!7]oGoǬR^ho?{\]'<ݬ׸ +E6[e(a_||||O+m\(B'#1m;eJGΖM<9 9$B TaH.I|peJcx49xYY|,a^h C['ZG0nGe|RgeAP)t,U 1'sw^Ekκtu.}EϭtWwtW*kL&D:R nw&D4& ҥ%v`yhFڒbE;ZEb)WQ ހ,kjI]m<3;wR fn|w{Z5E/Zғ(_vtO /k?"Օ,^9.ZBp[ ? ,>=;[Cw(09M)gONhc1|\trv)_p:q`UTu3lb- +]QmUTUy =$ߪO :Hx 1-UNSG&61HZ }ФP}h-&E^ 4tdhLgfVi11b2w;sܙ;sAn-T2$"d?}Ƭ#}玞X|p 8`?{[ޡb_FH'-H_imj +yIx_8|H8-y@}VoRY %5X2Z,o -4v,"PP {#|{ɻX?%:/фw[>sׇ Q}2).s1rɶ] +) +jgy |pY^)cyP3. a JQ Q3sX\A!.-EviZ nGk^ɯ{'͸.=kZS gI ~P딼LOWœX%x(JyKN"\ڜILͥ2+~#T5L]ȼt>/.bSʗ+J/)fLIbj, )kҏJ6մFj"MҾtA̖JZ3`hdAMuM#quoDp|*G)uShr)2+G[PSe3|'83 "+{00iNwg iAY\%a;:]=ƗǕ_cpy;nFzaܤ:42~)wSqJ("E|#=mmG_߈k'ܰ{AݎOƹ$U`Gtp`@GwHH+ir8p [K#bָm Y4{޵~iԚ!ؑhIN&zVV|_u|R2 lټGG/ |Wt| +ٔTTG*-=-w +T U< BZo +P%}+E=VO;B=Zk9Ž.S TP! Eg D:nN$E%­_~#UephaqE& +endstream +endobj +61 0 obj +<< +/Type /FontDescriptor +/Ascent 891 +/CapHeight 0 +/Descent -216 +/Flags 6 +/FontBBox [-568 -307 2028 1007] +/FontName /KAELHA+TimesNewRoman +/ItalicAngle 0 +/StemV 0 +/FontFile2 62 0 R +>> +endobj +62 0 obj +<< +/Filter /FlateDecode +/Length 8183 +/Length1 19660 +>> +stream +H\U TUWQ  +(>8M"PAF!kѺ(&XhڠKcFj1]д+u羳 PsPB>[}oTxǏ"@eV +8 +;N-Ojm)E3| +H\Bc?+C!;nPmv?Jv'qJQ^0Ha;;\"wM ۖ>Hoq13^ o s-w3{<܁qn%$Q=^A6V'Nbb7ұQ uW1q15ixCSt6"^AHv"ڙ*NbyDb s --Nd +b0Ϫ3(YrCl-6q^h R(-"溹?Y1XDƻP4{\/GHuiezu-#>NE/Rlf6.`i/8-K䖅ɺcI$l5r8eNIJev@w41wA #q1K;0%VUb'=ziƼ'҆RP&ZG' pL4qW)OUmz3*FrOAw)wi*:I?(\V^,CEIM +aPrbWp[qǤDK='8/[/XiVsjTg4MT@@M$|j*W}ntIzޮs_5*Y'%n{B{}ܑqsupu{0c5Xe/U%WdǛ-:C=eT"uF*MXݱ`uOb5Q)GuĚgߥ_DzS*Q=O3DQiT/Tk8+5Vbl?X{:M-6[}'UqBz[-몳TPqK$dR|-{!UKw˯HG^c'tAȭ(Ѫd*:N"T3)Zڱv0'`jEMPMJBz8pZKv)l@k8Rx6nðI\vj-f92ߗW!A!6ESI-O_P!OV%b%ʔG-%F5cc}%\xw7 ]o86[qd2OL p\$nv mb۴i +U^ iڸQխBpPZNmi%3\<̌n#bW/}7/=SLwuE8Hwh/Mwj55v3.w;ic3(f0-۷SBIB<);j!)3w;_GyyқGD%m{z5.H o֫6 mCvOmXS`{70ӮD7 6 +F!y@6" 6<iM+! +ZU6%-mJկ۷ZhUgܹsy^k2. m;"Qh#ka:s7?xjcҵˆLq0tqahˆbpaCkbAdnU -5>#ƚ&0iH~~!G|FK,7uchttR7iߛktN^XɒΥ_(t0}+}$Ϫdn+ev<j^oހϸA8lHA "$E4蝲YVf2Aܵ8Qظ@֫*7f`mGxi*fOc̮hE +WM5AG3nkzMjx"#gzS9c"kLeP ́ƶ/b$mhQsSdIpEP- wHW11QZ To{jfIJx.-Kw= lQ|Qӛ4`}ƣ=,'ld}ވ b0FEqYF4 cYyq1cm$ftGXT-뇛5\zH)SQG釨^!}k}iԛ!w!h_ |̀XĀ%s@#yb'BuRjȏr=ױl1JQ.=}O[X~E_+ƭ I9cl3d8{v,Bs(l\(1jZr.\1 ;}n6dŜ%R{k-476DپtImUb<-ɽUZߺr@KM>BZ'MrO +Q`ϹL L([hG_8s\~r|'M.Q>a)?78ZO1G-Nb_>sWZ2tIKc :9Wr`$I&s^5cS`&!>I9ocvP}^xoM}e9 <7s9Hm+Wy̩4p˵e 2d s=T͜}HiCc‘=2F E7a;EJ tK\ңLZ.N(?9'c}X%=H8K3n{HYb .Z ).Wuէ>o)L(%#]߶/PϻI,m^^wes$ڏ=@LV \ mjdѾ sWj4r^G_C8G r>"yt̟kn%8Ľ7 y--/ %#<4N wbZ/Yea&T*tQƐ@rۯk'㬜{^E4GsH5(4 n@^\2T*K 1O ;0ܼԛ$gs-O7ZT Qպ"y8M3D==r6zG@| ^.sM7|媤=:%4KPx<^B-˒S.h}Uo1cda{o!Ή(AE y0u;ix%VhKůKRB' ߁=0E)yPLEx-:EZ;9@؊1@EůK }p6@>QcVoR^F9D@ЖÍNhrU.{ K4"ƪZ ؂r9 ]=@/> yTǧC}|D>`7kG^npP[dd׶P5֫1ezo6Fj)3ufioӚ{s/(h~5xBp͡y*ll +P;Tk]ٞ:?\!9;=yGMÃ^B2wE~ +Swֵmx6XF]_JO1ԩ5_H[r|6dcHh;#ͯW)8y>/=K3 !vdbm|\s;&nb_WmlS>ؤ!'7&uí K5iadSR* +Jj]6:X% ($65rs )lD֪U52iҦ AKۍ[ {αÇV<{{Ͻ_'>.A#<<%Qa=7lx.79n~ЃP#JNNA9n޼[Uj]ipu W+iokO h8= kıO3(fFqnXݰa%`W#'ǕLX3 *5Lb5i_i?!c}LKGYD{hw5peee/^ﳵꭾ>[^./T곕%’>׹>[WPŪKUxUkUg+OKR}BZ GnHI\q9PV CAXa$@AqO{O_p֚*v@{j I t|(L7zy߰8dKl + ;m`cna[A|7s97G9Oأ^p |\!!FfvRe| 8"9p3a:5d{M+YL"1~#;O$O8O0O{%Oە='-XS%ӣ+%/1\\{k[VƵFOQT'KL?:㎸^=^_o bd'x3uGyU%)FŌY|5UIZ+ +b*/C%ʗR&vuocoo?n_k_i_nsَ,Ǒp8T͡8#;95nXOIdۣB +;,6S3+FbͲX>8f:jR;L3IJ6b +Ӂ3k]K9BTWGch35yq73dP֣sV@ i._|g~y4|# Tn]ܰe(mBjGsʮN#Jp&oK%H#4!êdi~42 +zV leжT@!S@Y,°Rw'M[&s&2"4!!e> ʤ[SG|:މ)L`cb?OKg[-zA {okz^ɖ445?-żḒz;-jD_MTq{vk鶖^;\F.캭1a]#1IL-L4&#H 5YLA_AbFC"qaak QDo~{o~%Z${u\F +)̭ayL'Vֱㄦ/D(ZX3mLБr4ueXok`BJ9\AxEr9"$}lŔ~t4r>pނ]YU/ډw 8Iԟ!# H~rkS: +?fJWDAtuEX{  +,6{g,;ʑSj&gSPm9N'X-S%@ DրWjtU]6B T 낮Í=}Cuṅ8~a劽#2|Q|ϵV𨪮@I9r^R;"#dxNr< R ;a ` v`X+pң\%oI^%ě%M $DMQ䗋HEQr:ܼ;,QRPRд*xE1kCӨ!ZR5АТzW,)*@H_qy0c/k9߫&e~~od7\ t'>n=ǩ zՁ Ϛ[&&&LLLLLLLLLLLL<@ʉ+pA]ƔFxCmEK 7o\?ms [Oq^etѧ*<{3xui\Yߣlk_Nc8$U`A?mA; `{lA65twq11G` IPwK6+.xX떅^΍-/S +h3Y`|!QX-ͽvhYT|B~av"zzUQ ~щh+ +endstream +endobj +63 0 obj +<< +/Type /FontDescriptor +/Ascent 905 +/CapHeight 0 +/Descent -211 +/Flags 4 +/FontBBox [-628 -376 2034 1048] +/FontName /KAELOO+Arial,Bold +/ItalicAngle 0 +/StemV 133 +/FontFile2 64 0 R +>> +endobj +64 0 obj +<< +/Filter /FlateDecode +/Length 7783 +/Length1 19420 +>> +stream +H|U tW97 y2r%5ФAɽ!EDxtDDJ HKPSAGRХSj5YJJF牢Ykz:}UH땜{fl90b,f*h [Yỳ5eJųe6s JԷUUS +XG>Qp"ﻕUξq _BL//tA<佽5"̯pW4 5\ǿ(R֐AtE1b+zUf˥r4uT~-zyzfN[L<Ί؇, |sai<=Zfoi9mDJf(쬵\<~r~gR|/nJMȾ9FrL~U꩒h5^dmm6kTKںHk֯tU!flY}$srR ghE46s7Z"ݔz*ƉUt6l,i4ԏpBtyfPԆ*"<ԟ%j^+8[5;WIFy}!]oYc8wc' w~j.߸JNzSVo~f"WW6rݕ`WΒ{w$sU`<2wa2srޡCpEqy;)b)E-6i^%+9q6he"?M8Л0|L +[2TVq=7pm\>1{qEߏ`?Χ|R]gRd}i,iwFt߲M vDzniȡ:dpʆ]aw`S wNж7$6SDlH E;h4xr6dԁ{LLvD%*2"<,skjє-өqNCنOm.>p=t4t>|Н>6Q4?i8pRaӍvƏg5@7Z|(G1tGX]7ȩ;Y%n3l `2)#VQGGPǀ: eD#f"0dUdw#  (M6`K7XScX2 O^F,&U>ڍйe2knGXݺ58&h﷠e[tgy:k Z*u%^WlsxOSu-VD Ήٌo6D +\slOIL nϱum'&(Ed0Bئ?ܗT?+Y` +'ƁP'6a( +$5\9sDiI-":W+ l]q ۮkgN:i:6N +gyQπY6D1K\YSfq:j)d_2A/ NYb)AITjwĉ,#k1iBU^ G 8^ঐ 6YqU%"FZyP䜰_9 NNze2|=FFxF>>'{ 9̗}_<(fό١Ȝ2%ICr"r!)TS Q/ *H|yAo<yܸq72<1B?0W٣ f 4US@ nP^@ /ٗ , U>orey?*YАJSR0oc9&5ƜRo@7W?GUY6RޠUj-}wPv*b99@%(Zح, +ʗ]> +6 @6hAnG3Tmt7` ئvgQh#]Hߣf[_eH;CoJMh&i'-a|?\2E[0amxeƻ,; &1o#:'_Ocx^@x+flnQ.~<[l C 4xl8jGLp$jKX#} $O%)4+C 2RyvChT7úl?x@`| 9t3ss֕Vі$/1Йhv$H]`3 T}\ǡ|+4d}6B x^ḥf<ʲX_Y[k +MdKyM SA m9]*^J e[[F_?Q;n#-ߩvKaH:u"|u#[xOi29@IZ<+QB^|^]54?P4W'?qnBǥ5c4)Y9}~>}1:9mY3|j^͟i{bnY8AWbT' ǎ>]:ҧ֥绸[O1fg|>g$s|96vpUz 2QTB%ѳf1TN.9c~lü'D԰u~rRߋ=rMj/ [6{y~l`~\pml m/M =)Q8.SDuz視?@c%Ԩn~&4^#!/Fkڍ(c&?JY#_xODg16awA7-oV;>E}#HOo~141Uz0ޭԈ$gtk$ X:P6Z4eqhcH_F }s ݔ8u9iA" WirOA\T~hb"< +lQO QYy: B }|j&0bcu1?3/±FizvQOeɧS6ʓz@͋4O؃zU`σnGha.`_EU uXԿҠI9ot^>sx2 :*dۨP||&xکИ3қ4Y;Gg=`nc-$1~QBCgIGC词JϽ:!QZ';wPqR,LEwK{#i*KBcՌ +b?DxW[d |H f;bP &ƯeWuYGqA\Lnշ}^ |hϒW{^QO`o})gω 1ߠf+D}Lj94E +~qIxUsv{)V}׋Nt~5mQ>zH[;Bd9qӟ{AGߵ7Y1V7'iP~$8z~K zUiDcͰr{{?:lR2"q<]ހTW&IyyyyEAAAWOBȁȁȁ)""""9" ҊHHHH+" " " a*a0A0A LEDADADADUDDDTPa0a0@* «ڟIHuuuuEAAAQQQgZH H HM!5 5 5 5ԀԀԚ>LA $***تbxMBA l"l6 VDDDDAE$vf\pe3O4|+A_ 'qHP9S>A +o^B2tU.7h78Q}Q_蛖ڝEsӲd<9G yK(@APĸx 4|a<ӻaz'L0Z3ԡt3Lf_Lo" ^ 3"]P @ka3fP rՅ[\fyRizPVQ؇"t[- ɯA&v|Y{h~a|v]A؋"}-}pDǚ~-/ }~ +tG3<Ф6F ~G2"!I"jz Z zP57/}x|n2}t2χbm7R`h)G.\yϪ!d s+Q>_S1낟r$K3-F]&PVS<ʿMU@xdU5F>^[̰ЇC_ߣ{NWjs.r:uv:ҜY:TdB cȳުX0M3$uڰu_moS#ERcTY8fS>)R:U])S2) yrq +ײYz=Kt m9x4",Z:ѓcѓM'3<# +kTy>rL^wYNsb$$ 101d ϓa5rA햆C*t{TAen$22 N d1T)A32E3~CMOu9""TG}"fd~5Fex#Lg/2p?- LNGrq(g_}=s0S`W'I{ʟ4ki^dekxR #Sl)q8cX~Lgeg9VzL%r,KeɱfB5yә glxmv wg!y+v?rzlڭaɦdg ~Մ6yo7D$Vٔqm?`ҀkQQlhE7Q(zRZ(x!*V/JLQ(zEA +P,R=huzPMvfOfLڤ|@n.-PH-dq{2n\{LLVu~~}AI/$LFgCFu;xځ  C ic01v]NNZpyEO#'5ufqb8bKz؟2/Wøp3Ne:d阷@hz9Vg%B!* B";0x, +s,#֡ׯ&'VWӅXv`˩e +2ә1i8;(-#sFc% \N P&K +I($G<#mHl=38ժ^0fb +q po#0| [ʨ2(nFy]{ygYSҳ"U8C[MbRE1% Jg O3= d}ttAs5*BpScCUeP"ۮۄZųΜL Mh uc1uvoҝ+0/P j1{B?%"5G Sܜ5¢kcG L [ITzS(]6~"s6L[۵Twރ qHVhǏ}8!>B3  s/5+zdV4[d^~.CbS)UfˌEjWpboq\&^G*'_ef֓%7b +endstream +endobj +65 0 obj +<< +/Type /FontDescriptor +/Ascent 905 +/CapHeight 718 +/Descent -211 +/Flags 68 +/FontBBox [-517 -325 1082 1025] +/FontName /KAEMBP+Arial-ItalicMT +/ItalicAngle -15 +/StemV 93.856 +/XHeight 515 +/FontFile2 66 0 R +>> +endobj +66 0 obj +<< +/Filter /FlateDecode +/Length 8962 +/Length1 16576 +>> +stream +HV TSW/fvJ +B8lhc$䅼VT ZZ *˸:xqAUtluZtQ֙s朙3g;~_?\@`jUb7in к%Mx BLYk81F9pSraI6#yl8ܐ k 6@Xb+R ru.$c0E+k:BHwo88L0kGd5 oaq0f8 x.~Iֻ RP&@c }ptSU`wY-`U'\kKU*[3?_p8RgRXֵwh3uCk7\r}s*La*7SSlYkKk]ly+7, ][q;N=F{, >OU&TVM+cNIoimĖ`K?#8OΕiR:M{Wf:|גQ]6%~ ؿQOVa% w<0V1t֊3Sd`^-Јg w_Ep?Z5=_5kOL-W +opYhw8f/٤kr9b4vƬ1-r o#?ړ^>ܘ{'YnCKrmtݓO27;]=~ٜ6k](}˅:b'ޟkA_WmoS .~;/ ?vCsoq;|_vrX8̫+fqJF8e2O*z >n'eOV ap0g.™//;O6ˡ l#y^,nD3K?P6@V**$_4;{_ݬ1)'l1Ǩ45 Slt!lEO֒ 4) EیzŢu3= iR i//i6f"M4a&,4MH%8ڤ@k4iu&ɫtMfX+ AC'(}GjN0TҨER^@ E2oU(p<<#f5̐FFFB(4l T(5rU +<=]Q)0^V$Ux(Oi'Uh K :E50C UsJP)%DZRh&CuFB5~2WyTT{ͰU@YT\F(8EdtX\[A4*5Tp jQE5JU%&bM[;(Bi{N||S˷|?#H顠u7ֳPOHu @W)ˬPeZ`O.ݽF$"Û> y)|˽.w'=U2@?bL'9JJd4] JѹW&1W~M~U}B$S+Fz=~OR i-žL1qI4Zޭ"#"(*w:wJx|r,)6@"dZZعIx,<229]FkuƌQʻf%P;Oo¼?^ugg_.O5(EeA j5?O #>drK^PN +tԉl\I!#d:.[t6\Bَ~}M7-Q\i|e2eV-x[`ԫk{i1)1qK 0H];U\o"1[ZwG"\9ך8^8l\ެZxUo_d9gN?"&w0AJ(r=j/c^ǎ|hB޹/ovt܀3 =IM}媂2P ZЀn{{ZUtz.19J5Wyg"9e>ֱWƷ9Eη_ÏƋ>ak~uؿ(Cs TL~ּ7oNf8!a@ӧן{ޔYgt]XS8.zd=X!h}VSO-Q><^>(+um7pZި3.-{>[_ j;c>grT$x/V̘ڒt9x{o7ɔ7o`-cR6]38oIs]Ɗyr JdbUx׻"qSuRpd,S;=~kWr[-z9kCFgS5YNq!nNWme0zSeة|;9B..{j}/׭,ԼH|ʚ„VĺMٽ*s4*0*4n؉dive OT慨3اMKr" b5DwLpKok'80a0MwY_KxƘ!>VV1K?kB |a ?mwĉ-&=5P `=Y; BKHkH@a9H$@̆Mb6c!Nr?``\+E $ё1PT$9X+_%>:b i&i +*f(̊BS$./C $IzDUs?<\>yk4 () 94+ h6q LjVb<L"0Vb+6th#pD$+!qHF5aaRkX'pD.\!W=g7Mb,:X1U-֊ ӡ*3~K6tʀ G v>J8 Up !<6p2NhTqNh% QG Qy5lıQ*DŽ!Z5Qc1C0uspQ,%iNl| 3S6ٲ1̑91_>g9 +g5D 6f9 "[nB9-ʥq+ ϓLy~ 'kX(l B$f7$VMR)'h +Ji qciXYg O/0 ֲ)(0+` +Xr% +Ƴ8ߏPC}RySQߤ PZ|$~BIc~LX"b8CCvφ&Ro<0ǩ{v,tl.Z vքDK W{p?{YoLl³@$ A1fDm|-g_b6#KXZ(w60=둙3 +OΔɓ&N_>dq룿5jdNvVfƈԔAN HBg̝[F5::B.K 7+xzބ's3ifA3tYeyR#[@Jh FݗYW[,,:*|)%FImJA>BMfe ,c+n9QYF2Jy뫎X|9nw b%5F"c5#\D,ci%C,ۡzk~E'-bD\k `R++}ML`I`K5G6}t4-@c\cm<o%Z{B5Șcԙ!HiѢS%fґ\dWo)ou f!1%mpR MslQ"Gd ,FG$)j ɬ)~ a5$dy?o.C7ݸӿ:֣W99=[5n煣gԂ4C }XÂsv/ѰѶN ZR[:%$ з o0QKq+؈`7+ r[_+j/Lb5$ H1MʑLJ8F Rr &GNPQ0oBs)n9oX,Lӿ=__xi5o buuo!8;iou|E8 +&ZQG,Ui'UQԩV߉lGQr; }OB&@nes$hZVaI'W)iV8:gy)\fD3 @vN=vF]? !Wh(5q(OY'=:m'~Ӱ~os y.n~qJ!:cWY騽?7Ig{BG4d`}h6%ue>2}OJs8e"O-%Bd8mvT4k*9mA?IRX˥3R̿89 .Dh1Ə\Rtks$:N/!tr7EdN0 o9*zcrTnhT}saUo1!x}38|B_X|kgGy 'np! 8&jyG<u^/<ܼ8gR{5)5K>9QCuǹϥB +y +qr%ϋk"!j#j!iMMq"!wR} O+E{d8|oMpofj}!MBS1J7SJ"(@Kd@ +蟫ݶ5&z\sz^jXB.kׂU/MW:h{(KԿѳvܤZք:,t6s!xԏsqΏqJXod8g>|N!ٟvg?{0o@^mS^q(Ƴ)}Xm 8/wP{jNIaPHB97u{O'R'{:>*(bvz䈍P:QYA{] 7͔}nqEW+^k3(@>]SGxwc~-O|F5< r0U)(rTo)7F=>@dߌ"9<Soah#u5GZq!ou޷_[O .֫/4:˝EuJ]Hh}ƿ'v~i mT/*͖o~Fqwv׷{̙ 6|pۘ;BJ ++ Z%PėBAUABNRhABP3JVJ+y}gfޛ`/LJ%X]ƾRvEd ➲W} +b/i5`.O/lл@06l}5cn6JA9g$k+V}$w2Q]ާ=EbqNEդ6 Q𚔏A{ wp'6X2/2R%}wfO鴺N;=?F hR(nYu mG}CZ;3-qvQOp=SqW[1+4W .yǰqghH8^ s®fv·:X?8פ]Cy|h,kc9'Bl}c;T t|hos :ػ9`/ u + bm۽濮o}ݮzS7IGgsI0?Ɯ_{fj4QN6e@6kBʾdw]ȂZ#U'wi̇:39cmaK  邬6@CJjQRIF{B(4;u\Ak{&)RVKJKyTץ2(eJ),HgN!U0]ܜ*XdY9eg*^ y_+2ghL!&Ny^=ruGȎrZ,N6Gne@K7wP+D^`_$' 䗹P>?/E?z9-ni`o)C./Gp'EeP,VW,^h0o1vy]Z+^ewvwwٱM0MDws9q=_O]z"'ꉻL=Q'D@ORn#62 pdXnvTp cR[R?|2C%dQ%Ȣ:>5lY,ukd'JE@S@[1l^Si1ZXpm/1= bϔLpI')xV̛~oz {\w3}ujS + +jٙyIOvvКܷub_͜u)Oǯv==c)9WxOiViQ`OHX~ђ愧i[\ m`<5i{ ,ml 7\ܹ}()BKZ({Zk-|_Ū)vZn?a#Bi. +UH˱aa|{ָ.ņޞ :W>yxŨC9: +endstream +endobj +67 0 obj +<< +/Type /FontDescriptor +/Ascent 916 +/CapHeight 0 +/Descent -219 +/Flags 6 +/FontBBox [-173 -217 1167 912] +/FontName /KAENOG+Georgia +/ItalicAngle 0 +/StemV 0 +/FontFile2 68 0 R +>> +endobj +68 0 obj +<< +/Filter /FlateDecode +/Length 3674 +/Length1 7324 +>> +stream +HW pT $EzKݤQ6B]͋% + +2F 8BQ[muzc4UƒN;-A1>*tPӪܽB&?MM0д`Q w/J˨֝9Ȭ h5m7g۴Ξ݁it0W4iι<ӑnܯ3Tj,: +L*PaW_ߖ7rGݝ^c~KK!aIww{@3zi-3a@=7vLkSc{`m8} l2rk[ >|jc\W=-h_lE#ä8=R 2zV I4Ӂ[ЍS؂Ь1>ߣs;Qїf1Ѕfi +OW8=h\،h@ŸbD8z^ş2 ڟz's7G/^S{K. Ο>UΝzΔakΚ0qcJnj.uË2t SMFBp8Y':vƜ2)4d!㳆'9q;Z/"RG+s hW$QˎrGS)K,'~wۻwxqԎvWUx88W_yQ4qPS-EN~nslҜ9εV9i۬"#5\>¨eZ$1Tr7^!jXڒX&ŷ]US=,9cc33vWY2fZ&NL&p6fsCnPʫ*s1 hOuə]i3eeuxn|2,Lfev;֞n=Զx -K^L]}WhQ%U ؜cv>+{A5TFKGdK\=%}Xm(ѯ54>7`^Z?6%oSm6<"cV}z[%s^b8S.wv +\3a|9t-Ͻ;};Xy?;sbsQUѢ!S̝޳=8.D˰bYpߍ9a_E_!ʽ=jh +P.JEox_Eԅ8 <"=M[2)yIyߡyϡҗ||(wy7gH뵻QcX#i3WMܯ%(̸ozC lrwW[ЀR;@'}c[o~rɃ&}?b$w?vvJ_K OD1 W^݄g* 6*؊jތ֎t?5~Ǿ9z\##FV~2[j_TWtۯئ(~{m m7N(%i%t&‡K4k :+ȇ|#MLĈ hÍ-`Zјƿ4ٹs=y~<л䗠Vb@q~Ns_Ɓ il!1rNџcsBIkG *_R$<Suߖ5 ! й{><T,Z#eH'wO3Q?#L.~;7`|`4m 46lR?W3.}yZ\K7gK䯕gnP.\Jʹ{r'!ٛ~߯9Nv]K-pПgxE/ Z"]Ae%-L^_oWO'سGƔ'KSҹ/x"al[KV;Mf6g[Mt Fvw(sW)a7 ;v:u'OoQp;FJ-OLoMw;-: c#T5jd4cr(iƶwUuŻD8ԣxT#,~Dcđkz  ~}(Ck<.p!ΠQ!AV-Pa;aSvpB<q |!1{؞_3k6 3c1?bL]gD1F#OHL/RT"CqLN(jDN$MLk~M!g:իx(*k-jle +'D="/ɡ,)P^1?X\Y߰nZrt7a%`5rX@ϓpO^xٹ a@B'ƒ }*!n9wa9T)3&~ve̟_sg)> +endobj +5 0 obj +<< +/Type /Font +/Subtype /Type1 +/Encoding 69 0 R +/BaseFont /Symbol +/ToUnicode 70 0 R +>> +endobj +37 0 obj +<< +/Type /Font +/Subtype /Type1 +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 150 +/Widths [250 0 0 0 0 0 778 0 333 333 0 0 250 333 250 0 +500 500 500 500 500 0 500 500 0 500 333 0 0 0 0 0 +0 611 611 667 722 611 611 0 722 333 444 0 556 833 667 0 +611 0 611 500 556 722 0 833 0 0 0 0 0 0 0 0 +0 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 +500 0 389 389 278 500 444 667 444 444 389 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 333 0 0 0 500 ] +/BaseFont /KAEGAE+TimesNewRomanPS-ItalicMT +/FontDescriptor 45 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 228 +/Widths [250 0 0 0 0 833 0 0 333 333 500 564 250 333 250 278 +500 500 500 500 500 500 500 500 500 500 278 278 0 564 0 444 +0 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 +556 722 667 556 611 722 722 944 722 722 611 0 0 0 0 0 +0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 +500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 333 333 444 444 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 444 ] +/BaseFont /KAEGDF+TimesNewRomanPSMT +/FontDescriptor 47 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 333 250 0 +0 500 500 500 500 500 0 0 0 0 0 0 0 0 0 0 +0 722 667 722 722 667 0 0 778 389 0 0 667 944 722 778 +0 0 722 556 0 722 0 0 0 722 0 0 0 0 0 0 +0 500 556 444 556 444 333 500 556 278 0 0 278 833 556 500 +0 0 444 389 333 556 500 722 0 500 ] +/BaseFont /KAEGFG+TimesNewRomanPS-BoldMT +/FontDescriptor 49 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 117 +/Widths [278 0 0 0 0 0 0 0 333 333 0 0 278 333 0 0 +556 556 556 556 556 556 0 0 0 0 0 0 0 0 0 0 +0 722 0 722 722 0 0 0 722 0 0 0 611 833 0 0 +667 0 722 667 0 0 0 0 667 0 0 0 0 0 0 0 +0 556 0 556 0 556 0 611 0 278 0 556 278 889 611 611 +611 0 389 556 333 611 ] +/BaseFont /KAEGKH+Arial-BoldMT +/FontDescriptor 51 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 118 +/Widths [278 0 0 0 0 0 0 0 333 333 0 0 278 0 278 0 +556 556 556 556 556 556 556 556 556 556 0 0 0 0 0 0 +0 667 0 722 0 0 0 0 0 0 0 0 0 0 722 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 556 0 0 0 0 0 556 0 0 0 0 222 833 0 0 +0 0 333 0 0 0 500 ] +/BaseFont /KAEHBG+ArialMT +/FontDescriptor 53 0 R +>> +endobj +22 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 33 +/LastChar 33 +/Widths [525 ] +/BaseFont /KAEJMG+TimesNewRoman,Italic +/FontDescriptor 55 0 R +/ToUnicode 71 0 R +>> +endobj +23 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 33 +/LastChar 45 +/Widths [713 494 494 494 494 494 494 384 384 384 384 384 384 ] +/BaseFont /KAEKAG+Symbol +/FontDescriptor 57 0 R +/ToUnicode 72 0 R +>> +endobj +27 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 78 +/LastChar 116 +/Widths [722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 556 0 0 0 0 0 611 0 0 0 0 0 889 +0 0 0 0 389 0 333 ] +/BaseFont /KAEKPC+Arial-BoldItalicMT +/FontDescriptor 59 0 R +>> +endobj +31 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 33 +/LastChar 34 +/Widths [499 524 ] +/BaseFont /KAELHA+TimesNewRoman +/FontDescriptor 61 0 R +/ToUnicode 73 0 R +>> +endobj +32 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 33 +/LastChar 33 +/Widths [619 ] +/BaseFont /KAELOO+Arial,Bold +/FontDescriptor 63 0 R +/ToUnicode 74 0 R +>> +endobj +33 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 116 +/LastChar 116 +/Widths [278 ] +/BaseFont /KAEMBP+Arial-ItalicMT +/FontDescriptor 65 0 R +>> +endobj +41 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [241 ] +/BaseFont /KAENOG+Georgia +/FontDescriptor 67 0 R +>> +endobj +69 0 obj +<< +/Type /Encoding +/Differences [ 1/rho/alpha/element/lessequal/greaterequal 61/equal/greater 128/bullet + 138/minus +] +>> +endobj +70 0 obj +<< +/Filter /FlateDecode +/Length 270 +>> +stream +HT=o +Wu#wU9U58)RC!C}Wu=6~_c= o~Ri +ኃ8h[n'낼9Oy.3&Źo h > +stream +HTPn0 +|lC!mmU4ibhD&%ul59UcXM8;cA䠍 +K5gK> +stream +HTn0E|,SeyH)%BQ*{c"_u__$;eN8@heF+J !a^MltA^aq9(B\={ +mkXvјlQ8Ua^EA:t +{#$ZkT }-8xEYoa$1w|ޟSsByM̉w>XM>Ł2> +stream +HTMo +;@`-BI%띂!-9hԩ,ׯy0m֚38aXpvKP'AD5I4u8vpPׄ~%qa{vn~v>n'*46oҿ ^ #RiTjD +\Z}~v#9wV R: ZBHe'y?)o +endstream +endobj +74 0 obj +<< +/Filter /FlateDecode +/Length 226 +>> +stream +HTPn0 +|CvBHm-`aFpP֩[{~yUTzc5fRg6*l՚(=(n)XAQ0)wxgHwD_Ƞ,Acxu$G~7ؼ8 +IEyMh=8Gvf(YФJݜ(\_ZHˍۗiW +v`m +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +15 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 17 0 R +/Contents 16 0 R +>> +endobj +19 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 21 0 R +/Contents 20 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +28 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 30 0 R +/Contents 29 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 36 0 R +/Contents 35 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 40 0 R +/Contents 39 0 R +>> +endobj +42 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 44 0 R +/Contents 43 0 R +>> +endobj +13 0 obj +<< +/Type /Pages +/Kids [1 0 R 15 0 R 19 0 R 24 0 R 28 0 R 34 0 R 38 0 R 42 0 R] +/Count 8 +/MediaBox [0 0 612 792] +>> +endobj +75 0 obj +<< +/CreationDate (D:20030329210001-08'00') +/ModDate (D:20030329210001-08'00') +/Producer (Acrobat Distiller 5.0.5 \(Windows\)) +/Author (cyl) +/Creator (PScript5.dll Version 5.2) +/Title (Microsoft Word - NAACL2003.doc) +>> +endobj +76 0 obj +<< +/Type /Metadata +/Subtype /XML +/Length 1064 +>> +stream + +Microsoft Word - NAACL2003.doc + + +endstream +endobj +77 0 obj +<< +/Type /Catalog +/Pages 13 0 R +/Metadata 76 0 R +>> +endobj +xref +0 78 +0000000000 65535 f +0001687019 00000 n +0000000016 00000 n +0000019526 00000 n +0001681272 00000 n +0001681367 00000 n +0001681567 00000 n +0001682091 00000 n +0001682817 00000 n +0001683243 00000 n +0001683637 00000 n +0001496331 00000 n +0000020134 00000 n +0001687688 00000 n +0000019718 00000 n +0001687100 00000 n +0000020302 00000 n +0000031884 00000 n +0000280857 00000 n +0001687184 00000 n +0000032079 00000 n +0000065840 00000 n +0001684005 00000 n +0001684180 00000 n +0001687268 00000 n +0000066049 00000 n +0000131991 00000 n +0001684389 00000 n +0001687352 00000 n +0000132200 00000 n +0000190285 00000 n +0001684633 00000 n +0001684805 00000 n +0001684970 00000 n +0001687436 00000 n +0000190509 00000 n +0000244867 00000 n +0001681469 00000 n +0001687520 00000 n +0000245074 00000 n +0000270989 00000 n +0001685123 00000 n +0001687604 00000 n +0000271162 00000 n +0000280719 00000 n +0001496403 00000 n +0001496633 00000 n +0001525433 00000 n +0001525649 00000 n +0001564718 00000 n +0001564940 00000 n +0001590976 00000 n +0001591190 00000 n +0001610786 00000 n +0001610994 00000 n +0001626374 00000 n +0001626582 00000 n +0001633645 00000 n +0001633834 00000 n +0001638688 00000 n +0001638915 00000 n +0001651507 00000 n +0001651705 00000 n +0001659977 00000 n +0001660174 00000 n +0001668046 00000 n +0001668268 00000 n +0001677319 00000 n +0001677510 00000 n +0001685267 00000 n +0001685404 00000 n +0001685747 00000 n +0001686046 00000 n +0001686412 00000 n +0001686720 00000 n +0001687819 00000 n +0001688054 00000 n +0001689201 00000 n +trailer +<< +/Size 78 +/Root 77 0 R +/Info 75 0 R +/ID [] +>> +startxref +1689269 +%%EOF diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/NTCIR4.pdf b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/NTCIR4.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6166f3eb1ed606eb3a9d2934421c0a55f6855c68 Binary files /dev/null and b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/NTCIR4.pdf differ diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/ROUGE-Note-v1.4.2.pdf b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/ROUGE-Note-v1.4.2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8b623f9eedbd9de0e7cdab78280fbefb31a7f3da Binary files /dev/null and b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/ROUGE-Note-v1.4.2.pdf differ diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/WAS2004.pdf b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/WAS2004.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8b623f9eedbd9de0e7cdab78280fbefb31a7f3da Binary files /dev/null and b/fastSum/resources/ROUGE/RELEASE-1.5.5/docs/WAS2004.pdf differ diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/runROUGE-test.pl b/fastSum/resources/ROUGE/RELEASE-1.5.5/runROUGE-test.pl new file mode 100644 index 0000000000000000000000000000000000000000..ef36a278a9630fc182b89c997e7c9ff0c827a65d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/runROUGE-test.pl @@ -0,0 +1,51 @@ +#!/usr/bin/perl -w +use Cwd; +$curdir=getcwd; +$ROUGE="../ROUGE-1.5.5.pl"; +chdir("sample-test"); +$cmd="$ROUGE -e ../data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -a ROUGE-test.xml > ../sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -a -m ROUGE-test.xml > ../sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a-m.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -a -m -s ROUGE-test.xml > ../sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a-m-s.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -l 10 -a ROUGE-test.xml > ../sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -l 10 -a -m ROUGE-test.xml > ../sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a-m.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -l 10 -a -m -s ROUGE-test.xml > ../sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a-m-s.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -b 75 -a ROUGE-test.xml > ../sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -b 75 -a -m ROUGE-test.xml > ../sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a-m.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -b 75 -a -m -s ROUGE-test.xml > ../sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a-m-s.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -3 HM -z SIMPLE DUC2002-BE-F.in.26.lst 26 > ../sample-output/DUC2002-BE-F.in.26.lst.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -3 HM DUC2002-BE-F.in.26.simple.xml 26 > ../sample-output/DUC2002-BE-F.in.26.simple.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -3 HM -z SIMPLE DUC2002-BE-L.in.26.lst 26 > ../sample-output/DUC2002-BE-L.in.26.lst.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -3 HM DUC2002-BE-L.in.26.simple.xml 26 > ../sample-output/DUC2002-BE-L.in.26.simple.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -n 4 -z SPL DUC2002-ROUGE.in.26.spl.lst 26 > ../sample-output/DUC2002-ROUGE.in.26.spl.lst.out"; +print $cmd,"\n"; +system($cmd); +$cmd="$ROUGE -e ../data -n 4 DUC2002-ROUGE.in.26.spl.xml 26 > ../sample-output/DUC2002-ROUGE.in.26.spl.out"; +print $cmd,"\n"; +system($cmd); +chdir($curdir); diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-BE-F.in.26.lst.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-BE-F.in.26.lst.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-BE-F.in.26.simple.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-BE-F.in.26.simple.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-BE-L.in.26.lst.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-BE-L.in.26.lst.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-BE-L.in.26.simple.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-BE-L.in.26.simple.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-ROUGE.in.26.spl.lst.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-ROUGE.in.26.spl.lst.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-ROUGE.in.26.spl.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/DUC2002-ROUGE.in.26.spl.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a-m-s.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a-m-s.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a-m.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a-m.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-a.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a-m-s.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a-m-s.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a-m.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a-m.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-b75-a.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a-m-s.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a-m-s.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a-m.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a-m.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/ROUGE-test-c95-2-1-U-r1000-n4-w1.2-l10-a.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/verify-c95-2-1-U-r1000-n4-w1.2-b75-a-m-s.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/verify-c95-2-1-U-r1000-n4-w1.2-b75-a-m-s.out new file mode 100644 index 0000000000000000000000000000000000000000..76d7d9285c0a79e62a04b1eefdcc896aa7aa0345 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/verify-c95-2-1-U-r1000-n4-w1.2-b75-a-m-s.out @@ -0,0 +1,160 @@ +--------------------------------------------- +C ROUGE-1 Average_R: 0.60185 (95%-conf.int. 0.34188 - 0.86539) +C ROUGE-1 Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-1 Average_F: 0.61339 (95%-conf.int. 0.35764 - 0.87000) +--------------------------------------------- +C ROUGE-2 Average_R: 0.59748 (95%-conf.int. 0.33597 - 0.86364) +C ROUGE-2 Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-2 Average_F: 0.61101 (95%-conf.int. 0.35437 - 0.86905) +--------------------------------------------- +C ROUGE-3 Average_R: 0.59114 (95%-conf.int. 0.32749 - 0.86111) +C ROUGE-3 Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-3 Average_F: 0.60751 (95%-conf.int. 0.34958 - 0.86765) +--------------------------------------------- +C ROUGE-4 Average_R: 0.58117 (95%-conf.int. 0.31429 - 0.85714) +C ROUGE-4 Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-4 Average_F: 0.60185 (95%-conf.int. 0.34188 - 0.86539) +--------------------------------------------- +C ROUGE-L Average_R: 0.60185 (95%-conf.int. 0.34188 - 0.86539) +C ROUGE-L Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-L Average_F: 0.61339 (95%-conf.int. 0.35764 - 0.87000) +--------------------------------------------- +C ROUGE-W-1.2 Average_R: 0.44269 (95%-conf.int. 0.27331 - 0.61306) +C ROUGE-W-1.2 Average_P: 0.66656 (95%-conf.int. 0.43295 - 0.89342) +C ROUGE-W-1.2 Average_F: 0.53173 (95%-conf.int. 0.33536 - 0.72590) +--------------------------------------------- +C ROUGE-S* Average_R: 0.57366 (95%-conf.int. 0.30449 - 0.85417) +C ROUGE-S* Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-S* Average_F: 0.59748 (95%-conf.int. 0.33597 - 0.86364) +--------------------------------------------- +C ROUGE-SU* Average_R: 0.57925 (95%-conf.int. 0.31178 - 0.85638) +C ROUGE-SU* Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-SU* Average_F: 0.60075 (95%-conf.int. 0.34038 - 0.86494) +--------------------------------------------- +D ROUGE-1 Average_R: 0.06443 (95%-conf.int. 0.00000 - 0.19444) +D ROUGE-1 Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-1 Average_F: 0.06326 (95%-conf.int. 0.00000 - 0.19091) +--------------------------------------------- +D ROUGE-2 Average_R: 0.06483 (95%-conf.int. 0.00000 - 0.19565) +D ROUGE-2 Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-2 Average_F: 0.06345 (95%-conf.int. 0.00000 - 0.19149) +--------------------------------------------- +D ROUGE-3 Average_R: 0.06540 (95%-conf.int. 0.00000 - 0.19737) +D ROUGE-3 Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-3 Average_F: 0.06372 (95%-conf.int. 0.00000 - 0.19231) +--------------------------------------------- +D ROUGE-4 Average_R: 0.06627 (95%-conf.int. 0.00000 - 0.20000) +D ROUGE-4 Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-4 Average_F: 0.06413 (95%-conf.int. 0.00000 - 0.19355) +--------------------------------------------- +D ROUGE-L Average_R: 0.06443 (95%-conf.int. 0.00000 - 0.19444) +D ROUGE-L Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-L Average_F: 0.06326 (95%-conf.int. 0.00000 - 0.19091) +--------------------------------------------- +D ROUGE-W-1.2 Average_R: 0.05534 (95%-conf.int. 0.00000 - 0.16703) +D ROUGE-W-1.2 Average_P: 0.07827 (95%-conf.int. 0.00000 - 0.23623) +D ROUGE-W-1.2 Average_F: 0.06484 (95%-conf.int. 0.00000 - 0.19570) +--------------------------------------------- +D ROUGE-S* Average_R: 0.06690 (95%-conf.int. 0.00000 - 0.20192) +D ROUGE-S* Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-S* Average_F: 0.06443 (95%-conf.int. 0.00000 - 0.19444) +--------------------------------------------- +D ROUGE-SU* Average_R: 0.06643 (95%-conf.int. 0.00000 - 0.20050) +D ROUGE-SU* Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-SU* Average_F: 0.06420 (95%-conf.int. 0.00000 - 0.19378) +--------------------------------------------- +E ROUGE-1 Average_R: 0.13207 (95%-conf.int. 0.00000 - 0.26425) +E ROUGE-1 Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-1 Average_F: 0.12839 (95%-conf.int. 0.00000 - 0.25690) +--------------------------------------------- +E ROUGE-2 Average_R: 0.13335 (95%-conf.int. 0.00000 - 0.26680) +E ROUGE-2 Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-2 Average_F: 0.12899 (95%-conf.int. 0.00000 - 0.25809) +--------------------------------------------- +E ROUGE-3 Average_R: 0.13519 (95%-conf.int. 0.00000 - 0.27047) +E ROUGE-3 Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-3 Average_F: 0.12984 (95%-conf.int. 0.00000 - 0.25979) +--------------------------------------------- +E ROUGE-4 Average_R: 0.13805 (95%-conf.int. 0.00000 - 0.27619) +E ROUGE-4 Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-4 Average_F: 0.13113 (95%-conf.int. 0.00000 - 0.26237) +--------------------------------------------- +E ROUGE-L Average_R: 0.13207 (95%-conf.int. 0.00000 - 0.26425) +E ROUGE-L Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-L Average_F: 0.12839 (95%-conf.int. 0.00000 - 0.25690) +--------------------------------------------- +E ROUGE-W-1.2 Average_R: 0.11386 (95%-conf.int. 0.00000 - 0.22781) +E ROUGE-W-1.2 Average_P: 0.15741 (95%-conf.int. 0.00000 - 0.31498) +E ROUGE-W-1.2 Average_F: 0.13213 (95%-conf.int. 0.00000 - 0.26437) +--------------------------------------------- +E ROUGE-S* Average_R: 0.14019 (95%-conf.int. 0.00000 - 0.28045) +E ROUGE-S* Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-S* Average_F: 0.13207 (95%-conf.int. 0.00000 - 0.26425) +--------------------------------------------- +E ROUGE-SU* Average_R: 0.13860 (95%-conf.int. 0.00000 - 0.27728) +E ROUGE-SU* Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-SU* Average_F: 0.13137 (95%-conf.int. 0.00000 - 0.26284) +--------------------------------------------- +F ROUGE-1 Average_R: 0.20165 (95%-conf.int. 0.06731 - 0.27482) +F ROUGE-1 Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-1 Average_F: 0.19404 (95%-conf.int. 0.06481 - 0.26175) +--------------------------------------------- +F ROUGE-2 Average_R: 0.20435 (95%-conf.int. 0.06818 - 0.27950) +F ROUGE-2 Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-2 Average_F: 0.19526 (95%-conf.int. 0.06522 - 0.26382) +--------------------------------------------- +F ROUGE-3 Average_R: 0.20828 (95%-conf.int. 0.06945 - 0.28638) +F ROUGE-3 Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-3 Average_F: 0.19700 (95%-conf.int. 0.06579 - 0.26681) +--------------------------------------------- +F ROUGE-4 Average_R: 0.21451 (95%-conf.int. 0.07143 - 0.29744) +F ROUGE-4 Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-4 Average_F: 0.19968 (95%-conf.int. 0.06667 - 0.27141) +--------------------------------------------- +F ROUGE-L Average_R: 0.20165 (95%-conf.int. 0.06731 - 0.27482) +F ROUGE-L Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-L Average_F: 0.19404 (95%-conf.int. 0.06481 - 0.26175) +--------------------------------------------- +F ROUGE-W-1.2 Average_R: 0.17455 (95%-conf.int. 0.05823 - 0.23884) +F ROUGE-W-1.2 Average_P: 0.23568 (95%-conf.int. 0.07874 - 0.31498) +F ROUGE-W-1.2 Average_F: 0.20049 (95%-conf.int. 0.06695 - 0.27157) +--------------------------------------------- +F ROUGE-S* Average_R: 0.21925 (95%-conf.int. 0.07292 - 0.30594) +F ROUGE-S* Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-S* Average_F: 0.20165 (95%-conf.int. 0.06731 - 0.27482) +--------------------------------------------- +F ROUGE-SU* Average_R: 0.21572 (95%-conf.int. 0.07181 - 0.29959) +F ROUGE-SU* Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-SU* Average_F: 0.20018 (95%-conf.int. 0.06683 - 0.27228) +--------------------------------------------- +G ROUGE-1 Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-1 Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-1 Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-2 Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-2 Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-2 Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-3 Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-3 Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-3 Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-4 Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-4 Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-4 Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-L Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-L Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-L Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-W-1.2 Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-W-1.2 Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-W-1.2 Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-S* Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-S* Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-S* Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-SU* Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-SU* Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-SU* Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/verify-spl-c95-2-1-U-r1000-n4-w1.2-b75-a-m-s.out b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/verify-spl-c95-2-1-U-r1000-n4-w1.2-b75-a-m-s.out new file mode 100644 index 0000000000000000000000000000000000000000..76d7d9285c0a79e62a04b1eefdcc896aa7aa0345 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-output/verify-spl-c95-2-1-U-r1000-n4-w1.2-b75-a-m-s.out @@ -0,0 +1,160 @@ +--------------------------------------------- +C ROUGE-1 Average_R: 0.60185 (95%-conf.int. 0.34188 - 0.86539) +C ROUGE-1 Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-1 Average_F: 0.61339 (95%-conf.int. 0.35764 - 0.87000) +--------------------------------------------- +C ROUGE-2 Average_R: 0.59748 (95%-conf.int. 0.33597 - 0.86364) +C ROUGE-2 Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-2 Average_F: 0.61101 (95%-conf.int. 0.35437 - 0.86905) +--------------------------------------------- +C ROUGE-3 Average_R: 0.59114 (95%-conf.int. 0.32749 - 0.86111) +C ROUGE-3 Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-3 Average_F: 0.60751 (95%-conf.int. 0.34958 - 0.86765) +--------------------------------------------- +C ROUGE-4 Average_R: 0.58117 (95%-conf.int. 0.31429 - 0.85714) +C ROUGE-4 Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-4 Average_F: 0.60185 (95%-conf.int. 0.34188 - 0.86539) +--------------------------------------------- +C ROUGE-L Average_R: 0.60185 (95%-conf.int. 0.34188 - 0.86539) +C ROUGE-L Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-L Average_F: 0.61339 (95%-conf.int. 0.35764 - 0.87000) +--------------------------------------------- +C ROUGE-W-1.2 Average_R: 0.44269 (95%-conf.int. 0.27331 - 0.61306) +C ROUGE-W-1.2 Average_P: 0.66656 (95%-conf.int. 0.43295 - 0.89342) +C ROUGE-W-1.2 Average_F: 0.53173 (95%-conf.int. 0.33536 - 0.72590) +--------------------------------------------- +C ROUGE-S* Average_R: 0.57366 (95%-conf.int. 0.30449 - 0.85417) +C ROUGE-S* Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-S* Average_F: 0.59748 (95%-conf.int. 0.33597 - 0.86364) +--------------------------------------------- +C ROUGE-SU* Average_R: 0.57925 (95%-conf.int. 0.31178 - 0.85638) +C ROUGE-SU* Average_P: 0.62587 (95%-conf.int. 0.37500 - 0.87500) +C ROUGE-SU* Average_F: 0.60075 (95%-conf.int. 0.34038 - 0.86494) +--------------------------------------------- +D ROUGE-1 Average_R: 0.06443 (95%-conf.int. 0.00000 - 0.19444) +D ROUGE-1 Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-1 Average_F: 0.06326 (95%-conf.int. 0.00000 - 0.19091) +--------------------------------------------- +D ROUGE-2 Average_R: 0.06483 (95%-conf.int. 0.00000 - 0.19565) +D ROUGE-2 Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-2 Average_F: 0.06345 (95%-conf.int. 0.00000 - 0.19149) +--------------------------------------------- +D ROUGE-3 Average_R: 0.06540 (95%-conf.int. 0.00000 - 0.19737) +D ROUGE-3 Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-3 Average_F: 0.06372 (95%-conf.int. 0.00000 - 0.19231) +--------------------------------------------- +D ROUGE-4 Average_R: 0.06627 (95%-conf.int. 0.00000 - 0.20000) +D ROUGE-4 Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-4 Average_F: 0.06413 (95%-conf.int. 0.00000 - 0.19355) +--------------------------------------------- +D ROUGE-L Average_R: 0.06443 (95%-conf.int. 0.00000 - 0.19444) +D ROUGE-L Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-L Average_F: 0.06326 (95%-conf.int. 0.00000 - 0.19091) +--------------------------------------------- +D ROUGE-W-1.2 Average_R: 0.05534 (95%-conf.int. 0.00000 - 0.16703) +D ROUGE-W-1.2 Average_P: 0.07827 (95%-conf.int. 0.00000 - 0.23623) +D ROUGE-W-1.2 Average_F: 0.06484 (95%-conf.int. 0.00000 - 0.19570) +--------------------------------------------- +D ROUGE-S* Average_R: 0.06690 (95%-conf.int. 0.00000 - 0.20192) +D ROUGE-S* Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-S* Average_F: 0.06443 (95%-conf.int. 0.00000 - 0.19444) +--------------------------------------------- +D ROUGE-SU* Average_R: 0.06643 (95%-conf.int. 0.00000 - 0.20050) +D ROUGE-SU* Average_P: 0.06212 (95%-conf.int. 0.00000 - 0.18750) +D ROUGE-SU* Average_F: 0.06420 (95%-conf.int. 0.00000 - 0.19378) +--------------------------------------------- +E ROUGE-1 Average_R: 0.13207 (95%-conf.int. 0.00000 - 0.26425) +E ROUGE-1 Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-1 Average_F: 0.12839 (95%-conf.int. 0.00000 - 0.25690) +--------------------------------------------- +E ROUGE-2 Average_R: 0.13335 (95%-conf.int. 0.00000 - 0.26680) +E ROUGE-2 Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-2 Average_F: 0.12899 (95%-conf.int. 0.00000 - 0.25809) +--------------------------------------------- +E ROUGE-3 Average_R: 0.13519 (95%-conf.int. 0.00000 - 0.27047) +E ROUGE-3 Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-3 Average_F: 0.12984 (95%-conf.int. 0.00000 - 0.25979) +--------------------------------------------- +E ROUGE-4 Average_R: 0.13805 (95%-conf.int. 0.00000 - 0.27619) +E ROUGE-4 Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-4 Average_F: 0.13113 (95%-conf.int. 0.00000 - 0.26237) +--------------------------------------------- +E ROUGE-L Average_R: 0.13207 (95%-conf.int. 0.00000 - 0.26425) +E ROUGE-L Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-L Average_F: 0.12839 (95%-conf.int. 0.00000 - 0.25690) +--------------------------------------------- +E ROUGE-W-1.2 Average_R: 0.11386 (95%-conf.int. 0.00000 - 0.22781) +E ROUGE-W-1.2 Average_P: 0.15741 (95%-conf.int. 0.00000 - 0.31498) +E ROUGE-W-1.2 Average_F: 0.13213 (95%-conf.int. 0.00000 - 0.26437) +--------------------------------------------- +E ROUGE-S* Average_R: 0.14019 (95%-conf.int. 0.00000 - 0.28045) +E ROUGE-S* Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-S* Average_F: 0.13207 (95%-conf.int. 0.00000 - 0.26425) +--------------------------------------------- +E ROUGE-SU* Average_R: 0.13860 (95%-conf.int. 0.00000 - 0.27728) +E ROUGE-SU* Average_P: 0.12494 (95%-conf.int. 0.00000 - 0.25000) +E ROUGE-SU* Average_F: 0.13137 (95%-conf.int. 0.00000 - 0.26284) +--------------------------------------------- +F ROUGE-1 Average_R: 0.20165 (95%-conf.int. 0.06731 - 0.27482) +F ROUGE-1 Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-1 Average_F: 0.19404 (95%-conf.int. 0.06481 - 0.26175) +--------------------------------------------- +F ROUGE-2 Average_R: 0.20435 (95%-conf.int. 0.06818 - 0.27950) +F ROUGE-2 Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-2 Average_F: 0.19526 (95%-conf.int. 0.06522 - 0.26382) +--------------------------------------------- +F ROUGE-3 Average_R: 0.20828 (95%-conf.int. 0.06945 - 0.28638) +F ROUGE-3 Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-3 Average_F: 0.19700 (95%-conf.int. 0.06579 - 0.26681) +--------------------------------------------- +F ROUGE-4 Average_R: 0.21451 (95%-conf.int. 0.07143 - 0.29744) +F ROUGE-4 Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-4 Average_F: 0.19968 (95%-conf.int. 0.06667 - 0.27141) +--------------------------------------------- +F ROUGE-L Average_R: 0.20165 (95%-conf.int. 0.06731 - 0.27482) +F ROUGE-L Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-L Average_F: 0.19404 (95%-conf.int. 0.06481 - 0.26175) +--------------------------------------------- +F ROUGE-W-1.2 Average_R: 0.17455 (95%-conf.int. 0.05823 - 0.23884) +F ROUGE-W-1.2 Average_P: 0.23568 (95%-conf.int. 0.07874 - 0.31498) +F ROUGE-W-1.2 Average_F: 0.20049 (95%-conf.int. 0.06695 - 0.27157) +--------------------------------------------- +F ROUGE-S* Average_R: 0.21925 (95%-conf.int. 0.07292 - 0.30594) +F ROUGE-S* Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-S* Average_F: 0.20165 (95%-conf.int. 0.06731 - 0.27482) +--------------------------------------------- +F ROUGE-SU* Average_R: 0.21572 (95%-conf.int. 0.07181 - 0.29959) +F ROUGE-SU* Average_P: 0.18706 (95%-conf.int. 0.06250 - 0.25000) +F ROUGE-SU* Average_F: 0.20018 (95%-conf.int. 0.06683 - 0.27228) +--------------------------------------------- +G ROUGE-1 Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-1 Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-1 Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-2 Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-2 Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-2 Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-3 Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-3 Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-3 Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-4 Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-4 Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-4 Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-L Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-L Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-L Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-W-1.2 Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-W-1.2 Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-W-1.2 Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-S* Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-S* Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-S* Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +--------------------------------------------- +G ROUGE-SU* Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-SU* Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000) +G ROUGE-SU* Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000) diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-F.in.26.lst b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-F.in.26.lst new file mode 100644 index 0000000000000000000000000000000000000000..2067b8eee8bf0e3d4ad13bf7db9c6d04a99e9174 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-F.in.26.lst @@ -0,0 +1,59 @@ +DUC2002/BE-F/D061.M.100.J.26.mini.be DUC2002/BE-F/D061.M.100.J.I.mini.be +DUC2002/BE-F/D062.M.100.J.26.mini.be DUC2002/BE-F/D062.M.100.J.A.mini.be +DUC2002/BE-F/D063.M.100.J.26.mini.be DUC2002/BE-F/D063.M.100.J.E.mini.be +DUC2002/BE-F/D064.M.100.J.26.mini.be DUC2002/BE-F/D064.M.100.J.B.mini.be +DUC2002/BE-F/D065.M.100.J.26.mini.be DUC2002/BE-F/D065.M.100.J.F.mini.be +DUC2002/BE-F/D066.M.100.J.26.mini.be DUC2002/BE-F/D066.M.100.J.I.mini.be +DUC2002/BE-F/D067.M.100.F.26.mini.be DUC2002/BE-F/D067.M.100.F.I.mini.be +DUC2002/BE-F/D068.M.100.F.26.mini.be DUC2002/BE-F/D068.M.100.F.A.mini.be +DUC2002/BE-F/D069.M.100.F.26.mini.be DUC2002/BE-F/D069.M.100.F.C.mini.be +DUC2002/BE-F/D070.M.100.F.26.mini.be DUC2002/BE-F/D070.M.100.F.D.mini.be +DUC2002/BE-F/D071.M.100.F.26.mini.be DUC2002/BE-F/D071.M.100.F.D.mini.be +DUC2002/BE-F/D072.M.100.F.26.mini.be DUC2002/BE-F/D072.M.100.F.J.mini.be +DUC2002/BE-F/D073.M.100.B.26.mini.be DUC2002/BE-F/D073.M.100.B.J.mini.be +DUC2002/BE-F/D074.M.100.B.26.mini.be DUC2002/BE-F/D074.M.100.B.A.mini.be +DUC2002/BE-F/D075.M.100.B.26.mini.be DUC2002/BE-F/D075.M.100.B.E.mini.be +DUC2002/BE-F/D076.M.100.B.26.mini.be DUC2002/BE-F/D076.M.100.B.E.mini.be +DUC2002/BE-F/D077.M.100.B.26.mini.be DUC2002/BE-F/D077.M.100.B.H.mini.be +DUC2002/BE-F/D078.M.100.B.26.mini.be DUC2002/BE-F/D078.M.100.B.J.mini.be +DUC2002/BE-F/D079.M.100.A.26.mini.be DUC2002/BE-F/D079.M.100.A.I.mini.be +DUC2002/BE-F/D080.M.100.A.26.mini.be DUC2002/BE-F/D080.M.100.A.E.mini.be +DUC2002/BE-F/D081.M.100.A.26.mini.be DUC2002/BE-F/D081.M.100.A.D.mini.be +DUC2002/BE-F/D082.M.100.A.26.mini.be DUC2002/BE-F/D082.M.100.A.C.mini.be +DUC2002/BE-F/D083.M.100.A.26.mini.be DUC2002/BE-F/D083.M.100.A.G.mini.be +DUC2002/BE-F/D084.M.100.A.26.mini.be DUC2002/BE-F/D084.M.100.A.H.mini.be +DUC2002/BE-F/D085.M.100.D.26.mini.be DUC2002/BE-F/D085.M.100.D.H.mini.be +DUC2002/BE-F/D086.M.100.D.26.mini.be DUC2002/BE-F/D086.M.100.D.B.mini.be +DUC2002/BE-F/D087.M.100.D.26.mini.be DUC2002/BE-F/D087.M.100.D.B.mini.be +DUC2002/BE-F/D089.M.100.D.26.mini.be DUC2002/BE-F/D089.M.100.D.G.mini.be +DUC2002/BE-F/D090.M.100.D.26.mini.be DUC2002/BE-F/D090.M.100.D.J.mini.be +DUC2002/BE-F/D091.M.100.C.26.mini.be DUC2002/BE-F/D091.M.100.C.F.mini.be +DUC2002/BE-F/D092.M.100.C.26.mini.be DUC2002/BE-F/D092.M.100.C.A.mini.be +DUC2002/BE-F/D093.M.100.C.26.mini.be DUC2002/BE-F/D093.M.100.C.H.mini.be +DUC2002/BE-F/D094.M.100.C.26.mini.be DUC2002/BE-F/D094.M.100.C.D.mini.be +DUC2002/BE-F/D095.M.100.C.26.mini.be DUC2002/BE-F/D095.M.100.C.H.mini.be +DUC2002/BE-F/D096.M.100.C.26.mini.be DUC2002/BE-F/D096.M.100.C.G.mini.be +DUC2002/BE-F/D097.M.100.E.26.mini.be DUC2002/BE-F/D097.M.100.E.J.mini.be +DUC2002/BE-F/D098.M.100.E.26.mini.be DUC2002/BE-F/D098.M.100.E.A.mini.be +DUC2002/BE-F/D099.M.100.E.26.mini.be DUC2002/BE-F/D099.M.100.E.D.mini.be +DUC2002/BE-F/D100.M.100.E.26.mini.be DUC2002/BE-F/D100.M.100.E.F.mini.be +DUC2002/BE-F/D101.M.100.E.26.mini.be DUC2002/BE-F/D101.M.100.E.G.mini.be +DUC2002/BE-F/D102.M.100.E.26.mini.be DUC2002/BE-F/D102.M.100.E.D.mini.be +DUC2002/BE-F/D103.M.100.G.26.mini.be DUC2002/BE-F/D103.M.100.G.A.mini.be +DUC2002/BE-F/D104.M.100.G.26.mini.be DUC2002/BE-F/D104.M.100.G.C.mini.be +DUC2002/BE-F/D105.M.100.G.26.mini.be DUC2002/BE-F/D105.M.100.G.C.mini.be +DUC2002/BE-F/D106.M.100.G.26.mini.be DUC2002/BE-F/D106.M.100.G.F.mini.be +DUC2002/BE-F/D107.M.100.G.26.mini.be DUC2002/BE-F/D107.M.100.G.H.mini.be +DUC2002/BE-F/D108.M.100.G.26.mini.be DUC2002/BE-F/D108.M.100.G.I.mini.be +DUC2002/BE-F/D109.M.100.H.26.mini.be DUC2002/BE-F/D109.M.100.H.B.mini.be +DUC2002/BE-F/D110.M.100.H.26.mini.be DUC2002/BE-F/D110.M.100.H.C.mini.be +DUC2002/BE-F/D111.M.100.H.26.mini.be DUC2002/BE-F/D111.M.100.H.C.mini.be +DUC2002/BE-F/D112.M.100.H.26.mini.be DUC2002/BE-F/D112.M.100.H.E.mini.be +DUC2002/BE-F/D113.M.100.H.26.mini.be DUC2002/BE-F/D113.M.100.H.I.mini.be +DUC2002/BE-F/D114.M.100.H.26.mini.be DUC2002/BE-F/D114.M.100.H.F.mini.be +DUC2002/BE-F/D115.M.100.I.26.mini.be DUC2002/BE-F/D115.M.100.I.B.mini.be +DUC2002/BE-F/D116.M.100.I.26.mini.be DUC2002/BE-F/D116.M.100.I.B.mini.be +DUC2002/BE-F/D117.M.100.I.26.mini.be DUC2002/BE-F/D117.M.100.I.G.mini.be +DUC2002/BE-F/D118.M.100.I.26.mini.be DUC2002/BE-F/D118.M.100.I.E.mini.be +DUC2002/BE-F/D119.M.100.I.26.mini.be DUC2002/BE-F/D119.M.100.I.F.mini.be +DUC2002/BE-F/D120.M.100.I.26.mini.be DUC2002/BE-F/D120.M.100.I.J.mini.be diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-F.in.26.simple.xml b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-F.in.26.simple.xml new file mode 100644 index 0000000000000000000000000000000000000000..bda71bfb8a5055974fd8bce54583c0e961e403f9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-F.in.26.simple.xml @@ -0,0 +1,946 @@ + + + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D061.M.100.J.26.mini.be

+ + + D061.M.100.J.I.mini.be + + + + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D062.M.100.J.26.mini.be

+
+ + D062.M.100.J.A.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D063.M.100.J.26.mini.be

+
+ + D063.M.100.J.E.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D064.M.100.J.26.mini.be

+
+ + D064.M.100.J.B.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D065.M.100.J.26.mini.be

+
+ + D065.M.100.J.F.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D066.M.100.J.26.mini.be

+
+ + D066.M.100.J.I.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D067.M.100.F.26.mini.be

+
+ + D067.M.100.F.I.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D068.M.100.F.26.mini.be

+
+ + D068.M.100.F.A.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D069.M.100.F.26.mini.be

+
+ + D069.M.100.F.C.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D070.M.100.F.26.mini.be

+
+ + D070.M.100.F.D.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D071.M.100.F.26.mini.be

+
+ + D071.M.100.F.D.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D072.M.100.F.26.mini.be

+
+ + D072.M.100.F.J.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D073.M.100.B.26.mini.be

+
+ + D073.M.100.B.J.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D074.M.100.B.26.mini.be

+
+ + D074.M.100.B.A.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D075.M.100.B.26.mini.be

+
+ + D075.M.100.B.E.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D076.M.100.B.26.mini.be

+
+ + D076.M.100.B.E.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D077.M.100.B.26.mini.be

+
+ + D077.M.100.B.H.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D078.M.100.B.26.mini.be

+
+ + D078.M.100.B.J.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D079.M.100.A.26.mini.be

+
+ + D079.M.100.A.I.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D080.M.100.A.26.mini.be

+
+ + D080.M.100.A.E.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D081.M.100.A.26.mini.be

+
+ + D081.M.100.A.D.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D082.M.100.A.26.mini.be

+
+ + D082.M.100.A.C.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D083.M.100.A.26.mini.be

+
+ + D083.M.100.A.G.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D084.M.100.A.26.mini.be

+
+ + D084.M.100.A.H.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D085.M.100.D.26.mini.be

+
+ + D085.M.100.D.H.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D086.M.100.D.26.mini.be

+
+ + D086.M.100.D.B.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D087.M.100.D.26.mini.be

+
+ + D087.M.100.D.B.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D089.M.100.D.26.mini.be

+
+ + D089.M.100.D.G.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D090.M.100.D.26.mini.be

+
+ + D090.M.100.D.J.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D091.M.100.C.26.mini.be

+
+ + D091.M.100.C.F.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D092.M.100.C.26.mini.be

+
+ + D092.M.100.C.A.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D093.M.100.C.26.mini.be

+
+ + D093.M.100.C.H.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D094.M.100.C.26.mini.be

+
+ + D094.M.100.C.D.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D095.M.100.C.26.mini.be

+
+ + D095.M.100.C.H.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D096.M.100.C.26.mini.be

+
+ + D096.M.100.C.G.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D097.M.100.E.26.mini.be

+
+ + D097.M.100.E.J.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D098.M.100.E.26.mini.be

+
+ + D098.M.100.E.A.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D099.M.100.E.26.mini.be

+
+ + D099.M.100.E.D.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D100.M.100.E.26.mini.be

+
+ + D100.M.100.E.F.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D101.M.100.E.26.mini.be

+
+ + D101.M.100.E.G.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D102.M.100.E.26.mini.be

+
+ + D102.M.100.E.D.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D103.M.100.G.26.mini.be

+
+ + D103.M.100.G.A.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D104.M.100.G.26.mini.be

+
+ + D104.M.100.G.C.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D105.M.100.G.26.mini.be

+
+ + D105.M.100.G.C.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D106.M.100.G.26.mini.be

+
+ + D106.M.100.G.F.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D107.M.100.G.26.mini.be

+
+ + D107.M.100.G.H.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D108.M.100.G.26.mini.be

+
+ + D108.M.100.G.I.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D109.M.100.H.26.mini.be

+
+ + D109.M.100.H.B.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D110.M.100.H.26.mini.be

+
+ + D110.M.100.H.C.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D111.M.100.H.26.mini.be

+
+ + D111.M.100.H.C.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D112.M.100.H.26.mini.be

+
+ + D112.M.100.H.E.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D113.M.100.H.26.mini.be

+
+ + D113.M.100.H.I.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D114.M.100.H.26.mini.be

+
+ + D114.M.100.H.F.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D115.M.100.I.26.mini.be

+
+ + D115.M.100.I.B.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D116.M.100.I.26.mini.be

+
+ + D116.M.100.I.B.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D117.M.100.I.26.mini.be

+
+ + D117.M.100.I.G.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D118.M.100.I.26.mini.be

+
+ + D118.M.100.I.E.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D119.M.100.I.26.mini.be

+
+ + D119.M.100.I.F.mini.be + +
+ + + DUC2002/BE-F + + + DUC2002/BE-F + + + + +

D120.M.100.I.26.mini.be

+
+ + D120.M.100.I.J.mini.be + +
+ diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-L.in.26.lst b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-L.in.26.lst new file mode 100644 index 0000000000000000000000000000000000000000..bc073d7922d3f6edc3bd6bf6aabc11a605990f86 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-L.in.26.lst @@ -0,0 +1,59 @@ +DUC2002/BE-L/D061.M.100.J.26.be DUC2002/BE-L/D061.M.100.J.I.be +DUC2002/BE-L/D062.M.100.J.26.be DUC2002/BE-L/D062.M.100.J.A.be +DUC2002/BE-L/D063.M.100.J.26.be DUC2002/BE-L/D063.M.100.J.E.be +DUC2002/BE-L/D064.M.100.J.26.be DUC2002/BE-L/D064.M.100.J.B.be +DUC2002/BE-L/D065.M.100.J.26.be DUC2002/BE-L/D065.M.100.J.F.be +DUC2002/BE-L/D066.M.100.J.26.be DUC2002/BE-L/D066.M.100.J.I.be +DUC2002/BE-L/D067.M.100.F.26.be DUC2002/BE-L/D067.M.100.F.I.be +DUC2002/BE-L/D068.M.100.F.26.be DUC2002/BE-L/D068.M.100.F.A.be +DUC2002/BE-L/D069.M.100.F.26.be DUC2002/BE-L/D069.M.100.F.C.be +DUC2002/BE-L/D070.M.100.F.26.be DUC2002/BE-L/D070.M.100.F.D.be +DUC2002/BE-L/D071.M.100.F.26.be DUC2002/BE-L/D071.M.100.F.D.be +DUC2002/BE-L/D072.M.100.F.26.be DUC2002/BE-L/D072.M.100.F.J.be +DUC2002/BE-L/D073.M.100.B.26.be DUC2002/BE-L/D073.M.100.B.J.be +DUC2002/BE-L/D074.M.100.B.26.be DUC2002/BE-L/D074.M.100.B.A.be +DUC2002/BE-L/D075.M.100.B.26.be DUC2002/BE-L/D075.M.100.B.E.be +DUC2002/BE-L/D076.M.100.B.26.be DUC2002/BE-L/D076.M.100.B.E.be +DUC2002/BE-L/D077.M.100.B.26.be DUC2002/BE-L/D077.M.100.B.H.be +DUC2002/BE-L/D078.M.100.B.26.be DUC2002/BE-L/D078.M.100.B.J.be +DUC2002/BE-L/D079.M.100.A.26.be DUC2002/BE-L/D079.M.100.A.I.be +DUC2002/BE-L/D080.M.100.A.26.be DUC2002/BE-L/D080.M.100.A.E.be +DUC2002/BE-L/D081.M.100.A.26.be DUC2002/BE-L/D081.M.100.A.D.be +DUC2002/BE-L/D082.M.100.A.26.be DUC2002/BE-L/D082.M.100.A.C.be +DUC2002/BE-L/D083.M.100.A.26.be DUC2002/BE-L/D083.M.100.A.G.be +DUC2002/BE-L/D084.M.100.A.26.be DUC2002/BE-L/D084.M.100.A.H.be +DUC2002/BE-L/D085.M.100.D.26.be DUC2002/BE-L/D085.M.100.D.H.be +DUC2002/BE-L/D086.M.100.D.26.be DUC2002/BE-L/D086.M.100.D.B.be +DUC2002/BE-L/D087.M.100.D.26.be DUC2002/BE-L/D087.M.100.D.B.be +DUC2002/BE-L/D089.M.100.D.26.be DUC2002/BE-L/D089.M.100.D.G.be +DUC2002/BE-L/D090.M.100.D.26.be DUC2002/BE-L/D090.M.100.D.J.be +DUC2002/BE-L/D091.M.100.C.26.be DUC2002/BE-L/D091.M.100.C.F.be +DUC2002/BE-L/D092.M.100.C.26.be DUC2002/BE-L/D092.M.100.C.A.be +DUC2002/BE-L/D093.M.100.C.26.be DUC2002/BE-L/D093.M.100.C.H.be +DUC2002/BE-L/D094.M.100.C.26.be DUC2002/BE-L/D094.M.100.C.D.be +DUC2002/BE-L/D095.M.100.C.26.be DUC2002/BE-L/D095.M.100.C.H.be +DUC2002/BE-L/D096.M.100.C.26.be DUC2002/BE-L/D096.M.100.C.G.be +DUC2002/BE-L/D097.M.100.E.26.be DUC2002/BE-L/D097.M.100.E.J.be +DUC2002/BE-L/D098.M.100.E.26.be DUC2002/BE-L/D098.M.100.E.A.be +DUC2002/BE-L/D099.M.100.E.26.be DUC2002/BE-L/D099.M.100.E.D.be +DUC2002/BE-L/D100.M.100.E.26.be DUC2002/BE-L/D100.M.100.E.F.be +DUC2002/BE-L/D101.M.100.E.26.be DUC2002/BE-L/D101.M.100.E.G.be +DUC2002/BE-L/D102.M.100.E.26.be DUC2002/BE-L/D102.M.100.E.D.be +DUC2002/BE-L/D103.M.100.G.26.be DUC2002/BE-L/D103.M.100.G.A.be +DUC2002/BE-L/D104.M.100.G.26.be DUC2002/BE-L/D104.M.100.G.C.be +DUC2002/BE-L/D105.M.100.G.26.be DUC2002/BE-L/D105.M.100.G.C.be +DUC2002/BE-L/D106.M.100.G.26.be DUC2002/BE-L/D106.M.100.G.F.be +DUC2002/BE-L/D107.M.100.G.26.be DUC2002/BE-L/D107.M.100.G.H.be +DUC2002/BE-L/D108.M.100.G.26.be DUC2002/BE-L/D108.M.100.G.I.be +DUC2002/BE-L/D109.M.100.H.26.be DUC2002/BE-L/D109.M.100.H.B.be +DUC2002/BE-L/D110.M.100.H.26.be DUC2002/BE-L/D110.M.100.H.C.be +DUC2002/BE-L/D111.M.100.H.26.be DUC2002/BE-L/D111.M.100.H.C.be +DUC2002/BE-L/D112.M.100.H.26.be DUC2002/BE-L/D112.M.100.H.E.be +DUC2002/BE-L/D113.M.100.H.26.be DUC2002/BE-L/D113.M.100.H.I.be +DUC2002/BE-L/D114.M.100.H.26.be DUC2002/BE-L/D114.M.100.H.F.be +DUC2002/BE-L/D115.M.100.I.26.be DUC2002/BE-L/D115.M.100.I.B.be +DUC2002/BE-L/D116.M.100.I.26.be DUC2002/BE-L/D116.M.100.I.B.be +DUC2002/BE-L/D117.M.100.I.26.be DUC2002/BE-L/D117.M.100.I.G.be +DUC2002/BE-L/D118.M.100.I.26.be DUC2002/BE-L/D118.M.100.I.E.be +DUC2002/BE-L/D119.M.100.I.26.be DUC2002/BE-L/D119.M.100.I.F.be +DUC2002/BE-L/D120.M.100.I.26.be DUC2002/BE-L/D120.M.100.I.J.be diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-L.in.26.simple.xml b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-L.in.26.simple.xml new file mode 100644 index 0000000000000000000000000000000000000000..3bff64b3bbe84a56968418b103e11903cb900892 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-BE-L.in.26.simple.xml @@ -0,0 +1,946 @@ + + + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D061.M.100.J.26.be

+
+ + D061.M.100.J.I.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D062.M.100.J.26.be

+
+ + D062.M.100.J.A.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D063.M.100.J.26.be

+
+ + D063.M.100.J.E.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D064.M.100.J.26.be

+
+ + D064.M.100.J.B.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D065.M.100.J.26.be

+
+ + D065.M.100.J.F.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D066.M.100.J.26.be

+
+ + D066.M.100.J.I.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D067.M.100.F.26.be

+
+ + D067.M.100.F.I.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D068.M.100.F.26.be

+
+ + D068.M.100.F.A.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D069.M.100.F.26.be

+
+ + D069.M.100.F.C.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D070.M.100.F.26.be

+
+ + D070.M.100.F.D.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D071.M.100.F.26.be

+
+ + D071.M.100.F.D.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D072.M.100.F.26.be

+
+ + D072.M.100.F.J.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D073.M.100.B.26.be

+
+ + D073.M.100.B.J.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D074.M.100.B.26.be

+
+ + D074.M.100.B.A.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D075.M.100.B.26.be

+
+ + D075.M.100.B.E.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D076.M.100.B.26.be

+
+ + D076.M.100.B.E.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D077.M.100.B.26.be

+
+ + D077.M.100.B.H.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D078.M.100.B.26.be

+
+ + D078.M.100.B.J.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D079.M.100.A.26.be

+
+ + D079.M.100.A.I.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D080.M.100.A.26.be

+
+ + D080.M.100.A.E.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D081.M.100.A.26.be

+
+ + D081.M.100.A.D.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D082.M.100.A.26.be

+
+ + D082.M.100.A.C.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D083.M.100.A.26.be

+
+ + D083.M.100.A.G.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D084.M.100.A.26.be

+
+ + D084.M.100.A.H.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D085.M.100.D.26.be

+
+ + D085.M.100.D.H.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D086.M.100.D.26.be

+
+ + D086.M.100.D.B.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D087.M.100.D.26.be

+
+ + D087.M.100.D.B.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D089.M.100.D.26.be

+
+ + D089.M.100.D.G.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D090.M.100.D.26.be

+
+ + D090.M.100.D.J.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D091.M.100.C.26.be

+
+ + D091.M.100.C.F.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D092.M.100.C.26.be

+
+ + D092.M.100.C.A.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D093.M.100.C.26.be

+
+ + D093.M.100.C.H.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D094.M.100.C.26.be

+
+ + D094.M.100.C.D.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D095.M.100.C.26.be

+
+ + D095.M.100.C.H.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D096.M.100.C.26.be

+
+ + D096.M.100.C.G.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D097.M.100.E.26.be

+
+ + D097.M.100.E.J.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D098.M.100.E.26.be

+
+ + D098.M.100.E.A.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D099.M.100.E.26.be

+
+ + D099.M.100.E.D.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D100.M.100.E.26.be

+
+ + D100.M.100.E.F.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D101.M.100.E.26.be

+
+ + D101.M.100.E.G.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D102.M.100.E.26.be

+
+ + D102.M.100.E.D.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D103.M.100.G.26.be

+
+ + D103.M.100.G.A.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D104.M.100.G.26.be

+
+ + D104.M.100.G.C.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D105.M.100.G.26.be

+
+ + D105.M.100.G.C.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D106.M.100.G.26.be

+
+ + D106.M.100.G.F.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D107.M.100.G.26.be

+
+ + D107.M.100.G.H.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D108.M.100.G.26.be

+
+ + D108.M.100.G.I.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D109.M.100.H.26.be

+
+ + D109.M.100.H.B.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D110.M.100.H.26.be

+
+ + D110.M.100.H.C.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D111.M.100.H.26.be

+
+ + D111.M.100.H.C.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D112.M.100.H.26.be

+
+ + D112.M.100.H.E.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D113.M.100.H.26.be

+
+ + D113.M.100.H.I.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D114.M.100.H.26.be

+
+ + D114.M.100.H.F.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D115.M.100.I.26.be

+
+ + D115.M.100.I.B.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D116.M.100.I.26.be

+
+ + D116.M.100.I.B.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D117.M.100.I.26.be

+
+ + D117.M.100.I.G.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D118.M.100.I.26.be

+
+ + D118.M.100.I.E.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D119.M.100.I.26.be

+
+ + D119.M.100.I.F.be + +
+ + + DUC2002/BE-L + + + DUC2002/BE-L + + + + +

D120.M.100.I.26.be

+
+ + D120.M.100.I.J.be + +
+
diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-ROUGE.in.26.spl.lst b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-ROUGE.in.26.spl.lst new file mode 100644 index 0000000000000000000000000000000000000000..bf998eb595557012c72d75a7e047be7827e16caf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-ROUGE.in.26.spl.lst @@ -0,0 +1,59 @@ +DUC2002/docs-spl/D061.M.100.J.26.spl DUC2002/docs-spl/D061.M.100.J.I.spl +DUC2002/docs-spl/D062.M.100.J.26.spl DUC2002/docs-spl/D062.M.100.J.A.spl +DUC2002/docs-spl/D063.M.100.J.26.spl DUC2002/docs-spl/D063.M.100.J.E.spl +DUC2002/docs-spl/D064.M.100.J.26.spl DUC2002/docs-spl/D064.M.100.J.B.spl +DUC2002/docs-spl/D065.M.100.J.26.spl DUC2002/docs-spl/D065.M.100.J.F.spl +DUC2002/docs-spl/D066.M.100.J.26.spl DUC2002/docs-spl/D066.M.100.J.I.spl +DUC2002/docs-spl/D067.M.100.F.26.spl DUC2002/docs-spl/D067.M.100.F.I.spl +DUC2002/docs-spl/D068.M.100.F.26.spl DUC2002/docs-spl/D068.M.100.F.A.spl +DUC2002/docs-spl/D069.M.100.F.26.spl DUC2002/docs-spl/D069.M.100.F.C.spl +DUC2002/docs-spl/D070.M.100.F.26.spl DUC2002/docs-spl/D070.M.100.F.D.spl +DUC2002/docs-spl/D071.M.100.F.26.spl DUC2002/docs-spl/D071.M.100.F.D.spl +DUC2002/docs-spl/D072.M.100.F.26.spl DUC2002/docs-spl/D072.M.100.F.J.spl +DUC2002/docs-spl/D073.M.100.B.26.spl DUC2002/docs-spl/D073.M.100.B.J.spl +DUC2002/docs-spl/D074.M.100.B.26.spl DUC2002/docs-spl/D074.M.100.B.A.spl +DUC2002/docs-spl/D075.M.100.B.26.spl DUC2002/docs-spl/D075.M.100.B.E.spl +DUC2002/docs-spl/D076.M.100.B.26.spl DUC2002/docs-spl/D076.M.100.B.E.spl +DUC2002/docs-spl/D077.M.100.B.26.spl DUC2002/docs-spl/D077.M.100.B.H.spl +DUC2002/docs-spl/D078.M.100.B.26.spl DUC2002/docs-spl/D078.M.100.B.J.spl +DUC2002/docs-spl/D079.M.100.A.26.spl DUC2002/docs-spl/D079.M.100.A.I.spl +DUC2002/docs-spl/D080.M.100.A.26.spl DUC2002/docs-spl/D080.M.100.A.E.spl +DUC2002/docs-spl/D081.M.100.A.26.spl DUC2002/docs-spl/D081.M.100.A.D.spl +DUC2002/docs-spl/D082.M.100.A.26.spl DUC2002/docs-spl/D082.M.100.A.C.spl +DUC2002/docs-spl/D083.M.100.A.26.spl DUC2002/docs-spl/D083.M.100.A.G.spl +DUC2002/docs-spl/D084.M.100.A.26.spl DUC2002/docs-spl/D084.M.100.A.H.spl +DUC2002/docs-spl/D085.M.100.D.26.spl DUC2002/docs-spl/D085.M.100.D.H.spl +DUC2002/docs-spl/D086.M.100.D.26.spl DUC2002/docs-spl/D086.M.100.D.B.spl +DUC2002/docs-spl/D087.M.100.D.26.spl DUC2002/docs-spl/D087.M.100.D.B.spl +DUC2002/docs-spl/D089.M.100.D.26.spl DUC2002/docs-spl/D089.M.100.D.G.spl +DUC2002/docs-spl/D090.M.100.D.26.spl DUC2002/docs-spl/D090.M.100.D.J.spl +DUC2002/docs-spl/D091.M.100.C.26.spl DUC2002/docs-spl/D091.M.100.C.F.spl +DUC2002/docs-spl/D092.M.100.C.26.spl DUC2002/docs-spl/D092.M.100.C.A.spl +DUC2002/docs-spl/D093.M.100.C.26.spl DUC2002/docs-spl/D093.M.100.C.H.spl +DUC2002/docs-spl/D094.M.100.C.26.spl DUC2002/docs-spl/D094.M.100.C.D.spl +DUC2002/docs-spl/D095.M.100.C.26.spl DUC2002/docs-spl/D095.M.100.C.H.spl +DUC2002/docs-spl/D096.M.100.C.26.spl DUC2002/docs-spl/D096.M.100.C.G.spl +DUC2002/docs-spl/D097.M.100.E.26.spl DUC2002/docs-spl/D097.M.100.E.J.spl +DUC2002/docs-spl/D098.M.100.E.26.spl DUC2002/docs-spl/D098.M.100.E.A.spl +DUC2002/docs-spl/D099.M.100.E.26.spl DUC2002/docs-spl/D099.M.100.E.D.spl +DUC2002/docs-spl/D100.M.100.E.26.spl DUC2002/docs-spl/D100.M.100.E.F.spl +DUC2002/docs-spl/D101.M.100.E.26.spl DUC2002/docs-spl/D101.M.100.E.G.spl +DUC2002/docs-spl/D102.M.100.E.26.spl DUC2002/docs-spl/D102.M.100.E.D.spl +DUC2002/docs-spl/D103.M.100.G.26.spl DUC2002/docs-spl/D103.M.100.G.A.spl +DUC2002/docs-spl/D104.M.100.G.26.spl DUC2002/docs-spl/D104.M.100.G.C.spl +DUC2002/docs-spl/D105.M.100.G.26.spl DUC2002/docs-spl/D105.M.100.G.C.spl +DUC2002/docs-spl/D106.M.100.G.26.spl DUC2002/docs-spl/D106.M.100.G.F.spl +DUC2002/docs-spl/D107.M.100.G.26.spl DUC2002/docs-spl/D107.M.100.G.H.spl +DUC2002/docs-spl/D108.M.100.G.26.spl DUC2002/docs-spl/D108.M.100.G.I.spl +DUC2002/docs-spl/D109.M.100.H.26.spl DUC2002/docs-spl/D109.M.100.H.B.spl +DUC2002/docs-spl/D110.M.100.H.26.spl DUC2002/docs-spl/D110.M.100.H.C.spl +DUC2002/docs-spl/D111.M.100.H.26.spl DUC2002/docs-spl/D111.M.100.H.C.spl +DUC2002/docs-spl/D112.M.100.H.26.spl DUC2002/docs-spl/D112.M.100.H.E.spl +DUC2002/docs-spl/D113.M.100.H.26.spl DUC2002/docs-spl/D113.M.100.H.I.spl +DUC2002/docs-spl/D114.M.100.H.26.spl DUC2002/docs-spl/D114.M.100.H.F.spl +DUC2002/docs-spl/D115.M.100.I.26.spl DUC2002/docs-spl/D115.M.100.I.B.spl +DUC2002/docs-spl/D116.M.100.I.26.spl DUC2002/docs-spl/D116.M.100.I.B.spl +DUC2002/docs-spl/D117.M.100.I.26.spl DUC2002/docs-spl/D117.M.100.I.G.spl +DUC2002/docs-spl/D118.M.100.I.26.spl DUC2002/docs-spl/D118.M.100.I.E.spl +DUC2002/docs-spl/D119.M.100.I.26.spl DUC2002/docs-spl/D119.M.100.I.F.spl +DUC2002/docs-spl/D120.M.100.I.26.spl DUC2002/docs-spl/D120.M.100.I.J.spl diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-ROUGE.in.26.spl.xml b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-ROUGE.in.26.spl.xml new file mode 100644 index 0000000000000000000000000000000000000000..278413ec66b5db7250efc454ec12f9d0f1cdc03f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002-ROUGE.in.26.spl.xml @@ -0,0 +1,946 @@ + + + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D061.M.100.J.26.spl

+
+ + D061.M.100.J.I.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D062.M.100.J.26.spl

+
+ + D062.M.100.J.A.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D063.M.100.J.26.spl

+
+ + D063.M.100.J.E.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D064.M.100.J.26.spl

+
+ + D064.M.100.J.B.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D065.M.100.J.26.spl

+
+ + D065.M.100.J.F.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D066.M.100.J.26.spl

+
+ + D066.M.100.J.I.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D067.M.100.F.26.spl

+
+ + D067.M.100.F.I.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D068.M.100.F.26.spl

+
+ + D068.M.100.F.A.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D069.M.100.F.26.spl

+
+ + D069.M.100.F.C.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D070.M.100.F.26.spl

+
+ + D070.M.100.F.D.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D071.M.100.F.26.spl

+
+ + D071.M.100.F.D.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D072.M.100.F.26.spl

+
+ + D072.M.100.F.J.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D073.M.100.B.26.spl

+
+ + D073.M.100.B.J.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D074.M.100.B.26.spl

+
+ + D074.M.100.B.A.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D075.M.100.B.26.spl

+
+ + D075.M.100.B.E.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D076.M.100.B.26.spl

+
+ + D076.M.100.B.E.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D077.M.100.B.26.spl

+
+ + D077.M.100.B.H.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D078.M.100.B.26.spl

+
+ + D078.M.100.B.J.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D079.M.100.A.26.spl

+
+ + D079.M.100.A.I.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D080.M.100.A.26.spl

+
+ + D080.M.100.A.E.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D081.M.100.A.26.spl

+
+ + D081.M.100.A.D.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D082.M.100.A.26.spl

+
+ + D082.M.100.A.C.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D083.M.100.A.26.spl

+
+ + D083.M.100.A.G.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D084.M.100.A.26.spl

+
+ + D084.M.100.A.H.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D085.M.100.D.26.spl

+
+ + D085.M.100.D.H.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D086.M.100.D.26.spl

+
+ + D086.M.100.D.B.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D087.M.100.D.26.spl

+
+ + D087.M.100.D.B.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D089.M.100.D.26.spl

+
+ + D089.M.100.D.G.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D090.M.100.D.26.spl

+
+ + D090.M.100.D.J.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D091.M.100.C.26.spl

+
+ + D091.M.100.C.F.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D092.M.100.C.26.spl

+
+ + D092.M.100.C.A.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D093.M.100.C.26.spl

+
+ + D093.M.100.C.H.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D094.M.100.C.26.spl

+
+ + D094.M.100.C.D.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D095.M.100.C.26.spl

+
+ + D095.M.100.C.H.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D096.M.100.C.26.spl

+
+ + D096.M.100.C.G.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D097.M.100.E.26.spl

+
+ + D097.M.100.E.J.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D098.M.100.E.26.spl

+
+ + D098.M.100.E.A.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D099.M.100.E.26.spl

+
+ + D099.M.100.E.D.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D100.M.100.E.26.spl

+
+ + D100.M.100.E.F.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D101.M.100.E.26.spl

+
+ + D101.M.100.E.G.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D102.M.100.E.26.spl

+
+ + D102.M.100.E.D.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D103.M.100.G.26.spl

+
+ + D103.M.100.G.A.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D104.M.100.G.26.spl

+
+ + D104.M.100.G.C.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D105.M.100.G.26.spl

+
+ + D105.M.100.G.C.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D106.M.100.G.26.spl

+
+ + D106.M.100.G.F.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D107.M.100.G.26.spl

+
+ + D107.M.100.G.H.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D108.M.100.G.26.spl

+
+ + D108.M.100.G.I.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D109.M.100.H.26.spl

+
+ + D109.M.100.H.B.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D110.M.100.H.26.spl

+
+ + D110.M.100.H.C.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D111.M.100.H.26.spl

+
+ + D111.M.100.H.C.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D112.M.100.H.26.spl

+
+ + D112.M.100.H.E.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D113.M.100.H.26.spl

+
+ + D113.M.100.H.I.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D114.M.100.H.26.spl

+
+ + D114.M.100.H.F.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D115.M.100.I.26.spl

+
+ + D115.M.100.I.B.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D116.M.100.I.26.spl

+
+ + D116.M.100.I.B.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D117.M.100.I.26.spl

+
+ + D117.M.100.I.G.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D118.M.100.I.26.spl

+
+ + D118.M.100.I.E.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D119.M.100.I.26.spl

+
+ + D119.M.100.I.F.spl + +
+ + + DUC2002/docs-spl + + + DUC2002/docs-spl + + + + +

D120.M.100.I.26.spl

+
+ + D120.M.100.I.J.spl + +
+
diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D061.M.100.J.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D061.M.100.J.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..8f810d7ab5d6c4dc1344ca7d44b2eefe7964ff77 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D061.M.100.J.26.mini.be @@ -0,0 +1,64 @@ +gilbert|09/11/1988|nn +gilbert|)|punc +gilbert|hurricane|nn +swept|hurricane|subj +swept|dominican republic|toward +dominican republic|09/11/1988|on +alerted|defense|subj +coast|its|gen +populated|heavily|mod +coast|populated|mod +coast|south|mod +alerted|coast|obj +coast|prepare for|rel +prepare for|coast|subj +winds|high|mod +prepare for|winds|obj +rains|heavy|mod +winds|rains|conj +rains|and|punc +rains|high seas|conj +approaching|storm|subj +approaching|southeast|from +winds|sustained|mod +southeast|winds|with +mph|75|num +winds|mph|of +mph|gusting|pnmod +mph|92|num +gusting|mph|to +moved|packing|mod-before +packing|hurricane|subj +winds|110|num +winds|mph|nn +packing|winds|obj +winds|and|punc +rain|torrential|mod +winds|rain|conj +moved|hurricane|subj +city|capital|mod +moved|city|over +city|09/12/1988|on +city|skirting|after +skirting|hurricane|subj +skirting|puerto rico|obj +puerto rico|haiti|conj +haiti|and|punc +haiti|dominican republic|conj +swept|hurricane|subj +swept|jamaica|toward +jamaica|09/11/1988|on +winds|100-mile|nn +jamaica|winds|with +winds|and|punc +winds|officials|conj +officials|issued|vrel +issued|officials|obj1 +issued|warnings|obj2 +warnings|residents|to +coasts|southern|mod +residents|coasts|on +coasts|dominican republic|of +dominican republic|haiti|conj +haiti|and|punc +haiti|cuba|conj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D061.M.100.J.I.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D061.M.100.J.I.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..3007340667be934863fdd70713a962ae9dc67113 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D061.M.100.J.I.mini.be @@ -0,0 +1,57 @@ +gilbert|hurricane|nn +cut|gilbert|subj +swath|destructive|mod +cut|swath|obj1 +swath|caribbean|through +hurricane|third|post +cut|hurricane|obj2 +buffeted|1988|subj +coasts|southern|mod +buffeted|coasts|obj +coasts|puerto rico|of +puerto rico|virgin islands|appo +virgin islands|dominican|appo +republic|and|punc +five|cuba|nn +republic|five|conj +killed|republic|obj +killed|dominican republic|in +dominican republic|monday|on +hit|storm|subj +hit|jamaica|obj +force|its|gen +force|full|mod +jamaica|force|with +hit|killing|mod +killing|storm|subj +killing|19|obj +killing|and|punc +killing|causing|conj +causing|storm|subj +damage|extensive|mod +causing|damage|obj +hit|gilbert|subj +hit|resorts|obj +resorts|cancun|of +cancun|and|punc +cancun|cozumel|conj +yucatan|mexico|gen +cozumel|yucatan|on +peninsula|winds|with +mph|160|num +winds|mph|of +damage|extensive|mod +causing|damage|obj +headed|then|mod-before +headed|gilbert|subj +forecasters|mexico|nn +gulf|forecasters|of +remain|gulf|subj +remain|baffled|desc +became|gilbert|subj +intense|such|pre +became|intense|obj +storm|attaining|mod +barometric pressure|lowest|mod +attaining|barometric pressure|obj +attaining|ever|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D062.M.100.J.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D062.M.100.J.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..0be94230c58de06c322a726db06e684f5fc5b096 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D062.M.100.J.26.mini.be @@ -0,0 +1,56 @@ +homeowners|san francisco-area|mod +have|homeowners|subj +have|pay|fc +pay|homeowner|subj +pay|damage|for +earthquake|10/17/1989|gen +reap|earthquake|on +pockets|their own|gen +earthquake|pockets|out of +companies|while|nn +companies|insurance|nn +reap|companies|subj +benefits|long-term|mod +reap|benefits|obj +rates|higher|mod +benefits|rates|from +spokesmen|industry|nn +spokesmen|and|punc +spokesmen|analysts|conj +said|spokesmen|subj +said|10/17/1989|on +15 percent|10/18/1989|nn +15 percent|)|punc +15 percent|only|mod +15 percent|20 percent|to +homeowners|california|nn +20 percent|homeowners|of +have|15 percent|subj +insurance|earthquake|nn +have|insurance|obj +insurance|which|whn +requires|insurance|subj +requires|10 percent|obj +costs|$200|between +$200|$400|to +home|$100,000|nn +$400|home|for +spokesmen|industry|nn +insurers|10/19/1989|nn +insurers|)|punc +face|insurers|subj +face|prospect|obj +prospect|paying|of +paying|insurer|subj +paying|out|guest +paying|billions|obj +billions|dollars|of +dollars|damages|for +damages|caused|vrel +caused|damages|obj +caused|by|by-subj +earthquake|week|gen +earthquake|california|nn +caused|earthquake|by +pass|earthquakes|subj +went on|one|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D062.M.100.J.A.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D062.M.100.J.A.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..358fe99c1b38d01ef0ee9525f076a9fa678814a8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D062.M.100.J.A.mini.be @@ -0,0 +1,48 @@ +earthquake|california|nn +earthquake|oct 17 , 1989|of +caused|earthquake|subj +damage|extensive|mod +caused|damage|obj +damage|heavy|despite +losses|insurance|nn +stocks|insurance company|nn +posted|stocks|subj +posted|gains|obj +bet|investors|nn +gains|bet|as +rates|insurance|nn +increases|rates|in +rates|producing|rel +producing|rate|subj +increase|long-term|mod +producing|increase|obj +increase|profits|in +profits|washington|in +appeared|white house|subj +anxious|show|fc +responsiveness|its|gen +show|responsiveness|obj +disaster|sacramento|in +governor|deukmejian|person +called|governor|subj +session|special|mod +called|session|obj +legislature|deal with|rel +deal with|legislature|subj +critics|crisis|nn +deal with|critics|obj +accused|legislature|subj +accused|him|obj +blaming|legislature|subj +blaming|others|obj +others|collapse|for +get on|reconstruction|with +reconstruction|and|punc +increase|temporary|mod +reconstruction|increase|conj +tax|gasoline|nn +hundreds|thousands|of +thousands|commuters|of +get|hundreds|subj +get|work|mod +work|hundreds|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D063.M.100.J.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D063.M.100.J.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..45a9696b8bdc674e944ce4d591bbbf4cbe7e672b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D063.M.100.J.26.mini.be @@ -0,0 +1,60 @@ +bombing|ira|nn +bombing|that|whn +killed|bombing|subj +men|10|num +killed|men|obj +killed|and|punc +killed|blew|conj +blew|bombing|subj +blew|apart|guest +blew|building|obj +building|royal marines music school|at +outraged|bombing|subj +outraged|britons|obj +outraged|and|punc +outraged|stirred|conj +stirred|bombing|subj +stirred|recriminations|obj +standards|safety|nn +recriminations|standards|over +standards|school|at +irish republican army|outlawed|mod +irish republican army|engaged|vrel +engaged|irish republican army|obj +campaign|20-year-old|mod +engaged|campaign|in +campaign|drive|rel +drive|campaign|subj +drive|british|obj +british|province|from +province|northern ireland|of +drive|claimed|mod +claimed|responsibility|subj +responsibility|telephone call|in +telephone call|ireland international|to +agency|dublin|nn +agency|news|nn +members|09/23/1989|nn +members|)|punc +members|family|nn +members|09/23/1989|on +members|grieved|vrel +grieved|their|for +slain|members|subj +slain|loved ones|obj +slain|and|punc +slain|criticized|conj +criticized|members|subj +arrangements|security|nn +criticized|arrangements|obj +arrangements|royal marines music school|at +royal marines music school|where|wha +attack|ira|nn +attack|terrorist|mod +killed|attack|subj +musicians|10|num +musicians|military|mod +killed|musicians|obj +security|barracks|at +abysmal|absolutely|mod +was|abysmal|pred diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D063.M.100.J.E.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D063.M.100.J.E.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..8c1a7e9fde9a2efb063842ed6a62960982665e9b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D063.M.100.J.E.mini.be @@ -0,0 +1,55 @@ +bomb|irish republican army|nn +destroyed|bomb|subj +belonging|barracks|nn +destroyed|belonging|obj +belonging|royal marines|to +school|music|nn +school|deal|in +deal|friday|on +killed|blast|subj +killed|10|obj +killed|and|punc +killed|injured|conj +injured|blast|subj +others|22|num +injured|others|obj +neighbors|damaged|mod +damaged|or|punc +damaged|destroyed|conj +neighbors|neighboring|mod +neighbors|houses|nn +neighbors|and|punc +politicians|opposition|nn +neighbors|politicians|conj +security|lax|mod +firms|private|mod +firms|security|nn +use|firms|of +firms|this|at +this|and|punc +bases|29|num +bases|other|mod +this|bases|conj +considered|britain|subj +risk|low|mod +be|risk|pred +considered|said|fc +said|ira|subj +said|was|fc +was|in|pred +was|response|in +response|speech|to +thatcher|prime minister|title +thatcher|ulster defense regiment|to +calling|speech|obj1 +act|"|punc +calling|act|desc +is|latest|pred +latest|series|of +series|attacks|of +is|as|mod +as|seeks|comp1 +seeks|ira|subj +seeks|withdrawal|obj +withdrawal|british|of +forces|northern ireland|from diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D064.M.100.J.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D064.M.100.J.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..233d663cda336543d4cb84e5c48d409ba0a12d8f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D064.M.100.J.26.mini.be @@ -0,0 +1,67 @@ +world|communist|mod +gets|world|subj +'s|its|gen +'s|first|post +gets|'s|obj +week|next|post +gets|week|mod +wondering|here|mod-before +wondering|people|subj +wondering|whether|c +hamburgers|its|gen +hamburgers|american|mod +be|as|pred +treat|local|mod +treat|fast-food|mod +popular|treat|as +treat|pljeskavica|appo +'s|04/12/1988|nn +'s|)|punc +flourishing|'s|subj +flourishing|in|guest +flourishing|11|in +nations|other|mod +flourishing|nations|obj +nations|region|in +hamburgers|10/08/1990|nn +hamburgers|)|punc +hamburgers|'s|nn +hamburgers|fries|conj +fries|and|punc +arches|golden|mod +fries|arches|conj +came to|hamburgers|subj +came to|china|obj +china|10/08/1990|on +came to|when|wha +chain|fast-food|mod +opened|chain|subj +restaurant|its|gen +restaurant|first|post +opened|restaurant|obj +restaurant|nation|in +nation|famed|pnmod +cuisine|its|gen +cuisine|distinctive|mod +famed|cuisine|for +hundreds|10/08/1990|nn +hundreds|)|punc +hundreds|chinese|of +waited|hundreds|subj +waited|hours|for +waited|restaurant|outside +restaurant|shenzhen|in +town|economic|mod +town|boom|nn +shenzhen|town|conj +hong kong|near|mod +fries|for|mod-before +taste|their|gen +taste|first|post +fries|taste|for +hamburger|'s|nn +taste|hamburger|of +town|fries|rel +fries|hong kong|subj +town|or|punc +town|shake|conj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D064.M.100.J.B.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D064.M.100.J.B.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..71bc1db3d0aaa51dc7c456f695164c5a386bc58e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D064.M.100.J.B.mini.be @@ -0,0 +1,49 @@ +economy|asia|gen +economy|fastest-growing|mod +capitalize on|economy|obj +economy|opened|rel +opened|'s|subj +outlet|its|gen +outlet|first|post +opened|outlet|obj +countries|communist|mod +south korea moving|countries|into +march 24 , 1988|opened|rel +opened|it|subj +belgrade|compete|rel +compete|there|subj +favored|locally|mod +pljeskavica|favored|mod +pljeskavica|"|punc +compete|pljeskavica|with +sandwich|onion|nn +reaction|initial|mod +was|favorable|pred +years|two|amount-value +later|years|amount-value +was|later|mod +largest|its|gen +outlet|date|rel +date|outlet|subj +thousands|moscow|nn +date|thousands|in +lined up|outlet|subj +day|opening|mod +lined up|day|for +day|record|pnmod +meals|30,000|num +record|meals|of +registers|27|num +registers|cash|nn +served|registers|at +registers|opened|rel +opened|'s|subj +opened|china|in +china|where|whn +restaurants|culinary art|nn +restaurants|'s|nn +restaurants|worldwide|mod +are|joint ventures|pred +joint ventures|locals|with +country|which|in +operate|they|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D065.M.100.J.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D065.M.100.J.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..f1b86bcd022e36224410f36b5032a8684e44c148 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D065.M.100.J.26.mini.be @@ -0,0 +1,66 @@ +is|likely|pred +man|`|punc +man|`|punc +be|man|pred +'s|outside|mod-before +outside|'|punc +outside|'|punc +outside|george bush|in +'s|white house|pred +white house|following|rel +following|white house|subj +candidacy|vice|nn +candidacy|presidential|mod +following|candidacy|obj +candidacy|that|whn +began|candidacy|subj +began|furor|in +began|but|punc +began|settled|conj +settled|candidacy|subj +say|obscurity|into +settled|say|fc +say|experts|subj +is|campaign|in +towns|small|nn +campaign|towns|to +towns|and|punc +areas|safe|mod +areas|gop|nn +towns|areas|conj +quayle|vice president|as +is|likely|pred +is|given|mod +role|traditional|mod +role|ceremonial|mod +given|role|obj2 +gatherings|political|mod +going|gatherings|to +gatherings|and|punc +funerals|state|nn +gatherings|funerals|conj +gatherings|_|punc +gatherings|rather|appo-mod +role|advisory|mod +rather|role|than +role|that|c +walter mondale|and|punc +bush|even|mod +walter mondale|bush|conj +had|role|obj +had|walter mondale|subj +feel|scholars|nn +gatherings|feel|appo +year|11/12/1989|nn +year|)|punc +year|one|amount-value +election|his|gen +year|election|after +achieved|dan quayle|subj +achieved|all|obj +wanted|ever|mod-before +all|wanted|rel +wanted|all|obj +wanted|he|subj +become|he|subj +become|dull|desc diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D065.M.100.J.F.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D065.M.100.J.F.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..b0ef044477e1d9b059644da1daa028876af7f280 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D065.M.100.J.F.mini.be @@ -0,0 +1,49 @@ +choice|george bush|gen +choice|dan quayle|of +running mate|his|gen +dan quayle|running mate|as +surprised|choice|subj +surprised|most|obj +observers|political|mod +supported|quickly|mod +supported|many|by +fellow|quayle|gen +many|fellow|of +senators|republican|mod +senators|quayle|person +lightweight|and|punc +lightweight|questions|conj +service|his|gen +service|military|nn +resume|service|about +service|and|punc +service|errors|conj +errors|his|in +resume|official|subj +resume|his|obj +attributes|main|mod +loyalty|party|nn +were|loyalty|pred +loyalty|and|punc +loyalty|identification|conj +family|devoted|mod +identification|family|as +quayle|man|nn +contributed|quayle|subj +contributed|little|mod +little|campaign|to +()|elected|after +president|political|mod +president|scene|nn +disappeared|president|from +president|bush|person +support|voice|nn +continued|support|to +confidence|quayle|in +friends|his|gen +town|his|gen +town|home|nn +especially|town|in +town|called|vrel +called|town|obj1 +called|him|desc diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D066.M.100.J.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D066.M.100.J.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..6b4ab08215d7bde8c4b1d141b5a9d2ecb5382e98 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D066.M.100.J.26.mini.be @@ -0,0 +1,59 @@ +03/23/1989|)|punc +03/23/1989|paying|rel +paying|03/23/1989|subj +calls|unexpected|mod +paying|calls|obj +calls|stores|on +is|one|pred +walton|way|nn +one|kept|rel +kept|one|obj +kept|walton|subj +touch|close|mod +kept|touch|in +goings-on|everyday|mod +touch|goings-on|with +sam walton|wal-mart|nn +sam walton|founder|nn +pitched in|sam walton|subj +pitched in|help|mod +help|sam walton|subj +clerks|check-out|nn +help|clerks|obj +store|his|gen +clerks|store|at +city|florida panhandle|nn +store|city|in +help|when|wha +glitch|electronic|mod +shut|glitch|subj +shut|down|guest +registers|cash|nn +shut|registers|obj +years|05/07/1990|nn +years|)|punc +years|forty|amount-value +years|sam walton|after +hung|first|mod-before +hung|years|subj +hung|out|guest +shingle|his|gen +hung|shingle|obj +&10 will reopen to show how a little rural storekeeper built a discount retail empire.|walton|gen +&10 will reopen to show how a little rural storekeeper built a discount retail empire.|5|num +shingle|&10 will reopen to show how a little rural storekeeper built a discount retail empire.|appo +made|)|punc +made|09/03/1992|subj +america|in|nn +story|my|gen +story|sam walton doubleday|by +being|22.50 269|nn +being|pages|nn +hero|american|mod +hero|folk|mod +assignment|tricky|mod +is|assignment|pred +is|ross perot|as +ross perot|found|vrel +found|ross perot|obj +found|out|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D066.M.100.J.I.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D066.M.100.J.I.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..5cc2a9665af0ee6b841469421317ca159f1f5820 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D066.M.100.J.I.mini.be @@ -0,0 +1,63 @@ +sam walton|who|whn +died|sam walton|subj +died|april 1992|in +revolutionized|sam walton|subj +born|discount|nn +born|retailing|nn +revolutionized|born|obj +became|he|subj +man|richest|mod +became|man|obj +man|america|in +took|he|subj +shopping|discount|nn +took|shopping|obj +america|founding|rel +founding|america|subj +founding|wal-mart discount city|obj +wal-mart discount city|which|whn +became|wal-mart discount city|subj +became|wal-mart|obj +'s|largest|pred +sam|1992|num +retailer|sam|by +was|frugal|pred +frugal|and|punc +frugal|homespun|conj +homespun|and|punc +homespun|used|conj +visits|test|to +customers|and|punc +customers|employees|conj +employees|preserve|to +legacy|his|gen +legacy|personal|mod +opened|he|subj +opened|wal-mart|obj +center|'|punc +center|visitors|subj +center|and|punc +center|wrote|conj +wrote|visitors|subj +autobiography|his|gen +wrote|autobiography|obj +wrote|filling|mod +filling|visitor|subj +filling|it|obj +with|"|punc +anecdotes|good|mod +anecdotes|ole|nn +anecdotes|"|punc +filling|anecdotes|with +filling|1994|mod +highlighted|book|subj +ability|his|gen +highlighted|ability|obj +management|chain|gen +management|responsive|mod +impact|chain|gen +stores|mom-and-pop|nn +impact|stores|on +stores|and|punc +position|anti-union|mod +stores|position|conj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D067.M.100.F.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D067.M.100.F.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..c1ec33333ed236fd4890b4311d2827a7a4e6b633 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D067.M.100.F.26.mini.be @@ -0,0 +1,73 @@ +andrew|08/25/1992|nn +andrew|)|punc +andrew|hurricane|nn +cities|08/25/1992|nn +cities|)|punc +cities|us|nn +cities|gulf of mexico|along +gulf of mexico|alabama|from +texas|eastern|mod +alabama|texas|to +were|on|pred +watch|storm|nn +were|watch|on +watch|night|on +night|08/24/1992|of +west|hurricane andrew|nn +west|headed|mod +night|west|as +west|sweeping|after +sweeping|city|subj +florida|southern|mod +sweeping|florida|across +sweeping|causing|mod +eight|at least|num-mod +deaths|eight|nn +causing|deaths|obj +deaths|and|punc +damage|severe|mod +damage|property|nn +deaths|damage|conj +hurricane andrew|08/27/1992|nn +hurricane andrew|)|punc +hurricane andrew|claimed|vrel +claimed|hurricane andrew|obj +disaster|costliest|mod +disaster|natural|mod +be|disaster|pred +history|us|nn +disaster|history|in +be|08/26/1992|on +smashed|hurricane andrew|subj +way|its|gen +smashed|way|mod +smashed|state|through +state|louisiana|of +smashed|inflicting|mod +inflicting|hurricane andrew|subj +damage|severe|mod +inflicting|damage|obj +communities|rural|mod +damage|communities|on +inflicting|but|punc +missing|narrowly|amod +inflicting|missing|conj +missing|hurricane andrew|subj +city|low-lying|mod +missing|city|obj +city|new orleans|of +means|what|obj +means|this|subj +is|that|c +is|able|pred +is|pass on|mod +pass on|ga|subj +losses|its|gen +pass on|losses|obj +reinsurers|external|mod +losses|reinsurers|to +pass on|once|mod +threshold|certain|mod +threshold|claims|nn +once|breached|comp1 +breached|threshold|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D067.M.100.F.I.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D067.M.100.F.I.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..e0e94fcfbe2ea46ba3d103e15d3b5304990edea7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D067.M.100.F.I.mini.be @@ -0,0 +1,63 @@ +damage|hurricane andrew|from +estimated|damage|obj +estimated|$20 billion|at +estimated|$8 billion|with +insurers|insurance|nn +insurers|american|mod +take|insurers|subj +take|brunt|obj +brunt|claims|of +claims|but|punc +claims|general|conj +general|accident|person +insurer|british|mod +leading|insurer|obj +claims|rise|rel +rise|claim|subj +rise|high|as +andrew|$40 million|nn +high|andrew|as +tore|claims|subj +florida|southern|mod +water|florida|through +outages|15|num +outages|dead|mod +outages|power|mod +leaving|outages|obj +leaving|and|punc +leaving|polluted|conj +water|his|in +homestead|wake|nn +homestead|and|punc +base|nearby|mod +base|air force|nn +homestead|base|conj +dade county|flattened|mod +dade county|in|nn +were|dade county|pred +dade county|250,000|num +andrew|homeless|mod +are|andrew|pred +smashed|next|mod-before +andrew|smashed|vrel +smashed|andrew|obj +smashed|louisiana|into +smashed|killing|mod +killing|people|subj +killing|two|obj +two|missed|rel +missed|two|obj +missed|it|subj +refineries|important|mod +refineries|oil|nn +refineries|but|punc +crops|damaged|mod +refineries|crops|conj +crops|and|punc +crops|oyster|conj +oyster|and|punc +businesses|alligator|nn +oyster|businesses|conj +sustained|dollar|subj +assault|similar|mod +sustained|assault|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D068.M.100.F.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D068.M.100.F.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..f1ce04c90b55905f4a190752e27fe51e6557460d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D068.M.100.F.26.mini.be @@ -0,0 +1,53 @@ +checkpoint charlie|06/21/1990|nn +checkpoint charlie|)|punc +border|famed|mod +border|allied|mod +checkpoint charlie|border|appo +border|crossing|rel +crossing|border|subj +wall|berlin|nn +crossing|wall|by +was|hauled away|pred +hauled away|06/22/1990|on +was|outlined|pred +minister|soviet|nn +minister|foreign|mod +outlined|minister|by +minister|eduard shevardnadze|person +talks|international|mod +minister|talks|during +talks|east berlin|in +future|strategic|mod +east berlin|future|on +germany|united|mod +future|germany|of +checkpoint charlie|06/22/1990|nn +checkpoint charlie|)|punc +post|berlin wall|nn +post|border|nn +checkpoint charlie|post|appo +post|that|whn +symbolized|post|subj +symbolized|cold war|obj +hoisted|checkpoint charlie|obj +hoisted|history|into +history|06/22/1990|on +went up|checkpoint charlie|subj +went up|1961|in +went up|middle|in +middle|friedrichstrasse boulevard|of +went up|after|mod +east germany|communist|nn +after|erected|comp1 +erected|east germany|subj +wall|berlin|nn +erected|wall|obj +wall|choke off|rel +choke off|wall|subj +choke off|flood|obj +flood|refugees|of +refugees|enclave|to +enclave|west berlin|of +took|patrick gainey|subj +took|pictures|obj +pictures|u.s. army|for diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D068.M.100.F.A.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D068.M.100.F.A.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..a770508fb0ae40b7a77f68866f5de4547e87a858 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D068.M.100.F.A.mini.be @@ -0,0 +1,49 @@ +checkpoint charlie|june 22 , 1990|nn +border|allied|mod +border|crossing|rel +crossing|border|subj +side|west|nn +crossing|side|on +wall|berlin|nn +truck|flatbed|mod +crane|truck|onto +removal|symbol|of +was|part|pred +ceremony|elaborate|mod +part|ceremony|of +ceremony|attended|vrel +attended|ceremony|obj +attended|by|by-subj +diplomats|top|mod +attended|diplomats|by +germanys|two|nn +germanys|and|punc +allies|four|nn +allies|world war ii|nn +germanys|allies|conj +allies|appropriate|pnmod +appropriate|occasion|to +occasion|soviet|appo +minister|foreign|mod +minister|shevardnadze|person +minister|backed|vrel +backed|minister|obj +backed|away|mod +opposition|all-out|mod +away|opposition|from +opposition|united|rel +united|opposition|subj +'s|membership|pred +membership|nato|in +'s|suggesting|mod +suggesting|germany|subj +suggesting|that|c +take place|this|subj +period|five-year|nn +period|waiting|nn +soviet|all|pre +soviet|and|punc +troops|u.s.|nn +soviet|troops|conj +leave|which|obj +leave|soviet|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D069.M.100.F.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D069.M.100.F.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..b4c4efd52b127874de7cd226bd283f5fb3f0341b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D069.M.100.F.26.mini.be @@ -0,0 +1,64 @@ +emigration|mass|nn +emigration|thousands|of +germans|disaffected|mod +germans|east|nn +thousands|germans|of +rekindled|emigration|subj +talk|reunification|nn +rekindled|talk|obj +talk|west germany|in +west germany|where|wha +plan|legislators|subj +plan|begin|fc +begin|legislator|subj +begin|exploring|mod +exploring|possiblity|obj +possiblity|reuniting|of +germanys|two|nn +reuniting|germanys|obj +chancellor|12/02/1989|nn +chancellor|)|punc +chancellor|helmut kohl|person +assured|chancellor|subj +visiting|chancellor|subj +senators|u.s.|nn +visiting|senators|obj +senators|eve|on +summit|superpower|nn +eve|summit|of +will|not|neg +assured|forsake|fc +forsake|west germany|subj +forsake|nato|obj +nato|reunite|rel +reunite|nato|subj +reunite|east germany|with +one|senators|of +said|one|subj +said|12/01/1989|on +there|12/02/1989|nn +there|)|punc +growing|there|subj +growing|discussion|obj +discussion|west germany|in +reunification|german|mod +west germany|reunification|about +reunification|result|as +result|sweeping|of +sweeping|there|subj +reforms|social|mod +social|and|punc +social|political|conj +sweeping|reforms|obj +reforms|underway|pnmod +underway|east germany|in +said|he|subj +reunification|german|mod +go ahead|`|punc +go ahead|`|punc +said|go ahead|fc +go ahead|reunification|subj +go ahead|'|punc +go ahead|'|punc +go ahead|reunification|of +reunification|europe|of diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D069.M.100.F.C.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D069.M.100.F.C.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..95b4520f0a5f69bb68f5d8afb7841bed5643ffdf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D069.M.100.F.C.mini.be @@ -0,0 +1,42 @@ +was|near|pred +was|chaos|near +chaos|end|by +economic conditions|1989|num +economic conditions|woeful|mod +end|economic conditions|of +demonstrations|massive|mod +reform|democratic|mod +demonstrations|reform|for +swept|demonstrations|subj +swept|nation|obj1 +swept|hard-line|obj2 +government|communist|mod +admitted|government|subj +failure|its|gen +admitted|failure|obj +admitted|giving|mod +giving|government|subj +impetus|strong|mod +giving|impetus|obj +impetus|german|to +movement|reunification|nn +endorsed|soviets|subj +endorsed|it|obj +endorsed|february|in +endorsed|world war ii allies|as +unification|later|mod +was|now|pred +economically|and|punc +economically|politically|conj +germany|powerful|mod +disturbed|germany|subj +disturbed|many|obj +poles|soviets|conj +soviets|and|punc +jewry|world|nn +soviets|jewry|conj +jewry|concerns|despite +threat|lesser|mod +accepted|threat|as +east germany|chaotic|mod +threat|east germany|than diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D070.M.100.F.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D070.M.100.F.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..243aca0234b1799501997fc93e2bff30d7d11fba --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D070.M.100.F.26.mini.be @@ -0,0 +1,64 @@ +leader|ousted east german|nn +leader|erich honecker|person +leader|who|whn +indicted|leader|obj +indicted|high treason|for +arrested|leader|obj +morning|01/29/1990|nn +arrested|morning|on +arrested|release|upon +release|hospital|from +arrested|and|punc +arrested|taken to|conj +taken to|leader|subj +taken to|prison|obj +adn|official|mod +adn|news agency|nn +said|adn|subj +honecker|01/29/1990|nn +honecker|)|punc +leader|aging|mod +leader|hard-line|mod +leader|stalinist|nn +leader|who|whn +ruled|leader|subj +ruled|east germany|obj +years|18|amount-value +east germany|years|for +ouster|his|gen +years|ouster|until +ouster|oct 18|on +declared|previously|guest +declared|leader|obj +declared|too|mod +declared|ill|mod +declared|withstand|mod +withstand|leader|subj +withstand|imprisonment|obj +members|01/29/1990|nn +members|)|punc +members|eleven|nn +members|honecker|of +ousted|members|subj +ousted|politburo|obj +are|already|amod +are|in|pred +are|prison|in +prison|awaiting|rel +awaiting|prison|subj +awaiting|trial|obj +leader|ousted east german|nn +leader|erich honecker|person +will|not|neg +stand|leader|subj +stand|trial|obj +trial|east germany|in +east germany|as|mod +stand|as|mod +communist|formerly|mod +country|communist|mod +as|exists|comp1 +exists|country|subj +newspaper|west german|mod +reported|newspaper|subj +exists|reported|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D070.M.100.F.D.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D070.M.100.F.D.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..c0a73c8f70bc883b939d8037a0227b4998676a73 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D070.M.100.F.D.mini.be @@ -0,0 +1,51 @@ +head|former|mod +erich honecker|head|appo +head|east germany|of +died|erich honecker|subj +died|29 may 1994|on +died|santiago chile|in +living|he|subj +living|there|mod +release|his|gen +living|release|since +release|prison|from +honecker|1993|num +prison|honecker|in +honecker|and|punc +regime|his|gen +honecker|regime|conj +demonstrators|pro-democracy|mod +demonstrators|leading|pnmod +leading|eventual|to +unification|east|of +east|and|punc +east|west germany he|conj +east|along|appo-mod +along|members|with +members|his|of +east|politburo|appo +charges|treason|with +treason|corruption|conj +corruption|and|punc +corruption|abuse|conj +honecker|power|mod +abuse|honecker|of +charged|also|mod +charged|manslaughter|with +orders|his|gen +stemming from|orders|obj +orders|which|whn +resulted|orders|subj +resulted|deaths|in +germans|east|nn +germans|attempting|rel +attempting|german|subj +attempting|flee|fc +flee|to|guest +flee|west honecker|to +east germany|ruled|mod +flee|east germany|obj +east germany|18|for +()|using|by +repression|extreme|mod +using|repression|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D071.M.100.F.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D071.M.100.F.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..ab06f607edf123599bda55729bd3327c7958bf32 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D071.M.100.F.26.mini.be @@ -0,0 +1,58 @@ +dogs|03/10/1988|nn +dogs|)|punc +dogs|two|nn +be|specific|pred +dog|city|gen +dog|top|mod +dog|police|nn +specific|dog|conj +dog|and|punc +dog|nation|gen +dog|top|mod +dog|show|nn +dog|dog|conj +named|pomeranian|obj +named|best|mod +best|show|in +westminister kennel club show|prestigious|mod +show|westminister kennel club show|at +westminister kennel club show|madison square garden|in +madison square garden|last|vrel +last|madison square garden|obj +last|month|mod +02/04/1989|)|punc +02/04/1989|more|pnmod +dogs|2,500|num +more|dogs|than +compete|representing|mod-before +representing|02/04/1989|subj +breeds|138|num +representing|breeds|obj +compete|02/04/1989|subj +compete|prizes|for +all|02/05/1989|gen +breed dog show|and|punc +trials|obedience|nn +breed dog show|trials|conj +trials|los angeles sports arena|at +relay|scent|nn +jump|relay|in +teams|dogs|of +jump|teams|subj +jump|hurdles|over +jump|and|punc +jump|locate|conj +locate|teams|subj +locate|jackets|obj +owners|their|gen +jackets|owners|of +be|also|amod +be|demonstration|pred +herd|dogs|subj +animals|farm|nn +herd|animals|obj +show|02/04/1989|nn +show|)|punc +are|hours|mod-before +are|8 a.m.|pred +are|9 p.m.|to diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D071.M.100.F.D.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D071.M.100.F.D.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..3f2944c66121bb8ebe612c7e83954b15ac6faeae --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D071.M.100.F.D.mini.be @@ -0,0 +1,39 @@ +competition|dog|nn +events|national|mod +national|and|punc +national|international|conj +competition|events|in +is|entertainment|pred +competitions|business|mod +attract|competitions|subj +contestants|numerous|mod +attract|contestants|obj +contestants|and|punc +contestants|visitors|conj +visitors|israel|in +israel|dog|appo +outshone|briefly|mod-before +outshone|contest|subj +election|general|nn +outshone|election|obj +known|uprising|subj +dog|one|nn +owners|dog|of +embroiled|owners|obj +suit|law|nn +embroiled|suit|in +over|whether|c +retired|dog|obj +artist|manhattan|nn +weimaraners|artist|gen +served as|weimaraners|subj +served as|models|obj +work|his|gen +models|work|for +be|sesame street dog|on +be|lucrative|pred +is|high|pred +are|long|pred +are|bill mcfadden|according to +handler|professional|mod +handler|dog|nn diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D072.M.100.F.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D072.M.100.F.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..4ba4245a59371a6c086e68d9152e687a0fef5c3e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D072.M.100.F.26.mini.be @@ -0,0 +1,63 @@ +leonard bernstein|11/15/1988|nn +leonard bernstein|)|punc +birthday|leonard bernstein|gen +birthday|70th|mod +leonard bernstein|birthday|whn +birthday|august|in +marked|birthday|obj +marked|gala|with +gala|tanglewood|at +returned to|leonard bernstein|subj +returned to|carnegie hall|obj +years|new york|nn +years|philharmonic|mod +years|45|amount-value +carnegie hall|years|with +returned to|after|mod +after|made|comp1 +made|he|subj +conducting|his|gen +conducting|triumphant|mod +debut|conducting|subj +debut|there|mod +debut|orchestra|with +artur rodzinski|mrs.|title +intermission|artur rodzinski|conj +husband|artur rodzinski|gen +husband|late|mod +artur rodzinski|husband|whn +music|philharmonic|mod +director|music|gen +was|director|pred +director|1943|in +artur rodzinski|and|punc +bernstein|hired|mod +artur rodzinski|bernstein|conj +assistant|his|gen +bernstein|assistant|as +recordings|10/19/1990|nn +recordings|)|punc +recordings|leonard bernstein|by +leonard bernstein|one|appo +documented|most|mod +conductors|documented|mod +one|conductors|of +conductors|history|in +undergo|recordings|subj +programs|expanded|mod +programs|release|nn +undergo|programs|obj +programs|following|rel +following|program|subj +death|conductor|gen +following|death|obj +death|10/21/1990|on +following|said|mod +said|representatives|subj +companies|recording|nn +representatives|companies|of +companies|controlling|rel +controlling|company|subj +bernstein|late|mod +catalogues|bernstein|gen +controlling|catalogues|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D072.M.100.F.J.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D072.M.100.F.J.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..eaff892449b21202f50be42fd4685e79d1189e09 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D072.M.100.F.J.mini.be @@ -0,0 +1,47 @@ +acclaimed|internationally|mod-before +beloved|acclaimed|vrel +acclaimed|beloved|obj1 +acclaimed|maestro|obj2 +died|beloved|subj +died|october 14th|on +failure|lung|nn +72|failure|of +failure|days|within +72|new york philharmonic|appo +47-year|its|gen +tribute|47-year|to +conductor|brilliant|mod +association|conductor|with +played|association|subj +program|special|mod +played|program|obj +honored|also|mod-before +honored|broadway|subj +honored|bernstein|obj +bernstein|composer|appo +of|"|punc +composer|west side story|of +show|special|mod +accelerate|show|with +theater|majestic|mod +show|theater|at +companies|record|mod +accelerate|companies|subj +recordings|bernstein|nn +releases|recordings|of +ill|though|mod +participate|ill|mod-before +ill|time|for +participate|bernstein|subj +celebrations|his|gen +celebrations|70th|mod +celebrations|birthday|nn +participate|celebrations|in +tanglewood|and|punc +hall|carnegie|nn +tanglewood|hall|conj +anniversary|45th|nn +occurred|anniversary|on +anniversary|his|of +debut|directorial|mod +debut|philharmonic|with diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D073.M.100.B.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D073.M.100.B.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..dd89b9cf55af31c5edfe4805d26b4b1dd2e0199d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D073.M.100.B.26.mini.be @@ -0,0 +1,63 @@ +think|i|subj +think|see|fc +see|we|subj +eruption|major|mod +eruption|explosive|mod +see|eruption|obj +see|time|mod +see|"|punc +see|said|mod +said|peter lipman|subj +peter lipman|volcanologist|appo +office|u.s. geological survey|nn +volcanologist|office|at +office|menlo park|in +eruptions|three|nn +eruptions|major|mod +eruptions|new|mod +rocked|eruptions|subj +rocked|mount pinatubo|obj +mount pinatubo|late|pnmod +night|06/12/1991|nn +late|night|on +night|and|punc +today|early|mod +night|today|conj +rocked|forcing|mod +forcing|eruption|subj +evacuation|emergency|mod +forcing|evacuation|obj +evacuation|clark air base|of +forcing|and|punc +forcing|increasing|conj +increasing|eruption|subj +increasing|fears|obj +more|even|mod +violent|more|mod +explosions|violent|mod +fears|explosions|of +volcano|long-dormant|mod +explosions|volcano|from +volcano|days|in +increasing|ahead|mod +rumbled|mount pinatubo|subj +rumbled|06/15/1991|on +rumbled|explosions|with +explosions|that|whn +hurled|explosions|subj +hurled|ash|obj +ash|and|punc +miles|gas|nn +12|more than|num-mod +miles|12|amount-value +ash|miles|conj +hurled|high|mod +brought|typhoon|subj +rain|heavy|mod +brought|rain|obj +rain|that|whn +unleash|rain|subj +unleash|tons|obj +tons|debris|of +slopes|jagged|mod +debris|slopes|from diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D073.M.100.B.J.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D073.M.100.B.J.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..6cda7c59f5eba05166f547011fbe891968ba1c3f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D073.M.100.B.J.mini.be @@ -0,0 +1,47 @@ +began|pinatubo|subj +began|erupting|mod +erupting|pinatubo|subj +erupting|about two weeks ago|mod +centuries|six|nn +erupting|centuries|after +located|dormancy|nn +centuries|located|of +miles|10|amount-value +miles|clark afb|from +become|explosions|subj +severe|increasingly|mod +become|severe|desc +denied|u.s.|subj +denied|possibility|obj +contamination|radioactive|mod +possibility|contamination|of +denied|if|c +debris|volcanic|mod +hits|debris|subj +depots|weapons|nn +depots|clark afb|at +clark afb|which|whn +evacuated|clark afb|obj +evacuated|week ago|mod +four|at least|num-mod +eruptions|84,000|about +rains|evacuated|mod +rains|heavy|mod +raised|today|mod-before +raised|rains|subj +raised|fears|obj +mudflows|catastrophic|mod +fears|mudflows|of +secretary|foreign|mod +effect|secretary|according to +secretary|manglapus|person +should|not|neg +effect|eruptions|subj +effect|stalled|obj +talks|u.s.|with +clark|new|mod +u.s.|clark|on +clark|and|punc +agreements|subic|nn +agreements|lease|nn +clark|agreements|conj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D074.M.100.B.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D074.M.100.B.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..b36bf12aa6af272c5bc4ba68f1ff19606a78941e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D074.M.100.B.26.mini.be @@ -0,0 +1,67 @@ +while|09/11/1991|nn +while|)|punc +clarence thomas|14-member|mod +clarence thomas|senate judiciary committee presses|nn +clarence thomas|explain|rel +explain|clarence thomas|subj +qualifications|his|gen +explain|qualifications|obj +qualifications|supreme court|for +senators|100|num +are|under|pred +pressure|mounting|nn +are|pressure|under +pressure|explain|rel +explain|pressure|subj +views|their|gen +explain|views|obj +views|judge|of +check|)|punc +check|(|punc +check|09/11/1991|subj +check|)|punc +300|about|num-mod +pastors|300|nn +pastors|black|mod +check|pastors|obj +check|representing|mod +representing|09/11/1991|subj +representing|congregations|obj +congregations|totaling|rel +totaling|congregation|subj +1 million|more than|num-mod +churchgoers|1 million|nn +totaling|churchgoers|obj +states|30|num +churchgoers|states|in +totaling|held|conj +held|congregation|subj +held|rally|obj +rally|steps|on +steps|supreme court|of +held|and|punc +lobbied|then|amod +held|lobbied|conj +lobbied|congregation|subj +senators|their|gen +lobbied|senators|obj +senators|support|rel +support|senator|subj +support|confirmation|obj +nominee|president|gen +president|bush|person +nominee|supreme court|nn +confirmation|nominee|of +frustrated democrats|09/12/1991|nn +frustrated democrats|)|punc +frustrated democrats|senate judiciary committee|on +say|frustrated democrats|subj +clarence thomas|supreme court|nn +clarence thomas|nominee|nn +say|is|fc +witness|evasive|mod +is|witness|pred +groundswell|opposition|of +confirmation|his|gen +opposition|confirmation|to +emerging|groundswell|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D074.M.100.B.A.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D074.M.100.B.A.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..bfab346b8d9502179da6ec5159d784fd9baeadef --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D074.M.100.B.A.mini.be @@ -0,0 +1,55 @@ +questioned|senate judiciary committee|subj +questioned|supreme|obj +clarence thomas thomas|court|nn +clarence thomas thomas|nominee|nn +refusal|clarence thomas thomas|gen +answer|refusal|subj +questions|certain|mod +answer|questions|obj +complaints|but|punc +complaints|it|conj +appeared|complaints|subj +appeared|early|mod +approve|that|on +approve|committee|subj +nomination|end|by +end|questioning|of +vote|affirmative|mod +vote|10-4|of +10-4|or|punc +10-4|9-5|conj +there|predicted|mod +attention|media|nn +was|attention|pred +virginia|thomas|gen +virginia|wife|nn +attention|virginia|to +lawyer|washington|nn +taken|she|subj +positions|strong|mod +positions|conservative|mod +taken|positions|obj +positions|antagonized|rel +antagonized|positions|obj +antagonized|that|subj +groups|certain|mod +groups|and|punc +groups|fact|conj +fact|that|c +was|white|pred +white|and|punc +white|he|conj +black|groups|subj +questions|raised|mod +black|questions|obj +questions|some|for +lobbyists|hearings|nn +blacks|lobbyists|during +side|either|nn +lobbyists|side|on +worked|blacks|subj +worked|influence|mod +influence|black|subj +influence|ensuing|obj +senate|full|mod +vote|senate|of diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D075.M.100.B.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D075.M.100.B.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..ecfb9e9fb26946f01ce4a4a4545c02d7d94a0cf2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D075.M.100.B.26.mini.be @@ -0,0 +1,70 @@ +treatments|04/28/1988|nn +treatments|)|punc +treatments|new|mod +treatments|that|whn +stop|treatments|subj +attack|heart|nn +stop|attack|obj +tracks|its|gen +attack|tracks|in +help|treatments|subj +help|victims|obj +victims|get out|rel +get out|victim|subj +get out|hospital|of +quickly|more|mod +get out|quickly|mod +get out|than|mod +before|ever|mod +even|perhaps|mod +days|even|mod +days|three|amount-value +days|their|after +than|attacks|comp1 +attacks|days|subj +concludes|study|subj +study|published|vrel +published|study|obj +published|04/28/1988|on +attacks|concludes|mod +experiment|more|with +patients|1,700|num +patients|high blood pressure|nn +more|patients|than +showed|experiment|subj +showed|that|c +blood|and|punc +test|urine|nn +blood|test|conj +pinpoint|blood|subj +most|patients|nn +pinpoint|most|obj +pinpoint|likely|mod +pinpoint|have|mod +have|blood|subj +attack|heart|nn +have|attack|obj +half|04/18/1991|nn +half|)|punc +half|about|mod +americans|1.5 million|nn +half|americans|of +americans|who|whn +suffer|americans|subj +attack|heart|nn +suffer|attack|obj +have|year|mod-before +have|half|subj +factors|known|mod +factors|risk|nn +have|factors|obj +disease|heart|nn +factors|disease|for +levels|high|mod +levels|cholesterol|nn +have|levels|such as +smoking|cigarette|nn +levels|smoking|conj +smoking|obesity|conj +obesity|and|punc +obesity|high blood pressure|conj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D075.M.100.B.E.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D075.M.100.B.E.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..fb4d1fce8d7419916b00acfbcdfc220ee507e33f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D075.M.100.B.E.mini.be @@ -0,0 +1,56 @@ +medicines|new|mod +medicines|and|punc +treatments|new|mod +medicines|treatments|conj +treatments|which|whn +appeared|treatments|subj +decade|last|post +appeared|decade|in +reduced|significantly|mod +attack|heart|nn +rate|attack|subj +rate|united states|in +blockers|calcium|nn +blockers|diltiazem|such as +diltiazem|and|punc +diltiazem|verapamil|conj +reduce|significantly|mod-before +reduce|blockers|subj +reduce|damage|obj +while|heart attack|nn +aspirin|even|pre +aspirin|simple|mod +aspirin|taken|vrel +taken|aspirin|obj +day|other|mod +taken|day|mod +taken|also|mod +aspiring|heart attack|nn +aspiring|risk|nn +shown|when|mod-before +drugs|clot-busting|mod +taken|drugs|with +shown|aspiring|obj +helpful|especially|mod +procedures|helpful|mod +be|procedures|pred +angioplasty|balloon|nn +procedures|angioplasty|such as +angioplasty|and|punc +bypass|ileal|mod +angioplasty|bypass|conj +show|also|mod-before +show|promise|obj +promise|treatment|in +disease|heart|nn +treatment|disease|of +style|life|nn +show|changes|fc +changes|style|subj +changes|smoking|like +diet|better|mod +are|effective|pred +effective|lowering|in +lowering|risk|obj +attack|heart|nn +risk|attack|of diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D076.M.100.B.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D076.M.100.B.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..efdab7934706b5da1511db9db0f0c35850ccfa9f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D076.M.100.B.26.mini.be @@ -0,0 +1,69 @@ +margaret thatcher|04/06/1989|nn +margaret thatcher|)|punc +minister|prime|mod +margaret thatcher|minister|appo +defense|11/20/1990|nn +defense|)|punc +defense|flamboyant|mod +defense|former|mod +challenge|minister|gen +minister|michael heseltine|person +margaret thatcher|prime minister|title +challenge|margaret thatcher|to +margaret thatcher|leadership|for +leadership|conservative party|of +defense|caused|rel +caused|defense|obj1 +caused|challenge|subj +sensation|political|mod +caused|sensation|obj2 +sensation|britain|in +margaret thatcher|11/23/1990|nn +margaret thatcher|)|punc +margaret thatcher|`|punc +margaret thatcher|`|punc +reliable|completely|mod +ally|reliable|mod +was|ally|pred +ally|and|punc +ally|partner|conj +integrity|greatest|mod +integrity|personal|mod +partner|integrity|of +said|reagan|subj +said|statement|in +said|after|mod +thatcher|mrs.|title +after|announced|comp1 +announced|thatcher|subj +retirement|her|gen +retirement|impending|mod +announced|retirement|obj +awarded|queen elizabeth ii|subj +margaret thatcher|former|mod +margaret thatcher|prime minister|title +awarded|margaret thatcher|obj1 +order|coveted|mod +awarded|order|obj2 +order|merit|of +merit|12/07/1990|on +awarded|and|punc +awarded|made|conj +made|queen elizabeth ii|subj +husband|her|gen +made|husband|obj1 +made|baronet|desc +baronet|which|whn +knighthood|hereditary|mod +is|knighthood|pred +recipients|deceased|mod +include|recipients|subj +winston churchill|prime minister|title +include|winston churchill|obj +dwight d. eisenhower|gen.|title +winston churchill|dwight d. eisenhower|conj +albert schweitzer|missionary|nn +dwight d. eisenhower|albert schweitzer|conj +albert schweitzer|and|punc +albert schweitzer|actor|conj +actor|lawrence olivier|person diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D076.M.100.B.E.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D076.M.100.B.E.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..8d66d7bc91dfee17747c28f5f9edd3e5cd32b9a9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D076.M.100.B.E.mini.be @@ -0,0 +1,63 @@ +margaret thatcher|prime minister|title +resigned|margaret thatcher|subj +resigned|thursday|on +resigned|after|mod +cabinet|her|gen +after|withdrew|comp1 +withdrew|cabinet|subj +withdrew|its|obj +vote|upcoming|mod +seen|vote|in +support|seen|fc +seen|move|obj +seen|attempt|as +attempt|head|comp1 +head|move|subj +head|campaign|off +minister|former|mod +minister|defense|nn +minister|hazeltine|person +minister|wrest|rel +wrest|minister|subj +wrest|control|obj +control|conservative party|of +took|announcement|subj +took|president|obj +president|bush|person +president|and|punc +leaders|other|mod +leaders|world|nn +president|leaders|conj +thatcher|surprise.|nn +thatcher|mrs.|title +took|thatcher|by +relationship|special|mod +administration|reagan|nn +relationship|administration|with +known|well|mod +strong|known|mod +was|strong|pred +lady|iron|mod +minister|prime|mod +was|minister|pred +11|over|num-mod +years|11|amount-value +minister|years|for +years|longer|pnmod +minister|other|mod +minister|prime|mod +longer|minister|than +minister|century|nn +minister|while|nn +minister|prime|mod +credited|she|obj +turning|she|subj +turning|declining|around +economy|british|mod +economy|as|punc +economy|well|punc +economy|as|punc +economy|helping|conj +shape|economy|subj +politics|international|mod +shape|politics|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D077.M.100.B.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D077.M.100.B.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..75de797401129ee9f70a6f0fcaf238bf9cfabfaf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D077.M.100.B.26.mini.be @@ -0,0 +1,59 @@ +devastated|)|punc +devastated|ever|mod-before +earthquake|1906|num +ever|earthquake|since +devastated|10/18/1989|subj +devastated|san francisco|obj +believed|scientists|subj +one|next|post +one|`|punc +one|`|punc +one|big|mod +strike|'|punc +strike|'|punc +believed|strike|fc +strike|one|subj +strike|los angeles end|obj +san andreas fault|mighty|mod +los angeles end|san andreas fault|of +epicenter|quake|of +8|about|num-mod +miles|8|amount-value +northeast|miles|nn +was|northeast|pred +northeast|santa cruz|of +santa cruz|and|punc +miles|75|amount-value +south|miles|nn +santa cruz|south|conj +south|san francisco|of +gave|studies|subj +interpretations|various|mod +gave|interpretations|obj +stress|how much|subj +stress|released|fc +released|earth|obj +released|by|by-subj +earthquake|great|mod +earthquake|san francisco|nn +released|earthquake|by +earthquake|1906|of +1906|which|whn +had|1906|subj +had|magnitude|obj +8.3|about|num-mod +magnitude|8.3|of +had|and|punc +had|killed|conj +killed|1906|obj +people|least|post +people|2,500|num +killed|people|at +mayor|san francisco|nn +mayor|art agnos|person +estimated|mayor|subj +$2 billion|damage|nn +estimated|$2 billion|obj +city|his|gen +$2 billion|city|in +estimated|alone|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D077.M.100.B.H.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D077.M.100.B.H.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..788021f42cdda4e9c3f1dc87444156ac50a02cd1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D077.M.100.B.H.mini.be @@ -0,0 +1,62 @@ +earthquake|6.9|num +rocked|earthquake|subj +rocked|northern california|obj +northern california|5:04pm|at +5:04pm|october 17 , 1989|on +lasted|it|subj +lasted|15|obj +seconds|caused|vrel +caused|seconds|obj1 +damage|$2 billion|nn +caused|damage|obj2 +caused|and|punc +caused|killed|conj +killed|seconds|subj +killed|60 candlestick park|obj +shook|seconds|subj +three|series|nn +three|game|mod +buildings|postponed|mod +was|buildings|pred +buildings|collapsed|vrel +collapsed|buildings|obj +soil|poor|mod +collapsed|soil|because of +design|structural|mod +lost|marina district|subj +buildings|60|num +lost|buildings|obj +lost|and|punc +lost|swept|conj +swept|marina district|obj +swept|by|by-subj +-rises|fire|nn +swept|-rises|by +earthquake|strict|mod +escaped|earthquake|to +escaped|codes|subj +part|damage|nn +escaped|part|obj +upper deck|bay bridge|gen +part|upper deck|of +quake|san francisco|nn +killed|measuring|mod-before +measuring|quake|subj +measuring|8.3|obj +killed|quake|subj +tuesday|2500|num +killed|tuesday|obj +spot|northern california|gen +likely|most|mod +spot|likely|mod +was|spot|pred +quake|large|mod +spot|quake|for +years|30|amount-value +quake|years|within +offers|help|of +charleston|widespread|mod +were|charleston|pred +charleston|sympathized|vrel +sympathized|charleston|obj +damage|hurricane hugo|from diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D078.M.100.B.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D078.M.100.B.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..f74891b84cecc331dda37451ba63886be37f4323 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D078.M.100.B.26.mini.be @@ -0,0 +1,61 @@ +selection|03/23/1989|nn +selection|)|punc +selection|oscar|nn +come|selection|subj +come|scrutiny|under +come|as|mod +studios|film|nn +as|go|comp1 +go|studios|subj +lengths|new|mod +go|lengths|to +lengths|pull|rel +pull|length|subj +pull|votes|obj +votes|academy of motion picture arts|out of +academy of motion picture arts|and|punc +academy of motion picture arts|sciences|conj +enterprise|03/24/1989|nn +enterprise|)|punc +collided|enterprise|subj +awards|academy|nn +collided|awards|with +trying|everybody|subj +trying|pick up|fc +pick up|everybody|subj +pick up|pieces|obj +statuettes|oscar|nn +statuettes|selling|rel +selling|statuette|subj +selling|auction|at +auction|more|for +more|$10,000|than +$10,000|and|punc +$10,000|chicago|conj +company|trophy|nn +company|casting|rel +casting|company|subj +clones|alleged|mod +clones|academy award|nn +casting|clones|obj +clones|national academy of motion picture arts|conj +national academy of motion picture arts|and|punc +national academy of motion picture arts|sciences|conj +scrambling|company|subj +scrambling|make|fc +make|company|subj +make|sure|desc +sheen|oscar|gen +sheen|golden|mod +sure|tarnished|fc +tarnished|sheen|obj +tarnished|by|by-subj +hucksterism|hollywood|nn +tarnished|hucksterism|by +credo|tracy|nn +recommended|credo|obj1 +recommended|to|guest +recommended|future|to +recommended|producers|obj2 +shows|academy award|nn +producers|shows|of diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D078.M.100.B.J.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D078.M.100.B.J.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..673a9b9f70c79113e14cb13530b8f0c549cd6c64 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D078.M.100.B.J.mini.be @@ -0,0 +1,59 @@ +nomination|oscar|nn +nomination|and|punc +process|selection|nn +nomination|process|conj +is|under|pred +is|scrutiny|under +campaign|studios|nn +scrutiny|campaign|as +influence|voting|obj +voting|academy of motion pictures arts|by +academy of motion pictures arts|and|punc +directors|sciences|nn +directors|members|nn +academy of motion pictures arts|directors|conj +brooks|(|punc +brooks|1988|num +brooks|)|punc +brooks|spielberg|conj +spielberg|(|punc +spielberg|1988|num +spielberg|)|punc +spielberg|and|punc +spielberg|lee|conj +lee|(|punc +lee|1989|num +are|)|punc +are|among|pred +are|luminaries|among +voting|annual|mod +overlooked|voting|in +history|award|gen +history|61-year|nn +voting|history|during +watch|millions|amount-value +awards|televised|mod +watch|show|rel +show|watch|obj1 +show|awards|subj +show|watch|obj2 +take|watch|subj +three|over|num-mod +hours|three|amount-value +take|hours|obj +take|1989|mod +is|memorable|pred +memorable|number|for +number|films|of +number|musical|mod +suit|disney|nn +suit|academy|against +recognizable|highly|mod +statue|recognizable|mod +is|not|neg +protected|statue|obj +protected|by|by-subj +protected|copyright|by +was|most|pred +person|(|punc +person|32|num diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D079.M.100.A.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D079.M.100.A.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..c65dff9bc9fccc7e54dd2f766af57d11d3c49686 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D079.M.100.A.26.mini.be @@ -0,0 +1,65 @@ +gilbert|09/11/1988|nn +gilbert|)|punc +gilbert|hurricane|nn +killed|hurricane|subj +five|at least|num-mod +people|five|nn +killed|people|obj +people|09/18/1988|on +people|dominican republic|in +officials|civil defense|nn +said|officials|subj +intense|most|mod +hurricane|intense|mod +hurricane|record|on +surged|hurricane|subj +surged|texas|toward +texas|09/15/1988|on +texas|battering|after +battering|hurricane|subj +battering|yucatan peninsula|obj +winds|160|num +winds|mph|nn +yucatan peninsula|winds|with +leveling|slums|obj +leveling|pummeling|mod +resorts|posh|mod +pummeling|resorts|obj +pummeling|and|punc +pummeling|forcing|conj +forcing|tens|obj +tens|thousands|of +thousands|flee|rel +flee|thousands|subj +hurricane|which|whn +has left|hurricane|subj +one|nearly|num-mod +has left|one|obj +homeless|four|nn +homeless|jamaicans|nn +one|homeless|in +slackened|hurricane|subj +slackened|somewhat|mod +slackened|as|mod +as|swirled|comp1 +swirled|it|subj +swirled|land|over +was|beginning|pred +beginning|gain|rel +gain|beginning|subj +gain|strength|obj +water|open|mod +strength|water|over +water|it|as +water|moved|vrel +moved|water|obj +moved|u.s. gulf coast|toward +winds|sustained|mod +u.s. gulf coast|winds|with +mph|120|num +winds|mph|of +feel|i|subj +feel|sorry|desc +sorry|anybody|for +feel|wherever|wha +hits|this|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D079.M.100.A.I.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D079.M.100.A.I.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..3c13c84ad89af72fa7876993687b34be3bc27e17 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D079.M.100.A.I.mini.be @@ -0,0 +1,59 @@ +is|now|guest +storm|tropical|mod +is|storm|pred +is|bringing|mod +bringing|gilbert|subj +rain|heavy|mod +bringing|rain|obj +mexico|northeastern|mod +did|not|neg +mexico|hit|rel +hit|mexico|obj1 +hit|it|subj +hit|texas|obj2 +hit|as|mod +feared|but|punc +feared|spawn|conj +spawn|tornadoes|obj +gilbert|hurricane|nn +formed|gilbert|subj +caribbean|eastern|mod +formed|caribbean|in +in|and|punc +in|during|conj +in|last week|during +dominican republic|jamaica|conj +jamaica|and|punc +jamaica|cayman islands|conj +gilbert|tuesday|nn +cayman islands|gilbert|on +had|dominican republic|subj +had|winds|obj +175mph|and|punc +pressure|lowest|mod +175mph|pressure|conj +recorded|ever|amod +pressure|recorded|vrel +recorded|pressure|obj +recorded|and|punc +recorded|upgraded|conj +upgraded|pressure|obj +upgraded|category 5|to +wednesday|highest|mod +storm|wednesday|mod +wednesday|slammed|rel +slammed|wednesday|obj +slammed|it|subj +slammed|yucatan peninsula|into +slammed|severely|mod +areas|resort|nn +electricity|severing|nn +areas|electricity|conj +electricity|and|punc +electricity|communications|conj +people|flooding|mod +109|at least|num-mod +people|109|nn +killed|people|obj +homeless|800,000|num +homeless|left|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D080.M.100.A.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D080.M.100.A.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..46ebf49369df3b8d3c3456662b6e5b065f5eed31 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D080.M.100.A.26.mini.be @@ -0,0 +1,54 @@ +defendants|mother-and-son|mod +peggy mcmartin buckey|and|punc +peggy mcmartin buckey|raymond buckey|conj +wept|peggy mcmartin buckey|subj +wept|as|mod +as|announced|comp1 +announced|verdicts|obj +minister|hermosa beach|nn +minister|who|whn +tried|years|for +tried|minister|subj +tying|rumors|nn +quell|tying|obj +church|his|gen +scandal|mcmartin pre-school|nn +church|scandal|to +announced|church|subj +announced|on|guest +announced|01/28/1990|on +announced|that|c +stress|"|punc +stress|extreme|mod +stress|"|punc +stress|fallout|of +fallout|case|from +forced|stress|subj +seek|him|subj +retirement|disability|nn +seek|retirement|obj +case|mcmartin|nn +case|which|whn +prompted|case|subj +trial|longest|mod +longest|and|punc +expensive|most|mod +longest|expensive|conj +trial|criminal|mod +prompted|trial|obj +history|u.s.|nn +trial|history|in +ended|case|subj +ended|01/25/1990|on +ended|acquittal|with +ray buckey|defendants|nn +acquittal|ray buckey|of +ray buckey|and|punc +ray buckey|peggy mcmartin buckey|conj +peggy mcmartin buckey|total|on +counts|52|num +total|counts|of +molestation|child|nn +counts|molestation|of +school|manhattan beach|nn +molestation|school|at diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D080.M.100.A.E.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D080.M.100.A.E.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..ec496cc5d579b0b66163cb3bca62e8314f74d6cc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D080.M.100.A.E.mini.be @@ -0,0 +1,52 @@ +trial|mcmartin pre-school|nn +trial|child|nn +trial|molestation|nn +criminal|longest|mod +trial|criminal|mod +trial|trial|appo +trial|u.s.|in +history|ended|vrel +ended|history|obj +ended|verdict|with +verdict|innocent|of +innocent|raymond buckey|for +ended|and|punc +ended|is|conj +is|mother|pred +mother|peggy|appo +buckey|mcmartin|nn +buckey|found|rel +found|jury|subj +found|buckeys|obj +buckeys|innocent|pnmod +innocent|52|on +52|charges|of +13|another|num-mod +deadlocked|13|on +causing|mistrial|obj1 +mistrial|charges|on +causing|prosecutors|obj2 +decide|if|c +want|they|subj +want|retrial|obj +charges|deadlocked|mod +retrial|charges|on +involving|originally|amod +charges|involving|rel +involving|charge|subj +involving|7|obj +sister|raymond buckeys|nn +including|sister|obj +sister|and|punc +sister|grandmother|conj +sister|and|punc +sister|grandmother|conj +grandmother|as|punc +grandmother|well|punc +grandmother|as|punc +employees|three|nn +grandmother|employees|conj +employees|school|of +parents|dropped|mod +were|parents|pred +anger|verdict|at diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D081.M.100.A.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D081.M.100.A.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..728be2e3df1947a98f68098253a0fafb9afa9850 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D081.M.100.A.26.mini.be @@ -0,0 +1,75 @@ +miners|07/21/1989|nn +miners|)|punc +miners|coal|nn +miners|siberia|in +ended|miners|subj +strike|their|gen +ended|strike|obj +strike|07/21/1989|on +ended|after|mod +promises|exacting|mod +food|better|mod +promises|food|of +food|housing|conj +housing|and|punc +conditions|working|mod +housing|conditions|conj +conditions|but|punc +conditions|wave|conj +wave|unrest|of +unrest|launched|rel +launched|unrest|obj +launched|they|subj +after|continued|comp1 +continued|promises|subj +regions|other|mod +regions|key|nn +regions|coal|nn +continued|regions|in +thousands|11/03/1989|nn +thousands|)|punc +thousands|miners|of +region|northern|mod +region|vorkuta|nn +miners|region|in +expanding|thousands|subj +strike|their|gen +expanding|strike|obj +blocking|some|subj +shipments|coal|nn +blocking|shipments|obj +media|soviet|nn +media|news|nn +reported on|media|subj +reported on|11/03/1989|obj +miners|11/03/1989|nn +miners|)|punc +miners|coal|nn +region|northern|mod +miners|region|in +region|and|punc +region|ukraine|conj +struck|miners|subj +weeks|two|amount-value +struck|weeks|for +struck|summer|mod +struck|but|punc +struck|returned to|conj +returned to|miners|subj +returned to|work|obj +work|july|in +returned to|after|mod +after|passed|comp1 +passed|parliament|subj +passed|resolution|obj +resolution|promising|rel +promising|resolution|subj +promising|reforms|obj +promising|including|mod +social|improved|mod +including|social|obj +social|and|punc +social|economic conditions|conj +continued|strike|subj +continued|mines|at +mines|28 june|on diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D081.M.100.A.D.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D081.M.100.A.D.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..fe81aaef988bc04eae1dae7798d3c62e202f5140 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D081.M.100.A.D.mini.be @@ -0,0 +1,47 @@ +miners|world|throughout +used|miners|subj +used|strikes|obj +only|not|mod +used|only|mod +used|achieve|mod +achieve|miner|subj +gains|economic|mod +achieve|gains|obj +control|greater|mod +gain|control|obj +industries|their|gen +control|industries|over +gain|and|punc +gain|achieve|conj +miners|political|mod +miners|ends|nn +achieve|miners|obj +region|soviet union|of +struck|region|subj +wages|higher|mod +struck|wages|for +living|better|mod +conditions|living|mod +local|more|mod +control|local|mod +struck|control|for +control|poland|in +struck|miners|subj +legalization|solidarity|of +miners|south africa|nn +solidarity|miners|in +wages|better|mod +struck|wages|for +struck|and|punc +struck|working|conj +walked|u.s.|in +walked|miners|subj +walked|of|guest +walked|f|of +walked|job|obj +job|sympathy|in +miners|fellow|mod +sympathy|miners|for +dispute|bitter|mod +company|coal|nn +dispute|company|with diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D082.M.100.A.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D082.M.100.A.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..51dfaf6eae656ed4b05678745f59a81a1d55b304 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D082.M.100.A.26.mini.be @@ -0,0 +1,59 @@ +newspaper|soviet|nn +painted|newspaper|subj +sympathetic|highly|mod +portrait|sympathetic|mod +painted|portrait|obj +portrait|andrei d. sakharov|of +andrei d. sakharov|and|punc +andrei d. sakharov|yelena bonner|conj +painted|countering|mod +countering|newspaper|subj +attacks|past|mod +countering|attacks|obj +couple|dissident|mod +attacks|couple|on +branded|once|mod-before +couple|branded|vrel +branded|couple|obj +branded|traitors|as +media|state-run|mod +traitors|media|by +sakharov|who|whn +was|one|pred +one|creators|of +nation|his|gen +bomb|nation|gen +bomb|hydrogen|nn +creators|bomb|of +supported|vocally|amod +since|supported|comp1 +supported|sakharov|subj +leader|soviet|nn +campaign|leader|gen +leader|mikhail s. gorbachev|person +campaign|reform|nn +supported|campaign|obj +supported|but|punc +supported|called for|conj +called for|sakharov|subj +called for|liberation|obj +political prisoners|all|pre +liberation|political prisoners|of +political prisoners|and|punc +improvements|more|mod +political prisoners|improvements|conj +improvements|field|in +rights|human|nn +field|rights|of +noted|obituary|subj +noted|exiled|fc +exiled|sakharov|obj +city|industrial|mod +exiled|city|in +east|gorky|nn +250|about|num-mod +miles|250|amount-value +east|miles|nn +city|east|of +east|moscow|of +exiled|from 1980 to 1986|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D082.M.100.A.C.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D082.M.100.A.C.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..aeb563620aff794cfd7e4303b0779cabee9716fa --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D082.M.100.A.C.mini.be @@ -0,0 +1,49 @@ +was|physicist|pred +physicist|who|whn +helped|physicist|subj +bomb|soviet|nn +bomb|hydrogen|nn +fame|widespread|mod +advocate|human rights|nn +fame|advocate|as +advocate|and|punc +winner|1979|num +advocate|winner|conj +winner|nobel|of +prize|peace|nn +criticism|his|gen +criticism|constant|mod +irked|criticism|subj +in|kremlin|nn +irked|in|obj +in|1980|num +in|criticized|rel +criticized|he|subj +criticized|invasion|obj +afghanistan|and|punc +afghanistan|breznev|conj +exiled|afghanistan|subj +exiled|him|obj +freed|gorky gorbachev|subj +freed|him|obj +sakharov|1986|num +freed|sakharov|in +affairs|foreign|mod +gorbachev|affairs|on +sakharov|his|gen +sakharov|economic policies|nn +congress|soviet|nn +elected|congress|to +deputies|people|gen +congress|deputies|of +deputies|april 1989|in +died|sakharov|subj +died|suddenly|mod +suddenly|14 december 1989|on +obituary|his|gen +obituary|signed|vrel +signed|obituary|obj +signed|by|by-subj +signed|gorbachev|by +apology|public|mod +tantamount|apology|to diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D083.M.100.A.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D083.M.100.A.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..5b0e4ed636ef0a2513f7d97ec2e4cc36efad7d5a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D083.M.100.A.26.mini.be @@ -0,0 +1,62 @@ +destruction|total|mod +'s|destruction|pred +destruction|where|wha +hit|tornado|subj +_alabama|11/16/1989|nn +_alabama|)|punc +people|seventeen|nn +killed|people|obj +killed|huntsville|in +huntsville|11/15/1989|on +killed|when|wha +touched down|tornado|subj +touched down|just|mod +just|rush hour|before +touched down|causing|mod +causing|tornado|subj +damage|major|mod +causing|damage|obj +people|11/16/1989|nn +people|)|punc +people|three|nn +injured|people|obj +tornado|earlier|mod +injured|tornado|in +tornado|clay county|in +alabama|eastern|mod +clay county|alabama|in +violent storm|that|whn +spun|violent storm|subj +spun|tornadoes|obj +tornadoes|south|across +south|and|punc +south|midwest|conj +blew|violent storm|subj +blew|north|obj +north|11/16/1989|on +blew|knocking|mod +knocking|violent storm|subj +wall|cafeteria|nn +knocking|wall|obj +knocking|down|mod +down|top|on +top|lunching|of +lunching|schoolchildren|obj +people|seventeen|nn +died|people|subj +died|11/15/1989|on +died|huntsville|in +died|when|wha +tornado|packing|rel +packing|tornado|subj +winds|250|num +winds|mph|nn +packing|winds|obj +struck|tornado|subj +struck|virtually|mod +virtually|warning|without +struck|laying waste to|mod +laying waste to|tornado|subj +swath|wide|mod +laying waste to|swath|obj +swath|city|of diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D083.M.100.A.G.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D083.M.100.A.G.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..3f5b402d8cf9ae2180d281ec60ee0877893c0627 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D083.M.100.A.G.mini.be @@ -0,0 +1,59 @@ +system|powerful|mod +system|storm|nn +brought|system|subj +brought|tornadoes|obj +winds|high|mod +tornadoes|winds|appo +thunderstorms|heavy|mod +winds|thunderstorms|appo +hailstones|midwest|across +southeast|and|punc +southeast|northeast|conj +northeast|wednesday|on +people|-seven|mod +killed|people|obj +500|more than|num-mod +500|injured|vrel +injured|500|obj +500|and|punc +homeless|hundreds|nn +homeless|left|mod +500|homeless|conj +struck|tornadoes|subj +across|mostly|mod +struck|across|guest +states|midwestern|mod +midwestern|and|punc +midwestern|southeastern|conj +struck|states|obj1 +tornado|devastating|mod +struck|tornado|obj2 +huntsville|struck|mod +huntsville|al|appo +al|laying waste to|rel +laying waste to|al|subj +swath|wide|mod +laying waste to|swath|obj +swath|city|through +laying waste to|and|punc +laying waste to|causing|conj +causing|al|subj +causing|death|obj +death|14|to +people|killed|rel +killed|people|obj +killed|tornado|subj +people|four|nn +people|palmetto|in +winds|heavy|mod +caused|winds|subj +caused|death|obj +children|seven|nn +death|children|of +children|school|in +school|newburgh|in +person|one|nn +newburgh|person|appo +elizabeth|and|punc +elizabeth|another|conj +elizabeth|new york city|in diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D084.M.100.A.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D084.M.100.A.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..303cc9e842f0e1b45c52a228534922b6b45906af --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D084.M.100.A.26.mini.be @@ -0,0 +1,63 @@ +investigators|04/21/1989|nn +investigators|)|punc +investigators|uss iowa|aboard +uss iowa|searched|vrel +searched|uss iowa|obj +searched|clues|for +clues|cause|to +explosion|fiery|mod +cause|explosion|of +explosion|that|whn +claimed|explosion|subj +sailors|47|num +lives|sailors|of +battleship|damaged|mod +sailors|battleship|as +claimed|headed home|fc +headed home|lives|subj +families|grief-stricken|mod +dealt with|families|subj +dealt with|loss|obj +loved ones|their|gen +loss|loved ones|of +hundreds|04/22/1989|nn +hundreds|)|punc +hundreds|people|of +gathered|hundreds|subj +gathered|honor|mod +honor|hundreds|subj +sailors|47|num +honor|sailors|obj +sailors|who|whn +died|sailors|subj +died|uss iowa|on +uss iowa|victims|as +victims|tragedy|of +tragedy|that|whn +reaches into|tragedy|subj +towns|little|mod +reaches into|towns|obj +towns|country|all over +investigators|04/24/1989|nn +investigators|)|punc +investigators|navy|nn +looking at|investigators|subj +possibilities|all|pre +looking at|possibilities|obj +possibilities|human|of +human|or|punc +error|mechanical|mod +human|error|conj +effort|their|gen +error|effort|in +effort|determine|comp1 +determine|investigator|subj +determine|caused|fc +caused|what|subj +caused|explosion|obj +explosion|that|whn +killed|explosion|subj +killed|47|obj +uss iowa|battleship|nn +47|uss iowa|aboard +say|officials|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D084.M.100.A.H.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D084.M.100.A.H.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..91b7fe9cc0d1c7c1305b7d8df71ab3ba840190c9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D084.M.100.A.H.mini.be @@ -0,0 +1,54 @@ +iowa|battleship|nn +turret|iowa|gen +turret|no.2|nn +explosion|turret|in +turret|wednesday , april 19 , 1989 ,|on +ne|training|nn +ne|exercise|nn +ne|puerto rico|of +investigators|47|num +investigators|naval|mod +explosion|occurred|vrel +occurred|explosion|obj +occurred|while|mod +while|was|comp1 +was|in|pred +was|transit|in +transit|powder|from +hoist|explosion|subj +hoist|thousands|obj +home|iowa|nn +home|norfolk|to +norfolk|sunday|on +lining|black|mod +lining|arm bands|nn +sailors|lining|with +rails|ship|gen +rails|and|punc +members|surviving|mod +members|guncrew|nn +rails|members|conj +standing|rails|subj +standing|atop|guest +turret|blackened|mod +turret|no.2|nn +standing|turret|obj +spoke|monday|on +president|bush|person +spoke|president|subj +spoke|mourners|to +a|norfolk|nn +a|memorial|nn +a|service|nn +mourners|a|at +placed|moratorium|obj +firing|moratorium|subj +guns|wwii-era|mod +guns|16-inch|nn +firing|guns|obj +guns|which|whn +criticized|guns|obj +outdated|and|punc +outdated|dangerous|conj +hold|senate armed services committee|subj +hold|hearings|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D085.M.100.D.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D085.M.100.D.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..1d3740cf68bf0ec85aca010a3024a58ea811a9c1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D085.M.100.D.26.mini.be @@ -0,0 +1,69 @@ +sheets|09/22/1989|nn +sheets|)|punc +sheets|hurricane|nn +remains|hurricane|but +science|uncertain|mod +remains|science|obj +effect|`|punc +effect|`|punc +effect|greenhouse|nn +breed|'|punc +breed|'|punc +breed|effect|subj +hurricanes|bigger|mod +bigger|and|punc +bigger|deadlier|conj +breed|hurricanes|obj +50|future|mod +50|storms|nn +50|up to|num-mod +hurricanes|50|in +hugo|and|punc +hugo|last|conj +'s|year|mod-before +year|(|punc +year|1988|num +'s|)|punc +than|'s|comp1 +gilbert|record-setting|mod +'s|gilbert|pred +say|meteorologists|subj +residents|09/25/1989|nn +residents|)|punc +took|residents|subj +took|forecasters|obj +word|their|gen +forecasters|word|at +took|when|wha +warned|they|subj +warned|of|guest +warned|hurricane hugo|of +warned|fury|obj +fury|and|punc +number|low|mod +fury|number|conj +number|deaths|of +storm|powerful|mod +credited|storm|obj +respect|healthy|mod +credited|respect|to +said|authorities|subj +storm|which|whn +caused|storm|subj +caused|billions|obj +billions|damage|in +claimed|storm|subj +claimed|lives|fc +lives|17|subj +lives|south carolina|in +two|only|mod +were|in|pred +area|charleston|nn +were|area|in +area|which|whn +bore|area|subj +bore|brunt|obj +winds|hugo|gen +winds|135|num +winds|mph|nn +brunt|winds|of diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D085.M.100.D.H.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D085.M.100.D.H.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..eeca55059f357a23decc1a5208fba7fb198b5778 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D085.M.100.D.H.mini.be @@ -0,0 +1,66 @@ +hurricane hugo|category 4|nn +did|hurricane hugo|subj +damage|extensive|mod +did|damage|obj +caribbean|eastern|mod +damage|caribbean|in +caribbean|sep|on +sep|17|num +21st|hit|vrel +hit|21st|obj1 +hit|charleston|obj2 +winds|135mph|nn +charleston|winds|with +winds|killed|rel +killed|it|subj +killed|17|obj +residents|state|nn +residents|coastal|mod +fled|residents|subj +satellites|inland|mod +inland|or|punc +inland|crowded|conj +crowded|shelters|into +fled|satellites|obj +satellites|computerized|appo +tracking|model|obj +model|and|punc +model|air force|conj +planes|reconnaissance|nn +helped|planes|subj +helped|forecasters|obj +forecasters|national|at +monitor|hurricane center|subj +landfall|hugo|gen +landfall|progress|nn +landfall|pinpointing|nn +monitor|landfall|obj +landfall|and|punc +landfall|intensity|conj +billions|difficult|mod +claims|insurance|nn +billions|claims|in +made|billions|subj +storm|hugo|nn +expensive|most|mod +storm|expensive|mod +made|storm|obj +storm|date|rel +date|storm|subj +increase|greenhouse|by +increase|effect|subj +storms|future|mod +increase|storms|obj +power|demonstrated|vrel +demonstrated|power|obj +demonstrated|by|by-subj +demonstrated|hugo|by +hugo|jumping|rel +jumping|hugo|subj +jumping|105|from +winds|135mph|nn +105|winds|to +winds|it|as +passed|power|subj +passed|over|mod +stream|gulf|nn diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D086.M.100.D.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D086.M.100.D.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..c96f9f77bfec866e1f3322e2db95b6484150465c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D086.M.100.D.26.mini.be @@ -0,0 +1,76 @@ +troops|tank-led|mod +troops|iraqi|mod +invaded|troops|subj +invaded|kuwait|obj +kuwait|dawn|before +dawn|08/02/1990|on +invaded|seizing|mod +seizing|troop|subj +palace|ruler|gen +seizing|palace|obj +palace|and|punc +buildings|other|mod +buildings|government|nn +palace|buildings|conj +officials|kuwaiti|mod +palace|officials|appo +officials|reported|vrel +reported|officials|obj +president|08/03/1990|nn +president|)|punc +president|iraqi|mod +president|saddam hussein|person +seemed|president|subj +seemed|determined|desc +seemed|solve|mod +solve|president|subj +problems|his|gen +problems|financial|mod +solve|problems|obj +solve|and|punc +solve|fulfill|conj +fulfill|president|subj +ambitions|territorial|mod +fulfill|ambitions|obj +ambitions|dethroning|by +dethroning|government|obj +kuwait|neighboring|mod +government|kuwait|of +here|08/03/1990|nn +here|)|punc +chronology|brief|mod +is|chronology|pred +chronology|dispute|in +dispute|iraq|between +iraq|and|punc +iraq|kuwait|conj +production|oil|nn +kuwait|production|over +production|and|punc +border|their|gen +border|common|mod +production|border|conj +july 17|08/03/1990|nn +july 17|)|punc +president|iraqi|mod +president|saddam hussein|person +accuses|president|subj +accuses|kuwait|obj +kuwait|and|punc +kuwait|united arab emirates|conj +united arab emirates|flooding|of +flooding|president|subj +market|oil|nn +flooding|market|obj +flooding|and|punc +flooding|driving|conj +driving|president|subj +driving|prices|obj +driving|down|mod +united arab emirates|and|punc +united arab emirates|that|conj +iraq $14 billion|move|nn +iraq $14 billion|cost|nn +revenue|lost|mod +revenue|oil|nn +iraq $14 billion|revenue|in diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D086.M.100.D.B.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D086.M.100.D.B.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..972f150d1318b072b9100d92cc920a0ca65d7d81 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D086.M.100.D.B.mini.be @@ -0,0 +1,66 @@ +accused|saddam|subj +accused|kuwait|obj +kuwait|costing|of +costing|saddam|subj +billions|iraq|nn +costing|billions|obj +billions|exceeding|by +quotas|opec|nn +quotas|production|nn +exceeding|quotas|obj +driving|thus|amod +driving|down|guest +prices|oil|nn +driving|prices|obj +accused|further|mod-before +accused|he|subj +accused|kuwait|obj +of|"|punc +kuwait|stealing|of +stealing|he|subj +stealing|"|punc +oil|iraqi|mod +stealing|oil|obj +field|common|mod +field|oil|nn +border|their|gen +field|border|on +invaded|then|mod-before +invaded|he|subj +invaded|kuwait|obj +invaded|claiming|mod +claiming|he|subj +claiming|do|fc +do|so|obj +leaders|kuwaiti|mod +leaders|revolutionary|mod +leaders|coup|nn +request|leaders|of +leaders|the united states|person +led|request|subj +world|western|mod +led|world|obj +united nations|calling|in +calling|coup|obj1 +calling|sham|desc +calling|denouncing|mod +denouncing|invasion|obj +sanctions|strong|mod +sanctions|economic|mod +economic|and|punc +economic|military|conj +imposing|sanctions|obj +sanctions|iraq|on +iraq|attempt|in +attempt|get|comp1 +get|them|obj +prices|oil|nn +withdraw|prices|obj +saddam|while|nn +saddam|warned|vrel +warned|saddam|obj +intervention|foreign|mod +warned|intervention|against +dispatched|u.s.|subj +dispatched|warships|obj +warships|area|to diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D087.M.100.D.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D087.M.100.D.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..e0a235f4b5a549ae82e4b49bbf315216710b35de --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D087.M.100.D.26.mini.be @@ -0,0 +1,72 @@ +was|02/28/1988|mod-before +02/28/1988|)|punc +america|best|mod +02/28/1988|do|rel +do|02/28/1988|obj +do|america|subj +medals|six|nn +was|medals|pred +winter games|its|gen +winter games|worst|nn +was|showing|mod +showing|winter games|subj +years|52|amount-value +showing|years|in +summer olympics|1988|num +summer olympics|kept|vrel +kept|summer olympics|obj1 +kept|free|desc +free|terrorism|of +free|but|punc +free|tainted|conj +scandals|drug|nn +tainted|scandals|by +closed|summer olympics|subj +closed|10/02/1988|on +closed|pealing|with +bell|medieval|mod +pealing|bell|of +bell|symbolize|rel +symbolize|bell|subj +symbolize|sorrow|obj +sorrow|parting|of +had|east germany|subj +medals|102|num +had|medals|obj +medals|and|punc +gold|37|num +medals|gold|conj +gold|and|punc +gold|united states|conj +united states|94|num +medals|and|punc +gold|36|num +medals|gold|conj +us|08/08/1992|nn +us|)|punc +won|comfortably|amod +won|us|subj +relay|most|subj +relay|medals|obj +medals|followed|vrel +followed|medals|obj +followed|by|by-subj +followed|britain|by +soviet union|former|mod +britain|soviet union|conj +soviet union|former|conj +even|(|punc +even|not|mod-before +former|even|rel +even|former|obj +even|west germany|subj +even|counting|mod +counting|west germany|subj +counting|six won|obj +six won|1939|before +six won|)|punc +east germany|former|mod +six won|east germany|conj +east germany|france|conj +france|and|punc +france|canada|conj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D087.M.100.D.B.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D087.M.100.D.B.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..7495d1694aac5b8e8b79be5f590b071d5bd53534 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D087.M.100.D.B.mini.be @@ -0,0 +1,49 @@ +are|world|in +competition|international|mod +world|competition|of +are|special|pred +is|here|pred +pride|national|mod +displayed|pride|obj +dreams|individual|mod +realized|dreams|obj +attained|fame|obj +olympics|summer|nn +gymnastics|its|gen +olympics|gymnastics|with +gymnastics|track and field|conj +track and field|and|punc +events|swimming|nn +track and field|events|conj +superstars|showcase|nn +superstars|mary lou retton|such as +lewis|carl|nn +mary lou retton|lewis|appo +greg louganis|some|whn +some|greg louganis|of +capitalize on|some|subj +fame|their|gen +capitalize on|fame|obj +fame|and|punc +fame|glory|conj +advertising|contracts|obj +highlight|generally|mod-before +highlight|winter olympics|subj +skaters|figure|nn +highlight|skaters|obj +skaters|speed|appo +skaters|and|punc +skiers|downhill|mod +skaters|skiers|conj +skiers|acquires|rel +acquires|olympian|subj +fame|lifelong|mod +acquires|fame|obj +jesse owens|who|whn +defeated|1936|in +defeated|soundly|mod-before +defeated|jesse owens|subj +race|hitler|gen +race|"|punc +race|master|nn +defeated|race|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D089.M.100.D.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D089.M.100.D.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..a4acfd909cf750a0d8bb4a8bf159a4f8264b6537 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D089.M.100.D.26.mini.be @@ -0,0 +1,76 @@ +rescuers|11/16/1989|nn +rescuers|)|punc +crawled|rescuers|subj +homes|collapsed|mod +crawled|homes|through +homes|and|punc +homes|shops|conj +shops|11/16/1989|on +11/16/1989|looking|rel +looking|11/16/1989|subj +victims|more|mod +looking|victims|for +victims|tornado|of +tornado|that|whn +carved|tornado|subj +stretch|3-mile|nn +carved|stretch|obj +stretch|destruction|of +carved|killing|mod +people|17|num +killing|people|obj +killing|injuring|conj +injuring|463|obj +injuring|and|punc +injuring|leaving|conj +homeless|1,000|num +leaving|homeless|obj +tornadoes|other|mod +caused|tornadoes|subj +19|at least|num-mod +injuries|19|nn +caused|injuries|obj +injuries|and|punc +damage|far-flung|mod +damage|property|nn +injuries|damage|conj +system|powerful|mod +system|storm|nn +brought|system|subj +winds|strong|mod +brought|winds|obj +winds|and|punc +thunderstorms|heavy|mod +winds|thunderstorms|conj +thunderstorms|northeast|to +northeast|11/16/1989|on +brought|causing|mod +causing|system|subj +damage|flooding|mod +flooding|and|punc +flooding|widespread|conj +damage|property|nn +causing|damage|obj +_alabama|11/16/1989|nn +_alabama|)|punc +people|seventeen|nn +killed|people|obj +killed|huntsville|in +huntsville|11/15/1989|on +killed|when|wha +touched down|tornado|subj +touched down|just|mod +just|rush hour|before +touched down|causing|mod +causing|tornado|subj +damage|major|mod +causing|damage|obj +people|11/16/1989|nn +people|)|punc +people|three|nn +injured|people|obj +tornado|earlier|mod +injured|tornado|in +tornado|clay county|in +alabama|eastern|mod +clay county|alabama|in diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D089.M.100.D.G.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D089.M.100.D.G.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..6e60d6b425b1e8cbf669b8dab6d8cc2158abbfd1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D089.M.100.D.G.mini.be @@ -0,0 +1,58 @@ +storm|powerful|mod +brought|storm|subj +brought|tornadoes|obj +winds|high|mod +tornadoes|winds|conj +winds|and|punc +winds|thunderstorms|conj +thunderstorms|midwest|across +mississippi valley|southeast|conj +southeast|and|punc +southeast|northeast|conj +northeast|wednesday|on +northeast|and|punc +people|thursday|nn +people|-seven|mod +northeast|people|conj +500|more than|num-mod +500|injured|vrel +injured|500|obj +500|and|punc +homeless|thousands|nn +homeless|left|mod +500|homeless|conj +hit|worst|nn +was|huntsville|pred +laid|tornado|subj +swath|wide|mod +waste|swath|obj +swath|city|through +causing|death|obj +fourteen|at least|num-mod +people|fourteen|nn +death|people|of +people|and|punc +400|over|num-mod +injuries|400|nn +people|injuries|conj +killed|tornado|subj +killed|four|obj +people|palmetto|in +caused|newburgh|in +winds|strong|mod +caused|winds|subj +roof|school|nn +caused|roof|obj +roof|collapse|rel +collapse|roof|subj +collapse|killing|mod +children|seven|nn +killing|children|obj +injuring|eighteen|obj +caused|storm|subj +death|one|nn +caused|death|obj +death|new jersey|in +new jersey|and|punc +new jersey|another|conj +new jersey|new york city|in diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D090.M.100.D.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D090.M.100.D.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..f2335ab6416cc1189eed3246a9114e124c3f0ed1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D090.M.100.D.26.mini.be @@ -0,0 +1,54 @@ +did|not|neg +say|reports|subj +charges|criminal|mod +charges|marcos|against +ousted|aquino|subj +ousted|predecessor|obj +aquino|mrs.|title +allow|aquino|subj +return|him|subj +marcos|05/19/1989|nn +marcos|)|punc +lawyer|marcos|gen +asked|also|mod-before +asked|lawyer|subj +asked|philippine supreme court|obj +philippine supreme court|order|rel +order|philippine supreme court|subj +order|return|obj +leader|ousted|mod +cooperate|leader|subj +administration|aquino|nn +cooperate|administration|with +president|05/20/1989|nn +president|)|punc +president|corazon aquino|person +said|president|subj +said|on|guest +said|05/19/1989|on +said|that|c +reasons|security|nn +permit|reasons|for +would|not|neg +permit|she|subj +president|deposed|mod +permit|president|obj +president|ferdinand e. marcos|person +president|buried|rel +buried|philippines|in +officials|05/20/1989|nn +officials|)|punc +officials|philippine|nn +asked|officials|obj +asked|repeatedly|mod +government|aquino|nn +refusal|government|gen +asked|allow|mod +allow|refusal|subj +marcos|return to|rel +return to|marcos|subj +return to|country|obj +remain|marcos|subj +remain|effect|in +death|his|gen +effect|death|after diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D090.M.100.D.J.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D090.M.100.D.J.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..809a94bb336851ac732535b6b403e1f95142bb80 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D090.M.100.D.J.mini.be @@ -0,0 +1,52 @@ +firepower|military|mod +ended|firepower|with +president|aquino|person +ended|president|subj +uprising|oct 4-6|nn +ended|uprising|obj +uprising|has|rel +has|uprising|obj +has|she|subj +attempts|two|nn +attempts|major|mod +attempts|coup|nn +attempts|and|punc +recently|mutinies|nn +attempts|recently|conj +reversal|policy|of +said|aquino|subj +said|she|obj +guerillas|communist|mod +controversies|political|mod +include|controversies|subj +opposition|her|gen +include|opposition|obj +opposition|nomination|to +abad|reform|nn +abad|leader|nn +abad|secretary-designate|mod +abad|and|punc +president|her|gen +refusal|president|gen +abad|refusal|conj +insurrection|1989|in +succeeded|aquino|subj +succeeded|marcos|obj +marcos|who|whn +was|accused|pred +accused|stealing|of +stealing|aquino|subj +stealing|billions|obj +in|government|nn +billions|in|from +she|1989|num +refused|she|subj +refused|let|fc +let|she|subj +let|marcos|obj +ill|critically|mod +marcos|ill|pnmod +ill|hawaii|in +let|reenter|mod +reenter|country|obj +buried|philippines|in diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D091.M.100.C.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D091.M.100.C.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..f63ad9f055df619224be94262829419d543162c2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D091.M.100.C.26.mini.be @@ -0,0 +1,62 @@ +thunderstorms|torrential|mod +sent|thunderstorms|subj +sent|flash flood|obj +flash flood|surging|rel +surging|flash flood|subj +surging|valley|through +town|ohio river|nn +valley|town|into +surging|killing|mod +11|at least|num-mod +people|11|nn +killing|people|obj +killing|leaving|mod +missing|51|subj +missing|and|punc +missing|scores|conj +scores|51|subj +homeless|others|nn +scores|homeless|of +homeless|06/15/1990|on +said|authorities|subj +200|about|num-mod +people|200|nn +reported|people|obj +ohio|central|mod +evacuated|ohio|in +declared|federal emergency management agency|subj +declared|belmont county|obj +belmont county|which|whn +includes|belmont county|subj +includes|shadyside|obj +shadyside|and|punc +shadyside|jefferson|conj +jefferson|and|punc +areas|franklin|nn +areas|counties|nn +areas|disaster|nn +jefferson|areas|conj +includes|making|mod +making|federal emergency management agency|subj +aid|federal|mod +making|aid|obj +aid|available|pnmod +available|residents|to +toll|death|nn +flash floods|last week|gen +toll|flash floods|from +mounted|toll|subj +mounted|21|to +21|06/18/1990|on +mounted|when|wha +found|body|obj +found|ohio river|in +said|authorities|subj +said|was|fc +was|hope|pred +people|14|num +hope|people|for +listed|still|mod +people|listed|pnmod +listed|missing|as +missing|authority|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D091.M.100.C.F.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D091.M.100.C.F.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..635c05fd6ed5b6f56092887b95241e998d65841a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D091.M.100.C.F.mini.be @@ -0,0 +1,59 @@ +toll|death|nn +toll|floods|from +ohio|eastern|mod +floods|ohio|in +rose|toll|subj +rose|21|to +persons|14|num +since|are|comp1 +are|still|guest +torrential|missing|title +are|torrential|pred +caused|rains|subj +creeks|two|nn +near|creeks|subj +overflow|shadyside|subj +overflow|and|punc +overflow|create|conj +create|shadyside|subj +create|wall|obj +feet|water|nn +feet|15 to 20|nn +wall|feet|of +create|high|mod +raged|flood|subj +raged|valley|through +valley|demolishing|rel +demolishing|valley|subj +tavern|crowded|mod +demolishing|tavern|obj +governor|70|num +governor|houses|nn +governor|celeste|person +declared|governor|subj +declared|state|obj +state|emergency|of +declared|and|punc +declared|sent|conj +sent|governor|subj +sent|national|obj +troops|guard|nn +troops|area|into +area|assist|rel +assist|area|subj +teams|dog|nn +assist|teams|obj +used|troops|obj +used|search|to +survivors|and|punc +few|bodies|nn +survivors|few|conj +homes|damaged|mod +few|homes|of +covered|survivors|obj +covered|by|by-subj +covered|flood|by +insurance|look to|rel +look to|insurance|obj +look to|owners|subj +assistance|federal|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D092.M.100.C.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D092.M.100.C.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..c19c16bbb82730e346ca886bca0685f3c57cdb45 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D092.M.100.C.26.mini.be @@ -0,0 +1,58 @@ +earthquake|that|whn +struck|earthquake|subj +iran|northern|mod +struck|iran|obj +brought|earthquake|subj +brought|reminders|obj +reminders|quake|of +quake|that|whn +devastated|quake|subj +armenia|soviet|nn +devastated|armenia|obj +armenia|1988|in +media|iranian|mod +media|news|nn +reacted|media|subj +reacted|emotion|with +emotion|06/21/1990|on +earthquake|killer|nn +emotion|earthquake|to +earthquake|left|rel +left|that|subj +25,000|estimated|mod +people|earthquake|obj +people|25,000|subj +people|dead|mod +iran|northern|mod +dead|iran|in +died|25,000|about +died|people|subj +iran|eastern|mod +died|iran|in +earthquake|1978|num +iran|earthquake|in +iran|06/23/1990|nn +iran|)|punc +underreporting|deliberately|mod +is|underreporting|pred +number|casualties|of +earthquake|06/21/1990|gen +earthquake|massive|mod +earthquake|fear|out of +backlash|political|mod +fear|backlash|of +leaders|group|of +group|seeking|rel +seeking|group|subj +seeking|overthrow|mod +leadership|country|gen +leadership|islamic|mod +overthrow|leadership|obj +say|leaders|subj +northern iran|06/23/1990|nn +northern iran|)|punc +stuck|northern iran|obj +stuck|06/21/1990|on +stuck|by|by-subj +stuck|earthquake|by +7.3 and 7.7|richter scale|on diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D092.M.100.C.A.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D092.M.100.C.A.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..ddc4aafc97cbcd869673180f4fb3592a79165659 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D092.M.100.C.A.mini.be @@ -0,0 +1,57 @@ +earthquake|magnitude|of +magnitude|7.7|num +hit|earthquake|subj +iran|northwestern|mod +hit|iran|obj +killing|june 21 , 1990|nn +iran|killing|on +hit|at least|mod +people|50,000|num +injuring|200,000|obj +occurred|quake|subj +asleep|inside|mod +floodplain|coastal|mod +hit|floodplain|obj +floodplain|where|whn +deposited|loosely|mod-before +deposited|where|subj +shifts|soil|nn +deposited|shifts|obj +deposited|easily|mod +homes|fragile|mod +homes|adobe|nn +homes|area|in +area|collapse|rel +collapse|area|subj +president|iranian|mod +collapse|president|obj +appealed|homes|subj +aid|international|mod +aid|and|punc +aid|response|conj +for|was|comp1 +was|overwhelming|pred +was|including|mod +including|aid|subj +including|assistance|obj +crisis|hostage|nn +crisis|1979-80|of +side|negative|mod +1979-80|side|on +media|iranian|mod +media|news|nn +were|slow|pred +were|report on|mod +report on|media|subj +report on|disaster|obj +disaster|and|punc +disaster|iranian|conj +iranian|and|punc +iranian|u.s.|conj +blamed|government|obj +blamed|by|by-subj +critics|their|gen +critics|respective|mod +blamed|critics|by +casualties|excessive|mod +critics|casualties|for diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D093.M.100.C.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D093.M.100.C.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..ccabd181e1c52de032b380216cfbaa40b0af4b55 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D093.M.100.C.26.mini.be @@ -0,0 +1,69 @@ +said|it|subj +said|that|c +by|12/16/1988|on +survivors|125|num +rescued|survivors|obj +bodies|55|num +found|bodies|obj +people|seven|nn +missing|people|subj +aircraft|u.s. navy|nn +joined|aircraft|subj +joined|search|obj +search|12/16/1991|on +search|survivors|for +sinking|ferry|nn +survivors|sinking|of +sinking|that|c +471|left|mod +people|sinking|obj +people|471|subj +people|missing|mod +missing|471|subj +waters|shark-infested|mod +waters|red sea|nn +missing|waters|in +missing|but|punc +missing|found|conj +found|471|subj +found|nothing|obj +nothing|but|punc +rafts|empty|mod +rafts|life|nn +nothing|rafts|conj +rafts|and|punc +rafts|debris|conj +12/16/1991|)|punc +engineer|ferry|of +ferry|that|whn +sank|ferry|subj +sank|off|guest +sank|red sea|obj +12/16/1991|port|rel +port|12/16/1991|obj +port|engineer|subj +people|leaving|nn +400|more than|num-mod +people|400|nn +people|missing|rel +missing|people|subj +missing|12/16/1991|on +denied|people|subj +denied|accusations|obj +negligence|widespread|mod +accusations|negligence|of +negligence|part|on +crew|ship|gen +part|crew|of +bodies|12/16/1991|nn +bodies|)|punc +bodies|only|mod +bodies|seven|nn +recovered|bodies|obj +recovered|since|mod +since|went down|comp1 +went down|ferry|subj +went down|leaving|mod +leaving|ferry|subj +people|462|num +missing|people|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D093.M.100.C.H.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D093.M.100.C.H.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..75ac3ce672a2e5e0d27cfdcddbed2fff3d9a6af8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D093.M.100.C.H.mini.be @@ -0,0 +1,55 @@ +capsized|1988|in +ferries|overloaded|mod +capsized|ferries|subj +ganges river|india|gen +capsized|ganges river|in +capsized|killing|mod +killing|ferry|subj +killing|400|obj +'s|meghna river|pred +'s|killing|mod +killing|bangladesh|subj +killing|100|obj +'s|hainan island|pred +'s|killing|mod +killing|china|subj +students|55|num +killing|students|obj +killing|61|obj +capsized|ferry|subj +capsized|guatemala|in +guatemala|1989|in +capsized|killing|mod +killing|ferry|subj +killing|67|obj +capsized|1991|in +capsized|ferries|subj +reefs|striking|mod +capsized|reefs|after +reefs|kenya|off +capsized|killing|mod +killing|ferry|subj +refugees|180|num +refugees|somali|mod +killing|refugees|obj +red sea|killing|appo +killing|352|num +capsizings|other|mod +capsizings|ferry|nn +killed|capsizings|subj +killed|150|obj +krishna river|india|gen +150|krishna river|on +krishna river|1970|in +min|china|gen +133|min|on +river|and|punc +river|71|conj +71|yangtze|on +yangtze|1988|in +sailors|19|num +coast|israel|gen +sailors|coast|off +coast|1990|in +refugees|kenya|off +kenya|1991|in diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D094.M.100.C.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D094.M.100.C.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..603d52b84f96b897fca4ce5de0bb5c08321ef3e8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D094.M.100.C.26.mini.be @@ -0,0 +1,64 @@ +prosecutors|u.s.|nn +pressured|prosecutors|subj +minister|japan|gen +minister|wartime|nn +minister|prime|mod +pressured|minister|obj +hideki tojo|gen.|title +minister|hideki tojo|appo +changing|testimony|obj +trial|his|gen +testimony|trial|at +trial|avoid|rel +avoid|trial|subj +emperor hirohito|incriminating|mod +avoid|emperor hirohito|obj +crimes|war|nn +emperor hirohito|crimes|in +documentary|television|nn +claims|documentary|subj +known|rest|to +rest|world|of +known|he|obj +known|emperor hirohito|as +was|japan|in +given name|his|gen +used|seldom|mod +was|used|pred +newspapers|02/24/1989|nn +newspapers|)|punc +newspapers|english-language|nn +newspapers|published|vrel +published|newspapers|obj +published|japan|in +began|quickly|amod +began|newspapers|subj +began|using|fc +using|newspaper|subj +using|name|obj +name|hirohito|for +using|after|mod +death|his|gen +death|but|punc +death|it|conj +did|not|neg +after|become|comp1 +become|death|subj +become|truly|guest +become|official|obj +official|jan 31|until +become|when|wha +conducted|emperor akihito|subj +conducted|ceremony|obj +became|showa|subj +emperor|late|mod +name|emperor|gen +name|posthumous|mod +became|name|obj +hirohito|08/21/1989|nn +hirohito|)|punc +died|hirohito|subj +died|cancer|of +cancer|jan 7|on +cancer|age|at +age|87|num diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D094.M.100.C.D.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D094.M.100.C.D.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..ad87f11560164804e8f58753817d04be794c464a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D094.M.100.C.D.mini.be @@ -0,0 +1,45 @@ +emperor hirohito|japan|of +died|emperor hirohito|subj +died|1989|in +died|age|at +age|87|of +ascended|he|subj +throne|1926|in +one|over|num-mod +eras|japan|gen +tumultuous|most|mod +eras|tumultuous|mod +one|eras|of +last|world war ii|of +generation|leaders|of +figure|controversial|mod +was|figure|pred +figure|even|pnmod +western|death|nn +western|while|nn +even|western|in +leaders|asian|mod +countries|leaders|gen +leaders|countries|whn +suffered|countries|subj +military|japanese|mod +suffered|military|under +were|cool|pred +were|while|mod +while|regard|comp1 +regard|historians|subj +regard|him|obj +figurehead|powerless|mod +regard|figurehead|as +believe|others|subj +believe|that|c +was|complicit|pred +crimes|japanese|mod +crimes|war|nn +complicit|crimes|in +crimes|died|rel +died|hirohito|subj +died|cancer|of +illness|long|mod +akihito|his|gen +akihito|son|nn diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D095.M.100.C.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D095.M.100.C.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..7f65e3d406bb422887d82074c2f076a6dbf87285 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D095.M.100.C.26.mini.be @@ -0,0 +1,64 @@ +attack|cleveland elementary school|at +came|attack|subj +came|shortly|mod +shortly|noon|before +school|south carolina|nn +school|where|wha +killed|gunman|subj +girls|two 8-year-old|mod +killed|girls|obj +send|sept 26|mod-before +send|school|subj +send|cards|obj +send|and|punc +send|offer|conj +offer|school|subj +offer|words|obj +words|encouragement|of +school|california|nn +encouragement|school|to +school|that|whn +lost|school|subj +pupils|five|nn +lost|pupils|obj +rampage|shooting|nn +pupils|rampage|in +family|-stricken|mod +family|and|punc +family|friends|conj +mourned|family|subj +school|five|amount-value +children|school|nn +deaths|children|of +children|gunned down|vrel +gunned down|children|obj +gunned down|recess|during +gunned down|while|mod +while|buried|comp1 +buried|killer|obj +buried|nearly|mod +town|nearby|mod +unnoticed|town|in +opened fire|patrick purdy|subj +opened fire|cleveland elementary school|outside +rifle|ak-47|nn +rifle|semiautomatic|mod +rifle|assault|nn +cleveland elementary school|rifle|with +opened fire|firing|mod +firing|patrick purdy|subj +100|more than|num-mod +rounds|100|nn +firing|rounds|obj +firing|killing|conj +killing|patrick purdy|subj +children|five|nn +killing|children|obj +killing|and|punc +killing|wounding|conj +wounding|patrick purdy|subj +others|29|num +wounding|others|obj +others|and|punc +teacher|one|nn +others|teacher|conj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D095.M.100.C.H.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D095.M.100.C.H.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..f166706630f46a84d7c1d2f073ea3aab2275b8d4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D095.M.100.C.H.mini.be @@ -0,0 +1,51 @@ +fired|january 16 , 1989 ,|on +fired|patrick edward purdy|subj +rifle|ak-47|nn +rifle|automatic|mod +rifle|assault|mod +fired|rifle|obj +playground|crowded|mod +playground|cleveland elementary school|at +cleveland elementary school|stockton|in +five|killing|mod +stockton|five|appo +children|and|punc +30|wounding|mod +children|30|conj +killing|himself|obj +were|children|pred +refugees|southeast asian|nn +children|refugees|of +were|60%|pred +60%|school|of +translators|students|nn +translators|and|punc +priests|buddhist|mod +translators|priests|conj +assisted|translators|subj +assisted|families|obj +families|and|punc +students|returning|mod +families|students|conj +counseling|a south carolina|person +counseling|school|obj +school|where|wha +attack|similar|mod +occurred|attack|subj +governor|encouragement|nn +governor|deukmejian|person +spoke|governor|subj +service|one|nn +service|memorial|nn +spoke|service|at +made|statements|obj +attended|purdy|subj +attended|cleveland elementary|obj +loner|third|post +loner|grade a|nn +cleveland elementary|loner|through +drifted|he|subj +country|searching|pnmod +searching|work|for +criminal|long|mod +record|criminal|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D096.M.100.C.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D096.M.100.C.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..acb6376bf5e9bb2bbd39bb0db91d258b5f423172 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D096.M.100.C.26.mini.be @@ -0,0 +1,50 @@ +sports illustrated|01/22/1987|nn +sports illustrated|)|punc +taking|sports illustrated|subj +advertisers|300|num +taking|advertisers|obj +advertisers|super bowl xxi|to +super bowl xxi|pasadena|in +taking|weekend|mod +bash|all-out|mod +weekend|bash|for +inc.|11/17/1989|nn +inc.|)|punc +inc.|and|punc +inc.|miller brewing co.|conj +beer|their|gen +sell|beer|obj +games|staging|nn +games|mock|mod +games|football|nn +commercials|television|nn +games|commercials|in +commercials|conjunction|in +conjunction|super bowl xxiv|with +super bowl xxiv|new orleans|in +game|such|pre +staged|game|obj +super bowl|last|post +staged|super bowl|during +was|most|pred +event|watched|mod +event|television|nn +event|week|of +event|viewed|vrel +viewed|event|obj +viewed|by|by-subj +63%|whopping|mod +viewed|63%|by +viewers|tv|nn +63%|viewers|of +viewers|but|punc +viewers|not|punc +joe montana|even|mod +viewers|joe montana|conj +lift|event|subj +lift|cbs|obj +cbs|cellar|out of +race|ratings|nn +cellar|race|in +reported on|it|obj +reported on|01/30/1990|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D096.M.100.C.G.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D096.M.100.C.G.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..e4e23cd33dfe99f0c6807e9260585f12b6ab9612 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D096.M.100.C.G.mini.be @@ -0,0 +1,42 @@ +won|san francisco 49ers|subj +super bowls|1989 and 1990|nn +won|super bowls|obj +won|marking|mod +marking|san francisco 49ers|subj +marking|four|obj +four|four|out of +wins|and|punc +wins|setting|conj +records|players|gen +super bowl|1990|num +rated|lowest|mod +years|21|amount-value +although|watched|comp1 +watched|most|subj +event|tv|nn +watched|event|obj +event|week|of +feature|held|mod-before +held|tampa|in +tampa|1991|in +feature|super bowl xxv|subj +events|local|mod +feature|events|obj +headed|committee|subj +black men|two|nn +headed|black men|by +black men|order|in +order|resolve|rel +resolve|order|subj +80%|area|nn +80%|racial|mod +80%|dispute|nn +80%|only|mod +resolve|80%|obj +value|face|nn +value|super bowl|of +deducted|tickets|obj +deducted|now|mod +rent|free|pnmod +free|nfl|to +nfl|super bowl xxvii|for diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D097.M.100.E.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D097.M.100.E.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..d5d1cc589b9fb546e92dd327b643d255d2bdd005 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D097.M.100.E.26.mini.be @@ -0,0 +1,65 @@ +riley|09/21/1989|nn +riley|)|punc +riley|hurricane|nn +residents|09/25/1989|nn +residents|)|punc +took|residents|subj +took|forecasters|obj +word|their|gen +forecasters|word|at +took|when|wha +warned|they|subj +warned|of|guest +warned|hurricane hugo|of +warned|fury|obj +fury|and|punc +number|low|mod +fury|number|conj +number|deaths|of +storm|powerful|mod +credited|storm|obj +respect|healthy|mod +credited|respect|to +said|authorities|subj +storm|which|whn +caused|storm|subj +caused|billions|obj +billions|damage|in +claimed|storm|subj +claimed|lives|fc +lives|17|subj +lives|south carolina|in +two|only|mod +were|in|pred +area|charleston|nn +were|area|in +area|which|whn +bore|area|subj +bore|brunt|obj +winds|hugo|gen +winds|135|num +winds|mph|nn +brunt|winds|of +hurricane hugo|09/27/1989|nn +hurricane hugo|)|punc +go down|hurricane hugo|subj +books|record|mod +go down|books|in +go down|as|mod +insurers|costliest|mod +insurers|storm|nn +as|faced|comp1 +faced|insurers|subj +faced|so|obj +faced|far|mod +cause|it|subj +rates|property-casualty|mod +rates|premium|nn +rates|rise|rel +rise|rate|subj +rise|immediately|mod +rates|analysts|conj +analysts|and|punc +officials|company|nn +analysts|officials|conj +say|rates|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D097.M.100.E.J.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D097.M.100.E.J.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..0d9a8ac649b66592a024e274e7f1af8f520f2175 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D097.M.100.E.J.mini.be @@ -0,0 +1,61 @@ +companies|two|nn +companies|largest|mod +companies|property|nn +companies|insurance|nn +companies|carolinas|in +farm|state|nn +estimate|nationwide|mod-before +losses|hurricane hugo|nn +estimate|losses|obj +losses|$600 million|at +estimate|making|mod +making|it|obj1 +making|costliest|desc +storm|category 4|nn +hugo|storm|appo +storm|dubbed|vrel +dubbed|storm|obj1 +hurricane|"|punc +hurricane|killer|nn +dubbed|hurricane|obj2 +hurricane|"|punc +mayor|charleston|gen +hurricane|mayor|by +struck|hugo|subj +though|city|nn +though|thursday|nn +though|night|nn +was|there|mod-before +damage|significant|mod +was|damage|pred +two|only|mod +killed|two|obj +charleston|17|num +total|charleston|subj +total|in|guest +credit|south carolina|nn +credit|officials|nn +total|credit|in +number|low|mod +total|number|obj +number|fatalities|of +residents|who|whn +heeded|residents|subj +warnings|hurricane center|nn +heeded|warnings|obj +heeded|and|punc +heeded|evacuated|conj +evacuated|residents|obj +evacuated|storm|before +new york|assisted|vrel +assisted|new york|obj +assisted|by|by-subj +assisted|charleston|by +charleston|revolutionary war|during +repaying|new york|subj +kindness|sending|by +sending|money|obj +money|help|rel +help|money|subj +help|city|obj +recover|kindness|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D098.M.100.E.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D098.M.100.E.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..72b531f70ece0b5d907a3520552943f3f2f466c4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D098.M.100.E.26.mini.be @@ -0,0 +1,61 @@ +discovery|04/25/1990|nn +discovery|)|punc +astronauts|discovery|gen +overcame|astronauts|subj +equipment|balky|mod +overcame|equipment|obj +send|astronaut|subj +send|hubble space telescope|obj +overcame|floating|mod +floating|inf|subj +free|shuttle|from +shuttle|04/25/1990|on +quest|15-year|nn +shuttle|quest|on +quest|secrets|for +secrets|universe|of +delay|and|punc +snag|last-minute|mod +delay|snag|conj +freed|hubble space telescope|obj +discovery|shuttle|nn +freed|discovery|from +discovery|04/25/1990|on +freed|and|punc +drifted|glinting|mod-before +glinting|hubble space telescope|subj +glinting|sunlight|in +freed|drifted|conj +drifted|hubble space telescope|subj +drifted|orbit|into +search|its|gen +search|15-year|nn +orbit|search|on +worlds|new|mod +search|worlds|for +steven hawley|mission|nn +steven hawley|specialist|nn +released|steven hawley|subj +released|hubble|obj +hubble|end|from +arm|shuttle|gen +arm|50-foot-long|nn +arm|mechanical|mod +end|arm|of +released|after|mod +delay|getting|in +getting|steven hawley|subj +getting|one|obj +wings|telescope|gen +wings|solar|mod +one|wings|of +after|unfurled|comp1 +unfurled|delay|subj +discovery|space|nn +discovery|shuttle|nn +miles|46|amount-value +was|miles|pred +was|away|mod +problems|remedy|nn +problems|certain|mod +available|problems|to diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D098.M.100.E.A.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D098.M.100.E.A.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..a6bfe13d761c4117201879aa8bd772e32c0fe970 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D098.M.100.E.A.mini.be @@ -0,0 +1,44 @@ +elated|scientists|obj +launch|successful|mod +elated|launch|with +discovery|space|nn +discovery|shuttle|nn +launch|discovery|of +hst|(|punc +hubble space telescope|hst|abbrev +hst|)|punc +deployment|april 24 , 1990|nn +deployment|telescope|of +scheduled|originally|mod +scheduled|1983|for +problems|technical|mod +delayed|problems|by +although|challenger|nn +although|accident|nn +communications|and|punc +systems|electronics|nn +communications|systems|conj +systems|hst|of +presented|still|mod +some|presented|mod +was|april 28|by +was|in|guest +was|orbit|in +miles|380|amount-value +was|miles|pred +atmosphere|earth|gen +atmosphere|potential|with +potential|providing|of +times|10|amount-value +resolution|times|nn +resolution|better|mod +providing|resolution|obj +resolution|and|punc +resolution|25|conj +sensitivity|times|nn +sensitivity|more|mod +observatories|ground-based|mod +sensitivity|observatories|than +astronauts|discovery|nn +permitted|return|to +return|earth|to diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D099.M.100.E.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D099.M.100.E.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..75a8fc1a5e76188e46b258ed50429ca68816435a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D099.M.100.E.26.mini.be @@ -0,0 +1,58 @@ +marathons|02/20/1987|nn +marathons|)|punc +had|marathons|subj +backing|corporate|mod +had|backing|obj +backing|time|for +field|women|subj +field|for|mod +appears|06/23/1991|on +for|appears|comp1 +appears|san francisco marathon|subj +appears|mighty|mod +president|race|nn +impressive|president|to +president|rich nichols|person +president|who|whn +have|president|subj +have|do|fc +do|much|obj +ranked|highly|mod +women|ranked|mod +get|women|obj +women|enter|rel +enter|woman|subj +top-ranked|most|mod +women|top-ranked|mod +women|u.s.|nn +looking|women|subj +marathon|summer-time|nn +looking|marathon|for +which|run|to +run|and|punc +conditions|san francisco|nn +conditions|version|nn +conditions|offers|nn +conditions|excellent|mod +run|conditions|conj +hills|san francisco|of +make|hills|subj +make|marathon|obj1 +make|challenging|desc +run|)|punc +run|08/08/1992|subj +heat|high|mod +run|heat|in +humidity|high|mod +heat|humidity|appo +levels|high|mod +levels|pollution|nn +course|extraordinary|mod +prove|course|over +marathon|barcelona olympic|nn +marathon|men 's|nn +prove|marathon|subj +prove|one|obj +one|most|of +prove|physically|mod +run|ever|mod-before diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D099.M.100.E.D.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D099.M.100.E.D.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..ba04190eb5c059e12c21cbf756cc74ee23fee5a0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D099.M.100.E.D.mini.be @@ -0,0 +1,56 @@ +attract|marathons|subj +attract|both|punc +athletes|professional|mod +attract|athletes|obj +athletes|as|punc +athletes|well|punc +athletes|as|punc +some|amateur|mod +some|runners|nn +athletes|some|conj +concentrate on|such as|mod-before +concentrate on|los angeles|such as +concentrate on|marathons|subj +concentrate on|commercial|obj +commercial|and|punc +side|moneymaking|mod +commercial|side|conj +cities|while|nn +cities|other|mod +marathons|cities|conj +cities|new york|such as +new york|boston|conj +boston|and|punc +boston|san francisco|conj +others|world-class|nn +others|runners|nn +others|still|nn +marathon|marine corps|nn +marathon|which|whn +bills|marathon|subj +bills|itself|obj +people|"|punc +race|people|gen +are|just|guest +just|sport|for +trips|tour|nn +trips|companies|nn +trips|sponsor|nn +trips|international|mod +are|trips|pred +organized|marathons|around +offering|clients|obj1 +offering|chance|obj2 +chance|run|rel +run|chance|subj +run|some|in +some|most|of +marathons|world|in +is|barrier|pred +barrier|marathon|to +marathon|running|rel +running|marathon|subj +running|john kelley|obj +john kelley|plans|appo +marathon|boston|nn +run|marathon|in diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D100.M.100.E.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D100.M.100.E.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..90d8c8fe509d5271ad338c2c21e3b61365231d48 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D100.M.100.E.26.mini.be @@ -0,0 +1,69 @@ +john lennon|08/08/1988|nn +john lennon|)|punc +john lennon|singer-songwriter|appo +imagine|song|nn +imagine|`|punc +imagine|`|punc +imagine|'|punc +imagine|'|punc +imagine|1969|in +1969|or|punc +1969|'70|conj +biography|that|whn +portrays|biography|subj +portrays|john lennon|obj +john lennon|drug-addled|as +bisexual|anorexic|mod +bisexual|who|whn +raged|bisexual|subj +way|his|gen +raged|way|mod +raged|liverpool|from +liverpool|new york city|to +said|yoko ono|subj +broadcast|national|mod +broadcast|radio|nn +said|broadcast|in +shows|ono|as for +shows|goldman|subj +shows|her|obj +shows|gold-digger|as +gold-digger|who|whn +snorted|gold-digger|subj +snorted|heroin|obj +snorted|up|mod +up|time|to +death|lennon|gen +time|death|of +ono|09/15/1988|nn +ono|)|punc +refuted|ono|subj +refuted|virtually|guest +refuted|all|obj +all|charges|of +refuted|and|punc +refuted|countered|conj +countered|ono|obj +interviews|taped|mod +countered|interviews|through +friends|lennon|nn +interviews|friends|with +friends|and|punc +friends|employees|conj +book|goldman|gen +was|based|pred +sources|unreliable|mod +based|sources|on +tickets|05/05/1990|nn +tickets|)|punc +were|$41|pred +concert|charity|nn +concert|benefit|nn +$41|concert|for +concert|which|whn +featured|concert|subj +featured|program|obj +program|beatles|of +beatles|and|punc +songs|lennon|nn +beatles|songs|conj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D100.M.100.E.F.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D100.M.100.E.F.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..a244c75d2789af777d3e1d1ee8e537ed603bcf49 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D100.M.100.E.F.mini.be @@ -0,0 +1,62 @@ +celebrated|john lennon|obj +celebrated|life|in +life|and|punc +life|death|conj +music|his|gen +death|music|for +music|and|punc +music|commitment|conj +peace|world|nn +had|he|subj +had|detractors|obj +detractors|namely|appo-mod +biographer|celebrity|nn +detractors|biographer|appo +biographer|lives|in +widow|john lennon his|nn +widow|yoko ono|conj +wife|former|mod +yoko ono|wife|conj +wife|and|punc +wife|sons|conj +misdeeds|alleged|mod +misdeeds|contained|vrel +contained|misdeeds|obj +contained|book|in +anniversary|50th|mod +book|anniversary|on +anniversary|his|of +song|his|gen +birth|song|appo +song|imagine|title +was|"|punc +was|broadcast|pred +broadcast|worldwide|pnmod +worldwide|audience|to +audience|one|of +people|billion|subj +people|on|guest +people|tenth|on +people|anniversary|obj +murder|his|gen +anniversary|murder|of +gathered|admirers|subj +liverpool|and|punc +locations|other|mod +liverpool|locations|conj +locations|world|around +world|pay|rel +pay|world|subj +pay|homage|obj +homage|has|rel +has|homage|obj +has|ono|subj +memory|his|gen +memory|alive|pnmod +alive|many|but +believe|memory|subj +believe|does|fc +does|she|subj +does|so|obj +reasons|mercenary|mod +so|reasons|for diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D101.M.100.E.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D101.M.100.E.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..81092cca3968d6db6675ffd63c49c2856c3966bc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D101.M.100.E.26.mini.be @@ -0,0 +1,60 @@ +08/22/1991|)|punc +08/22/1991|told|rel +told|08/22/1991|obj1 +told|he|subj +told|reporters|obj2 +killed|he|subj +killed|himself|obj +killed|rather|mod +arrangement|forced|mod +leaders|coup|nn +arrangement|leaders|with +mikhail gorbachev|08/23/1991|nn +mikhail gorbachev|)|punc +mikhail gorbachev|and|punc +mikhail gorbachev|boris yeltsin|conj +launched|mikhail gorbachev|subj +purge|sweeping|mod +launched|purge|obj +purge|08/23/1991|on +08/23/1991|that|whn +dealt|08/23/1991|subj +dealt|series|obj1 +blows|stunning|mod +series|blows|of +blows|communist party|to +dealt|power structure|obj2 +dealt|including|mod +including|mikhail gorbachev|subj +including|ouster|obj +officials|top|mod +ouster|officials|of +officials|sealing|conj +headquarters|party|nn +sealing|headquarters|of +headquarters|and|punc +headquarters|curtailing|conj +activities|party|nn +curtailing|activities|of +yeltsin|08/23/1991|nn +yeltsin|)|punc +yeltsin|who|whn +led|yeltsin|subj +resistance|nationwide|mod +led|resistance|obj +resistance|coup|to +announced|yeltsin|subj +announced|ban|obj +activities|communist party|nn +ban|activities|on +republic|russian|mod +activities|republic|in +republic|army|conj +units|police|nn +army|units|conj +units|interior ministry|of +interior ministry|and|punc +interior ministry|kgb|conj +which|decades|for +helped|which|subj +rule|communist|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D101.M.100.E.G.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D101.M.100.E.G.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..503816de30caa463a84514d185258763c909cf90 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D101.M.100.E.G.mini.be @@ -0,0 +1,51 @@ +president|soviet|nn +president|mikhail gorbachev|person +returned to|president|subj +returned to|power|obj +power|coup|as +coup|him|against +coup|collapsed|vrel +collapsed|coup|obj +unraveling|swiftly|mod +unraveling|as|mod +as|was|comp1 +was|unable|pred +unable|cope|fc +cope|junta|subj +cope|thousands|with +thousands|people|of +people|who|whn +created|people|subj +created|barricades|obj +parliament|russian|nn +president|russian|mod +stronghold|president|gen +president|yeltsin|person +legislature|national|mod +'s|reinstatement|pred +reinstatement|and|punc +reinstatement|communist party|conj +'s|seeking|mod +seeking|gorbachev|subj +seeking|salvage|mod +image|its|gen +salvage|image|obj +issue|real|mod +failure|coup|nn +issue|failure|for +was|not|neg +was|gorbachev|pred +gorbachev|but|punc +culture|new|mod +culture|political|mod +gorbachev|culture|conj +culture|democracy|of +initiated|he|subj +gorbachev|first|post +initiated|gorbachev|at +appeared|yeltsin|subj +appeared|equals|as +equals|but|punc +equals|yeltsin|conj +people|russian|mod +close|people|to diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D102.M.100.E.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D102.M.100.E.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..148fe04d716832f0461ba235921d0d3972fe8fd5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D102.M.100.E.26.mini.be @@ -0,0 +1,82 @@ +lucille ball|04/26/1989|nn +lucille ball|)|punc +comedienne|gifted|mod +lucille ball|comedienne|appo +comedienne|who|whn +brought|comedienne|subj +brought|laughter|obj +laughter|millions|to +lucille ball|04/26/1989|nn +lucille ball|)|punc +showgirl|leggy|mod +lucille ball|showgirl|conj +showgirl|model|conj +model|and|punc +queen|b-grade|mod +queen|movie|nn +model|queen|conj +queen|whose|whn +hair|pumpkin-colored|mod +hair|and|punc +hair|genius|conj +genius|comedy|for +made|queen|obj1 +made|hair|subj +made|her|desc +icon|television|of +years|early|mod +died|years|mod-before +died|icon|subj +died|early|desc +early|04/26/1989|on +died|week|mod +week|undergoing|after +undergoing|icon|subj +surgery|emergency|mod +surgery|heart|nn +undergoing|surgery|obj +ball|04/26/1989|nn +ball|)|punc +ball|miss|title +ball|who|whn +had|ball|subj +attack|heart|nn +had|attack|obj +had|and|punc +had|had|conj +had|ball|subj +surgery|throat|nn +had|surgery|obj +surgery|1988|in +underwent|ball|subj +underwent|surgery|obj +surgery|cedars-sinai|at +cedars-sinai|april 18|on +april 18|replace|rel +replace|april 18|subj +aorta|her|gen +replace|aorta|obj +aorta|and|punc +aorta|aortic valve|conj +replace|and|punc +replace|getting out|conj +getting out|april 18|subj +getting out|bed|of +getting out|eating|conj +eating|april 18|subj +eating|and|punc +walking|even|amod +eating|walking|conj +walking|april 18|subj +walking|room|around +days|recent|mod +room|days|in +burial|private|mod +planned|burial|obj +planned|reportedly|mod +services|funeral|nn +reportedly|services|with +services|accordance|in +ball|miss|title +wishes|ball|gen +accordance|wishes|with diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D102.M.100.E.D.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D102.M.100.E.D.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..357912cfd5fee16d223314594dedda5cee627f8a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D102.M.100.E.D.mini.be @@ -0,0 +1,48 @@ +lucille ball|who|whn +died|lucille ball|subj +died|april 1989|in +died|age|at +age|77|of +made|she|subj +craft|her|gen +look|craft|subj +look|easy|desc +easy|spontaneous|conj +spontaneous|and|punc +spontaneous|unrehearsed|conj +series|finest|mod +series|television|in +television|"|punc +television|i love lucy|appo +starred|she|subj +desi arnaz|her|gen +desi arnaz|husband|nn +along|desi arnaz|with +along|and|punc +along|together|conj +founded|they|subj +founded|desilu|obj +productions|which|whn +took over|productions|subj +took over|rko studios|obj +rko studios|and|punc +rko studios|television|conj +shows|produced|mod +shows|popular|mod +shows|television|nn +had|couple|subj +children|two|nn +had|children|obj +condolences|1960|num +divorced|condolences|in +condolences|poured|vrel +poured|condolences|obj +poured|form|in +form|country|all over +was|credited|pred +credited|helping|with +helping|establish|mod +establish|television|obj +leading|nation|gen +television|leading|as +industry|entertainment|nn diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D103.M.100.G.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D103.M.100.G.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..b35c1d31da2f86e1f1bbd5c9076f4ded46b1f25f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D103.M.100.G.26.mini.be @@ -0,0 +1,53 @@ +earthquake|that|whn +struck|earthquake|subj +iran|northern|mod +struck|iran|obj +brought|earthquake|subj +brought|reminders|obj +reminders|quake|of +quake|that|whn +devastated|quake|subj +armenia|soviet|nn +devastated|armenia|obj +armenia|1988|in +quake|armenian|nn +measured|quake|obj +measured|6.9|at +6.9|richter scale|on +shook|06/21/1990|on +shook|earthquake|subj +shook|earth|obj +earth|magnitude|with +magnitude|7.7|of +7.7|u.s. geological survey|according to +50,000|estimated|mod +50,000|dead|pnmod +earthquake|iran|nn +dead|earthquake|in +make|50,000|subj +make|it|obj1 +quake|world|gen +deadliest|fourth|mod +quake|deadliest|mod +make|quake|desc +half-century|past|mod +quake|half-century|in +iran|06/25/1990|nn +iran|)|punc +iran|sept 16 , 1978 ,|appo-mod +iran|7.7|appo +7.7|25,000|num +writer salman rushdie|06/26/1990|nn +writer salman rushdie|)|punc +writer salman rushdie|who|whn +sentenced|writer salman rushdie|obj +sentenced|die|mod +zealots|iranian|mod +die|zealots|by +donated|writer salman rushdie|subj +donated|$8,600|obj +$8,600|victims|to +earthquake|last week|gen +earthquake|devastating|mod +victims|earthquake|of +earthquake|iran|in diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D103.M.100.G.A.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D103.M.100.G.A.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..54213191782d173b6f80385fe32598de7e319952 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D103.M.100.G.A.mini.be @@ -0,0 +1,62 @@ +earthquake|magnitude|of +magnitude|7.7|num +hit|earthquake|subj +iran|northwestern|mod +hit|iran|obj +killing|june 21 , 1990|nn +iran|killing|on +hit|at least|mod +people|50,000|num +people|and|punc +people|leaving|conj +leaving|400,000|num +homeless|occurred|rel +occurred|homeless|obj +occurred|quake|subj +were|inside|pred +were|asleep|mod +were|and|punc +were|hit|conj +floodplain|coastal|mod +hit|floodplain|obj +floodplain|where|whn +deposited|loosely|mod-before +deposited|where|subj +shifts|soil|nn +deposited|shifts|obj +deposited|easily|mod +homes|fragile|mod +homes|adobe|nn +homes|area|in +area|collapse|rel +collapse|area|subj +president|iranian|mod +collapse|president|obj +aid|international|mod +aid|and|punc +aid|response|conj +for|was|comp1 +was|overwhelming|pred +was|both|mod +both|countries|from +government|iran|gen +government|islamic|mod +friendly|government|to +to|and|punc +to|from|conj +assistance|those|nn +assistance|hostile|mod +to|assistance|from +assistance|united|from +was|first|pred +crisis|hostage|nn +was|crisis|since +crisis|1979-80|of +critics|their|gen +critics|respective|mod +u.s.|and|punc +governments|iranian|mod +u.s.|governments|conj +toll|high|mod +toll|death|nn +governments|toll|for diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D104.M.100.G.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D104.M.100.G.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..a1ec7e86281ed31f5fe6b25f1cdb56e9e36b5bda --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D104.M.100.G.26.mini.be @@ -0,0 +1,76 @@ +students|beijing university|nn +put up|students|subj +put up|posters|obj +posters|praising|rel +praising|poster|subj +praising|him|obj +praising|and|punc +criticizing|indirectly|amod +praising|criticizing|conj +criticizing|poster|subj +criticizing|opponents|obj +opponents|who|whn +forced|opponents|subj +resignation|his|gen +forced|resignation|obj +demonstrations|student|nn +resignation|demonstrations|after +demonstrations|1986-87|in +april 30|06/03/1989|nn +april 30|)|punc +april 30|_|punc +ziyang|beijing|gen +ziyang|communist party|nn +ziyang|chief|mod +ziyang|zhao|nn +april 30|ziyang|appo +meets with|april 30|subj +representatives|student|nn +meets with|representatives|obj +dawn|06/03/1989|nn +dawn|)|punc +broke|dawn|subj +broke|06/04/1989|on +tiananmen square|battle-scarred|mod +broke|tiananmen square|over +tiananmen square|tanks|with +tanks|and|punc +ruling|rifle-toting|mod +ruling|troops|nn +tanks|ruling|conj +expanse|vast|mod +ruling|occupied|rel +occupied|ruling|obj +occupied|expanse|subj +occupied|day|mod +occupied|before|mod +before|students|by +students|seeking|rel +seeking|student|subj +society|freer|mod +seeking|society|obj +rulers|their|gen +rulers|communist|mod +society|rulers|from +battle|tiananmen|for +fought|primarily|amod +fought|battle|obj +fought|streets|in +streets|leading to|rel +leading to|street|subj +leading to|square|obj +square|where|wha +scores|people|of +fell|scores|subj +fell|trying|mod +trying|score|subj +trying|prevent|fc +prevent|battle|subj +prevent|columns|obj +columns|troops|of +troops|and|punc +vehicles|armored|mod +vehicles|military|nn +troops|vehicles|conj +vehicles|moving|from +moving|students|on diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D104.M.100.G.C.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D104.M.100.G.C.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..bf4e58e40cc893ea5f178a12ba8a469fc424ca5c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D104.M.100.G.C.mini.be @@ -0,0 +1,53 @@ +firing|indiscriminately|mod +indiscriminately|crowds|on +troops|advanced|mod +troops|chinese|nn +broke through|troops|subj +protesters|reform-minded|mod +barricades|protesters|of +protesters|late|pnmod +june1989|3|num +late|june1989|on +square|rebuffed|after +attempts|earlier|mod +rebuffed|attempts|in +rebuffed|early|mod +day|next|post +rebuffed|day|mod +day|routed|rel +routed|day|obj +routed|they|subj +surviving|demonstrators|obj +demonstrators|who|whn +fled|demonstrators|subj +fled|square|obj +square|occupied|rel +occupied|square|obj +occupied|that|subj +weeks|three|amount-value +occupied|weeks|for +defiance|government|of +orders|defiance|subj +orders|died|fc +died|thousands|subj +days|two|amount-value +died|days|in +days|violence|of +was|climax|pred +climax|trouble|of +trouble|that|whn +escalated|trouble|subj +escalated|april|since +demonstrations|later|mod +cities|other|mod +cities|large|mod +cities|chinese|nn +demonstrations|cities|in +protested|demonstrations|subj +slaughter|beijing|nn +protested|slaughter|obj +suspended|united states|subj +military|all|mod +sales|military|mod +suspended|sales|obj +sales|china|to diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D105.M.100.G.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D105.M.100.G.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..1fa5fb1fe6e76eb3bdd752f54dab1097d73cdc5a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D105.M.100.G.26.mini.be @@ -0,0 +1,71 @@ +gorbachev|12/30/1990|nn +gorbachev|)|punc +gave|also|amod +gave|gorbachev|subj +days|republic|nn +days|10|amount-value +gave|days|obj +days|dissolve|rel +dissolve|days|subj +guard|new|mod +guard|national|mod +dissolve|guard|obj +dissolve|and|punc +dissolve|come up with|conj +come up with|days|subj +come up with|measures|obj +measures|guaranteeing|rel +guaranteeing|measure|subj +rights|equal|mod +guaranteeing|rights|obj +ethnic groups|all|pre +rights|ethnic groups|for +borders|its|gen +ethnic groups|borders|within +russia|07/15/1992|nn +russia|)|punc +russia|and|punc +russia|georgia|conj +georgia|07/14/1992|on +deployed|russia|subj +troops|'blue|nn +troops|helmet|nn +troops|'|punc +deployed|troops|obj +troops|stop|rel +stop|troop|subj +fighting|ethnic|mod +stop|fighting|obj +region|disputed|mod +fighting|region|in +region|south ossetia|of +operation|first|post +operation|peace-keeping|mod +south ossetia|operation|in +operation|collapse|since +collapse|soviet union|of +reports|reuter|nn +soviet union|reports|appo +reports|moscow|from +community|international|mod +starting|community|subj +starting|look|mod +look|community|subj +look|conflict|beyond +yugoslavia|former|mod +conflict|yugoslavia|in +starting|and|punc +starting|becoming|conj +becoming|community|subj +aware|increasingly|mod +becoming|aware|desc +magnitude|true|mod +aware|magnitude|of +magnitude|and|punc +magnitude|seriousness|conj +conflicts|ethnic|mod +ethnic|and|punc +ethnic|political|conj +seriousness|conflicts|of +soviet union|former|mod +conflicts|soviet union|in diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D105.M.100.G.C.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D105.M.100.G.C.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..a33c3a2b38811d049d0778268b155fe183f77464 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D105.M.100.G.C.mini.be @@ -0,0 +1,54 @@ +unrest|ethnic|mod +erupted|unrest|subj +years|last|post +erupted|years|in +years|soviet union|of +soviet union|dispatched|rel +dispatched|soviet union|obj +dispatched|kremlin|subj +troops|check|rel +check|troop|subj +check|violence|obj +violence|generated|vrel +generated|violence|obj +generated|by|by-subj +generated|some|by +100|ussr|gen +100|more than|num-mod +some|100|of +unrest|ethnic|mod +proliferated|unrest|subj +demise|soviet union|gen +proliferated|demise|after +fighting|serious|mod +fighting|ethnic-driven|mod +occurred|fighting|subj +occurred|armenia|in +armenia|azerbaijan|appo +azerbaijan|georgia|appo +georgia|khirghizia|appo +kazakhstan|uzbekistan|conj +uzbekistan|tajikistan|conj +tajikistan|and|punc +tajikistan|moldavia|conj +killed|one hundred thousand|obj +russia|tajikistan|nn +russia|in|nn +russia|late 1992|nn +sent|russia|subj +sent|troops|obj +troops|caucasus|to +caucasus|and|punc +caucasus|tajikistan|conj +community|international|mod +feared|community|subj +feared|destabilization|obj +in|former|mod +in|soviet union|nn +destabilization|in|of +was|call|pred +soviet union|restored|mod +call|soviet union|for +soviet union|deal with|rel +deal with|soviet union|subj +deal with|ethnicity|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D106.M.100.G.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D106.M.100.G.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..91e1be2531bf6675de75e67e14134334ce42383f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D106.M.100.G.26.mini.be @@ -0,0 +1,66 @@ +nelson mandela|05/08/1988|nn +nelson mandela|)|punc +attorney|and|punc +attorney|activist|conj +activist|who|whn +worked|activist|subj +worked|apartheid|against +representative|african national congress|of +said|representative|subj +said|on|guest +said|11/12/1988|on +government|south african|nn +said|release|fc +release|government|subj +leader|black|mod +leader|nationalist|nn +release|leader|obj +leader|nelson mandela|person +leader|as|mod +mandela|11/13/1988|nn +mandela|)|punc +leader|70-year-old|mod +leader|anc|of +mandela|jailed|rel +jailed|mandela|obj +jailed|leader|subj +sentenced|27 years ago|mod-before +sentenced|mandela|obj +sentenced|life|to +life|prison|in +prison|conspiring|for +conspiring|mandela|subj +conspiring|overthrow|fc +overthrow|mandela|subj +government|south african|nn +overthrow|government|obj +dominated|bars|behind +dominated|nelson mandela|subj +dominated|fight|obj +rights|black|mod +fight|rights|for +rights|south africa|in +mandela|02/11/1990|nn +mandela|)|punc +joins|mandela|subj +joins|african national congress|obj +african national congress|age|at +age|26|num +joins|later|mod +joins|becoming|mod +becoming|mandela|subj +becoming|president|obj +youth league|group|gen +president|youth league|of +mandela|02/11/1990|nn +mandela|)|punc +named|mandela|obj1 +named|leader|obj2 +leader|campaign|of +named|and|punc +named|breaks|conj +breaks|mandela|subj +breaks|curfew|obj +act|first|post +curfew|act|as +act|defiance|of diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D106.M.100.G.F.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D106.M.100.G.F.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..1ae35bac0067bfed6ec4f18d372ea497f59408f2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D106.M.100.G.F.mini.be @@ -0,0 +1,53 @@ +nelson mandela|leader|appo +opposition|african national congress|gen +leader|opposition|in +policy|south africa|gen +policy|apartheid|of +years|spent|mod +27|nearly|num-mod +years|27|amount-value +years|prison|in +life|prison|in +prison|1964|in +prison|conspiring|for +conspiring|overthrow|to +government|became|rel +became|government|obj +became|he|subj +rallying point|nations|for +nations|pressuring|rel +pressuring|nations|obj +pressuring|that|subj +south africa|end|rel +end|south africa|subj +leaders|its|gen +leaders|all-white|mod +leaders|government|nn +leaders|world|nn +end|leaders|obj +hailed|south africa|subj +release|mandela|gen +release|1990|in +release|and|punc +release|he|conj +welcomed|release|obj +welcomed|hero|as +welcomed|when|wha +traveled|he|subj +including|visit|obj +-fighting|new york city|nn +visit|-fighting|to +elements|black|mod +-fighting|elements|among +mandela|complicated|mod +role|mandela|gen +role|negotiations|in +negotiations|end|rel +end|negotiation|subj +rule|white-minority|mod +end|rule|obj +also|south africa|nn +wife|mandela|gen +also|wife|appo +wife|winnie|appo +imprisoned|also|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D107.M.100.G.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D107.M.100.G.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..551abe1fdc8473be58705a22d2e0f186dcf5f550 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D107.M.100.G.26.mini.be @@ -0,0 +1,55 @@ +drought|crippling|mod +drought|hitting|rel +hitting|drought|subj +hitting|north america|obj +reduce|drought|subj +stocks|world|nn +stocks|grain|nn +reduce|stocks|obj +stocks|levels|to +levels|that|whn +cause|levels|subj +shortages|food|nn +cause|shortages|obj +countries|poor|mod +shortages|countries|in +countries|u.n.|appo +u.n.|reported on|rel +reported on|u.n.|obj +reported on|food and agriculture organization|subj +reported on|07/11/1988|mod +drought|united states|in +ended|drought|subj +ended|now|mod +production|grain|nn +fall|production|subj +levels|low|mod +close|levels|to +levels|1983|of +drought|and|punc +participation|farmers|gen +drought|participation|conj +program|government|nn +program|crop|nn +program|reduction|nn +participation|program|in +decreased|drought|subj +decreased|output|obj +reported|agency|subj +decreased|reported|mod +georgia|07/16/1988|nn +georgia|)|punc +industry|georgia|gen +industry|carpet|nn +reduce|industry|subj +reduce|production|obj +reduce|and|punc +reduce|lay|conj +lay|industry|subj +lay|workers|off +lay|if|c +continues|drought|subj +period|extended|mod +continues|period|for +officials|industry|nn +said|officials|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D107.M.100.G.H.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D107.M.100.G.H.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..fb1ee7d9674df156a38fa4ba85e44cc7e45b3d13 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D107.M.100.G.H.mini.be @@ -0,0 +1,74 @@ +looked|mid-july , 1988|in +looked|drought|subj +drought|record-breaking|mod +drought|further|mod +predicted|drought|obj +records|past|mod +brought|records|on +storms|severe|mod +brought|storms|subj +brought|tornadoes|obj +damage|hail|nn +tornadoes|damage|conj +damage|and|punc +damage|lightning-sparked|conj +states|fires|nn +issued|states|subj +weather|heat|nn +weather|alerts|nn +issued|weather|obj1 +issued|experts|obj2 +experts|who|whn +attended|experts|subj +symposium|drought|nn +attended|symposium|obj +attention|continued|mod +attention|climate|to +climate|and|punc +crop|greenhouse-effect|mod +crop|reduction|nn +climate|crop|conj +declines|attention|subj +forecast|and|punc +futures|grain|nn +forecast|futures|conj +fell|forecast|subj +domestic|adequate|mod +fell|domestic|obj +supplies|export|nn +expected|supplies|obj +ups|railroads|conj +railroads|and|punc +railroads|truckers|conj +transported|ups|subj +transported|hay|obj +aid|free|mod +aid|federal|mod +hay|aid|for +loans|state|nn +aid|loans|appo +loans|farmers|to +controls|eased|mod +controls|future|mod +controls|crop|nn +proposed|controls|obj +visited|reagan|subj +farmers|drought|nn +farmers|areas|nn +visited|farmers|obj +reneging|insurers|obj +water|drinking|nn +hauled|water|obj +flows|dam|nn +reduced|flows|subj +reduced|livestock|obj +cannery|sales|mod +cannery|increased|mod +cannery|mill|conj +mill|and|punc +projects|logging|nn +projects|jobs|nn +projects|fell|mod +projects|highway|nn +mill|projects|conj +accelerated|cannery|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D108.M.100.G.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D108.M.100.G.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..7759afbb06f9456fdc4e430ba46424ece3241ed7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D108.M.100.G.26.mini.be @@ -0,0 +1,70 @@ +ambassador|mohammad abulhasan|gen +ambassador|united nations|to +troops|iraq|gen +troops|led|vrel +led|troops|obj +led|by|by-subj +350|about|num-mod +tanks|350|amount-value +led|tanks|by +crossed|troops|subj +crossed|border|obj +border|dawn|at +dawn|08/02/1990|on +crossed|and|punc +crossed|seized|conj +seized|troops|subj +palace|kuwaiti|mod +seized|palace|obj +palace|and|punc +miles|government|nn +miles|buildings|nn +miles|40|amount-value +palace|miles|conj +seized|away|mod +kuwait|08/02/1990|nn +kuwait|)|punc +sheik|kuwait|gen +sheik|saad|person +al-sabah|al-abdullah|nn +fled|al-sabah|subj +fled|safety|to +safety|saudi arabia|in +here|08/03/1990|nn +here|)|punc +chronology|brief|mod +is|chronology|pred +chronology|dispute|in +dispute|iraq|between +iraq|and|punc +iraq|kuwait|conj +production|oil|nn +kuwait|production|over +production|and|punc +border|their|gen +border|common|mod +production|border|conj +july 17|08/03/1990|nn +july 17|)|punc +president|iraqi|mod +president|saddam hussein|person +accuses|president|subj +accuses|kuwait|obj +kuwait|and|punc +kuwait|united arab emirates|conj +united arab emirates|flooding|of +flooding|president|subj +market|oil|nn +flooding|market|obj +flooding|and|punc +flooding|driving|conj +driving|president|subj +driving|prices|obj +driving|down|mod +united arab emirates|and|punc +united arab emirates|that|conj +iraq $14 billion|move|nn +iraq $14 billion|cost|nn +revenue|lost|mod +revenue|oil|nn +iraq $14 billion|revenue|in diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D108.M.100.G.I.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D108.M.100.G.I.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..144372b1e69970bd529d8e5ff208c32630bd5a97 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D108.M.100.G.I.mini.be @@ -0,0 +1,50 @@ +two weeks|accusations|of +invaded|iraq|subj +kuwait|tiny|mod +invaded|kuwait|obj +kuwait|august 2|on +troops|100,000|num +troops|battle-trained|mod +taking|quickly|amod +while|country|mod +taking|while|obj +emir|kuwaiti|mod +fled|refugees|subj +fled|saudi arabia|to +began|iraq|subj +began|rounding up|mod +rounding up|iraq|subj +nationals|foreign|mod +rounding up|nationals|obj +citizens|iraqi|mod +nation|citizens|with +citizens|taken|rel +taken|foreigners|obj +taken|iraq|to +flown|some|obj +flown|jordan reactions|to +jordan reactions|invasion|to +been|strong|pred +passed|unanimously|mod-before +passed|nations security council|subj +passed|trade|obj +trade|and|punc +sanctions|military|mod +trade|sanctions|conj +sanctions|and|punc +sanctions|president|conj +said|bush|subj +said|defend|fc +defend|he|subj +iran|u.s.|nn +iran|interests|nn +defend|rejoiced|fc +rejoiced|iran|subj +enforcing|sanctions|obj +enforcing|as|mod +prices|oil|nn +as|soar|comp1 +soar|prices|subj +begins|iraq|subj +preparations|defensive|mod +begins|preparations|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D109.M.100.H.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D109.M.100.H.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..3a513c202baba4c868d6eaac571d0ff32b42faa3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D109.M.100.H.26.mini.be @@ -0,0 +1,52 @@ +china|central|mod +province|china|gen +province|hunan|nn +capital|province|of +been|hit|pred +hit|floods|by +floods|wake|in +wake|succession|of +succession|rainstorms|of +reaches|upper|mod +upper|and|punc +upper|middle|conj +rainstorms|reaches|on +reaches|xiangjiang river|of +caused|flood|subj +losses|serious|mod +caused|losses|obj +losses|people|rel +people|loss|subj +people|along|guest +people|banks|obj +banks|river|of +people|especially|mod +especially|changsha|in +people|sources|according to +most|06/19/1994|nn +most|)|punc +people|15,000|num +most|people|of +people|affected|vrel +affected|people|obj +affected|by|by-subj +affected|flood|by +evacuated|there|mod-before +evacuated|most|obj +places|safer|mod +evacuated|places|to +flood|)|punc +flood|06/22/1994|subj +days|lasting|mod +lasting|ten|for +lasting|or|punc +lasting|more|conj +flood|days|obj +brought about|fujian province|subj +losses|heavy|mod +brought about|losses|obj +losses|agriculture|in +brought about|there|mod +hit|worst|nn +is|hit|pred +hit|flood|by diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D109.M.100.H.B.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D109.M.100.H.B.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..22ee487bd1a355266a1e29e1d9a4fbb13fdd5359 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D109.M.100.H.B.mini.be @@ -0,0 +1,64 @@ +floods|called|rel +called|worst|desc +years|100|amount-value +worst|years|in +hit|floods|subj +parts|major|mod +hit|parts|obj +parts|guangdong|of +guangdong|guangxi|appo +hunan|jiangxi|conj +jiangxi|fujian|conj +fujian|and|punc +provinces|zhejiang|nn +fujian|provinces|conj +provinces|caused|rel +caused|provinces|obj2 +caused|they|obj1 +caused|by|by-subj +rains|torrential|mod +caused|rains|by +xiangjiang|xunjiang|conj +xunjiang|xijiang|conj +xijiang|and|punc +most|beijiang|nn +most|river|nn +most|valleys|nn +most|cities|nn +xijiang|most|conj +where|affected|mod +changsha|zhuzhou|conj +zhuzhou|and|punc +zhuzhou|xiangtan|conj +xiangtan|hunan province|in +hunan province|wuzhou|appo +guangxi province|and|punc +guangxi province|sanming|conj +official|fujian province central party|nn +sanming|official|in +official|wen jiabao|person +changsha|zhuzhou|conj +zhuzhou|xiangtan|conj +xiangtan|and|punc +cities|jiangxi|nn +xiangtan|cities|conj +cities|offer|rel +offer|city|subj +offer|appreciation|obj +encouragement|and|punc +encouragement|guidance|conj +fighting|ongoing|mod +fighting|flood|nn +guidance|fighting|for +fighting|and|punc +work|relief|nn +fighting|work|conj +production|industrial|mod +industrial|and|punc +industrial|agricultural|conj +resumption|production|of +production|emphasized|rel +emphasized|he|subj +emphasized|measures|obj +crop|rice|nn +salvage|crop|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D110.M.100.H.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D110.M.100.H.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..11e85af33a74107f45a7ecc5b4f2fc18dbbfd2da --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D110.M.100.H.26.mini.be @@ -0,0 +1,74 @@ +u.n. security council|08/02/1990|on +condemned|swiftly|mod-before +condemned|u.n. security council|subj +invasion|iraq|gen +condemned|invasion|obj +invasion|kuwait|of +condemned|demanding|mod +demanding|u.n. security council|subj +withdrawal|unconditional|mod +demanding|withdrawal|obj +troops|iraqi|mod +withdrawal|troops|of +demanding|and|punc +demanding|calling for|conj +calling for|u.n. security council|subj +negotiations|immediate|mod +calling for|negotiations|obj +negotiations|countries|between +troops|iraq|gen +troops|led|vrel +led|troops|obj +led|by|by-subj +350|about|num-mod +tanks|350|amount-value +led|tanks|by +crossed|troops|subj +crossed|border|obj +border|dawn|at +dawn|08/02/1990|on +crossed|and|punc +crossed|seized|conj +seized|troops|subj +palace|kuwaiti|mod +seized|palace|obj +palace|and|punc +miles|government|nn +miles|buildings|nn +miles|40|amount-value +palace|miles|conj +seized|away|mod +cause|08/02/1990|nn +cause|)|punc +cause|conflict|of +president|saddam hussein|person +president|iraq|of +accused|president|subj +accused|kuwait|obj +kuwait|stealing|of +stealing|president|subj +stealing|oil|obj +territory|its|gen +oil|territory|from +stealing|and|punc +stealing|forcing|conj +forcing|president|subj +forcing|down|guest +prices|oil|nn +forcing|prices|obj +prices|overproduction|through +saudi arabia|08/04/1990|nn +saudi arabia|)|punc +subdued|saudi arabia|obj +reaction|its|gen +subdued|reaction|in +invasion|iraq|gen +reaction|invasion|to +invasion|kuwait|of +kuwait|which|whn +places|kuwait|subj +forces|iraqi|mod +places|forces|obj +kingdom|oil-rich|mod +border|kingdom|gen +forces|border|near diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D110.M.100.H.C.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D110.M.100.H.C.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..01ea9335eb35758ce38340bd587f1354dbde71f9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D110.M.100.H.C.mini.be @@ -0,0 +1,58 @@ +army|iraq|gen +army|powerful|mod +met|army|subj +met|resistance|obj +met|when|wha +invaded|it|subj +invaded|kuwait|obj +kuwait|2 august 1990|on +came|invasion|subj +came|as|mod +president|surprise|nn +president|iraqi|mod +president|hussein|person +as|accused|comp1 +accused|president|subj +accused|kuwait|obj +kuwait|stealing|of +stealing|president|subj +stealing|oil|obj +area|border|nn +area|and|punc +goals|exceeding|mod +goals|opec|nn +goals|production|nn +area|goals|conj +voted|united nations security council|subj +voted|6 august|on +6 august|impose|rel +impose|6 august|subj +impose|trade|obj +trade|and|punc +trade|military|conj +sanctions|iraq|on +importers|major|mod +importers|oil|nn +iraq|had|rel +had|iraq|obj +had|importers|subj +embargoed|already|mod-before +embargoed|sanctions|subj +prices|iraqi|mod +prices|oil|nn +prices|oil|nn +embargoed|prices|obj +moved|united states|subj +carrier|aircraft|nn +carrier|arabian sea iraq|into +moved|warned|fc +warned|carrier|subj +people|its|gen +warned|people|obj +attack|possible|mod +attack|united states|nn +president|bush|person +said|only|mod-before +said|president|subj +said|that|c +were|open|pred diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D111.M.100.H.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D111.M.100.H.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..223fb6379515f9d1efb083fb1ccbb21f800757df --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D111.M.100.H.26.mini.be @@ -0,0 +1,61 @@ +divers|05/21/1988|nn +divers|)|punc +divers|greek|nn +plunged|divers|subj +feet|162|num +plunged|feet|obj +feet|aegean sea|beneath +beneath|and|punc +beneath|into|conj +beneath|history|into +plunged|finding|mod +finding|diver|subj +warship|treasure-laden|mod +warship|turkish|nn +finding|warship|obj +warship|sunk|vrel +sunk|warship|obj +sunk|by|by-subj +revolutionaries|greek|nn +sunk|revolutionaries|by +revolutionaries|1822|in +ship|wooden|mod +ship|sailing|nn +remains|ship|of +found|remains|obj +found|island|near +island|chios|of +aegean|eastern|mod +chios|aegean|in +aegean|point|at +point|where|wha +accounts|historical|mod +place|accounts|subj +place|sinking|obj +ship|ottoman|nn +sinking|ship|of +place|peter nicolaides|according to +peter nicolaides|diver|conj +diver|and|punc +expert|salvage|nn +diver|expert|conj +leopold gratz|01/25/1989|nn +leopold gratz|)|punc +leopold gratz|president|conj +president|parliament|of +parliament|and|punc +parliament|one|conj +powerful|most|mod +politicians|powerful|mod +one|politicians|of +politicians|socialist party|in +socialist party|resigned|vrel +resigned|socialist party|obj +resigned|01/25/1989|on +resigned|scandal|over +scandal|surrounding|rel +surrounding|scandal|subj +sinking|mysterious|mod +surrounding|sinking|obj +sinking|ship|of +surrounding|12 years ago|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D111.M.100.H.C.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D111.M.100.H.C.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..ae77c2fdd1eddbe03538d81d2dbee62ae6c77cee --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D111.M.100.H.C.mini.be @@ -0,0 +1,51 @@ +sank|freighters|subj +sank|off|guest +sank|cape cod|obj +cape cod|1989|in +in|and|punc +in|in|conj +in|north sea|in +austrian|1988 a 1989|nn +north sea|austrian|in +grew out of|scandal|subj +grew out of|1977|obj +1977|sinking|rel +sinking|1977|subj +in|lucona|nn +sinking|in|of +in|1989|num +ship|argentine|mod +ship|supply|nn +in|antarctica|nn +in|1994|num +vessel|korean|nn +vessel|fishing|nn +()|fishing|while +fishing|illegally|mod +sunk|argentina|near +sunk|once|mod-before +once|'s|comp1 +'s|yacht|pred +sunk|purposely|amod +sunk|ostwind|obj +sunk|florida|off +boat|american|mod +boat|pleasure|nn +sunk|boat|obj +sunk|by|by-subj +in|aggressive|mod +in|whales|nn +sunk|in|by +in|1994|num +estonia|ferry|nn +in|sank|rel +sank|in|obj +sank|estonia|subj +bismarck|german|mod +bismarck|battleship|nn +located|1989|in +vessel|sunk in|vrel +sunk in|vessel|obj +sunk in|1822|mod +found|vessel|obj +found|1988|in diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D112.M.100.H.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D112.M.100.H.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..2a2c30bad10681f444d7b5ca9aa7cfbb7843c253 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D112.M.100.H.26.mini.be @@ -0,0 +1,57 @@ +kevin maxwell|12/11/1991|nn +kevin maxwell|)|punc +quoted|also|mod-before +quoted|kevin maxwell|obj +saying|kevin maxwell|subj +saying|that|c +much|criticism|of +criticism|calling|rel +calling|criticism|subj +father|his|gen +calling|father|obj +is|fair|pred +'s|"|punc +'s|not|punc +possibility|remotest|mod +'s|possibility|pred +father|his|gen +death|father|gen +was|month ago|mod-before +was|suicide|pred +'s|interview|in +interview|published|vrel +published|interview|obj +published|12/11/1991|on +published|by|by-subj +published|daily mirror|by +newspaper|london|nn +newspaper|flagship|nn +'s|newspaper|pred +quoted|kevin maxwell|obj +quoted|saying|as +saying|pensioners|of +writs|05/03/1994|nn +writs|)|punc +writs|two|nn +filed|writs|obj +filed|alleging|mod +alleging|writ|subj +alleging|that|c +bank|us-based|mod +bank|investment|nn +goldman sachs|bank|appo +assisted|goldman sachs|subj +diverting|goldman sachs|subj +diverting|pounds 55m|obj +schemes|two|nn +schemes|pension|nn +pounds 55m|schemes|from +schemes|controlled|pnmod +controlled|robert maxwell|by +robert maxwell|ensure|rel +ensure|robert maxwell|subj +debts|its own|gen +interests|maxwell|nn +debts|interests|from +ensure|repaid|fc +repaid|debts|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D112.M.100.H.E.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D112.M.100.H.E.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..7faf46dde6957b2dd66c3d153b3f9c0f315ea845 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D112.M.100.H.E.mini.be @@ -0,0 +1,56 @@ +confusion|economic|mod +surrounds|confusion|subj +death|mysterious|mod +surrounds|death|obj +robert|publishing|nn +robert|magnate|nn +death|robert|of +maxwell maxwell|who|whn +put|maxwell maxwell|subj +put|together|guest +empire|publishing|nn +put|empire|obj +empire|following|rel +following|empire|subj +immigration|his|gen +following|immigration|obj +britain|1940|in +off|dead|mod +found|off|guest +found|coast|obj +coast|canary islands|of +fallen|overboard|mod +yacht|his|gen +overboard|yacht|from +are|allegations|pred +sons|his|gen +two|sons|of +sons|kevin|conj +kevin|and|punc +kevin|ian|conj +ian|and|punc +ian|senior executive|conj +corporations|maxwell|nn +senior executive|corporations|in +were|involved|pred +transfer|illegal|mod +involved|transfer|in +transfer|funds|of +funds|help|rel +help|fund|subj +publishing|his|gen +help|publishing|obj +fend off|empire|subj +fend off|debt|obj +swiss|scheme|nn +swiss|used|mod +debt|trusts|rel +trusts|debt|obj +trusts|swiss|subj +debt|and|punc +debt|number|conj +number|institutions|of +bank|u.s.|nn +bank|investment|nn +including|bank|obj +bank|goldman sachs|appo diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D113.M.100.H.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D113.M.100.H.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..9ecced3c0ddaa7f859b8779306e3089664a6ecb6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D113.M.100.H.26.mini.be @@ -0,0 +1,51 @@ +erupted|row|subj +exchange|bombay|nn +exchange|stock|nn +erupted|exchange|between +market|india|gen +market|largest|mod +market|stock|nn +exchange|market|conj +market|and|punc +market|securities and exchange board|conj +watchdog|securities|nn +watchdog|over|appo-mod +inspection|board|gen +inspection|recent|mod +inspection|first-ever|mod +watchdog|inspection|appo +books|stockbrokers|gen +inspection|books|of +were|bombay stock exchange|pred +building|landmark|nn +building|air india|nn +bombay stock exchange|building|conj +complex|shopping|nn +building|complex|conj +complex|and|punc +hotels|two|nn +complex|hotels|conj +hotels|airport|near +identity|bombers|of +was|unknown|pred +was|but|mod +but|comes|comp1 +comes|explosion|subj +comes|just|mod +days|five|amount-value +250|over|num-mod +people|250|nn +days|people|after +killed|days|obj +1,200|least|post +aimed at|1,200|at +1,200|injured|vrel +injured|1,200|obj +injured|series|in +series|bomb|of +aimed at|attacks|subj +aimed at|heart|obj +business|indian|mod +heart|business|of +business|capital|pnmod +capital|bombay|of diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D113.M.100.H.I.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D113.M.100.H.I.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..162aa57679e0ae477de262bb0c62f4943efcbcd3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D113.M.100.H.I.mini.be @@ -0,0 +1,54 @@ +remains|bombay stock exchange|nn +bse|(|punc +bombay stock exchange|bse|abbrev +bse|)|punc +open|remains|subj +open|following|mod +following|remains|subj +following|week|obj +week|onslaught|of +following|first|mod +accused|exchange board of india|subj +accused|market|obj +enforce|rules|obj +market|indian|mod +fallen|already|mod-before +rules|fallen|comp1 +fallen|market|subj +fallen|48 percent|obj +last|early|mod +48 percent|last|since +fallen|year|mod +reaction|negative|mod +aggravated|reaction|by +budget|indian|mod +reaction|budget|to +afternoon|friday|nn +budget|afternoon|on +heart|commercial|mod +was|including|mod-before +including|heart|subj +including|bse|obj +was|hit|pred +while|car bombs|nn +hit|while|with +sikh|militant|mod +claimed|group|subj +claimed|responsibility|obj +officials|indian|mod +suspect|still|mod-before +suspect|officials|subj +extremists|moslem|mod +seeking|extremists|subj +strife|communal|mod +return|strife|of +strife|was|rel +was|able|pred +able|resume|fc +resume|strife|obj +resume|bse|subj +limited|return|subj +limited|trading|obj +trading|but|punc +rise|slight|mod +trading|rise|conj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D114.M.100.H.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D114.M.100.H.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..f24998d03817787fc390289139f1c7872ed12ae5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D114.M.100.H.26.mini.be @@ -0,0 +1,56 @@ +troops|01/21/1990|nn +troops|)|punc +battled|troops|subj +separatists|moslem|mod +mobs|separatists|of +city|kashmir|nn +separatists|city|in +city|srinagar|of +srinagar|weekend|over +srinagar|and|punc +21|at least|num-mod +people|21|nn +srinagar|people|conj +killed|mobs|obj +wounded|100|num +wounded|fighting|before +subsided|wounded|subj +night|01/21/1990|nn +subsided|night|on +said|police|subj +were|casualties|pred +said|he|subj +srinagar|03/24/1990|nn +srinagar|)|punc +been|focal point|pred +focal point|fighting|of +troops|government|nn +fighting|troops|between +troops|and|punc +troops|separatists|conj +moslems|four|nn +bodies|moslems|of +found|bodies|obj +town|kashmir|nn +found|town|in +town|06/25/1990|on +days|five|amount-value +after|kidnapped|comp1 +kidnapped|they|obj +kidnapped|by|by-subj +militants|moslem|mod +kidnapped|militants|by +militants|agitating for|rel +agitating for|militant|subj +agitating for|secession|obj +secession|india|from +is|one|pred +one|more|of +fighting|dozen|mod +fighting|moslem|mod +fighting|organizations|nn +more|fighting|than +fighting|independence|for +valley|kashmir|nn +independence|valley|of +valley|india|from diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D114.M.100.H.F.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D114.M.100.H.F.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..1ed494fa0c0f920512a384ce000aa704e8c24360 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D114.M.100.H.F.mini.be @@ -0,0 +1,50 @@ +india|and|punc +india|pakistan|conj +feuded|india|subj +feuded|jammu-kashmir|over +jammu-kashmir|subcontinent|since +is|1947|in +state|india|gen +predominately|only|mod +moslem|predominately|mod +state|moslem|mod +is|state|pred +state|64%|with +people|its|gen +people|five million|nn +separatists|moslem moslem|nn +began|separatists|subj +began|campaign|obj +violence|jammu-kashmir|in +jammu-kashmir|hoping|rel +hoping|jammu-kashmir|subj +hoping|initially|guest +hoping|lead to|fc +lead to|union|obj +union|pakistan|with +indian|independence|nn +later|indian|for +but|began|comp1 +began|authorities|subj +began|crackdown|obj +crackdown|january|in +people|a thousand|mod +died|people|subj +accused|india|subj +accused|pakistan|obj +arming|and|punc +arming|training|conj +training|insurgents|obj +charge|denied|rel +denied|charge|obj +denied|pakistan|subj +firing|soldiers|nn +incidences|firing|of +lines|cease-fire|nn +firing|lines|across +countries|two|nn +lines|countries|appo +was|local|pred +local|and|punc +serious|not|mod +local|serious|conj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D115.M.100.I.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D115.M.100.I.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..0313e8ad774d24100af792bdd3b6496209a28f6e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D115.M.100.I.26.mini.be @@ -0,0 +1,79 @@ +earthquake|strong|mod +triggered|earthquake|subj +triggered|landslides|obj +triggered|and|punc +triggered|destroyed|conj +destroyed|earthquake|subj +destroyed|houses|obj +region|mountainous|mod +region|india-nepal|nn +region|border|nn +houses|region|in +region|early|pnmod +early|08/21/1988|on +destroyed|killing|mod +killing|earthquake|subj +237|at least|num-mod +people|237|nn +killing|people|obj +killing|and|punc +killing|injuring|conj +injuring|earthquake|subj +injuring|more|obj +injuring|than|mod +1,500|officials|conj +officials|and|punc +reports|news|nn +officials|reports|conj +than|said|comp1 +said|1,500|subj +rescuers|08/22/1988|nn +rescuers|)|punc +rescuers|searched|vrel +searched|rescuers|obj +searched|debris|through +debris|08/22/1988|on +debris|victims|for +victims|earthquake|of +earthquake|that|whn +ravaged|earthquake|subj +ravaged|one-third|obj +territory|country|gen +one-third|territory|of +territory|and|punc +territory|parts|conj +parts|india|of +ravaged|killing|mod +650|at least|num-mod +people|650|nn +killing|people|obj +killing|and|punc +killing|injuring|conj +injuring|thousands|obj +quake|centered|vrel +centered|quake|obj +centered|almost|mod +border|india-nepal|nn +almost|border|on +registered|quake|subj +registered|6.5|obj +6.5|richter scale|on +rumors|predicting|rel +predicting|rumor|subj +quake|large|mod +predicting|quake|obj +sent|rumors|subj +sent|thousands|obj +people|panic-stricken|mod +thousands|people|of +people|fleeing|rel +fleeing|people|subj +homes|their|gen +fleeing|homes|from +homes|india|in +india|and|punc +india|nepal|conj +rose|india|in +count|official|mod +rose|count|subj +rose|277|to diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D115.M.100.I.B.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D115.M.100.I.B.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..3a2b4b7e5e93aee7d1c0df45f018e3e8ed85e370 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D115.M.100.I.B.mini.be @@ -0,0 +1,65 @@ +earthquake|deadliest|mod +earthquake|region|in +region|1950|since +region|hit|vrel +hit|region|obj +killing|nepal-india|nn +killing|border|nn +hit|killing|near +750|at least|num-mod +people|750|nn +injuring|thousands|obj +magnitude|6.5|num +quake|magnitude|subj +epicenter|its|gen +quake|epicenter|with +100|about|num-mod +miles|100|amount-value +southeast|miles|nn +southeast|katmandu|of +felt|southeast|obj +felt|as|mod +away|far|mod +away|new delhi|as +areas|hardest|mod +areas|hit|nn +state|bihar|nn +were|state|pred +state|india|in +india|and|punc +district|dharan|nn +india|district|conj +district|nepal|of +kept|aftershocks|subj +kept|people|obj +people|terrified|vrel +terrified|people|obj +damage|days|nn +damage|earthquake|nn +terrified|damage|for +damage|and|punc +rains|monsoon|nn +damage|rains|conj +rail|paralyzed|mod +rail|and|punc +transportation|road|mod +rail|transportation|conj +hindering|thus|amod +transportation|hindering|rel +hindering|transportation|subj +efforts|rescue|nn +hindering|efforts|obj +hindering|and|punc +hindering|isolating|conj +isolating|transportation|subj +isolating|some|obj +areas|remote|mod +police|nepal|nn +areas|police|in +bulldozed|areas|subj +50|more than|num-mod +houses|50|nn +bulldozed|houses|obj +houses|considered|vrel +considered|houses|obj +considered|too|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D116.M.100.I.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D116.M.100.I.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..22a4040e049dc54762c9f29cdca9b58db014e9d8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D116.M.100.I.26.mini.be @@ -0,0 +1,69 @@ +discovery|04/22/1990|nn +discovery|)|punc +astronauts|discovery|gen +astronauts|five|nn +returned|astronauts|subj +returned|04/22/1990|on +attempt|second|post +returned|attempt|for +attempt|launch|rel +launch|attempt|subj +launch|shuttle|obj +payload|nasa|gen +valuable|most|mod +payload|valuable|mod +valuable|and|punc +valuable|celebrated|conj +shuttle|payload|with +hubble space telescope|$1.5 billion|nn +payload|hubble space telescope|appo +astronauts|five|nn +boarded|astronauts|subj +boarded|discovery|obj +discovery|04/24/1990|on +try|second|post +discovery|try|for +try|sending|at +sending|astronaut|subj +telescope|hubble|nn +telescope|space|nn +sending|telescope|obj +telescope|orbit|into +orbit|scan|rel +scan|orbit|subj +reaches|outermost|mod +scan|reaches|obj +reaches|universe|of +universe|clues|for +clues|beginning|to +beginning|time|of +astronauts|discovery|nn +launched|triumphantly|mod-before +launched|astronauts|subj +orbit|$1.5-billion|mod +orbit|hubble space telescope|nn +orbit|one|nn +launched|orbit|obj +orbit|late|pnmod +late|04/25/1990|on +launched|after|mod +commands|last-ditch|mod +commands|earth|from +after|freed|comp1 +freed|commands|subj +solar panel|stuck|nn +freed|solar panel|obj +averting|narrowly|amod +freed|averting|mod +averting|command|subj +spacewalk|daring|mod +spacewalk|emergency|mod +averting|spacewalk|obj +discovery|space|nn +discovery|shuttle|nn +miles|46|amount-value +was|miles|pred +was|away|mod +problems|remedy|nn +problems|certain|mod +available|problems|to diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D116.M.100.I.B.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D116.M.100.I.B.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..0e51fa579280fd39fe4f38627796d9bd28f2a459 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D116.M.100.I.B.mini.be @@ -0,0 +1,63 @@ +discovery|shuttle|nn +soared|discovery|subj +soared|space|into +space|launch|rel +launch|space|subj +payload|its|gen +payload|history-making|mod +launch|payload|obj +payload|$1.5|appo +telescope|billion|nn +telescope|hubble|mod +telescope|space|nn +statute miles|380|amount-value +earth|statute miles|nn +earth|above|mod +orbiting|earth|at +provide|astronomers|obj +astronomers|worldwide|pnmod +times|10|amount-value +resolution|times|nn +resolution|better|mod +worldwide|resolution|with +resolution|and|punc +times|25|amount-value +more|times|nn +resolution|more|conj +observatories|ground-based|mod +sensitivity|observatories|than +observatories|release|rel +release|observatories|obj +release|telescope|subj +release|shuttle|from +delayed|discovery|obj +delayed|because|mod +panel|solar power|nn +because|took|comp1 +took|panel|subj +tries|three|nn +took|tries|obj +tries|it|before +took|fully|mod +released|once|mod +controllers|released|mod +controllers|ground|nn +were|unable|pred +unable|link|fc +link|controller|subj +link|up|guest +two|telescope|gen +link|two|obj +antennas|high-gain|mod +antennas|their|with +antennas|assigned|vrel +relay|antennas|subj +relay|satellite|obj +relay|however|mod +antennas|scientists|appo +be|soon|amod +be|operational|pred +discovery|shuttle|nn +crew|discovery|subj +crew|return|mod +return|discovery|subj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D117.M.100.I.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D117.M.100.I.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..aa7992c135d31d71f02950989de169453288484b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D117.M.100.I.26.mini.be @@ -0,0 +1,53 @@ +event|britain|gen +event|literary|mod +is|event|pred +event|year|of +event|guaranteed|vrel +guaranteed|event|obj +guaranteed|boost|mod +boost|booker prize|subj +boost|sales|obj +novel|chosen|mod +sales|novel|of +announcement|award|nn +novel|announcement|after +boost|oct 16|mod +guildhall|london|gen +guildhall|ancient|mod +dinner|guildhall|in +shortlist|six|of +booker prize|pounds 20,000|nn +six|booker prize|for +booker prize|fiction|for +fiction|announced|pnmod +announced|09/05/1994|on +prompted|immediately|mod-before +prompted|shortlist|subj +'who|question|nn +prompted|'who|obj +industry|publishing|nn +many|industry|in +shortlist|booker|for +prize|uk|gen +hyped|most|mod +prize|hyped|mod +prize|literary|mod +booker|prize|conj +prize|and|punc +prize|one|conj +one|most|of +is|all|guest +is|more|pred +more|surprising|pnmod +year|bumper|mod +surprising|year|in +fiction|new|mod +year|fiction|for +fiction|fulfilling|rel +fulfilling|fiction|subj +language|criteria-english|nn +fulfilling|language|obj +language|and|punc +consideration|non-american-for|nn +language|consideration|conj +consideration|award|for diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D117.M.100.I.G.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D117.M.100.I.G.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..5d1881453f412d41e157aaa0a2d4017886f75ed7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D117.M.100.I.G.mini.be @@ -0,0 +1,55 @@ +booker prize|britain|gen +novels|fiction|nn +booker prize|novels|for +is|similar|pred +pulitzer prize|america|gen +similar|pulitzer prize|to +pulitzer prize|and|punc +book|national|nn +pulitzer prize|book|conj +excitement|more|mod +but|associated|comp1 +associated|excitement|obj +associated|it|with +publishers|british|mod +submit|each|mod-before +submit|publishers|subj +titles|three|nn +titles|new|mod +submit|titles|obj +books|100|num +six|final|mod +down|six|to +six|panel|by +judges|learned|mod +panel|judges|of +read|they|subj +read|all|obj +odds|novels|nn +all|given|rel +given|all|obj2 +given|odds|obj1 +given|reviews|with +insiders|literary|mod +bet on|insiders|subj +bet on|which|obj +win|book|subj +win|prize|obj +announced|winner|obj +banquet|yearly|mod +announced|banquet|at +administered|prize|obj +administered|by|by-subj +trust|book|nn +administered|trust|by +charity|educational|mod +trust|charity|appo +administered|and|punc +administered|sponsored|conj +sponsored|prize|obj +sponsored|by|by-subj +sponsored|booker|by +food|international|mod +food|and|punc +business|farming|mod +food|business|conj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D118.M.100.I.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D118.M.100.I.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..fdf747a46058a730e926445e9451a2c82295bcba --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D118.M.100.I.26.mini.be @@ -0,0 +1,68 @@ +john tower|defense secretary-designate|mod +contradicted|john tower|subj +sworn|earlier|mod +statement|sworn|mod +contradicted|statement|obj +contradicted|when|wha +told|he|subj +told|senate|obj +work|his|gen +firm|british|mod +work|firm|for +told|involved|fc +involved|work|subj +matters|military|mod +involved|matters|obj +involved|reports|according to +reports|published|vrel +published|reports|obj +published|02/11/1989|on +put|senate armed services committee|subj +put|nomination|obj +nomination|tower|of +senator|former|mod +senator|texas|nn +tower|senator|conj +senator|and|punc +chairman|onetime|mod +senator|chairman|conj +chairman|committee|of +put|hold|on +put|while|mod +while|takes|comp1 +takes|it|subj +look|second|post +takes|look|obj +habits|tower|gen +habits|personal|mod +look|habits|at +takes|including|mod +including|it|subj +use|his|gen +including|use|obj +use|alcohol|of +alcohol|and|punc +links|his|gen +alcohol|links|conj +contractors|defense|nn +links|contractors|to +vote|senate|gen +vote|53-47|nn +came|vote|subj +came|after|mod +bitter|and|punc +debate|divisive|mod +bitter|debate|conj +after|focused on|comp1 +focused on|bitter|subj +habits|tower|gen +habits|drinking|nn +focused on|habits|obj +habits|behavior|conj +behavior|women|toward +women|and|punc +dealings|his|gen +dealings|business|mod +women|dealings|conj +contractors|defense|nn +dealings|contractors|with diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D118.M.100.I.E.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D118.M.100.I.E.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..16813627c275bba0ca11aa3ea42988c41774c3f7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D118.M.100.I.E.mini.be @@ -0,0 +1,50 @@ +senator|former|mod +senator|texas|nn +senator|john tower|person +senator|and|punc +daughter|his|gen +senator|daughter|conj +killed|senator|obj +killed|crash|in +plane|commuter|nn +crash|plane|of +senator|georgia|nn +coast|senator|of +senator|tower|person +nominee|president|gen +president|bush|person +been|nominee|pred +secretary|defense|of +defense|but|punc +defense|nomination|conj +rejected|secretary|obj +rejected|by|by-subj +rejected|senate|by +senate|recommendation|on +committee|senate|nn +committee|services|nn +was|only|pred +time|ninth|mod +was|time|mod +time|history|in +rejected|nominee|obj +recommended|committee|subj +recommended|rejection|obj +rejection|hearing|after +hearing|committee|subj +hearing|allegations|obj +hearing|about|mod +use|tower|gen +use|alcohol|of +alcohol|and|punc +behavior|his|gen +behavior|inappropriate|mod +alcohol|behavior|conj +behavior|women|towards +dealings|his|gen +contractors|defense|nn +dealings|contractors|with +contractors|tower|after +gave|dealings|subj +testimony|contradictory|mod +gave|testimony|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D119.M.100.I.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D119.M.100.I.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..9a6db37a5fbf832839c816d86ed1b3c580d82607 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D119.M.100.I.26.mini.be @@ -0,0 +1,53 @@ +but|said|comp1 +said|pell|subj +said|was|fc +was|unpersuaded|pred +administration|bush|nn +name|administration|subj +name|career|obj1 +name|diplomat|obj2 +diplomat|harry shlaudeman|person +ambassador|first|post +ambassador|u.s.|nn +diplomat|ambassador|as +ambassador|nicaragua|to +two|almost|num-mod +years|two|amount-value +nicaragua|years|in +official|u.s.|nn +says|official|subj +had|united states|subj +had|ambassador|obj +ambassador|nicaragua|to +nicaragua|july 1988|since +shlaudeman|05/10/1990|nn +shlaudeman|)|punc +shlaudeman|who|whn +served as|shlaudeman|subj +served as|ambassador|obj +ambassador|argentina|to +argentina|peru|conj +peru|brazil|conj +brazil|and|punc +brazil|venezuela|conj +is|premier|pred +premier|state|person +specialist|latin america|on +confirmation|easy|mod +confirmation|senate|nn +win|confirmation|obj +plans|02/03/1992|nn +plans|)|punc +plans|president|nn +president|bush|person +plans|name|to +envoy|u.s.|nn +name|envoy|as +envoy|india|to +head|current|mod +appoint|head|obj +service|foreign|mod +head|service|of +service|succeed|rel +succeed|service|subj +succeed|him|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D119.M.100.I.F.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D119.M.100.I.F.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..283514610f661909ac43173b9df96c4cdb5257f7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D119.M.100.I.F.mini.be @@ -0,0 +1,48 @@ +nominees|president|gen +president|bush|person +some|nominees|of +nominees|ambassadorships|for +selected|some|obj +contributions|large|mod +contributions|money|nn +reward|contributions|for +contributions|republican party|to +senators|democratic|mod +senators|and|punc +diplomats|retired|mod +senators|diplomats|conj +consider|senators|subj +consider|a few|obj +nominees|qualified|mod +faced|nominees|subj +questioning|strong|mod +faced|questioning|obj +questioning|democrats|from +hearings|committee|nn +manage|hearings|during +manage|get|mod +approval|slim|mod +get|approval|obj +senators|committee|nn +senators|conservative|mod +objected|senators|subj +objected|two|to +selections|bush|gen +two|selections|of +most|president|of +won|picks|subj +two|easy|mod +two|approval|nn +won|two|obj +picks|bush|gen +two|picks|of +reaction|received|mod +favorable|highly|mod +reaction|favorable|mod +expert|latin american|nn +expert|ambassador|for +nicaragua|and|punc +nicaragua|naming|conj +naming|thomas pickering|of +diplomat|well-known|mod +thomas pickering|diplomat|appo diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D120.M.100.I.26.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D120.M.100.I.26.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..c124bed6d2358830fe6aa222952a045cf7199f1e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D120.M.100.I.26.mini.be @@ -0,0 +1,67 @@ +john major|11/27/1990|nn +john major|)|punc +john major|who|whn +endorsed|john major|obj +endorsed|by|by-subj +margaret thatcher|prime minister|title +endorsed|margaret thatcher|by +successor|her|gen +margaret thatcher|successor|as +successor|and|punc +successor|heir|conj +elected|john major|obj +elected|11/27/1990|on +elected|leader|as +leader|conservative party|of +elected|and|punc +elected|become|conj +become|john major|subj +minister|prime|mod +become|minister|obj +john major|11/28/1990|nn +john major|)|punc +chancellor|47-year-old|mod +chancellor|exchequer|of +exchequer|who|whn +rose|exchequer|subj +selected|out|mod-before +out|one|of +neighborhoods|london|gen +neighborhoods|toughest|mod +one|neighborhoods|of +neighborhoods|and|punc +line|unemployment|nn +neighborhoods|line|conj +selected|chancellor|obj +selected|11/27/1990|on +minister|britain|gen +minister|next|post +minister|prime|mod +selected|minister|as +major|11/28/1990|nn +major|)|punc +father|major|gen +major|father|whn +was|once|guest +artist|circus|nn +artist|trapeze|nn +was|artist|pred +leader|elected|mod +was|leader|pred +leader|conservative party|of +conservative party|replace|rel +replace|conservative party|subj +replace|margaret thatcher|obj +resignation|margaret thatcher|gen +resignation|sudden|mod +margaret thatcher|resignation|whn +resignation|pressure|under +surprised|last week|mod-before +surprised|resignation|subj +surprised|nation|obj +no|05/28/1994|nn +no|)|punc +wonder|no|subj +wonder|liked|fc +liked|majors|subj +liked|film|obj diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D120.M.100.I.J.mini.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D120.M.100.I.J.mini.be new file mode 100644 index 0000000000000000000000000000000000000000..b6d278ed5b2bbbb475075f9b8dd4a0fabd5ac9ef --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-F/D120.M.100.I.J.mini.be @@ -0,0 +1,52 @@ +issued|easter sunday|on +ministers|three|nn +issued|ministers|subj +issued|statements|obj +statements|behalf|on +behalf|prime minister|of +john major|speculation|amidst +speculation|that|c +forced out|he|obj +forced out|autumn|mod +local|may|nn +autumn|local|in +elections|britain|across +loss|conservatives|nn +loss|444|num +seats|and|punc +seats|word|conj +circulated|seats|subj +was|not|neg +was|up|guest +was|to|pred +was|job|to +became|major|subj +became|leader|obj +leader|conservative party|of +conservative party|and|punc +conservative party|prime minister|conj +mentor|his|gen +prime minister|mentor|after +resigned|margaret thatcher|subj +resigned|pressure|under +pressure|1990|in +resigned|though|mod +though|won|comp1 +won|he|subj +general|1992|num +won|general|obj +recession|lingering|mod +election|recession|conj +recession|and|punc +recession|controversies|conj +controversies|involving|rel +involving|controversy|subj +issues|european|nn +issues|community|nn +involving|issues|obj +came|he|subj +came|viewed|fc +leader|weak|mod +leader|vacillating|mod +viewed|leader|as +conviction|political|mod diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D061.M.100.J.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D061.M.100.J.26.be new file mode 100644 index 0000000000000000000000000000000000000000..295c5154132152d09dfdb23ed1d1685139078e5a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D061.M.100.J.26.be @@ -0,0 +1,128 @@ +09/11/1988|NIL|NIL +09/11/1988|Gilbert|NIL +Hurricane|NIL|NIL +Gilbert|NIL|NIL +Gilbert|Hurricane|NIL +09/11/1988|NIL|NIL +hurricane|NIL|NIL +swept|NIL|NIL +swept|hurricane|ARG0 +swept|Republic|ARG2 +swept|09/11/1988|ARGM-TMP +Dominican|NIL|NIL +Republic|NIL|NIL +Republic|Dominican|NIL +09/11/1988|NIL|NIL +Civil|NIL|NIL +Defense|NIL|NIL +Defense|Civil|NIL +alerted|NIL|NIL +alerted|Defense|ARG0 +alerted|coast|ARG1 +alerted|prepare|ARG2 +its|NIL|NIL +heavily|NIL|NIL +populated|NIL|NIL +populated|heavily|ARGM-EXT +populated|coast|ARG1 +south|NIL|NIL +coast|NIL|NIL +coast|its|NIL +coast|south|NIL +prepare|NIL|NIL +prepare|winds|ARG2 +prepare|rains|ARG2 +prepare|seas|ARG2 +high|NIL|NIL +winds|NIL|NIL +winds|high|NIL +heavy|NIL|NIL +rains|NIL|NIL +rains|heavy|NIL +high|NIL|NIL +seas|NIL|NIL +seas|high|NIL +09/11/1988|NIL|NIL +storm|NIL|NIL +approaching|NIL|NIL +approaching|storm|ARG1 +approaching|southeast|ARG2 +approaching|gusting|ARGM-ADV +southeast|NIL|NIL +sustained|NIL|NIL +sustained|winds|ARG1 +winds|NIL|NIL +winds|mph|NIL +75|NIL|NIL +mph|NIL|NIL +mph|75|NIL +gusting|NIL|NIL +92|NIL|NIL +mph|NIL|NIL +mph|92|NIL +09/12/1988|NIL|NIL +hurricane|NIL|NIL +packing|NIL|NIL +packing|hurricane|ARG0 +packing|winds|ARG1 +packing|rain|ARG1 +110|NIL|NIL +mph|NIL|NIL +mph|110|NIL +winds|NIL|NIL +winds|mph|NIL +torrential|NIL|NIL +rain|NIL|NIL +rain|torrential|NIL +moved|NIL|NIL +moved|hurricane|ARG1 +moved|city|ARG2 +moved|09/12/1988|ARGM-TMP +moved|skirting|ARGM-TMP +capital|NIL|NIL +city|NIL|NIL +city|this|NIL +city|capital|NIL +09/12/1988|NIL|NIL +skirting|NIL|NIL +skirting|Rico|ARG1 +skirting|Haiti|ARG1 +skirting|Republic|ARG1 +Puerto|NIL|NIL +Rico|NIL|NIL +Rico|Puerto|NIL +Haiti|NIL|NIL +Dominican|NIL|NIL +Republic|NIL|NIL +Republic|Dominican|NIL +09/12/1988|NIL|NIL +hurricane|NIL|NIL +swept|NIL|NIL +swept|hurricane|ARG0 +swept|Jamaica|ARG2 +swept|09/11/1988|ARGM-TMP +swept|winds|ARG2 +Jamaica|NIL|NIL +09/11/1988|NIL|NIL +100-mile-an-hour|NIL|NIL +winds|NIL|NIL +winds|100-mile-an-hour|NIL +officials|NIL|NIL +issued|NIL|NIL +issued|officials|ARG0 +issued|warnings|ARG1 +issued|residents|ARG2 +warnings|NIL|NIL +residents|NIL|NIL +residents|coasts|NIL +southern|NIL|NIL +coasts|NIL|NIL +coasts|southern|NIL +coasts|Dominican|NIL +coasts|Republic|NIL +coasts|Haiti|NIL +coasts|Cuba|NIL +Dominican|NIL|NIL +Republic|NIL|NIL +Haiti|NIL|NIL +Cuba|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D061.M.100.J.I.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D061.M.100.J.I.be new file mode 100644 index 0000000000000000000000000000000000000000..f89bd517d8f63f351ae4855e768ab04561409a0d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D061.M.100.J.I.be @@ -0,0 +1,131 @@ +Hurricane|NIL|NIL +Gilbert|NIL|NIL +Gilbert|Hurricane|NIL +cut|NIL|NIL +cut|Gilbert|ARG0 +cut|swath|ARG1 +destructive|NIL|NIL +swath|NIL|NIL +swath|a|NIL +swath|destructive|NIL +swath|Caribbean|NIL +Caribbean|NIL|NIL +third|NIL|NIL +hurricane|NIL|NIL +hurricane|third|NIL +hurricane|1988|NIL +1988|NIL|NIL +buffeted|NIL|NIL +buffeted|hurricane|ARG1 +buffeted|coasts|ARG1 +southern|NIL|NIL +coasts|NIL|NIL +coasts|southern|NIL +coasts|Rico|NIL +Puerto|NIL|NIL +Rico|NIL|NIL +Rico|Puerto|NIL +Rico|Islands|NIL +Rico|Dominican|NIL +Rico|Republic|NIL +Rico|Haiti|NIL +Rico|Cuba|NIL +Virgin|NIL|NIL +Islands|NIL|NIL +Islands|Virgin|NIL +Dominican|NIL|NIL +Republic|NIL|NIL +Haiti|NIL|NIL +Cuba|NIL|NIL +Five|NIL|NIL +killed|NIL|NIL +killed|Five|ARG1 +killed|Republic|ARGM-LOC +Dominican|NIL|NIL +Republic|NIL|NIL +Republic|Dominican|NIL +Monday|NIL|NIL +storm|NIL|NIL +hit|NIL|NIL +hit|Monday|ARGM-TMP +hit|storm|ARG0 +hit|Jamaica|ARG1 +hit|force|ARGM-MNR +hit|killing|ARGM-ADV +hit|causing|ARGM-ADV +Jamaica|NIL|NIL +its|NIL|NIL +full|NIL|NIL +force|NIL|NIL +force|its|NIL +force|full|NIL +killing|NIL|NIL +killing|19|ARG1 +19|NIL|NIL +causing|NIL|NIL +causing|damage|ARG1 +extensive|NIL|NIL +damage|NIL|NIL +damage|extensive|NIL +Wednesday|NIL|NIL +Gilbert|NIL|NIL +hit|NIL|NIL +hit|Wednesday|ARGM-TMP +hit|Gilbert|ARG0 +hit|resorts|ARG1 +hit|peninsula|ARGM-LOC +hit|winds|ARG2 +hit|causing|ARGM-ADV +resorts|NIL|NIL +resorts|Cancun|NIL +resorts|Cozumel|NIL +Cancun|NIL|NIL +Cozumel|NIL|NIL +Mexico|NIL|NIL +Yucatan|NIL|NIL +peninsula|NIL|NIL +peninsula|Mexico|NIL +peninsula|Yucatan|NIL +winds|NIL|NIL +winds|mph|NIL +160|NIL|NIL +mph|NIL|NIL +mph|160|NIL +causing|NIL|NIL +causing|damage|ARG1 +extensive|NIL|NIL +damage|NIL|NIL +damage|extensive|NIL +Gilbert|NIL|NIL +then|NIL|NIL +headed|NIL|NIL +headed|Gilbert|ARG0 +headed|then|ARGM-TMP +headed|Gulf|ARG1 +Gulf|NIL|NIL +Gulf|Mexico|NIL +Mexico|NIL|NIL +Forecasters|NIL|NIL +remain|NIL|NIL +remain|baffled|ARG3 +baffled|NIL|NIL +Gilbert|NIL|NIL +became|NIL|NIL +became|storm|ARG2 +became|attaining|ARGM-ADV +intense|NIL|NIL +storm|NIL|NIL +storm|such|NIL +storm|an|NIL +storm|intense|NIL +attaining|NIL|NIL +attaining|pressure|ARG1 +lowest|NIL|NIL +barometric|NIL|NIL +pressure|NIL|NIL +pressure|lowest|NIL +pressure|barometric|NIL +ever|NIL|NIL +recorded|NIL|NIL +recorded|pressure|ARG1 +recorded|ever|ARGM-TMP diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D062.M.100.J.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D062.M.100.J.26.be new file mode 100644 index 0000000000000000000000000000000000000000..377f1154cd534ab233f42ba402aa0d166a537dc9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D062.M.100.J.26.be @@ -0,0 +1,135 @@ +10/18/1989|NIL|NIL +Most|NIL|NIL +San|NIL|NIL +Francisco-area|NIL|NIL +homeowners|NIL|NIL +homeowners|Most|NIL +homeowners|San|NIL +homeowners|Francisco-area|NIL +pay|NIL|NIL +pay|homeowners|ARG0 +pay|damage|ARG3 +damage|NIL|NIL +10/17/1989|NIL|NIL +earthquake|NIL|NIL +earthquake|10/17/1989|NIL +their|NIL|NIL +own|NIL|NIL +pockets|NIL|NIL +pockets|their|NIL +pockets|own|NIL +insurance|NIL|NIL +companies|NIL|NIL +companies|insurance|NIL +reap|NIL|NIL +reap|companies|ARG0 +long-term|NIL|NIL +benefits|NIL|NIL +benefits|long-term|NIL +higher|NIL|NIL +rates|NIL|NIL +rates|higher|NIL +industry|NIL|NIL +spokesmen|NIL|NIL +analysts|NIL|NIL +said|NIL|NIL +said|earthquake|ARGM-ADV +said|reap|ARGM-ADV +said|industry|ARG0 +said|spokesmen|ARG0 +said|analysts|ARG0 +said|10/17/1989|ARGM-TMP +10/17/1989|NIL|NIL +10/18/1989|NIL|NIL +Only|NIL|NIL +15|NIL|NIL +percent|NIL|NIL +percent|Only|NIL +percent|15|NIL +percent|to|NIL +percent|20|NIL +percent|percent|NIL +percent|homeowners|NIL +20|NIL|NIL +percent|NIL|NIL +California|NIL|NIL +homeowners|NIL|NIL +homeowners|California|NIL +have|10/18/1989|AUX-SBJ +have|insurance|ARG1 +earthquake|NIL|NIL +insurance|NIL|NIL +insurance|earthquake|NIL +typically|NIL|NIL +requires|NIL|NIL +requires|insurance|ARG0 +requires|typically|ARGM-ADV +requires|percent|ARG1 +10|NIL|NIL +percent|NIL|NIL +percent|a|NIL +percent|10|NIL +percent|deductible|NIL +deductible|NIL|NIL +costs|NIL|NIL +costs|insurance|ARG1 +costs|$|ARG2 +costs|home|ARG2 +costs|spokesmen|ARGM-ADV +$|NIL|NIL +$|between|NIL +$|200|NIL +$|to|NIL +$|$|NIL +$|400|NIL +$|year|NIL +200|NIL|NIL +$|NIL|NIL +400|NIL|NIL +year|NIL|NIL +year|a|NIL +$|NIL|NIL +$|100,000|NIL +100,000|NIL|NIL +home|NIL|NIL +home|a|NIL +home|$|NIL +according|NIL|NIL +industry|NIL|NIL +spokesmen|NIL|NIL +spokesmen|industry|NIL +10/19/1989|NIL|NIL +Insurers|NIL|NIL +Insurers|10/19/1989|NIL +face|NIL|NIL +face|Insurers|ARG0 +prospect|NIL|NIL +paying|NIL|NIL +paying|out|rel +paying|billions|ARG1 +paying|damages|ARG3 +billions|NIL|NIL +billions|dollars|NIL +dollars|NIL|NIL +damages|NIL|NIL +caused|NIL|NIL +caused|damages|ARG1 +caused|earthquake|ARG0 +week|NIL|NIL +week|this|NIL +California|NIL|NIL +earthquake|NIL|NIL +earthquake|week|NIL +earthquake|California|NIL +10/20/1989|NIL|NIL +Usually|NIL|NIL +earthquakes|NIL|NIL +pass|NIL|NIL +pass|Usually|ARGM-TMP +pass|earthquakes|ARG0 +one|NIL|NIL +one|this|NIL +went|NIL|NIL +went|one|ARG1 +on|NIL|NIL +on|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D062.M.100.J.A.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D062.M.100.J.A.be new file mode 100644 index 0000000000000000000000000000000000000000..4cd8baf447d8535de713fd3474dc4748694e8a8b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D062.M.100.J.A.be @@ -0,0 +1,128 @@ +California|NIL|NIL +earthquake|NIL|NIL +earthquake|California|NIL +earthquake|Oct.|NIL +Oct.|NIL|NIL +Oct.|17|NIL +Oct.|1989|NIL +17|NIL|NIL +1989|NIL|NIL +caused|NIL|NIL +caused|earthquake|ARG0 +caused|damage|ARG1 +extensive|NIL|NIL +damage|NIL|NIL +damage|extensive|NIL +heavy|NIL|NIL +insurance|NIL|NIL +losses|NIL|NIL +losses|heavy|NIL +losses|insurance|NIL +insurance|NIL|NIL +company|NIL|NIL +stocks|NIL|NIL +stocks|insurance|NIL +stocks|company|NIL +posted|NIL|NIL +posted|losses|ARGM-ADV +posted|stocks|ARG0 +posted|gains|ARG1 +posted|bet|ARGM-TMP +gains|NIL|NIL +investors|NIL|NIL +bet|NIL|NIL +bet|investors|ARG0 +bet|increases|ARG1 +increases|NIL|NIL +increases|rates|NIL +insurance|NIL|NIL +rates|NIL|NIL +rates|insurance|NIL +producing|NIL|NIL +producing|rates|ARG0 +producing|increase|ARG1 +long-term|NIL|NIL +increase|NIL|NIL +increase|a|NIL +increase|long-term|NIL +increase|profits|NIL +profits|NIL|NIL +Washington|NIL|NIL +White|NIL|NIL +House|NIL|NIL +House|White|NIL +appeared|NIL|NIL +appeared|Washington|ARGM-LOC +appeared|House|ARG1 +appeared|hyperactive|ARG1 +appeared|anxious|ARG1 +hyperactive|NIL|NIL +anxious|NIL|NIL +anxious|show|NIL +show|NIL|NIL +show|responsiveness|ARG1 +its|NIL|NIL +responsiveness|NIL|NIL +responsiveness|its|NIL +responsiveness|disaster|NIL +disaster|NIL|NIL +Sacramento|NIL|NIL +Governor|NIL|NIL +Deukmejian|NIL|NIL +Deukmejian|Governor|NIL +called|NIL|NIL +called|Sacramento|ARGM-LOC +called|Deukmejian|ARG0 +called|session|ARG1 +called|deal|ARGM-PNC +special|NIL|NIL +session|NIL|NIL +session|a|NIL +session|special|NIL +session|legislature|NIL +legislature|NIL|NIL +deal|NIL|NIL +deal|crisis|ARG1 +crisis|NIL|NIL +Critics|NIL|NIL +accused|NIL|NIL +accused|Critics|ARG0 +accused|him|ARG1 +accused|blaming|ARG2 +him|NIL|NIL +blaming|NIL|NIL +blaming|others|ARG1 +blaming|collapse|ARG2 +others|NIL|NIL +collapse|NIL|NIL +collapse|freeways|NIL +freeways|NIL|NIL +called|NIL|NIL +called|Critics|ARG0 +called|him|ARG1 +called|get|ARGM-PNC +him|NIL|NIL +get|NIL|NIL +get|on|rel +get|reconstruction|ARGM-MNR +get|increase|ARGM-MNR +get|get|ARGM-PNC +reconstruction|NIL|NIL +temporary|NIL|NIL +increase|NIL|NIL +increase|a|NIL +increase|temporary|NIL +increase|tax|NIL +gasoline|NIL|NIL +tax|NIL|NIL +tax|gasoline|NIL +hundreds|NIL|NIL +of|hundreds|NIL +of|thousands|NIL +of|commuters|NIL +thousands|NIL|NIL +commuters|NIL|NIL +get|NIL|NIL +get|of|ARG0 +get|work|ARG2 +work|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D063.M.100.J.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D063.M.100.J.26.be new file mode 100644 index 0000000000000000000000000000000000000000..2ddebadcf3fd13a26f4084e5b7aa54cc6ab02a72 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D063.M.100.J.26.be @@ -0,0 +1,138 @@ +09/23/1989|NIL|NIL +IRA|NIL|NIL +bombing|NIL|NIL +bombing|IRA|NIL +killed|NIL|NIL +killed|bombing|ARG0 +killed|men|ARG1 +10|NIL|NIL +men|NIL|NIL +men|10|NIL +blew|NIL|NIL +blew|bombing|ARG0 +blew|building|ARG1 +apart|NIL|NIL +building|NIL|NIL +building|a|NIL +building|School|NIL +Royal|NIL|NIL +Marines|NIL|NIL +Music|NIL|NIL +School|NIL|NIL +School|Royal|NIL +School|Marines|NIL +School|Music|NIL +outraged|NIL|NIL +outraged|bombing|ARG0 +outraged|Britons|ARG1 +Britons|NIL|NIL +stirred|NIL|NIL +stirred|bombing|ARG0 +stirred|recriminations|ARG1 +stirred|school|ARGM-LOC +recriminations|NIL|NIL +recriminations|standards|NIL +safety|NIL|NIL +standards|NIL|NIL +standards|safety|NIL +school|NIL|NIL +09/23/1989|NIL|NIL +outlawed|NIL|NIL +outlawed|Army|ARG1 +Irish|NIL|NIL +Republican|NIL|NIL +Army|NIL|NIL +Army|Irish|NIL +Army|Republican|NIL +engaged|NIL|NIL +engaged|Army|ARG1 +engaged|campaign|ARG2 +20-year-old|NIL|NIL +campaign|NIL|NIL +campaign|a|NIL +campaign|20-year-old|NIL +drive|NIL|NIL +drive|British|ARG1 +drive|province|ARG2 +British|NIL|NIL +province|NIL|NIL +province|Ireland|NIL +Northern|NIL|NIL +Ireland|NIL|NIL +Ireland|Northern|NIL +claimed|NIL|NIL +claimed|Army|ARG0 +claimed|responsibility|ARG1 +claimed|International|ARG2 +responsibility|NIL|NIL +responsibility|call|NIL +telephone|NIL|NIL +call|NIL|NIL +call|a|NIL +call|telephone|NIL +Ireland|NIL|NIL +International|NIL|NIL +International|Ireland|NIL +International|agency|NIL +Dublin|NIL|NIL +news|NIL|NIL +agency|NIL|NIL +agency|a|NIL +agency|Dublin|NIL +agency|news|NIL +09/23/1989|NIL|NIL +Family|NIL|NIL +members|NIL|NIL +members|09/23/1989|NIL +members|Family|NIL +members|09/23/1989|NIL +09/23/1989|NIL|NIL +grieved|NIL|NIL +grieved|members|ARG0 +grieved|ones|ARGM-PNC +their|NIL|NIL +slain|NIL|NIL +slain|ones|ARG1 +loved|NIL|NIL +loved|ones|ARG1 +ones|NIL|NIL +ones|their|NIL +criticized|NIL|NIL +criticized|members|ARG0 +criticized|arrangements|ARG1 +criticized|School|ARGM-LOC +security|NIL|NIL +arrangements|NIL|NIL +arrangements|security|NIL +Royal|NIL|NIL +Marines|NIL|NIL +Music|NIL|NIL +School|NIL|NIL +School|Royal|NIL +School|Marines|NIL +School|Music|NIL +IRA|NIL|NIL +terrorist|NIL|NIL +attack|NIL|NIL +attack|an|NIL +attack|IRA|NIL +attack|terrorist|NIL +killed|NIL|NIL +killed|attack|ARG0 +killed|musicians|ARG1 +10|NIL|NIL +military|NIL|NIL +musicians|NIL|NIL +musicians|10|NIL +musicians|military|NIL +09/23/1989|NIL|NIL +09/23/1989|was|NIL +security|NIL|NIL +security|barracks|NIL +barracks|NIL|NIL +barracks|those|NIL +was|security|AUX-SBJ +was|abysmal|AUX-PRD +absolutely|NIL|NIL +abysmal|NIL|NIL +abysmal|absolutely|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D063.M.100.J.E.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D063.M.100.J.E.be new file mode 100644 index 0000000000000000000000000000000000000000..bb0e685eed2b2cb1c7a46a6503cda35457d8c673 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D063.M.100.J.E.be @@ -0,0 +1,140 @@ +Irish|NIL|NIL +Republican|NIL|NIL +Army|NIL|NIL +bomb|NIL|NIL +bomb|An|NIL +bomb|Irish|NIL +bomb|Republican|NIL +bomb|Army|NIL +destroyed|NIL|NIL +destroyed|bomb|ARG0 +destroyed|barracks|ARG1 +destroyed|Deal|ARGM-LOC +destroyed|Friday|ARGM-TMP +barracks|NIL|NIL +barracks|a|NIL +belonging|NIL|NIL +belonging|barracks|ARG0 +belonging|School|ARG1 +Royal|NIL|NIL +Marines|NIL|NIL +Music|NIL|NIL +School|NIL|NIL +School|Royal|NIL +School|Marines|NIL +School|Music|NIL +Deal|NIL|NIL +Friday|NIL|NIL +blast|NIL|NIL +killed|NIL|NIL +killed|blast|ARG0 +killed|10|ARG1 +10|NIL|NIL +injured|NIL|NIL +injured|blast|ARG0 +injured|others|ARG1 +22|NIL|NIL +others|NIL|NIL +others|22|NIL +also|NIL|NIL +damaged|NIL|NIL +damaged|blast|ARG0 +damaged|also|ARGM-DIS +damaged|houses|ARG1 +destroyed|NIL|NIL +destroyed|blast|ARG0 +destroyed|also|ARGM-DIS +destroyed|houses|ARG1 +neighboring|NIL|NIL +neighboring|houses|ARG1 +houses|NIL|NIL +Neighbors|NIL|NIL +opposition|NIL|NIL +politicians|NIL|NIL +blamed|NIL|NIL +blamed|Neighbors|ARG0 +blamed|opposition|ARG0 +blamed|politicians|ARG0 +blamed|security|ARG1 +lax|NIL|NIL +security|NIL|NIL +security|lax|NIL +condemned|NIL|NIL +condemned|Neighbors|ARG0 +condemned|opposition|ARG0 +condemned|politicians|ARG0 +condemned|bases|ARGM-LOC +use|NIL|NIL +use|firms|NIL +private|NIL|NIL +security|NIL|NIL +firms|NIL|NIL +firms|private|NIL +firms|security|NIL +29|NIL|NIL +other|NIL|NIL +bases|NIL|NIL +bases|this|NIL +bases|29|NIL +bases|other|NIL +bases|Britain|NIL +Britain|NIL|NIL +considered|NIL|NIL +considered|bases|ARG1 +considered|be|ARG2 +be|risk|AUX-PRD +low|NIL|NIL +risk|NIL|NIL +risk|low|NIL +IRA|NIL|NIL +said|NIL|NIL +said|IRA|ARG0 +said|calling|ARGM-ADV +blast|NIL|NIL +was|blast|AUX-SBJ +was|response|AUX-PRD +response|NIL|NIL +response|speech|NIL +response|Regiment|NIL +speech|NIL|NIL +speech|a|NIL +speech|Thatcher|NIL +Prime|NIL|NIL +Minister|NIL|NIL +Thatcher|NIL|NIL +Thatcher|Prime|NIL +Thatcher|Minister|NIL +Ulster|NIL|NIL +Defense|NIL|NIL +Regiment|NIL|NIL +Regiment|Ulster|NIL +Regiment|Defense|NIL +calling|NIL|NIL +calling|speech|ARG1 +calling|act|ARG1 +speech|NIL|NIL +act|NIL|NIL +act|an|NIL +act|war|NIL +war|NIL|NIL +is|This|AUX-SBJ +is|latest|AUX-PRD +latest|NIL|NIL +latest|series|NIL +series|NIL|NIL +series|a|NIL +series|attacks|NIL +attacks|NIL|NIL +IRA|NIL|NIL +seeks|NIL|NIL +seeks|IRA|ARG0 +seeks|withdrawal|ARG1 +withdrawal|NIL|NIL +withdrawal|forces|NIL +withdrawal|Ireland|NIL +British|NIL|NIL +forces|NIL|NIL +forces|British|NIL +Northern|NIL|NIL +Ireland|NIL|NIL +Ireland|Northern|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D064.M.100.J.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D064.M.100.J.26.be new file mode 100644 index 0000000000000000000000000000000000000000..67aac22e9f3c5e0284978d849418b857846e82b8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D064.M.100.J.26.be @@ -0,0 +1,134 @@ +03/14/1988|NIL|NIL +communist|NIL|NIL +world|NIL|NIL +world|communist|NIL +gets|NIL|NIL +gets|world|ARG1 +gets|week|ARGM-TMP +its|NIL|NIL +first|NIL|NIL +McDonald|NIL|NIL +McDonald|its|NIL +McDonald|first|NIL +next|NIL|NIL +week|NIL|NIL +week|McDonald|NIL +week|next|NIL +people|NIL|NIL +people|some|NIL +here|NIL|NIL +wondering|NIL|NIL +wondering|people|ARG0 +wondering|here|ARGM-LOC +wondering|be|ARG1 +its|NIL|NIL +American|NIL|NIL +hamburgers|NIL|NIL +hamburgers|its|NIL +hamburgers|American|NIL +be|hamburgers|AUX-SBJ +be|popular|AUX-PRD +as|NIL|NIL +popular|NIL|NIL +popular|as|NIL +popular|treat|NIL +local|NIL|NIL +fast-food|NIL|NIL +treat|NIL|NIL +treat|local|NIL +treat|fast-food|NIL +treat|Pljeskavica|NIL +Pljeskavica|NIL|NIL +04/12/1988|NIL|NIL +McDonald|NIL|NIL +McDonald|'s|NIL +flourishing|NIL|NIL +flourishing|McDonald|ARG0 +flourishing|nations|ARGM-LOC +11|NIL|NIL +other|NIL|NIL +nations|NIL|NIL +nations|11|NIL +nations|other|NIL +nations|region|NIL +region|NIL|NIL +10/08/1990|NIL|NIL +McDonald|NIL|NIL +McDonald|golden|NIL +hamburgers|NIL|NIL +hamburgers|golden|NIL +fries|NIL|NIL +fries|golden|NIL +golden|NIL|NIL +arches|NIL|NIL +arches|McDonald|NIL +arches|golden|NIL +came|NIL|NIL +came|McDonald|ARG1 +came|hamburgers|ARG1 +came|fries|ARG1 +came|arches|ARG1 +came|China|ARG2 +came|10/08/1990|ARGM-TMP +China|NIL|NIL +10/08/1990|NIL|NIL +10/08/1990|opened|NIL +fast-food|NIL|NIL +chain|NIL|NIL +chain|fast-food|NIL +opened|NIL|NIL +opened|restaurant|ARG1 +opened|nation|ARGM-LOC +its|NIL|NIL +first|NIL|NIL +restaurant|NIL|NIL +restaurant|its|NIL +restaurant|first|NIL +nation|NIL|NIL +nation|a|NIL +famed|NIL|NIL +famed|cuisine|ARGM-PNC +its|NIL|NIL +distinctive|NIL|NIL +cuisine|NIL|NIL +cuisine|its|NIL +cuisine|distinctive|NIL +10/08/1990|NIL|NIL +Hundreds|NIL|NIL +Hundreds|10/08/1990|NIL +Hundreds|Chinese|NIL +Chinese|NIL|NIL +waited|NIL|NIL +waited|Hundreds|ARG1 +waited|hours|ARG2 +waited|taste|ARG2 +hours|NIL|NIL +hours|restaurant|NIL +restaurant|NIL|NIL +restaurant|Shenzhen|NIL +Shenzhen|NIL|NIL +Shenzhen|town|NIL +economic|NIL|NIL +boom|NIL|NIL +town|NIL|NIL +town|an|NIL +town|economic|NIL +town|boom|NIL +town|Kong|NIL +Hong|NIL|NIL +Kong|NIL|NIL +Kong|Hong|NIL +their|NIL|NIL +first|NIL|NIL +taste|NIL|NIL +taste|their|NIL +taste|first|NIL +taste|hamburger|NIL +taste|fries|NIL +taste|shake|NIL +McDonald|NIL|NIL +McDonald|a|NIL +hamburger|NIL|NIL +hamburger|McDonald|NIL +fries|NIL|NIL +shake|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D064.M.100.J.B.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D064.M.100.J.B.be new file mode 100644 index 0000000000000000000000000000000000000000..04ed9807742583585ea0af74f01f83363701cabe --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D064.M.100.J.B.be @@ -0,0 +1,135 @@ +capitalize|NIL|NIL +Asia|NIL|NIL +fastest-growing|NIL|NIL +economy|NIL|NIL +economy|Asia|NIL +economy|fastest-growing|NIL +McDonald|NIL|NIL +McDonald|'s|NIL +opened|NIL|NIL +opened|capitalize|ARGM-PNC +opened|McDonald|ARG0 +opened|outlet|ARG1 +its|NIL|NIL +first|NIL|NIL +outlet|NIL|NIL +outlet|its|NIL +outlet|first|NIL +outlet|Korea|NIL +South|NIL|NIL +Korea|NIL|NIL +Korea|South|NIL +Moving|NIL|NIL +Moving|countries|ARG2 +communist|NIL|NIL +countries|NIL|NIL +countries|communist|NIL +countries|March|NIL +March|NIL|NIL +March|24|NIL +March|1988|NIL +24|NIL|NIL +1988|NIL|NIL +it|NIL|NIL +opened|NIL|NIL +opened|Moving|ARGM-ADV +opened|it|ARG0 +opened|Yugoslavia|ARGM-LOC +Belgrade|NIL|NIL +Yugoslavia|NIL|NIL +Yugoslavia|Belgrade|NIL +compete|NIL|NIL +compete|There|ARG0 +compete|pljeskavica|ARG1 +compete|pork|ARG1 +compete|sandwich|ARG1 +locally|NIL|NIL +favored|NIL|NIL +favored|locally|ARGM-LOC +favored|pljeskavica|ARG1 +pljeskavica|NIL|NIL +pork|NIL|NIL +pork|a|NIL +onion|NIL|NIL +sandwich|NIL|NIL +sandwich|onion|NIL +initial|NIL|NIL +reaction|NIL|NIL +reaction|initial|NIL +was|compete|AUX-SBJ +was|reaction|AUX-SBJ +was|favorable|AUX-PRD +favorable|NIL|NIL +Two|NIL|NIL +years|NIL|NIL +years|Two|NIL +later|NIL|NIL +later|years|NIL +came|NIL|NIL +came|later|ARGM-TMP +came|outlet|ARG1 +came|date|ARG2 +its|NIL|NIL +largest|NIL|NIL +outlet|NIL|NIL +outlet|its|NIL +outlet|largest|NIL +date|NIL|NIL +Moscow|NIL|NIL +thousands|NIL|NIL +lined|NIL|NIL +lined|Moscow|ARGM-LOC +lined|thousands|ARG1 +lined|up|rel +lined|record|ARGM-PNC +opening|NIL|NIL +opening|record|ARG1 +day|NIL|NIL +record|NIL|NIL +record|an|NIL +record|day|NIL +record|meals|NIL +30,000|NIL|NIL +meals|NIL|NIL +meals|30,000|NIL +served|NIL|NIL +served|meals|ARG1 +served|registers|ARGM-LOC +27|NIL|NIL +cash|NIL|NIL +registers|NIL|NIL +registers|27|NIL +registers|cash|NIL +Next|NIL|NIL +McDonald|NIL|NIL +McDonald|'s|NIL +opened|NIL|NIL +opened|Next|ARGM-TMP +opened|McDonald|ARG0 +opened|China|ARGM-LOC +China|NIL|NIL +cooking|NIL|NIL +is|cooking|AUX-SBJ +is|art|AUX-PRD +culinary|NIL|NIL +art|NIL|NIL +art|a|NIL +art|culinary|NIL +McDonald|NIL|NIL +worldwide|NIL|NIL +restaurants|NIL|NIL +restaurants|McDonald|NIL +restaurants|worldwide|NIL +are|restaurants|AUX-SBJ +are|ventures|AUX-PRD +joint|NIL|NIL +ventures|NIL|NIL +ventures|joint|NIL +ventures|locals|NIL +locals|NIL|NIL +locals|country|NIL +country|NIL|NIL +in|which|NIL +they|NIL|NIL +operate|NIL|NIL +operate|they|ARG1 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D065.M.100.J.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D065.M.100.J.26.be new file mode 100644 index 0000000000000000000000000000000000000000..48adbbf948bf0da9eeb47660305477e18a16b4dd --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D065.M.100.J.26.be @@ -0,0 +1,136 @@ +11/14/1988|NIL|NIL +Dan|NIL|NIL +Quayle|NIL|NIL +Quayle|Dan|NIL +is|11/14/1988|AUX-SBJ +is|Quayle|AUX-SBJ +is|likely|AUX-PRD +is|candidacy|AUX-TMP +likely|NIL|NIL +likely|be|NIL +be|on|AUX-PRD +on|a|NIL +on|man|NIL +on|House|NIL +outside|NIL|NIL +outside|'|NIL +George|NIL|NIL +Bush|NIL|NIL +Bush|George|NIL +White|NIL|NIL +House|NIL|NIL +House|Bush|NIL +House|White|NIL +following|NIL|NIL +vice|NIL|NIL +presidential|NIL|NIL +candidacy|NIL|NIL +candidacy|a|NIL +candidacy|vice|NIL +candidacy|presidential|NIL +began|NIL|NIL +began|candidacy|ARG1 +began|furor|ARGM-LOC +furor|NIL|NIL +furor|a|NIL +settled|NIL|NIL +settled|obscurity|ARG2 +obscurity|NIL|NIL +experts|NIL|NIL +say|NIL|NIL +say|is|ARGM-ADV +say|experts|ARG0 +11/14/1988|NIL|NIL +Relegated|NIL|NIL +Relegated|11/14/1988|NIL +Relegated|campaign|NIL +campaign|NIL|NIL +campaign|towns|NIL +campaign|areas|NIL +campaign|Quayle|NIL +small|NIL|NIL +towns|NIL|NIL +towns|small|NIL +safe|NIL|NIL +GOP|NIL|NIL +areas|NIL|NIL +areas|safe|NIL +areas|GOP|NIL +Quayle|NIL|NIL +Quayle|president|NIL +vice|NIL|NIL +president|NIL|NIL +president|vice|NIL +is|Relegated|AUX-SBJ +is|likely|AUX-PRD +likely|NIL|NIL +likely|given|NIL +given|NIL|NIL +given|_|ARG1 +traditional|NIL|NIL +ceremonial|NIL|NIL +role|NIL|NIL +_|NIL|NIL +_|a|NIL +_|traditional|NIL +_|ceremonial|NIL +_|role|NIL +going|NIL|NIL +going|_|ARG0 +going|gatherings|ARG2 +going|state|ARG2 +going|funerals|ARG2 +going|_|ARG2 +political|NIL|NIL +gatherings|NIL|NIL +gatherings|political|NIL +state|NIL|NIL +state|political|NIL +funerals|NIL|NIL +funerals|political|NIL +_|NIL|NIL +_|political|NIL +rather|NIL|NIL +advisory|NIL|NIL +role|NIL|NIL +role|political|NIL +role|rather|NIL +role|advisory|NIL +Walter|NIL|NIL +Mondale|NIL|NIL +Mondale|political|NIL +Mondale|Walter|NIL +even|NIL|NIL +Bush|NIL|NIL +had|even|ARGM-ADV +had|Bush|ARG0 +scholars|NIL|NIL +scholars|some|NIL +feel|NIL|NIL +feel|scholars|ARG0 +11/12/1989|NIL|NIL +One|NIL|NIL +year|NIL|NIL +year|11/12/1989|NIL +year|One|NIL +year|election|NIL +his|NIL|NIL +election|NIL|NIL +election|his|NIL +Dan|NIL|NIL +Quayle|NIL|NIL +Quayle|Dan|NIL +achieved|NIL|NIL +achieved|year|ARGM-TMP +achieved|Quayle|ARG0 +achieved|all|ARG1 +all|wanted|NIL +he|NIL|NIL +ever|NIL|NIL +wanted|NIL|NIL +wanted|he|ARG0 +wanted|ever|ARGM-TMP +He|NIL|NIL +become|NIL|NIL +become|dull|ARG2 +dull|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D065.M.100.J.F.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D065.M.100.J.F.be new file mode 100644 index 0000000000000000000000000000000000000000..3d18c74c2b2c52f8c9cc8d7dcdb1f880f1403658 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D065.M.100.J.F.be @@ -0,0 +1,128 @@ +George|NIL|NIL +Bush|NIL|NIL +Bush|George|NIL +choice|NIL|NIL +choice|Bush|NIL +choice|Quayle|NIL +Dan|NIL|NIL +Quayle|NIL|NIL +Quayle|Dan|NIL +his|NIL|NIL +running|NIL|NIL +mate|NIL|NIL +mate|his|NIL +mate|running|NIL +surprised|NIL|NIL +surprised|choice|ARG0 +surprised|mate|ARGM-ADV +surprised|observers|ARG1 +most|NIL|NIL +political|NIL|NIL +political|most|NIL +observers|NIL|NIL +observers|political|NIL +quickly|NIL|NIL +supported|NIL|NIL +supported|choice|ARG1 +supported|mate|ARGM-ADV +supported|quickly|ARGM-MNR +supported|many|ARG0 +many|NIL|NIL +many|senators|NIL +Quayle|NIL|NIL +fellow|NIL|NIL +Republican|NIL|NIL +senators|NIL|NIL +senators|Quayle|NIL +senators|fellow|NIL +senators|Republican|NIL +Quayle|NIL|NIL +viewed|NIL|NIL +viewed|Quayle|ARG1 +viewed|lightweight|ARG2 +lightweight|NIL|NIL +lightweight|a|NIL +questions|NIL|NIL +raised|NIL|NIL +raised|questions|ARG1 +raised|resume|ARG2 +his|NIL|NIL +military|NIL|NIL +service|NIL|NIL +service|his|NIL +service|military|NIL +errors|NIL|NIL +errors|his|NIL +errors|military|NIL +his|NIL|NIL +official|NIL|NIL +resume|NIL|NIL +resume|his|NIL +resume|military|NIL +resume|his|NIL +resume|official|NIL +His|NIL|NIL +main|NIL|NIL +attributes|NIL|NIL +attributes|His|NIL +attributes|main|NIL +were|attributes|AUX-SBJ +were|party|AUX-PRD +were|loyalty|AUX-PRD +were|identification|AUX-PRD +were|man|AUX-PRD +party|NIL|NIL +loyalty|NIL|NIL +identification|NIL|NIL +devoted|NIL|NIL +family|NIL|NIL +man|NIL|NIL +man|a|NIL +man|devoted|NIL +man|family|NIL +Quayle|NIL|NIL +contributed|NIL|NIL +contributed|Quayle|ARG0 +contributed|little|ARG1 +contributed|campaign|ARG2 +little|NIL|NIL +campaign|NIL|NIL +disappeared|NIL|NIL +disappeared|Quayle|ARG0 +disappeared|scene|ARG2 +political|NIL|NIL +scene|NIL|NIL +scene|political|NIL +President|NIL|NIL +Bush|NIL|NIL +Bush|President|NIL +however|NIL|NIL +continued|NIL|NIL +continued|Bush|ARG0 +continued|however|ARGM-DIS +continued|voice|ARG1 +voice|NIL|NIL +voice|support|ARG1 +support|NIL|NIL +support|confidence|NIL +confidence|NIL|NIL +confidence|Quayle|NIL +Quayle|NIL|NIL +His|NIL|NIL +friends|NIL|NIL +friends|His|NIL +especially|NIL|NIL +his|NIL|NIL +home|NIL|NIL +town|NIL|NIL +town|especially|NIL +town|his|NIL +town|home|NIL +called|NIL|NIL +called|friends|ARG0 +called|town|ARGM-LOC +called|him|ARG1 +him|NIL|NIL +him|winner|NIL +winner|NIL|NIL +winner|a|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D066.M.100.J.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D066.M.100.J.26.be new file mode 100644 index 0000000000000000000000000000000000000000..c6ae2ac44c74ab7ec38fd6a8939be0b229483006 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D066.M.100.J.26.be @@ -0,0 +1,153 @@ +03/23/1989|NIL|NIL +Paying|NIL|NIL +Paying|calls|ARG1 +unexpected|NIL|NIL +calls|NIL|NIL +calls|unexpected|NIL +calls|stores|NIL +stores|NIL|NIL +is|Paying|AUX-NOM +is|way|AUX-PRD +one|NIL|NIL +way|NIL|NIL +way|one|NIL +Walton|NIL|NIL +kept|NIL|NIL +kept|way|ARG1 +kept|Walton|ARG0 +kept|touch|ARGM-LOC +close|NIL|NIL +touch|NIL|NIL +touch|close|NIL +touch|goings-on|NIL +everyday|NIL|NIL +goings-on|NIL|NIL +goings-on|everyday|NIL +06/15/1989|NIL|NIL +Wal-Mart|NIL|NIL +founder|NIL|NIL +founder|06/15/1989|NIL +founder|Wal-Mart|NIL +founder|Sam|NIL +founder|Walton|NIL +Sam|NIL|NIL +Walton|NIL|NIL +pitched|NIL|NIL +pitched|founder|ARG0 +pitched|in|rel +pitched|help|ARGM-PNC +help|NIL|NIL +help|shut|ARGM-TMP +check-out|NIL|NIL +clerks|NIL|NIL +clerks|check-out|NIL +clerks|store|NIL +his|NIL|NIL +store|NIL|NIL +store|his|NIL +store|city|NIL +Florida|NIL|NIL +Panhandle|NIL|NIL +city|NIL|NIL +city|this|NIL +city|Florida|NIL +city|Panhandle|NIL +electronic|NIL|NIL +glitch|NIL|NIL +glitch|an|NIL +glitch|electronic|NIL +shut|NIL|NIL +shut|glitch|ARG1 +shut|down|rel +shut|registers|ARG1 +cash|NIL|NIL +registers|NIL|NIL +registers|cash|NIL +05/07/1990|NIL|NIL +Forty|NIL|NIL +years|NIL|NIL +years|Forty|NIL +years|Walton|NIL +Sam|NIL|NIL +Walton|NIL|NIL +Walton|Sam|NIL +first|NIL|NIL +hung|NIL|NIL +hung|05/07/1990|ARG1 +hung|years|ARG1 +hung|first|ARGM-TMP +hung|out|rel +hung|shingle|ARG1 +his|NIL|NIL +shingle|NIL|NIL +shingle|his|NIL +Walton|NIL|NIL +Walton|'s|NIL +Walton|5|NIL +Walton|&|NIL +Walton|10|NIL +5|NIL|NIL +10|NIL|NIL +reopen|NIL|NIL +reopen|hung|ARGM-ADV +reopen|Walton|ARG1 +reopen|show|ARGM-PNC +show|NIL|NIL +show|built|ARG1 +little|NIL|NIL +rural|NIL|NIL +storekeeper|NIL|NIL +storekeeper|a|NIL +storekeeper|little|NIL +storekeeper|rural|NIL +built|NIL|NIL +built|storekeeper|ARG0 +built|empire|ARG1 +discount|NIL|NIL +retail|NIL|NIL +empire|NIL|NIL +empire|a|NIL +empire|discount|NIL +empire|retail|NIL +09/03/1992|NIL|NIL +MADE|NIL|NIL +MADE|09/03/1992|ARG0 +MADE|AMERICA|ARGM-LOC +AMERICA|NIL|NIL +MY|NIL|NIL +STORY|NIL|NIL +STORY|MY|NIL +STORY|Doubleday|NIL +Sam|NIL|NIL +Walton|NIL|NIL +Doubleday|NIL|NIL +Doubleday|Sam|NIL +Doubleday|Walton|NIL +Doubleday|Dollars|NIL +Dollars|NIL|NIL +Dollars|22.50|NIL +22.50|NIL|NIL +269|NIL|NIL +pages|NIL|NIL +pages|269|NIL +Being|pages|AUX-SBJ +Being|hero|AUX-PRD +American|NIL|NIL +folk|NIL|NIL +hero|NIL|NIL +hero|an|NIL +hero|American|NIL +hero|folk|NIL +is|Being|AUX-NOM +is|assignment|AUX-PRD +is|found|AUX-ADV +tricky|NIL|NIL +assignment|NIL|NIL +assignment|a|NIL +assignment|tricky|NIL +Ross|NIL|NIL +Perot|NIL|NIL +Perot|Ross|NIL +found|NIL|NIL +found|Perot|ARG0 +found|out|rel diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D066.M.100.J.I.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D066.M.100.J.I.be new file mode 100644 index 0000000000000000000000000000000000000000..30eee5db8ff92c4cf835abe7f1638b815ef30073 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D066.M.100.J.I.be @@ -0,0 +1,139 @@ +Sam|NIL|NIL +Walton|NIL|NIL +Walton|Sam|NIL +died|NIL|NIL +died|Walton|ARG1 +died|April|ARGM-TMP +April|NIL|NIL +April|1992|NIL +1992|NIL|NIL +revolutionized|NIL|NIL +revolutionized|Walton|ARG0 +revolutionized|retailing|ARG1 +discount|NIL|NIL +retailing|NIL|NIL +retailing|discount|NIL +Born|NIL|NIL +Born|Oklahoma|ARGM-LOC +Oklahoma|NIL|NIL +he|NIL|NIL +became|NIL|NIL +became|Born|ARGM-ADV +became|man|ARG2 +richest|NIL|NIL +man|NIL|NIL +man|richest|NIL +man|America|NIL +America|NIL|NIL +He|NIL|NIL +took|NIL|NIL +took|He|ARG0 +took|shopping|ARG1 +took|founding|ARGM-ADV +discount|NIL|NIL +shopping|NIL|NIL +shopping|discount|NIL +shopping|America|NIL +rural|NIL|NIL +America|NIL|NIL +America|rural|NIL +founding|NIL|NIL +founding|City|ARG1 +Wal-Mart|NIL|NIL +Discount|NIL|NIL +City|NIL|NIL +City|Wal-Mart|NIL +City|Discount|NIL +became|NIL|NIL +became|City|ARG1 +became|Wal-Mart|ARG2 +became|1992|ARGM-TMP +Wal-Mart|NIL|NIL +Wal-Mart|retailer|NIL +world|NIL|NIL +largest|NIL|NIL +retailer|NIL|NIL +retailer|world|NIL +retailer|largest|NIL +1992|NIL|NIL +Sam|NIL|NIL +was|Sam|AUX-SBJ +was|frugal|AUX-PRD +was|homespun|AUX-PRD +frugal|NIL|NIL +homespun|NIL|NIL +used|NIL|NIL +used|Sam|ARG0 +used|visits|ARG1 +used|test|ARG2 +pop-in|NIL|NIL +visits|NIL|NIL +visits|pop-in|NIL +test|NIL|NIL +test|customers|ARG2 +test|employees|ARG2 +happy|NIL|NIL +customers|NIL|NIL +customers|happy|NIL +employees|NIL|NIL +employees|happy|NIL +preserve|NIL|NIL +preserve|legacy|ARG1 +his|NIL|NIL +personal|NIL|NIL +legacy|NIL|NIL +legacy|his|NIL +legacy|personal|NIL +he|NIL|NIL +opened|NIL|NIL +opened|he|ARG0 +Wal-Mart|NIL|NIL +visitors|NIL|NIL +visitors|a|NIL +visitors|Wal-Mart|NIL +center|NIL|NIL +center|visitors|NIL +wrote|NIL|NIL +wrote|he|ARG0 +his|NIL|NIL +autobiography|NIL|NIL +autobiography|his|NIL +filling|NIL|NIL +filling|it|ARG1 +filling|anecdotes|ARG2 +it|NIL|NIL +good|NIL|NIL +ole|NIL|NIL +anecdotes|NIL|NIL +anecdotes|good|NIL +anecdotes|ole|NIL +1994|NIL|NIL +book|NIL|NIL +book|A|NIL +book|1994|NIL +highlighted|NIL|NIL +highlighted|book|ARG0 +highlighted|ability|ARG1 +highlighted|management|ARG1 +highlighted|impact|ARG1 +his|NIL|NIL +ability|NIL|NIL +ability|his|NIL +copy|NIL|NIL +adapt|NIL|NIL +chain|NIL|NIL +responsive|NIL|NIL +management|NIL|NIL +management|chain|NIL +management|responsive|NIL +chain|NIL|NIL +impact|NIL|NIL +impact|chain|NIL +impact|stores|NIL +impact|position|NIL +Mom-and-Pop|NIL|NIL +stores|NIL|NIL +stores|Mom-and-Pop|NIL +anti-union|NIL|NIL +position|NIL|NIL +position|anti-union|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D067.M.100.F.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D067.M.100.F.26.be new file mode 100644 index 0000000000000000000000000000000000000000..42ddc032db2bbaf5c851c9889aeac90f90a375d0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D067.M.100.F.26.be @@ -0,0 +1,138 @@ +08/25/1992|NIL|NIL +08/25/1992|Andrew|NIL +Hurricane|NIL|NIL +Andrew|NIL|NIL +Andrew|Hurricane|NIL +08/25/1992|NIL|NIL +US|NIL|NIL +US|08/25/1992|NIL +US|CITIES|NIL +US|Gulf|NIL +US|Alabama|NIL +US|Texas|NIL +CITIES|NIL|NIL +Gulf|NIL|NIL +Gulf|Mexico|NIL +Mexico|NIL|NIL +Alabama|NIL|NIL +eastern|NIL|NIL +Texas|NIL|NIL +Texas|eastern|NIL +were|US|AUX-SBJ +were|watch|AUX-LOC +were|night|AUX-LOC +were|headed|AUX-ADV +storm|NIL|NIL +watch|NIL|NIL +watch|storm|NIL +night|NIL|NIL +night|08/24/1992|NIL +08/24/1992|NIL|NIL +Hurricane|NIL|NIL +Andrew|NIL|NIL +Andrew|Hurricane|NIL +headed|NIL|NIL +headed|Andrew|ARG0 +headed|west|ARG1 +headed|sweeping|ARGM-TMP +headed|causing|ARGM-ADV +west|NIL|NIL +sweeping|NIL|NIL +sweeping|Florida|ARGM-LOC +southern|NIL|NIL +Florida|NIL|NIL +Florida|southern|NIL +causing|NIL|NIL +causing|deaths|ARG1 +causing|damage|ARG1 +at|least|NIL +at|eight|NIL +least|NIL|NIL +eight|NIL|NIL +deaths|NIL|NIL +deaths|at|NIL +severe|NIL|NIL +property|NIL|NIL +damage|NIL|NIL +damage|severe|NIL +damage|property|NIL +08/27/1992|NIL|NIL +HURRICANE|NIL|NIL +Andrew|NIL|NIL +Andrew|08/27/1992|NIL +Andrew|HURRICANE|NIL +claimed|NIL|NIL +claimed|Andrew|ARG1 +claimed|be|ARG1 +be|disaster|AUX-PRD +costliest|NIL|NIL +natural|NIL|NIL +disaster|NIL|NIL +disaster|costliest|NIL +disaster|natural|NIL +disaster|history|NIL +US|NIL|NIL +history|NIL|NIL +history|US|NIL +08/26/1992|NIL|NIL +smashed|NIL|NIL +smashed|Andrew|ARG0 +smashed|way|ARG1 +smashed|state|ARG2 +smashed|inflicting|ARGM-ADV +smashed|missing|ARGM-ADV +its|NIL|NIL +way|NIL|NIL +way|its|NIL +state|NIL|NIL +state|Louisiana|NIL +Louisiana|NIL|NIL +inflicting|NIL|NIL +inflicting|damage|ARG1 +severe|NIL|NIL +damage|NIL|NIL +damage|severe|NIL +damage|communities|NIL +rural|NIL|NIL +communities|NIL|NIL +communities|rural|NIL +narrowly|NIL|NIL +missing|NIL|NIL +missing|narrowly|ARGM-MNR +missing|city|ARG1 +low-lying|NIL|NIL +city|NIL|NIL +city|low-lying|NIL +city|Orleans|NIL +New|NIL|NIL +Orleans|NIL|NIL +Orleans|New|NIL +08/28/1992|NIL|NIL +08/28/1992|means|NIL +means|NIL|NIL +means|this|ARG0 +means|is|ARG1 +GA|NIL|NIL +is|GA|AUX-SBJ +is|able|AUX-PRD +able|NIL|NIL +able|pass|NIL +pass|NIL|NIL +pass|on|rel +pass|losses|ARG1 +pass|reinsurers|ARG2 +pass|breached|ARGM-TMP +its|NIL|NIL +losses|NIL|NIL +losses|its|NIL +external|NIL|NIL +reinsurers|NIL|NIL +reinsurers|external|NIL +certain|NIL|NIL +claims|NIL|NIL +claims|a|NIL +claims|certain|NIL +claims|threshold|NIL +threshold|NIL|NIL +breached|NIL|NIL +breached|claims|ARG1 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D067.M.100.F.I.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D067.M.100.F.I.be new file mode 100644 index 0000000000000000000000000000000000000000..81556b3d05e9255ad794777e377c6b7c8e6e8ec6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D067.M.100.F.I.be @@ -0,0 +1,139 @@ +Damage|NIL|NIL +Damage|Andrew|NIL +Hurricane|NIL|NIL +Andrew|NIL|NIL +Andrew|Hurricane|NIL +estimated|NIL|NIL +estimated|Damage|ARG1 +estimated|$|ARG2 +estimated|$|ARG2 +$|NIL|NIL +$|20|NIL +$|billion|NIL +20|NIL|NIL +billion|NIL|NIL +$|NIL|NIL +$|8|NIL +$|billion|NIL +$|covered|NIL +8|NIL|NIL +billion|NIL|NIL +covered|NIL|NIL +covered|insurance|ARG0 +insurance|NIL|NIL +American|NIL|NIL +insurers|NIL|NIL +insurers|American|NIL +take|NIL|NIL +take|insurers|ARG0 +take|brunt|ARG1 +brunt|NIL|NIL +brunt|claims|NIL +claims|NIL|NIL +General|NIL|NIL +Accident|NIL|NIL +Accident|General|NIL +Accident|insurer|NIL +leading|NIL|NIL +leading|insurer|ARG0 +British|NIL|NIL +insurer|NIL|NIL +insurer|British|NIL +expects|NIL|NIL +expects|Accident|ARG0 +expects|rise|ARG1 +claims|NIL|NIL +rise|NIL|NIL +rise|claims|ARG1 +as|NIL|NIL +high|NIL|NIL +high|as|NIL +high|$|NIL +$|NIL|NIL +$|40|NIL +$|million|NIL +40|NIL|NIL +million|NIL|NIL +Andrew|NIL|NIL +tore|NIL|NIL +tore|Andrew|ARG0 +tore|Florida|ARG1 +tore|leaving|ARGM-ADV +southern|NIL|NIL +Florida|NIL|NIL +Florida|southern|NIL +leaving|NIL|NIL +leaving|dead|ARG1 +leaving|outages|ARG1 +leaving|water|ARG1 +leaving|wake|ARGM-LOC +15|NIL|NIL +dead|NIL|NIL +dead|15|NIL +power|NIL|NIL +outages|NIL|NIL +outages|power|NIL +polluted|NIL|NIL +water|NIL|NIL +water|polluted|NIL +his|NIL|NIL +wake|NIL|NIL +wake|his|NIL +Homestead|NIL|NIL +nearby|NIL|NIL +air|NIL|NIL +force|NIL|NIL +base|NIL|NIL +base|nearby|NIL +base|air|NIL +base|force|NIL +flattened|NIL|NIL +flattened|Homestead|ARG1 +flattened|base|ARG1 +Dade|NIL|NIL +County|NIL|NIL +County|Dade|NIL +250,000|NIL|NIL +people|NIL|NIL +people|250,000|NIL +are|County|AUX-LOC +are|people|AUX-SBJ +are|homeless|AUX-PRD +homeless|NIL|NIL +Andrew|NIL|NIL +next|NIL|NIL +smashed|NIL|NIL +smashed|Andrew|ARG0 +smashed|next|ARGM-TMP +smashed|Louisiana|ARG1 +smashed|killing|ARGM-ADV +Louisiana|NIL|NIL +killing|NIL|NIL +killing|two|ARG1 +two|NIL|NIL +It|NIL|NIL +missed|NIL|NIL +missed|It|ARG0 +missed|refineries|ARG1 +important|NIL|NIL +oil|NIL|NIL +refineries|NIL|NIL +refineries|important|NIL +refineries|oil|NIL +damaged|NIL|NIL +damaged|It|ARG0 +damaged|crops|ARG1 +damaged|oyster|ARG1 +damaged|alligator|ARG1 +damaged|businesses|ARG1 +crops|NIL|NIL +oyster|NIL|NIL +alligator|NIL|NIL +businesses|NIL|NIL +dollar|NIL|NIL +sustained|NIL|NIL +sustained|dollar|ARG0 +similar|NIL|NIL +assault|NIL|NIL +assault|a|NIL +assault|similar|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D068.M.100.F.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D068.M.100.F.26.be new file mode 100644 index 0000000000000000000000000000000000000000..4cd57ef3d078ab395f043da6a457963dc2b2d8d4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D068.M.100.F.26.be @@ -0,0 +1,131 @@ +06/21/1990|NIL|NIL +Checkpoint|NIL|NIL +Charlie|NIL|NIL +Charlie|06/21/1990|NIL +Charlie|Checkpoint|NIL +Charlie|border|NIL +famed|NIL|NIL +Allied|NIL|NIL +border|NIL|NIL +border|famed|NIL +border|Allied|NIL +crossing|NIL|NIL +crossing|border|ARG0 +crossing|Wall|ARG0 +Berlin|NIL|NIL +Wall|NIL|NIL +Wall|Berlin|NIL +was|Charlie|AUX-SBJ +hauled|NIL|NIL +hauled|away|rel +hauled|06/22/1990|ARGM-TMP +06/22/1990|NIL|NIL +06/22/1990|NIL|NIL +proposal|NIL|NIL +outlined|NIL|NIL +outlined|proposal|ARG1 +outlined|Shevardnadze|ARG0 +Soviet|NIL|NIL +Foreign|NIL|NIL +Minister|NIL|NIL +Eduard|NIL|NIL +Shevardnadze|NIL|NIL +Shevardnadze|Soviet|NIL +Shevardnadze|Foreign|NIL +Shevardnadze|Minister|NIL +Shevardnadze|Eduard|NIL +international|NIL|NIL +talks|NIL|NIL +talks|international|NIL +talks|Berlin|NIL +talks|future|NIL +East|NIL|NIL +Berlin|NIL|NIL +Berlin|East|NIL +strategic|NIL|NIL +future|NIL|NIL +future|strategic|NIL +future|Germany|NIL +united|NIL|NIL +united|Germany|ARG1 +Germany|NIL|NIL +Germany|a|NIL +06/22/1990|NIL|NIL +Checkpoint|NIL|NIL +Charlie|NIL|NIL +Charlie|06/22/1990|NIL +Charlie|Checkpoint|NIL +Charlie|post|NIL +Berlin|NIL|NIL +Wall|NIL|NIL +Wall|Berlin|NIL +border|NIL|NIL +post|NIL|NIL +post|Wall|NIL +post|border|NIL +symbolized|NIL|NIL +symbolized|post|ARG0 +symbolized|War|ARG1 +Cold|NIL|NIL +War|NIL|NIL +War|Cold|NIL +hoisted|NIL|NIL +hoisted|Charlie|ARG1 +hoisted|history|ARG2 +hoisted|06/22/1990|ARGM-TMP +history|NIL|NIL +06/22/1990|NIL|NIL +06/22/1990|NIL|NIL +Checkpoint|NIL|NIL +Charlie|NIL|NIL +Charlie|Checkpoint|NIL +went|NIL|NIL +went|Charlie|ARG0 +went|up|ARGM-DIR +went|1961|ARGM-TMP +went|middle|ARGM-LOC +went|erected|ARGM-TMP +up|NIL|NIL +1961|NIL|NIL +middle|NIL|NIL +middle|boulevard|NIL +Friedrichstrasse|NIL|NIL +boulevard|NIL|NIL +boulevard|Friedrichstrasse|NIL +Communist|NIL|NIL +East|NIL|NIL +Germany|NIL|NIL +Germany|Communist|NIL +Germany|East|NIL +erected|NIL|NIL +erected|Germany|ARG0 +erected|choke|ARGM-PNC +Berlin|NIL|NIL +Wall|NIL|NIL +Wall|Berlin|NIL +choke|NIL|NIL +choke|Wall|ARG0 +choke|off|rel +choke|flood|ARG1 +choke|enclave|ARG2 +flood|NIL|NIL +flood|a|NIL +flood|refugees|NIL +refugees|NIL|NIL +enclave|NIL|NIL +enclave|Berlin|NIL +West|NIL|NIL +Berlin|NIL|NIL +Berlin|West|NIL +06/23/1990|NIL|NIL +Patrick|NIL|NIL +Gainey|NIL|NIL +Gainey|Patrick|NIL +took|NIL|NIL +took|Gainey|ARG0 +took|pictures|ARG1 +pictures|NIL|NIL +pictures|Army|NIL +U.S.|NIL|NIL +Army|NIL|NIL +Army|U.S.|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D068.M.100.F.A.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D068.M.100.F.A.be new file mode 100644 index 0000000000000000000000000000000000000000..fb6d6ab979a7fef2d355e8da9fffa56e3d9b9692 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D068.M.100.F.A.be @@ -0,0 +1,123 @@ +June|NIL|NIL +June|22|NIL +June|1990|NIL +22|NIL|NIL +1990|NIL|NIL +Checkpoint|NIL|NIL +Charlie|NIL|NIL +Charlie|Checkpoint|NIL +Charlie|border|NIL +allied|NIL|NIL +border|NIL|NIL +border|allied|NIL +crossing|NIL|NIL +crossing|border|ARG0 +crossing|side|ARGM-LOC +west|NIL|NIL +side|NIL|NIL +side|west|NIL +side|Wall|NIL +Berlin|NIL|NIL +Wall|NIL|NIL +Wall|Berlin|NIL +hoisted|NIL|NIL +hoisted|June|ARGM-TMP +hoisted|Charlie|ARG1 +hoisted|crane|ARG0 +hoisted|truck|ARG1 +crane|NIL|NIL +flatbed|NIL|NIL +truck|NIL|NIL +truck|a|NIL +truck|flatbed|NIL +removal|NIL|NIL +removal|symbol|NIL +symbol|NIL|NIL +symbol|this|NIL +symbol|War|NIL +Cold|NIL|NIL +War|NIL|NIL +War|Cold|NIL +was|removal|AUX-SBJ +was|part|AUX-PRD +part|NIL|NIL +part|ceremony|NIL +elaborate|NIL|NIL +ceremony|NIL|NIL +ceremony|an|NIL +ceremony|elaborate|NIL +attended|NIL|NIL +attended|ceremony|ARG1 +attended|diplomats|ARG0 +attended|allies|ARG0 +top|NIL|NIL +diplomats|NIL|NIL +diplomats|top|NIL +diplomats|Germanys|NIL +two|NIL|NIL +Germanys|NIL|NIL +Germanys|two|NIL +four|NIL|NIL +World|NIL|NIL +War|NIL|NIL +II|NIL|NIL +II|World|NIL +II|War|NIL +allies|NIL|NIL +allies|four|NIL +allies|II|NIL +Appropriate|NIL|NIL +Appropriate|occasion|NIL +occasion|NIL|NIL +Soviet|NIL|NIL +Foreign|NIL|NIL +Minister|NIL|NIL +Shevardnadze|NIL|NIL +Shevardnadze|Soviet|NIL +Shevardnadze|Foreign|NIL +Shevardnadze|Minister|NIL +backed|NIL|NIL +backed|Appropriate|ARG1 +backed|Shevardnadze|ARG0 +backed|away|ARGM-DIR +backed|suggesting|ARGM-ADV +away|NIL|NIL +away|opposition|NIL +all-out|NIL|NIL +opposition|NIL|NIL +opposition|all-out|NIL +opposition|membership|NIL +united|NIL|NIL +Germany|NIL|NIL +Germany|united|NIL +membership|NIL|NIL +membership|Germany|NIL +membership|NATO|NIL +NATO|NIL|NIL +suggesting|NIL|NIL +suggesting|take|ARG1 +take|NIL|NIL +take|this|ARG0 +take|place|ARG1 +take|period|ARGM-TMP +place|NIL|NIL +only|NIL|NIL +five-year|NIL|NIL +waiting|NIL|NIL +period|NIL|NIL +period|a|NIL +period|five-year|NIL +period|waiting|NIL +during|which|NIL +Soviet|NIL|NIL +Soviet|all|NIL +U.S.|NIL|NIL +U.S.|all|NIL +troops|NIL|NIL +troops|all|NIL +leave|NIL|NIL +leave|Soviet|ARG0 +leave|U.S.|ARG0 +leave|troops|ARG0 +leave|country|ARG1 +country|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D069.M.100.F.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D069.M.100.F.26.be new file mode 100644 index 0000000000000000000000000000000000000000..42f5ac73feec06a5d3d8e075a714dca3afd15fd6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D069.M.100.F.26.be @@ -0,0 +1,126 @@ +09/22/1989|NIL|NIL +mass|NIL|NIL +emigration|NIL|NIL +emigration|mass|NIL +emigration|thousands|NIL +thousands|NIL|NIL +thousands|East|NIL +disaffected|NIL|NIL +East|NIL|NIL +East|disaffected|NIL +East|Germans|NIL +Germans|NIL|NIL +rekindled|NIL|NIL +rekindled|emigration|ARG0 +rekindled|talk|ARG1 +rekindled|Germany|ARGM-LOC +reunification|NIL|NIL +talk|NIL|NIL +talk|reunification|NIL +West|NIL|NIL +Germany|NIL|NIL +Germany|West|NIL +legislators|NIL|NIL +legislators|some|NIL +plan|NIL|NIL +plan|legislators|ARG0 +begin|NIL|NIL +begin|exploring|ARG1 +exploring|NIL|NIL +exploring|possiblity|ARG1 +possiblity|NIL|NIL +reuniting|NIL|NIL +reuniting|Germanys|ARG1 +two|NIL|NIL +Germanys|NIL|NIL +Germanys|two|NIL +12/02/1989|NIL|NIL +Chancellor|NIL|NIL +Helmut|NIL|NIL +Kohl|NIL|NIL +Kohl|Chancellor|NIL +Kohl|Helmut|NIL +assured|NIL|NIL +assured|Kohl|ARG0 +assured|senators|ARG1 +assured|forsake|ARG1 +visiting|NIL|NIL +U.S.|NIL|NIL +senators|NIL|NIL +senators|U.S.|NIL +senators|eve|NIL +eve|NIL|NIL +eve|summit|NIL +superpower|NIL|NIL +summit|NIL|NIL +summit|a|NIL +summit|superpower|NIL +West|NIL|NIL +Germany|NIL|NIL +Germany|West|NIL +not|NIL|NIL +forsake|NIL|NIL +forsake|Germany|ARG0 +forsake|reunite|ARG1 +NATO|NIL|NIL +reunite|NIL|NIL +reunite|NATO|ARG0 +reunite|Germany|ARG2 +East|NIL|NIL +Germany|NIL|NIL +Germany|East|NIL +one|NIL|NIL +one|senators|NIL +senators|NIL|NIL +said|NIL|NIL +said|assured|ARGM-ADV +said|one|ARG0 +said|12/01/1989|ARGM-TMP +12/01/1989|NIL|NIL +12/02/1989|NIL|NIL +12/02/1989|There|NIL +growing|NIL|NIL +growing|discussion|ARG1 +growing|result|ARG2 +discussion|NIL|NIL +discussion|Germany|NIL +discussion|reunification|NIL +West|NIL|NIL +Germany|NIL|NIL +Germany|West|NIL +German|NIL|NIL +reunification|NIL|NIL +reunification|German|NIL +result|NIL|NIL +result|a|NIL +result|reforms|NIL +sweeping|NIL|NIL +social|NIL|NIL +political|NIL|NIL +reforms|NIL|NIL +reforms|sweeping|NIL +reforms|social|NIL +reforms|political|NIL +reforms|underway|NIL +underway|NIL|NIL +underway|Germany|NIL +East|NIL|NIL +Germany|NIL|NIL +Germany|East|NIL +12/07/1989|NIL|NIL +He|NIL|NIL +said|NIL|NIL +said|He|ARG0 +said|go|ARG1 +said|reunification|ARG3 +German|NIL|NIL +reunification|NIL|NIL +reunification|German|NIL +cannot|NIL|NIL +go|NIL|NIL +go|cannot|ARG1 +go|ahead|ARG2 +ahead|NIL|NIL +reunification|NIL|NIL +reunification|Europe|NIL +Europe|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D069.M.100.F.C.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D069.M.100.F.C.be new file mode 100644 index 0000000000000000000000000000000000000000..60afe03e53d4f4877edda8f1749b26817bd68a31 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D069.M.100.F.C.be @@ -0,0 +1,116 @@ +East|NIL|NIL +Germany|NIL|NIL +Germany|East|NIL +was|Germany|AUX-SBJ +was|chaos|AUX-LOC +chaos|NIL|NIL +chaos|end|NIL +end|NIL|NIL +end|1989|NIL +1989|NIL|NIL +Woeful|NIL|NIL +economic|NIL|NIL +conditions|NIL|NIL +conditions|Woeful|NIL +conditions|economic|NIL +prevailed|NIL|NIL +Massive|NIL|NIL +demonstrations|NIL|NIL +demonstrations|Massive|NIL +demonstrations|reform|NIL +democratic|NIL|NIL +reform|NIL|NIL +reform|democratic|NIL +swept|NIL|NIL +swept|demonstrations|ARG0 +swept|nation|ARG1 +nation|NIL|NIL +hard-line|NIL|NIL +Communist|NIL|NIL +government|NIL|NIL +government|hard-line|NIL +government|Communist|NIL +admitted|NIL|NIL +admitted|government|ARG0 +admitted|failure|ARG1 +admitted|giving|ARGM-ADV +its|NIL|NIL +failure|NIL|NIL +failure|its|NIL +giving|NIL|NIL +giving|impetus|ARG1 +giving|movement|ARG1 +strong|NIL|NIL +impetus|NIL|NIL +impetus|strong|NIL +impetus|reunification|NIL +German|NIL|NIL +reunification|NIL|NIL +reunification|German|NIL +movement|NIL|NIL +Soviets|NIL|NIL +endorsed|NIL|NIL +endorsed|Soviets|ARG0 +endorsed|it|ARG1 +endorsed|February|ARGM-TMP +endorsed|II|ARG2 +endorsed|did|ARG1 +it|NIL|NIL +February|NIL|NIL +World|NIL|NIL +War|NIL|NIL +II|NIL|NIL +II|World|NIL +II|War|NIL +Allies|NIL|NIL +did|Allies|AUX-SBJ +did|later|ARGM-TMP +later|NIL|NIL +Unification|NIL|NIL +was|Unification|AUX-SBJ +was|now|AUX-TMP +was|imminent|AUX-PRD +now|NIL|NIL +imminent|NIL|NIL +specter|NIL|NIL +specter|Germany|NIL +economically|NIL|NIL +politically|NIL|NIL +powerful|NIL|NIL +powerful|economically|NIL +powerful|politically|NIL +Germany|NIL|NIL +Germany|an|NIL +Germany|powerful|NIL +disturbed|NIL|NIL +disturbed|specter|ARG1 +many|NIL|NIL +particularly|NIL|NIL +Poles|NIL|NIL +Poles|many|NIL +Poles|particularly|NIL +Soviets|NIL|NIL +Soviets|many|NIL +Soviets|particularly|NIL +world|NIL|NIL +world|many|NIL +world|particularly|NIL +world|Jewry|NIL +Jewry|NIL|NIL +concerns|NIL|NIL +reunification|NIL|NIL +accepted|NIL|NIL +accepted|concerns|ARGM-ADV +accepted|reunification|ARG1 +accepted|threat|ARG3 +lesser|NIL|NIL +threat|NIL|NIL +threat|a|NIL +threat|lesser|NIL +threat|Germany|NIL +chaotic|NIL|NIL +East|NIL|NIL +Germany|NIL|NIL +Germany|a|NIL +Germany|chaotic|NIL +Germany|East|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D070.M.100.F.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D070.M.100.F.26.be new file mode 100644 index 0000000000000000000000000000000000000000..81196a649e1d31063f616f4a8af37d5d46198c84 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D070.M.100.F.26.be @@ -0,0 +1,147 @@ +01/29/1990|NIL|NIL +Ousted|NIL|NIL +East|NIL|NIL +German|NIL|NIL +leader|NIL|NIL +leader|01/29/1990|NIL +leader|Ousted|NIL +leader|East|NIL +leader|German|NIL +Erich|NIL|NIL +Honecker|NIL|NIL +Honecker|Erich|NIL +expected|NIL|NIL +expected|Honecker|ARG1 +expected|indicted|ARG1 +indicted|NIL|NIL +indicted|treason|ARG2 +high|NIL|NIL +treason|NIL|NIL +treason|high|NIL +arrested|NIL|NIL +arrested|leader|ARG1 +arrested|Honecker|ARG1 +01/29/1990|NIL|NIL +morning|NIL|NIL +morning|01/29/1990|NIL +release|NIL|NIL +release|hospital|NIL +hospital|NIL|NIL +hospital|a|NIL +taken|NIL|NIL +taken|leader|ARG1 +taken|Honecker|ARG1 +taken|prison|ARG2 +prison|NIL|NIL +official|NIL|NIL +news|NIL|NIL +agency|NIL|NIL +agency|official|NIL +agency|news|NIL +agency|ADN|NIL +ADN|NIL|NIL +said|NIL|NIL +said|taken|ARG1 +said|agency|ARG0 +01/29/1990|NIL|NIL +Honecker|NIL|NIL +Honecker|01/29/1990|NIL +Honecker|leader|NIL +aging|NIL|NIL +aging|leader|ARG1 +hard-line|NIL|NIL +Stalinist|NIL|NIL +leader|NIL|NIL +leader|hard-line|NIL +leader|Stalinist|NIL +ruled|NIL|NIL +ruled|leader|ARG0 +ruled|Germany|ARG1 +ruled|years|ARG1 +ruled|ouster|ARG1 +East|NIL|NIL +Germany|NIL|NIL +Germany|East|NIL +18|NIL|NIL +years|NIL|NIL +years|18|NIL +his|NIL|NIL +ouster|NIL|NIL +ouster|his|NIL +ouster|Oct.|NIL +Oct.|NIL|NIL +Oct.|18|NIL +18|NIL|NIL +previously|NIL|NIL +declared|NIL|NIL +declared|Honecker|ARG1 +declared|previously|ARGM-TMP +declared|ill|ARG2 +too|NIL|NIL +ill|NIL|NIL +ill|too|NIL +ill|withstand|NIL +withstand|NIL|NIL +withstand|imprisonment|ARG1 +imprisonment|NIL|NIL +01/29/1990|NIL|NIL +Eleven|NIL|NIL +members|NIL|NIL +members|Eleven|NIL +members|Politburo|NIL +Honecker|NIL|NIL +ousted|NIL|NIL +Politburo|NIL|NIL +Politburo|Honecker|NIL +Politburo|ousted|NIL +already|NIL|NIL +are|01/29/1990|AUX-SBJ +are|members|AUX-SBJ +are|prison|AUX-LOC +prison|NIL|NIL +awaiting|NIL|NIL +awaiting|trial|ARG2 +trial|NIL|NIL +08/25/1990|NIL|NIL +Ousted|NIL|NIL +Ousted|08/25/1990|ARG0 +Ousted|stand|ARG1 +East|NIL|NIL +German|NIL|NIL +leader|NIL|NIL +leader|East|NIL +leader|German|NIL +leader|Honecker|NIL +Erich|NIL|NIL +Honecker|NIL|NIL +Honecker|Erich|NIL +not|NIL|NIL +stand|NIL|NIL +stand|leader|ARG1 +stand|trial|ARG1 +stand|long|ARGM-TMP +trial|NIL|NIL +trial|Germany|NIL +East|NIL|NIL +Germany|NIL|NIL +Germany|East|NIL +as|NIL|NIL +long|NIL|NIL +long|as|NIL +long|exists|NIL +formerly|NIL|NIL +Communist|NIL|NIL +country|NIL|NIL +country|formerly|NIL +country|Communist|NIL +exists|NIL|NIL +exists|country|ARG1 +West|NIL|NIL +German|NIL|NIL +newspaper|NIL|NIL +newspaper|a|NIL +newspaper|West|NIL +newspaper|German|NIL +reported|NIL|NIL +reported|Ousted|ARG1 +reported|newspaper|ARG0 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D070.M.100.F.D.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D070.M.100.F.D.be new file mode 100644 index 0000000000000000000000000000000000000000..8657ba9ba8ac2228761721befd4da3442b92b0fe --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D070.M.100.F.D.be @@ -0,0 +1,128 @@ +Erich|NIL|NIL +Honecker|NIL|NIL +Honecker|Erich|NIL +Honecker|head|NIL +former|NIL|NIL +head|NIL|NIL +head|former|NIL +head|Germany|NIL +East|NIL|NIL +Germany|NIL|NIL +Germany|East|NIL +died|NIL|NIL +died|Honecker|ARG1 +died|May|ARGM-LOC +29|NIL|NIL +May|NIL|NIL +May|29|NIL +May|1994|NIL +May|Chile|NIL +1994|NIL|NIL +Santiago|NIL|NIL +Chile|NIL|NIL +Chile|Santiago|NIL +He|NIL|NIL +living|NIL|NIL +living|He|ARG0 +living|there|ARGM-LOC +living|release|ARGM-TMP +living|1993|ARGM-TMP +there|NIL|NIL +his|NIL|NIL +release|NIL|NIL +release|his|NIL +release|prison|NIL +prison|NIL|NIL +1993|NIL|NIL +Honecker|NIL|NIL +his|NIL|NIL +regime|NIL|NIL +regime|his|NIL +toppled|NIL|NIL +toppled|Honecker|ARG1 +toppled|regime|ARG1 +toppled|October|ARGM-TMP +toppled|demonstrators|ARG0 +toppled|leading|ARGM-ADV +October|NIL|NIL +October|1989|NIL +1989|NIL|NIL +pro-democracy|NIL|NIL +demonstrators|NIL|NIL +demonstrators|pro-democracy|NIL +leading|NIL|NIL +leading|unification|ARG2 +eventual|NIL|NIL +unification|NIL|NIL +unification|eventual|NIL +unification|East|NIL +unification|West|NIL +unification|Germany|NIL +East|NIL|NIL +West|NIL|NIL +Germany|NIL|NIL +He|NIL|NIL +along|members|NIL +several|NIL|NIL +members|NIL|NIL +members|several|NIL +members|Politburo|NIL +his|NIL|NIL +Politburo|NIL|NIL +Politburo|his|NIL +arrested|NIL|NIL +arrested|He|ARG1 +charges|NIL|NIL +charges|He|ARG0 +charges|along|ARGM-ADV +charges|treason|ARG2 +charges|corruption|ARG2 +charges|abuse|ARG2 +treason|NIL|NIL +corruption|NIL|NIL +abuse|NIL|NIL +abuse|power|NIL +power|NIL|NIL +Honecker|NIL|NIL +also|NIL|NIL +charged|NIL|NIL +charged|Honecker|ARG1 +charged|also|ARGM-DIS +charged|manslaughter|ARG2 +manslaughter|NIL|NIL +stemming|NIL|NIL +stemming|orders|ARG2 +his|NIL|NIL +orders|NIL|NIL +orders|his|NIL +resulted|NIL|NIL +resulted|manslaughter|ARG1 +resulted|attempting|ARG2 +deaths|NIL|NIL +deaths|East|NIL +East|NIL|NIL +East|Germans|NIL +Germans|NIL|NIL +attempting|NIL|NIL +attempting|deaths|ARG0 +attempting|flee|ARG1 +flee|NIL|NIL +flee|West|ARG1 +West|NIL|NIL +Honecker|NIL|NIL +ruled|NIL|NIL +ruled|Honecker|ARG0 +ruled|Germany|ARG1 +ruled|years|ARG1 +ruled|using|ARGM-MNR +East|NIL|NIL +Germany|NIL|NIL +Germany|East|NIL +18|NIL|NIL +years|NIL|NIL +years|18|NIL +using|NIL|NIL +using|repression|ARG1 +extreme|NIL|NIL +repression|NIL|NIL +repression|extreme|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D071.M.100.F.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D071.M.100.F.26.be new file mode 100644 index 0000000000000000000000000000000000000000..d32e33e0cf57c00649cdfa6ea8eac1db5ebaecf2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D071.M.100.F.26.be @@ -0,0 +1,139 @@ +03/10/1988|NIL|NIL +03/10/1988|dogs|NIL +Two|NIL|NIL +dogs|NIL|NIL +dogs|Two|NIL +dogs|dog|NIL +dogs|show|NIL +be|specific|AUX-PRD +specific|NIL|NIL +city|NIL|NIL +top|NIL|NIL +police|NIL|NIL +dog|NIL|NIL +dog|city|NIL +dog|top|NIL +dog|police|NIL +nation|NIL|NIL +top|NIL|NIL +show|NIL|NIL +show|nation|NIL +show|top|NIL +show|dog|NIL +dog|NIL|NIL +03/10/1988|NIL|NIL +The|NIL|NIL +Pomeranian|NIL|NIL +Pomeranian|03/10/1988|NIL +Pomeranian|The|NIL +named|NIL|NIL +named|Pomeranian|ARG1 +named|best|ARGM-MNR +named|show|ARGM-LOC +named|Show|ARGM-LOC +best|NIL|NIL +show|NIL|NIL +prestigious|NIL|NIL +Westminister|NIL|NIL +Kennel|NIL|NIL +Club|NIL|NIL +Show|NIL|NIL +Show|prestigious|NIL +Show|Westminister|NIL +Show|Kennel|NIL +Show|Club|NIL +Show|month|NIL +Madison|NIL|NIL +Square|NIL|NIL +Garden|NIL|NIL +last|NIL|NIL +month|NIL|NIL +month|Madison|NIL +month|Square|NIL +month|Garden|NIL +month|last|NIL +02/04/1989|NIL|NIL +More|NIL|NIL +than|More|NIL +than|2,500|NIL +2,500|NIL|NIL +dogs|NIL|NIL +dogs|than|NIL +representing|NIL|NIL +representing|dogs|ARG0 +representing|breeds|ARG1 +138|NIL|NIL +breeds|NIL|NIL +breeds|138|NIL +compete|NIL|NIL +compete|02/04/1989|ARG0 +compete|dogs|ARG0 +compete|prizes|ARG1 +compete|Arena|ARGM-LOC +prizes|NIL|NIL +02/05/1989|NIL|NIL +02/05/1989|'s|NIL +Breed|NIL|NIL +Breed|All|NIL +Dog|NIL|NIL +Show|NIL|NIL +Show|Breed|NIL +Show|Dog|NIL +Obedience|NIL|NIL +Trials|NIL|NIL +Trials|Obedience|NIL +Los|NIL|NIL +Angeles|NIL|NIL +Sports|NIL|NIL +Arena|NIL|NIL +Arena|Los|NIL +Arena|Angeles|NIL +Arena|Sports|NIL +02/04/1989|NIL|NIL +scent|NIL|NIL +relay|NIL|NIL +relay|scent|NIL +teams|NIL|NIL +teams|dogs|NIL +dogs|NIL|NIL +jump|NIL|NIL +jump|teams|ARG0 +jump|over|rel +jump|hurdles|ARG1 +hurdles|NIL|NIL +locate|NIL|NIL +locate|relay|ARGM-ADV +locate|teams|ARG0 +locate|jackets|ARG1 +jackets|NIL|NIL +jackets|owners|NIL +their|NIL|NIL +owners|NIL|NIL +owners|their|NIL +02/04/1989|NIL|NIL +also|NIL|NIL +be|02/04/1989|AUX-SBJ +be|There|AUX-SBJ +be|demonstration|AUX-PRD +demonstration|NIL|NIL +demonstration|a|NIL +demonstration|how|NIL +dogs|NIL|NIL +herd|NIL|NIL +farm|NIL|NIL +animals|NIL|NIL +animals|farm|NIL +02/04/1989|NIL|NIL +Show|NIL|NIL +hours|NIL|NIL +hours|02/04/1989|NIL +hours|Show|NIL +are|hours|AUX-SBJ +are|a.m.|AUX-PRD +8|NIL|NIL +a.m.|NIL|NIL +a.m.|8|NIL +a.m.|p.m.|NIL +9|NIL|NIL +p.m.|NIL|NIL +p.m.|9|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D071.M.100.F.D.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D071.M.100.F.D.be new file mode 100644 index 0000000000000000000000000000000000000000..5ea71d31eb1d93951ae577f469298ec63326846c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D071.M.100.F.D.be @@ -0,0 +1,109 @@ +Dog|NIL|NIL +competition|NIL|NIL +competition|Dog|NIL +competition|events|NIL +national|NIL|NIL +international|NIL|NIL +events|NIL|NIL +events|national|NIL +events|international|NIL +is|competition|AUX-SBJ +is|entertainment|AUX-PRD +is|business|AUX-PRD +entertainment|NIL|NIL +entertainment|both|NIL +entertainment|big|NIL +big|NIL|NIL +business|NIL|NIL +business|both|NIL +business|big|NIL +Competitions|NIL|NIL +attract|NIL|NIL +attract|Competitions|ARG0 +attract|contestants|ARG1 +attract|visitors|ARG1 +numerous|NIL|NIL +contestants|NIL|NIL +contestants|numerous|NIL +visitors|NIL|NIL +Israel|NIL|NIL +dog|NIL|NIL +dog|contest|NIL +year|NIL|NIL +contest|NIL|NIL +contest|year|NIL +briefly|NIL|NIL +outshone|NIL|NIL +outshone|Israel|ARGM-LOC +outshone|briefly|ARGM-TMP +outshone|election|ARG1 +general|NIL|NIL +election|NIL|NIL +election|general|NIL +uprising|NIL|NIL +known|NIL|NIL +known|uprising|ARG1 +known|intefadeh|ARG2 +intefadeh|NIL|NIL +Owners|NIL|NIL +Owners|dog|NIL +one|NIL|NIL +dog|NIL|NIL +dog|one|NIL +embroiled|NIL|NIL +embroiled|Owners|ARG1 +embroiled|suit|ARG2 +law|NIL|NIL +suit|NIL|NIL +suit|a|NIL +suit|law|NIL +dog|NIL|NIL +retired|NIL|NIL +retired|dog|ARG1 +not|NIL|NIL +Manhattan|NIL|NIL +artist|NIL|NIL +artist|a|NIL +artist|Manhattan|NIL +Weimaraners|NIL|NIL +Weimaraners|artist|NIL +served|NIL|NIL +served|Weimaraners|ARG0 +served|models|ARG1 +served|work|ARG2 +models|NIL|NIL +models|both|NIL +his|NIL|NIL +work|NIL|NIL +work|his|NIL +appeared|NIL|NIL +appeared|Weimaraners|ARG1 +appeared|Street|ARGM-LOC +Sesame|NIL|NIL +Street|NIL|NIL +Street|Sesame|NIL +Dog|NIL|NIL +handling|NIL|NIL +handling|Dog|NIL +be|handling|AUX-SBJ +be|lucrative|AUX-PRD +lucrative|NIL|NIL +overhead|NIL|NIL +is|overhead|AUX-SBJ +is|high|AUX-PRD +high|NIL|NIL +hours|NIL|NIL +are|hours|AUX-SBJ +are|long|AUX-TMP +long|NIL|NIL +according|NIL|NIL +Bill|NIL|NIL +McFadden|NIL|NIL +McFadden|Bill|NIL +McFadden|handler|NIL +professional|NIL|NIL +dog|NIL|NIL +handler|NIL|NIL +handler|a|NIL +handler|professional|NIL +handler|dog|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D072.M.100.F.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D072.M.100.F.26.be new file mode 100644 index 0000000000000000000000000000000000000000..2d212877a9bd096a34e3b0cc4731d1f0f4bf280b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D072.M.100.F.26.be @@ -0,0 +1,130 @@ +11/15/1988|NIL|NIL +Leonard|NIL|NIL +Bernstein|NIL|NIL +Bernstein|11/15/1988|NIL +Bernstein|Leonard|NIL +whose|70th|NIL +whose|birthday|NIL +whose|August|NIL +70th|NIL|NIL +birthday|NIL|NIL +August|NIL|NIL +marked|NIL|NIL +marked|gala|ARGM-MNR +gala|NIL|NIL +gala|a|NIL +gala|Tanglewood|NIL +Tanglewood|NIL|NIL +returned|NIL|NIL +returned|Bernstein|ARG0 +returned|Hall|ARG4 +returned|made|ARGM-TMP +Carnegie|NIL|NIL +Hall|NIL|NIL +Hall|Carnegie|NIL +Hall|Philharmonic|NIL +New|NIL|NIL +York|NIL|NIL +Philharmonic|NIL|NIL +Philharmonic|New|NIL +Philharmonic|York|NIL +45|NIL|NIL +years|NIL|NIL +years|45|NIL +he|NIL|NIL +made|NIL|NIL +made|he|ARG0 +made|debut|ARG1 +made|orchestra|ARGM-ADV +his|NIL|NIL +triumphant|NIL|NIL +conducting|NIL|NIL +debut|NIL|NIL +debut|his|NIL +debut|triumphant|NIL +debut|there|NIL +there|NIL|NIL +orchestra|NIL|NIL +11/15/1988|NIL|NIL +At|NIL|NIL +intermission|NIL|NIL +intermission|11/15/1988|NIL +intermission|At|NIL +intermission|Rodzinski|NIL +Mrs.|NIL|NIL +Artur|NIL|NIL +Rodzinski|NIL|NIL +Rodzinski|Mrs.|NIL +Rodzinski|Artur|NIL +whose|late|NIL +whose|husband|NIL +late|NIL|NIL +husband|NIL|NIL +was|director|AUX-PRD +Philharmonic|NIL|NIL +music|NIL|NIL +music|Philharmonic|NIL +director|NIL|NIL +director|music|NIL +director|1943|NIL +1943|NIL|NIL +hired|NIL|NIL +hired|Bernstein|ARG1 +hired|assistant|ARGM-MNR +Bernstein|NIL|NIL +his|NIL|NIL +assistant|NIL|NIL +assistant|his|NIL +introduced|NIL|NIL +introduced|intermission|ARG1 +introduced|box|ARG2 +box|NIL|NIL +box|a|NIL +10/19/1990|NIL|NIL +Recordings|NIL|NIL +Recordings|10/19/1990|NIL +Recordings|Bernstein|NIL +Leonard|NIL|NIL +Bernstein|NIL|NIL +Bernstein|Leonard|NIL +Bernstein|one|NIL +one|NIL|NIL +one|conductors|NIL +most|NIL|NIL +documented|NIL|NIL +documented|conductors|ARG1 +conductors|NIL|NIL +conductors|most|NIL +conductors|history|NIL +history|NIL|NIL +undergo|NIL|NIL +undergo|Recordings|ARG1 +undergo|programs|ARG2 +undergo|death|ARGM-TMP +undergo|10/21/1990|ARGM-TMP +expanded|NIL|NIL +release|NIL|NIL +programs|NIL|NIL +programs|expanded|NIL +programs|release|NIL +following|NIL|NIL +conductor|NIL|NIL +death|NIL|NIL +death|conductor|NIL +10/21/1990|NIL|NIL +said|NIL|NIL +said|undergo|ARG1 +said|representatives|ARG0 +representatives|NIL|NIL +representatives|companies|NIL +recording|NIL|NIL +recording|companies|ARG0 +companies|NIL|NIL +controlling|NIL|NIL +controlling|companies|ARG0 +controlling|catalogues|ARG1 +late|NIL|NIL +Bernstein|NIL|NIL +Bernstein|late|NIL +catalogues|NIL|NIL +catalogues|Bernstein|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D072.M.100.F.J.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D072.M.100.F.J.be new file mode 100644 index 0000000000000000000000000000000000000000..74db0c970c75e4beeb334f04a4c6ffac42955de5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D072.M.100.F.J.be @@ -0,0 +1,130 @@ +Leonard|NIL|NIL +Bernstein|NIL|NIL +Bernstein|Leonard|NIL +beloved|NIL|NIL +internationally|NIL|NIL +acclaimed|NIL|NIL +acclaimed|internationally|NIL +maestro|NIL|NIL +maestro|beloved|NIL +maestro|acclaimed|NIL +died|NIL|NIL +died|Bernstein|ARG1 +died|maestro|ARG1 +died|October|ARGM-TMP +died|72|ARGM-TMP +October|NIL|NIL +October|14th|NIL +14th|NIL|NIL +72|NIL|NIL +72|failure|NIL +lung|NIL|NIL +failure|NIL|NIL +failure|lung|NIL +days|NIL|NIL +New|NIL|NIL +York|NIL|NIL +Philharmonic|NIL|NIL +Philharmonic|New|NIL +Philharmonic|York|NIL +Philharmonic|tribute|NIL +tribute|NIL|NIL +tribute|association|NIL +its|NIL|NIL +47-year|NIL|NIL +association|NIL|NIL +association|its|NIL +association|47-year|NIL +association|conductor|NIL +brilliant|NIL|NIL +conductor|NIL|NIL +conductor|brilliant|NIL +played|NIL|NIL +played|days|ARGM-LOC +played|Philharmonic|ARG0 +played|did|ARGM-MNR +special|NIL|NIL +program|NIL|NIL +program|a|NIL +program|special|NIL +several|NIL|NIL +other|NIL|NIL +orchestras|NIL|NIL +orchestras|several|NIL +orchestras|other|NIL +Recently|NIL|NIL +Broadway|NIL|NIL +also|NIL|NIL +honored|NIL|NIL +honored|Recently|ARGM-TMP +honored|Broadway|ARG0 +honored|also|ARGM-DIS +honored|Bernstein|ARG1 +honored|show|ARGM-MNR +Bernstein|NIL|NIL +Bernstein|composer|NIL +composer|NIL|NIL +composer|Story|NIL +West|NIL|NIL +Side|NIL|NIL +Story|NIL|NIL +Story|West|NIL +Story|Side|NIL +special|NIL|NIL +show|NIL|NIL +show|a|NIL +show|special|NIL +show|Theater|NIL +Majestic|NIL|NIL +Theater|NIL|NIL +Theater|Majestic|NIL +Several|NIL|NIL +record|NIL|NIL +companies|NIL|NIL +companies|Several|NIL +companies|record|NIL +accelerate|NIL|NIL +accelerate|companies|ARG0 +accelerate|re-releases|ARG1 +re-releases|NIL|NIL +re-releases|recordings|NIL +Bernstein|NIL|NIL +recordings|NIL|NIL +recordings|Bernstein|NIL +Bernstein|NIL|NIL +ill|NIL|NIL +ill|time|NIL +time|NIL|NIL +time|some|NIL +participate|NIL|NIL +participate|Bernstein|ARG0 +participate|ill|ARGM-ADV +participate|celebrations|ARG1 +his|NIL|NIL +70th|NIL|NIL +birthday|NIL|NIL +celebrations|NIL|NIL +celebrations|his|NIL +celebrations|70th|NIL +celebrations|birthday|NIL +celebrations|Tanglewood|NIL +celebrations|Carnegie|NIL +celebrations|Hall|NIL +Tanglewood|NIL|NIL +Carnegie|NIL|NIL +Hall|NIL|NIL +latter|NIL|NIL +occurred|NIL|NIL +occurred|latter|ARG1 +occurred|anniversary|ARGM-TMP +45th|NIL|NIL +anniversary|NIL|NIL +anniversary|45th|NIL +anniversary|debut|NIL +his|NIL|NIL +directorial|NIL|NIL +debut|NIL|NIL +debut|his|NIL +debut|directorial|NIL +debut|Philharmonic|NIL +Philharmonic|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D073.M.100.B.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D073.M.100.B.26.be new file mode 100644 index 0000000000000000000000000000000000000000..77c744770f2415e8fe4c906bfd5a5f26ab2bef1d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D073.M.100.B.26.be @@ -0,0 +1,139 @@ +06/11/1991|NIL|NIL +I|NIL|NIL +think|NIL|NIL +think|I|ARG0 +think|see|ARG1 +we|NIL|NIL +see|NIL|NIL +see|we|ARG0 +see|eruption|ARG1 +see|time|ARG1 +major|NIL|NIL +explosive|NIL|NIL +eruption|NIL|NIL +eruption|a|NIL +eruption|major|NIL +eruption|explosive|NIL +time|NIL|NIL +time|any|NIL +said|NIL|NIL +said|think|ARG1 +said|Lipman|ARG0 +Peter|NIL|NIL +Lipman|NIL|NIL +Lipman|Peter|NIL +Lipman|volcanologist|NIL +volcanologist|NIL|NIL +volcanologist|a|NIL +volcanologist|office|NIL +U.S.|NIL|NIL +Geological|NIL|NIL +Survey|NIL|NIL +office|NIL|NIL +office|U.S.|NIL +office|Geological|NIL +office|Survey|NIL +office|Park|NIL +Menlo|NIL|NIL +Park|NIL|NIL +Park|Menlo|NIL +06/13/1991|NIL|NIL +Three|NIL|NIL +major|NIL|NIL +new|NIL|NIL +eruptions|NIL|NIL +eruptions|Three|NIL +eruptions|major|NIL +eruptions|new|NIL +rocked|NIL|NIL +rocked|eruptions|ARG0 +rocked|Pinatubo|ARG1 +rocked|night|ARG1 +rocked|today|ARGM-TMP +rocked|forcing|ARGM-ADV +rocked|increasing|ARGM-ADV +Mount|NIL|NIL +Pinatubo|NIL|NIL +Pinatubo|Mount|NIL +late|NIL|NIL +06/12/1991|NIL|NIL +night|NIL|NIL +night|late|NIL +night|06/12/1991|NIL +early|NIL|NIL +today|NIL|NIL +today|late|NIL +today|early|NIL +forcing|NIL|NIL +forcing|evacuation|ARG1 +emergency|NIL|NIL +evacuation|NIL|NIL +evacuation|another|NIL +evacuation|emergency|NIL +evacuation|Base|NIL +Clark|NIL|NIL +Air|NIL|NIL +Base|NIL|NIL +Base|Clark|NIL +Base|Air|NIL +increasing|NIL|NIL +increasing|fears|ARG1 +increasing|volcano|ARG3 +fears|NIL|NIL +fears|explosions|NIL +even|NIL|NIL +more|NIL|NIL +more|even|NIL +violent|NIL|NIL +explosions|NIL|NIL +explosions|more|NIL +explosions|violent|NIL +long-dormant|NIL|NIL +volcano|NIL|NIL +volcano|long-dormant|NIL +volcano|days|NIL +days|NIL|NIL +days|ahead|NIL +ahead|NIL|NIL +06/15/1991|NIL|NIL +Mount|NIL|NIL +Pinatubo|NIL|NIL +Pinatubo|Mount|NIL +rumbled|NIL|NIL +rumbled|Pinatubo|ARG0 +rumbled|06/15/1991|ARGM-TMP +rumbled|explosions|ARGM-MNR +06/15/1991|NIL|NIL +explosions|NIL|NIL +hurled|NIL|NIL +hurled|ash|ARG1 +hurled|gas|ARG1 +ash|NIL|NIL +gas|NIL|NIL +gas|high|NIL +more|NIL|NIL +than|more|NIL +than|12|NIL +12|NIL|NIL +miles|NIL|NIL +miles|than|NIL +high|NIL|NIL +high|miles|NIL +typhoon|NIL|NIL +typhoon|a|NIL +brought|NIL|NIL +brought|typhoon|ARG0 +brought|rain|ARG1 +heavy|NIL|NIL +rain|NIL|NIL +rain|heavy|NIL +unleash|NIL|NIL +unleash|rain|ARG0 +unleash|tons|ARG1 +unleash|slopes|ARG2 +tons|NIL|NIL +tons|debris|NIL +debris|NIL|NIL +jagged|NIL|NIL +slopes|NIL|NIL +slopes|jagged|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D073.M.100.B.J.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D073.M.100.B.J.be new file mode 100644 index 0000000000000000000000000000000000000000..36f8991a6bb896d08c308e836c16ed39bde247b2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D073.M.100.B.J.be @@ -0,0 +1,124 @@ +Pinatubo|NIL|NIL +began|NIL|NIL +began|Pinatubo|ARG0 +began|erupting|ARG1 +began|centuries|ARGM-TMP +erupting|NIL|NIL +erupting|ago|ARGM-TMP +about|NIL|NIL +two|NIL|NIL +weeks|NIL|NIL +weeks|about|NIL +weeks|two|NIL +ago|NIL|NIL +ago|weeks|NIL +six|NIL|NIL +centuries|NIL|NIL +centuries|six|NIL +centuries|dormancy|NIL +dormancy|NIL|NIL +Located|NIL|NIL +Located|miles|ARG1 +10|NIL|NIL +miles|NIL|NIL +miles|10|NIL +miles|AFB|NIL +Clark|NIL|NIL +AFB|NIL|NIL +AFB|Clark|NIL +explosions|NIL|NIL +become|NIL|NIL +become|Located|ARGM-ADV +become|explosions|ARG1 +become|severe|ARG2 +increasingly|NIL|NIL +severe|NIL|NIL +severe|increasingly|NIL +U.S.|NIL|NIL +denied|NIL|NIL +denied|U.S.|ARG0 +denied|possibility|ARG1 +denied|hits|ARGM-ADV +possibility|NIL|NIL +possibility|contamination|NIL +radioactive|NIL|NIL +contamination|NIL|NIL +contamination|radioactive|NIL +volcanic|NIL|NIL +debris|NIL|NIL +debris|volcanic|NIL +hits|NIL|NIL +hits|debris|ARG0 +hits|depots|ARG1 +hits|AFB|ARGM-LOC +weapons|NIL|NIL +depots|NIL|NIL +depots|weapons|NIL +Clark|NIL|NIL +AFB|NIL|NIL +AFB|Clark|NIL +evacuated|NIL|NIL +evacuated|AFB|ARG1 +evacuated|ago|ARGM-TMP +week|NIL|NIL +week|a|NIL +ago|NIL|NIL +ago|week|NIL +At|least|NIL +At|four|NIL +least|NIL|NIL +four|NIL|NIL +dead|NIL|NIL +dead|At|NIL +24|NIL|NIL +24|injured|NIL +injured|NIL|NIL +attributed|NIL|NIL +attributed|eruptions|ARG2 +eruptions|NIL|NIL +About|NIL|NIL +About|84,000|NIL +84,000|NIL|NIL +evacuated|NIL|NIL +Heavy|NIL|NIL +rains|NIL|NIL +rains|Heavy|NIL +rains|today|NIL +today|NIL|NIL +raised|NIL|NIL +raised|rains|ARG0 +raised|fears|ARG1 +fears|NIL|NIL +fears|mudflows|NIL +catastrophic|NIL|NIL +mudflows|NIL|NIL +mudflows|catastrophic|NIL +According|NIL|NIL +Foreign|NIL|NIL +Secretary|NIL|NIL +Manglapus|NIL|NIL +Manglapus|Foreign|NIL +Manglapus|Secretary|NIL +eruptions|NIL|NIL +not|NIL|NIL +effect|NIL|NIL +effect|Manglapus|ARGM-LOC +effect|eruptions|ARG0 +stalled|NIL|NIL +stalled|talks|ARG1 +talks|NIL|NIL +talks|U.S.|NIL +talks|Clark|NIL +talks|Subic|NIL +talks|lease|NIL +talks|agreements|NIL +U.S.|NIL|NIL +new|NIL|NIL +Clark|NIL|NIL +Clark|new|NIL +Subic|NIL|NIL +Subic|new|NIL +lease|NIL|NIL +lease|new|NIL +agreements|NIL|NIL +agreements|new|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D074.M.100.B.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D074.M.100.B.26.be new file mode 100644 index 0000000000000000000000000000000000000000..876f350d96538220a47c0ac5ffb18a2654e1833c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D074.M.100.B.26.be @@ -0,0 +1,135 @@ +14-member|NIL|NIL +Senate|NIL|NIL +Judiciary|NIL|NIL +Committee|NIL|NIL +Committee|14-member|NIL +Committee|Senate|NIL +Committee|Judiciary|NIL +presses|NIL|NIL +presses|Committee|NIL +Clarence|NIL|NIL +Thomas|NIL|NIL +Thomas|Clarence|NIL +explain|NIL|NIL +explain|Thomas|ARG0 +explain|qualifications|ARG1 +his|NIL|NIL +qualifications|NIL|NIL +qualifications|his|NIL +qualifications|Court|NIL +Supreme|NIL|NIL +Court|NIL|NIL +Court|Supreme|NIL +100|NIL|NIL +senators|NIL|NIL +senators|all|NIL +senators|100|NIL +are|presses|AUX-ADV +are|senators|AUX-SBJ +are|pressure|AUX-PRD +mounting|NIL|NIL +pressure|NIL|NIL +pressure|mounting|NIL +explain|NIL|NIL +explain|views|ARG1 +their|NIL|NIL +views|NIL|NIL +views|their|NIL +views|judge|NIL +judge|NIL|NIL +09/11/1991|NIL|NIL +check|NIL|NIL +check|pastors|ARG1 +300|NIL|NIL +black|NIL|NIL +pastors|NIL|NIL +pastors|300|NIL +pastors|black|NIL +representing|NIL|NIL +representing|pastors|ARG0 +representing|congregations|ARG1 +congregations|NIL|NIL +totaling|NIL|NIL +totaling|congregations|ARG1 +more|NIL|NIL +than|more|NIL +than|1|NIL +than|million|NIL +1|NIL|NIL +million|NIL|NIL +churchgoers|NIL|NIL +churchgoers|than|NIL +churchgoers|states|NIL +30|NIL|NIL +states|NIL|NIL +states|30|NIL +held|NIL|NIL +held|rally|ARG1 +rally|NIL|NIL +rally|a|NIL +rally|steps|NIL +steps|NIL|NIL +steps|Court|NIL +Supreme|NIL|NIL +Court|NIL|NIL +Court|Supreme|NIL +then|NIL|NIL +lobbied|NIL|NIL +lobbied|then|ARGM-TMP +lobbied|senators|ARG2 +their|NIL|NIL +senators|NIL|NIL +senators|their|NIL +support|NIL|NIL +support|confirmation|ARG1 +confirmation|NIL|NIL +confirmation|nominee|NIL +President|NIL|NIL +Bush|NIL|NIL +Bush|President|NIL +Supreme|NIL|NIL +Court|NIL|NIL +nominee|NIL|NIL +nominee|Bush|NIL +nominee|Supreme|NIL +nominee|Court|NIL +09/12/1991|NIL|NIL +Frustrated|NIL|NIL +Democrats|NIL|NIL +Democrats|09/12/1991|NIL +Democrats|Frustrated|NIL +Democrats|Committee|NIL +Senate|NIL|NIL +Judiciary|NIL|NIL +Committee|NIL|NIL +Committee|Senate|NIL +Committee|Judiciary|NIL +say|NIL|NIL +say|Democrats|ARG0 +Supreme|NIL|NIL +Court|NIL|NIL +nominee|NIL|NIL +nominee|Supreme|NIL +nominee|Court|NIL +nominee|Clarence|NIL +nominee|Thomas|NIL +Clarence|NIL|NIL +Thomas|NIL|NIL +is|nominee|AUX-SBJ +is|witness|AUX-PRD +evasive|NIL|NIL +witness|NIL|NIL +witness|an|NIL +witness|evasive|NIL +groundswell|NIL|NIL +groundswell|no|NIL +groundswell|opposition|NIL +opposition|NIL|NIL +opposition|confirmation|NIL +his|NIL|NIL +confirmation|NIL|NIL +confirmation|his|NIL +seems|NIL|NIL +seems|groundswell|ARG1 +seems|emerging|ARG1 +emerging|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D074.M.100.B.A.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D074.M.100.B.A.be new file mode 100644 index 0000000000000000000000000000000000000000..daffe9fc768a9b28be0660284fbde7fec55bb5f5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D074.M.100.B.A.be @@ -0,0 +1,130 @@ +Sept.|NIL|NIL +Sept.|10|NIL +10|NIL|NIL +Sept.|NIL|NIL +Sept.|16|NIL +Sept.|1991|NIL +16|NIL|NIL +1991|NIL|NIL +Senate|NIL|NIL +Judiciary|NIL|NIL +Committee|NIL|NIL +Committee|Senate|NIL +Committee|Judiciary|NIL +questioned|NIL|NIL +questioned|Sept.|ARGM-TMP +questioned|Committee|ARG0 +questioned|Court|ARG2 +questioned|nominee|ARG1 +Supreme|NIL|NIL +Court|NIL|NIL +Court|Supreme|NIL +nominee|NIL|NIL +nominee|Clarence|NIL +nominee|Thomas|NIL +Clarence|NIL|NIL +Thomas|NIL|NIL +Thomas|NIL|NIL +refusal|NIL|NIL +refusal|Thomas|NIL +answer|NIL|NIL +answer|questions|ARG1 +certain|NIL|NIL +questions|NIL|NIL +questions|certain|NIL +caused|NIL|NIL +caused|refusal|ARG0 +caused|complaints|ARG1 +complaints|NIL|NIL +it|NIL|NIL +appeared|NIL|NIL +appeared|it|ARG1 +appeared|on|rel +appeared|approve|ARG1 +early|NIL|NIL +on|NIL|NIL +on|early|NIL +committee|NIL|NIL +approve|NIL|NIL +approve|committee|ARG0 +approve|nomination|ARG1 +nomination|NIL|NIL +end|NIL|NIL +questioning|NIL|NIL +affirmative|NIL|NIL +vote|NIL|NIL +vote|an|NIL +vote|affirmative|NIL +vote|10|NIL +10|NIL|NIL +10|5|NIL +4|NIL|NIL +9|NIL|NIL +5|NIL|NIL +predicted|NIL|NIL +predicted|end|ARGM-TMP +predicted|vote|ARG1 +was|There|AUX-SBJ +was|media|AUX-PRD +media|NIL|NIL +media|attention|NIL +media|wife|NIL +attention|NIL|NIL +Thomas|NIL|NIL +wife|NIL|NIL +wife|Thomas|NIL +wife|Virginia|NIL +Virginia|NIL|NIL +successful|NIL|NIL +Washington|NIL|NIL +lawyer|NIL|NIL +lawyer|A|NIL +lawyer|successful|NIL +lawyer|Washington|NIL +she|NIL|NIL +taken|NIL|NIL +taken|she|ARG0 +taken|positions|ARG1 +strong|NIL|NIL +conservative|NIL|NIL +positions|NIL|NIL +positions|strong|NIL +positions|conservative|NIL +antagonized|NIL|NIL +antagonized|groups|ARG1 +antagonized|fact|ARG1 +certain|NIL|NIL +groups|NIL|NIL +groups|certain|NIL +fact|NIL|NIL +she|NIL|NIL +was|she|AUX-SBJ +was|white|AUX-PRD +white|NIL|NIL +he|NIL|NIL +black|NIL|NIL +raised|NIL|NIL +raised|he|ARG0 +raised|black|ARGM-ADV +raised|questions|ARG1 +questions|NIL|NIL +questions|blacks|NIL +blacks|NIL|NIL +blacks|some|NIL +hearings|NIL|NIL +lobbyists|NIL|NIL +lobbyists|side|NIL +side|NIL|NIL +side|either|NIL +worked|NIL|NIL +worked|hearings|ARGM-TMP +worked|influence|ARG1 +influence|NIL|NIL +influence|vote|ARG1 +ensuing|NIL|NIL +ensuing|vote|ARG1 +vote|NIL|NIL +vote|Senate|NIL +full|NIL|NIL +Senate|NIL|NIL +Senate|full|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D075.M.100.B.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D075.M.100.B.26.be new file mode 100644 index 0000000000000000000000000000000000000000..51536a5cb5abd5e01ef6410c9b6353666e0bd689 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D075.M.100.B.26.be @@ -0,0 +1,139 @@ +04/28/1988|NIL|NIL +New|NIL|NIL +treatments|NIL|NIL +treatments|04/28/1988|NIL +treatments|New|NIL +stop|NIL|NIL +stop|treatments|ARG0 +stop|attack|ARG1 +stop|tracks|ARGM-LOC +heart|NIL|NIL +attack|NIL|NIL +attack|a|NIL +attack|heart|NIL +its|NIL|NIL +tracks|NIL|NIL +tracks|its|NIL +help|NIL|NIL +help|treatments|ARG0 +victims|NIL|NIL +get|NIL|NIL +get|out|ARG2 +get|hospital|ARG2 +get|quickly|ARGM-MNR +get|concludes|ARGM-TMP +hospital|NIL|NIL +more|NIL|NIL +quickly|NIL|NIL +quickly|more|NIL +quickly|ever|NIL +ever|NIL|NIL +perhaps|NIL|NIL +even|NIL|NIL +three|NIL|NIL +days|NIL|NIL +days|perhaps|NIL +days|even|NIL +days|three|NIL +days|attacks|NIL +their|NIL|NIL +attacks|NIL|NIL +attacks|their|NIL +study|NIL|NIL +study|a|NIL +published|NIL|NIL +published|study|ARG1 +published|04/28/1988|ARGM-TMP +04/28/1988|NIL|NIL +concludes|NIL|NIL +concludes|study|ARG0 +04/18/1991|NIL|NIL +experiment|NIL|NIL +experiment|An|NIL +experiment|patients|NIL +more|NIL|NIL +than|more|NIL +than|1,700|NIL +1,700|NIL|NIL +high|NIL|NIL +blood|NIL|NIL +pressure|NIL|NIL +patients|NIL|NIL +patients|than|NIL +patients|high|NIL +patients|blood|NIL +patients|pressure|NIL +showed|NIL|NIL +showed|experiment|ARG0 +showed|pinpoint|ARG1 +blood|NIL|NIL +blood|a|NIL +urine|NIL|NIL +urine|a|NIL +test|NIL|NIL +test|a|NIL +pinpoint|NIL|NIL +pinpoint|blood|ARG0 +pinpoint|urine|ARG0 +pinpoint|test|ARG0 +pinpoint|patients|ARG1 +patients|NIL|NIL +patients|those|NIL +patients|likely|NIL +most|NIL|NIL +likely|NIL|NIL +likely|most|NIL +likely|have|NIL +have|attack|ARG1 +heart|NIL|NIL +attack|NIL|NIL +attack|a|NIL +attack|heart|NIL +04/18/1991|NIL|NIL +04/18/1991|half|NIL +half|NIL|NIL +half|Americans|NIL +1.5|NIL|NIL +1.5|million|NIL +million|NIL|NIL +Americans|NIL|NIL +Americans|1.5|NIL +suffer|NIL|NIL +suffer|Americans|ARG0 +suffer|attack|ARG1 +heart|NIL|NIL +attack|NIL|NIL +attack|a|NIL +attack|heart|NIL +year|NIL|NIL +year|each|NIL +n't|NIL|NIL +have|year|ARG0 +have|levels|ARG1 +have|smoking|ARG1 +have|obesity|ARG1 +have|pressure|ARG1 +known|NIL|NIL +risk|NIL|NIL +factors|NIL|NIL +factors|risk|NIL +factors|disease|NIL +heart|NIL|NIL +disease|NIL|NIL +disease|heart|NIL +such|NIL|NIL +high|NIL|NIL +cholesterol|NIL|NIL +levels|NIL|NIL +levels|such|NIL +levels|high|NIL +levels|cholesterol|NIL +cigarette|NIL|NIL +smoking|NIL|NIL +smoking|cigarette|NIL +obesity|NIL|NIL +high|NIL|NIL +blood|NIL|NIL +pressure|NIL|NIL +pressure|high|NIL +pressure|blood|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D075.M.100.B.E.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D075.M.100.B.E.be new file mode 100644 index 0000000000000000000000000000000000000000..ea778d6ddd290eb27b8d7c0f5c526bf881c5e493 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D075.M.100.B.E.be @@ -0,0 +1,137 @@ +New|NIL|NIL +medicines|NIL|NIL +new|NIL|NIL +treatments|NIL|NIL +treatments|new|NIL +appeared|NIL|NIL +appeared|decade|ARGM-LOC +last|NIL|NIL +decade|NIL|NIL +decade|last|NIL +significantly|NIL|NIL +reduced|NIL|NIL +reduced|significantly|ARG2 +reduced|attack|ARG1 +reduced|rate|ARG1 +heart|NIL|NIL +attack|NIL|NIL +attack|heart|NIL +rate|NIL|NIL +rate|United|NIL +United|NIL|NIL +United|States|NIL +States|NIL|NIL +introduction|NIL|NIL +introduction|blockers|NIL +calcium|NIL|NIL +blockers|NIL|NIL +blockers|calcium|NIL +blockers|Diltiazem|NIL +blockers|Verapamil|NIL +such|NIL|NIL +Diltiazem|NIL|NIL +Diltiazem|such|NIL +Verapamil|NIL|NIL +Verapamil|such|NIL +significantly|NIL|NIL +reduce|NIL|NIL +reduce|introduction|ARG0 +reduce|significantly|ARGM-MNR +reduce|damage|ARG1 +damage|NIL|NIL +caused|NIL|NIL +caused|damage|ARG1 +caused|attack|ARG0 +caused|reduces|ARGM-ADV +heart|NIL|NIL +attack|NIL|NIL +attack|a|NIL +attack|heart|NIL +even|NIL|NIL +simple|NIL|NIL +aspirin|NIL|NIL +aspirin|simple|NIL +taken|NIL|NIL +taken|aspirin|ARG1 +other|NIL|NIL +day|NIL|NIL +day|every|NIL +day|other|NIL +also|NIL|NIL +reduces|NIL|NIL +reduces|aspirin|ARG0 +reduces|also|ARGM-DIS +reduces|risk|ARG1 +heart|NIL|NIL +attack|NIL|NIL +risk|NIL|NIL +risk|heart|NIL +risk|attack|NIL +Aspiring|NIL|NIL +taken|NIL|NIL +taken|drugs|ARG2 +clot-busting|NIL|NIL +drugs|NIL|NIL +drugs|clot-busting|NIL +shown|NIL|NIL +shown|Aspiring|ARGM-DIS +shown|taken|ARGM-ADV +shown|be|ARG1 +be|helpful|AUX-PRD +especially|NIL|NIL +helpful|NIL|NIL +helpful|especially|NIL +Surgical|NIL|NIL +procedures|NIL|NIL +procedures|Surgical|NIL +procedures|angioplasty|NIL +procedures|bypass|NIL +such|NIL|NIL +balloon|NIL|NIL +angioplasty|NIL|NIL +angioplasty|such|NIL +angioplasty|balloon|NIL +ileal|NIL|NIL +bypass|NIL|NIL +bypass|such|NIL +bypass|ileal|NIL +also|NIL|NIL +show|NIL|NIL +show|procedures|ARG0 +show|also|ARGM-DIS +show|promise|ARG1 +promise|NIL|NIL +promise|treatment|NIL +treatment|NIL|NIL +treatment|disease|NIL +heart|NIL|NIL +disease|NIL|NIL +disease|heart|NIL +Even|NIL|NIL +life|NIL|NIL +style|NIL|NIL +style|Even|NIL +style|life|NIL +changes|NIL|NIL +changes|style|ARG0 +changes|smoking|ARG2 +smoking|NIL|NIL +smoking|are|ARG1 +less|NIL|NIL +better|NIL|NIL +diet|NIL|NIL +diet|less|NIL +diet|a|NIL +diet|better|NIL +are|diet|AUX-SBJ +are|effective|AUX-PRD +effective|NIL|NIL +effective|lowering|NIL +lowering|NIL|NIL +lowering|risk|ARG1 +risk|NIL|NIL +risk|attack|NIL +heart|NIL|NIL +attack|NIL|NIL +attack|a|NIL +attack|heart|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D076.M.100.B.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D076.M.100.B.26.be new file mode 100644 index 0000000000000000000000000000000000000000..560da1133442758c118abfeb748bf4214fbf6c4b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D076.M.100.B.26.be @@ -0,0 +1,167 @@ +04/06/1989|NIL|NIL +04/06/1989|Thatcher|NIL +04/06/1989|wrote|NIL +Margaret|NIL|NIL +Thatcher|NIL|NIL +Thatcher|Margaret|NIL +Thatcher|minister|NIL +prime|NIL|NIL +minister|NIL|NIL +minister|prime|NIL +wrote|NIL|NIL +wrote|most|ARGM-MNR +wrote|criticism|ARG1 +most|NIL|NIL +criticism|NIL|NIL +11/20/1990|NIL|NIL +Flamboyant|NIL|NIL +former|NIL|NIL +Defense|NIL|NIL +Minister|NIL|NIL +Michael|NIL|NIL +Heseltine|NIL|NIL +Heseltine|11/20/1990|NIL +Heseltine|Flamboyant|NIL +Heseltine|former|NIL +Heseltine|Defense|NIL +Heseltine|Minister|NIL +Heseltine|Michael|NIL +'s|Heseltine|AUX-SBJ +challenge|NIL|NIL +challenge|Thatcher|NIL +Prime|NIL|NIL +Minister|NIL|NIL +Margaret|NIL|NIL +Thatcher|NIL|NIL +Thatcher|Prime|NIL +Thatcher|Minister|NIL +Thatcher|Margaret|NIL +leadership|NIL|NIL +leadership|Party|NIL +Conservative|NIL|NIL +Party|NIL|NIL +Party|Conservative|NIL +caused|NIL|NIL +caused|leadership|ARG0 +caused|sensation|ARG1 +political|NIL|NIL +sensation|NIL|NIL +sensation|a|NIL +sensation|political|NIL +sensation|Britain|NIL +Britain|NIL|NIL +11/23/1990|NIL|NIL +Margaret|NIL|NIL +Thatcher|NIL|NIL +Thatcher|Margaret|NIL +was|Thatcher|AUX-SBJ +was|ally|AUX-PRD +was|partner|AUX-PRD +completely|NIL|NIL +reliable|NIL|NIL +reliable|completely|NIL +ally|NIL|NIL +ally|a|NIL +ally|reliable|NIL +partner|NIL|NIL +partner|integrity|NIL +greatest|NIL|NIL +personal|NIL|NIL +integrity|NIL|NIL +integrity|greatest|NIL +integrity|personal|NIL +Reagan|NIL|NIL +said|NIL|NIL +said|Reagan|ARG0 +said|statement|ARGM-LOC +said|announced|ARGM-TMP +statement|NIL|NIL +statement|a|NIL +Mrs.|NIL|NIL +Thatcher|NIL|NIL +Thatcher|Mrs.|NIL +announced|NIL|NIL +announced|Thatcher|ARG0 +announced|retirement|ARG1 +her|NIL|NIL +impending|NIL|NIL +retirement|NIL|NIL +retirement|her|NIL +retirement|impending|NIL +12/08/1990|NIL|NIL +12/08/1990|awarded|NIL +12/08/1990|made|NIL +Queen|NIL|NIL +Elizabeth|NIL|NIL +II|NIL|NIL +II|Queen|NIL +II|Elizabeth|NIL +awarded|NIL|NIL +awarded|II|ARG0 +awarded|Thatcher|ARG2 +awarded|Order|ARG1 +former|NIL|NIL +Prime|NIL|NIL +Minister|NIL|NIL +Margaret|NIL|NIL +Thatcher|NIL|NIL +Thatcher|former|NIL +Thatcher|Prime|NIL +Thatcher|Minister|NIL +Thatcher|Margaret|NIL +coveted|NIL|NIL +Order|NIL|NIL +Order|coveted|NIL +Order|Merit|NIL +Merit|NIL|NIL +12/07/1990|NIL|NIL +made|NIL|NIL +made|II|ARG0 +made|husband|ARG1 +her|NIL|NIL +husband|NIL|NIL +husband|her|NIL +husband|baronet|NIL +baronet|NIL|NIL +baronet|a|NIL +is|baronet|AUX-SBJ +is|knighthood|AUX-PRD +hereditary|NIL|NIL +knighthood|NIL|NIL +knighthood|a|NIL +knighthood|hereditary|NIL +12/08/1990|NIL|NIL +Deceased|NIL|NIL +recipients|NIL|NIL +recipients|12/08/1990|NIL +recipients|Deceased|NIL +include|NIL|NIL +include|recipients|ARG2 +include|Churchill|ARG1 +include|Eisenhower|ARG1 +include|Schweitzer|ARG1 +include|actor|ARG1 +Prime|NIL|NIL +Minister|NIL|NIL +Winston|NIL|NIL +Churchill|NIL|NIL +Churchill|Prime|NIL +Churchill|Minister|NIL +Churchill|Winston|NIL +Gen.|NIL|NIL +Dwight|NIL|NIL +D.|NIL|NIL +Eisenhower|NIL|NIL +Eisenhower|Gen.|NIL +Eisenhower|Dwight|NIL +Eisenhower|D.|NIL +missionary|NIL|NIL +Albert|NIL|NIL +Schweitzer|NIL|NIL +Schweitzer|missionary|NIL +Schweitzer|Albert|NIL +actor|NIL|NIL +actor|Lawrence|NIL +actor|Olivier|NIL +Lawrence|NIL|NIL +Olivier|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D076.M.100.B.E.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D076.M.100.B.E.be new file mode 100644 index 0000000000000000000000000000000000000000..83ef09ac8cc7b86d274bbd6ad6e9c7d726109acc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D076.M.100.B.E.be @@ -0,0 +1,140 @@ +Prime|NIL|NIL +Minister|NIL|NIL +Margaret|NIL|NIL +Thatcher|NIL|NIL +Thatcher|Prime|NIL +Thatcher|Minister|NIL +Thatcher|Margaret|NIL +resigned|NIL|NIL +resigned|Thatcher|ARG0 +resigned|Thursday|ARGM-TMP +resigned|withdrew|ARGM-TMP +Thursday|NIL|NIL +her|NIL|NIL +cabinet|NIL|NIL +cabinet|her|NIL +withdrew|NIL|NIL +withdrew|cabinet|ARG0 +withdrew|support|ARG1 +its|NIL|NIL +support|NIL|NIL +support|its|NIL +support|vote|NIL +upcoming|NIL|NIL +vote|NIL|NIL +vote|an|NIL +vote|upcoming|NIL +move|NIL|NIL +seen|NIL|NIL +seen|move|ARG1 +seen|attempt|ARG1 +attempt|NIL|NIL +attempt|an|NIL +head|NIL|NIL +head|off|rel +head|campaign|ARG1 +head|minister|ARGM-MNR +campaign|NIL|NIL +campaign|a|NIL +former|NIL|NIL +defense|NIL|NIL +minister|NIL|NIL +minister|former|NIL +minister|defense|NIL +Hazeltine|NIL|NIL +wrest|NIL|NIL +wrest|Hazeltine|ARG0 +wrest|control|ARG1 +control|NIL|NIL +control|Party|NIL +Conservative|NIL|NIL +Party|NIL|NIL +Party|Conservative|NIL +announcement|NIL|NIL +took|NIL|NIL +took|announcement|ARG0 +took|Bush|ARG1 +took|leaders|ARG1 +took|surprise|ARGM-MNR +President|NIL|NIL +Bush|NIL|NIL +Bush|President|NIL +other|NIL|NIL +world|NIL|NIL +leaders|NIL|NIL +leaders|other|NIL +leaders|world|NIL +surprise|NIL|NIL +Mrs.|NIL|NIL +Thatcher|NIL|NIL +Thatcher|Mrs.|NIL +special|NIL|NIL +relationship|NIL|NIL +relationship|Thatcher|NIL +relationship|special|NIL +relationship|administration|NIL +Reagan|NIL|NIL +administration|NIL|NIL +administration|Reagan|NIL +was|relationship|AUX-SBJ +was|known|AUX-PRD +well|NIL|NIL +known|NIL|NIL +known|well|ARGM-EXT +Strong|NIL|NIL +willed|NIL|NIL +willed|Strong|NIL +willed|Lady|NIL +Iron|NIL|NIL +Lady|NIL|NIL +Lady|Iron|NIL +was|willed|AUX-SBJ +was|minister|AUX-PRD +prime|NIL|NIL +minister|NIL|NIL +minister|prime|NIL +minister|years|NIL +minister|longer|NIL +over|11|NIL +11|NIL|NIL +years|NIL|NIL +years|over|NIL +longer|NIL|NIL +longer|minister|NIL +other|NIL|NIL +prime|NIL|NIL +minister|NIL|NIL +minister|any|NIL +minister|other|NIL +minister|prime|NIL +minister|century|NIL +century|NIL|NIL +century|this|NIL +prime|NIL|NIL +minister|NIL|NIL +minister|prime|NIL +she|NIL|NIL +credited|NIL|NIL +credited|minister|ARGM-ADV +credited|she|ARG1 +credited|turning|ARG2 +turning|NIL|NIL +turning|around|ARGM-DIR +turning|economy|ARG1 +declining|NIL|NIL +declining|economy|ARG1 +British|NIL|NIL +economy|NIL|NIL +economy|British|NIL +economy|well|NIL +as|NIL|NIL +well|NIL|NIL +well|as|NIL +well|as|NIL +helping|NIL|NIL +helping|shape|ARG1 +shape|NIL|NIL +shape|politics|ARG1 +international|NIL|NIL +politics|NIL|NIL +politics|international|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D077.M.100.B.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D077.M.100.B.26.be new file mode 100644 index 0000000000000000000000000000000000000000..fd0ae1c09e3c34b01c561788a909416d90ee940f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D077.M.100.B.26.be @@ -0,0 +1,138 @@ +10/18/1989|NIL|NIL +Ever|NIL|NIL +1906|NIL|NIL +earthquake|NIL|NIL +earthquake|1906|NIL +devastated|NIL|NIL +devastated|earthquake|ARG1 +devastated|Francisco|ARG1 +San|NIL|NIL +Francisco|NIL|NIL +Francisco|San|NIL +many|NIL|NIL +scientists|NIL|NIL +scientists|many|NIL +believed|NIL|NIL +believed|devastated|ARGM-TMP +believed|scientists|ARG0 +believed|strike|ARG1 +next|NIL|NIL +big|NIL|NIL +one|NIL|NIL +one|next|NIL +one|big|NIL +strike|NIL|NIL +strike|one|ARG0 +strike|end|ARG1 +Los|NIL|NIL +Angeles|NIL|NIL +end|NIL|NIL +end|Los|NIL +end|Angeles|NIL +end|Fault|NIL +mighty|NIL|NIL +San|NIL|NIL +Andreas|NIL|NIL +Fault|NIL|NIL +Fault|mighty|NIL +Fault|San|NIL +Fault|Andreas|NIL +10/18/1989|NIL|NIL +epicenter|NIL|NIL +epicenter|quake|NIL +quake|NIL|NIL +was|10/18/1989|AUX-SBJ +was|epicenter|AUX-SBJ +was|miles|AUX-PRD +about|NIL|NIL +about|8|NIL +8|NIL|NIL +miles|NIL|NIL +miles|about|NIL +miles|northeast|NIL +miles|south|NIL +northeast|NIL|NIL +northeast|Cruz|NIL +northeast|Francisco|NIL +Santa|NIL|NIL +Cruz|NIL|NIL +Cruz|Santa|NIL +75|NIL|NIL +miles|NIL|NIL +miles|75|NIL +south|NIL|NIL +south|miles|NIL +south|Francisco|NIL +San|NIL|NIL +Francisco|NIL|NIL +Francisco|San|NIL +10/18/1989|NIL|NIL +studies|NIL|NIL +studies|These|NIL +gave|NIL|NIL +gave|studies|ARG0 +gave|interpretations|ARG1 +various|NIL|NIL +interpretations|NIL|NIL +interpretations|various|NIL +interpretations|how|NIL +how|much|NIL +much|NIL|NIL +stress|NIL|NIL +stress|Earth|NIL +Earth|NIL|NIL +released|NIL|NIL +released|stress|ARG1 +released|earthquake|ARG0 +great|NIL|NIL +San|NIL|NIL +Francisco|NIL|NIL +earthquake|NIL|NIL +earthquake|great|NIL +earthquake|San|NIL +earthquake|Francisco|NIL +earthquake|1906|NIL +1906|NIL|NIL +had|earthquake|ARG0 +had|magnitude|ARG1 +magnitude|NIL|NIL +magnitude|a|NIL +magnitude|about|NIL +about|NIL|NIL +about|8.3|NIL +8.3|NIL|NIL +killed|NIL|NIL +killed|earthquake|ARG0 +killed|people|ARG1 +at|least|NIL +at|2,500|NIL +least|NIL|NIL +2,500|NIL|NIL +people|NIL|NIL +people|at|NIL +10/19/1989|NIL|NIL +San|NIL|NIL +Francisco|NIL|NIL +Mayor|NIL|NIL +Art|NIL|NIL +Agnos|NIL|NIL +Agnos|San|NIL +Agnos|Francisco|NIL +Agnos|Mayor|NIL +Agnos|Art|NIL +estimated|NIL|NIL +estimated|Agnos|ARG0 +estimated|damage|ARG1 +estimated|$|ARG1 +damage|NIL|NIL +$|NIL|NIL +$|2|NIL +$|billion|NIL +$|city|NIL +2|NIL|NIL +billion|NIL|NIL +his|NIL|NIL +city|NIL|NIL +city|his|NIL +city|alone|NIL +alone|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D077.M.100.B.H.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D077.M.100.B.H.be new file mode 100644 index 0000000000000000000000000000000000000000..f27f0fd47b5fec76cee125792e9fd46487c7c030 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D077.M.100.B.H.be @@ -0,0 +1,163 @@ +6.9|NIL|NIL +earthquake|NIL|NIL +earthquake|A|NIL +earthquake|6.9|NIL +rocked|NIL|NIL +rocked|earthquake|ARG0 +rocked|California|ARG1 +rocked|pm|ARGM-LOC +Northern|NIL|NIL +California|NIL|NIL +California|Northern|NIL +5:04|NIL|NIL +pm|NIL|NIL +pm|5:04|NIL +pm|October|NIL +October|NIL|NIL +October|17|NIL +October|1989|NIL +17|NIL|NIL +1989|NIL|NIL +It|NIL|NIL +lasted|NIL|NIL +lasted|It|ARG1 +lasted|seconds|ARG2 +15|NIL|NIL +seconds|NIL|NIL +seconds|15|NIL +caused|NIL|NIL +caused|It|ARG0 +caused|damage|ARG1 +$|NIL|NIL +$|2|NIL +$|billion|NIL +2|NIL|NIL +billion|NIL|NIL +damage|NIL|NIL +damage|$|NIL +killed|NIL|NIL +killed|It|ARG0 +killed|60|ARG1 +60|NIL|NIL +Candlestick|NIL|NIL +Park|NIL|NIL +Park|Candlestick|NIL +shook|NIL|NIL +shook|Park|ARG0 +World|NIL|NIL +Series|NIL|NIL +Series|World|NIL +Game|NIL|NIL +Three|NIL|NIL +Three|Game|NIL +postponed|NIL|NIL +postponed|Series|ARG1 +postponed|Three|ARG1 +Buildings|NIL|NIL +collapsed|NIL|NIL +collapsed|Buildings|ARG1 +collapsed|soil|ARGM-CAU +collapsed|design|ARGM-CAU +poor|NIL|NIL +soil|NIL|NIL +soil|because|NIL +soil|poor|NIL +structural|NIL|NIL +design|NIL|NIL +design|because|NIL +design|structural|NIL +Marina|NIL|NIL +District|NIL|NIL +District|Marina|NIL +lost|NIL|NIL +lost|District|ARG0 +lost|buildings|ARG1 +60|NIL|NIL +buildings|NIL|NIL +buildings|60|NIL +swept|NIL|NIL +swept|District|ARG1 +swept|fire|ARG0 +fire|NIL|NIL +High-rises|NIL|NIL +built|NIL|NIL +built|High-rises|ARG1 +built|codes|ARG2 +strict|NIL|NIL +earthquake|NIL|NIL +codes|NIL|NIL +codes|strict|NIL +codes|earthquake|NIL +escaped|NIL|NIL +escaped|High-rises|ARG0 +escaped|damage|ARG1 +damage|NIL|NIL +Part|NIL|NIL +of|Part|NIL +Bay|NIL|NIL +Bridge|NIL|NIL +Bridge|Bay|NIL +upper|NIL|NIL +deck|NIL|NIL +deck|of|NIL +deck|upper|NIL +collapsed|NIL|NIL +collapsed|deck|ARG0 +1906|NIL|NIL +San|NIL|NIL +Francisco|NIL|NIL +quake|NIL|NIL +quake|1906|NIL +quake|San|NIL +quake|Francisco|NIL +measuring|NIL|NIL +8.3|NIL|NIL +killed|NIL|NIL +killed|quake|ARG0 +killed|measuring|ARGM-ADV +killed|2500|ARG1 +2500|NIL|NIL +Tuesday|NIL|NIL +epicenter|NIL|NIL +epicenter|Tuesday|NIL +was|epicenter|AUX-SBJ +was|spot|AUX-PRD +Northern|NIL|NIL +California|NIL|NIL +California|Northern|NIL +most|NIL|NIL +likely|NIL|NIL +likely|most|NIL +spot|NIL|NIL +spot|California|NIL +spot|likely|NIL +spot|quake|NIL +large|NIL|NIL +quake|NIL|NIL +quake|a|NIL +quake|large|NIL +quake|years|NIL +30|NIL|NIL +years|NIL|NIL +years|30|NIL +Offers|NIL|NIL +Offers|help|NIL +help|NIL|NIL +were|Offers|AUX-SBJ +were|widespread|AUX-PRD +widespread|NIL|NIL +Charleston|NIL|NIL +Charleston|SC|NIL +SC|NIL|NIL +sympathized|NIL|NIL +sympathized|Charleston|ARG0 +sympathized|suffering|ARG1 +suffering|NIL|NIL +suffering|damage|ARG1 +suffering|Hugo|ARG1 +comparable|NIL|NIL +damage|NIL|NIL +damage|comparable|NIL +Hurricane|NIL|NIL +Hugo|NIL|NIL +Hugo|Hurricane|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D078.M.100.B.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D078.M.100.B.26.be new file mode 100644 index 0000000000000000000000000000000000000000..1278c393be5bb226c56b83b9c380589202f89617 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D078.M.100.B.26.be @@ -0,0 +1,124 @@ +03/23/1989|NIL|NIL +Oscar|NIL|NIL +selection|NIL|NIL +selection|03/23/1989|NIL +selection|Oscar|NIL +come|NIL|NIL +come|selection|ARG1 +come|scrutiny|ARG2 +come|go|ARGM-TMP +scrutiny|NIL|NIL +film|NIL|NIL +studios|NIL|NIL +studios|film|NIL +go|NIL|NIL +go|studios|ARG0 +go|lengths|ARG2 +go|pull|ARG1 +new|NIL|NIL +lengths|NIL|NIL +lengths|new|NIL +pull|NIL|NIL +pull|Academy|ARG2 +votes|NIL|NIL +Academy|NIL|NIL +Academy|Picture|NIL +Academy|Arts|NIL +Academy|Sciences|NIL +Motion|NIL|NIL +Picture|NIL|NIL +Picture|Motion|NIL +Arts|NIL|NIL +Sciences|NIL|NIL +03/24/1989|NIL|NIL +Free|NIL|NIL +enterprise|NIL|NIL +enterprise|03/24/1989|NIL +enterprise|Free|NIL +collided|NIL|NIL +collided|enterprise|ARG0 +collided|Awards|ARG2 +Academy|NIL|NIL +Awards|NIL|NIL +Awards|Academy|NIL +everybody|NIL|NIL +trying|NIL|NIL +trying|everybody|ARG0 +trying|pick|ARG1 +pick|NIL|NIL +pick|up|rel +pick|pieces|ARG1 +pieces|NIL|NIL +03/24/1989|NIL|NIL +Oscar|NIL|NIL +statuettes|NIL|NIL +statuettes|Oscar|NIL +selling|NIL|NIL +selling|statuettes|ARG1 +selling|auction|ARGM-LOC +auction|NIL|NIL +more|NIL|NIL +$|NIL|NIL +$|more|NIL +$|than|NIL +$|10,000|NIL +10,000|NIL|NIL +Chicago|NIL|NIL +trophy|NIL|NIL +company|NIL|NIL +company|a|NIL +company|Chicago|NIL +company|trophy|NIL +casting|NIL|NIL +alleged|NIL|NIL +Academy|NIL|NIL +Award|NIL|NIL +clones|NIL|NIL +clones|alleged|NIL +clones|Academy|NIL +clones|Award|NIL +National|NIL|NIL +Academy|NIL|NIL +Academy|National|NIL +Academy|Arts|NIL +Academy|Sciences|NIL +Motion|NIL|NIL +Picture|NIL|NIL +Arts|NIL|NIL +Arts|Motion|NIL +Arts|Picture|NIL +Sciences|NIL|NIL +scrambling|NIL|NIL +scrambling|Academy|ARG0 +scrambling|make|ARG1 +make|NIL|NIL +make|sure|ARG1 +sure|NIL|NIL +sure|tarnished|NIL +Oscar|NIL|NIL +golden|NIL|NIL +sheen|NIL|NIL +sheen|Oscar|NIL +sheen|golden|NIL +n't|NIL|NIL +tarnished|NIL|NIL +tarnished|sheen|ARG1 +tarnished|hucksterism|ARG0 +Hollywood|NIL|NIL +hucksterism|NIL|NIL +hucksterism|Hollywood|NIL +03/30/1989|NIL|NIL +Tracy|NIL|NIL +credo|NIL|NIL +credo|Tracy|NIL +recommended|NIL|NIL +recommended|credo|ARG1 +recommended|producers|ARG2 +future|NIL|NIL +producers|NIL|NIL +producers|future|NIL +producers|Award|NIL +Academy|NIL|NIL +Award|NIL|NIL +Award|Academy|NIL +shows|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D078.M.100.B.J.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D078.M.100.B.J.be new file mode 100644 index 0000000000000000000000000000000000000000..16cdc2db78a72cc5f875e2852bd1117307d80398 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D078.M.100.B.J.be @@ -0,0 +1,117 @@ +Oscar|NIL|NIL +nomination|NIL|NIL +selection|NIL|NIL +process|NIL|NIL +is|Oscar|AUX-SBJ +is|nomination|AUX-SBJ +is|selection|AUX-SBJ +is|process|AUX-SBJ +is|scrutiny|AUX-LOC +scrutiny|NIL|NIL +scrutiny|campaign|NIL +studios|NIL|NIL +campaign|NIL|NIL +campaign|studios|NIL +influence|NIL|NIL +influence|voting|ARG1 +voting|NIL|NIL +voting|Academy|NIL +Academy|NIL|NIL +Academy|Motion|NIL +Academy|Pictures|NIL +Academy|Arts|NIL +Academy|Sciences|NIL +Academy|members|NIL +Motion|NIL|NIL +Pictures|NIL|NIL +Arts|NIL|NIL +Sciences|NIL|NIL +members|NIL|NIL +Directors|NIL|NIL +Directors|Brooks|NIL +Directors|1988|NIL +Brooks|NIL|NIL +1988|NIL|NIL +Spielberg|NIL|NIL +Spielberg|1988|NIL +1988|NIL|NIL +Lee|NIL|NIL +Lee|1989|NIL +1989|NIL|NIL +are|Directors|AUX-SBJ +are|Spielberg|AUX-SBJ +are|Lee|AUX-SBJ +are|luminaries|AUX-LOC +luminaries|NIL|NIL +overlooked|NIL|NIL +overlooked|luminaries|ARG1 +overlooked|voting|ARGM-LOC +annual|NIL|NIL +voting|NIL|NIL +voting|annual|NIL +voting|history|NIL +award|NIL|NIL +61-year|NIL|NIL +history|NIL|NIL +history|award|NIL +history|61-year|NIL +Millions|NIL|NIL +watch|NIL|NIL +watch|Millions|ARG0 +watch|show|ARG1 +televised|NIL|NIL +televised|awards|ARG1 +awards|NIL|NIL +show|NIL|NIL +show|awards|ARG0 +show|take|ARG1 +take|NIL|NIL +take|over|rel +take|hours|ARG1 +three|NIL|NIL +hours|NIL|NIL +hours|three|NIL +1989|NIL|NIL +show|NIL|NIL +show|1989|NIL +is|show|AUX-SBJ +is|memorable|AUX-PRD +memorable|NIL|NIL +memorable|number|NIL +number|NIL|NIL +number|films|NIL +films|NIL|NIL +honored|NIL|NIL +musical|NIL|NIL +number|NIL|NIL +number|a|NIL +number|musical|NIL +sparked|NIL|NIL +sparked|number|ARG1 +sparked|suit|ARG1 +Disney|NIL|NIL +suit|NIL|NIL +suit|a|NIL +suit|Disney|NIL +suit|Academy|NIL +Academy|NIL|NIL +highly|NIL|NIL +recognizable|NIL|NIL +recognizable|highly|NIL +statue|NIL|NIL +statue|recognizable|NIL +not|NIL|NIL +protected|NIL|NIL +protected|statue|ARG1 +protected|copyright|ARG3 +copyright|NIL|NIL +Walt|NIL|NIL +Disney|NIL|NIL +Disney|Walt|NIL +was|Disney|AUX-SBJ +was|person|AUX-PRD +most-awarded|NIL|NIL +person|NIL|NIL +person|most-awarded|NIL +person|32|NIL +32|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D079.M.100.A.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D079.M.100.A.26.be new file mode 100644 index 0000000000000000000000000000000000000000..2f865764fff301df80d8de5cfd16d9363ad92326 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D079.M.100.A.26.be @@ -0,0 +1,128 @@ +09/11/1988|NIL|NIL +09/11/1988|Gilbert|NIL +Hurricane|NIL|NIL +Gilbert|NIL|NIL +Gilbert|Hurricane|NIL +09/14/1988|NIL|NIL +hurricane|NIL|NIL +killed|NIL|NIL +killed|hurricane|ARG0 +killed|people|ARG1 +killed|09/18/1988|ARGM-TMP +killed|Republic|ARGM-LOC +at|least|NIL +at|five|NIL +least|NIL|NIL +five|NIL|NIL +people|NIL|NIL +people|at|NIL +09/18/1988|NIL|NIL +Dominican|NIL|NIL +Republic|NIL|NIL +Republic|Dominican|NIL +civil|NIL|NIL +defense|NIL|NIL +officials|NIL|NIL +officials|civil|NIL +officials|defense|NIL +said|NIL|NIL +said|killed|ARG1 +said|officials|ARG0 +09/15/1988|NIL|NIL +most|NIL|NIL +intense|NIL|NIL +hurricane|NIL|NIL +hurricane|most|NIL +hurricane|intense|NIL +hurricane|record|NIL +record|NIL|NIL +surged|NIL|NIL +surged|hurricane|ARG1 +surged|Texas|ARG2 +surged|09/15/1988|ARGM-TMP +surged|battering|ARG2 +surged|leveling|ARGM-MNR +surged|pummeling|ARG2 +surged|forcing|ARG2 +Texas|NIL|NIL +09/15/1988|NIL|NIL +battering|NIL|NIL +battering|Peninsula|ARG1 +battering|winds|ARG2 +Yucatan|NIL|NIL +Peninsula|NIL|NIL +Peninsula|Yucatan|NIL +160|NIL|NIL +mph|NIL|NIL +mph|160|NIL +winds|NIL|NIL +winds|mph|NIL +leveling|NIL|NIL +leveling|slums|ARG1 +slums|NIL|NIL +pummeling|NIL|NIL +posh|NIL|NIL +resorts|NIL|NIL +resorts|posh|NIL +forcing|NIL|NIL +forcing|flee|ARG2 +tens|NIL|NIL +tens|thousands|NIL +thousands|NIL|NIL +flee|NIL|NIL +flee|tens|ARG0 +09/15/1988|NIL|NIL +hurricane|NIL|NIL +left|NIL|NIL +left|hurricane|ARG0 +left|homeless|ARG2 +nearly|NIL|NIL +one|NIL|NIL +in|nearly|NIL +in|one|NIL +in|four|NIL +four|NIL|NIL +Jamaicans|NIL|NIL +Jamaicans|in|NIL +homeless|NIL|NIL +homeless|Jamaicans|NIL +slackened|NIL|NIL +slackened|hurricane|ARG1 +slackened|somewhat|ARGM-MNR +slackened|swirled|ARGM-ADV +somewhat|NIL|NIL +it|NIL|NIL +swirled|NIL|NIL +swirled|it|ARG0 +swirled|land|ARGM-CAU +land|NIL|NIL +storm|NIL|NIL +beginning|NIL|NIL +beginning|storm|ARG1 +beginning|gain|ARG1 +gain|NIL|NIL +gain|strength|ARG1 +gain|water|ARGM-CAU +gain|moved|ARGM-TMP +strength|NIL|NIL +open|NIL|NIL +water|NIL|NIL +water|open|NIL +it|NIL|NIL +moved|NIL|NIL +moved|it|ARG0 +moved|Coast|ARG2 +moved|winds|ARGM-MNR +U.S.|NIL|NIL +Gulf|NIL|NIL +Coast|NIL|NIL +Coast|U.S.|NIL +Coast|Gulf|NIL +sustained|NIL|NIL +sustained|winds|ARG1 +winds|NIL|NIL +winds|mph|NIL +120|NIL|NIL +mph|NIL|NIL +mph|120|NIL +09/16/1988|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D079.M.100.A.I.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D079.M.100.A.I.be new file mode 100644 index 0000000000000000000000000000000000000000..876530a387674466943f9fc2669017ec5ded537e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D079.M.100.A.I.be @@ -0,0 +1,127 @@ +Gilbert|NIL|NIL +is|Gilbert|AUX-SBJ +is|now|AUX-TMP +is|storm|AUX-PRD +is|bringing|AUX-ADV +now|NIL|NIL +tropical|NIL|NIL +storm|NIL|NIL +storm|a|NIL +storm|tropical|NIL +bringing|NIL|NIL +bringing|rain|ARG1 +bringing|flooding|ARG1 +bringing|mudslides|ARG1 +bringing|Mexico|ARG2 +heavy|NIL|NIL +rain|NIL|NIL +rain|heavy|NIL +flooding|NIL|NIL +mudslides|NIL|NIL +northeastern|NIL|NIL +Mexico|NIL|NIL +Mexico|northeastern|NIL +It|NIL|NIL +not|NIL|NIL +hit|NIL|NIL +hit|It|ARG0 +Texas|NIL|NIL +as|NIL|NIL +feared|NIL|NIL +feared|Texas|ARG0 +feared|as|ARGM-EXT +spawn|NIL|NIL +spawn|It|ARG0 +spawn|tornadoes|ARG1 +tornadoes|NIL|NIL +Hurricane|NIL|NIL +Gilbert|NIL|NIL +Gilbert|Hurricane|NIL +formed|NIL|NIL +formed|Gilbert|ARG0 +formed|Caribbean|ARGM-LOC +formed|week|ARGM-TMP +eastern|NIL|NIL +Caribbean|NIL|NIL +Caribbean|eastern|NIL +last|NIL|NIL +week|NIL|NIL +week|last|NIL +ravaged|NIL|NIL +ravaged|week|ARG1 +ravaged|Republic|ARG2 +ravaged|Jamaica|ARG2 +ravaged|Islands|ARG2 +Dominican|NIL|NIL +Republic|NIL|NIL +Republic|Dominican|NIL +Jamaica|NIL|NIL +Cayman|NIL|NIL +Islands|NIL|NIL +Islands|Cayman|NIL +Tuesday|NIL|NIL +Gilbert|NIL|NIL +Gilbert|Tuesday|NIL +had|winds|ARG1 +had|storm|AUX-SBJ +winds|NIL|NIL +winds|175mph|NIL +winds|pressure|NIL +175mph|NIL|NIL +lowest|NIL|NIL +pressure|NIL|NIL +pressure|lowest|NIL +ever|NIL|NIL +recorded|NIL|NIL +recorded|pressure|ARG1 +recorded|ever|ARGM-TMP +upgraded|NIL|NIL +upgraded|Category|ARG2 +upgraded|storm|ARG0 +Category|NIL|NIL +Category|a|NIL +5|NIL|NIL +storm|NIL|NIL +storm|5|NIL +storm|highest|NIL +highest|NIL|NIL +Wednesday|NIL|NIL +it|NIL|NIL +slammed|NIL|NIL +slammed|Wednesday|ARGM-TMP +slammed|severing|ARGM-ADV +slammed|causing|ARGM-ADV +Yucatan|NIL|NIL +Peninsula|NIL|NIL +Peninsula|Yucatan|NIL +severely|NIL|NIL +damaging|NIL|NIL +damaging|Peninsula|ARG0 +damaging|severely|ARGM-MNR +damaging|areas|ARG1 +resort|NIL|NIL +areas|NIL|NIL +areas|resort|NIL +severing|NIL|NIL +severing|electricity|ARG1 +severing|communications|ARG1 +electricity|NIL|NIL +communications|NIL|NIL +causing|NIL|NIL +causing|flooding|ARG1 +widespread|NIL|NIL +flooding|NIL|NIL +flooding|widespread|NIL +At|least|NIL +At|109|NIL +least|NIL|NIL +109|NIL|NIL +people|NIL|NIL +people|At|NIL +killed|NIL|NIL +killed|people|ARG1 +800,000|NIL|NIL +left|NIL|NIL +left|800,000|ARG0 +left|homeless|ARG2 +homeless|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D080.M.100.A.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D080.M.100.A.26.be new file mode 100644 index 0000000000000000000000000000000000000000..dc7ccda4178aa3218adbe9b6ac65b184d05703c5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D080.M.100.A.26.be @@ -0,0 +1,130 @@ +01/18/1990|NIL|NIL +Mother-and-son|NIL|NIL +defendants|NIL|NIL +defendants|01/18/1990|NIL +defendants|Mother-and-son|NIL +defendants|Peggy|NIL +defendants|McMartin|NIL +defendants|Buckey|NIL +defendants|63|NIL +defendants|31|NIL +Peggy|NIL|NIL +McMartin|NIL|NIL +Buckey|NIL|NIL +63|NIL|NIL +Raymond|NIL|NIL +Buckey|NIL|NIL +Buckey|63|NIL +Buckey|Raymond|NIL +Buckey|31|NIL +31|NIL|NIL +wept|NIL|NIL +wept|defendants|ARG0 +wept|Buckey|ARG0 +wept|announced|ARGM-ADV +verdicts|NIL|NIL +announced|NIL|NIL +announced|verdicts|ARG1 +01/22/1990|NIL|NIL +01/22/1990|minister|NIL +Hermosa|NIL|NIL +Beach|NIL|NIL +minister|NIL|NIL +minister|A|NIL +minister|Hermosa|NIL +minister|Beach|NIL +years|NIL|NIL +tried|NIL|NIL +vain|NIL|NIL +vain|quell|NIL +quell|NIL|NIL +quell|rumors|ARG1 +rumors|NIL|NIL +tying|NIL|NIL +tying|rumors|ARG0 +tying|church|ARG1 +his|NIL|NIL +church|NIL|NIL +church|his|NIL +church|scandal|NIL +McMartin|NIL|NIL +Pre-School|NIL|NIL +scandal|NIL|NIL +scandal|McMartin|NIL +scandal|Pre-School|NIL +announced|NIL|NIL +announced|church|ARG1 +announced|01/28/1990|ARGM-TMP +announced|forced|ARG1 +01/28/1990|NIL|NIL +extreme|NIL|NIL +stress|NIL|NIL +stress|extreme|NIL +stress|fallout|NIL +fallout|NIL|NIL +fallout|case|NIL +case|NIL|NIL +forced|NIL|NIL +forced|stress|ARG0 +forced|seek|ARG2 +him|NIL|NIL +seek|NIL|NIL +seek|him|ARG0 +seek|retirement|ARG1 +disability|NIL|NIL +retirement|NIL|NIL +retirement|disability|NIL +01/22/1990|NIL|NIL +McMartin|NIL|NIL +case|NIL|NIL +case|McMartin|NIL +prompted|NIL|NIL +prompted|trial|ARG1 +longest|NIL|NIL +most|NIL|NIL +expensive|NIL|NIL +expensive|most|NIL +criminal|NIL|NIL +trial|NIL|NIL +trial|longest|NIL +trial|expensive|NIL +trial|criminal|NIL +trial|history|NIL +U.S.|NIL|NIL +history|NIL|NIL +history|U.S.|NIL +ended|NIL|NIL +ended|case|ARG1 +ended|01/25/1990|ARGM-TMP +ended|acquittal|ARG2 +ended|total|ARG2 +01/25/1990|NIL|NIL +acquittal|NIL|NIL +acquittal|defendants|NIL +acquittal|Ray|NIL +acquittal|Buckey|NIL +acquittal|Peggy|NIL +acquittal|McMartin|NIL +acquittal|Buckey|NIL +defendants|NIL|NIL +Ray|NIL|NIL +Buckey|NIL|NIL +Peggy|NIL|NIL +McMartin|NIL|NIL +Buckey|NIL|NIL +total|NIL|NIL +total|a|NIL +total|counts|NIL +52|NIL|NIL +counts|NIL|NIL +counts|52|NIL +counts|molestation|NIL +child|NIL|NIL +molestation|NIL|NIL +molestation|child|NIL +molestation|school|NIL +Manhattan|NIL|NIL +Beach|NIL|NIL +school|NIL|NIL +school|Manhattan|NIL +school|Beach|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D080.M.100.A.E.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D080.M.100.A.E.be new file mode 100644 index 0000000000000000000000000000000000000000..177421bcf2fe9569d2879e62abf35c27c13d31eb --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D080.M.100.A.E.be @@ -0,0 +1,123 @@ +McMartin|NIL|NIL +Pre-School|NIL|NIL +child|NIL|NIL +molestation|NIL|NIL +trial|NIL|NIL +trial|McMartin|NIL +trial|Pre-School|NIL +trial|child|NIL +trial|molestation|NIL +trial|trial|NIL +longest|NIL|NIL +criminal|NIL|NIL +trial|NIL|NIL +trial|longest|NIL +trial|criminal|NIL +trial|history|NIL +U.S.|NIL|NIL +history|NIL|NIL +history|U.S.|NIL +ended|NIL|NIL +ended|trial|ARG1 +ended|verdict|ARG2 +verdict|NIL|NIL +verdict|a|NIL +innocent|NIL|NIL +innocent|Buckey|NIL +Raymond|NIL|NIL +Buckey|NIL|NIL +Buckey|Raymond|NIL +is|mother|AUX-PRD +mother|NIL|NIL +mother|Buckey|NIL +Peggy|NIL|NIL +McMartin|NIL|NIL +Buckey|NIL|NIL +Buckey|Peggy|NIL +Buckey|McMartin|NIL +jury|NIL|NIL +found|NIL|NIL +found|jury|ARG0 +found|innocent|ARG1 +Buckeys|NIL|NIL +innocent|NIL|NIL +innocent|Buckeys|NIL +innocent|52|NIL +52|NIL|NIL +52|charges|NIL +charges|NIL|NIL +deadlocked|NIL|NIL +13|NIL|NIL +13|another|NIL +causing|NIL|NIL +causing|mistrial|ARG1 +mistrial|NIL|NIL +mistrial|a|NIL +mistrial|charges|NIL +charges|NIL|NIL +charges|those|NIL +Prosecutors|NIL|NIL +now|NIL|NIL +decide|NIL|NIL +decide|Prosecutors|ARG0 +decide|now|ARGM-TMP +decide|want|ARG1 +they|NIL|NIL +want|NIL|NIL +want|they|ARG0 +want|retrial|ARG1 +retrial|NIL|NIL +retrial|a|NIL +retrial|charges|NIL +deadlocked|NIL|NIL +charges|NIL|NIL +charges|deadlocked|NIL +Originally|NIL|NIL +involving|NIL|NIL +7|NIL|NIL +defendants|NIL|NIL +defendants|Originally|NIL +defendants|7|NIL +including|NIL|NIL +Raymond|NIL|NIL +Buckeys|NIL|NIL +sister|NIL|NIL +grandmother|NIL|NIL +charges|NIL|NIL +charges|sister|NIL +charges|grandmother|NIL +charges|employees|NIL +sister|NIL|NIL +sister|well|NIL +grandmother|NIL|NIL +grandmother|well|NIL +as|NIL|NIL +well|NIL|NIL +well|as|NIL +well|as|NIL +three|NIL|NIL +employees|NIL|NIL +employees|well|NIL +employees|three|NIL +employees|school|NIL +school|NIL|NIL +dropped|NIL|NIL +dropped|defendants|ARGM-ADV +dropped|Raymond|ARGM-ADV +dropped|Buckeys|ARGM-ADV +dropped|sister|ARGM-ADV +dropped|grandmother|ARGM-ADV +dropped|charges|ARG1 +Parents|NIL|NIL +Parents|children|NIL +children|NIL|NIL +involved|NIL|NIL +involved|children|ARG1 +expressed|NIL|NIL +expressed|Parents|ARG0 +expressed|anger|ARG1 +anger|NIL|NIL +disappoint|NIL|NIL +disappoint|Parents|ARG0 +disappoint|verdict|ARGM-TMP +verdict|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D081.M.100.A.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D081.M.100.A.26.be new file mode 100644 index 0000000000000000000000000000000000000000..91bc6a923ef04631c0bc147e898c1edb39416b0b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D081.M.100.A.26.be @@ -0,0 +1,132 @@ +07/21/1989|NIL|NIL +Coal|NIL|NIL +miners|NIL|NIL +miners|07/21/1989|NIL +miners|Coal|NIL +miners|Siberia|NIL +Siberia|NIL|NIL +ended|NIL|NIL +ended|strike|ARG1 +ended|07/21/1989|ARGM-TMP +ended|promises|ARGM-TMP +their|NIL|NIL +strike|NIL|NIL +strike|their|NIL +07/21/1989|NIL|NIL +exacting|NIL|NIL +promises|NIL|NIL +promises|food|NIL +promises|housing|NIL +promises|conditions|NIL +better|NIL|NIL +food|NIL|NIL +food|better|NIL +housing|NIL|NIL +working|NIL|NIL +conditions|NIL|NIL +conditions|working|NIL +wave|NIL|NIL +wave|unrest|NIL +unrest|NIL|NIL +they|NIL|NIL +launched|NIL|NIL +launched|wave|ARG0 +launched|they|ARG0 +continued|NIL|NIL +continued|regions|ARGM-LOC +other|NIL|NIL +key|NIL|NIL +coal|NIL|NIL +regions|NIL|NIL +regions|other|NIL +regions|key|NIL +regions|coal|NIL +11/03/1989|NIL|NIL +Thousands|NIL|NIL +Thousands|11/03/1989|NIL +Thousands|miners|NIL +miners|NIL|NIL +miners|region|NIL +northern|NIL|NIL +Vorkuta|NIL|NIL +region|NIL|NIL +region|northern|NIL +region|Vorkuta|NIL +expanding|NIL|NIL +expanding|Thousands|ARG0 +expanding|strike|ARG1 +their|NIL|NIL +strike|NIL|NIL +strike|their|NIL +blocking|NIL|NIL +blocking|some|ARG0 +blocking|shipments|ARG1 +coal|NIL|NIL +shipments|NIL|NIL +shipments|coal|NIL +Soviet|NIL|NIL +news|NIL|NIL +media|NIL|NIL +media|Soviet|NIL +media|news|NIL +reported|NIL|NIL +reported|media|ARG0 +reported|11/03/1989|ARGM-TMP +11/03/1989|NIL|NIL +11/03/1989|NIL|NIL +Coal|NIL|NIL +miners|NIL|NIL +miners|11/03/1989|NIL +miners|Coal|NIL +miners|region|NIL +miners|Ukraine|NIL +northern|NIL|NIL +region|NIL|NIL +region|northern|NIL +Ukraine|NIL|NIL +struck|NIL|NIL +struck|miners|ARG0 +struck|weeks|ARGM-TMP +struck|summer|ARGM-TMP +two|NIL|NIL +weeks|NIL|NIL +weeks|two|NIL +summer|NIL|NIL +summer|this|NIL +returned|NIL|NIL +returned|miners|ARG0 +returned|work|ARG1 +work|NIL|NIL +work|July|ARGM-TMP +work|passed|ARGM-TMP +July|NIL|NIL +parliament|NIL|NIL +passed|NIL|NIL +passed|parliament|ARG0 +passed|resolution|ARG1 +resolution|NIL|NIL +resolution|a|NIL +promising|NIL|NIL +promising|resolution|ARG0 +promising|reforms|ARG2 +reforms|NIL|NIL +reforms|conditions|NIL +including|NIL|NIL +improved|NIL|NIL +social|NIL|NIL +economic|NIL|NIL +conditions|NIL|NIL +conditions|improved|NIL +conditions|social|NIL +conditions|economic|NIL +06/29/1994|NIL|NIL +strike|NIL|NIL +continued|NIL|NIL +continued|strike|ARG1 +continued|mines|ARGM-LOC +continued|June|ARGM-TMP +mines|NIL|NIL +mines|these|NIL +28|NIL|NIL +June|NIL|NIL +June|28|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D081.M.100.A.D.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D081.M.100.A.D.be new file mode 100644 index 0000000000000000000000000000000000000000..257a5bb564b05b54b25c129c4a1d45c096a96af8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D081.M.100.A.D.be @@ -0,0 +1,106 @@ +Miners|NIL|NIL +Miners|world|NIL +world|NIL|NIL +used|NIL|NIL +used|Miners|ARG0 +used|strikes|ARG1 +used|achieve|ARG2 +used|gain|ARG2 +used|achieve|ARG2 +strikes|NIL|NIL +not|NIL|NIL +only|NIL|NIL +only|not|NIL +achieve|NIL|NIL +achieve|gains|ARG1 +economic|NIL|NIL +gains|NIL|NIL +gains|economic|NIL +also|NIL|NIL +gain|NIL|NIL +gain|control|ARG1 +greater|NIL|NIL +control|NIL|NIL +control|greater|NIL +control|industries|NIL +their|NIL|NIL +industries|NIL|NIL +industries|their|NIL +achieve|NIL|NIL +achieve|ends|ARG1 +political|NIL|NIL +ends|NIL|NIL +ends|political|NIL +Miners|NIL|NIL +Miners|Poland|NIL +Miners|Romania|NIL +Miners|region|NIL +Poland|NIL|NIL +Romania|NIL|NIL +region|NIL|NIL +region|every|NIL +region|Union|NIL +Soviet|NIL|NIL +Union|NIL|NIL +Union|Soviet|NIL +struck|NIL|NIL +struck|Miners|ARG0 +higher|NIL|NIL +wages|NIL|NIL +wages|higher|NIL +wages|also|NIL +better|NIL|NIL +living|NIL|NIL +conditions|NIL|NIL +conditions|better|NIL +conditions|living|NIL +conditions|also|NIL +also|NIL|NIL +more|NIL|NIL +local|NIL|NIL +control|NIL|NIL +control|also|NIL +control|more|NIL +control|local|NIL +Poland|NIL|NIL +miners|NIL|NIL +struck|NIL|NIL +struck|Poland|ARGM-LOC +struck|miners|ARG0 +struck|legalization|ARG2 +legalization|NIL|NIL +legalization|Solidarity|NIL +Solidarity|NIL|NIL +South|NIL|NIL +Africa|NIL|NIL +Africa|South|NIL +miners|NIL|NIL +miners|Africa|NIL +struck|NIL|NIL +struck|miners|ARG1 +better|NIL|NIL +wages|NIL|NIL +wages|better|NIL +working|NIL|NIL +conditions|NIL|NIL +conditions|working|NIL +U.S.|NIL|NIL +miners|NIL|NIL +walked|NIL|NIL +walked|job|ARG1 +job|NIL|NIL +sympathy|NIL|NIL +sympathy|miners|NIL +fellow|NIL|NIL +miners|NIL|NIL +miners|fellow|NIL +miners|dispute|NIL +bitter|NIL|NIL +dispute|NIL|NIL +dispute|a|NIL +dispute|bitter|NIL +dispute|company|NIL +coal|NIL|NIL +company|NIL|NIL +company|a|NIL +company|coal|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D082.M.100.A.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D082.M.100.A.26.be new file mode 100644 index 0000000000000000000000000000000000000000..2078b730c30011a431fc9d15b5757d850ccf43af --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D082.M.100.A.26.be @@ -0,0 +1,123 @@ +05/12/1988|NIL|NIL +Soviet|NIL|NIL +newspaper|NIL|NIL +newspaper|A|NIL +newspaper|Soviet|NIL +painted|NIL|NIL +painted|newspaper|ARG0 +painted|portrait|ARG1 +painted|countering|ARGM-ADV +highly|NIL|NIL +sympathetic|NIL|NIL +sympathetic|highly|NIL +portrait|NIL|NIL +portrait|a|NIL +portrait|sympathetic|NIL +portrait|Sakharov|NIL +portrait|Bonner|NIL +Andrei|NIL|NIL +D.|NIL|NIL +Sakharov|NIL|NIL +Sakharov|Andrei|NIL +Sakharov|D.|NIL +Yelena|NIL|NIL +Bonner|NIL|NIL +Bonner|Yelena|NIL +countering|NIL|NIL +countering|attacks|ARG1 +past|NIL|NIL +attacks|NIL|NIL +attacks|past|NIL +attacks|couple|NIL +dissident|NIL|NIL +couple|NIL|NIL +couple|dissident|NIL +once|NIL|NIL +branded|NIL|NIL +branded|couple|ARG1 +branded|once|ARGM-TMP +branded|traitors|ARG2 +branded|media|ARG0 +traitors|NIL|NIL +state-run|NIL|NIL +media|NIL|NIL +media|state-run|NIL +05/12/1988|NIL|NIL +then|NIL|NIL +Sakharov|NIL|NIL +was|Sakharov|AUX-SBJ +was|one|AUX-PRD +one|NIL|NIL +one|creators|NIL +creators|NIL|NIL +creators|bomb|NIL +his|NIL|NIL +nation|NIL|NIL +nation|his|NIL +hydrogen|NIL|NIL +bomb|NIL|NIL +bomb|nation|NIL +bomb|hydrogen|NIL +vocally|NIL|NIL +supported|NIL|NIL +supported|then|ARGM-TMP +supported|Sakharov|ARG0 +supported|vocally|ARGM-MNR +Soviet|NIL|NIL +leader|NIL|NIL +leader|Soviet|NIL +leader|Mikhail|NIL +leader|S.|NIL +leader|Gorbachev|NIL +Mikhail|NIL|NIL +S.|NIL|NIL +Gorbachev|NIL|NIL +'s|leader|AUX-SBJ +reform|NIL|NIL +campaign|NIL|NIL +campaign|reform|NIL +called|NIL|NIL +called|then|ARGM-TMP +called|Sakharov|ARG0 +called|liberation|ARG1 +liberation|NIL|NIL +liberation|prisoners|NIL +liberation|improvements|NIL +political|NIL|NIL +prisoners|NIL|NIL +prisoners|all|NIL +prisoners|political|NIL +more|NIL|NIL +improvements|NIL|NIL +improvements|more|NIL +improvements|field|NIL +field|NIL|NIL +field|rights|NIL +human|NIL|NIL +rights|NIL|NIL +rights|human|NIL +12/16/1989|NIL|NIL +obituary|NIL|NIL +noted|NIL|NIL +noted|obituary|ARG0 +Sakharov|NIL|NIL +exiled|NIL|NIL +exiled|Sakharov|ARG1 +exiled|city|ARGM-LOC +exiled|miles|ARG2 +industrial|NIL|NIL +city|NIL|NIL +city|industrial|NIL +city|Gorky|NIL +Gorky|NIL|NIL +250|NIL|NIL +miles|NIL|NIL +miles|250|NIL +miles|east|NIL +miles|1980|NIL +miles|1986|NIL +east|NIL|NIL +east|Moscow|NIL +Moscow|NIL|NIL +1980|NIL|NIL +1986|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D082.M.100.A.C.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D082.M.100.A.C.be new file mode 100644 index 0000000000000000000000000000000000000000..46c946ce0a0b7021cbb9bbf73958fe5a2d1b3fee --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D082.M.100.A.C.be @@ -0,0 +1,130 @@ +Andrei|NIL|NIL +Sakharov|NIL|NIL +Sakharov|Andrei|NIL +was|Sakharov|AUX-SBJ +was|physicist|AUX-PRD +physicist|NIL|NIL +physicist|a|NIL +helped|NIL|NIL +helped|physicist|ARG0 +develop|NIL|NIL +develop|bomb|ARG1 +Soviet|NIL|NIL +hydrogen|NIL|NIL +bomb|NIL|NIL +bomb|Soviet|NIL +bomb|hydrogen|NIL +He|NIL|NIL +later|NIL|NIL +gained|NIL|NIL +gained|He|ARG0 +gained|later|ARGM-TMP +gained|fame|ARG1 +gained|rights|ARG2 +gained|winner|ARG2 +widespread|NIL|NIL +fame|NIL|NIL +fame|widespread|NIL +human|NIL|NIL +rights|NIL|NIL +rights|a|NIL +rights|human|NIL +rights|advocate|NIL +advocate|NIL|NIL +1979|NIL|NIL +winner|NIL|NIL +winner|1979|NIL +winner|Prize|NIL +Nobel|NIL|NIL +Peace|NIL|NIL +Prize|NIL|NIL +Prize|Nobel|NIL +Prize|Peace|NIL +His|NIL|NIL +constant|NIL|NIL +criticism|NIL|NIL +criticism|His|NIL +criticism|constant|NIL +irked|NIL|NIL +irked|criticism|ARG0 +irked|Kremlin|ARG1 +Kremlin|NIL|NIL +1980|NIL|NIL +he|NIL|NIL +criticized|NIL|NIL +criticized|1980|ARGM-TMP +criticized|he|ARG0 +criticized|invasion|ARG1 +invasion|NIL|NIL +invasion|Afghanistan|NIL +Afghanistan|NIL|NIL +Breznev|NIL|NIL +exiled|NIL|NIL +exiled|Breznev|ARG0 +exiled|him|ARG1 +exiled|Gorky|ARG2 +him|NIL|NIL +Gorky|NIL|NIL +Gorbachev|NIL|NIL +freed|NIL|NIL +freed|Gorbachev|ARG0 +freed|him|ARG1 +freed|1986|ARGM-TMP +him|NIL|NIL +1986|NIL|NIL +Sakharov|NIL|NIL +praised|NIL|NIL +praised|Sakharov|ARG0 +praised|Gorbachev|ARG1 +praised|affairs|ARG1 +Gorbachev|NIL|NIL +foreign|NIL|NIL +affairs|NIL|NIL +affairs|foreign|NIL +criticized|NIL|NIL +criticized|Sakharov|ARG0 +criticized|policies|ARG1 +his|NIL|NIL +economic|NIL|NIL +policies|NIL|NIL +policies|his|NIL +policies|economic|NIL +Sakharov|NIL|NIL +elected|NIL|NIL +elected|Sakharov|ARG1 +elected|Congress|ARG2 +Soviet|NIL|NIL +Congress|NIL|NIL +Congress|Soviet|NIL +Congress|Deputies|NIL +People|NIL|NIL +Deputies|NIL|NIL +Deputies|People|NIL +Deputies|April|NIL +April|NIL|NIL +April|1989|NIL +1989|NIL|NIL +Sakharov|NIL|NIL +died|NIL|NIL +died|Sakharov|ARG1 +died|suddenly|ARGM-MNR +died|December|ARGM-TMP +suddenly|NIL|NIL +14|NIL|NIL +December|NIL|NIL +December|1989|NIL +1989|NIL|NIL +His|NIL|NIL +obituary|NIL|NIL +obituary|His|NIL +signed|NIL|NIL +signed|obituary|ARG1 +signed|Gorbachev|ARG0 +Gorbachev|NIL|NIL +was|obituary|AUX-SBJ +was|tantamount|AUX-PRD +tantamount|NIL|NIL +tantamount|apology|NIL +public|NIL|NIL +apology|NIL|NIL +apology|public|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D083.M.100.A.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D083.M.100.A.26.be new file mode 100644 index 0000000000000000000000000000000000000000..ee3d05a894993ee64b0a23a7dc322fea25017864 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D083.M.100.A.26.be @@ -0,0 +1,141 @@ +11/16/1989|NIL|NIL +11/16/1989|'s|NIL +It|NIL|NIL +'s|It|AUX-SBJ +total|NIL|NIL +destruction|NIL|NIL +destruction|total|NIL +tornado|NIL|NIL +hit|NIL|NIL +hit|tornado|ARG0 +11/16/1989|NIL|NIL +_|NIL|NIL +Alabama|NIL|NIL +Alabama|11/16/1989|NIL +Alabama|_|NIL +Seventeen|NIL|NIL +people|NIL|NIL +people|Seventeen|NIL +killed|NIL|NIL +killed|people|ARG1 +killed|Huntsville|ARGM-LOC +killed|11/15/1989|ARGM-TMP +Huntsville|NIL|NIL +11/15/1989|NIL|NIL +11/15/1989|touched|NIL +tornado|NIL|NIL +tornado|a|NIL +touched|NIL|NIL +touched|tornado|ARG0 +touched|down|ARGM-DIR +touched|hour|ARGM-TMP +touched|causing|ARGM-ADV +just|NIL|NIL +rush|NIL|NIL +hour|NIL|NIL +hour|just|NIL +hour|rush|NIL +causing|NIL|NIL +causing|damage|ARG1 +major|NIL|NIL +damage|NIL|NIL +damage|major|NIL +11/16/1989|NIL|NIL +Three|NIL|NIL +people|NIL|NIL +people|11/16/1989|NIL +people|Three|NIL +injured|NIL|NIL +injured|people|ARG1 +injured|tornado|ARGM-LOC +earlier|NIL|NIL +tornado|NIL|NIL +tornado|an|NIL +tornado|earlier|NIL +tornado|County|NIL +Clay|NIL|NIL +County|NIL|NIL +County|Clay|NIL +County|Alabama|NIL +eastern|NIL|NIL +Alabama|NIL|NIL +Alabama|eastern|NIL +11/16/1989|NIL|NIL +11/16/1989|storm|NIL +violent|NIL|NIL +storm|NIL|NIL +storm|A|NIL +storm|violent|NIL +spun|NIL|NIL +spun|storm|ARG1 +spun|blew|ARG1 +tornadoes|NIL|NIL +tornadoes|South|NIL +tornadoes|Midwest|NIL +South|NIL|NIL +Midwest|NIL|NIL +blew|NIL|NIL +blew|tornadoes|ARG0 +blew|north|ARGM-MNR +blew|11/16/1989|ARGM-TMP +blew|knocking|ARGM-ADV +north|NIL|NIL +11/16/1989|NIL|NIL +knocking|NIL|NIL +knocking|down|rel +knocking|top|ARG1 +cafeteria|NIL|NIL +wall|NIL|NIL +wall|a|NIL +wall|cafeteria|NIL +down|NIL|NIL +top|NIL|NIL +lunching|NIL|NIL +lunching|schoolchildren|ARG1 +schoolchildren|NIL|NIL +schoolchildren|York|NIL +upstate|NIL|NIL +New|NIL|NIL +York|NIL|NIL +York|upstate|NIL +York|New|NIL +11/16/1989|NIL|NIL +Seventeen|NIL|NIL +people|NIL|NIL +people|11/16/1989|NIL +people|Seventeen|NIL +died|NIL|NIL +died|people|ARG1 +died|11/15/1989|ARGM-TMP +died|Huntsville|ARGM-LOC +11/15/1989|NIL|NIL +Huntsville|NIL|NIL +Huntsville|Ala.|NIL +Ala.|NIL|NIL +tornado|NIL|NIL +tornado|a|NIL +packing|NIL|NIL +packing|tornado|ARG0 +packing|winds|ARG1 +250|NIL|NIL +mph|NIL|NIL +mph|250|NIL +winds|NIL|NIL +winds|mph|NIL +struck|NIL|NIL +struck|tornado|ARG0 +struck|warning|ARGM-MNR +struck|laying|ARGM-ADV +virtually|NIL|NIL +warning|NIL|NIL +warning|virtually|NIL +laying|NIL|NIL +laying|waste|ARG1 +laying|swath|ARG2 +waste|NIL|NIL +wide|NIL|NIL +swath|NIL|NIL +swath|a|NIL +swath|wide|NIL +swath|city|NIL +city|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D083.M.100.A.G.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D083.M.100.A.G.be new file mode 100644 index 0000000000000000000000000000000000000000..df3dfad4c344416b51f4b73dc8111f835883764e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D083.M.100.A.G.be @@ -0,0 +1,133 @@ +powerful|NIL|NIL +storm|NIL|NIL +system|NIL|NIL +system|A|NIL +system|powerful|NIL +system|storm|NIL +brought|NIL|NIL +brought|system|ARG0 +brought|tornadoes|ARG1 +brought|winds|ARG1 +brought|thunderstorms|ARG1 +brought|hailstones|ARG1 +brought|Midwest|ARG2 +brought|Mississippi|ARG2 +brought|Valley|ARG2 +brought|Southeast|ARG2 +brought|Northeast|ARG2 +brought|Wednesday|ARGM-TMP +brought|Thursday|ARGM-TMP +tornadoes|NIL|NIL +high|NIL|NIL +winds|NIL|NIL +winds|high|NIL +heavy|NIL|NIL +thunderstorms|NIL|NIL +thunderstorms|heavy|NIL +large|NIL|NIL +hailstones|NIL|NIL +hailstones|large|NIL +Midwest|NIL|NIL +Mississippi|NIL|NIL +Valley|NIL|NIL +Southeast|NIL|NIL +Northeast|NIL|NIL +Wednesday|NIL|NIL +Thursday|NIL|NIL +Twenty-seven|NIL|NIL +people|NIL|NIL +people|Twenty-seven|NIL +killed|NIL|NIL +killed|people|ARG1 +more|NIL|NIL +than|more|NIL +than|500|NIL +500|NIL|NIL +injured|NIL|NIL +injured|than|ARG1 +hundreds|NIL|NIL +left|NIL|NIL +left|hundreds|ARG0 +left|homeless|ARG2 +homeless|NIL|NIL +tornadoes|NIL|NIL +struck|NIL|NIL +struck|tornadoes|ARG0 +struck|states|ARGM-LOC +mostly|NIL|NIL +Midwestern|NIL|NIL +Southeastern|NIL|NIL +states|NIL|NIL +devastating|NIL|NIL +tornado|NIL|NIL +tornado|A|NIL +tornado|devastating|NIL +struck|NIL|NIL +struck|tornado|ARG0 +struck|Huntsville|ARG1 +struck|laying|ARGM-ADV +struck|causing|ARGM-ADV +Huntsville|NIL|NIL +Huntsville|AL|NIL +AL|NIL|NIL +laying|NIL|NIL +laying|waste|ARG1 +laying|swath|ARG2 +waste|NIL|NIL +wide|NIL|NIL +swath|NIL|NIL +swath|a|NIL +swath|wide|NIL +swath|city|NIL +city|NIL|NIL +causing|NIL|NIL +causing|death|ARG1 +death|NIL|NIL +14|NIL|NIL +people|NIL|NIL +people|14|NIL +tornado|NIL|NIL +tornado|A|NIL +killed|NIL|NIL +killed|tornado|ARG0 +killed|people|ARG1 +killed|Georgia|ARGM-LOC +four|NIL|NIL +people|NIL|NIL +people|four|NIL +Palmetto|NIL|NIL +Georgia|NIL|NIL +Georgia|Palmetto|NIL +Heavy|NIL|NIL +winds|NIL|NIL +winds|Heavy|NIL +caused|NIL|NIL +caused|winds|ARG0 +caused|death|ARG1 +death|NIL|NIL +death|children|NIL +seven|NIL|NIL +children|NIL|NIL +children|seven|NIL +children|school|NIL +school|NIL|NIL +school|a|NIL +school|NY|NIL +Newburgh|NIL|NIL +NY|NIL|NIL +NY|Newburgh|NIL +NY|person|NIL +one|NIL|NIL +person|NIL|NIL +person|one|NIL +person|NJ|NIL +Elizabeth|NIL|NIL +NJ|NIL|NIL +NJ|Elizabeth|NIL +NJ|another|NIL +another|City|NIL +New|NIL|NIL +York|NIL|NIL +City|NIL|NIL +City|New|NIL +City|York|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D084.M.100.A.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D084.M.100.A.26.be new file mode 100644 index 0000000000000000000000000000000000000000..9bc33c11d0c34a4c7281aa01d30f51537f4ca066 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D084.M.100.A.26.be @@ -0,0 +1,119 @@ +04/21/1989|NIL|NIL +Investigators|NIL|NIL +Investigators|04/21/1989|NIL +Investigators|Iowa|NIL +USS|NIL|NIL +Iowa|NIL|NIL +Iowa|USS|NIL +searched|NIL|NIL +searched|Investigators|ARG0 +searched|clues|ARG1 +clues|NIL|NIL +clues|cause|NIL +cause|NIL|NIL +cause|explosion|NIL +fiery|NIL|NIL +explosion|NIL|NIL +explosion|a|NIL +explosion|fiery|NIL +claimed|NIL|NIL +lives|NIL|NIL +lives|sailors|NIL +47|NIL|NIL +sailors|NIL|NIL +sailors|47|NIL +sailors|battleship|NIL +damaged|NIL|NIL +damaged|battleship|ARG1 +battleship|NIL|NIL +headed|NIL|NIL +headed|battleship|ARG1 +headed|families|ARG1 +home|NIL|NIL +grief-stricken|NIL|NIL +grief-stricken|home|NIL +families|NIL|NIL +families|grief-stricken|NIL +dealt|NIL|NIL +dealt|families|ARG1 +dealt|loss|ARG1 +loss|NIL|NIL +loss|ones|NIL +their|NIL|NIL +loved|NIL|NIL +loved|ones|ARG1 +ones|NIL|NIL +ones|their|NIL +04/22/1989|NIL|NIL +Hundreds|NIL|NIL +Hundreds|04/22/1989|NIL +Hundreds|people|NIL +people|NIL|NIL +gathered|NIL|NIL +gathered|honor|ARGM-PNC +honor|NIL|NIL +honor|sailors|ARG1 +47|NIL|NIL +sailors|NIL|NIL +sailors|47|NIL +died|NIL|NIL +died|sailors|ARG1 +died|Iowa|ARGM-LOC +died|victims|ARGM-MNR +USS|NIL|NIL +Iowa|NIL|NIL +Iowa|USS|NIL +victims|NIL|NIL +victims|tragedy|NIL +tragedy|NIL|NIL +tragedy|a|NIL +reaches|NIL|NIL +reaches|tragedy|ARG0 +reaches|towns|ARG1 +little|NIL|NIL +towns|NIL|NIL +towns|little|NIL +towns|country|NIL +all|NIL|NIL +country|NIL|NIL +country|all|NIL +04/24/1989|NIL|NIL +Navy|NIL|NIL +investigators|NIL|NIL +investigators|04/24/1989|NIL +investigators|Navy|NIL +looking|NIL|NIL +looking|investigators|ARG0 +possibilities|NIL|NIL +possibilities|all|NIL +possibilities|error|NIL +possibilities|effort|NIL +human|NIL|NIL +mechanical|NIL|NIL +error|NIL|NIL +error|human|NIL +error|mechanical|NIL +their|NIL|NIL +effort|NIL|NIL +effort|human|NIL +effort|mechanical|NIL +effort|their|NIL +determine|NIL|NIL +determine|caused|ARG1 +caused|NIL|NIL +caused|explosion|ARG1 +explosion|NIL|NIL +killed|NIL|NIL +killed|explosion|ARG0 +killed|47|ARG1 +47|NIL|NIL +47|battleship|NIL +47|Iowa|NIL +battleship|NIL|NIL +USS|NIL|NIL +Iowa|NIL|NIL +Iowa|USS|NIL +officials|NIL|NIL +say|NIL|NIL +say|looking|ARG1 +say|officials|ARG0 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D084.M.100.A.H.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D084.M.100.A.H.be new file mode 100644 index 0000000000000000000000000000000000000000..9ddd7579e862d550208de21e0b23e613931207de --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D084.M.100.A.H.be @@ -0,0 +1,139 @@ +explosion|NIL|NIL +explosion|An|NIL +explosion|battleship|NIL +battleship|NIL|NIL +Iowa|NIL|NIL +No.|NIL|NIL +2|NIL|NIL +turret|NIL|NIL +turret|Iowa|NIL +turret|No.|NIL +turret|2|NIL +turret|Wednesday|NIL +Wednesday|NIL|NIL +Wednesday|April|NIL +April|NIL|NIL +April|19|NIL +April|1989|NIL +19|NIL|NIL +1989|NIL|NIL +training|NIL|NIL +exercise|NIL|NIL +NE|NIL|NIL +NE|a|NIL +NE|training|NIL +NE|exercise|NIL +NE|Rico|NIL +Puerto|NIL|NIL +Rico|NIL|NIL +Rico|Puerto|NIL +killed|NIL|NIL +killed|explosion|ARG0 +killed|turret|ARG0 +killed|NE|ARGM-TMP +killed|47|ARG1 +47|NIL|NIL +Naval|NIL|NIL +investigators|NIL|NIL +investigators|Naval|NIL +concluded|NIL|NIL +concluded|investigators|ARG0 +concluded|occurred|ARG1 +explosion|NIL|NIL +occurred|NIL|NIL +occurred|explosion|ARG1 +occurred|was|ARGM-ADV +gunpowder|NIL|NIL +was|gunpowder|AUX-SBJ +was|transit|AUX-LOC +transit|NIL|NIL +transit|hoist|NIL +powder|NIL|NIL +hoist|NIL|NIL +hoist|a|NIL +hoist|powder|NIL +Thousands|NIL|NIL +welcomed|NIL|NIL +welcomed|home|ARG1 +welcomed|Norfolk|ARG2 +welcomed|Sunday|ARGM-TMP +welcomed|sailors|ARGM-MNR +Iowa|NIL|NIL +home|NIL|NIL +home|Iowa|NIL +Norfolk|NIL|NIL +Sunday|NIL|NIL +sailors|NIL|NIL +sailors|bands|NIL +black|NIL|NIL +arm|NIL|NIL +bands|NIL|NIL +bands|black|NIL +bands|arm|NIL +lining|NIL|NIL +lining|bands|ARG0 +lining|rails|ARG1 +ship|NIL|NIL +rails|NIL|NIL +rails|ship|NIL +surviving|NIL|NIL +surviving|bands|ARG0 +surviving|standing|ARGM-ADV +guncrew|NIL|NIL +members|NIL|NIL +members|guncrew|NIL +standing|NIL|NIL +standing|No.|ARG2 +blackened|NIL|NIL +blackened|No.|ARG1 +No.|NIL|NIL +2|NIL|NIL +turret|NIL|NIL +turret|2|NIL +Monday|NIL|NIL +President|NIL|NIL +Bush|NIL|NIL +Bush|President|NIL +spoke|NIL|NIL +spoke|Monday|ARGM-TMP +spoke|Bush|ARG0 +spoke|mourners|ARG2 +spoke|service|ARGM-LOC +mourners|NIL|NIL +Norfolk|NIL|NIL +memorial|NIL|NIL +service|NIL|NIL +service|a|NIL +service|Norfolk|NIL +service|memorial|NIL +moratorium|NIL|NIL +moratorium|A|NIL +placed|NIL|NIL +placed|moratorium|ARG1 +placed|firing|ARG1 +firing|NIL|NIL +WWII-era|NIL|NIL +16-inch|NIL|NIL +guns|NIL|NIL +guns|WWII-era|NIL +guns|16-inch|NIL +criticized|NIL|NIL +criticized|guns|ARG1 +criticized|as|ARGM-PRD +as|outdated|NIL +as|dangerous|NIL +outdated|NIL|NIL +dangerous|NIL|NIL +Senate|NIL|NIL +Armed|NIL|NIL +Services|NIL|NIL +Committee|NIL|NIL +Committee|Senate|NIL +Committee|Armed|NIL +Committee|Services|NIL +hold|NIL|NIL +hold|Committee|ARG0 +hold|hearings|ARG1 +hearings|NIL|NIL +hearings|explosion|NIL +explosion|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D085.M.100.D.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D085.M.100.D.26.be new file mode 100644 index 0000000000000000000000000000000000000000..dc9c9a51713cd50e0bb460c3b1f4b00bed292d56 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D085.M.100.D.26.be @@ -0,0 +1,133 @@ +09/22/1989|NIL|NIL +09/22/1989|Sheets|NIL +Hurricane|NIL|NIL +Sheets|NIL|NIL +Sheets|Hurricane|NIL +09/22/1989|NIL|NIL +But|NIL|NIL +hurricane|NIL|NIL +tracking|NIL|NIL +tracking|09/22/1989|NIL +tracking|But|NIL +tracking|hurricane|NIL +remains|NIL|NIL +remains|science|ARG3 +uncertain|NIL|NIL +science|NIL|NIL +science|an|NIL +science|uncertain|NIL +09/23/1989|NIL|NIL +greenhouse|NIL|NIL +effect|NIL|NIL +effect|greenhouse|NIL +breed|NIL|NIL +breed|hurricanes|ARG1 +breed|future|ARGM-LOC +bigger|NIL|NIL +deadlier|NIL|NIL +hurricanes|NIL|NIL +hurricanes|bigger|NIL +hurricanes|deadlier|NIL +future|NIL|NIL +storms|NIL|NIL +storms|stronger|NIL +up|to|NIL +up|50|NIL +50|NIL|NIL +percent|NIL|NIL +percent|up|NIL +stronger|NIL|NIL +stronger|percent|NIL +stronger|Hugo|NIL +stronger|year|NIL +Hugo|NIL|NIL +last|NIL|NIL +year|NIL|NIL +year|last|NIL +year|1988|NIL +1988|NIL|NIL +'s|breed|ARGM-ADV +'s|storms|AUX-SBJ +record-setting|NIL|NIL +Gilbert|NIL|NIL +Gilbert|record-setting|NIL +meteorologists|NIL|NIL +meteorologists|some|NIL +say|NIL|NIL +say|meteorologists|ARG0 +09/25/1989|NIL|NIL +Residents|NIL|NIL +Residents|09/25/1989|NIL +took|NIL|NIL +took|Residents|ARG0 +took|forecasters|ARG1 +took|word|ARGM-LOC +took|warned|ARGM-TMP +forecasters|NIL|NIL +their|NIL|NIL +word|NIL|NIL +word|their|NIL +they|NIL|NIL +warned|NIL|NIL +warned|they|ARG0 +warned|fury|ARG1 +Hurricane|NIL|NIL +Hugo|NIL|NIL +Hugo|Hurricane|NIL +fury|NIL|NIL +fury|Hugo|NIL +low|NIL|NIL +number|NIL|NIL +number|low|NIL +number|deaths|NIL +deaths|NIL|NIL +deaths|storm|NIL +powerful|NIL|NIL +storm|NIL|NIL +storm|powerful|NIL +credited|NIL|NIL +credited|number|ARG1 +credited|respect|ARG2 +healthy|NIL|NIL +respect|NIL|NIL +respect|this|NIL +respect|healthy|NIL +authorities|NIL|NIL +said|NIL|NIL +said|authorities|ARG0 +09/25/1989|NIL|NIL +storm|NIL|NIL +caused|NIL|NIL +caused|storm|ARG0 +caused|billions|ARG1 +billions|NIL|NIL +billions|damage|NIL +damage|NIL|NIL +claimed|NIL|NIL +claimed|storm|ARG0 +claimed|Carolina|ARGM-LOC +17|NIL|NIL +lives|NIL|NIL +lives|17|NIL +South|NIL|NIL +Carolina|NIL|NIL +Carolina|South|NIL +only|NIL|NIL +only|two|NIL +two|NIL|NIL +were|only|AUX-SBJ +were|area|AUX-LOC +Charleston|NIL|NIL +area|NIL|NIL +area|Charleston|NIL +bore|NIL|NIL +bore|brunt|ARG1 +brunt|NIL|NIL +brunt|winds|NIL +Hugo|NIL|NIL +135|NIL|NIL +mph|NIL|NIL +mph|135|NIL +winds|NIL|NIL +winds|Hugo|NIL +winds|mph|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D085.M.100.D.H.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D085.M.100.D.H.be new file mode 100644 index 0000000000000000000000000000000000000000..12ddd690336174e6cd3b0dc5ee7ae6cc69d91ae7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D085.M.100.D.H.be @@ -0,0 +1,148 @@ +Category|NIL|NIL +Category|4|NIL +Category|Hugo|NIL +4|NIL|NIL +Hurricane|NIL|NIL +Hugo|NIL|NIL +Hugo|Hurricane|NIL +did|Category|AUX-SBJ +did|damage|ARG1 +did|winds|ARG2 +extensive|NIL|NIL +damage|NIL|NIL +damage|extensive|NIL +damage|Caribbean|NIL +eastern|NIL|NIL +Caribbean|NIL|NIL +Caribbean|eastern|NIL +Sep|NIL|NIL +Sep|17|NIL +Sep|1989|NIL +17|NIL|NIL +1989|NIL|NIL +21st|NIL|NIL +hit|NIL|NIL +hit|21st|NIL +Charleston|NIL|NIL +Charleston|Sep|NIL +Charleston|hit|NIL +Charleston|Carolina|NIL +South|NIL|NIL +Carolina|NIL|NIL +Carolina|South|NIL +135mph|NIL|NIL +winds|NIL|NIL +winds|135mph|NIL +It|NIL|NIL +killed|NIL|NIL +killed|It|ARG0 +killed|17|ARG1 +killed|state|ARGM-LOC +17|NIL|NIL +state|NIL|NIL +Coastal|NIL|NIL +residents|NIL|NIL +residents|Coastal|NIL +fled|NIL|NIL +fled|residents|ARG0 +fled|inland|ARGM-MNR +inland|NIL|NIL +crowded|NIL|NIL +crowded|residents|ARG0 +crowded|shelters|ARG1 +shelters|NIL|NIL +Satellites|NIL|NIL +computerized|NIL|NIL +tracking|NIL|NIL +model|NIL|NIL +model|a|NIL +model|computerized|NIL +Air|NIL|NIL +Force|NIL|NIL +reconnaissance|NIL|NIL +planes|NIL|NIL +planes|Air|NIL +planes|Force|NIL +planes|reconnaissance|NIL +helped|NIL|NIL +helped|Satellites|ARG0 +helped|model|ARG0 +helped|planes|ARG0 +helped|monitor|ARG1 +forecasters|NIL|NIL +forecasters|Center|NIL +National|NIL|NIL +Hurricane|NIL|NIL +Center|NIL|NIL +Center|National|NIL +Center|Hurricane|NIL +monitor|NIL|NIL +monitor|forecasters|ARG0 +monitor|progress|ARG1 +Hugo|NIL|NIL +progress|NIL|NIL +progress|Hugo|NIL +Pinpointing|NIL|NIL +landfall|NIL|NIL +landfall|Pinpointing|NIL +intensity|NIL|NIL +were|landfall|AUX-SBJ +were|intensity|AUX-SBJ +were|difficult|AUX-PRD +difficult|NIL|NIL +Billions|NIL|NIL +Billions|claims|NIL +insurance|NIL|NIL +claims|NIL|NIL +claims|insurance|NIL +made|NIL|NIL +made|Billions|ARG0 +made|Hugo|ARG1 +Hugo|NIL|NIL +Hugo|storm|NIL +most|NIL|NIL +expensive|NIL|NIL +expensive|most|NIL +storm|NIL|NIL +storm|expensive|NIL +storm|date|NIL +date|NIL|NIL +Ocean|NIL|NIL +warming|NIL|NIL +warming|Ocean|NIL +caused|NIL|NIL +caused|warming|ARG1 +caused|effect|ARG0 +greenhouse|NIL|NIL +effect|NIL|NIL +effect|greenhouse|NIL +increase|NIL|NIL +increase|warming|ARG0 +increase|power|ARG1 +future|NIL|NIL +storms|NIL|NIL +storms|future|NIL +destructive|NIL|NIL +power|NIL|NIL +power|storms|NIL +power|destructive|NIL +demonstrated|NIL|NIL +demonstrated|power|ARG1 +demonstrated|Hugo|ARG0 +demonstrated|jumping|ARGM-ADV +Hugo|NIL|NIL +jumping|NIL|NIL +jumping|105|ARG3 +105|NIL|NIL +105|135mph|NIL +135mph|NIL|NIL +135mph|passed|ARGM-ADV +winds|NIL|NIL +it|NIL|NIL +passed|NIL|NIL +passed|it|ARG1 +passed|over|rel +passed|Stream|ARG1 +Gulf|NIL|NIL +Stream|NIL|NIL +Stream|Gulf|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D086.M.100.D.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D086.M.100.D.26.be new file mode 100644 index 0000000000000000000000000000000000000000..6db73b053d0861cc6a99742cfd0cdd2e43a5dd53 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D086.M.100.D.26.be @@ -0,0 +1,148 @@ +08/02/1990|NIL|NIL +Tank-led|NIL|NIL +Iraqi|NIL|NIL +troops|NIL|NIL +troops|Tank-led|NIL +troops|Iraqi|NIL +invaded|NIL|NIL +invaded|troops|ARG0 +invaded|Kuwait|ARG1 +invaded|dawn|ARGM-TMP +invaded|08/02/1990|ARGM-TMP +invaded|seizing|ARGM-ADV +Kuwait|NIL|NIL +dawn|NIL|NIL +08/02/1990|NIL|NIL +seizing|NIL|NIL +seizing|ruler|ARG1 +seizing|palace|ARG1 +seizing|government|ARG1 +seizing|buildings|ARG1 +ruler|NIL|NIL +ruler|other|NIL +palace|NIL|NIL +palace|other|NIL +other|NIL|NIL +government|NIL|NIL +government|other|NIL +buildings|NIL|NIL +buildings|ruler|NIL +buildings|other|NIL +Kuwaiti|NIL|NIL +officials|NIL|NIL +officials|Kuwaiti|NIL +reported.|NIL|NIL +08/03/1990|NIL|NIL +Iraqi|NIL|NIL +President|NIL|NIL +Saddam|NIL|NIL +Hussein|NIL|NIL +Hussein|08/03/1990|NIL +Hussein|Iraqi|NIL +Hussein|President|NIL +Hussein|Saddam|NIL +seemed|NIL|NIL +seemed|reported.|ARGM-ADV +seemed|Hussein|ARG1 +determined|NIL|NIL +determined|solve|ARGM-PNC +determined|fulfill|ARG1 +solve|NIL|NIL +solve|problems|ARG1 +his|NIL|NIL +financial|NIL|NIL +problems|NIL|NIL +problems|his|NIL +problems|financial|NIL +fulfill|NIL|NIL +fulfill|ambitions|ARG1 +fulfill|dethroning|ARGM-MNR +territorial|NIL|NIL +ambitions|NIL|NIL +ambitions|territorial|NIL +dethroning|NIL|NIL +dethroning|government|ARG1 +government|NIL|NIL +government|Kuwait|NIL +neighboring|NIL|NIL +Kuwait|NIL|NIL +Kuwait|neighboring|NIL +08/03/1990|NIL|NIL +Here|NIL|NIL +is|08/03/1990|AUX-SBJ +is|Here|AUX-LOC +is|chronology|AUX-PRD +brief|NIL|NIL +chronology|NIL|NIL +chronology|a|NIL +chronology|brief|NIL +chronology|dispute|NIL +dispute|NIL|NIL +dispute|Iraq|NIL +dispute|Kuwait|NIL +dispute|production|NIL +dispute|border|NIL +Iraq|NIL|NIL +Kuwait|NIL|NIL +oil|NIL|NIL +production|NIL|NIL +production|oil|NIL +their|NIL|NIL +common|NIL|NIL +border|NIL|NIL +border|their|NIL +border|common|NIL +08/03/1990|NIL|NIL +July|NIL|NIL +July|08/03/1990|NIL +July|17|NIL +17|NIL|NIL +_|NIL|NIL +Iraqi|NIL|NIL +President|NIL|NIL +Saddam|NIL|NIL +Hussein|NIL|NIL +Hussein|July|NIL +Hussein|_|NIL +Hussein|Iraqi|NIL +Hussein|President|NIL +Hussein|Saddam|NIL +accuses|NIL|NIL +accuses|Hussein|ARG0 +accuses|Kuwait|ARG1 +accuses|Emirates|ARG1 +accuses|flooding|ARG2 +accuses|driving|ARG2 +Kuwait|NIL|NIL +United|NIL|NIL +Arab|NIL|NIL +Emirates|NIL|NIL +Emirates|United|NIL +Emirates|Arab|NIL +flooding|NIL|NIL +flooding|market|ARG1 +oil|NIL|NIL +market|NIL|NIL +market|oil|NIL +driving|NIL|NIL +driving|prices|ARG1 +driving|down|ARG2 +prices|NIL|NIL +down|NIL|NIL +move|NIL|NIL +cost|NIL|NIL +cost|move|ARG1 +cost|Iraq|ARG3 +cost|$|ARG2 +Iraq|NIL|NIL +$|NIL|NIL +$|14|NIL +$|billion|NIL +$|revenue|NIL +14|NIL|NIL +billion|NIL|NIL +lost|NIL|NIL +lost|revenue|ARG1 +oil|NIL|NIL +revenue|NIL|NIL +revenue|oil|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D086.M.100.D.B.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D086.M.100.D.B.be new file mode 100644 index 0000000000000000000000000000000000000000..acd464678a4ca56c9dd6a7bd5a7e000dc2e5a0ce --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D086.M.100.D.B.be @@ -0,0 +1,139 @@ +Saddam|NIL|NIL +accused|NIL|NIL +accused|Saddam|ARG0 +accused|Kuwait|ARG1 +accused|costing|ARG2 +Kuwait|NIL|NIL +costing|NIL|NIL +costing|billions|ARG2 +costing|driving|ARG2 +Iraq|NIL|NIL +billions|NIL|NIL +billions|Iraq|NIL +exceeding|NIL|NIL +exceeding|quotas|ARG0 +OPEC|NIL|NIL +production|NIL|NIL +quotas|NIL|NIL +quotas|OPEC|NIL +quotas|production|NIL +thus|NIL|NIL +driving|NIL|NIL +driving|quotas|ARG0 +driving|thus|ARGM-DIS +driving|down|ARG2 +driving|prices|ARG1 +oil|NIL|NIL +prices|NIL|NIL +prices|oil|NIL +He|NIL|NIL +further|NIL|NIL +accused|NIL|NIL +accused|He|ARG0 +accused|further|ARGM-EXT +accused|Kuwait|ARG1 +accused|stealing|ARG2 +Kuwait|NIL|NIL +stealing|NIL|NIL +stealing|oil|ARG1 +stealing|border|ARGM-LOC +Iraqi|NIL|NIL +oil|NIL|NIL +oil|Iraqi|NIL +oil|field|NIL +common|NIL|NIL +oil|NIL|NIL +field|NIL|NIL +field|a|NIL +field|common|NIL +field|oil|NIL +their|NIL|NIL +border|NIL|NIL +border|their|NIL +He|NIL|NIL +then|NIL|NIL +invaded|NIL|NIL +invaded|He|ARG0 +invaded|then|ARGM-TMP +invaded|Kuwait|ARG1 +invaded|claiming|ARGM-ADV +Kuwait|NIL|NIL +claiming|NIL|NIL +claiming|do|ARG1 +do|so|ARG1 +do|request|ARGM-MNR +so|NIL|NIL +request|NIL|NIL +request|leaders|NIL +Kuwaiti|NIL|NIL +revolutionary|NIL|NIL +coup|NIL|NIL +leaders|NIL|NIL +leaders|Kuwaiti|NIL +leaders|revolutionary|NIL +leaders|coup|NIL +United|NIL|NIL +United|States|NIL +States|NIL|NIL +led|NIL|NIL +led|United|ARG0 +led|world|ARG1 +led|United|ARG1 +led|Nations|ARG1 +led|denouncing|ARG1 +led|imposing|ARGM-ADV +western|NIL|NIL +world|NIL|NIL +world|western|NIL +United|NIL|NIL +United|western|NIL +Nations|NIL|NIL +Nations|western|NIL +calling|NIL|NIL +calling|coup|ARG1 +calling|sham|ARG1 +coup|NIL|NIL +sham|NIL|NIL +sham|a|NIL +denouncing|NIL|NIL +denouncing|invasion|ARG1 +invasion|NIL|NIL +invasion|this|NIL +imposing|NIL|NIL +imposing|Iraq|ARG2 +imposing|attempt|ARGM-PNC +strong|NIL|NIL +economic|NIL|NIL +military|NIL|NIL +sanctions|NIL|NIL +sanctions|strong|NIL +sanctions|economic|NIL +sanctions|military|NIL +Iraq|NIL|NIL +attempt|NIL|NIL +attempt|an|NIL +get|NIL|NIL +get|withdraw|ARG2 +them|NIL|NIL +withdraw|NIL|NIL +withdraw|them|ARG0 +Oil|NIL|NIL +prices|NIL|NIL +prices|Oil|NIL +surged|NIL|NIL +surged|prices|ARG1 +surged|warned|ARGM-ADV +Saddam|NIL|NIL +warned|NIL|NIL +warned|Saddam|ARG0 +warned|intervention|ARG1 +foreign|NIL|NIL +intervention|NIL|NIL +intervention|foreign|NIL +U.S.|NIL|NIL +dispatched|NIL|NIL +dispatched|U.S.|ARG0 +dispatched|warships|ARG1 +dispatched|area|ARG2 +warships|NIL|NIL +area|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D087.M.100.D.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D087.M.100.D.26.be new file mode 100644 index 0000000000000000000000000000000000000000..e07eb5b3ec2aeb702a0d501bf29354992e967f33 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D087.M.100.D.26.be @@ -0,0 +1,120 @@ +02/28/1988|NIL|NIL +02/28/1988|best|NIL +best|NIL|NIL +best|do|NIL +America|NIL|NIL +do|America|ARG0 +do|was|ARG1 +was|medals|AUX-PRD +six|NIL|NIL +medals|NIL|NIL +medals|six|NIL +medals|Games|NIL +its|NIL|NIL +worst|NIL|NIL +Winter|NIL|NIL +Games|NIL|NIL +Games|its|NIL +Games|worst|NIL +Games|Winter|NIL +showing|NIL|NIL +showing|Games|ARG0 +showing|years|ARGM-LOC +52|NIL|NIL +years|NIL|NIL +years|52|NIL +10/02/1988|NIL|NIL +1988|NIL|NIL +Summer|NIL|NIL +Olympics|NIL|NIL +Olympics|1988|NIL +Olympics|Summer|NIL +kept|NIL|NIL +kept|Olympics|ARG1 +kept|free|ARG1 +free|NIL|NIL +free|terrorism|NIL +terrorism|NIL|NIL +tainted|NIL|NIL +tainted|Olympics|ARG1 +tainted|scandals|ARG0 +drug|NIL|NIL +scandals|NIL|NIL +scandals|drug|NIL +closed|NIL|NIL +closed|Olympics|ARG1 +closed|pealing|ARGM-MNR +10/02/1988|NIL|NIL +pealing|NIL|NIL +pealing|bell|NIL +medieval|NIL|NIL +bell|NIL|NIL +bell|a|NIL +bell|medieval|NIL +symbolize|NIL|NIL +symbolize|sorrow|ARG1 +sorrow|NIL|NIL +sorrow|parting|NIL +parting|NIL|NIL +10/02/1988|NIL|NIL +East|NIL|NIL +Germany|NIL|NIL +Germany|East|NIL +had|10/02/1988|AUX-SBJ +had|Germany|AUX-SBJ +had|gold|ARG1 +had|United|ARG1 +had|medals|ARG1 +had|gold|ARG1 +102|NIL|NIL +medals|NIL|NIL +medals|102|NIL +37|NIL|NIL +gold|NIL|NIL +gold|37|NIL +United|NIL|NIL +United|States|NIL +States|NIL|NIL +94|NIL|NIL +medals|NIL|NIL +medals|94|NIL +36|NIL|NIL +gold|NIL|NIL +gold|36|NIL +08/08/1992|NIL|NIL +US|NIL|NIL +comfortably|NIL|NIL +won|NIL|NIL +won|US|ARG0 +won|comfortably|ARGM-MNR +won|medals|ARG1 +most|NIL|NIL +relay|NIL|NIL +medals|NIL|NIL +medals|most|NIL +medals|relay|NIL +followed|NIL|NIL +followed|medals|ARG2 +followed|Union|ARG0 +followed|Germany|ARG2 +followed|Germany|ARG2 +followed|France|ARG0 +followed|Canada|ARG2 +Britain|NIL|NIL +former|NIL|NIL +Soviet|NIL|NIL +Union|NIL|NIL +Union|former|NIL +Union|Soviet|NIL +former|NIL|NIL +West|NIL|NIL +Germany|NIL|NIL +Germany|former|NIL +Germany|West|NIL +former|NIL|NIL +East|NIL|NIL +Germany|NIL|NIL +Germany|former|NIL +Germany|East|NIL +France|NIL|NIL +Canada|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D087.M.100.D.B.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D087.M.100.D.B.be new file mode 100644 index 0000000000000000000000000000000000000000..158948ad51e33d1d29cc3515a3c37126837a557d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D087.M.100.D.B.be @@ -0,0 +1,131 @@ +world|NIL|NIL +world|competition|NIL +international|NIL|NIL +competition|NIL|NIL +competition|international|NIL +Olympics|NIL|NIL +are|Olympics|AUX-SBJ +are|special|AUX-PRD +special|NIL|NIL +It|NIL|NIL +is|It|AUX-SBJ +is|here|AUX-LOC +here|NIL|NIL +national|NIL|NIL +pride|NIL|NIL +pride|national|NIL +displayed|NIL|NIL +displayed|pride|ARG1 +individual|NIL|NIL +dreams|NIL|NIL +dreams|individual|NIL +realized|NIL|NIL +realized|dreams|ARG1 +fame|NIL|NIL +attained|NIL|NIL +attained|fame|ARG1 +summer|NIL|NIL +summer|Olympics|NIL +summer|gymnastics|NIL +summer|track|NIL +summer|field|NIL +summer|events|NIL +Olympics|NIL|NIL +its|NIL|NIL +gymnastics|NIL|NIL +gymnastics|its|NIL +track|NIL|NIL +field|NIL|NIL +swimming|NIL|NIL +events|NIL|NIL +events|swimming|NIL +showcase|NIL|NIL +showcase|summer|ARGM-TMP +showcase|superstars|ARG1 +superstars|NIL|NIL +superstars|Retton|NIL +superstars|Lewis|NIL +superstars|Joyner|NIL +superstars|Louganis|NIL +superstars|some|NIL +such|NIL|NIL +Mary|NIL|NIL +Lou|NIL|NIL +Retton|NIL|NIL +Retton|such|NIL +Retton|Mary|NIL +Retton|Lou|NIL +Carl|NIL|NIL +Lewis|NIL|NIL +Lewis|such|NIL +Lewis|Carl|NIL +Florence|NIL|NIL +Griffith|NIL|NIL +Joyner|NIL|NIL +Joyner|such|NIL +Joyner|Florence|NIL +Joyner|Griffith|NIL +Greg|NIL|NIL +Louganis|NIL|NIL +Louganis|such|NIL +Louganis|Greg|NIL +some|whom|NIL +capitalize|NIL|NIL +capitalize|fame|ARG1 +capitalize|glory|ARG1 +their|NIL|NIL +fame|NIL|NIL +fame|their|NIL +glory|NIL|NIL +glory|contracts|NIL +lucrative|NIL|NIL +advertising|NIL|NIL +contracts|NIL|NIL +contracts|lucrative|NIL +contracts|advertising|NIL +Winter|NIL|NIL +Olympics|NIL|NIL +Olympics|Winter|NIL +generally|NIL|NIL +highlight|NIL|NIL +highlight|Olympics|ARG0 +highlight|generally|ARGM-ADV +figure|NIL|NIL +skaters|NIL|NIL +skaters|figure|NIL +speed|NIL|NIL +skaters|NIL|NIL +skaters|speed|NIL +downhill|NIL|NIL +skiers|NIL|NIL +skiers|downhill|NIL +Sometimes|NIL|NIL +Olympian|NIL|NIL +Olympian|an|NIL +acquires|NIL|NIL +acquires|Sometimes|ARGM-TMP +acquires|Olympian|ARG0 +acquires|fame|ARG1 +acquires|happened|ARGM-ADV +lifelong|NIL|NIL +fame|NIL|NIL +fame|lifelong|NIL +happened|NIL|NIL +happened|Owens|ARG2 +Jesse|NIL|NIL +Owens|NIL|NIL +Owens|Jesse|NIL +1936|NIL|NIL +1936|soundly|NIL +soundly|NIL|NIL +defeated|NIL|NIL +defeated|Owens|ARG0 +defeated|1936|ARGM-TMP +defeated|competitors|ARG1 +Hitler|NIL|NIL +master|NIL|NIL +race|NIL|NIL +competitors|NIL|NIL +competitors|Hitler|NIL +competitors|master|NIL +competitors|race|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D089.M.100.D.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D089.M.100.D.26.be new file mode 100644 index 0000000000000000000000000000000000000000..00864fba6d3c03a05c20f0c39377e345203a24d5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D089.M.100.D.26.be @@ -0,0 +1,152 @@ +11/16/1989|NIL|NIL +Rescuers|NIL|NIL +Rescuers|11/16/1989|NIL +crawled|NIL|NIL +crawled|Rescuers|ARG0 +crawled|shops|ARGM-MNR +crawled|11/16/1989|ARG1 +crawled|looking|ARGM-ADV +collapsed|NIL|NIL +collapsed|homes|ARG1 +homes|NIL|NIL +shops|NIL|NIL +11/16/1989|NIL|NIL +looking|NIL|NIL +looking|victims|ARG1 +more|NIL|NIL +victims|NIL|NIL +victims|more|NIL +victims|tornado|NIL +tornado|NIL|NIL +tornado|a|NIL +carved|NIL|NIL +carved|tornado|ARG0 +carved|stretch|ARG1 +carved|killing|ARGM-ADV +carved|injuring|ARGM-ADV +carved|leaving|ARGM-ADV +3-mile|NIL|NIL +stretch|NIL|NIL +stretch|a|NIL +stretch|3-mile|NIL +stretch|destruction|NIL +destruction|NIL|NIL +killing|NIL|NIL +killing|people|ARG1 +17|NIL|NIL +people|NIL|NIL +people|17|NIL +injuring|NIL|NIL +injuring|463|ARG1 +463|NIL|NIL +leaving|NIL|NIL +leaving|homeless|ARG1 +1,000|NIL|NIL +homeless|NIL|NIL +homeless|1,000|NIL +11/16/1989|NIL|NIL +other|NIL|NIL +tornadoes|NIL|NIL +tornadoes|other|NIL +caused|NIL|NIL +caused|tornadoes|ARG0 +caused|injuries|ARG1 +caused|property|ARG1 +caused|damage|ARG1 +at|least|NIL +at|19|NIL +least|NIL|NIL +19|NIL|NIL +injuries|NIL|NIL +injuries|at|NIL +injuries|far-flung|NIL +far-flung|NIL|NIL +property|NIL|NIL +property|at|NIL +property|far-flung|NIL +damage|NIL|NIL +damage|at|NIL +damage|far-flung|NIL +11/16/1989|NIL|NIL +powerful|NIL|NIL +storm|NIL|NIL +system|NIL|NIL +system|A|NIL +system|powerful|NIL +system|storm|NIL +brought|NIL|NIL +brought|system|ARG0 +brought|winds|ARG1 +brought|thunderstorms|ARG1 +brought|Northeast|ARG2 +brought|11/16/1989|ARG3 +brought|causing|ARGM-ADV +strong|NIL|NIL +winds|NIL|NIL +winds|strong|NIL +heavy|NIL|NIL +thunderstorms|NIL|NIL +thunderstorms|heavy|NIL +Northeast|NIL|NIL +11/16/1989|NIL|NIL +causing|NIL|NIL +causing|flooding|ARG1 +causing|damage|ARG1 +flooding|NIL|NIL +widespread|NIL|NIL +property|NIL|NIL +damage|NIL|NIL +damage|widespread|NIL +damage|property|NIL +11/16/1989|NIL|NIL +_|NIL|NIL +Alabama|NIL|NIL +Alabama|11/16/1989|NIL +Alabama|_|NIL +Seventeen|NIL|NIL +people|NIL|NIL +people|Seventeen|NIL +killed|NIL|NIL +killed|people|ARG1 +killed|Huntsville|ARGM-LOC +killed|11/15/1989|ARGM-TMP +Huntsville|NIL|NIL +11/15/1989|NIL|NIL +11/15/1989|touched|NIL +tornado|NIL|NIL +tornado|a|NIL +touched|NIL|NIL +touched|tornado|ARG0 +touched|down|ARGM-DIR +touched|hour|ARGM-TMP +touched|causing|ARGM-ADV +just|NIL|NIL +rush|NIL|NIL +hour|NIL|NIL +hour|just|NIL +hour|rush|NIL +causing|NIL|NIL +causing|damage|ARG1 +major|NIL|NIL +damage|NIL|NIL +damage|major|NIL +11/16/1989|NIL|NIL +Three|NIL|NIL +people|NIL|NIL +people|11/16/1989|NIL +people|Three|NIL +injured|NIL|NIL +injured|people|ARG1 +injured|tornado|ARGM-LOC +earlier|NIL|NIL +tornado|NIL|NIL +tornado|an|NIL +tornado|earlier|NIL +tornado|County|NIL +Clay|NIL|NIL +County|NIL|NIL +County|Clay|NIL +County|Alabama|NIL +eastern|NIL|NIL +Alabama|NIL|NIL +Alabama|eastern|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D089.M.100.D.G.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D089.M.100.D.G.be new file mode 100644 index 0000000000000000000000000000000000000000..b757221668f17905bdf5b5169f307960472cda01 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D089.M.100.D.G.be @@ -0,0 +1,140 @@ +powerful|NIL|NIL +storm|NIL|NIL +storm|A|NIL +storm|powerful|NIL +brought|NIL|NIL +brought|storm|ARG0 +brought|tornadoes|ARG1 +brought|winds|ARG1 +brought|thunderstorms|ARG1 +brought|Midwest|ARG2 +brought|Mississippi|ARG2 +brought|Valley|ARG2 +brought|Southeast|ARG2 +brought|Northeast|ARG2 +brought|Wednesday|ARGM-TMP +brought|Thursday|ARGM-TMP +tornadoes|NIL|NIL +high|NIL|NIL +winds|NIL|NIL +winds|high|NIL +thunderstorms|NIL|NIL +Midwest|NIL|NIL +Mississippi|NIL|NIL +Valley|NIL|NIL +Southeast|NIL|NIL +Northeast|NIL|NIL +Wednesday|NIL|NIL +Thursday|NIL|NIL +Twenty-seven|NIL|NIL +people|NIL|NIL +people|Twenty-seven|NIL +killed|NIL|NIL +killed|people|ARG1 +more|NIL|NIL +than|more|NIL +than|500|NIL +500|NIL|NIL +injured|NIL|NIL +injured|than|ARG1 +thousands|NIL|NIL +left|NIL|NIL +left|thousands|ARG0 +left|homeless|ARG2 +homeless|NIL|NIL +worst|NIL|NIL +hit|NIL|NIL +hit|worst|NIL +was|hit|AUX-SBJ +was|Huntsville|AUX-PRD +was|laid|AUX-TMP +Huntsville|NIL|NIL +Huntsville|AL|NIL +AL|NIL|NIL +tornado|NIL|NIL +tornado|a|NIL +laid|NIL|NIL +laid|tornado|ARG0 +waste|NIL|NIL +waste|swath|ARG1 +waste|causing|ARGM-MNR +wide|NIL|NIL +swath|NIL|NIL +swath|a|NIL +swath|wide|NIL +swath|city|NIL +city|NIL|NIL +causing|NIL|NIL +causing|death|ARG1 +death|NIL|NIL +death|people|NIL +death|injuries|NIL +at|least|NIL +at|fourteen|NIL +least|NIL|NIL +fourteen|NIL|NIL +people|NIL|NIL +people|at|NIL +over|400|NIL +400|NIL|NIL +injuries|NIL|NIL +injuries|over|NIL +tornado|NIL|NIL +tornado|Another|NIL +killed|NIL|NIL +killed|tornado|ARG0 +killed|people|ARG1 +killed|Palmetto|ARGM-LOC +four|NIL|NIL +people|NIL|NIL +people|four|NIL +Palmetto|NIL|NIL +Palmetto|Newburgh|NIL +Palmetto|NY|NIL +Georgia|NIL|NIL +In|NIL|NIL +Newburgh|NIL|NIL +Newburgh|Georgia|NIL +Newburgh|In|NIL +NY|NIL|NIL +strong|NIL|NIL +winds|NIL|NIL +winds|strong|NIL +caused|NIL|NIL +caused|killed|ARG1 +caused|winds|ARG0 +caused|collapse|ARG1 +school|NIL|NIL +roof|NIL|NIL +roof|a|NIL +roof|school|NIL +collapse|NIL|NIL +collapse|roof|ARG1 +collapse|killing|ARGM-ADV +collapse|injuring|ARGM-ADV +killing|NIL|NIL +killing|children|ARG1 +seven|NIL|NIL +children|NIL|NIL +children|seven|NIL +injuring|NIL|NIL +injuring|eighteen|ARG1 +eighteen|NIL|NIL +storm|NIL|NIL +caused|NIL|NIL +caused|storm|ARG0 +caused|death|ARG1 +one|NIL|NIL +death|NIL|NIL +death|one|NIL +death|Jersey|NIL +New|NIL|NIL +Jersey|NIL|NIL +Jersey|New|NIL +Jersey|another|NIL +another|City|NIL +New|NIL|NIL +York|NIL|NIL +City|NIL|NIL +City|New|NIL +City|York|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D090.M.100.D.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D090.M.100.D.26.be new file mode 100644 index 0000000000000000000000000000000000000000..94240dc859ce1efc02bddb1dd47756d2ce4b7968 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D090.M.100.D.26.be @@ -0,0 +1,121 @@ +06/25/1988|NIL|NIL +The|NIL|NIL +reports|NIL|NIL +reports|06/25/1988|NIL +reports|The|NIL +not|NIL|NIL +say|NIL|NIL +say|reports|ARG0 +say|when|ARGM-ADV +when|allow|NIL +criminal|NIL|NIL +charges|NIL|NIL +charges|criminal|NIL +charges|Marcos|NIL +Marcos|NIL|NIL +Marcos|predecessor|NIL +Aquino|NIL|NIL +ousted|NIL|NIL +ousted|predecessor|ARG1 +predecessor|NIL|NIL +predecessor|Aquino|NIL +filed|NIL|NIL +filed|charges|ARG1 +Mrs.|NIL|NIL +Aquino|NIL|NIL +Aquino|Mrs.|NIL +allow|NIL|NIL +allow|Aquino|ARG0 +allow|return|ARG1 +him|NIL|NIL +return|NIL|NIL +05/19/1989|NIL|NIL +Marcos|NIL|NIL +lawyer|NIL|NIL +lawyer|Marcos|NIL +also|NIL|NIL +asked|NIL|NIL +asked|lawyer|ARG0 +asked|also|ARGM-DIS +Philippine|NIL|NIL +Supreme|NIL|NIL +Court|NIL|NIL +Court|Philippine|NIL +Court|Supreme|NIL +order|NIL|NIL +order|return|ARG1 +order|pledging|ARGM-ADV +return|NIL|NIL +pledging|NIL|NIL +pledging|cooperate|ARG2 +ousted|NIL|NIL +leader|NIL|NIL +leader|ousted|NIL +cooperate|NIL|NIL +cooperate|leader|ARG0 +cooperate|administration|ARG1 +Aquino|NIL|NIL +administration|NIL|NIL +administration|Aquino|NIL +05/20/1989|NIL|NIL +President|NIL|NIL +Corazon|NIL|NIL +Aquino|NIL|NIL +Aquino|05/20/1989|NIL +Aquino|President|NIL +Aquino|Corazon|NIL +said|NIL|NIL +said|05/19/1989|ARGM-TMP +said|permit|ARG1 +05/19/1989|NIL|NIL +security|NIL|NIL +reasons|NIL|NIL +reasons|security|NIL +she|NIL|NIL +not|NIL|NIL +permit|NIL|NIL +permit|reasons|ARGM-ADV +permit|she|ARG0 +permit|buried|ARG1 +deposed|NIL|NIL +deposed|Marcos|ARG1 +President|NIL|NIL +Ferdinand|NIL|NIL +E.|NIL|NIL +Marcos|NIL|NIL +Marcos|President|NIL +Marcos|Ferdinand|NIL +Marcos|E.|NIL +buried|NIL|NIL +buried|Marcos|ARG1 +Philippines|NIL|NIL +05/20/1989|NIL|NIL +Philippine|NIL|NIL +officials|NIL|NIL +officials|05/20/1989|NIL +officials|Philippine|NIL +asked|NIL|NIL +asked|officials|ARG2 +asked|repeatedly|ARGM-TMP +asked|remain|ARG1 +repeatedly|NIL|NIL +Aquino|NIL|NIL +government|NIL|NIL +government|Aquino|NIL +refusal|NIL|NIL +refusal|government|NIL +allow|NIL|NIL +allow|return|ARG1 +Marcos|NIL|NIL +return|NIL|NIL +return|Marcos|ARG0 +return|country|ARG2 +country|NIL|NIL +remain|NIL|NIL +remain|refusal|ARG1 +remain|effect|ARG3 +remain|death|ARGM-TMP +effect|NIL|NIL +his|NIL|NIL +death|NIL|NIL +death|his|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D090.M.100.D.J.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D090.M.100.D.J.be new file mode 100644 index 0000000000000000000000000000000000000000..223d13cdcb47e570ef29e20f21224c665d3910a3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D090.M.100.D.J.be @@ -0,0 +1,122 @@ +military|NIL|NIL +firepower|NIL|NIL +firepower|military|NIL +President|NIL|NIL +Aquino|NIL|NIL +Aquino|President|NIL +ended|NIL|NIL +ended|firepower|ARGM-ADV +ended|Oct.|ARGM-TMP +ended|uprising|ARG1 +Oct.|NIL|NIL +Oct.|4|NIL +4|NIL|NIL +6|NIL|NIL +uprising|NIL|NIL +uprising|6|NIL +She|NIL|NIL +survived|NIL|NIL +survived|She|ARG0 +survived|attempts|ARG1 +survived|mutinies|ARG1 +two|NIL|NIL +major|NIL|NIL +coup|NIL|NIL +attempts|NIL|NIL +attempts|two|NIL +attempts|major|NIL +attempts|coup|NIL +several|NIL|NIL +mutinies|NIL|NIL +mutinies|several|NIL +Recently|NIL|NIL +reversal|NIL|NIL +reversal|a|NIL +reversal|policy|NIL +policy|NIL|NIL +Aquino|NIL|NIL +said|NIL|NIL +said|Recently|ARGM-TMP +said|reversal|ARGM-LOC +said|negotiate|ARG1 +she|NIL|NIL +negotiate|NIL|NIL +negotiate|she|ARG0 +negotiate|guerillas|ARG1 +Communist|NIL|NIL +guerillas|NIL|NIL +guerillas|Communist|NIL +Aquino|NIL|NIL +political|NIL|NIL +controversies|NIL|NIL +controversies|Aquino|NIL +controversies|political|NIL +include|NIL|NIL +include|controversies|ARG2 +her|NIL|NIL +opposition|NIL|NIL +opposition|her|NIL +opposition|nomination|NIL +opposition|refusal|NIL +nomination|NIL|NIL +nomination|leader|NIL +agrarian|NIL|NIL +reform|NIL|NIL +leader|NIL|NIL +leader|agrarian|NIL +leader|reform|NIL +leader|Secretary-designate|NIL +leader|Abad|NIL +Secretary-designate|NIL|NIL +Abad|NIL|NIL +her|NIL|NIL +Vice|NIL|NIL +President|NIL|NIL +President|her|NIL +President|Vice|NIL +refusal|NIL|NIL +refusal|President|NIL +condemn|NIL|NIL +condemn|insurrection|ARG1 +insurrection|NIL|NIL +insurrection|an|NIL +insurrection|1989|NIL +1989|NIL|NIL +Aquino|NIL|NIL +succeeded|NIL|NIL +succeeded|Aquino|ARG0 +succeeded|Marcos|ARG1 +Marcos|NIL|NIL +accused|NIL|NIL +accused|Marcos|ARG1 +accused|stealing|ARG2 +stealing|NIL|NIL +stealing|billions|ARG1 +stealing|government|ARG2 +billions|NIL|NIL +government|NIL|NIL +1989|NIL|NIL +she|NIL|NIL +refused|NIL|NIL +refused|1989|ARGM-TMP +refused|she|ARG0 +refused|let|ARG1 +let|NIL|NIL +let|reenter|ARG1 +let|allow|ARG1 +Marcos|NIL|NIL +Marcos|critically|NIL +critically|NIL|NIL +critically|ill|NIL +critically|Hawaii|NIL +ill|NIL|NIL +Hawaii|NIL|NIL +reenter|NIL|NIL +country|NIL|NIL +allow|NIL|NIL +allow|Marcos|ARG0 +allow|buried|ARG1 +him|NIL|NIL +buried|NIL|NIL +buried|him|ARG1 +Philippines|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D091.M.100.C.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D091.M.100.C.26.be new file mode 100644 index 0000000000000000000000000000000000000000..5619f936c54dd286a704115ac2e044a5d40f7270 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D091.M.100.C.26.be @@ -0,0 +1,151 @@ +06/15/1990|NIL|NIL +Torrential|NIL|NIL +thunderstorms|NIL|NIL +thunderstorms|06/15/1990|NIL +thunderstorms|Torrential|NIL +sent|NIL|NIL +sent|thunderstorms|ARG0 +sent|flood|ARG1 +sent|town|ARG2 +sent|killing|ARGM-ADV +sent|leaving|ARGM-ADV +flash|NIL|NIL +flood|NIL|NIL +flood|a|NIL +flood|flash|NIL +surging|NIL|NIL +surging|flood|ARG1 +surging|valley|ARGM-MNR +valley|NIL|NIL +valley|a|NIL +Ohio|NIL|NIL +River|NIL|NIL +town|NIL|NIL +town|this|NIL +town|Ohio|NIL +town|River|NIL +killing|NIL|NIL +killing|people|ARG1 +at|least|NIL +at|11|NIL +least|NIL|NIL +11|NIL|NIL +people|NIL|NIL +people|at|NIL +leaving|NIL|NIL +leaving|scores|ARG1 +leaving|others|ARG1 +leaving|06/15/1990|ARG2 +51|NIL|NIL +missing|NIL|NIL +missing|others|ARG1 +scores|NIL|NIL +scores|51|NIL +others|NIL|NIL +others|51|NIL +homeless|NIL|NIL +06/15/1990|NIL|NIL +06/15/1990|homeless|NIL +authorities|NIL|NIL +said|NIL|NIL +said|sent|ARG1 +said|authorities|ARG0 +06/15/1990|NIL|NIL +About|NIL|NIL +About|200|NIL +200|NIL|NIL +people|NIL|NIL +people|About|NIL +reported|NIL|NIL +reported|06/15/1990|ARGM-TMP +reported|people|ARG1 +reported|evacuated|ARG1 +evacuated|NIL|NIL +evacuated|Ohio|ARGM-LOC +central|NIL|NIL +Ohio|NIL|NIL +Ohio|central|NIL +06/15/1990|NIL|NIL +Federal|NIL|NIL +Emergency|NIL|NIL +Management|NIL|NIL +Agency|NIL|NIL +Agency|Federal|NIL +Agency|Emergency|NIL +Agency|Management|NIL +declared|NIL|NIL +declared|Agency|ARG0 +declared|County|ARG1 +Belmont|NIL|NIL +County|NIL|NIL +County|Belmont|NIL +includes|NIL|NIL +includes|County|ARG2 +includes|Shadyside|ARG1 +includes|areas|ARG1 +includes|making|ARG1 +Shadyside|NIL|NIL +Jefferson|NIL|NIL +Franklin|NIL|NIL +counties|NIL|NIL +disaster|NIL|NIL +areas|NIL|NIL +areas|Jefferson|NIL +areas|Franklin|NIL +areas|counties|NIL +areas|disaster|NIL +making|NIL|NIL +making|available|ARG2 +federal|NIL|NIL +aid|NIL|NIL +aid|federal|NIL +available|NIL|NIL +available|aid|NIL +available|residents|NIL +residents|NIL|NIL +06/18/1990|NIL|NIL +death|NIL|NIL +toll|NIL|NIL +toll|death|NIL +toll|floods|NIL +last|NIL|NIL +week|NIL|NIL +week|last|NIL +flash|NIL|NIL +floods|NIL|NIL +floods|week|NIL +floods|flash|NIL +mounted|NIL|NIL +mounted|toll|ARG0 +mounted|21|ARG4 +mounted|06/18/1990|ARGM-TMP +21|NIL|NIL +06/18/1990|NIL|NIL +06/18/1990|found|NIL +body|NIL|NIL +body|a|NIL +found|NIL|NIL +found|body|ARG1 +found|River|ARGM-LOC +Ohio|NIL|NIL +River|NIL|NIL +River|Ohio|NIL +authorities|NIL|NIL +said|NIL|NIL +said|authorities|ARG0 +was|there|AUX-SBJ +was|hope|AUX-PRD +little|NIL|NIL +hope|NIL|NIL +hope|little|NIL +hope|people|NIL +14|NIL|NIL +people|NIL|NIL +people|14|NIL +still|NIL|NIL +listed|NIL|NIL +listed|people|ARG1 +listed|still|ARGM-TMP +listed|as|ARG2 +as|missing|NIL +missing|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D091.M.100.C.F.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D091.M.100.C.F.be new file mode 100644 index 0000000000000000000000000000000000000000..3904876c3ed69f24be6368f78ce7635701c2ed81 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D091.M.100.C.F.be @@ -0,0 +1,125 @@ +death|NIL|NIL +toll|NIL|NIL +toll|death|NIL +toll|floods|NIL +floods|NIL|NIL +floods|Ohio|NIL +eastern|NIL|NIL +Ohio|NIL|NIL +Ohio|eastern|NIL +rose|NIL|NIL +rose|toll|ARG1 +rose|21|ARG4 +21|NIL|NIL +may|toll|NIL +may|to|NIL +to|higher|NIL +higher|NIL|NIL +higher|missing|NIL +14|NIL|NIL +persons|NIL|NIL +persons|14|NIL +still|NIL|NIL +missing|NIL|NIL +missing|persons|ARG0 +missing|still|ARGM-TMP +Torrential|NIL|NIL +rains|NIL|NIL +rains|Torrential|NIL +caused|NIL|NIL +caused|rains|ARG0 +caused|creeks|ARG1 +two|NIL|NIL +creeks|NIL|NIL +creeks|two|NIL +Shadyside|NIL|NIL +Shadyside|Ohio|NIL +Ohio|NIL|NIL +overflow|NIL|NIL +overflow|Shadyside|NIL +create|NIL|NIL +create|rains|ARG0 +create|high|ARG1 +wall|NIL|NIL +wall|a|NIL +wall|water|NIL +water|NIL|NIL +15|NIL|NIL +15|to|NIL +15|20|NIL +20|NIL|NIL +feet|NIL|NIL +feet|15|NIL +high|NIL|NIL +high|wall|NIL +high|feet|NIL +flood|NIL|NIL +raged|NIL|NIL +raged|flood|ARG0 +raged|valley|ARGM-MNR +valley|NIL|NIL +demolishing|NIL|NIL +demolishing|valley|ARG0 +demolishing|tavern|ARG1 +demolishing|houses|ARG1 +crowded|NIL|NIL +tavern|NIL|NIL +tavern|a|NIL +tavern|crowded|NIL +at|least|NIL +at|70|NIL +least|NIL|NIL +70|NIL|NIL +houses|NIL|NIL +houses|at|NIL +Governor|NIL|NIL +Celeste|NIL|NIL +Celeste|Governor|NIL +declared|NIL|NIL +declared|Celeste|ARG0 +declared|state|ARG1 +state|NIL|NIL +state|a|NIL +state|emergency|NIL +emergency|NIL|NIL +sent|NIL|NIL +sent|Celeste|ARG0 +sent|troops|ARG1 +sent|area|ARG2 +sent|assist|ARGM-PNC +National|NIL|NIL +Guard|NIL|NIL +troops|NIL|NIL +troops|National|NIL +troops|Guard|NIL +area|NIL|NIL +assist|NIL|NIL +Dog|NIL|NIL +teams|NIL|NIL +teams|Dog|NIL +used|NIL|NIL +used|teams|ARG1 +used|search|ARG2 +search|NIL|NIL +search|bodies|ARG1 +survivors|NIL|NIL +bodies|NIL|NIL +Few|NIL|NIL +Few|homes|NIL +damaged|NIL|NIL +damaged|homes|ARG1 +homes|NIL|NIL +covered|NIL|NIL +covered|Few|ARG1 +covered|insurance|ARG0 +covered|look|ARG1 +flood|NIL|NIL +insurance|NIL|NIL +insurance|flood|NIL +owners|NIL|NIL +look|NIL|NIL +look|owners|ARG0 +look|assistance|ARG1 +federal|NIL|NIL +assistance|NIL|NIL +assistance|federal|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D092.M.100.C.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D092.M.100.C.26.be new file mode 100644 index 0000000000000000000000000000000000000000..d2820c98941cb27d84dddad5e78e06a868399980 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D092.M.100.C.26.be @@ -0,0 +1,133 @@ +06/22/1990|NIL|NIL +earthquake|NIL|NIL +struck|NIL|NIL +struck|earthquake|ARG0 +struck|Iran|ARG1 +northern|NIL|NIL +Iran|NIL|NIL +Iran|northern|NIL +brought|NIL|NIL +brought|earthquake|ARG0 +brought|reminders|ARG1 +brought|devastated|ARG1 +reminders|NIL|NIL +reminders|quake|NIL +quake|NIL|NIL +quake|another|NIL +devastated|NIL|NIL +devastated|Armenia|ARG1 +devastated|1988|ARGM-TMP +Soviet|NIL|NIL +Armenia|NIL|NIL +Armenia|Soviet|NIL +1988|NIL|NIL +06/22/1990|NIL|NIL +Iranian|NIL|NIL +news|NIL|NIL +media|NIL|NIL +media|06/22/1990|NIL +media|Iranian|NIL +media|news|NIL +reacted|NIL|NIL +reacted|media|ARG0 +reacted|emotion|ARGM-MNR +reacted|06/21/1990|ARGM-TMP +reacted|earthquake|ARG1 +little|NIL|NIL +emotion|NIL|NIL +emotion|little|NIL +06/21/1990|NIL|NIL +killer|NIL|NIL +earthquake|NIL|NIL +earthquake|a|NIL +earthquake|killer|NIL +left|NIL|NIL +left|earthquake|ARG0 +left|people|ARG1 +left|Iran|ARGM-LOC +estimated|NIL|NIL +estimated|people|ARG1 +25,000|NIL|NIL +people|NIL|NIL +people|an|NIL +people|25,000|NIL +people|dead|NIL +dead|NIL|NIL +northern|NIL|NIL +Iran|NIL|NIL +Iran|northern|NIL +06/22/1990|NIL|NIL +About|NIL|NIL +About|25,000|NIL +25,000|NIL|NIL +people|NIL|NIL +people|About|NIL +died|NIL|NIL +died|06/22/1990|ARG1 +died|people|ARG1 +died|Iran|ARGM-LOC +died|earthquake|ARGM-LOC +eastern|NIL|NIL +Iran|NIL|NIL +Iran|eastern|NIL +1978|NIL|NIL +earthquake|NIL|NIL +earthquake|a|NIL +earthquake|1978|NIL +06/23/1990|NIL|NIL +Iran|NIL|NIL +Iran|06/23/1990|NIL +deliberately|NIL|NIL +underreporting|NIL|NIL +underreporting|Iran|ARG0 +number|NIL|NIL +number|casualties|NIL +casualties|NIL|NIL +casualties|earthquake|NIL +06/21/1990|NIL|NIL +massive|NIL|NIL +earthquake|NIL|NIL +earthquake|06/21/1990|NIL +earthquake|massive|NIL +fear|NIL|NIL +fear|backlash|NIL +political|NIL|NIL +backlash|NIL|NIL +backlash|a|NIL +backlash|political|NIL +leaders|NIL|NIL +leaders|group|NIL +group|NIL|NIL +group|a|NIL +seeking|NIL|NIL +seeking|group|ARG0 +seeking|overthrow|ARG1 +overthrow|NIL|NIL +country|NIL|NIL +Islamic|NIL|NIL +leadership|NIL|NIL +leadership|country|NIL +leadership|Islamic|NIL +say|NIL|NIL +say|underreporting|ARG1 +say|leaders|ARG0 +06/23/1990|NIL|NIL +Northern|NIL|NIL +Iran|NIL|NIL +Iran|06/23/1990|NIL +Iran|Northern|NIL +stuck|NIL|NIL +stuck|Iran|ARG1 +stuck|06/21/1990|ARGM-TMP +stuck|earthquake|ARG0 +06/21/1990|NIL|NIL +earthquake|NIL|NIL +earthquake|an|NIL +measuring|NIL|NIL +measuring|earthquake|ARG1 +measuring|Scale|ARG2 +7.3|NIL|NIL +7.7|NIL|NIL +Richter|NIL|NIL +Scale|NIL|NIL +Scale|Richter|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D092.M.100.C.A.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D092.M.100.C.A.be new file mode 100644 index 0000000000000000000000000000000000000000..48ab34ed9c8f34d3ce0e65e8d72787768c910cee --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D092.M.100.C.A.be @@ -0,0 +1,131 @@ +earthquake|NIL|NIL +earthquake|An|NIL +earthquake|magnitude|NIL +magnitude|NIL|NIL +magnitude|7.7|NIL +7.7|NIL|NIL +hit|NIL|NIL +hit|earthquake|ARG0 +hit|Iran|ARG1 +hit|June|ARGM-TMP +hit|killing|ARGM-ADV +hit|injuring|ARGM-ADV +northwestern|NIL|NIL +Iran|NIL|NIL +Iran|northwestern|NIL +June|NIL|NIL +June|21|NIL +June|1990|NIL +21|NIL|NIL +1990|NIL|NIL +killing|NIL|NIL +killing|people|ARG1 +at|least|NIL +at|50,000|NIL +least|NIL|NIL +50,000|NIL|NIL +people|NIL|NIL +people|at|NIL +injuring|NIL|NIL +injuring|200,000|ARG1 +200,000|NIL|NIL +quake|NIL|NIL +occurred|NIL|NIL +occurred|quake|ARG1 +occurred|were|ARGM-TMP +occurred|hit|ARGM-TMP +most|NIL|NIL +people|NIL|NIL +people|most|NIL +were|people|AUX-SBJ +were|asleep|AUX-PRD +inside|NIL|NIL +asleep|NIL|NIL +asleep|inside|NIL +hit|NIL|NIL +hit|people|ARG0 +hit|floodplain|ARG1 +coastal|NIL|NIL +floodplain|NIL|NIL +floodplain|a|NIL +floodplain|coastal|NIL +loosely|NIL|NIL +deposited|NIL|NIL +deposited|shifts|ARG1 +deposited|easily|ARGM-MNR +soil|NIL|NIL +shifts|NIL|NIL +shifts|soil|NIL +easily|NIL|NIL +caused|NIL|NIL +caused|homes|ARG1 +caused|collapse|ARG2 +fragile|NIL|NIL +adobe|NIL|NIL +homes|NIL|NIL +homes|fragile|NIL +homes|adobe|NIL +homes|area|NIL +area|NIL|NIL +collapse|NIL|NIL +Iranian|NIL|NIL +president|NIL|NIL +president|Iranian|NIL +appealed|NIL|NIL +appealed|president|ARG0 +appealed|aid|ARG1 +international|NIL|NIL +aid|NIL|NIL +aid|international|NIL +response|NIL|NIL +was|response|AUX-SBJ +was|overwhelming|AUX-PRD +was|first|AUX-PRD +overwhelming|NIL|NIL +including|NIL|NIL +assistance|NIL|NIL +assistance|United|NIL +United|NIL|NIL +United|States|NIL +States|NIL|NIL +first|NIL|NIL +first|crisis|NIL +first|1979-80|NIL +such|NIL|NIL +hostage|NIL|NIL +crisis|NIL|NIL +crisis|such|NIL +crisis|hostage|NIL +1979-80|NIL|NIL +negative|NIL|NIL +side|NIL|NIL +side|negative|NIL +Iranian|NIL|NIL +news|NIL|NIL +media|NIL|NIL +media|Iranian|NIL +media|news|NIL +were|media|AUX-SBJ +were|slow|AUX-PRD +slow|NIL|NIL +slow|report|NIL +report|NIL|NIL +report|disaster|ARG1 +disaster|NIL|NIL +Iranian|NIL|NIL +U.S.|NIL|NIL +government|NIL|NIL +blamed|NIL|NIL +blamed|Iranian|ARG1 +blamed|U.S.|ARG1 +blamed|government|ARG1 +blamed|critics|ARG0 +blamed|casualties|ARG2 +their|NIL|NIL +respective|NIL|NIL +critics|NIL|NIL +critics|their|NIL +critics|respective|NIL +excessive|NIL|NIL +casualties|NIL|NIL +casualties|excessive|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D093.M.100.C.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D093.M.100.C.26.be new file mode 100644 index 0000000000000000000000000000000000000000..7a4e81ff6395e01f01c2d5bece0672de75e621d2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D093.M.100.C.26.be @@ -0,0 +1,125 @@ +12/18/1988|NIL|NIL +It|NIL|NIL +said|NIL|NIL +said|rescued|ARG1 +12/16/1988|NIL|NIL +125|NIL|NIL +survivors|NIL|NIL +survivors|125|NIL +rescued|NIL|NIL +rescued|12/16/1988|ARGM-TMP +rescued|survivors|ARG1 +55|NIL|NIL +bodies|NIL|NIL +bodies|55|NIL +found|NIL|NIL +found|bodies|ARG1 +seven|NIL|NIL +people|NIL|NIL +people|seven|NIL +missing|NIL|NIL +missing|people|ARG0 +12/16/1991|NIL|NIL +U.S.|NIL|NIL +Navy|NIL|NIL +aircraft|NIL|NIL +aircraft|U.S.|NIL +aircraft|Navy|NIL +joined|NIL|NIL +joined|aircraft|ARG1 +joined|search|ARG1 +joined|12/16/1991|ARGM-TMP +joined|survivors|ARG1 +search|NIL|NIL +12/16/1991|NIL|NIL +survivors|NIL|NIL +survivors|sinking|NIL +ferry|NIL|NIL +sinking|NIL|NIL +sinking|ferry|NIL +left|NIL|NIL +left|people|ARG1 +471|NIL|NIL +people|NIL|NIL +people|471|NIL +missing|NIL|NIL +missing|people|ARG1 +missing|waters|ARGM-LOC +shark-infested|NIL|NIL +Red|NIL|NIL +Sea|NIL|NIL +waters|NIL|NIL +waters|shark-infested|NIL +waters|Red|NIL +waters|Sea|NIL +found|NIL|NIL +found|sinking|ARG0 +found|nothing|ARG1 +nothing|NIL|NIL +nothing|rafts|NIL +nothing|debris|NIL +empty|NIL|NIL +life|NIL|NIL +rafts|NIL|NIL +rafts|empty|NIL +rafts|life|NIL +debris|NIL|NIL +12/16/1991|NIL|NIL +engineer|NIL|NIL +engineer|ferry|NIL +ferry|NIL|NIL +ferry|a|NIL +sank|NIL|NIL +sank|off|rel +sank|leaving|ARGM-ADV +sank|12/16/1991|ARG2 +Red|NIL|NIL +Sea|NIL|NIL +port|NIL|NIL +port|this|NIL +port|Red|NIL +port|Sea|NIL +leaving|NIL|NIL +leaving|missing|ARG2 +more|NIL|NIL +than|more|NIL +than|400|NIL +400|NIL|NIL +people|NIL|NIL +people|than|NIL +missing|NIL|NIL +12/16/1991|NIL|NIL +denied|NIL|NIL +denied|engineer|ARG0 +denied|accusations|ARG1 +denied|part|ARG1 +accusations|NIL|NIL +accusations|negligence|NIL +widespread|NIL|NIL +negligence|NIL|NIL +negligence|widespread|NIL +part|NIL|NIL +part|crew|NIL +ship|NIL|NIL +crew|NIL|NIL +crew|ship|NIL +Only|NIL|NIL +Only|seven|NIL +seven|NIL|NIL +bodies|NIL|NIL +bodies|Only|NIL +recovered|NIL|NIL +recovered|bodies|ARG1 +recovered|went|ARGM-TMP +ferry|NIL|NIL +went|NIL|NIL +went|ferry|ARG1 +went|down|ARGM-DIR +went|leaving|ARGM-ADV +down|NIL|NIL +leaving|NIL|NIL +leaving|people|ARG1 +462|NIL|NIL +people|NIL|NIL +people|462|NIL +missing|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D093.M.100.C.H.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D093.M.100.C.H.be new file mode 100644 index 0000000000000000000000000000000000000000..c9a965765ceafb78a7f4893280a062de169ba6c5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D093.M.100.C.H.be @@ -0,0 +1,138 @@ +1988|NIL|NIL +overloaded|NIL|NIL +ferries|NIL|NIL +ferries|overloaded|NIL +capsized|NIL|NIL +capsized|1988|ARGM-TMP +capsized|ferries|ARG0 +capsized|River|ARGM-LOC +capsized|killing|ARGM-ADV +India|NIL|NIL +Ganges|NIL|NIL +River|NIL|NIL +River|India|NIL +River|Ganges|NIL +killing|NIL|NIL +killing|400|ARG1 +400|NIL|NIL +400|killing|NIL +Bangladesh|NIL|NIL +Meghna|NIL|NIL +River|NIL|NIL +River|Bangladesh|NIL +River|Meghna|NIL +killing|NIL|NIL +killing|River|ARGM-LOC +killing|100|ARG1 +100|NIL|NIL +China|NIL|NIL +Hainan|NIL|NIL +Island|NIL|NIL +Island|China|NIL +Island|Hainan|NIL +killing|NIL|NIL +killing|students|ARG1 +killing|teachers|ARG1 +55|NIL|NIL +students|NIL|NIL +students|55|NIL +teachers|NIL|NIL +teachers|55|NIL +Guangxi|NIL|NIL +Zhuang|NIL|NIL +Autonomous|NIL|NIL +Region|NIL|NIL +Region|Guangxi|NIL +Region|Zhuang|NIL +Region|Autonomous|NIL +killing|NIL|NIL +killing|Region|ARGM-LOC +killing|61|ARG1 +61|NIL|NIL +overloaded|NIL|NIL +ferry|NIL|NIL +ferry|An|NIL +ferry|overloaded|NIL +capsized|NIL|NIL +capsized|ferry|ARG1 +capsized|Guatemala|ARGM-LOC +capsized|1989|ARGM-TMP +capsized|killing|ARGM-ADV +Guatemala|NIL|NIL +1989|NIL|NIL +killing|NIL|NIL +killing|67|ARG1 +67|NIL|NIL +1991|NIL|NIL +ferries|NIL|NIL +capsized|NIL|NIL +capsized|1991|ARGM-TMP +capsized|ferries|ARG0 +capsized|reefs|ARGM-TMP +capsized|Kenya|ARGM-DIR +capsized|killing|ARGM-ADV +capsized|Sea|ARGM-LOC +striking|NIL|NIL +reefs|NIL|NIL +reefs|striking|NIL +Kenya|NIL|NIL +killing|NIL|NIL +killing|refugees|ARG1 +180|NIL|NIL +Somali|NIL|NIL +refugees|NIL|NIL +refugees|180|NIL +refugees|Somali|NIL +Red|NIL|NIL +Sea|NIL|NIL +Sea|Red|NIL +killing|NIL|NIL +killing|352|ARG1 +352|NIL|NIL +Other|NIL|NIL +ferry|NIL|NIL +capsizings|NIL|NIL +capsizings|Other|NIL +capsizings|ferry|NIL +killed|NIL|NIL +killed|capsizings|ARG0 +killed|150|ARG1 +killed|River|ARGM-LOC +killed|sailors|ARG1 +killed|refugees|ARG1 +killed|Kenya|ARG2 +killed|1991|ARGM-TMP +150|NIL|NIL +India|NIL|NIL +Krishna|NIL|NIL +River|NIL|NIL +River|India|NIL +River|Krishna|NIL +River|1970|NIL +1970|NIL|NIL +133|NIL|NIL +133|River|NIL +China|NIL|NIL +Min|NIL|NIL +River|NIL|NIL +River|China|NIL +River|Min|NIL +71|NIL|NIL +71|Yangtze|NIL +Yangtze|NIL|NIL +Yangtze|1988|NIL +1988|NIL|NIL +19|NIL|NIL +sailors|NIL|NIL +sailors|19|NIL +sailors|coast|NIL +Israel|NIL|NIL +coast|NIL|NIL +coast|Israel|NIL +coast|1990|NIL +1990|NIL|NIL +11|NIL|NIL +refugees|NIL|NIL +refugees|11|NIL +Kenya|NIL|NIL +1991|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D094.M.100.C.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D094.M.100.C.26.be new file mode 100644 index 0000000000000000000000000000000000000000..af0a3ca785fd490bb85d3b867000020b988bf53e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D094.M.100.C.26.be @@ -0,0 +1,142 @@ +01/12/1989|NIL|NIL +U.S.|NIL|NIL +prosecutors|NIL|NIL +prosecutors|01/12/1989|NIL +prosecutors|U.S.|NIL +pressured|NIL|NIL +pressured|prosecutors|ARG0 +pressured|minister|ARG1 +pressured|changing|ARG2 +Japan|NIL|NIL +wartime|NIL|NIL +prime|NIL|NIL +minister|NIL|NIL +minister|Japan|NIL +minister|wartime|NIL +minister|prime|NIL +minister|Tojo|NIL +Gen.|NIL|NIL +Hideki|NIL|NIL +Tojo|NIL|NIL +Tojo|Gen.|NIL +Tojo|Hideki|NIL +changing|NIL|NIL +changing|testimony|ARG1 +changing|trial|ARGM-LOC +testimony|NIL|NIL +his|NIL|NIL +trial|NIL|NIL +trial|his|NIL +avoid|NIL|NIL +avoid|incriminating|ARG1 +incriminating|NIL|NIL +incriminating|Hirohito|ARG1 +incriminating|crimes|ARGM-LOC +Emperor|NIL|NIL +Hirohito|NIL|NIL +Hirohito|Emperor|NIL +war|NIL|NIL +crimes|NIL|NIL +crimes|war|NIL +crimes|documentary|NIL +crimes|claims|NIL +television|NIL|NIL +documentary|NIL|NIL +documentary|a|NIL +documentary|television|NIL +claims|NIL|NIL +02/24/1989|NIL|NIL +rest|NIL|NIL +rest|world|NIL +world|NIL|NIL +he|NIL|NIL +known|NIL|NIL +known|rest|ARGM-TMP +known|he|ARG1 +known|used|ARGM-TMP +Emperor|NIL|NIL +Hirohito|NIL|NIL +Hirohito|Emperor|NIL +Hirohito|Japan|NIL +Japan|NIL|NIL +his|NIL|NIL +given|NIL|NIL +given|name|ARG1 +name|NIL|NIL +name|his|NIL +seldom|NIL|NIL +used|NIL|NIL +used|name|ARG1 +used|seldom|ARGM-TMP +02/24/1989|NIL|NIL +English-language|NIL|NIL +newspapers|NIL|NIL +newspapers|02/24/1989|NIL +newspapers|English-language|NIL +published|NIL|NIL +published|newspapers|ARG1 +published|Japan|ARGM-LOC +Japan|NIL|NIL +quickly|NIL|NIL +began|NIL|NIL +began|newspapers|ARG0 +began|quickly|ARGM-MNR +began|using|ARG1 +began|Hirohito|ARG1 +began|death|ARGM-TMP +using|NIL|NIL +using|name|ARG1 +name|NIL|NIL +Showa|NIL|NIL +Hirohito|NIL|NIL +Hirohito|Showa|NIL +Hirohito|for|NIL +his|NIL|NIL +death|NIL|NIL +death|his|NIL +it|NIL|NIL +not|NIL|NIL +become|NIL|NIL +become|official|ARG2 +become|Jan.|ARGM-TMP +become|conducted|ARGM-TMP +truly|NIL|NIL +official|NIL|NIL +official|truly|NIL +Jan.|NIL|NIL +Jan.|31|NIL +31|NIL|NIL +Emperor|NIL|NIL +Akihito|NIL|NIL +Akihito|Emperor|NIL +conducted|NIL|NIL +conducted|Akihito|ARG0 +conducted|ceremony|ARG1 +ceremony|NIL|NIL +ceremony|a|NIL +in|which|NIL +Showa|NIL|NIL +became|NIL|NIL +became|name|ARG2 +late|NIL|NIL +emperor|NIL|NIL +emperor|late|NIL +posthumous|NIL|NIL +name|NIL|NIL +name|emperor|NIL +name|posthumous|NIL +08/21/1989|NIL|NIL +Hirohito|NIL|NIL +Hirohito|08/21/1989|NIL +died|NIL|NIL +died|Hirohito|ARG1 +died|cancer|ARGM-CAU +died|Jan.|ARGM-TMP +died|age|ARGM-TMP +cancer|NIL|NIL +Jan.|NIL|NIL +Jan.|7|NIL +7|NIL|NIL +age|NIL|NIL +age|87|NIL +87|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D094.M.100.C.D.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D094.M.100.C.D.be new file mode 100644 index 0000000000000000000000000000000000000000..2f57a3eef3011e7e8a1cd8d7cc2f6055028d1faa --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D094.M.100.C.D.be @@ -0,0 +1,122 @@ +Emperor|NIL|NIL +Hirohito|NIL|NIL +Hirohito|Emperor|NIL +Hirohito|Japan|NIL +Japan|NIL|NIL +died|NIL|NIL +died|Hirohito|ARG1 +died|1989|ARGM-TMP +died|age|ARGM-TMP +1989|NIL|NIL +age|NIL|NIL +age|87|NIL +87|NIL|NIL +He|NIL|NIL +ascended|NIL|NIL +ascended|He|ARG0 +ascended|throne|ARG1 +ascended|1926|ARGM-TMP +throne|NIL|NIL +1926|NIL|NIL +presided|NIL|NIL +presided|He|ARG0 +presided|over|rel +presided|one|ARG1 +one|NIL|NIL +one|eras|NIL +Japan|NIL|NIL +most|NIL|NIL +tumultuous|NIL|NIL +eras|NIL|NIL +eras|Japan|NIL +eras|most|NIL +eras|tumultuous|NIL +last|NIL|NIL +last|II|NIL +World|NIL|NIL +War|NIL|NIL +II|NIL|NIL +II|World|NIL +II|War|NIL +generation|NIL|NIL +generation|last|NIL +generation|leaders|NIL +leaders|NIL|NIL +leaders|Hirohito|NIL +Hirohito|NIL|NIL +was|generation|AUX-SBJ +was|figure|AUX-PRD +was|death|AUX-LOC +controversial|NIL|NIL +figure|NIL|NIL +figure|a|NIL +figure|controversial|NIL +even|NIL|NIL +death|NIL|NIL +death|even|NIL +western|NIL|NIL +leaders|NIL|NIL +leaders|western|NIL +leaders|generally|NIL +generally|NIL|NIL +Asian|NIL|NIL +leaders|NIL|NIL +leaders|Asian|NIL +whose|countries|NIL +countries|NIL|NIL +suffered|NIL|NIL +suffered|military|ARGM-LOC +suffered|II|ARGM-LOC +Japanese|NIL|NIL +military|NIL|NIL +military|Japanese|NIL +World|NIL|NIL +War|NIL|NIL +II|NIL|NIL +II|World|NIL +II|War|NIL +were|leaders|AUX-SBJ +were|leaders|AUX-SBJ +were|cool|AUX-PRD +cool|NIL|NIL +historians|NIL|NIL +historians|some|NIL +regard|NIL|NIL +regard|historians|ARG0 +regard|him|ARG1 +regard|figurehead|ARG2 +him|NIL|NIL +powerless|NIL|NIL +figurehead|NIL|NIL +figurehead|a|NIL +figurehead|powerless|NIL +others|NIL|NIL +believe|NIL|NIL +believe|regard|ARGM-ADV +believe|others|ARG0 +believe|complicit|ARG1 +he|NIL|NIL +complicit|NIL|NIL +Japanese|NIL|NIL +war|NIL|NIL +crimes|NIL|NIL +crimes|Japanese|NIL +crimes|war|NIL +Hirohito|NIL|NIL +died|NIL|NIL +died|Hirohito|ARG1 +died|cancer|ARGM-CAU +died|illness|ARGM-TMP +cancer|NIL|NIL +long|NIL|NIL +illness|NIL|NIL +illness|a|NIL +illness|long|NIL +succeeded|NIL|NIL +succeeded|Hirohito|ARG1 +succeeded|son|ARG0 +his|NIL|NIL +son|NIL|NIL +son|his|NIL +son|Akihito|NIL +Akihito|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D095.M.100.C.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D095.M.100.C.26.be new file mode 100644 index 0000000000000000000000000000000000000000..e73c89ca7b7796cfb40434a49a3a556950fadff3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D095.M.100.C.26.be @@ -0,0 +1,147 @@ +01/17/1989|NIL|NIL +attack|NIL|NIL +attack|School|NIL +Cleveland|NIL|NIL +Elementary|NIL|NIL +School|NIL|NIL +School|Cleveland|NIL +School|Elementary|NIL +came|NIL|NIL +came|noon|ARGM-TMP +shortly|NIL|NIL +noon|NIL|NIL +noon|shortly|NIL +01/18/1989|NIL|NIL +South|NIL|NIL +Carolina|NIL|NIL +school|NIL|NIL +school|A|NIL +school|South|NIL +school|Carolina|NIL +gunman|NIL|NIL +gunman|a|NIL +killed|NIL|NIL +killed|gunman|ARG0 +killed|girls|ARG1 +killed|Sept.|ARGM-TMP +two|NIL|NIL +8-year-old|NIL|NIL +girls|NIL|NIL +girls|two|NIL +girls|8-year-old|NIL +Sept.|NIL|NIL +Sept.|26|NIL +26|NIL|NIL +send|NIL|NIL +send|01/18/1989|ARG0 +send|school|ARG0 +send|cards|ARG1 +cards|NIL|NIL +offer|NIL|NIL +offer|school|ARG0 +offer|words|ARG1 +offer|school|ARG1 +words|NIL|NIL +words|encouragement|NIL +encouragement|NIL|NIL +California|NIL|NIL +school|NIL|NIL +school|a|NIL +school|California|NIL +lost|NIL|NIL +lost|school|ARG0 +lost|pupils|ARG1 +lost|rampage|ARGM-LOC +five|NIL|NIL +pupils|NIL|NIL +pupils|five|NIL +shooting|NIL|NIL +rampage|NIL|NIL +rampage|a|NIL +01/21/1989|NIL|NIL +Grief-stricken|NIL|NIL +family|NIL|NIL +family|01/21/1989|NIL +family|Grief-stricken|NIL +friends|NIL|NIL +friends|01/21/1989|NIL +friends|Grief-stricken|NIL +mourned|NIL|NIL +mourned|family|ARG0 +mourned|friends|ARG0 +mourned|deaths|ARG1 +deaths|NIL|NIL +deaths|children|NIL +five|NIL|NIL +school|NIL|NIL +children|NIL|NIL +children|five|NIL +children|school|NIL +gunned|NIL|NIL +gunned|children|ARG1 +gunned|down|rel +gunned|recess|ARGM-TMP +gunned|buried|ARGM-TMP +recess|NIL|NIL +killer|NIL|NIL +buried|NIL|NIL +buried|killer|ARG1 +buried|unnoticed|ARG2 +buried|town|ARG2 +nearly|NIL|NIL +unnoticed|NIL|NIL +unnoticed|nearly|NIL +nearby|NIL|NIL +town|NIL|NIL +town|a|NIL +town|nearby|NIL +01/21/1989|NIL|NIL +Patrick|NIL|NIL +Purdy|NIL|NIL +Purdy|01/21/1989|NIL +Purdy|Patrick|NIL +Purdy|24|NIL +24|NIL|NIL +opened|NIL|NIL +opened|Purdy|ARG0 +opened|assault|ARGM-MNR +opened|killing|ARG1 +opened|wounding|ARGM-ADV +fire|NIL|NIL +fire|School|NIL +Cleveland|NIL|NIL +Elementary|NIL|NIL +School|NIL|NIL +School|Cleveland|NIL +School|Elementary|NIL +AK-47|NIL|NIL +semiautomatic|NIL|NIL +assault|NIL|NIL +assault|an|NIL +assault|AK-47|NIL +assault|semiautomatic|NIL +assault|rifle|NIL +assault|firing|NIL +rifle|NIL|NIL +firing|NIL|NIL +firing|rounds|NIL +more|NIL|NIL +than|more|NIL +than|100|NIL +100|NIL|NIL +rounds|NIL|NIL +rounds|than|NIL +killing|NIL|NIL +killing|children|ARG1 +five|NIL|NIL +children|NIL|NIL +children|five|NIL +wounding|NIL|NIL +wounding|others|ARG1 +wounding|teacher|ARG1 +29|NIL|NIL +others|NIL|NIL +others|29|NIL +one|NIL|NIL +teacher|NIL|NIL +teacher|one|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D095.M.100.C.H.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D095.M.100.C.H.be new file mode 100644 index 0000000000000000000000000000000000000000..a09867b017143bda571cee8528971f638d84c076 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D095.M.100.C.H.be @@ -0,0 +1,156 @@ +January|NIL|NIL +January|16|NIL +January|1989|NIL +16|NIL|NIL +1989|NIL|NIL +Patrick|NIL|NIL +Edward|NIL|NIL +Purdy|NIL|NIL +Purdy|Patrick|NIL +Purdy|Edward|NIL +fired|NIL|NIL +fired|Purdy|ARG0 +fired|assault|ARG1 +fired|playground|ARG2 +fired|killing|ARGM-ADV +fired|wounding|ARGM-ADV +fired|killing|ARGM-ADV +AK-47|NIL|NIL +automatic|NIL|NIL +assault|NIL|NIL +assault|an|NIL +assault|AK-47|NIL +assault|automatic|NIL +assault|rifle|NIL +rifle|NIL|NIL +crowded|NIL|NIL +playground|NIL|NIL +playground|a|NIL +playground|crowded|NIL +playground|School|NIL +playground|Stockton|NIL +playground|California|NIL +Cleveland|NIL|NIL +Elementary|NIL|NIL +School|NIL|NIL +School|Cleveland|NIL +School|Elementary|NIL +Stockton|NIL|NIL +California|NIL|NIL +killing|NIL|NIL +killing|children|ARG1 +five|NIL|NIL +children|NIL|NIL +children|five|NIL +wounding|NIL|NIL +wounding|30|ARG1 +30|NIL|NIL +then|NIL|NIL +killing|NIL|NIL +killing|then|ARGM-TMP +killing|himself|ARG1 +himself|NIL|NIL +dead|NIL|NIL +dead|All|NIL +were|dead|AUX-SBJ +were|children|AUX-PRD +were|were|AUX-ADV +children|NIL|NIL +children|refugees|NIL +Southeast|NIL|NIL +Asian|NIL|NIL +refugees|NIL|NIL +refugees|Southeast|NIL +refugees|Asian|NIL +60|NIL|NIL +%|NIL|NIL +%|60|NIL +%|students|NIL +school|NIL|NIL +students|NIL|NIL +students|school|NIL +Translators|NIL|NIL +Buddhist|NIL|NIL +priests|NIL|NIL +assisted|NIL|NIL +assisted|Translators|ARG1 +assisted|Buddhist|ARG1 +assisted|priests|ARG1 +assisted|families|ARG2 +assisted|students|ARG2 +families|NIL|NIL +returning|NIL|NIL +students|NIL|NIL +received|NIL|NIL +received|Translators|ARG0 +received|Buddhist|ARG0 +received|priests|ARG0 +received|counseling|ARG1 +counseling|NIL|NIL +South|NIL|NIL +Carolina|NIL|NIL +school|NIL|NIL +school|A|NIL +school|South|NIL +school|Carolina|NIL +similar|NIL|NIL +attack|NIL|NIL +attack|a|NIL +attack|similar|NIL +occurred|NIL|NIL +occurred|attack|ARG1 +sent|NIL|NIL +sent|school|ARG0 +sent|encouragement|ARG1 +encouragement|NIL|NIL +Governor|NIL|NIL +Deukmejian|NIL|NIL +Deukmejian|Governor|NIL +spoke|NIL|NIL +spoke|Deukmejian|ARG0 +spoke|memorial|ARGM-LOC +spoke|service|ARG1 +one|NIL|NIL +memorial|NIL|NIL +memorial|one|NIL +service|NIL|NIL +Anti-racism|NIL|NIL +statements|NIL|NIL +statements|Anti-racism|NIL +made|NIL|NIL +made|statements|ARG1 +Purdy|NIL|NIL +Purdy|24|NIL +24|NIL|NIL +attended|NIL|NIL +attended|Cleveland|ARG1 +attended|grade|ARGM-MNR +Cleveland|NIL|NIL +Cleveland|Elementary|NIL +Elementary|NIL|NIL +third|NIL|NIL +grade|NIL|NIL +grade|third|NIL +loner|NIL|NIL +loner|A|NIL +he|NIL|NIL +had|loner|ARG0 +had|he|ARG0 +drifted|NIL|NIL +drifted|loner|ARG1 +drifted|he|ARG0 +drifted|country|ARGM-LOC +drifted|searching|ARGM-ADV +country|NIL|NIL +searching|NIL|NIL +searching|work|ARG1 +work|NIL|NIL +had|loner|ARG0 +had|he|ARG0 +had|record.|ARG1 +long|NIL|NIL +criminal|NIL|NIL +record.|NIL|NIL +record.|a|NIL +record.|long|NIL +record.|criminal|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D096.M.100.C.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D096.M.100.C.26.be new file mode 100644 index 0000000000000000000000000000000000000000..3520fcc7fdb036c520b9d6749931b99d322db7d2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D096.M.100.C.26.be @@ -0,0 +1,139 @@ +01/22/1987|NIL|NIL +Sports|NIL|NIL +Illustrated|NIL|NIL +Illustrated|01/22/1987|NIL +Illustrated|Sports|NIL +taking|NIL|NIL +taking|Illustrated|ARG0 +taking|advertisers|ARG1 +taking|weekend|ARG1 +taking|bash|ARG2 +300|NIL|NIL +advertisers|NIL|NIL +advertisers|300|NIL +advertisers|to|NIL +advertisers|Bowl|NIL +advertisers|Pasadena|NIL +Super|NIL|NIL +Bowl|NIL|NIL +Bowl|Super|NIL +Bowl|XXI|NIL +XXI|NIL|NIL +Pasadena|NIL|NIL +Pasadena|Calif.|NIL +Calif.|NIL|NIL +weekend|NIL|NIL +weekend|this|NIL +all-out|NIL|NIL +bash|NIL|NIL +bash|an|NIL +bash|all-out|NIL +11/17/1989|NIL|NIL +Inc.|NIL|NIL +Inc.|11/17/1989|NIL +Miller|NIL|NIL +Brewing|NIL|NIL +Co.|NIL|NIL +Co.|Miller|NIL +Co.|Brewing|NIL +gearing|NIL|NIL +gearing|Inc.|ARG0 +gearing|Co.|ARG0 +gearing|up|rel +gearing|sell|ARG2 +sell|NIL|NIL +sell|beer|ARG1 +sell|staging|ARGM-MNR +their|NIL|NIL +beer|NIL|NIL +beer|their|NIL +staging|NIL|NIL +staging|games|ARG1 +staging|conjunction|ARGM-LOC +mock|NIL|NIL +football|NIL|NIL +games|NIL|NIL +games|mock|NIL +games|football|NIL +games|commercials|NIL +television|NIL|NIL +commercials|NIL|NIL +commercials|television|NIL +conjunction|NIL|NIL +conjunction|XXIV|NIL +Super|NIL|NIL +Bowl|NIL|NIL +Bowl|Super|NIL +XXIV|NIL|NIL +XXIV|Bowl|NIL +XXIV|Orleans|NIL +New|NIL|NIL +Orleans|NIL|NIL +Orleans|New|NIL +11/17/1989|NIL|NIL +first|NIL|NIL +such|NIL|NIL +game|NIL|NIL +game|first|NIL +game|such|NIL +staged|NIL|NIL +staged|game|ARG1 +staged|Bowl|ARGM-TMP +last|NIL|NIL +Super|NIL|NIL +Bowl|NIL|NIL +Bowl|last|NIL +Bowl|Super|NIL +01/30/1990|NIL|NIL +Super|NIL|NIL +Bowl|NIL|NIL +XXIV|NIL|NIL +XXIV|01/30/1990|NIL +XXIV|Super|NIL +XXIV|Bowl|NIL +was|XXIV|AUX-SBJ +was|event|AUX-PRD +most|NIL|NIL +watched|NIL|NIL +watched|most|ARGM-EXT +watched|event|ARG1 +television|NIL|NIL +event|NIL|NIL +event|television|NIL +event|week|NIL +week|NIL|NIL +viewed|NIL|NIL +viewed|%|ARG0 +whopping|NIL|NIL +63|NIL|NIL +%|NIL|NIL +%|a|NIL +%|whopping|NIL +%|63|NIL +%|viewers|NIL +TV|NIL|NIL +viewers|NIL|NIL +viewers|TV|NIL +not|NIL|NIL +even|NIL|NIL +even|not|NIL +even|lift|NIL +Joe|NIL|NIL +Montana|NIL|NIL +Montana|Joe|NIL +lift|NIL|NIL +lift|Montana|ARG0 +lift|CBS|ARG1 +lift|cellar|ARG2 +CBS|NIL|NIL +cellar|NIL|NIL +ratings|NIL|NIL +ratings|even|NIL +ratings|race|NIL +race|NIL|NIL +it|NIL|NIL +reported|NIL|NIL +reported|ratings|ARGM-LOC +reported|it|ARG1 +reported|01/30/1990|ARGM-TMP +01/30/1990|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D096.M.100.C.G.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D096.M.100.C.G.be new file mode 100644 index 0000000000000000000000000000000000000000..92c9d5571722bbdf0fae47b928e5464dc484adfb --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D096.M.100.C.G.be @@ -0,0 +1,131 @@ +San|NIL|NIL +Francisco|NIL|NIL +49ers|NIL|NIL +49ers|San|NIL +49ers|Francisco|NIL +won|NIL|NIL +won|49ers|ARG0 +won|Bowls|ARG1 +won|marking|ARGM-ADV +won|setting|ARGM-ADV +1989|NIL|NIL +1990|NIL|NIL +Super|NIL|NIL +Bowls|NIL|NIL +Bowls|1989|NIL +Bowls|1990|NIL +Bowls|Super|NIL +marking|NIL|NIL +marking|wins|ARG1 +four|NIL|NIL +out|four|NIL +out|of|NIL +out|four|NIL +four|NIL|NIL +wins|NIL|NIL +wins|out|NIL +setting|NIL|NIL +setting|records|ARG1 +several|NIL|NIL +players|NIL|NIL +players|several|NIL +records|NIL|NIL +records|players|NIL +1990|NIL|NIL +Super|NIL|NIL +Bowl|NIL|NIL +Bowl|1990|NIL +Bowl|Super|NIL +was|Bowl|AUX-SBJ +was|lowest|AUX-PRD +was|event|AUX-SBJ +lowest|NIL|NIL +lowest|rated|NIL +rated|NIL|NIL +21|NIL|NIL +years|NIL|NIL +years|21|NIL +most|NIL|NIL +watched|NIL|NIL +watched|most|ARGM-EXT +watched|event|ARG1 +TV|NIL|NIL +event|NIL|NIL +event|TV|NIL +event|week|NIL +week|NIL|NIL +Super|NIL|NIL +Bowl|NIL|NIL +Bowl|Super|NIL +XXV|NIL|NIL +XXV|Bowl|NIL +held|NIL|NIL +held|XXV|ARG1 +held|Tampa|ARGM-LOC +held|1991|ARGM-TMP +Tampa|NIL|NIL +1991|NIL|NIL +feature|NIL|NIL +feature|XXV|ARG0 +feature|events|ARG1 +feature|resolve|ARGM-PNC +local|NIL|NIL +events|NIL|NIL +events|local|NIL +planned|NIL|NIL +planned|committee|ARG0 +committee|NIL|NIL +committee|a|NIL +headed|NIL|NIL +headed|committee|ARG1 +headed|men|ARG0 +two|NIL|NIL +black|NIL|NIL +men|NIL|NIL +men|two|NIL +men|black|NIL +order|NIL|NIL +resolve|NIL|NIL +resolve|area|ARG1 +resolve|dispute|ARG1 +area|NIL|NIL +area|an|NIL +racial|NIL|NIL +dispute|NIL|NIL +dispute|racial|NIL +Only|NIL|NIL +Only|80|NIL +80|NIL|NIL +%|NIL|NIL +%|Only|NIL +%|value|NIL +face|NIL|NIL +value|NIL|NIL +value|face|NIL +value|tickets|NIL +Super|NIL|NIL +Bowl|NIL|NIL +Bowl|Super|NIL +tickets|NIL|NIL +tickets|Bowl|NIL +deducted|NIL|NIL +deducted|%|ARG1 +deducted|now|ARGM-TMP +now|NIL|NIL +Rose|NIL|NIL +Bowl|NIL|NIL +Bowl|Rose|NIL +offered|NIL|NIL +offered|Bowl|ARG1 +offered|rent|ARG1 +rent|NIL|NIL +rent|free|ARGM-MNR +rent|Bowl|ARGM-PNC +free|NIL|NIL +free|NFL|NIL +NFL|NIL|NIL +Super|NIL|NIL +Bowl|NIL|NIL +Bowl|Super|NIL +Bowl|XXVII|NIL +XXVII|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D097.M.100.E.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D097.M.100.E.26.be new file mode 100644 index 0000000000000000000000000000000000000000..c3df51d1fdbe0fe59e636cb4533c870ac9dcd279 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D097.M.100.E.26.be @@ -0,0 +1,128 @@ +09/21/1989|NIL|NIL +09/21/1989|Riley|NIL +Hurricane|NIL|NIL +Riley|NIL|NIL +Riley|Hurricane|NIL +09/25/1989|NIL|NIL +Residents|NIL|NIL +Residents|09/25/1989|NIL +took|NIL|NIL +took|Residents|ARG0 +took|forecasters|ARG1 +took|word|ARGM-LOC +took|warned|ARGM-TMP +forecasters|NIL|NIL +their|NIL|NIL +word|NIL|NIL +word|their|NIL +they|NIL|NIL +warned|NIL|NIL +warned|they|ARG0 +warned|fury|ARG1 +Hurricane|NIL|NIL +Hugo|NIL|NIL +Hugo|Hurricane|NIL +fury|NIL|NIL +fury|Hugo|NIL +low|NIL|NIL +number|NIL|NIL +number|low|NIL +number|deaths|NIL +deaths|NIL|NIL +deaths|storm|NIL +powerful|NIL|NIL +storm|NIL|NIL +storm|powerful|NIL +credited|NIL|NIL +credited|number|ARG1 +credited|respect|ARG2 +healthy|NIL|NIL +respect|NIL|NIL +respect|this|NIL +respect|healthy|NIL +authorities|NIL|NIL +said|NIL|NIL +said|authorities|ARG0 +09/25/1989|NIL|NIL +storm|NIL|NIL +caused|NIL|NIL +caused|storm|ARG0 +caused|billions|ARG1 +billions|NIL|NIL +billions|damage|NIL +damage|NIL|NIL +claimed|NIL|NIL +claimed|storm|ARG0 +claimed|Carolina|ARGM-LOC +17|NIL|NIL +lives|NIL|NIL +lives|17|NIL +South|NIL|NIL +Carolina|NIL|NIL +Carolina|South|NIL +only|NIL|NIL +only|two|NIL +two|NIL|NIL +were|only|AUX-SBJ +were|area|AUX-LOC +Charleston|NIL|NIL +area|NIL|NIL +area|Charleston|NIL +bore|NIL|NIL +bore|brunt|ARG1 +brunt|NIL|NIL +brunt|winds|NIL +Hugo|NIL|NIL +135|NIL|NIL +mph|NIL|NIL +mph|135|NIL +winds|NIL|NIL +winds|Hugo|NIL +winds|mph|NIL +09/27/1989|NIL|NIL +Hurricane|NIL|NIL +Hugo|NIL|NIL +Hugo|Hurricane|NIL +go|NIL|NIL +go|Hugo|ARG1 +go|down|ARGM-DIR +go|books|ARGM-LOC +go|faced|ARGM-ADV +record|NIL|NIL +books|NIL|NIL +books|record|NIL +costliest|NIL|NIL +storm|NIL|NIL +insurers|NIL|NIL +insurers|costliest|NIL +insurers|storm|NIL +faced|NIL|NIL +faced|insurers|ARG0 +faced|far|ARGM-TMP +so|NIL|NIL +far|NIL|NIL +far|so|NIL +it|NIL|NIL +won|NIL|NIL +won|it|ARG0 +won|cause|ARG1 +won|rise|ARG1 +'t|NIL|NIL +cause|NIL|NIL +cause|'t|NIL +property-casualty|NIL|NIL +premium|NIL|NIL +rates|NIL|NIL +rates|property-casualty|NIL +rates|premium|NIL +rise|NIL|NIL +rise|rates|ARG1 +rise|immediately|ARGM-TMP +immediately|NIL|NIL +analysts|NIL|NIL +company|NIL|NIL +officials|NIL|NIL +officials|company|NIL +say|NIL|NIL +say|analysts|ARG0 +say|officials|ARG0 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D097.M.100.E.J.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D097.M.100.E.J.be new file mode 100644 index 0000000000000000000000000000000000000000..0d9abbcff08c76af81fc130121da84c0402f3fcc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D097.M.100.E.J.be @@ -0,0 +1,136 @@ +two|NIL|NIL +largest|NIL|NIL +property|NIL|NIL +insurance|NIL|NIL +companies|NIL|NIL +companies|two|NIL +companies|largest|NIL +companies|property|NIL +companies|insurance|NIL +companies|Carolinas|NIL +companies|Farm|NIL +companies|Nationwide|NIL +Carolinas|NIL|NIL +State|NIL|NIL +Farm|NIL|NIL +Farm|State|NIL +Nationwide|NIL|NIL +estimate|NIL|NIL +estimate|companies|ARG0 +estimate|losses|ARG1 +estimate|$|ARG2 +estimate|making|ARG1 +Hurricane|NIL|NIL +Hugo|NIL|NIL +losses|NIL|NIL +losses|Hurricane|NIL +losses|Hugo|NIL +$|NIL|NIL +$|600|NIL +$|million|NIL +600|NIL|NIL +million|NIL|NIL +making|NIL|NIL +making|it|ARG1 +making|hurricane|ARG1 +it|NIL|NIL +costliest|NIL|NIL +hurricane|NIL|NIL +hurricane|costliest|NIL +hurricane|ever|NIL +ever|NIL|NIL +Hugo|NIL|NIL +Hugo|storm|NIL +Category|NIL|NIL +4|NIL|NIL +storm|NIL|NIL +storm|a|NIL +storm|Category|NIL +storm|4|NIL +dubbed|NIL|NIL +dubbed|storm|ARG1 +dubbed|hurricane|ARG1 +dubbed|mayor|ARG0 +killer|NIL|NIL +hurricane|NIL|NIL +hurricane|a|NIL +hurricane|killer|NIL +Charleston|NIL|NIL +mayor|NIL|NIL +mayor|Charleston|NIL +struck|NIL|NIL +struck|Hugo|ARG0 +struck|city|ARG1 +city|NIL|NIL +Thursday|NIL|NIL +night|NIL|NIL +night|Thursday|NIL +was|there|AUX-SBJ +was|damage|AUX-PRD +significant|NIL|NIL +damage|NIL|NIL +damage|significant|NIL +only|NIL|NIL +only|two|NIL +two|NIL|NIL +killed|NIL|NIL +killed|was|ARGM-ADV +killed|Charleston|ARGM-LOC +Charleston|NIL|NIL +Charleston|total|NIL +17|NIL|NIL +total|NIL|NIL +total|17|NIL +total|Carolina|NIL +South|NIL|NIL +Carolina|NIL|NIL +Carolina|South|NIL +Officials|NIL|NIL +credit|NIL|NIL +credit|Officials|ARG0 +credit|number|ARG1 +low|NIL|NIL +number|NIL|NIL +number|low|NIL +number|fatalities|NIL +fatalities|NIL|NIL +residents|NIL|NIL +heeded|NIL|NIL +heeded|residents|ARG0 +heeded|warnings|ARG1 +Hurricane|NIL|NIL +Center|NIL|NIL +warnings|NIL|NIL +warnings|Hurricane|NIL +warnings|Center|NIL +evacuated|NIL|NIL +evacuated|residents|ARG0 +evacuated|arrival|ARGM-TMP +storm|NIL|NIL +arrival|NIL|NIL +arrival|storm|NIL +Kingston|NIL|NIL +Kingston|York|NIL +New|NIL|NIL +York|NIL|NIL +York|New|NIL +assisted|NIL|NIL +assisted|Kingston|ARG1 +assisted|Charleston|ARG0 +assisted|War|ARGM-TMP +Charleston|NIL|NIL +Revolutionary|NIL|NIL +War|NIL|NIL +War|Revolutionary|NIL +is|Kingston|AUX-SBJ +is|repaying|AUX-ADV +repaying|NIL|NIL +repaying|sending|ARGM-MNR +kindness|NIL|NIL +sending|NIL|NIL +money|NIL|NIL +help|NIL|NIL +help|recover|ARG1 +city|NIL|NIL +recover|NIL|NIL +recover|city|ARG1 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D098.M.100.E.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D098.M.100.E.26.be new file mode 100644 index 0000000000000000000000000000000000000000..ec9ad9f614bd0ff46e52fd84d6ba3aa9f3fd47b2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D098.M.100.E.26.be @@ -0,0 +1,129 @@ +04/25/1990|NIL|NIL +Discovery|NIL|NIL +astronauts|NIL|NIL +astronauts|Discovery|NIL +overcame|NIL|NIL +overcame|astronauts|ARG0 +overcame|equipment|ARG1 +overcame|send|ARGM-PNC +balky|NIL|NIL +equipment|NIL|NIL +equipment|balky|NIL +send|NIL|NIL +send|Telescope|ARG1 +send|floating|ARGM-ADV +Hubble|NIL|NIL +Space|NIL|NIL +Telescope|NIL|NIL +Telescope|Hubble|NIL +Telescope|Space|NIL +floating|NIL|NIL +floating|free|ARGM-MNR +floating|quest|ARGM-LOC +free|NIL|NIL +free|shuttle|NIL +shuttle|NIL|NIL +shuttle|04/25/1990|NIL +04/25/1990|NIL|NIL +15-year|NIL|NIL +quest|NIL|NIL +quest|a|NIL +quest|15-year|NIL +quest|secrets|NIL +secrets|NIL|NIL +secrets|universe|NIL +universe|NIL|NIL +04/25/1990|NIL|NIL +years|NIL|NIL +years|delay|NIL +years|snag|NIL +delay|NIL|NIL +last-minute|NIL|NIL +snag|NIL|NIL +snag|a|NIL +snag|last-minute|NIL +Hubble|NIL|NIL +Space|NIL|NIL +Telescope|NIL|NIL +Telescope|Hubble|NIL +Telescope|Space|NIL +freed|NIL|NIL +freed|Telescope|ARG1 +freed|Discovery|ARG2 +shuttle|NIL|NIL +Discovery|NIL|NIL +Discovery|shuttle|NIL +Discovery|04/25/1990|NIL +04/25/1990|NIL|NIL +drifted|NIL|NIL +drifted|Telescope|ARG1 +drifted|orbit|ARGM-DIR +drifted|search|ARGM-LOC +orbit|NIL|NIL +its|NIL|NIL +15-year|NIL|NIL +search|NIL|NIL +search|its|NIL +search|15-year|NIL +search|worlds|NIL +new|NIL|NIL +worlds|NIL|NIL +worlds|new|NIL +04/25/1990|NIL|NIL +Mission|NIL|NIL +specialist|NIL|NIL +specialist|Mission|NIL +specialist|Steven|NIL +specialist|Hawley|NIL +Steven|NIL|NIL +Hawley|NIL|NIL +released|NIL|NIL +released|specialist|ARG0 +released|Hubble|ARG1 +released|end|ARG3 +released|delay|ARGM-TMP +Hubble|NIL|NIL +end|NIL|NIL +end|arm|NIL +shuttle|NIL|NIL +50-foot-long|NIL|NIL +mechanical|NIL|NIL +arm|NIL|NIL +arm|shuttle|NIL +arm|50-foot-long|NIL +arm|mechanical|NIL +delay|NIL|NIL +delay|a|NIL +getting|NIL|NIL +getting|one|ARG1 +one|NIL|NIL +one|wings|NIL +telescope|NIL|NIL +solar|NIL|NIL +wings|NIL|NIL +wings|telescope|NIL +wings|solar|NIL +unfurled|NIL|NIL +unfurled|wings|ARG1 +04/26/1990|NIL|NIL +Space|NIL|NIL +shuttle|NIL|NIL +shuttle|04/26/1990|NIL +shuttle|Space|NIL +shuttle|Discovery|NIL +Discovery|NIL|NIL +was|shuttle|AUX-SBJ +was|miles|AUX-PRD +was|available|AUX-PRD +46|NIL|NIL +miles|NIL|NIL +miles|46|NIL +miles|away|NIL +away|NIL|NIL +available|NIL|NIL +available|remedy|NIL +remedy|NIL|NIL +remedy|problems|ARG1 +certain|NIL|NIL +problems|NIL|NIL +problems|certain|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D098.M.100.E.A.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D098.M.100.E.A.be new file mode 100644 index 0000000000000000000000000000000000000000..28a4b9d67cc2af9062c9a43b72e60c27e34421b1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D098.M.100.E.A.be @@ -0,0 +1,109 @@ +Scientists|NIL|NIL +elated|NIL|NIL +elated|Scientists|ARG1 +elated|launch|ARG2 +elated|Telescope|ARG2 +successful|NIL|NIL +launch|NIL|NIL +launch|successful|NIL +launch|shuttle|NIL +space|NIL|NIL +shuttle|NIL|NIL +shuttle|space|NIL +shuttle|Discovery|NIL +Discovery|NIL|NIL +Hubble|NIL|NIL +Space|NIL|NIL +Telescope|NIL|NIL +Telescope|Hubble|NIL +Telescope|Space|NIL +Telescope|HST|NIL +HST|NIL|NIL +HST|April|NIL +April|NIL|NIL +April|24|NIL +April|1990|NIL +24|NIL|NIL +1990|NIL|NIL +Deployment|NIL|NIL +Deployment|telescope|NIL +telescope|NIL|NIL +originally|NIL|NIL +scheduled|NIL|NIL +scheduled|Deployment|ARG1 +scheduled|originally|ARGM-TMP +scheduled|1983|ARG3 +1983|NIL|NIL +delayed|NIL|NIL +delayed|Deployment|ARG1 +delayed|problems|ARG0 +delayed|accident|ARG0 +technical|NIL|NIL +problems|NIL|NIL +problems|technical|NIL +Challenger|NIL|NIL +accident|NIL|NIL +accident|Challenger|NIL +communications|NIL|NIL +electronics|NIL|NIL +systems|NIL|NIL +HST|NIL|NIL +still|NIL|NIL +presented|NIL|NIL +presented|communications|ARG0 +presented|electronics|ARG0 +presented|systems|ARG0 +presented|still|ARGM-DIS +problems|NIL|NIL +problems|some|NIL +April|NIL|NIL +April|28|NIL +28|NIL|NIL +telescope|NIL|NIL +was|presented|AUX-ADV +was|April|AUX-TMP +was|telescope|AUX-SBJ +was|orbit|AUX-LOC +was|miles|AUX-LOC +orbit|NIL|NIL +380|NIL|NIL +miles|NIL|NIL +miles|380|NIL +miles|atmosphere|NIL +earth|NIL|NIL +atmosphere|NIL|NIL +atmosphere|earth|NIL +atmosphere|potential|NIL +potential|NIL|NIL +providing|NIL|NIL +providing|resolution|ARG1 +providing|sensitivity|ARG1 +10|NIL|NIL +times|NIL|NIL +times|10|NIL +better|NIL|NIL +resolution|NIL|NIL +resolution|times|NIL +resolution|better|NIL +25|NIL|NIL +times|NIL|NIL +times|25|NIL +times|more|NIL +more|NIL|NIL +sensitivity|NIL|NIL +sensitivity|times|NIL +sensitivity|ground|NIL +ground|NIL|NIL +ground|observatories|NIL +based|NIL|NIL +based|observatories|ARG1 +observatories|NIL|NIL +Discovery|NIL|NIL +astronauts|NIL|NIL +astronauts|Discovery|NIL +permitted|NIL|NIL +permitted|astronauts|ARG2 +permitted|return|ARG1 +return|NIL|NIL +return|Earth|ARG2 +Earth|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D099.M.100.E.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D099.M.100.E.26.be new file mode 100644 index 0000000000000000000000000000000000000000..0adf03b7ab0c6563e1481dfa73008fd3597a018b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D099.M.100.E.26.be @@ -0,0 +1,137 @@ +02/20/1987|NIL|NIL +Marathons|NIL|NIL +Marathons|02/20/1987|NIL +had|Marathons|ARG0 +corporate|NIL|NIL +backing|NIL|NIL +backing|corporate|NIL +backing|time|NIL +time|NIL|NIL +time|some|NIL +06/19/1991|NIL|NIL +women|NIL|NIL +field|NIL|NIL +field|women|NIL +field|Marathon|NIL +06/23/1991|NIL|NIL +San|NIL|NIL +Francisco|NIL|NIL +Marathon|NIL|NIL +Marathon|on|NIL +Marathon|San|NIL +Marathon|Francisco|NIL +appears|NIL|NIL +appears|field|ARG1 +appears|impressive|ARG1 +mighty|NIL|NIL +impressive|NIL|NIL +impressive|mighty|NIL +impressive|race|NIL +race|NIL|NIL +race|Nichols|NIL +President|NIL|NIL +Rich|NIL|NIL +Nichols|NIL|NIL +Nichols|President|NIL +Nichols|Rich|NIL +n't|NIL|NIL +do|Nichols|ARG0 +do|much|ARGM-MNR +do|coaxing|ARGM-ADV +much|NIL|NIL +coaxing|NIL|NIL +coaxing|get|ARG1 +get|NIL|NIL +highly|NIL|NIL +ranked|NIL|NIL +ranked|highly|ARGM-EXT +ranked|women|ARG1 +women|NIL|NIL +enter|NIL|NIL +enter|women|ARG0 +06/19/1991|NIL|NIL +Most|NIL|NIL +top-ranked|NIL|NIL +top-ranked|Most|NIL +U.S.|NIL|NIL +women|NIL|NIL +women|06/19/1991|NIL +women|top-ranked|NIL +women|U.S.|NIL +looking|NIL|NIL +looking|women|ARG0 +looking|marathon|ARG1 +summer-time|NIL|NIL +marathon|NIL|NIL +marathon|any|NIL +marathon|summer-time|NIL +in|which|NIL +run|NIL|NIL +San|NIL|NIL +Francisco|NIL|NIL +version|NIL|NIL +version|San|NIL +version|Francisco|NIL +offers|NIL|NIL +offers|version|ARG0 +offers|conditions|ARG1 +excellent|NIL|NIL +conditions|NIL|NIL +conditions|excellent|NIL +06/19/1991|NIL|NIL +The|NIL|NIL +hills|NIL|NIL +hills|06/19/1991|NIL +hills|The|NIL +hills|Francisco|NIL +San|NIL|NIL +Francisco|NIL|NIL +Francisco|San|NIL +make|NIL|NIL +make|hills|ARG0 +make|challenging|ARG2 +marathon|NIL|NIL +marathon|this|NIL +challenging|NIL|NIL +challenging|marathon|NIL +08/08/1992|NIL|NIL +Run|NIL|NIL +high|NIL|NIL +heat|NIL|NIL +heat|high|NIL +heat|humidity|NIL +heat|levels|NIL +heat|course|NIL +high|NIL|NIL +humidity|NIL|NIL +humidity|high|NIL +high|NIL|NIL +pollution|NIL|NIL +levels|NIL|NIL +levels|high|NIL +levels|pollution|NIL +extraordinary|NIL|NIL +course|NIL|NIL +course|an|NIL +course|extraordinary|NIL +Barcelona|NIL|NIL +Olympic|NIL|NIL +men|NIL|NIL +men|Barcelona|NIL +men|Olympic|NIL +marathon|NIL|NIL +marathon|men|NIL +prove|NIL|NIL +prove|Run|ARGM-ADV +prove|one|ARG1 +one|NIL|NIL +one|most|NIL +most|NIL|NIL +most|demanding|NIL +physically|NIL|NIL +demanding|NIL|NIL +demanding|physically|ARGM-MNR +demanding|run|ARG1 +ever|NIL|NIL +run|NIL|NIL +run|ever|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D099.M.100.E.D.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D099.M.100.E.D.be new file mode 100644 index 0000000000000000000000000000000000000000..b5159d2ba81890e475406d515b84ee5597138f8f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D099.M.100.E.D.be @@ -0,0 +1,134 @@ +Marathons|NIL|NIL +attract|NIL|NIL +attract|Marathons|ARG0 +attract|athletes|ARG1 +professional|NIL|NIL +athletes|NIL|NIL +athletes|both|NIL +athletes|professional|NIL +athletes|well|NIL +athletes|runners|NIL +as|NIL|NIL +well|NIL|NIL +well|as|NIL +well|as|NIL +amateur|NIL|NIL +runners|NIL|NIL +runners|amateur|NIL +marathons|NIL|NIL +marathons|Some|NIL +marathons|Angeles|NIL +such|NIL|NIL +Los|NIL|NIL +Angeles|NIL|NIL +Angeles|such|NIL +Angeles|Los|NIL +Angeles|'|NIL +concentrate|NIL|NIL +concentrate|marathons|ARG0 +concentrate|side|ARG1 +concentrate|marathons|ARG1 +concentrate|attract|ARGM-ADV +commercial|NIL|NIL +moneymaking|NIL|NIL +side|NIL|NIL +side|commercial|NIL +side|moneymaking|NIL +marathons|NIL|NIL +marathons|commercial|NIL +marathons|moneymaking|NIL +other|NIL|NIL +cities|NIL|NIL +cities|other|NIL +cities|York|NIL +cities|Boston|NIL +cities|Francisco|NIL +such|NIL|NIL +New|NIL|NIL +York|NIL|NIL +York|such|NIL +York|New|NIL +Boston|NIL|NIL +Boston|such|NIL +San|NIL|NIL +Francisco|NIL|NIL +Francisco|such|NIL +Francisco|San|NIL +attract|NIL|NIL +attract|cities|ARG0 +attract|runners|ARG1 +world-class|NIL|NIL +runners|NIL|NIL +runners|world-class|NIL +Still|NIL|NIL +others|NIL|NIL +others|marathon|NIL +such|NIL|NIL +Marine|NIL|NIL +Corps|NIL|NIL +Corps|Marine|NIL +marathon|NIL|NIL +marathon|such|NIL +marathon|Corps|NIL +bills|NIL|NIL +bills|marathon|ARG0 +bills|itself|ARG1 +bills|race|ARG2 +itself|NIL|NIL +people|NIL|NIL +race|NIL|NIL +race|people|NIL +are|others|AUX-SBJ +just|NIL|NIL +sport|NIL|NIL +Tour|NIL|NIL +companies|NIL|NIL +companies|Tour|NIL +sponsor|NIL|NIL +sponsor|companies|ARG0 +sponsor|trips|ARG1 +sponsor|offering|ARGM-ADV +international|NIL|NIL +trips|NIL|NIL +trips|international|NIL +organized|NIL|NIL +organized|trips|ARG1 +organized|marathons|ARGM-LOC +marathons|NIL|NIL +offering|NIL|NIL +offering|clients|ARG1 +offering|chance|ARG1 +clients|NIL|NIL +chance|NIL|NIL +chance|a|NIL +run|NIL|NIL +run|some|ARGM-LOC +some|marathons|NIL +most|NIL|NIL +popular|NIL|NIL +popular|most|NIL +marathons|NIL|NIL +marathons|popular|NIL +marathons|world|NIL +world|NIL|NIL +Age|NIL|NIL +barrier|NIL|NIL +to|no|NIL +to|barrier|NIL +to|marathon|NIL +marathon|NIL|NIL +running|NIL|NIL +running|to|ARGM-MNR +John|NIL|NIL +Kelley|NIL|NIL +Kelley|John|NIL +Kelley|83|NIL +83|NIL|NIL +plans|NIL|NIL +plans|Kelley|ARG0 +plans|run|ARG1 +run|NIL|NIL +run|marathon|ARGM-LOC +Boston|NIL|NIL +marathon|NIL|NIL +marathon|Boston|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D100.M.100.E.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D100.M.100.E.26.be new file mode 100644 index 0000000000000000000000000000000000000000..1fb26db3133843751bd4fb2169b703077526a775 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D100.M.100.E.26.be @@ -0,0 +1,143 @@ +08/08/1988|NIL|NIL +08/08/1988|singer-songwriter|NIL +08/08/1988|wrote|NIL +John|NIL|NIL +Lennon|NIL|NIL +singer-songwriter|NIL|NIL +singer-songwriter|John|NIL +singer-songwriter|Lennon|NIL +wrote|NIL|NIL +wrote|Imagine|ARG1 +wrote|70.|ARGM-TMP +song|NIL|NIL +Imagine|NIL|NIL +1969|NIL|NIL +70.|NIL|NIL +70.|1969|NIL +09/15/1988|NIL|NIL +biography|NIL|NIL +biography|A|NIL +portrays|NIL|NIL +portrays|Lennon|ARG1 +portrays|bisexual|ARG2 +John|NIL|NIL +Lennon|NIL|NIL +Lennon|John|NIL +drug-addled|NIL|NIL +anorexic|NIL|NIL +bisexual|NIL|NIL +bisexual|a|NIL +bisexual|drug-addled|NIL +bisexual|anorexic|NIL +raged|NIL|NIL +raged|bisexual|ARG0 +raged|way|ARG1 +raged|Liverpool|ARG2 +raged|City|ARG2 +his|NIL|NIL +way|NIL|NIL +way|his|NIL +Liverpool|NIL|NIL +New|NIL|NIL +York|NIL|NIL +City|NIL|NIL +City|New|NIL +City|York|NIL +is|biography|AUX-SBJ +is|fiction|AUX-PRD +totally|NIL|NIL +fiction|NIL|NIL +fiction|totally|NIL +Yoko|NIL|NIL +Ono|NIL|NIL +Ono|Yoko|NIL +said|NIL|NIL +said|Ono|ARG0 +said|broadcast|ARGM-LOC +national|NIL|NIL +radio|NIL|NIL +broadcast|NIL|NIL +broadcast|a|NIL +broadcast|national|NIL +broadcast|radio|NIL +09/15/1988|NIL|NIL +Ono|NIL|NIL +Goldman|NIL|NIL +shows|NIL|NIL +shows|Ono|ARGM-ADV +shows|Goldman|ARG0 +shows|her|ARG2 +shows|gold-digger|ARG2 +her|NIL|NIL +gold-digger|NIL|NIL +gold-digger|a|NIL +snorted|NIL|NIL +snorted|gold-digger|ARG1 +snorted|heroin|ARGM-ADV +heroin|NIL|NIL +heroin|up|rel +time|NIL|NIL +time|death|NIL +Lennon|NIL|NIL +death|NIL|NIL +death|Lennon|NIL +09/15/1988|NIL|NIL +Ono|NIL|NIL +Ono|09/15/1988|NIL +refuted|NIL|NIL +refuted|Ono|ARG0 +refuted|virtually|ARG1 +virtually|NIL|NIL +virtually|all|NIL +virtually|charges|NIL +charges|NIL|NIL +charges|these|NIL +countered|NIL|NIL +countered|Ono|ARG0 +countered|interviews|ARG2 +countered|based|ARG2 +taped|NIL|NIL +taped|interviews|ARG1 +interviews|NIL|NIL +interviews|Lennon|NIL +interviews|friends|NIL +interviews|employees|NIL +Lennon|NIL|NIL +friends|NIL|NIL +employees|NIL|NIL +Goldman|NIL|NIL +book|NIL|NIL +book|Goldman|NIL +based|NIL|NIL +based|book|ARG1 +based|sources|ARG2 +based|misquotes|ARG2 +unreliable|NIL|NIL +sources|NIL|NIL +sources|unreliable|NIL +misquotes|NIL|NIL +05/05/1990|NIL|NIL +Tickets|NIL|NIL +Tickets|05/05/1990|NIL +were|Tickets|AUX-SBJ +were|41|AUX-PRD +$|NIL|NIL +41|NIL|NIL +41|$|NIL +41|concert|NIL +41|featured|NIL +charity|NIL|NIL +benefit|NIL|NIL +concert|NIL|NIL +concert|charity|NIL +concert|benefit|NIL +featured|NIL|NIL +featured|program|ARG1 +program|NIL|NIL +program|a|NIL +program|Beatles|NIL +program|Lennon|NIL +program|songs|NIL +Beatles|NIL|NIL +Lennon|NIL|NIL +songs|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D100.M.100.E.F.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D100.M.100.E.F.be new file mode 100644 index 0000000000000000000000000000000000000000..877a346241243145593bc139d1f817ccdd0d185d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D100.M.100.E.F.be @@ -0,0 +1,130 @@ +John|NIL|NIL +Lennon|NIL|NIL +Lennon|John|NIL +was|Lennon|AUX-SBJ +was|celebrated|AUX-PRD +was|peace|AUX-PRD +celebrated|NIL|NIL +celebrated|life|NIL +celebrated|death|NIL +life|NIL|NIL +death|NIL|NIL +his|NIL|NIL +music|NIL|NIL +music|his|NIL +commitment|NIL|NIL +commitment|his|NIL +world|NIL|NIL +peace|NIL|NIL +peace|his|NIL +peace|world|NIL +He|NIL|NIL +had|He|ARG0 +had|detractors|ARG1 +detractors|NIL|NIL +detractors|biographer|NIL +namely|NIL|NIL +celebrity|NIL|NIL +biographer|NIL|NIL +biographer|namely|NIL +biographer|a|NIL +biographer|celebrity|NIL +biographer|Lives|NIL +Lives|NIL|NIL +Lives|Lennon|NIL +John|NIL|NIL +Lennon|NIL|NIL +Lennon|John|NIL +His|NIL|NIL +widow|NIL|NIL +widow|His|NIL +Yoko|NIL|NIL +Ono|NIL|NIL +Ono|Yoko|NIL +former|NIL|NIL +wife|NIL|NIL +wife|former|NIL +sons|NIL|NIL +refuted|NIL|NIL +refuted|widow|ARG0 +refuted|Ono|ARG0 +refuted|wife|ARG0 +refuted|sons|ARG0 +refuted|misdeeds|ARG1 +alleged|NIL|NIL +alleged|misdeeds|ARG1 +misdeeds|NIL|NIL +contained|NIL|NIL +contained|misdeeds|ARG1 +contained|book|ARG0 +book|NIL|NIL +book|that|NIL +50th|NIL|NIL +anniversary|NIL|NIL +anniversary|50th|NIL +anniversary|birth|NIL +his|NIL|NIL +birth|NIL|NIL +birth|his|NIL +his|NIL|NIL +song|NIL|NIL +song|his|NIL +Imagine|NIL|NIL +Imagine|anniversary|ARGM-TMP +broadcast|NIL|NIL +broadcast|audience|ARG2 +worldwide|NIL|NIL +audience|NIL|NIL +audience|an|NIL +audience|people|NIL +one|NIL|NIL +one|billion|NIL +billion|NIL|NIL +people|NIL|NIL +people|one|NIL +tenth|NIL|NIL +anniversary|NIL|NIL +anniversary|tenth|NIL +anniversary|murder|NIL +his|NIL|NIL +murder|NIL|NIL +murder|his|NIL +admirers|NIL|NIL +gathered|NIL|NIL +gathered|anniversary|ARGM-TMP +gathered|admirers|ARG0 +gathered|Liverpool|ARGM-LOC +gathered|locations|ARGM-LOC +gathered|pay|ARGM-PNC +Liverpool|NIL|NIL +other|NIL|NIL +locations|NIL|NIL +locations|other|NIL +locations|world|NIL +world|NIL|NIL +pay|NIL|NIL +pay|homage|ARG1 +homage|NIL|NIL +Ono|NIL|NIL +kept|NIL|NIL +kept|Ono|ARG0 +kept|alive|ARG1 +kept|many|ARG1 +kept|believe|ARG1 +his|NIL|NIL +memory|NIL|NIL +memory|his|NIL +alive|NIL|NIL +alive|memory|NIL +many|NIL|NIL +many|memory|NIL +believe|NIL|NIL +believe|does|ARG1 +she|NIL|NIL +does|she|ARG0 +does|so|ARG1 +does|reasons|ARGM-PNC +so|NIL|NIL +mercenary|NIL|NIL +reasons|NIL|NIL +reasons|mercenary|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D101.M.100.E.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D101.M.100.E.26.be new file mode 100644 index 0000000000000000000000000000000000000000..9f20cae165d710688ad277f880250511cd3c141d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D101.M.100.E.26.be @@ -0,0 +1,125 @@ +08/22/1991|NIL|NIL +Earlier|NIL|NIL +he|NIL|NIL +told|NIL|NIL +told|08/22/1991|ARG0 +told|he|ARG0 +told|reporters|ARG2 +told|killed|ARG1 +reporters|NIL|NIL +he|NIL|NIL +killed|NIL|NIL +killed|he|ARG0 +killed|himself|ARG1 +himself|NIL|NIL +rather|NIL|NIL +than|rather|NIL +than|submit|NIL +submit|NIL|NIL +submit|arrangement|ARG1 +forced|NIL|NIL +arrangement|NIL|NIL +arrangement|any|NIL +arrangement|forced|NIL +arrangement|leaders|NIL +coup|NIL|NIL +leaders|NIL|NIL +leaders|coup|NIL +08/23/1991|NIL|NIL +Mikhail|NIL|NIL +Gorbachev|NIL|NIL +Gorbachev|08/23/1991|NIL +Gorbachev|Mikhail|NIL +Boris|NIL|NIL +Yeltsin|NIL|NIL +Yeltsin|Boris|NIL +launched|NIL|NIL +launched|Gorbachev|ARG0 +launched|Yeltsin|ARG0 +launched|purge|ARG1 +launched|ouster|ARGM-ADV +sweeping|NIL|NIL +purge|NIL|NIL +purge|a|NIL +purge|sweeping|NIL +purge|08/23/1991|NIL +08/23/1991|NIL|NIL +dealt|NIL|NIL +dealt|purge|ARG0 +dealt|series|ARG1 +dealt|structure|ARG1 +series|NIL|NIL +series|a|NIL +series|blows|NIL +stunning|NIL|NIL +blows|NIL|NIL +blows|stunning|NIL +Communist|NIL|NIL +Party|NIL|NIL +Party|Communist|NIL +power|NIL|NIL +structure|NIL|NIL +structure|Party|NIL +structure|power|NIL +including|NIL|NIL +ouster|NIL|NIL +ouster|officials|NIL +top|NIL|NIL +officials|NIL|NIL +officials|top|NIL +sealing|NIL|NIL +party|NIL|NIL +headquarters|NIL|NIL +headquarters|party|NIL +curtailing|NIL|NIL +party|NIL|NIL +activities|NIL|NIL +activities|party|NIL +08/23/1991|NIL|NIL +Yeltsin|NIL|NIL +Yeltsin|08/23/1991|NIL +led|NIL|NIL +led|Yeltsin|ARG0 +led|resistance|ARG1 +nationwide|NIL|NIL +resistance|NIL|NIL +resistance|nationwide|NIL +resistance|coup|NIL +coup|NIL|NIL +announced|NIL|NIL +announced|Yeltsin|ARG0 +announced|ban|ARG1 +announced|republic|ARGM-LOC +announced|army|ARGM-LOC +announced|units|ARGM-LOC +announced|KGB|ARGM-LOC +ban|NIL|NIL +ban|a|NIL +ban|activities|NIL +Communist|NIL|NIL +Party|NIL|NIL +Party|Communist|NIL +activities|NIL|NIL +activities|Party|NIL +Russian|NIL|NIL +republic|NIL|NIL +republic|Russian|NIL +army|NIL|NIL +police|NIL|NIL +units|NIL|NIL +units|police|NIL +units|Ministry|NIL +Interior|NIL|NIL +Ministry|NIL|NIL +Ministry|Interior|NIL +KGB|NIL|NIL +decades|NIL|NIL +helped|NIL|NIL +helped|KGB|ARG0 +helped|decades|ARGM-ADV +helped|enforce|ARG1 +enforce|NIL|NIL +enforce|rule|ARG1 +Communist|NIL|NIL +rule|NIL|NIL +rule|Communist|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D101.M.100.E.G.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D101.M.100.E.G.be new file mode 100644 index 0000000000000000000000000000000000000000..ee8927a6650ec1dcc63aea671576110ab13a9323 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D101.M.100.E.G.be @@ -0,0 +1,118 @@ +Soviet|NIL|NIL +President|NIL|NIL +Mikhail|NIL|NIL +Gorbachev|NIL|NIL +Gorbachev|Soviet|NIL +Gorbachev|President|NIL +Gorbachev|Mikhail|NIL +returned|NIL|NIL +returned|Gorbachev|ARG1 +returned|power|ARG4 +returned|collapsed|ARGM-TMP +power|NIL|NIL +coup|NIL|NIL +coup|him|NIL +him|NIL|NIL +collapsed|NIL|NIL +collapsed|coup|ARG1 +collapsed|unraveling|ARGM-ADV +unraveling|NIL|NIL +unraveling|swiftly|ARGM-MNR +unraveling|was|ARGM-ADV +swiftly|NIL|NIL +junta|NIL|NIL +was|junta|AUX-SBJ +was|unable|AUX-PRD +unable|NIL|NIL +unable|cope|NIL +cope|NIL|NIL +cope|thousands|ARG1 +thousands|NIL|NIL +thousands|people|NIL +people|NIL|NIL +created|NIL|NIL +created|people|ARG0 +created|barricades|ARG1 +barricades|NIL|NIL +barricades|Parliament|NIL +Russian|NIL|NIL +Parliament|NIL|NIL +Parliament|Russian|NIL +Parliament|stronghold|NIL +Russian|NIL|NIL +President|NIL|NIL +Yeltsin|NIL|NIL +Yeltsin|Russian|NIL +Yeltsin|President|NIL +stronghold|NIL|NIL +stronghold|Yeltsin|NIL +national|NIL|NIL +legislature|NIL|NIL +legislature|national|NIL +demanded|NIL|NIL +demanded|legislature|ARG0 +demanded|reinstatement|ARG1 +Gorbachev|NIL|NIL +reinstatement|NIL|NIL +reinstatement|Gorbachev|NIL +Communist|NIL|NIL +Party|NIL|NIL +Party|Communist|NIL +seeking|NIL|NIL +seeking|salvage|ARG1 +salvage|NIL|NIL +salvage|image|ARG1 +its|NIL|NIL +image|NIL|NIL +image|its|NIL +denounced|NIL|NIL +denounced|seeking|ARGM-ADV +takeover|NIL|NIL +real|NIL|NIL +issue|NIL|NIL +issue|real|NIL +issue|failure|NIL +coup|NIL|NIL +failure|NIL|NIL +failure|coup|NIL +was|issue|AUX-SBJ +was|Gorbachev|AUX-PRD +not|NIL|NIL +Gorbachev|NIL|NIL +new|NIL|NIL +political|NIL|NIL +culture|NIL|NIL +culture|new|NIL +culture|political|NIL +culture|democracy|NIL +democracy|NIL|NIL +he|NIL|NIL +initiated|NIL|NIL +initiated|culture|ARG0 +initiated|he|ARG0 +first|NIL|NIL +Gorbachev|NIL|NIL +Yeltsin|NIL|NIL +appeared|NIL|NIL +appeared|Gorbachev|ARG1 +appeared|Yeltsin|ARG1 +appeared|equals|ARGM-TMP +equals|NIL|NIL +Yeltsin|NIL|NIL +challenged|NIL|NIL +challenged|Yeltsin|ARG0 +challenged|Party|ARG1 +Communist|NIL|NIL +Party|NIL|NIL +Party|Communist|NIL +stayed|NIL|NIL +stayed|close|ARGM-LOC +close|NIL|NIL +close|people|NIL +Russian|NIL|NIL +people|NIL|NIL +people|Russian|NIL +trumped|NIL|NIL +trumped|Yeltsin|ARG0 +trumped|Gorbachev|ARG1 +Gorbachev|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D102.M.100.E.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D102.M.100.E.26.be new file mode 100644 index 0000000000000000000000000000000000000000..4bdff9d5583c5efdd3ec1e3d1676402cac6b9de8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D102.M.100.E.26.be @@ -0,0 +1,148 @@ +04/26/1989|NIL|NIL +Lucille|NIL|NIL +Ball|NIL|NIL +Ball|04/26/1989|NIL +Ball|Lucille|NIL +Ball|comedienne|NIL +gifted|NIL|NIL +comedienne|NIL|NIL +comedienne|a|NIL +comedienne|gifted|NIL +brought|NIL|NIL +brought|comedienne|ARG0 +brought|laughter|ARG1 +brought|millions|ARG2 +laughter|NIL|NIL +millions|NIL|NIL +04/26/1989|NIL|NIL +Lucille|NIL|NIL +Ball|NIL|NIL +Ball|Lucille|NIL +Ball|showgirl|NIL +Ball|model|NIL +Ball|movie|NIL +Ball|queen|NIL +leggy|NIL|NIL +showgirl|NIL|NIL +showgirl|leggy|NIL +showgirl|B-grade|NIL +model|NIL|NIL +model|leggy|NIL +model|B-grade|NIL +B-grade|NIL|NIL +movie|NIL|NIL +movie|leggy|NIL +movie|B-grade|NIL +queen|NIL|NIL +queen|leggy|NIL +queen|B-grade|NIL +pumpkin-colored|NIL|NIL +hair|NIL|NIL +genius|NIL|NIL +comedy|NIL|NIL +made|NIL|NIL +made|her|ARG1 +made|icon|ARG1 +her|NIL|NIL +icon|NIL|NIL +icon|an|NIL +icon|years|NIL +television|NIL|NIL +early|NIL|NIL +years|NIL|NIL +years|television|NIL +years|early|NIL +died|NIL|NIL +died|04/26/1989|ARG1 +died|Ball|ARG1 +died|early|ARGM-TMP +died|04/26/1989|ARGM-TMP +died|undergoing|ARGM-TMP +early|NIL|NIL +04/26/1989|NIL|NIL +week|NIL|NIL +week|a|NIL +undergoing|NIL|NIL +undergoing|surgery|ARG2 +emergency|NIL|NIL +heart|NIL|NIL +surgery|NIL|NIL +surgery|emergency|NIL +surgery|heart|NIL +04/26/1989|NIL|NIL +Miss|NIL|NIL +Ball|NIL|NIL +Ball|04/26/1989|NIL +Ball|Miss|NIL +had|Ball|ARG0 +had|attack|ARG1 +heart|NIL|NIL +attack|NIL|NIL +attack|a|NIL +attack|heart|NIL +had|Ball|ARG0 +had|surgery|ARG1 +throat|NIL|NIL +surgery|NIL|NIL +surgery|throat|NIL +surgery|1988|NIL +1988|NIL|NIL +underwent|NIL|NIL +underwent|Ball|ARG1 +underwent|surgery|ARG2 +underwent|Cedars-Sinai|ARGM-LOC +underwent|April|ARGM-TMP +underwent|replace|ARGM-PNC +underwent|getting|ARGM-ADV +surgery|NIL|NIL +Cedars-Sinai|NIL|NIL +April|NIL|NIL +April|18|NIL +18|NIL|NIL +replace|NIL|NIL +replace|valve|ARG1 +her|NIL|NIL +aorta|NIL|NIL +aortic|NIL|NIL +valve|NIL|NIL +valve|her|NIL +valve|aorta|NIL +valve|aortic|NIL +getting|NIL|NIL +getting|out|rel +getting|bed|ARG2 +getting|eating|ARGM-ADV +getting|walking|ARGM-ADV +bed|NIL|NIL +eating|NIL|NIL +even|NIL|NIL +walking|NIL|NIL +walking|even|ARGM-ADV +walking|room|ARG1 +room|NIL|NIL +room|days|NIL +recent|NIL|NIL +days|NIL|NIL +days|recent|NIL +04/27/1989|NIL|NIL +private|NIL|NIL +burial|NIL|NIL +burial|A|NIL +burial|private|NIL +planned|NIL|NIL +planned|burial|ARG1 +planned|services|ARGM-MNR +reportedly|NIL|NIL +funeral|NIL|NIL +services|NIL|NIL +services|reportedly|NIL +services|no|NIL +services|funeral|NIL +services|accordance|NIL +accordance|NIL|NIL +accordance|wishes|NIL +Miss|NIL|NIL +Ball|NIL|NIL +Ball|Miss|NIL +wishes|NIL|NIL +wishes|Ball|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D102.M.100.E.D.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D102.M.100.E.D.be new file mode 100644 index 0000000000000000000000000000000000000000..fda997e362827dddaad6c7027d5c5f86a905e39a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D102.M.100.E.D.be @@ -0,0 +1,122 @@ +Lucille|NIL|NIL +Ball|NIL|NIL +Ball|Lucille|NIL +died|NIL|NIL +died|Ball|ARG1 +died|April|ARGM-TMP +died|age|ARGM-TMP +April|NIL|NIL +April|1989|NIL +1989|NIL|NIL +age|NIL|NIL +age|77|NIL +77|NIL|NIL +long|NIL|NIL +remembered|NIL|NIL +remembered|Ball|ARG1 +remembered|long|ARGM-TMP +She|NIL|NIL +made|NIL|NIL +made|She|ARG0 +made|look|ARG2 +her|NIL|NIL +craft|NIL|NIL +craft|her|NIL +look|NIL|NIL +look|craft|ARG0 +easy|NIL|NIL +spontaneous|NIL|NIL +unrehearsed|NIL|NIL +result|NIL|NIL +was|result|AUX-SBJ +durable|NIL|NIL +probably|NIL|NIL +finest|NIL|NIL +series|NIL|NIL +series|finest|NIL +series|television|NIL +television|NIL|NIL +I|NIL|NIL +Love|NIL|NIL +Love|I|ARG0 +Love|Lucy|ARG1 +Lucy|NIL|NIL +She|NIL|NIL +starred|NIL|NIL +starred|She|ARG0 +show|NIL|NIL +show|along|NIL +along|husband|NIL +her|NIL|NIL +husband|NIL|NIL +husband|her|NIL +husband|Arnaz|NIL +Desi|NIL|NIL +Arnaz|NIL|NIL +Arnaz|Desi|NIL +together|NIL|NIL +they|NIL|NIL +founded|NIL|NIL +founded|together|ARGM-MNR +founded|they|ARG0 +founded|Desilu|ARG1 +Desilu|NIL|NIL +Desilu|Productions|NIL +Productions|NIL|NIL +eventually|NIL|NIL +took|NIL|NIL +took|Desilu|ARG0 +took|eventually|ARGM-TMP +took|over|rel +took|RKO|ARG1 +took|television|ARG1 +RKO|NIL|NIL +RKO|Studios|NIL +Studios|NIL|NIL +television|NIL|NIL +produced|NIL|NIL +produced|Desilu|ARG0 +produced|eventually|ARGM-TMP +produced|shows|ARG1 +many|NIL|NIL +popular|NIL|NIL +television|NIL|NIL +shows|NIL|NIL +shows|many|NIL +shows|popular|NIL +shows|television|NIL +couple|NIL|NIL +had|couple|ARG0 +had|children|ARG1 +two|NIL|NIL +children|NIL|NIL +children|two|NIL +divorced|NIL|NIL +divorced|couple|ARG0 +divorced|1960|ARGM-TMP +1960|NIL|NIL +Condolences|NIL|NIL +poured|NIL|NIL +poured|Condolences|ARG0 +poured|form|ARGM-MNR +form|NIL|NIL +form|country|NIL +country|NIL|NIL +country|all|NIL +in|which|NIL +she|NIL|NIL +credited|NIL|NIL +credited|she|ARG1 +helping|NIL|NIL +helping|establish|ARG1 +establish|NIL|NIL +establish|television|ARG1 +establish|industry|ARG2 +television|NIL|NIL +nation|NIL|NIL +leading|NIL|NIL +leading|industry|ARG0 +entertainment|NIL|NIL +industry|NIL|NIL +industry|nation|NIL +industry|entertainment|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D103.M.100.G.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D103.M.100.G.26.be new file mode 100644 index 0000000000000000000000000000000000000000..a91e764817c8a66b3492e552fc16f73c18840323 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D103.M.100.G.26.be @@ -0,0 +1,122 @@ +06/22/1990|NIL|NIL +earthquake|NIL|NIL +struck|NIL|NIL +struck|earthquake|ARG0 +struck|Iran|ARG1 +northern|NIL|NIL +Iran|NIL|NIL +Iran|northern|NIL +brought|NIL|NIL +brought|earthquake|ARG0 +brought|reminders|ARG1 +brought|devastated|ARG1 +reminders|NIL|NIL +reminders|quake|NIL +quake|NIL|NIL +quake|another|NIL +devastated|NIL|NIL +devastated|Armenia|ARG1 +devastated|1988|ARGM-TMP +Soviet|NIL|NIL +Armenia|NIL|NIL +Armenia|Soviet|NIL +1988|NIL|NIL +06/22/1990|NIL|NIL +Armenian|NIL|NIL +quake|NIL|NIL +quake|Armenian|NIL +measured|NIL|NIL +measured|quake|ARG1 +measured|6.9|ARG2 +6.9|NIL|NIL +6.9|scale|NIL +Richter|NIL|NIL +scale|NIL|NIL +scale|Richter|NIL +06/21/1990|NIL|NIL +earthquake|NIL|NIL +earthquake|06/21/1990|NIL +shook|NIL|NIL +shook|earthquake|ARGM-LOC +shook|earth|ARG1 +shook|magnitude|ARGM-MNR +earth|NIL|NIL +magnitude|NIL|NIL +magnitude|a|NIL +magnitude|7.7|NIL +7.7|NIL|NIL +according|NIL|NIL +U.S.|NIL|NIL +Geological|NIL|NIL +Survey|NIL|NIL +Survey|U.S.|NIL +Survey|Geological|NIL +06/25/1990|NIL|NIL +estimated|NIL|NIL +estimated|dead|ARG1 +50,000|NIL|NIL +dead|NIL|NIL +dead|50,000|NIL +dead|earthquake|NIL +Iran|NIL|NIL +earthquake|NIL|NIL +earthquake|Iran|NIL +make|NIL|NIL +make|it|ARG1 +it|NIL|NIL +it|quake|NIL +world|NIL|NIL +fourth|NIL|NIL +fourth|deadliest|NIL +deadliest|NIL|NIL +quake|NIL|NIL +quake|world|NIL +quake|fourth|NIL +quake|half-century|NIL +past|NIL|NIL +half-century|NIL|NIL +half-century|past|NIL +06/25/1990|NIL|NIL +Iran|NIL|NIL +Iran|06/25/1990|NIL +Iran|Sept.|NIL +Sept.|NIL|NIL +Sept.|16|NIL +Sept.|1978|NIL +Sept.|7.7|NIL +Sept.|25,000|NIL +16|NIL|NIL +1978|NIL|NIL +7.7|NIL|NIL +25,000|NIL|NIL +06/26/1990|NIL|NIL +Writer|NIL|NIL +Writer|06/26/1990|NIL +Writer|Salman|NIL +Writer|Rushdie|NIL +Salman|NIL|NIL +Rushdie|NIL|NIL +sentenced|NIL|NIL +sentenced|Writer|ARG1 +sentenced|die|ARG2 +die|NIL|NIL +Iranian|NIL|NIL +zealots|NIL|NIL +zealots|Iranian|NIL +donated|NIL|NIL +donated|Writer|ARG0 +donated|victims|ARG2 +$|NIL|NIL +8,600|NIL|NIL +8,600|$|NIL +victims|NIL|NIL +victims|earthquake|NIL +last|NIL|NIL +week|NIL|NIL +week|last|NIL +devastating|NIL|NIL +earthquake|NIL|NIL +earthquake|week|NIL +earthquake|devastating|NIL +earthquake|Iran|NIL +Iran|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D103.M.100.G.A.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D103.M.100.G.A.be new file mode 100644 index 0000000000000000000000000000000000000000..50646f8dc4b22f25db9882c635d52c24ab73db45 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D103.M.100.G.A.be @@ -0,0 +1,134 @@ +earthquake|NIL|NIL +earthquake|An|NIL +earthquake|magnitude|NIL +magnitude|NIL|NIL +magnitude|7.7|NIL +7.7|NIL|NIL +hit|NIL|NIL +hit|earthquake|ARG0 +hit|Iran|ARG1 +hit|June|ARGM-TMP +hit|killing|ARGM-ADV +hit|leaving|ARGM-ADV +northwestern|NIL|NIL +Iran|NIL|NIL +Iran|northwestern|NIL +June|NIL|NIL +June|21|NIL +June|1990|NIL +21|NIL|NIL +1990|NIL|NIL +killing|NIL|NIL +killing|people|ARG1 +at|least|NIL +at|50,000|NIL +least|NIL|NIL +50,000|NIL|NIL +people|NIL|NIL +people|at|NIL +leaving|NIL|NIL +leaving|homeless|ARG1 +400,000|NIL|NIL +homeless|NIL|NIL +homeless|400,000|NIL +quake|NIL|NIL +occurred|NIL|NIL +occurred|quake|ARG1 +occurred|were|ARGM-TMP +occurred|hit|ARGM-TMP +most|NIL|NIL +people|NIL|NIL +people|most|NIL +were|people|AUX-SBJ +were|asleep|AUX-PRD +inside|NIL|NIL +asleep|NIL|NIL +asleep|inside|NIL +hit|NIL|NIL +hit|people|ARG0 +hit|floodplain|ARG1 +coastal|NIL|NIL +floodplain|NIL|NIL +floodplain|a|NIL +floodplain|coastal|NIL +loosely|NIL|NIL +deposited|NIL|NIL +deposited|shifts|ARG1 +deposited|easily|ARGM-MNR +soil|NIL|NIL +shifts|NIL|NIL +shifts|soil|NIL +easily|NIL|NIL +caused|NIL|NIL +caused|homes|ARG1 +caused|collapse|ARG2 +fragile|NIL|NIL +adobe|NIL|NIL +homes|NIL|NIL +homes|fragile|NIL +homes|adobe|NIL +homes|area|NIL +area|NIL|NIL +collapse|NIL|NIL +Iranian|NIL|NIL +president|NIL|NIL +president|Iranian|NIL +appealed|NIL|NIL +appealed|president|ARG0 +appealed|aid|ARG1 +international|NIL|NIL +aid|NIL|NIL +aid|international|NIL +response|NIL|NIL +was|response|AUX-SBJ +was|overwhelming|AUX-PRD +was|countries|AUX-PRD +overwhelming|NIL|NIL +countries|NIL|NIL +countries|both|NIL +countries|friendly|NIL +countries|those|NIL +friendly|NIL|NIL +friendly|government|NIL +Iran|NIL|NIL +Islamic|NIL|NIL +government|NIL|NIL +government|Iran|NIL +government|Islamic|NIL +those|hostile|NIL +hostile|NIL|NIL +Assistance|NIL|NIL +Assistance|United|NIL +United|NIL|NIL +United|States|NIL +States|NIL|NIL +was|Assistance|AUX-SBJ +was|first|AUX-PRD +first|NIL|NIL +first|crisis|NIL +first|1979-80|NIL +such|NIL|NIL +hostage|NIL|NIL +crisis|NIL|NIL +crisis|such|NIL +crisis|hostage|NIL +1979-80|NIL|NIL +Their|NIL|NIL +respective|NIL|NIL +critics|NIL|NIL +critics|Their|NIL +critics|respective|NIL +blamed|NIL|NIL +blamed|critics|ARG0 +blamed|U.S.|ARG1 +blamed|governments|ARG1 +blamed|toll|ARG2 +U.S.|NIL|NIL +Iranian|NIL|NIL +governments|NIL|NIL +governments|Iranian|NIL +high|NIL|NIL +death|NIL|NIL +toll|NIL|NIL +toll|high|NIL +toll|death|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D104.M.100.G.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D104.M.100.G.26.be new file mode 100644 index 0000000000000000000000000000000000000000..b504eb9f4d85c97684b0338dcdfed8712ec18ecc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D104.M.100.G.26.be @@ -0,0 +1,140 @@ +06/03/1989|NIL|NIL +Beijing|NIL|NIL +University|NIL|NIL +students|NIL|NIL +students|06/03/1989|NIL +students|Beijing|NIL +students|University|NIL +put|NIL|NIL +put|students|ARG0 +put|up|rel +put|praising|ARGM-ADV +put|criticizing|ARGM-ADV +posters|NIL|NIL +praising|NIL|NIL +praising|posters|ARG0 +praising|him|ARG1 +him|NIL|NIL +indirectly|NIL|NIL +criticizing|NIL|NIL +criticizing|posters|ARG0 +criticizing|indirectly|ARGM-MNR +criticizing|opponents|ARG1 +opponents|NIL|NIL +forced|NIL|NIL +forced|opponents|ARG0 +forced|resignation|ARG1 +forced|1986-87|ARGM-TMP +his|NIL|NIL +resignation|NIL|NIL +resignation|his|NIL +student|NIL|NIL +demonstrations|NIL|NIL +demonstrations|student|NIL +1986-87|NIL|NIL +06/03/1989|NIL|NIL +April|NIL|NIL +April|06/03/1989|NIL +April|30|NIL +30|NIL|NIL +_|NIL|NIL +_|April|ARGM-TMP +_|meets|ARG1 +Beijing|NIL|NIL +Communist|NIL|NIL +Party|NIL|NIL +chief|NIL|NIL +chief|Beijing|NIL +chief|Communist|NIL +chief|Party|NIL +chief|Ziyang|NIL +Zhao|NIL|NIL +Ziyang|NIL|NIL +Ziyang|Zhao|NIL +meets|NIL|NIL +meets|chief|ARG0 +meets|representatives|ARG1 +student|NIL|NIL +representatives|NIL|NIL +representatives|student|NIL +06/03/1989|NIL|NIL +Dawn|NIL|NIL +Dawn|06/03/1989|NIL +broke|NIL|NIL +broke|Dawn|ARG0 +broke|06/04/1989|ARGM-TMP +broke|Square|ARG1 +broke|tanks|ARG1 +broke|troops|ARG1 +06/04/1989|NIL|NIL +battle-scarred|NIL|NIL +Tiananmen|NIL|NIL +Square|NIL|NIL +Square|a|NIL +Square|battle-scarred|NIL +Square|Tiananmen|NIL +tanks|NIL|NIL +rifle-toting|NIL|NIL +troops|NIL|NIL +troops|rifle-toting|NIL +ruling|NIL|NIL +ruling|troops|ARG0 +vast|NIL|NIL +expanse|NIL|NIL +expanse|vast|NIL +occupied|NIL|NIL +occupied|expanse|ARG1 +occupied|day|ARG1 +occupied|students|ARG2 +day|NIL|NIL +students|NIL|NIL +seeking|NIL|NIL +seeking|students|ARG0 +seeking|society|ARG1 +freer|NIL|NIL +society|NIL|NIL +society|a|NIL +society|freer|NIL +society|rulers|NIL +their|NIL|NIL +communist|NIL|NIL +rulers|NIL|NIL +rulers|their|NIL +rulers|communist|NIL +06/03/1989|NIL|NIL +battle|NIL|NIL +battle|Tiananmen|NIL +Tiananmen|NIL|NIL +primarily|NIL|NIL +fought|NIL|NIL +fought|battle|ARG1 +fought|primarily|ARGM-ADV +fought|streets|ARGM-LOC +streets|NIL|NIL +leading|NIL|NIL +leading|streets|ARG0 +leading|square|ARG2 +square|NIL|NIL +scores|NIL|NIL +scores|people|NIL +people|NIL|NIL +fell|NIL|NIL +fell|square|ARGM-LOC +fell|trying|ARGM-ADV +trying|NIL|NIL +trying|prevent|ARG1 +prevent|NIL|NIL +prevent|columns|ARG1 +prevent|moving|ARG2 +columns|NIL|NIL +columns|troops|NIL +columns|vehicles|NIL +troops|NIL|NIL +armored|NIL|NIL +military|NIL|NIL +vehicles|NIL|NIL +vehicles|armored|NIL +vehicles|military|NIL +moving|NIL|NIL +moving|students|ARG2 +students|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D104.M.100.G.C.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D104.M.100.G.C.be new file mode 100644 index 0000000000000000000000000000000000000000..ab6a7dcb48c48664da8e66a8f02a2eb6add7a502 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D104.M.100.G.C.be @@ -0,0 +1,113 @@ +Firing|NIL|NIL +indiscriminately|NIL|NIL +indiscriminately|crowds|NIL +crowds|NIL|NIL +they|NIL|NIL +advanced|NIL|NIL +Chinese|NIL|NIL +troops|NIL|NIL +troops|Chinese|NIL +broke|NIL|NIL +broke|Firing|ARG0 +broke|indiscriminately|ARGM-ADV +broke|troops|ARG0 +broke|barricades|ARG1 +barricades|NIL|NIL +barricades|protesters|NIL +reform-minded|NIL|NIL +protesters|NIL|NIL +protesters|reform-minded|NIL +late|NIL|NIL +3|NIL|NIL +3|late|NIL +3|June1989|NIL +June1989|NIL|NIL +reached|NIL|NIL +reached|Firing|ARG0 +reached|indiscriminately|ARGM-ADV +reached|troops|ARG0 +reached|Square|ARG1 +Tiananmen|NIL|NIL +Square|NIL|NIL +Square|Tiananmen|NIL +rebuffed|NIL|NIL +rebuffed|attempts|ARGM-LOC +earlier|NIL|NIL +attempts|NIL|NIL +attempts|earlier|NIL +Early|NIL|NIL +next|NIL|NIL +day|NIL|NIL +day|Early|NIL +day|next|NIL +they|NIL|NIL +routed|NIL|NIL +routed|day|ARG1 +routed|they|ARG1 +routed|demonstrators|ARG1 +surviving|NIL|NIL +surviving|demonstrators|ARG0 +demonstrators|NIL|NIL +fled|NIL|NIL +fled|demonstrators|ARG0 +fled|square|ARG1 +square|NIL|NIL +had|occupied|ARG1 +occupied|NIL|NIL +three|NIL|NIL +weeks|NIL|NIL +weeks|three|NIL +weeks|defiance|NIL +defiance|NIL|NIL +defiance|orders|NIL +government|NIL|NIL +orders|NIL|NIL +orders|government|NIL +Thousands|NIL|NIL +died|NIL|NIL +died|Thousands|ARG1 +died|days|ARGM-LOC +two|NIL|NIL +days|NIL|NIL +days|two|NIL +days|violence|NIL +violence|NIL|NIL +bloody|NIL|NIL +weekend|NIL|NIL +weekend|bloody|NIL +was|weekend|AUX-SBJ +was|climax|AUX-PRD +climax|NIL|NIL +climax|trouble|NIL +trouble|NIL|NIL +escalated|NIL|NIL +escalated|climax|ARG0 +escalated|April|ARGM-TMP +April|NIL|NIL +Later|NIL|NIL +demonstrations|NIL|NIL +demonstrations|Later|NIL +demonstrations|cities|NIL +other|NIL|NIL +large|NIL|NIL +Chinese|NIL|NIL +cities|NIL|NIL +cities|other|NIL +cities|large|NIL +cities|Chinese|NIL +protested|NIL|NIL +Beijing|NIL|NIL +slaughter|NIL|NIL +slaughter|Beijing|NIL +United|NIL|NIL +United|States|NIL +States|NIL|NIL +suspended|NIL|NIL +suspended|United|ARG0 +suspended|sales|ARG1 +suspended|China|ARG2 +military|NIL|NIL +sales|NIL|NIL +sales|all|NIL +sales|military|NIL +China|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D105.M.100.G.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D105.M.100.G.26.be new file mode 100644 index 0000000000000000000000000000000000000000..4d58a8dd7b6f910b52558b25b94029ceaf8c032f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D105.M.100.G.26.be @@ -0,0 +1,126 @@ +12/30/1990|NIL|NIL +Gorbachev|NIL|NIL +Gorbachev|12/30/1990|NIL +also|NIL|NIL +gave|NIL|NIL +gave|Gorbachev|ARG0 +gave|also|ARGM-DIS +gave|republic|ARG1 +gave|days|ARG1 +republic|NIL|NIL +10|NIL|NIL +days|NIL|NIL +days|10|NIL +dissolve|NIL|NIL +dissolve|guard|ARG1 +new|NIL|NIL +national|NIL|NIL +guard|NIL|NIL +guard|a|NIL +guard|new|NIL +guard|national|NIL +come|NIL|NIL +come|up|rel +come|measures|ARG1 +come|guaranteeing|ARGM-ADV +measures|NIL|NIL +guaranteeing|NIL|NIL +guaranteeing|rights|ARG1 +guaranteeing|borders|ARGM-LOC +equal|NIL|NIL +rights|NIL|NIL +rights|equal|NIL +rights|groups|NIL +ethnic|NIL|NIL +groups|NIL|NIL +groups|all|NIL +groups|ethnic|NIL +its|NIL|NIL +borders|NIL|NIL +borders|its|NIL +07/15/1992|NIL|NIL +RUSSIA|NIL|NIL +RUSSIA|07/15/1992|NIL +Georgia|NIL|NIL +Georgia|troops|NIL +07/14/1992|NIL|NIL +deployed|NIL|NIL +deployed|troops|ARG1 +blue|NIL|NIL +helmet|NIL|NIL +troops|NIL|NIL +troops|deployed|NIL +troops|blue|NIL +troops|helmet|NIL +stop|NIL|NIL +stop|RUSSIA|ARG0 +stop|Georgia|ARG0 +stop|fighting|ARG1 +stop|region|ARGM-LOC +ethnic|NIL|NIL +fighting|NIL|NIL +fighting|ethnic|NIL +disputed|NIL|NIL +region|NIL|NIL +region|disputed|NIL +region|Ossetia|NIL +region|collapse|NIL +South|NIL|NIL +Ossetia|NIL|NIL +Ossetia|South|NIL +Ossetia|operation|NIL +first|NIL|NIL +peace-keeping|NIL|NIL +operation|NIL|NIL +operation|first|NIL +operation|peace-keeping|NIL +collapse|NIL|NIL +collapse|Union|NIL +Soviet|NIL|NIL +Union|NIL|NIL +Union|Soviet|NIL +Reuter|NIL|NIL +reports|NIL|NIL +reports|stop|ARGM-PNC +reports|Reuter|ARG0 +reports|Moscow|ARG1 +Moscow|NIL|NIL +12/14/1993|NIL|NIL +international|NIL|NIL +community|NIL|NIL +community|international|NIL +starting|NIL|NIL +starting|community|ARG0 +starting|look|ARG1 +starting|becoming|ARG1 +look|NIL|NIL +conflict|NIL|NIL +conflict|Yugoslavia|NIL +former|NIL|NIL +Yugoslavia|NIL|NIL +Yugoslavia|former|NIL +becoming|NIL|NIL +becoming|aware|ARG2 +increasingly|NIL|NIL +aware|NIL|NIL +aware|increasingly|NIL +aware|magnitude|NIL +aware|seriousness|NIL +true|NIL|NIL +magnitude|NIL|NIL +magnitude|true|NIL +seriousness|NIL|NIL +seriousness|conflicts|NIL +seriousness|Union|NIL +ethnic|NIL|NIL +political|NIL|NIL +conflicts|NIL|NIL +conflicts|ethnic|NIL +conflicts|political|NIL +former|NIL|NIL +Soviet|NIL|NIL +Union|NIL|NIL +Union|ethnic|NIL +Union|political|NIL +Union|former|NIL +Union|Soviet|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D105.M.100.G.C.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D105.M.100.G.C.be new file mode 100644 index 0000000000000000000000000000000000000000..76ab24534030185e8c8dcdf59e03f754647ec254 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D105.M.100.G.C.be @@ -0,0 +1,136 @@ +Ethnic|NIL|NIL +unrest|NIL|NIL +unrest|Ethnic|NIL +erupted|NIL|NIL +erupted|unrest|ARG1 +last|NIL|NIL +years|NIL|NIL +years|last|NIL +years|Union|NIL +Soviet|NIL|NIL +Union|NIL|NIL +Union|Soviet|NIL +Kremlin|NIL|NIL +dispatched|NIL|NIL +dispatched|Kremlin|ARG0 +dispatched|troops|ARG1 +dispatched|check|ARGM-PNC +troops|NIL|NIL +check|NIL|NIL +check|violence|ARG1 +violence|NIL|NIL +generated|NIL|NIL +generated|violence|ARG1 +generated|some|ARG0 +some|groups|NIL +USSR|NIL|NIL +more|NIL|NIL +than|more|NIL +than|100|NIL +100|NIL|NIL +ethnic|NIL|NIL +groups|NIL|NIL +groups|USSR|NIL +groups|than|NIL +groups|ethnic|NIL +ethnic|NIL|NIL +unrest|NIL|NIL +unrest|ethnic|NIL +proliferated|NIL|NIL +proliferated|unrest|ARG1 +proliferated|demise|ARGM-TMP +Soviet|NIL|NIL +Union|NIL|NIL +Union|Soviet|NIL +demise|NIL|NIL +demise|Union|NIL +Serious|NIL|NIL +ethnic-driven|NIL|NIL +fighting|NIL|NIL +fighting|Serious|NIL +fighting|ethnic-driven|NIL +occurred|NIL|NIL +occurred|fighting|ARG1 +occurred|Armenia|ARGM-LOC +occurred|Azerbaijan|ARGM-LOC +occurred|Georgia|ARGM-LOC +occurred|Khirghizia|ARGM-LOC +occurred|Kazakhstan|ARGM-LOC +occurred|Uzbekistan|ARGM-LOC +occurred|Tajikistan|ARGM-LOC +occurred|Moldavia|ARGM-LOC +occurred|One|ARGM-LOC +Armenia|NIL|NIL +Armenia|hundred|NIL +Armenia|thousand|NIL +Azerbaijan|NIL|NIL +Azerbaijan|hundred|NIL +Azerbaijan|thousand|NIL +Georgia|NIL|NIL +Georgia|hundred|NIL +Georgia|thousand|NIL +Khirghizia|NIL|NIL +Khirghizia|hundred|NIL +Khirghizia|thousand|NIL +Kazakhstan|NIL|NIL +Kazakhstan|hundred|NIL +Kazakhstan|thousand|NIL +Uzbekistan|NIL|NIL +Uzbekistan|hundred|NIL +Uzbekistan|thousand|NIL +Tajikistan|NIL|NIL +Tajikistan|hundred|NIL +Tajikistan|thousand|NIL +Moldavia|NIL|NIL +Moldavia|hundred|NIL +Moldavia|thousand|NIL +One|NIL|NIL +One|hundred|NIL +One|thousand|NIL +hundred|NIL|NIL +thousand|NIL|NIL +killed|NIL|NIL +killed|fighting|ARG1 +killed|Tajikistan|ARGM-LOC +Tajikistan|NIL|NIL +late|NIL|NIL +1992|NIL|NIL +1992|late|NIL +Russia|NIL|NIL +sent|NIL|NIL +sent|1992|ARGM-TMP +sent|Russia|ARG0 +sent|troops|ARG1 +sent|Caucasus|ARG2 +sent|Tajikistan|ARG2 +troops|NIL|NIL +Caucasus|NIL|NIL +Tajikistan|NIL|NIL +international|NIL|NIL +community|NIL|NIL +community|international|NIL +feared|NIL|NIL +feared|community|ARG0 +feared|destabilization|ARG1 +destabilization|NIL|NIL +destabilization|Union|NIL +former|NIL|NIL +Soviet|NIL|NIL +Union|NIL|NIL +Union|former|NIL +Union|Soviet|NIL +1944|NIL|NIL +was|1944|AUX-TMP +was|there|AUX-SBJ +was|call|AUX-PRD +call|NIL|NIL +call|a|NIL +call|Union|NIL +restored|NIL|NIL +Soviet|NIL|NIL +Union|NIL|NIL +Union|a|NIL +Union|Soviet|NIL +deal|NIL|NIL +deal|ethnicity|ARG1 +ethnicity|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D106.M.100.G.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D106.M.100.G.26.be new file mode 100644 index 0000000000000000000000000000000000000000..adf1547279eeae1871c4e69f14ee5e1c69aee377 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D106.M.100.G.26.be @@ -0,0 +1,148 @@ +05/08/1988|NIL|NIL +Nelson|NIL|NIL +Mandela|NIL|NIL +Mandela|05/08/1988|NIL +Mandela|Nelson|NIL +Mandela|..|NIL +Mandela|attorney|NIL +Mandela|activist|NIL +..|NIL|NIL +..|an|NIL +attorney|NIL|NIL +activist|NIL|NIL +activist|an|NIL +worked|NIL|NIL +worked|activist|ARG0 +worked|apartheid|ARG3 +apartheid|NIL|NIL +11/13/1988|NIL|NIL +representative|NIL|NIL +representative|A|NIL +representative|Congress|NIL +African|NIL|NIL +National|NIL|NIL +Congress|NIL|NIL +Congress|African|NIL +Congress|National|NIL +said|NIL|NIL +said|representative|ARG0 +said|11/12/1988|ARGM-TMP +11/12/1988|NIL|NIL +South|NIL|NIL +African|NIL|NIL +government|NIL|NIL +government|South|NIL +government|African|NIL +release|NIL|NIL +release|leader|ARG1 +release|early|ARGM-TMP +black|NIL|NIL +nationalist|NIL|NIL +leader|NIL|NIL +leader|black|NIL +leader|nationalist|NIL +leader|Nelson|NIL +leader|Mandela|NIL +Nelson|NIL|NIL +Mandela|NIL|NIL +as|NIL|NIL +early|NIL|NIL +early|as|NIL +early|11/12/1988|NIL +11/12/1988|NIL|NIL +11/13/1988|NIL|NIL +Mandela|NIL|NIL +Mandela|11/13/1988|NIL +Mandela|leader|NIL +70-year-old|NIL|NIL +leader|NIL|NIL +leader|70-year-old|NIL +leader|ANC|NIL +ANC|NIL|NIL +jailed|NIL|NIL +jailed|ANC|ARG1 +jailed|ago|ARGM-TMP +27|NIL|NIL +years|NIL|NIL +years|27|NIL +ago|NIL|NIL +ago|years|NIL +sentenced|NIL|NIL +sentenced|Mandela|ARG1 +sentenced|life|ARG2 +sentenced|conspiring|ARG3 +life|NIL|NIL +life|prison|NIL +prison|NIL|NIL +conspiring|NIL|NIL +conspiring|overthrow|ARG1 +overthrow|NIL|NIL +overthrow|government|ARG1 +South|NIL|NIL +African|NIL|NIL +African|South|NIL +government|NIL|NIL +government|African|NIL +02/11/1990|NIL|NIL +bars|NIL|NIL +Nelson|NIL|NIL +Mandela|NIL|NIL +Mandela|Nelson|NIL +dominated|NIL|NIL +dominated|bars|ARGM-ADV +dominated|Mandela|ARG0 +dominated|fight|ARG1 +fight|NIL|NIL +fight|rights|NIL +black|NIL|NIL +rights|NIL|NIL +rights|black|NIL +rights|Africa|NIL +South|NIL|NIL +Africa|NIL|NIL +Africa|South|NIL +02/11/1990|NIL|NIL +Mandela|NIL|NIL +Mandela|02/11/1990|NIL +joins|NIL|NIL +joins|Mandela|ARG0 +joins|Congress|ARG1 +joins|becoming|ARGM-ADV +African|NIL|NIL +National|NIL|NIL +Congress|NIL|NIL +Congress|African|NIL +Congress|National|NIL +Congress|age|NIL +age|NIL|NIL +age|26|NIL +26|NIL|NIL +later|NIL|NIL +becoming|NIL|NIL +becoming|later|ARGM-TMP +becoming|president|ARG2 +president|NIL|NIL +president|Youth|NIL +group|NIL|NIL +Youth|NIL|NIL +Youth|group|NIL +Youth|League|NIL +League|NIL|NIL +League|group|NIL +02/11/1990|NIL|NIL +Mandela|NIL|NIL +Mandela|02/11/1990|NIL +named|NIL|NIL +named|Mandela|ARG1 +leader|NIL|NIL +leader|campaign|NIL +leader|breaks|NIL +campaign|NIL|NIL +breaks|NIL|NIL +curfew|NIL|NIL +curfew|act|ARGM-MNR +first|NIL|NIL +act|NIL|NIL +act|first|NIL +act|defiance|NIL +defiance|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D106.M.100.G.F.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D106.M.100.G.F.be new file mode 100644 index 0000000000000000000000000000000000000000..a117a4f65e40527bedb1209d69e922845d171af0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D106.M.100.G.F.be @@ -0,0 +1,133 @@ +Nelson|NIL|NIL +Mandela|NIL|NIL +Mandela|Nelson|NIL +Mandela|leader|NIL +leader|NIL|NIL +leader|a|NIL +leader|opposition|NIL +African|NIL|NIL +National|NIL|NIL +Congress|NIL|NIL +Congress|African|NIL +Congress|National|NIL +opposition|NIL|NIL +opposition|Congress|NIL +opposition|policy|NIL +South|NIL|NIL +Africa|NIL|NIL +Africa|South|NIL +policy|NIL|NIL +policy|Africa|NIL +policy|apartheid|NIL +apartheid|NIL|NIL +spent|NIL|NIL +spent|Mandela|ARG0 +spent|prison|ARGM-LOC +nearly|NIL|NIL +nearly|27|NIL +27|NIL|NIL +years|NIL|NIL +years|nearly|NIL +prison|NIL|NIL +He|NIL|NIL +sentenced|NIL|NIL +sentenced|He|ARG1 +sentenced|life|ARG2 +sentenced|1964|ARGM-TMP +sentenced|conspiring|ARG3 +life|NIL|NIL +life|prison|NIL +prison|NIL|NIL +1964|NIL|NIL +conspiring|NIL|NIL +conspiring|overthrow|ARG1 +overthrow|NIL|NIL +overthrow|government|ARG1 +government|NIL|NIL +He|NIL|NIL +became|NIL|NIL +became|point|ARG2 +rallying|NIL|NIL +point|NIL|NIL +point|a|NIL +point|rallying|NIL +point|nations|NIL +nations|NIL|NIL +pressuring|NIL|NIL +pressuring|nations|ARG0 +pressuring|end|ARG2 +South|NIL|NIL +Africa|NIL|NIL +Africa|South|NIL +end|NIL|NIL +end|Africa|ARG0 +end|government|ARG1 +its|NIL|NIL +all-white|NIL|NIL +government|NIL|NIL +government|its|NIL +government|all-white|NIL +World|NIL|NIL +leaders|NIL|NIL +leaders|World|NIL +hailed|NIL|NIL +hailed|release|ARG1 +Mandela|NIL|NIL +release|NIL|NIL +release|Mandela|NIL +release|1990|NIL +1990|NIL|NIL +he|NIL|NIL +welcomed|NIL|NIL +welcomed|he|ARG1 +welcomed|hero|ARG2 +welcomed|visit|ARG1 +hero|NIL|NIL +hero|a|NIL +he|NIL|NIL +traveled|NIL|NIL +traveled|he|ARG0 +including|NIL|NIL +visit|NIL|NIL +visit|a|NIL +visit|City|NIL +New|NIL|NIL +York|NIL|NIL +City|NIL|NIL +City|New|NIL +City|York|NIL +In-fighting|NIL|NIL +In-fighting|elements|NIL +black|NIL|NIL +elements|NIL|NIL +elements|black|NIL +complicated|NIL|NIL +complicated|In-fighting|ARG0 +complicated|role|ARG1 +Mandela|NIL|NIL +role|NIL|NIL +role|Mandela|NIL +role|negotiations|NIL +negotiations|NIL|NIL +end|NIL|NIL +end|rule|ARG1 +white-minority|NIL|NIL +rule|NIL|NIL +rule|white-minority|NIL +rule|Africa|NIL +South|NIL|NIL +Africa|NIL|NIL +Africa|South|NIL +Also|NIL|NIL +Mandela|NIL|NIL +wife|NIL|NIL +wife|Mandela|NIL +wife|Winnie|NIL +Winnie|NIL|NIL +imprisoned|NIL|NIL +imprisoned|Also|ARGM-DIS +imprisoned|wife|ARG1 +imprisoned|complicating|ARGM-ADV +complicating|NIL|NIL +complicating|matters|ARG1 +matters|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D107.M.100.G.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D107.M.100.G.26.be new file mode 100644 index 0000000000000000000000000000000000000000..3f824541a1158ec5594057a3ff3e299747b38501 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D107.M.100.G.26.be @@ -0,0 +1,123 @@ +07/11/1988|NIL|NIL +crippling|NIL|NIL +drought|NIL|NIL +drought|crippling|NIL +hitting|NIL|NIL +hitting|America|ARG1 +North|NIL|NIL +America|NIL|NIL +America|North|NIL +expected|NIL|NIL +expected|hitting|ARGM-ADV +expected|reduce|ARG1 +reduce|NIL|NIL +world|NIL|NIL +grain|NIL|NIL +stocks|NIL|NIL +stocks|world|NIL +stocks|grain|NIL +levels|NIL|NIL +cause|NIL|NIL +cause|shortages|ARG1 +cause|countries|ARGM-LOC +food|NIL|NIL +shortages|NIL|NIL +shortages|food|NIL +many|NIL|NIL +poor|NIL|NIL +countries|NIL|NIL +countries|many|NIL +countries|poor|NIL +U.N.|NIL|NIL +Food|NIL|NIL +Agriculture|NIL|NIL +Organization|NIL|NIL +reported|NIL|NIL +reported|expected|ARG1 +reported|U.N.|ARG0 +reported|Food|ARG0 +reported|Agriculture|ARG0 +reported|Organization|ARG0 +reported|07/11/1988|ARGM-TMP +07/11/1988|NIL|NIL +07/11/1988|NIL|NIL +drought|NIL|NIL +drought|United|NIL +United|NIL|NIL +United|States|NIL +States|NIL|NIL +ended|NIL|NIL +ended|drought|ARG1 +ended|now|ARGM-TMP +now|NIL|NIL +grain|NIL|NIL +production|NIL|NIL +production|grain|NIL +fall|NIL|NIL +fall|ended|ARGM-ADV +fall|production|ARG1 +fall|close|ARGM-LOC +close|NIL|NIL +close|levels|NIL +low|NIL|NIL +levels|NIL|NIL +levels|low|NIL +levels|1983|NIL +1983|NIL|NIL +1983|reported|NIL +drought|NIL|NIL +drought|a|NIL +farmers|NIL|NIL +participation|NIL|NIL +participation|farmers|NIL +participation|program|NIL +government|NIL|NIL +crop|NIL|NIL +reduction|NIL|NIL +program|NIL|NIL +program|a|NIL +program|government|NIL +program|crop|NIL +program|reduction|NIL +decreased|NIL|NIL +decreased|drought|ARG0 +decreased|participation|ARG1 +decreased|output|ARG1 +output|NIL|NIL +agency|NIL|NIL +reported|NIL|NIL +reported|decreased|ARG1 +reported|agency|ARG0 +07/16/1988|NIL|NIL +Georgia|NIL|NIL +Georgia|07/16/1988|NIL +carpet|NIL|NIL +industry|NIL|NIL +industry|Georgia|NIL +industry|carpet|NIL +forced|NIL|NIL +forced|industry|ARG1 +forced|reduce|ARG2 +forced|lay|ARG2 +forced|continues|ARGM-ADV +reduce|NIL|NIL +reduce|production|ARG1 +production|NIL|NIL +lay|NIL|NIL +lay|off|rel +lay|workers|ARG1 +workers|NIL|NIL +drought|NIL|NIL +continues|NIL|NIL +continues|drought|ARG0 +continues|period|ARG1 +extended|NIL|NIL +period|NIL|NIL +period|an|NIL +period|extended|NIL +industry|NIL|NIL +officials|NIL|NIL +officials|industry|NIL +said|NIL|NIL +said|forced|ARG1 +said|officials|ARG0 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D107.M.100.G.H.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D107.M.100.G.H.be new file mode 100644 index 0000000000000000000000000000000000000000..6599413b75705500eceb1d98933d93175b132b49 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D107.M.100.G.H.be @@ -0,0 +1,150 @@ +mid-July|NIL|NIL +1988|NIL|NIL +drought|NIL|NIL +drought|1988|NIL +looked|NIL|NIL +looked|mid-July|ARGM-TMP +looked|drought|ARG0 +looked|record-breaking|ARG1 +record-breaking|NIL|NIL +Further|NIL|NIL +drought|NIL|NIL +drought|Further|NIL +predicted|NIL|NIL +predicted|drought|ARG1 +predicted|records|ARGM-MNR +based|NIL|NIL +past|NIL|NIL +records|NIL|NIL +records|past|NIL +Severe|NIL|NIL +storms|NIL|NIL +storms|Severe|NIL +brought|NIL|NIL +brought|storms|ARG0 +brought|tornadoes|ARG1 +brought|damage|ARG1 +brought|fires|ARG1 +tornadoes|NIL|NIL +hail|NIL|NIL +damage|NIL|NIL +damage|hail|NIL +lightning-sparked|NIL|NIL +fires|NIL|NIL +fires|lightning-sparked|NIL +States|NIL|NIL +issued|NIL|NIL +issued|States|ARG0 +issued|alerts|ARG1 +heat|NIL|NIL +alerts|NIL|NIL +alerts|heat|NIL +Weather|NIL|NIL +experts|NIL|NIL +experts|Weather|NIL +attended|NIL|NIL +attended|experts|ARG0 +attended|Symposium|ARG1 +Drought|NIL|NIL +Symposium|NIL|NIL +Symposium|a|NIL +Symposium|Drought|NIL +urged|NIL|NIL +urged|experts|ARG0 +urged|attention|ARG1 +continued|NIL|NIL +continued|attention|ARG1 +attention|NIL|NIL +attention|climate|NIL +attention|reduction|NIL +climate|NIL|NIL +greenhouse-effect|NIL|NIL +reduction|NIL|NIL +reduction|greenhouse-effect|NIL +Crop|NIL|NIL +declines|NIL|NIL +declines|Crop|NIL +forecast|NIL|NIL +forecast|declines|ARG1 +grain|NIL|NIL +futures|NIL|NIL +futures|grain|NIL +fell|NIL|NIL +fell|futures|ARG1 +Adequate|NIL|NIL +domestic|NIL|NIL +export|NIL|NIL +supplies|NIL|NIL +supplies|Adequate|NIL +expected|NIL|NIL +expected|supplies|ARG1 +UPS|NIL|NIL +railroads|NIL|NIL +truckers|NIL|NIL +transported|NIL|NIL +transported|UPS|ARG0 +transported|railroads|ARG0 +transported|truckers|ARG0 +transported|hay|ARG1 +hay|NIL|NIL +for|free|NIL +free|NIL|NIL +Federal|NIL|NIL +aid|NIL|NIL +aid|Federal|NIL +state|NIL|NIL +state|loans|ARG1 +loans|NIL|NIL +loans|farmers|NIL +farmers|NIL|NIL +eased|NIL|NIL +eased|aid|ARG1 +eased|proposed|ARG1 +future|NIL|NIL +crop|NIL|NIL +controls|NIL|NIL +controls|future|NIL +controls|crop|NIL +proposed|NIL|NIL +proposed|controls|ARG1 +Reagan|NIL|NIL +visited|NIL|NIL +visited|Reagan|ARG0 +visited|areas|ARG1 +drought|NIL|NIL +areas|NIL|NIL +areas|drought|NIL +Farmers|NIL|NIL +sued|NIL|NIL +sued|Farmers|ARG0 +sued|reneging|ARGM-ADV +reneging|NIL|NIL +reneging|insurers|ARG1 +insurers|NIL|NIL +Drinking|NIL|NIL +water|NIL|NIL +water|Drinking|NIL +hauled|NIL|NIL +hauled|water|ARG1 +hauled|in|rel +dam|NIL|NIL +flows|NIL|NIL +reduced|NIL|NIL +Livestock|NIL|NIL +sales|NIL|NIL +sales|Livestock|NIL +increased|NIL|NIL +increased|sales|ARG1 +Cannery|NIL|NIL +mill|NIL|NIL +logging|NIL|NIL +jobs|NIL|NIL +fell|NIL|NIL +fell|Cannery|ARG1 +fell|mill|ARG1 +fell|jobs|ARG1 +Highway|NIL|NIL +projects|NIL|NIL +projects|Highway|NIL +accelerated|NIL|NIL +accelerated|projects|ARG1 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D108.M.100.G.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D108.M.100.G.26.be new file mode 100644 index 0000000000000000000000000000000000000000..20f529c49159f13b107e1080f1abdaf2ba01a624 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D108.M.100.G.26.be @@ -0,0 +1,151 @@ +08/02/1990|NIL|NIL +_|NIL|NIL +Mohammad|NIL|NIL +Abulhasan|NIL|NIL +Abulhasan|Mohammad|NIL +Abulhasan|ambassador|NIL +Kuwait|NIL|NIL +ambassador|NIL|NIL +ambassador|Kuwait|NIL +ambassador|United|NIL +United|NIL|NIL +United|Nations|NIL +Nations|NIL|NIL +08/02/1990|NIL|NIL +08/02/1990|INVASION|NIL +08/02/1990|crossed|NIL +08/02/1990|seized|NIL +INVASION|NIL|NIL +Iraq|NIL|NIL +troops|NIL|NIL +troops|Iraq|NIL +led|NIL|NIL +led|troops|ARG1 +led|tanks|ARG0 +about|NIL|NIL +about|350|NIL +350|NIL|NIL +tanks|NIL|NIL +tanks|about|NIL +crossed|NIL|NIL +crossed|troops|ARG0 +crossed|border|ARG1 +crossed|dawn|ARGM-LOC +crossed|08/02/1990|ARGM-TMP +border|NIL|NIL +dawn|NIL|NIL +08/02/1990|NIL|NIL +seized|NIL|NIL +seized|troops|ARG0 +seized|palace|ARG1 +seized|buildings|ARG1 +seized|away|rel +Kuwaiti|NIL|NIL +palace|NIL|NIL +palace|Kuwaiti|NIL +government|NIL|NIL +buildings|NIL|NIL +buildings|government|NIL +40|NIL|NIL +miles|NIL|NIL +miles|40|NIL +away|NIL|NIL +away|miles|NIL +08/02/1990|NIL|NIL +Kuwait|NIL|NIL +Sheik|NIL|NIL +Saad|NIL|NIL +al-Abdullah|NIL|NIL +al-Abdullah|Kuwait|NIL +al-Abdullah|Sheik|NIL +al-Abdullah|Saad|NIL +al-Abdullah|al-Sabah|NIL +al-Sabah|NIL|NIL +al-Sabah|Kuwait|NIL +fled|NIL|NIL +fled|al-Abdullah|ARG0 +fled|safety|ARG1 +fled|Arabia|ARGM-LOC +safety|NIL|NIL +Saudi|NIL|NIL +Arabia|NIL|NIL +Arabia|Saudi|NIL +08/03/1990|NIL|NIL +Here|NIL|NIL +is|08/03/1990|AUX-SBJ +is|Here|AUX-LOC +is|chronology|AUX-PRD +brief|NIL|NIL +chronology|NIL|NIL +chronology|a|NIL +chronology|brief|NIL +chronology|dispute|NIL +dispute|NIL|NIL +dispute|Iraq|NIL +dispute|Kuwait|NIL +dispute|production|NIL +dispute|border|NIL +Iraq|NIL|NIL +Kuwait|NIL|NIL +oil|NIL|NIL +production|NIL|NIL +production|oil|NIL +their|NIL|NIL +common|NIL|NIL +border|NIL|NIL +border|their|NIL +border|common|NIL +08/03/1990|NIL|NIL +July|NIL|NIL +July|08/03/1990|NIL +July|17|NIL +17|NIL|NIL +_|NIL|NIL +Iraqi|NIL|NIL +President|NIL|NIL +Saddam|NIL|NIL +Hussein|NIL|NIL +Hussein|July|NIL +Hussein|_|NIL +Hussein|Iraqi|NIL +Hussein|President|NIL +Hussein|Saddam|NIL +accuses|NIL|NIL +accuses|Hussein|ARG0 +accuses|Kuwait|ARG1 +accuses|Emirates|ARG1 +accuses|flooding|ARG2 +accuses|driving|ARG2 +Kuwait|NIL|NIL +United|NIL|NIL +Arab|NIL|NIL +Emirates|NIL|NIL +Emirates|United|NIL +Emirates|Arab|NIL +flooding|NIL|NIL +flooding|market|ARG1 +oil|NIL|NIL +market|NIL|NIL +market|oil|NIL +driving|NIL|NIL +driving|prices|ARG1 +driving|down|ARG2 +prices|NIL|NIL +down|NIL|NIL +move|NIL|NIL +cost|NIL|NIL +cost|move|ARG1 +cost|Iraq|ARG3 +cost|$|ARG2 +Iraq|NIL|NIL +$|NIL|NIL +$|14|NIL +$|billion|NIL +$|revenue|NIL +14|NIL|NIL +billion|NIL|NIL +lost|NIL|NIL +lost|revenue|ARG1 +oil|NIL|NIL +revenue|NIL|NIL +revenue|oil|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D108.M.100.G.I.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D108.M.100.G.I.be new file mode 100644 index 0000000000000000000000000000000000000000..ef31d1eccc80395c7effc96384256982351c10f8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D108.M.100.G.I.be @@ -0,0 +1,133 @@ +two|NIL|NIL +weeks|NIL|NIL +weeks|two|NIL +weeks|accusations|NIL +weeks|maneuvering|NIL +accusations|NIL|NIL +maneuvering|NIL|NIL +Iraq|NIL|NIL +invaded|NIL|NIL +invaded|weeks|ARGM-TMP +invaded|Iraq|ARG0 +invaded|Kuwait|ARG1 +invaded|August|ARGM-TMP +invaded|troops|ARG2 +invaded|taking|ARGM-ADV +tiny|NIL|NIL +Kuwait|NIL|NIL +Kuwait|tiny|NIL +August|NIL|NIL +August|2|NIL +2|NIL|NIL +100,000|NIL|NIL +battle-trained|NIL|NIL +troops|NIL|NIL +troops|100,000|NIL +troops|battle-trained|NIL +quickly|NIL|NIL +taking|NIL|NIL +taking|quickly|ARGM-MNR +taking|country|ARG1 +country|NIL|NIL +Kuwaiti|NIL|NIL +emir|NIL|NIL +refugees|NIL|NIL +fled|NIL|NIL +fled|Kuwaiti|ARG0 +fled|emir|ARG0 +fled|refugees|ARG0 +fled|Arabia|ARG1 +Saudi|NIL|NIL +Arabia|NIL|NIL +Arabia|Saudi|NIL +Iraq|NIL|NIL +began|NIL|NIL +began|fled|ARGM-ADV +began|Iraq|ARG0 +began|rounding|ARGM-ADV +began|repopulating|ARG1 +rounding|NIL|NIL +rounding|up|rel +rounding|nationals|ARG1 +foreign|NIL|NIL +nationals|NIL|NIL +nationals|foreign|NIL +repopulating|NIL|NIL +nation|NIL|NIL +Iraqi|NIL|NIL +citizens|NIL|NIL +citizens|Iraqi|NIL +foreigners|NIL|NIL +foreigners|Some|NIL +taken|NIL|NIL +taken|foreigners|ARG1 +taken|Iraq|ARG2 +taken|flown|ARGM-TMP +Iraq|NIL|NIL +flown|NIL|NIL +flown|some|ARG1 +flown|Jordan|ARG2 +Jordan|NIL|NIL +Reactions|NIL|NIL +Reactions|invasion|NIL +invasion|NIL|NIL +been|Reactions|AUX-SBJ +been|strong|AUX-PRD +strong|NIL|NIL +United|NIL|NIL +Nations|NIL|NIL +Security|NIL|NIL +Council|NIL|NIL +Council|United|NIL +Council|Nations|NIL +Council|Security|NIL +unanimously|NIL|NIL +passed|NIL|NIL +passed|Council|ARG0 +passed|unanimously|ARGM-DIS +passed|trade|ARG1 +passed|sanctions|ARG1 +trade|NIL|NIL +trade|military|NIL +military|NIL|NIL +sanctions|NIL|NIL +sanctions|military|NIL +President|NIL|NIL +Bush|NIL|NIL +Bush|President|NIL +said|NIL|NIL +said|Bush|ARG0 +said|defend|ARG1 +he|NIL|NIL +defend|NIL|NIL +defend|he|ARG0 +defend|interests|ARG1 +U.S.|NIL|NIL +interests|NIL|NIL +interests|U.S.|NIL +Iran|NIL|NIL +rejoiced|NIL|NIL +rejoiced|Iran|ARG0 +Most|NIL|NIL +nations|NIL|NIL +nations|Most|NIL +strongly|NIL|NIL +enforcing|NIL|NIL +enforcing|nations|ARG0 +enforcing|strongly|ARGM-MNR +enforcing|sanctions|ARG1 +enforcing|soar|ARGM-ADV +sanctions|NIL|NIL +sanctions|these|NIL +oil|NIL|NIL +prices|NIL|NIL +prices|oil|NIL +soar|NIL|NIL +soar|prices|ARG1 +Iraq|NIL|NIL +begins|NIL|NIL +begins|Iraq|ARG0 +begins|preparations|ARG1 +defensive|NIL|NIL +preparations|NIL|NIL +preparations|defensive|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D109.M.100.H.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D109.M.100.H.26.be new file mode 100644 index 0000000000000000000000000000000000000000..c8b0786d80dc8a85cfae288836f1191c15d28159 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D109.M.100.H.26.be @@ -0,0 +1,107 @@ +06/19/1994|NIL|NIL +capital|NIL|NIL +capital|This|NIL +capital|province|NIL +central|NIL|NIL +China|NIL|NIL +China|central|NIL +Hunan|NIL|NIL +province|NIL|NIL +province|China|NIL +province|Hunan|NIL +hit|NIL|NIL +hit|capital|ARG1 +hit|floods|ARG0 +floods|NIL|NIL +floods|wake|NIL +wake|NIL|NIL +wake|succession|NIL +succession|NIL|NIL +succession|a|NIL +succession|rainstorms|NIL +rainstorms|NIL|NIL +rainstorms|reaches|NIL +rainstorms|River|NIL +upper|NIL|NIL +middle|NIL|NIL +reaches|NIL|NIL +reaches|upper|NIL +reaches|middle|NIL +Xiangjiang|NIL|NIL +River|NIL|NIL +River|upper|NIL +River|middle|NIL +River|Xiangjiang|NIL +06/19/1994|NIL|NIL +flood|NIL|NIL +caused|NIL|NIL +caused|flood|ARG0 +caused|losses|ARG1 +caused|banks|ARGM-LOC +caused|Changsha|ARGM-LOC +serious|NIL|NIL +losses|NIL|NIL +losses|serious|NIL +people|NIL|NIL +banks|NIL|NIL +banks|both|NIL +banks|river|NIL +river|NIL|NIL +especially|NIL|NIL +Changsha|NIL|NIL +Changsha|especially|NIL +according|NIL|NIL +sources|NIL|NIL +06/19/1994|NIL|NIL +Most|NIL|NIL +Most|people|NIL +15,000|NIL|NIL +people|NIL|NIL +people|15,000|NIL +affected|NIL|NIL +affected|people|ARG1 +affected|flood|ARG0 +flood|NIL|NIL +flood|there|NIL +there|NIL|NIL +evacuated|NIL|NIL +evacuated|Most|ARG1 +evacuated|places|ARG2 +safer|NIL|NIL +places|NIL|NIL +places|safer|NIL +06/22/1994|NIL|NIL +Flood|NIL|NIL +Flood|06/22/1994|NIL +lasting|NIL|NIL +lasting|Flood|ARG1 +lasting|days|ARG2 +ten|NIL|NIL +more|NIL|NIL +days|NIL|NIL +days|Province|NIL +Fujian|NIL|NIL +Province|NIL|NIL +Province|Fujian|NIL +brought|NIL|NIL +brought|Flood|ARG0 +brought|losses|ARG1 +brought|there|ARGM-LOC +heavy|NIL|NIL +losses|NIL|NIL +losses|heavy|NIL +losses|agriculture|NIL +agriculture|NIL|NIL +there|NIL|NIL +06/22/1994|NIL|NIL +06/22/1994|these|NIL +Sanming|NIL|NIL +City|NIL|NIL +City|Sanming|NIL +worst|NIL|NIL +hit|NIL|NIL +hit|06/22/1994|ARG1 +hit|City|ARG1 +hit|worst|ARGM-MNR +hit|flood|ARG2 +flood|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D109.M.100.H.B.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D109.M.100.H.B.be new file mode 100644 index 0000000000000000000000000000000000000000..b5d70b0812411f3a5100a3eebd7abdcd99b591b4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D109.M.100.H.B.be @@ -0,0 +1,136 @@ +Floods|NIL|NIL +called|NIL|NIL +called|Floods|ARG1 +called|worst|ARGM-MNR +called|years|ARGM-LOC +worst|NIL|NIL +100|NIL|NIL +years|NIL|NIL +years|100|NIL +hit|NIL|NIL +hit|Floods|ARG0 +hit|parts|ARG1 +major|NIL|NIL +parts|NIL|NIL +parts|major|NIL +parts|Guangdong|NIL +parts|Guangxi|NIL +parts|Hunan|NIL +parts|Jiangxi|NIL +parts|Fujian|NIL +parts|Zhejiang|NIL +parts|Provinces|NIL +Guangdong|NIL|NIL +Guangxi|NIL|NIL +Hunan|NIL|NIL +Jiangxi|NIL|NIL +Fujian|NIL|NIL +Zhejiang|NIL|NIL +Provinces|NIL|NIL +They|NIL|NIL +caused|NIL|NIL +caused|They|ARG1 +caused|rains|ARG0 +torrential|NIL|NIL +rains|NIL|NIL +rains|torrential|NIL +rains|Xiangjiang|NIL +rains|Xunjiang|NIL +rains|Xijiang|NIL +rains|Beijiang|NIL +rains|river|NIL +rains|valleys|NIL +Xiangjiang|NIL|NIL +Xunjiang|NIL|NIL +Xijiang|NIL|NIL +Beijiang|NIL|NIL +river|NIL|NIL +valleys|NIL|NIL +Cities|NIL|NIL +Cities|seriously|NIL +Cities|where|NIL +Cities|Changsha|NIL +Cities|Zhuzhou|NIL +Cities|Xiangtan|NIL +Cities|Province|NIL +Cities|Wuzhou|NIL +Cities|Sanming|NIL +most|NIL|NIL +seriously|NIL|NIL +seriously|most|NIL +seriously|affected|NIL +affected|NIL|NIL +Changsha|NIL|NIL +Zhuzhou|NIL|NIL +Xiangtan|NIL|NIL +Hunan|NIL|NIL +Province|NIL|NIL +Province|Hunan|NIL +Wuzhou|NIL|NIL +Wuzhou|Province|NIL +Guangxi|NIL|NIL +Province|NIL|NIL +Province|Guangxi|NIL +Sanming|NIL|NIL +Sanming|Province|NIL +Fujian|NIL|NIL +Province|NIL|NIL +Province|Fujian|NIL +Central|NIL|NIL +Party|NIL|NIL +official|NIL|NIL +official|Central|NIL +official|Party|NIL +official|Wen|NIL +official|Jiabao|NIL +Wen|NIL|NIL +Jiabao|NIL|NIL +visited|NIL|NIL +visited|official|ARG0 +visited|Changsha|ARG1 +visited|Zhuzhou|ARG1 +visited|Xiangtan|ARG1 +visited|Jiangxi|ARG1 +visited|cities|ARG1 +visited|offer|ARGM-PNC +visited|direct|ARGM-PNC +Changsha|NIL|NIL +Zhuzhou|NIL|NIL +Xiangtan|NIL|NIL +Jiangxi|NIL|NIL +cities|NIL|NIL +offer|NIL|NIL +offer|appreciation|ARG1 +offer|encouragement|ARG1 +offer|guidance|ARG1 +offer|fighting|ARG1 +offer|work|ARG2 +appreciation|NIL|NIL +encouragement|NIL|NIL +guidance|NIL|NIL +ongoing|NIL|NIL +flood|NIL|NIL +fighting|NIL|NIL +fighting|ongoing|NIL +fighting|flood|NIL +relief|NIL|NIL +work|NIL|NIL +work|relief|NIL +direct|NIL|NIL +resumption|NIL|NIL +resumption|production|NIL +industrial|NIL|NIL +agricultural|NIL|NIL +production|NIL|NIL +production|industrial|NIL +production|agricultural|NIL +He|NIL|NIL +emphasized|NIL|NIL +emphasized|He|ARG0 +emphasized|measures|ARG1 +measures|NIL|NIL +salvage|NIL|NIL +salvage|crop|ARG1 +rice|NIL|NIL +crop|NIL|NIL +crop|rice|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D110.M.100.H.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D110.M.100.H.26.be new file mode 100644 index 0000000000000000000000000000000000000000..88c7b5395bdf756faa620ed3ff1552c00b46c6a8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D110.M.100.H.26.be @@ -0,0 +1,137 @@ +U.N.|NIL|NIL +Security|NIL|NIL +Council|NIL|NIL +Council|U.N.|NIL +Council|Security|NIL +Council|08/02/1990|NIL +08/02/1990|NIL|NIL +swiftly|NIL|NIL +condemned|NIL|NIL +condemned|Council|ARG0 +condemned|swiftly|ARGM-MNR +condemned|invasion|ARG1 +Iraq|NIL|NIL +invasion|NIL|NIL +invasion|Iraq|NIL +invasion|Kuwait|NIL +Kuwait|NIL|NIL +demanding|NIL|NIL +demanding|invasion|ARG0 +demanding|withdrawal|ARG1 +unconditional|NIL|NIL +withdrawal|NIL|NIL +withdrawal|an|NIL +withdrawal|unconditional|NIL +withdrawal|troops|NIL +Iraqi|NIL|NIL +troops|NIL|NIL +troops|Iraqi|NIL +calling|NIL|NIL +calling|invasion|ARG0 +calling|negotiations|ARG1 +immediate|NIL|NIL +negotiations|NIL|NIL +negotiations|immediate|NIL +negotiations|countries|NIL +countries|NIL|NIL +08/02/1990|NIL|NIL +08/02/1990|INVASION|NIL +08/02/1990|crossed|NIL +08/02/1990|seized|NIL +INVASION|NIL|NIL +Iraq|NIL|NIL +troops|NIL|NIL +troops|Iraq|NIL +led|NIL|NIL +led|troops|ARG1 +led|tanks|ARG0 +about|NIL|NIL +about|350|NIL +350|NIL|NIL +tanks|NIL|NIL +tanks|about|NIL +crossed|NIL|NIL +crossed|troops|ARG0 +crossed|border|ARG1 +crossed|dawn|ARGM-LOC +crossed|08/02/1990|ARGM-TMP +border|NIL|NIL +dawn|NIL|NIL +08/02/1990|NIL|NIL +seized|NIL|NIL +seized|troops|ARG0 +seized|palace|ARG1 +seized|buildings|ARG1 +seized|away|rel +Kuwaiti|NIL|NIL +palace|NIL|NIL +palace|Kuwaiti|NIL +government|NIL|NIL +buildings|NIL|NIL +buildings|government|NIL +40|NIL|NIL +miles|NIL|NIL +miles|40|NIL +away|NIL|NIL +away|miles|NIL +08/02/1990|NIL|NIL +CAUSE|NIL|NIL +CAUSE|08/02/1990|NIL +CAUSE|CONFLICT|NIL +CONFLICT|NIL|NIL +President|NIL|NIL +Saddam|NIL|NIL +Hussein|NIL|NIL +Hussein|President|NIL +Hussein|Saddam|NIL +Hussein|Iraq|NIL +Iraq|NIL|NIL +accused|NIL|NIL +accused|Hussein|ARG0 +accused|Kuwait|ARG1 +accused|stealing|ARG2 +accused|forcing|ARG2 +Kuwait|NIL|NIL +stealing|NIL|NIL +stealing|oil|ARG1 +oil|NIL|NIL +oil|territory|NIL +its|NIL|NIL +territory|NIL|NIL +territory|its|NIL +forcing|NIL|NIL +forcing|down|ARG2 +forcing|prices|ARG1 +forcing|overproduction|ARGM-MNR +oil|NIL|NIL +prices|NIL|NIL +prices|oil|NIL +overproduction|NIL|NIL +08/04/1990|NIL|NIL +Saudi|NIL|NIL +Arabia|NIL|NIL +Arabia|Saudi|NIL +subdued|NIL|NIL +subdued|Arabia|ARG1 +subdued|reaction|ARGM-LOC +its|NIL|NIL +reaction|NIL|NIL +reaction|its|NIL +reaction|invasion|NIL +Iraq|NIL|NIL +invasion|NIL|NIL +invasion|Iraq|NIL +invasion|Kuwait|NIL +Kuwait|NIL|NIL +places|NIL|NIL +places|Kuwait|ARG0 +places|forces|ARG1 +places|border|ARG2 +Iraqi|NIL|NIL +forces|NIL|NIL +forces|Iraqi|NIL +oil-rich|NIL|NIL +kingdom|NIL|NIL +kingdom|oil-rich|NIL +border|NIL|NIL +border|kingdom|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D110.M.100.H.C.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D110.M.100.H.C.be new file mode 100644 index 0000000000000000000000000000000000000000..26d706d604430068af2cf20dcf9b39132713d602 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D110.M.100.H.C.be @@ -0,0 +1,138 @@ +Iraq|NIL|NIL +powerful|NIL|NIL +army|NIL|NIL +army|Iraq|NIL +army|powerful|NIL +met|NIL|NIL +met|army|ARG0 +met|resistance|ARG1 +met|invaded|ARGM-TMP +little|NIL|NIL +resistance|NIL|NIL +resistance|little|NIL +it|NIL|NIL +invaded|NIL|NIL +invaded|it|ARG0 +invaded|Kuwait|ARG1 +invaded|August|ARGM-TMP +Kuwait|NIL|NIL +2|NIL|NIL +August|NIL|NIL +August|1990|NIL +1990|NIL|NIL +invasion|NIL|NIL +came|NIL|NIL +came|surprise|ARG2 +surprise|NIL|NIL +surprise|no|NIL +Iraqi|NIL|NIL +President|NIL|NIL +Hussein|NIL|NIL +Hussein|Iraqi|NIL +Hussein|President|NIL +accused|NIL|NIL +accused|Hussein|ARG0 +accused|Kuwait|ARG1 +accused|stealing|ARG2 +accused|exceeding|ARG2 +Kuwait|NIL|NIL +stealing|NIL|NIL +stealing|oil|ARG1 +oil|NIL|NIL +oil|area|NIL +border|NIL|NIL +area|NIL|NIL +area|a|NIL +area|border|NIL +exceeding|NIL|NIL +exceeding|goals|ARG1 +OPEC|NIL|NIL +production|NIL|NIL +goals|NIL|NIL +goals|OPEC|NIL +goals|production|NIL +United|NIL|NIL +Nations|NIL|NIL +Security|NIL|NIL +Council|NIL|NIL +Council|United|NIL +Council|Nations|NIL +Council|Security|NIL +voted|NIL|NIL +voted|Council|ARG0 +voted|6|ARG1 +voted|impose|ARG1 +6|NIL|NIL +August|NIL|NIL +impose|NIL|NIL +impose|August|ARG0 +impose|trade|ARG1 +impose|sanctions|ARG1 +impose|Iraq|ARG2 +trade|NIL|NIL +trade|military|NIL +military|NIL|NIL +sanctions|NIL|NIL +sanctions|military|NIL +Iraq|NIL|NIL +major|NIL|NIL +oil|NIL|NIL +importers|NIL|NIL +importers|Some|NIL +importers|major|NIL +importers|oil|NIL +already|NIL|NIL +embargoed|NIL|NIL +embargoed|importers|ARG0 +embargoed|already|ARGM-TMP +embargoed|oil|ARG1 +Iraqi|NIL|NIL +oil|NIL|NIL +oil|Iraqi|NIL +Oil|NIL|NIL +prices|NIL|NIL +prices|Oil|NIL +soared|NIL|NIL +United|NIL|NIL +United|States|NIL +States|NIL|NIL +moved|NIL|NIL +moved|United|ARG0 +moved|carrier|ARG1 +moved|Sea|ARG2 +aircraft|NIL|NIL +carrier|NIL|NIL +carrier|an|NIL +carrier|aircraft|NIL +Arabian|NIL|NIL +Sea|NIL|NIL +Sea|Arabian|NIL +Iraq|NIL|NIL +warned|NIL|NIL +warned|Iraq|ARG0 +warned|attack|ARG1 +its|NIL|NIL +people|NIL|NIL +people|its|NIL +people|United|NIL +possible|NIL|NIL +United|NIL|NIL +United|a|NIL +United|possible|NIL +United|States|NIL +States|NIL|NIL +attack|NIL|NIL +attack|people|ARG0 +President|NIL|NIL +Bush|NIL|NIL +Bush|President|NIL +only|NIL|NIL +said|NIL|NIL +said|Bush|ARG0 +said|only|ARGM-ADV +said|were|ARG1 +options|NIL|NIL +options|all|NIL +were|options|AUX-SBJ +were|open|AUX-PRD +open|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D111.M.100.H.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D111.M.100.H.26.be new file mode 100644 index 0000000000000000000000000000000000000000..5e30d66777ca80a9ec59b30b3b03e40a7068170a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D111.M.100.H.26.be @@ -0,0 +1,120 @@ +05/21/1988|NIL|NIL +Greek|NIL|NIL +divers|NIL|NIL +divers|05/21/1988|NIL +divers|Greek|NIL +plunged|NIL|NIL +plunged|divers|ARG1 +plunged|feet|ARG1 +plunged|history|ARG2 +plunged|finding|ARGM-ADV +162|NIL|NIL +feet|NIL|NIL +feet|162|NIL +feet|Sea|NIL +Aegean|NIL|NIL +Sea|NIL|NIL +Sea|Aegean|NIL +back|NIL|NIL +history|NIL|NIL +finding|NIL|NIL +finding|warship|ARG1 +finding|1822|ARGM-TMP +treasure-laden|NIL|NIL +Turkish|NIL|NIL +warship|NIL|NIL +warship|a|NIL +warship|treasure-laden|NIL +warship|Turkish|NIL +sunk|NIL|NIL +sunk|warship|ARG1 +sunk|revolutionaries|ARG0 +Greek|NIL|NIL +revolutionaries|NIL|NIL +revolutionaries|Greek|NIL +1822|NIL|NIL +05/21/1988|NIL|NIL +05/21/1988|remains|NIL +remains|NIL|NIL +remains|sailing|NIL +wooden|NIL|NIL +sailing|NIL|NIL +sailing|wooden|NIL +ship|NIL|NIL +found|NIL|NIL +found|ship|ARG1 +found|island|ARGM-LOC +found|Aegean|ARGM-LOC +found|point|ARGM-LOC +island|NIL|NIL +island|Chios|NIL +Chios|NIL|NIL +eastern|NIL|NIL +Aegean|NIL|NIL +Aegean|eastern|NIL +point|NIL|NIL +point|a|NIL +historical|NIL|NIL +accounts|NIL|NIL +accounts|historical|NIL +place|NIL|NIL +place|accounts|ARG0 +place|sinking|ARG1 +sinking|NIL|NIL +sinking|ship|NIL +Ottoman|NIL|NIL +ship|NIL|NIL +ship|Ottoman|NIL +according|NIL|NIL +Peter|NIL|NIL +Nicolaides|NIL|NIL +Nicolaides|Peter|NIL +Nicolaides|diver|NIL +Nicolaides|salvage|NIL +Nicolaides|expert|NIL +diver|NIL|NIL +diver|a|NIL +salvage|NIL|NIL +salvage|a|NIL +expert|NIL|NIL +expert|a|NIL +01/25/1989|NIL|NIL +Leopold|NIL|NIL +Gratz|NIL|NIL +Gratz|01/25/1989|NIL +Gratz|Leopold|NIL +Gratz|president|NIL +president|NIL|NIL +president|Parliament|NIL +president|one|NIL +Parliament|NIL|NIL +one|NIL|NIL +one|politicians|NIL +most|NIL|NIL +powerful|NIL|NIL +powerful|most|NIL +politicians|NIL|NIL +politicians|powerful|NIL +politicians|Party|NIL +Socialist|NIL|NIL +Party|NIL|NIL +Party|Socialist|NIL +resigned|NIL|NIL +resigned|Gratz|ARG0 +resigned|01/25/1989|ARGM-TMP +resigned|scandal|ARGM-CAU +resigned|ago|ARGM-TMP +01/25/1989|NIL|NIL +scandal|NIL|NIL +scandal|a|NIL +surrounding|NIL|NIL +mysterious|NIL|NIL +sinking|NIL|NIL +sinking|mysterious|NIL +sinking|ship|NIL +ship|NIL|NIL +12|NIL|NIL +years|NIL|NIL +years|12|NIL +ago|NIL|NIL +ago|years|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D111.M.100.H.C.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D111.M.100.H.C.be new file mode 100644 index 0000000000000000000000000000000000000000..fc9f2467de355c6a329a0153ff00c0a249cf706a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D111.M.100.H.C.be @@ -0,0 +1,116 @@ +Freighters|NIL|NIL +sank|NIL|NIL +sank|Freighters|ARG1 +sank|Cod|ARG2 +sank|1988|ARGM-TMP +Cape|NIL|NIL +Cod|NIL|NIL +Cod|Cape|NIL +Cod|1989|NIL +1989|NIL|NIL +1989|Sea|NIL +North|NIL|NIL +Sea|NIL|NIL +Sea|North|NIL +1988|NIL|NIL +1989|NIL|NIL +Austrian|NIL|NIL +scandal|NIL|NIL +scandal|A|NIL +scandal|1989|NIL +scandal|Austrian|NIL +grew|NIL|NIL +grew|scandal|ARG0 +grew|sinking|ARG2 +1977|NIL|NIL +sinking|NIL|NIL +sinking|1977|NIL +sinking|Lucona|NIL +Lucona|NIL|NIL +1989|NIL|NIL +Argentine|NIL|NIL +supply|NIL|NIL +ship|NIL|NIL +ship|an|NIL +ship|Argentine|NIL +ship|supply|NIL +sank|NIL|NIL +sank|1989|ARGM-TMP +sank|ship|ARG1 +sank|Antarctica|ARGM-LOC +Antarctica|NIL|NIL +1994|NIL|NIL +Korean|NIL|NIL +fishing|NIL|NIL +vessel|NIL|NIL +vessel|a|NIL +vessel|Korean|NIL +vessel|fishing|NIL +scuttled|NIL|NIL +scuttled|1994|ARGM-TMP +scuttled|vessel|ARG1 +scuttled|fishing|ARGM-TMP +fishing|NIL|NIL +fishing|illegally|ARGM-MNR +fishing|Argentina|ARGM-LOC +illegally|NIL|NIL +Argentina|NIL|NIL +Ostwind|NIL|NIL +Ostwind|yacht|NIL +once|NIL|NIL +Hitler|NIL|NIL +yacht|NIL|NIL +yacht|once|NIL +yacht|Hitler|NIL +purposely|NIL|NIL +sunk|NIL|NIL +sunk|Ostwind|ARG1 +sunk|purposely|ARGM-MNR +sunk|Florida|ARG2 +Florida|NIL|NIL +American|NIL|NIL +pleasure|NIL|NIL +boat|NIL|NIL +boat|An|NIL +boat|American|NIL +boat|pleasure|NIL +sunk|NIL|NIL +sunk|boat|ARG1 +sunk|whales|ARG0 +aggressive|NIL|NIL +whales|NIL|NIL +whales|aggressive|NIL +1994|NIL|NIL +ferry|NIL|NIL +ferry|Estonia|NIL +Estonia|NIL|NIL +sank|NIL|NIL +sank|1994|ARGM-TMP +sank|ferry|ARG0 +sank|800|ARG2 +800|NIL|NIL +800|aboard|NIL +German|NIL|NIL +battleship|NIL|NIL +battleship|German|NIL +battleship|Bismarck|NIL +Bismarck|NIL|NIL +scuttled|NIL|NIL +scuttled|battleship|ARG1 +scuttled|1989|ARGM-TMP +1989|NIL|NIL +located|NIL|NIL +located|battleship|ARG1 +located|1989|ARGM-TMP +1989|NIL|NIL +Turkish|NIL|NIL +vessel|NIL|NIL +vessel|A|NIL +vessel|Turkish|NIL +sunk|NIL|NIL +sunk|vessel|ARG1 +sunk|1822|ARGM-TMP +1822|NIL|NIL +found|NIL|NIL +found|vessel|ARG1 +1988|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D112.M.100.H.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D112.M.100.H.26.be new file mode 100644 index 0000000000000000000000000000000000000000..5bb4f2c580516ea33d0a6f7ede1bbc01ab22b515 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D112.M.100.H.26.be @@ -0,0 +1,135 @@ +12/11/1991|NIL|NIL +Kevin|NIL|NIL +Maxwell|NIL|NIL +Maxwell|12/11/1991|NIL +Maxwell|Kevin|NIL +also|NIL|NIL +quoted|NIL|NIL +quoted|Maxwell|ARG1 +quoted|also|ARGM-DIS +quoted|saying|ARG2 +saying|NIL|NIL +saying|is|ARG1 +much|NIL|NIL +much|criticism|NIL +criticism|NIL|NIL +calling|NIL|NIL +calling|criticism|ARG1 +calling|crook|ARG1 +his|NIL|NIL +father|NIL|NIL +father|his|NIL +crook|NIL|NIL +crook|a|NIL +is|much|AUX-SBJ +is|fair|AUX-PRD +fair|NIL|NIL +'s|there|NIL +'s|was|NIL +not|NIL|NIL +remotest|NIL|NIL +possibility|NIL|NIL +possibility|not|NIL +possibility|remotest|NIL +his|NIL|NIL +father|NIL|NIL +father|his|NIL +death|NIL|NIL +death|father|NIL +month|NIL|NIL +month|a|NIL +ago|NIL|NIL +ago|month|NIL +was|possibility|AUX-SBJ +was|death|AUX-SBJ +was|ago|AUX-TMP +was|suicide|AUX-PRD +suicide|NIL|NIL +suicide|a|NIL +12/11/1991|NIL|NIL +interview|NIL|NIL +interview|an|NIL +published|NIL|NIL +published|interview|ARG1 +published|12/11/1991|ARGM-TMP +published|Mirror|ARG0 +12/11/1991|NIL|NIL +Daily|NIL|NIL +Mirror|NIL|NIL +Mirror|Daily|NIL +Robert|NIL|NIL +Maxwell|NIL|NIL +Maxwell|Robert|NIL +London|NIL|NIL +flagship|NIL|NIL +newspaper|NIL|NIL +newspaper|Maxwell|NIL +newspaper|London|NIL +newspaper|flagship|NIL +newspaper|Maxwell|NIL +Kevin|NIL|NIL +Maxwell|NIL|NIL +Maxwell|Kevin|NIL +quoted|NIL|NIL +quoted|interview|ARGM-LOC +quoted|newspaper|ARG1 +quoted|saying|ARG2 +saying|NIL|NIL +saying|pensioners|ARG3 +saying|filed|ARG1 +pensioners|NIL|NIL +pensioners|05/03/1994|NIL +05/03/1994|NIL|NIL +Two|NIL|NIL +writs|NIL|NIL +writs|Two|NIL +filed|NIL|NIL +filed|writs|ARG1 +filed|alleging|ARGM-ADV +alleging|NIL|NIL +alleging|assisted|ARG1 +Goldman|NIL|NIL +Sachs|NIL|NIL +Sachs|Goldman|NIL +Sachs|US|NIL +US|NIL|NIL +US|bank|NIL +based|NIL|NIL +based|bank|ARG1 +investment|NIL|NIL +bank|NIL|NIL +bank|investment|NIL +assisted|NIL|NIL +assisted|Sachs|ARG0 +assisted|diverting|ARG2 +diverting|NIL|NIL +diverting|55m|ARG1 +diverting|schemes|ARG2 +Pounds|NIL|NIL +55m|NIL|NIL +55m|Pounds|NIL +two|NIL|NIL +pension|NIL|NIL +schemes|NIL|NIL +schemes|two|NIL +schemes|pension|NIL +controlled|NIL|NIL +controlled|schemes|ARG1 +controlled|Maxwell|ARG0 +controlled|ensure|ARGM-PNC +Robert|NIL|NIL +Maxwell|NIL|NIL +Maxwell|Robert|NIL +ensure|NIL|NIL +ensure|debts|ARG1 +ensure|Maxwell|ARG2 +ensure|repaid|ARG1 +its|NIL|NIL +own|NIL|NIL +debts|NIL|NIL +debts|its|NIL +debts|own|NIL +Maxwell|NIL|NIL +interests|NIL|NIL +repaid|NIL|NIL +repaid|interests|ARG1 diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D112.M.100.H.E.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D112.M.100.H.E.be new file mode 100644 index 0000000000000000000000000000000000000000..52dfa6cadc05c8969cab6456837c64ba1a546447 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D112.M.100.H.E.be @@ -0,0 +1,125 @@ +Economic|NIL|NIL +confusion|NIL|NIL +confusion|Economic|NIL +surrounds|NIL|NIL +surrounds|death|ARG2 +mysterious|NIL|NIL +death|NIL|NIL +death|mysterious|NIL +death|magnate|NIL +publishing|NIL|NIL +magnate|NIL|NIL +magnate|publishing|NIL +magnate|Robert|NIL +magnate|Maxwell|NIL +Robert|NIL|NIL +Maxwell|NIL|NIL +Maxwell|NIL|NIL +put|NIL|NIL +put|Maxwell|ARG0 +put|together|ARG2 +put|empire|ARG1 +put|immigration|ARGM-TMP +put|1940|ARGM-TMP +publishing|NIL|NIL +empire|NIL|NIL +empire|a|NIL +empire|publishing|NIL +following|NIL|NIL +his|NIL|NIL +immigration|NIL|NIL +immigration|his|NIL +immigration|Britain|NIL +Britain|NIL|NIL +1940|NIL|NIL +found|NIL|NIL +found|Maxwell|ARG1 +found|dead|ARG1 +found|coast|ARGM-LOC +found|fallen|ARGM-TMP +dead|NIL|NIL +coast|NIL|NIL +coast|Islands|NIL +Canary|NIL|NIL +Islands|NIL|NIL +Islands|Canary|NIL +apparently|NIL|NIL +fallen|NIL|NIL +fallen|apparently|ARGM-ADV +fallen|overboard|ARG2 +fallen|yacht|ARG3 +overboard|NIL|NIL +his|NIL|NIL +yacht|NIL|NIL +yacht|his|NIL +are|There|AUX-SBJ +are|allegations|AUX-PRD +allegations|NIL|NIL +Maxwell|NIL|NIL +along|two|NIL +two|NIL|NIL +two|sons|NIL +two|executive|NIL +two|Stoney|NIL +his|NIL|NIL +sons|NIL|NIL +sons|his|NIL +sons|Kevin|NIL +sons|Ian|NIL +Kevin|NIL|NIL +Ian|NIL|NIL +senior|NIL|NIL +executive|NIL|NIL +executive|a|NIL +executive|senior|NIL +executive|corporations|NIL +several|NIL|NIL +Maxwell|NIL|NIL +corporations|NIL|NIL +corporations|several|NIL +corporations|Maxwell|NIL +Michael|NIL|NIL +Stoney|NIL|NIL +Stoney|Michael|NIL +involved|NIL|NIL +involved|Maxwell|ARG1 +involved|along|ARGM-ADV +involved|transfer|ARG2 +illegal|NIL|NIL +transfer|NIL|NIL +transfer|illegal|NIL +transfer|funds|NIL +funds|NIL|NIL +help|NIL|NIL +help|fend|ARG1 +his|NIL|NIL +publishing|NIL|NIL +empire|NIL|NIL +empire|his|NIL +empire|publishing|NIL +fend|NIL|NIL +fend|off|rel +fend|debt|ARG1 +debt|NIL|NIL +scheme|NIL|NIL +used|NIL|NIL +used|trusts|ARG1 +used|number|ARG1 +Swiss|NIL|NIL +trusts|NIL|NIL +trusts|Swiss|NIL +number|NIL|NIL +number|a|NIL +number|institutions|NIL +institutions|NIL|NIL +institutions|bank|NIL +including|NIL|NIL +U.S.|NIL|NIL +investment|NIL|NIL +bank|NIL|NIL +bank|U.S.|NIL +bank|investment|NIL +bank|Sachs|NIL +Goldman|NIL|NIL +Sachs|NIL|NIL +Sachs|Goldman|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D113.M.100.H.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D113.M.100.H.26.be new file mode 100644 index 0000000000000000000000000000000000000000..7e2fd4de3fa9f25fbda283e2a11ca3d374520181 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D113.M.100.H.26.be @@ -0,0 +1,121 @@ +03/12/1993|NIL|NIL +ROW|NIL|NIL +ROW|A|NIL +erupted|NIL|NIL +erupted|ROW|ARG1 +erupted|exchange|ARGM-LOC +erupted|Exchange|ARGM-LOC +erupted|Board|ARGM-LOC +erupted|India|ARG1 +erupted|securities|ARG2 +erupted|inspection|ARG2 +Bombay|NIL|NIL +stock|NIL|NIL +exchange|NIL|NIL +exchange|Bombay|NIL +exchange|stock|NIL +exchange|market|NIL +India|NIL|NIL +largest|NIL|NIL +stock|NIL|NIL +market|NIL|NIL +market|India|NIL +market|largest|NIL +market|stock|NIL +Securities|NIL|NIL +Exchange|NIL|NIL +Board|NIL|NIL +India|NIL|NIL +securities|NIL|NIL +securities|watchdog|NIL +watchdog|NIL|NIL +board|NIL|NIL +recent|NIL|NIL +first-ever|NIL|NIL +inspection|NIL|NIL +inspection|board|NIL +inspection|recent|NIL +inspection|first-ever|NIL +inspection|books|NIL +stockbrokers|NIL|NIL +books|NIL|NIL +books|stockbrokers|NIL +03/13/1993|NIL|NIL +03/13/1993|were|NIL +targets|NIL|NIL +were|targets|AUX-SBJ +were|Exchange|AUX-PRD +Bombay|NIL|NIL +Stock|NIL|NIL +Exchange|NIL|NIL +Exchange|Bombay|NIL +Exchange|Stock|NIL +Exchange|building|NIL +Exchange|complex|NIL +Exchange|hotels|NIL +Exchange|airport|NIL +landmark|NIL|NIL +Air|NIL|NIL +India|NIL|NIL +building|NIL|NIL +building|landmark|NIL +building|Air|NIL +building|India|NIL +shopping|NIL|NIL +complex|NIL|NIL +complex|a|NIL +complex|shopping|NIL +two|NIL|NIL +hotels|NIL|NIL +hotels|two|NIL +airport|NIL|NIL +03/17/1993|NIL|NIL +identity|NIL|NIL +identity|bombers|NIL +bombers|NIL|NIL +was|03/17/1993|AUX-SBJ +was|identity|AUX-SBJ +was|unknown|AUX-PRD +unknown|NIL|NIL +explosion|NIL|NIL +comes|NIL|NIL +comes|killed|ARG1 +comes|injured|ARG1 +just|NIL|NIL +just|five|NIL +five|NIL|NIL +days|NIL|NIL +days|just|NIL +over|250|NIL +250|NIL|NIL +people|NIL|NIL +people|over|NIL +killed|NIL|NIL +killed|people|ARG1 +killed|at|ARG1 +killed|series|ARGM-MNR +at|least|NIL +at|1,200|NIL +least|NIL|NIL +1,200|NIL|NIL +injured|NIL|NIL +injured|people|ARG1 +injured|series|ARGM-LOC +series|NIL|NIL +series|a|NIL +series|attacks|NIL +bomb|NIL|NIL +attacks|NIL|NIL +attacks|bomb|NIL +aimed|NIL|NIL +aimed|series|ARG1 +aimed|heart|ARG2 +heart|NIL|NIL +heart|capital|NIL +Indian|NIL|NIL +business|NIL|NIL +capital|NIL|NIL +capital|Indian|NIL +capital|business|NIL +capital|Bombay|NIL +Bombay|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D113.M.100.H.I.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D113.M.100.H.I.be new file mode 100644 index 0000000000000000000000000000000000000000..71c1511348e00b442a22d8e17236376401a4235c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D113.M.100.H.I.be @@ -0,0 +1,135 @@ +Bombay|NIL|NIL +Stock|NIL|NIL +Exchange|NIL|NIL +Exchange|Bombay|NIL +Exchange|Stock|NIL +Exchange|BSE|NIL +BSE|NIL|NIL +remains|NIL|NIL +remains|Exchange|ARG1 +remains|week|ARGM-TMP +open|NIL|NIL +following|NIL|NIL +week|NIL|NIL +week|a|NIL +week|onslaught|NIL +onslaught|NIL|NIL +First|NIL|NIL +Securities|NIL|NIL +Exchange|NIL|NIL +Board|NIL|NIL +India|NIL|NIL +accused|NIL|NIL +accused|First|ARGM-TMP +accused|Securities|ARG0 +accused|Exchange|ARG0 +accused|Board|ARG0 +accused|India|ARG0 +accused|market|ARG1 +accused|ignoring|ARG2 +accused|failing|ARG2 +market|NIL|NIL +ignoring|NIL|NIL +failing|NIL|NIL +enforce|NIL|NIL +enforce|rules|ARG1 +rules|NIL|NIL +Indian|NIL|NIL +market|NIL|NIL +market|Indian|NIL +already|NIL|NIL +fallen|NIL|NIL +fallen|market|ARG1 +fallen|already|ARGM-TMP +fallen|aggravated|ARGM-ADV +48|NIL|NIL +percent|NIL|NIL +percent|48|NIL +percent|year|NIL +early|NIL|NIL +last|NIL|NIL +year|NIL|NIL +year|early|NIL +year|last|NIL +aggravated|NIL|NIL +aggravated|reaction|ARG0 +negative|NIL|NIL +reaction|NIL|NIL +reaction|a|NIL +reaction|negative|NIL +reaction|budget|NIL +Indian|NIL|NIL +budget|NIL|NIL +budget|Indian|NIL +Friday|NIL|NIL +afternoon|NIL|NIL +afternoon|Friday|NIL +India|NIL|NIL +commercial|NIL|NIL +heart|NIL|NIL +heart|India|NIL +heart|commercial|NIL +heart|BSE|NIL +including|NIL|NIL +BSE|NIL|NIL +hit|NIL|NIL +hit|afternoon|ARGM-ADV +hit|heart|ARG1 +hit|bombs|ARG2 +car|NIL|NIL +bombs|NIL|NIL +bombs|car|NIL +militant|NIL|NIL +Sikh|NIL|NIL +group|NIL|NIL +group|a|NIL +group|militant|NIL +group|Sikh|NIL +claimed|NIL|NIL +claimed|group|ARG0 +claimed|responsibility|ARG1 +responsibility|NIL|NIL +Indian|NIL|NIL +officials|NIL|NIL +officials|Indian|NIL +still|NIL|NIL +suspect|NIL|NIL +suspect|claimed|ARGM-TMP +suspect|officials|ARG0 +suspect|still|ARGM-TMP +suspect|extremists|ARG1 +Moslem|NIL|NIL +extremists|NIL|NIL +extremists|Moslem|NIL +seeking|NIL|NIL +seeking|extremists|ARG0 +seeking|return|ARG1 +return|NIL|NIL +return|a|NIL +return|strife|NIL +communal|NIL|NIL +strife|NIL|NIL +strife|communal|NIL +BSE|NIL|NIL +was|BSE|AUX-SBJ +was|able|AUX-PRD +able|NIL|NIL +able|resume|NIL +resume|NIL|NIL +resume|trading|ARG1 +limited|NIL|NIL +trading|NIL|NIL +trading|limited|NIL +slight|NIL|NIL +rise|NIL|NIL +rise|a|NIL +rise|slight|NIL +halted|NIL|NIL +halted|rise|ARG1 +halted|explosion|ARG0 +halted|Wednesday|ARGM-TMP +halted|Calcutta|ARGM-LOC +explosion|NIL|NIL +explosion|an|NIL +Wednesday|NIL|NIL +Calcutta|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D114.M.100.H.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D114.M.100.H.26.be new file mode 100644 index 0000000000000000000000000000000000000000..89b34985c90113212c6268969a3b02d8b58ce4af --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D114.M.100.H.26.be @@ -0,0 +1,129 @@ +01/21/1990|NIL|NIL +Troops|NIL|NIL +Troops|01/21/1990|NIL +battled|NIL|NIL +battled|Troops|ARG0 +battled|mobs|ARG1 +battled|city|ARGM-LOC +battled|weekend|ARGM-TMP +mobs|NIL|NIL +mobs|separatists|NIL +Moslem|NIL|NIL +separatists|NIL|NIL +separatists|Moslem|NIL +Kashmir|NIL|NIL +city|NIL|NIL +city|Kashmir|NIL +city|Srinagar|NIL +Srinagar|NIL|NIL +weekend|NIL|NIL +at|least|NIL +at|21|NIL +least|NIL|NIL +21|NIL|NIL +people|NIL|NIL +people|at|NIL +killed|NIL|NIL +killed|people|ARG1 +100|NIL|NIL +wounded|NIL|NIL +wounded|100|ARG1 +wounded|fighting|ARGM-TMP +fighting|NIL|NIL +subsided|NIL|NIL +subsided|fighting|ARG1 +subsided|night|ARGM-LOC +01/21/1990|NIL|NIL +night|NIL|NIL +night|01/21/1990|NIL +police|NIL|NIL +said|NIL|NIL +said|police|ARG0 +03/07/1990|NIL|NIL +03/07/1990|There|NIL +were|03/07/1990|AUX-SBJ +were|casualties|AUX-PRD +casualties|NIL|NIL +casualties|no|NIL +he|NIL|NIL +said|NIL|NIL +said|he|ARG0 +03/24/1990|NIL|NIL +Srinagar|NIL|NIL +Srinagar|03/24/1990|NIL +been|Srinagar|AUX-SBJ +been|point|AUX-PRD +focal|NIL|NIL +point|NIL|NIL +point|a|NIL +point|focal|NIL +point|fighting|NIL +fighting|NIL|NIL +fighting|troops|NIL +fighting|separatists|NIL +government|NIL|NIL +troops|NIL|NIL +troops|government|NIL +separatists|NIL|NIL +06/25/1990|NIL|NIL +The|NIL|NIL +bodies|NIL|NIL +bodies|06/25/1990|NIL +bodies|The|NIL +bodies|Moslems|NIL +four|NIL|NIL +Moslems|NIL|NIL +Moslems|four|NIL +found|NIL|NIL +found|bodies|ARG1 +found|town|ARGM-LOC +found|kidnapped|ARGM-TMP +Kashmir|NIL|NIL +town|NIL|NIL +town|a|NIL +town|Kashmir|NIL +town|06/25/1990|NIL +06/25/1990|NIL|NIL +five|NIL|NIL +days|NIL|NIL +days|five|NIL +they|NIL|NIL +kidnapped|NIL|NIL +kidnapped|they|ARG1 +kidnapped|militants|ARG0 +Moslem|NIL|NIL +militants|NIL|NIL +militants|Moslem|NIL +agitating|NIL|NIL +agitating|militants|ARG0 +agitating|secession|ARG2 +secession|NIL|NIL +secession|India|NIL +India|NIL|NIL +06/25/1990|NIL|NIL +Hezbul|NIL|NIL +Mujahedeen|NIL|NIL +Mujahedeen|Hezbul|NIL +is|06/25/1990|AUX-SBJ +is|Mujahedeen|AUX-SBJ +is|one|AUX-PRD +one|NIL|NIL +one|more|NIL +more|NIL|NIL +more|organizations|NIL +dozen|NIL|NIL +dozen|a|NIL +Moslem|NIL|NIL +organizations|NIL|NIL +organizations|dozen|NIL +organizations|Moslem|NIL +fighting|NIL|NIL +fighting|organizations|ARG0 +fighting|independence|ARG1 +fighting|India|ARG2 +independence|NIL|NIL +independence|valley|NIL +Kashmir|NIL|NIL +valley|NIL|NIL +valley|Kashmir|NIL +India|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D114.M.100.H.F.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D114.M.100.H.F.be new file mode 100644 index 0000000000000000000000000000000000000000..694f53e28e9f5ba6ba6b3544b182686313bf6396 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D114.M.100.H.F.be @@ -0,0 +1,119 @@ +India|NIL|NIL +Pakistan|NIL|NIL +feuded|NIL|NIL +feuded|India|ARG0 +feuded|Pakistan|ARG0 +feuded|Jammu-Kashmir|ARG2 +feuded|divided|ARGM-TMP +Jammu-Kashmir|NIL|NIL +subcontinent|NIL|NIL +divided|NIL|NIL +divided|subcontinent|ARG1 +divided|1947|ARGM-TMP +1947|NIL|NIL +It|NIL|NIL +is|It|AUX-SBJ +is|state|AUX-PRD +India|NIL|NIL +only|NIL|NIL +predominately|NIL|NIL +predominately|only|NIL +Moslem|NIL|NIL +state|NIL|NIL +state|India|NIL +state|predominately|NIL +state|Moslem|NIL +state|%|NIL +64|NIL|NIL +%|NIL|NIL +%|64|NIL +%|people|NIL +its|NIL|NIL +five|NIL|NIL +five|million|NIL +million|NIL|NIL +people|NIL|NIL +people|its|NIL +people|five|NIL +people|Moslem|NIL +Moslem|NIL|NIL +Moslem|NIL|NIL +separatists|NIL|NIL +separatists|Moslem|NIL +began|NIL|NIL +began|separatists|ARG0 +began|campaign|ARG1 +began|Jammu-Kashmir|ARGM-LOC +began|hoping|ARG1 +campaign|NIL|NIL +campaign|a|NIL +campaign|violence|NIL +violence|NIL|NIL +Jammu-Kashmir|NIL|NIL +hoping|NIL|NIL +hoping|initially|ARGM-TMP +initially|NIL|NIL +lead|NIL|NIL +lead|union|ARG2 +union|NIL|NIL +union|Pakistan|NIL +Pakistan|NIL|NIL +later|NIL|NIL +later|independence|NIL +independence|NIL|NIL +Indian|NIL|NIL +authorities|NIL|NIL +authorities|Indian|NIL +began|NIL|NIL +began|authorities|ARG0 +began|January|ARGM-TMP +crackdown|NIL|NIL +crackdown|a|NIL +January|NIL|NIL +January|1990|NIL +1990|NIL|NIL +by|died|NIL +summer|NIL|NIL +a|thousand|NIL +thousand|NIL|NIL +people|NIL|NIL +people|a|NIL +died|NIL|NIL +died|people|ARG1 +India|NIL|NIL +accused|NIL|NIL +accused|India|ARG0 +accused|Pakistan|ARG1 +accused|arming|ARG2 +accused|training|ARG2 +Pakistan|NIL|NIL +arming|NIL|NIL +training|NIL|NIL +training|insurgents|NIL +training|charge|NIL +insurgents|NIL|NIL +charge|NIL|NIL +charge|a|NIL +Pakistan|NIL|NIL +denied|NIL|NIL +denied|charge|ARG1 +denied|Pakistan|ARG0 +incidences|NIL|NIL +incidences|soldiers|NIL +soldiers|NIL|NIL +firing|NIL|NIL +firing|lines|NIL +cease-fire|NIL|NIL +lines|NIL|NIL +lines|cease-fire|NIL +two|NIL|NIL +countries|NIL|NIL +countries|two|NIL +said|NIL|NIL +said|incidences|ARGM-ADV +said|firing|ARG0 +situation|NIL|NIL +was|situation|AUX-SBJ +local|NIL|NIL +not|NIL|NIL +serious|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D115.M.100.I.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D115.M.100.I.26.be new file mode 100644 index 0000000000000000000000000000000000000000..a8aa132a5f6e6fa47a10115f2ef4ea13158afb7b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D115.M.100.I.26.be @@ -0,0 +1,140 @@ +08/21/1988|NIL|NIL +strong|NIL|NIL +earthquake|NIL|NIL +earthquake|A|NIL +earthquake|strong|NIL +triggered|NIL|NIL +triggered|earthquake|ARG0 +triggered|landslides|ARG1 +triggered|houses|ARG1 +triggered|08/21/1988|ARGM-TMP +triggered|killing|ARGM-ADV +triggered|injuring|ARGM-ADV +landslides|NIL|NIL +destroyed|NIL|NIL +destroyed|houses|ARG1 +houses|NIL|NIL +houses|region|NIL +mountainous|NIL|NIL +India-Nepal|NIL|NIL +border|NIL|NIL +region|NIL|NIL +region|mountainous|NIL +region|India-Nepal|NIL +region|border|NIL +region|early|NIL +early|NIL|NIL +08/21/1988|NIL|NIL +killing|NIL|NIL +killing|people|ARG1 +at|least|NIL +at|237|NIL +least|NIL|NIL +237|NIL|NIL +people|NIL|NIL +people|at|NIL +injuring|NIL|NIL +more|NIL|NIL +than|more|NIL +than|1,500|NIL +1,500|NIL|NIL +officials|NIL|NIL +news|NIL|NIL +reports|NIL|NIL +reports|news|NIL +said|NIL|NIL +said|triggered|ARGM-ADV +said|officials|ARG0 +said|reports|ARG0 +08/22/1988|NIL|NIL +Rescuers|NIL|NIL +Rescuers|08/22/1988|NIL +searched|NIL|NIL +searched|Rescuers|ARG0 +searched|debris|ARG1 +searched|victims|ARG1 +searched|parts|ARG1 +searched|killing|ARGM-ADV +searched|injuring|ARGM-ADV +debris|NIL|NIL +debris|08/22/1988|NIL +08/22/1988|NIL|NIL +victims|NIL|NIL +victims|earthquake|NIL +earthquake|NIL|NIL +earthquake|an|NIL +ravaged|NIL|NIL +ravaged|earthquake|ARG0 +ravaged|one-third|ARG1 +one-third|NIL|NIL +one-third|territory|NIL +country|NIL|NIL +country|this|NIL +territory|NIL|NIL +territory|country|NIL +parts|NIL|NIL +parts|India|NIL +India|NIL|NIL +killing|NIL|NIL +killing|people|ARG1 +at|least|NIL +at|650|NIL +least|NIL|NIL +650|NIL|NIL +people|NIL|NIL +people|at|NIL +injuring|NIL|NIL +injuring|thousands|ARG1 +thousands|NIL|NIL +08/22/1988|NIL|NIL +quake|NIL|NIL +centered|NIL|NIL +centered|quake|ARG1 +centered|border|ARG2 +almost|NIL|NIL +India-Nepal|NIL|NIL +border|NIL|NIL +border|almost|NIL +border|India-Nepal|NIL +registered|NIL|NIL +6.5|NIL|NIL +Richter|NIL|NIL +scale|NIL|NIL +scale|Richter|NIL +08/23/1988|NIL|NIL +Rumors|NIL|NIL +Rumors|08/23/1988|NIL +predicting|NIL|NIL +predicting|Rumors|ARG0 +predicting|quake|ARG1 +large|NIL|NIL +quake|NIL|NIL +quake|another|NIL +quake|large|NIL +sent|NIL|NIL +sent|Rumors|ARG0 +sent|thousands|ARG1 +sent|India|ARGM-LOC +sent|Nepal|ARGM-LOC +thousands|NIL|NIL +thousands|people|NIL +panic-stricken|NIL|NIL +people|NIL|NIL +people|panic-stricken|NIL +fleeing|NIL|NIL +fleeing|people|ARG0 +fleeing|homes|ARG1 +their|NIL|NIL +homes|NIL|NIL +homes|their|NIL +India|NIL|NIL +Nepal|NIL|NIL +08/26/1988|NIL|NIL +India|NIL|NIL +official|NIL|NIL +count|NIL|NIL +count|official|NIL +rose|NIL|NIL +rose|India|ARGM-LOC +rose|277|ARG4 +277|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D115.M.100.I.B.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D115.M.100.I.B.be new file mode 100644 index 0000000000000000000000000000000000000000..6bccabbe617492157ff2cac5f37e7402324a49fc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D115.M.100.I.B.be @@ -0,0 +1,142 @@ +deadliest|NIL|NIL +earthquake|NIL|NIL +earthquake|deadliest|NIL +earthquake|region|NIL +region|NIL|NIL +region|this|NIL +1950|NIL|NIL +hit|NIL|NIL +hit|earthquake|ARG0 +hit|1950|ARGM-TMP +hit|border|ARG2 +hit|killing|ARGM-ADV +hit|injuring|ARGM-ADV +Nepal-India|NIL|NIL +border|NIL|NIL +border|Nepal-India|NIL +killing|NIL|NIL +killing|people|ARG1 +at|least|NIL +at|750|NIL +least|NIL|NIL +750|NIL|NIL +people|NIL|NIL +people|at|NIL +injuring|NIL|NIL +injuring|thousands|ARG1 +thousands|NIL|NIL +magnitude|NIL|NIL +6.5|NIL|NIL +quake|NIL|NIL +quake|magnitude|NIL +quake|6.5|NIL +quake|epicenter|NIL +quake|Nepal|NIL +its|NIL|NIL +epicenter|NIL|NIL +epicenter|its|NIL +epicenter|miles|NIL +100|NIL|NIL +miles|NIL|NIL +miles|100|NIL +miles|southeast|NIL +southeast|NIL|NIL +southeast|Katmandu|NIL +Katmandu|NIL|NIL +Nepal|NIL|NIL +felt|NIL|NIL +felt|quake|ARG1 +felt|away|ARGM-LOC +as|NIL|NIL +far|NIL|NIL +away|NIL|NIL +away|as|NIL +away|far|NIL +away|Delhi|NIL +away|Calcutta|NIL +New|NIL|NIL +Delhi|NIL|NIL +Delhi|New|NIL +Calcutta|NIL|NIL +hardest|NIL|NIL +hit|NIL|NIL +hit|hardest|ARGM-MNR +hit|areas|ARG1 +areas|NIL|NIL +were|areas|AUX-SBJ +were|state|AUX-PRD +were|India|AUX-LOC +were|district|AUX-LOC +Bihar|NIL|NIL +state|NIL|NIL +state|Bihar|NIL +India|NIL|NIL +Dharan|NIL|NIL +district|NIL|NIL +district|Dharan|NIL +district|Nepal|NIL +Nepal|NIL|NIL +Aftershocks|NIL|NIL +kept|NIL|NIL +kept|Aftershocks|ARG0 +kept|terrified|ARG1 +people|NIL|NIL +terrified|NIL|NIL +terrified|people|ARG0 +terrified|days|ARGM-PNC +days|NIL|NIL +Earthquake|NIL|NIL +damage|NIL|NIL +damage|Earthquake|NIL +monsoon|NIL|NIL +rains|NIL|NIL +rains|monsoon|NIL +paralyzed|NIL|NIL +paralyzed|damage|ARG0 +paralyzed|rains|ARG0 +paralyzed|hindering|ARGM-ADV +paralyzed|isolating|ARGM-ADV +rail|NIL|NIL +road|NIL|NIL +transportation|NIL|NIL +thus|NIL|NIL +hindering|NIL|NIL +hindering|rail|ARG0 +hindering|road|ARG0 +hindering|transportation|ARG0 +hindering|thus|ARGM-DIS +hindering|efforts|ARG1 +rescue|NIL|NIL +efforts|NIL|NIL +efforts|rescue|NIL +isolating|NIL|NIL +isolating|rail|ARG0 +isolating|road|ARG0 +isolating|transportation|ARG0 +isolating|thus|ARGM-DIS +isolating|areas|ARG1 +remote|NIL|NIL +areas|NIL|NIL +areas|some|NIL +areas|remote|NIL +Nepal|NIL|NIL +police|NIL|NIL +bulldozed|NIL|NIL +bulldozed|Nepal|ARGM-LOC +bulldozed|police|ARG1 +bulldozed|houses|ARG1 +more|NIL|NIL +than|more|NIL +than|50|NIL +50|NIL|NIL +houses|NIL|NIL +houses|than|NIL +considered|NIL|NIL +considered|houses|ARG1 +considered|unsafe|ARG2 +too|NIL|NIL +unsafe|NIL|NIL +unsafe|too|NIL +unsafe|be|NIL +be|habitable|AUX-PRD +habitable|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D116.M.100.I.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D116.M.100.I.26.be new file mode 100644 index 0000000000000000000000000000000000000000..1b16a976320b083d99748ee34e9c7d2a5a0cba2a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D116.M.100.I.26.be @@ -0,0 +1,154 @@ +04/22/1990|NIL|NIL +Discovery|NIL|NIL +five|NIL|NIL +astronauts|NIL|NIL +astronauts|Discovery|NIL +astronauts|five|NIL +returned|NIL|NIL +returned|astronauts|ARG0 +returned|04/22/1990|ARGM-TMP +returned|attempt|ARGM-PNC +04/22/1990|NIL|NIL +second|NIL|NIL +attempt|NIL|NIL +attempt|a|NIL +attempt|second|NIL +launch|NIL|NIL +launch|shuttle|ARG1 +launch|payload|ARGM-MNR +shuttle|NIL|NIL +NASA|NIL|NIL +most|NIL|NIL +valuable|NIL|NIL +valuable|most|NIL +celebrated|NIL|NIL +celebrated|most|NIL +payload|NIL|NIL +payload|NASA|NIL +payload|valuable|NIL +payload|celebrated|NIL +payload|Telescope|NIL +$|NIL|NIL +$|1.5|NIL +$|billion|NIL +1.5|NIL|NIL +billion|NIL|NIL +Hubble|NIL|NIL +Space|NIL|NIL +Telescope|NIL|NIL +Telescope|$|NIL +Telescope|Hubble|NIL +Telescope|Space|NIL +04/24/1990|NIL|NIL +Five|NIL|NIL +astronauts|NIL|NIL +astronauts|Five|NIL +boarded|NIL|NIL +boarded|astronauts|ARG0 +boarded|Discovery|ARG1 +boarded|04/24/1990|ARGM-TMP +boarded|try|ARGM-PNC +Discovery|NIL|NIL +04/24/1990|NIL|NIL +second|NIL|NIL +try|NIL|NIL +try|a|NIL +try|second|NIL +sending|NIL|NIL +sending|Telescope|ARG1 +sending|orbit|ARG2 +Hubble|NIL|NIL +Space|NIL|NIL +Telescope|NIL|NIL +Telescope|Hubble|NIL +Telescope|Space|NIL +orbit|NIL|NIL +scan|NIL|NIL +scan|reaches|ARG1 +scan|clues|ARG2 +outermost|NIL|NIL +reaches|NIL|NIL +reaches|outermost|NIL +reaches|universe|NIL +universe|NIL|NIL +clues|NIL|NIL +clues|beginning|NIL +beginning|NIL|NIL +beginning|time|NIL +time|NIL|NIL +04/25/1990|NIL|NIL +Discovery|NIL|NIL +astronauts|NIL|NIL +astronauts|Discovery|NIL +triumphantly|NIL|NIL +launched|NIL|NIL +launched|astronauts|ARG0 +launched|triumphantly|ARGM-MNR +launched|1.5|ARG1 +launched|04/25/1990|ARGM-TMP +launched|freed|ARGM-TMP +$|NIL|NIL +1.5|NIL|NIL +1.5|$|NIL +1.5|billion|NIL +billion|NIL|NIL +billion|Telescope|NIL +billion|orbit|NIL +Hubble|NIL|NIL +Space|NIL|NIL +Telescope|NIL|NIL +Telescope|Hubble|NIL +Telescope|Space|NIL +one|NIL|NIL +orbit|NIL|NIL +orbit|one|NIL +late|NIL|NIL +04/25/1990|NIL|NIL +04/25/1990|late|NIL +last-ditch|NIL|NIL +commands|NIL|NIL +commands|last-ditch|NIL +commands|Earth|NIL +Earth|NIL|NIL +freed|NIL|NIL +freed|commands|ARG0 +freed|panel|ARG1 +freed|averting|ARGM-ADV +stuck|NIL|NIL +solar|NIL|NIL +panel|NIL|NIL +panel|a|NIL +panel|stuck|NIL +panel|solar|NIL +narrowly|NIL|NIL +averting|NIL|NIL +averting|narrowly|ARGM-MNR +averting|spacewalk|ARG1 +daring|NIL|NIL +emergency|NIL|NIL +spacewalk|NIL|NIL +spacewalk|a|NIL +spacewalk|daring|NIL +spacewalk|emergency|NIL +04/26/1990|NIL|NIL +Space|NIL|NIL +shuttle|NIL|NIL +shuttle|04/26/1990|NIL +shuttle|Space|NIL +shuttle|Discovery|NIL +Discovery|NIL|NIL +was|shuttle|AUX-SBJ +was|miles|AUX-PRD +was|available|AUX-PRD +46|NIL|NIL +miles|NIL|NIL +miles|46|NIL +miles|away|NIL +away|NIL|NIL +available|NIL|NIL +available|remedy|NIL +remedy|NIL|NIL +remedy|problems|ARG1 +certain|NIL|NIL +problems|NIL|NIL +problems|certain|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D116.M.100.I.B.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D116.M.100.I.B.be new file mode 100644 index 0000000000000000000000000000000000000000..50000d1ef7d32977b520c43a5253e63e3573d052 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D116.M.100.I.B.be @@ -0,0 +1,144 @@ +shuttle|NIL|NIL +shuttle|Discovery|NIL +Discovery|NIL|NIL +soared|NIL|NIL +soared|launch|ARGM-PNC +space|NIL|NIL +launch|NIL|NIL +launch|payload|ARG1 +its|NIL|NIL +history-making|NIL|NIL +payload|NIL|NIL +payload|its|NIL +payload|history-making|NIL +payload|Telescope|NIL +$|NIL|NIL +$|1.5|NIL +$|billion|NIL +1.5|NIL|NIL +billion|NIL|NIL +Hubble|NIL|NIL +Space|NIL|NIL +Telescope|NIL|NIL +Telescope|$|NIL +Telescope|Hubble|NIL +Telescope|Space|NIL +orbiting|NIL|NIL +orbiting|miles|ARG1 +at|380|NIL +380|NIL|NIL +statute|NIL|NIL +miles|NIL|NIL +miles|at|NIL +miles|statute|NIL +miles|Earth|NIL +Earth|NIL|NIL +it|NIL|NIL +provide|NIL|NIL +provide|orbiting|ARGM-ADV +provide|it|ARG0 +provide|astronomers|ARG2 +provide|worldwide|ARG2 +provide|resolution|ARG2 +provide|sensitivity|ARG1 +astronomers|NIL|NIL +worldwide|NIL|NIL +10|NIL|NIL +times|NIL|NIL +times|10|NIL +better|NIL|NIL +resolution|NIL|NIL +resolution|times|NIL +resolution|better|NIL +25|NIL|NIL +times|NIL|NIL +times|25|NIL +more|NIL|NIL +sensitivity|NIL|NIL +sensitivity|times|NIL +sensitivity|more|NIL +sensitivity|ground|NIL +ground|NIL|NIL +ground|observatories|NIL +based|NIL|NIL +based|observatories|ARG1 +observatories|NIL|NIL +telescope|NIL|NIL +release|NIL|NIL +release|telescope|NIL +release|shuttle|NIL +shuttle|NIL|NIL +shuttle|Discovery|NIL +Discovery|NIL|NIL +delayed|NIL|NIL +delayed|release|ARG1 +delayed|took|ARGM-CAU +solar|NIL|NIL +power|NIL|NIL +panel|NIL|NIL +panel|a|NIL +panel|solar|NIL +panel|power|NIL +took|NIL|NIL +took|panel|ARG0 +took|unfurled|ARGM-TMP +three|NIL|NIL +tries|NIL|NIL +tries|three|NIL +it|NIL|NIL +fully|NIL|NIL +unfurled|NIL|NIL +unfurled|it|ARG0 +unfurled|fully|ARGM-MNR +Once|NIL|NIL +released|NIL|NIL +ground|NIL|NIL +controllers|NIL|NIL +controllers|ground|NIL +were|released|AUX-ADV +were|controllers|AUX-SBJ +were|unable|AUX-PRD +unable|NIL|NIL +unable|link|NIL +link|NIL|NIL +link|up|rel +link|antennas|ARG1 +telescope|NIL|NIL +two|NIL|NIL +high-gain|NIL|NIL +antennas|NIL|NIL +antennas|telescope|NIL +antennas|two|NIL +antennas|high-gain|NIL +antennas|satellite|NIL +their|NIL|NIL +assigned|NIL|NIL +assigned|satellite|ARG1 +relay|NIL|NIL +satellite|NIL|NIL +satellite|their|NIL +satellite|relay|NIL +However|NIL|NIL +scientists|NIL|NIL +optimistic|NIL|NIL +optimistic|be|NIL +Hubble|NIL|NIL +soon|NIL|NIL +be|Hubble|AUX-SBJ +be|soon|AUX-TMP +be|operational|AUX-PRD +operational|NIL|NIL +authorized|NIL|NIL +authorized|However|ARGM-DIS +authorized|scientists|ARG0 +authorized|optimistic|ARGM-ADV +authorized|return|ARG1 +shuttle|NIL|NIL +Discovery|NIL|NIL +crew|NIL|NIL +crew|shuttle|NIL +crew|Discovery|NIL +return|NIL|NIL +return|crew|ARG0 +return|home|ARG1 +home|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D117.M.100.I.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D117.M.100.I.26.be new file mode 100644 index 0000000000000000000000000000000000000000..6ccc42874688c5dde9d7248996c2a18e36e7631c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D117.M.100.I.26.be @@ -0,0 +1,113 @@ +10/08/1990|NIL|NIL +Booker|NIL|NIL +Prize|NIL|NIL +Prize|Booker|NIL +is|10/08/1990|AUX-SBJ +is|Prize|AUX-SBJ +is|event|AUX-PRD +Britain|NIL|NIL +literary|NIL|NIL +event|NIL|NIL +event|Britain|NIL +event|literary|NIL +event|year|NIL +year|NIL|NIL +guaranteed|NIL|NIL +guaranteed|event|ARG1 +guaranteed|boost|ARGM-PNC +guaranteed|dinner|ARGM-PNC +boost|NIL|NIL +boost|announcement|ARGM-TMP +sales|NIL|NIL +sales|novel|NIL +chosen|NIL|NIL +chosen|novel|ARG1 +novel|NIL|NIL +award|NIL|NIL +announcement|NIL|NIL +announcement|award|NIL +announcement|Oct.|NIL +Oct.|NIL|NIL +Oct.|16|NIL +16|NIL|NIL +dinner|NIL|NIL +dinner|Guildhall|ARGM-LOC +London|NIL|NIL +ancient|NIL|NIL +Guildhall|NIL|NIL +Guildhall|London|NIL +Guildhall|ancient|NIL +09/06/1994|NIL|NIL +shortlist|NIL|NIL +shortlist|six|NIL +six|NIL|NIL +six|Pounds|NIL +Pounds|NIL|NIL +Pounds|Prize|NIL +Pounds|fiction|NIL +20,000|NIL|NIL +Booker|NIL|NIL +Prize|NIL|NIL +Prize|20,000|NIL +Prize|Booker|NIL +fiction|NIL|NIL +announced|NIL|NIL +announced|shortlist|ARG1 +announced|09/05/1994|ARGM-TMP +09/05/1994|NIL|NIL +immediately|NIL|NIL +prompted|NIL|NIL +prompted|shortlist|ARG0 +prompted|immediately|ARGM-TMP +prompted|question|ARG1 +prompted|many|ARG2 +question|NIL|NIL +many|NIL|NIL +many|industry|NIL +publishing|NIL|NIL +publishing|industry|ARG0 +industry|NIL|NIL +09/06/1994|NIL|NIL +shortlist|NIL|NIL +Booker|NIL|NIL +UK|NIL|NIL +most|NIL|NIL +hyped|NIL|NIL +hyped|Booker|ARGM-ADV +literary|NIL|NIL +prize|NIL|NIL +prize|literary|NIL +prize|one|NIL +one|NIL|NIL +one|lucrative|NIL +most|NIL|NIL +lucrative|NIL|NIL +lucrative|most|NIL +is|prize|AUX-SBJ +is|more|AUX-PRD +more|NIL|NIL +more|all|NIL +more|surprising|NIL +more|fulfilling|NIL +surprising|NIL|NIL +bumper|NIL|NIL +year|NIL|NIL +year|a|NIL +year|bumper|NIL +year|fiction|NIL +new|NIL|NIL +fiction|NIL|NIL +fiction|new|NIL +fulfilling|NIL|NIL +fulfilling|criteria|ARG1 +fulfilling|consideration|ARG1 +criteria|NIL|NIL +criteria|language|NIL +criteria|non-American|NIL +English|NIL|NIL +language|NIL|NIL +language|English|NIL +non-American|NIL|NIL +consideration|NIL|NIL +consideration|award|NIL +award|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D117.M.100.I.G.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D117.M.100.I.G.be new file mode 100644 index 0000000000000000000000000000000000000000..e43111dee5c7fdde6583034a9eb86376fedc460a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D117.M.100.I.G.be @@ -0,0 +1,122 @@ +Britain|NIL|NIL +Booker|NIL|NIL +Prize|NIL|NIL +Prize|Britain|NIL +Prize|Booker|NIL +Prize|novels|NIL +fiction|NIL|NIL +novels|NIL|NIL +novels|fiction|NIL +is|Prize|AUX-SBJ +is|similar|AUX-PRD +similar|NIL|NIL +similar|America|NIL +similar|Pulitzer|NIL +similar|Prize|NIL +similar|National|NIL +similar|Book|NIL +similar|awards|NIL +America|NIL|NIL +Pulitzer|NIL|NIL +Prize|NIL|NIL +National|NIL|NIL +Book|NIL|NIL +awards|NIL|NIL +awards|America|NIL +more|NIL|NIL +excitement|NIL|NIL +excitement|more|NIL +associated|NIL|NIL +associated|excitement|ARG1 +associated|it|ARG2 +it|NIL|NIL +British|NIL|NIL +publishers|NIL|NIL +publishers|British|NIL +submit|NIL|NIL +submit|publishers|ARG0 +submit|titles|ARG1 +three|NIL|NIL +new|NIL|NIL +titles|NIL|NIL +titles|three|NIL +titles|new|NIL +total|NIL|NIL +total|books|NIL +around|NIL|NIL +around|100|NIL +100|NIL|NIL +books|NIL|NIL +books|around|NIL +narrowed|NIL|NIL +narrowed|total|ARG1 +narrowed|down|rel +narrowed|six|ARG4 +narrowed|panel|ARG0 +final|NIL|NIL +six|NIL|NIL +six|a|NIL +six|final|NIL +panel|NIL|NIL +panel|a|NIL +panel|judges|NIL +learned|NIL|NIL +judges|NIL|NIL +they|NIL|NIL +read|NIL|NIL +read|they|ARG0 +read|novels|ARG1 +novels|NIL|NIL +novels|all|NIL +Odds|NIL|NIL +given|NIL|NIL +given|Odds|ARG1 +given|reviews|ARG1 +reviews|NIL|NIL +literary|NIL|NIL +insiders|NIL|NIL +insiders|literary|NIL +bet|NIL|NIL +bet|insiders|ARG0 +which|book|NIL +book|NIL|NIL +win|NIL|NIL +win|prize|ARG1 +prize|NIL|NIL +winner|NIL|NIL +announced|NIL|NIL +announced|winner|ARG1 +announced|banquet|ARGM-LOC +yearly|NIL|NIL +banquet|NIL|NIL +banquet|a|NIL +banquet|yearly|NIL +Prize|NIL|NIL +administered|NIL|NIL +administered|Prize|ARG1 +administered|Trust|ARG0 +Book|NIL|NIL +Trust|NIL|NIL +Trust|Book|NIL +Trust|charity|NIL +educational|NIL|NIL +charity|NIL|NIL +charity|an|NIL +charity|educational|NIL +sponsored|NIL|NIL +sponsored|Prize|ARG1 +sponsored|Booker|ARG0 +Booker|NIL|NIL +Booker|food|NIL +Booker|farming|NIL +Booker|business|NIL +international|NIL|NIL +food|NIL|NIL +food|an|NIL +food|international|NIL +farming|NIL|NIL +farming|an|NIL +farming|international|NIL +business|NIL|NIL +business|an|NIL +business|international|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D118.M.100.I.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D118.M.100.I.26.be new file mode 100644 index 0000000000000000000000000000000000000000..874a8d7fc48a912bac4762691b5167b115034902 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D118.M.100.I.26.be @@ -0,0 +1,152 @@ +02/11/1989|NIL|NIL +Defense|NIL|NIL +Secretary-designate|NIL|NIL +John|NIL|NIL +Tower|NIL|NIL +Tower|Defense|NIL +Tower|Secretary-designate|NIL +Tower|John|NIL +contradicted|NIL|NIL +contradicted|Tower|ARG0 +contradicted|statement|ARG1 +contradicted|told|ARGM-TMP +earlier|NIL|NIL +sworn|NIL|NIL +sworn|statement|ARG1 +statement|NIL|NIL +statement|an|NIL +statement|earlier|NIL +he|NIL|NIL +told|NIL|NIL +told|he|ARG0 +told|Senate|ARG2 +told|involved|ARG1 +Senate|NIL|NIL +his|NIL|NIL +work|NIL|NIL +work|his|NIL +work|firm|NIL +British|NIL|NIL +firm|NIL|NIL +firm|a|NIL +firm|British|NIL +involved|NIL|NIL +involved|work|ARG2 +involved|matters|ARG1 +involved|reports|ARGM-ADV +military|NIL|NIL +matters|NIL|NIL +matters|no|NIL +matters|military|NIL +according|NIL|NIL +reports|NIL|NIL +published|NIL|NIL +published|reports|ARG1 +published|02/11/1989|ARGM-TMP +02/11/1989|NIL|NIL +02/11/1989|NIL|NIL +Senate|NIL|NIL +Armed|NIL|NIL +Services|NIL|NIL +Committee|NIL|NIL +Committee|Senate|NIL +Committee|Armed|NIL +Committee|Services|NIL +put|NIL|NIL +put|Committee|ARG0 +put|nomination|ARG1 +put|hold|ARG2 +put|takes|ARGM-TMP +nomination|NIL|NIL +nomination|Tower|NIL +Tower|NIL|NIL +Tower|Texas|NIL +Tower|senator|NIL +Tower|chairman|NIL +Tower|committee|NIL +former|NIL|NIL +Texas|NIL|NIL +Texas|a|NIL +Texas|former|NIL +Texas|onetime|NIL +senator|NIL|NIL +senator|a|NIL +senator|former|NIL +senator|onetime|NIL +onetime|NIL|NIL +chairman|NIL|NIL +chairman|a|NIL +chairman|former|NIL +chairman|onetime|NIL +committee|NIL|NIL +committee|a|NIL +committee|former|NIL +committee|onetime|NIL +hold|NIL|NIL +it|NIL|NIL +takes|NIL|NIL +takes|including|ARGM-ADV +second|NIL|NIL +look|NIL|NIL +look|a|NIL +look|second|NIL +look|habits|NIL +Tower|NIL|NIL +personal|NIL|NIL +habits|NIL|NIL +habits|Tower|NIL +habits|personal|NIL +including|NIL|NIL +his|NIL|NIL +use|NIL|NIL +use|his|NIL +use|alcohol|NIL +use|links|NIL +alcohol|NIL|NIL +his|NIL|NIL +links|NIL|NIL +links|his|NIL +links|contractors|NIL +defense|NIL|NIL +contractors|NIL|NIL +contractors|defense|NIL +03/09/1989|NIL|NIL +03/09/1989|Senate|NIL +03/09/1989|53|NIL +03/09/1989|came|NIL +Senate|NIL|NIL +Senate|'s|NIL +53|NIL|NIL +47|NIL|NIL +vote|NIL|NIL +vote|47|NIL +came|NIL|NIL +came|debate|ARGM-TMP +bitter|NIL|NIL +divisive|NIL|NIL +debate|NIL|NIL +debate|a|NIL +debate|bitter|NIL +debate|divisive|NIL +focused|NIL|NIL +focused|debate|ARG1 +focused|habits|ARG2 +focused|behavior|ARG2 +focused|dealings|ARG2 +Tower|NIL|NIL +drinking|NIL|NIL +habits|NIL|NIL +habits|Tower|NIL +habits|drinking|NIL +behavior|NIL|NIL +behavior|women|NIL +women|NIL|NIL +his|NIL|NIL +business|NIL|NIL +dealings|NIL|NIL +dealings|his|NIL +dealings|business|NIL +dealings|contractors|NIL +defense|NIL|NIL +contractors|NIL|NIL +contractors|defense|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D118.M.100.I.E.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D118.M.100.I.E.be new file mode 100644 index 0000000000000000000000000000000000000000..7062bc7dfbec2c8b0542b9396fa95073f94bdc97 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D118.M.100.I.E.be @@ -0,0 +1,121 @@ +Former|NIL|NIL +Texas|NIL|NIL +Senator|NIL|NIL +John|NIL|NIL +Tower|NIL|NIL +Tower|Former|NIL +Tower|Texas|NIL +Tower|Senator|NIL +Tower|John|NIL +his|NIL|NIL +daughter|NIL|NIL +daughter|his|NIL +killed|NIL|NIL +killed|Tower|ARG1 +killed|daughter|ARG1 +killed|crash|ARGM-LOC +crash|NIL|NIL +crash|plane|NIL +commuter|NIL|NIL +plane|NIL|NIL +plane|a|NIL +plane|commuter|NIL +plane|Island|NIL +plane|off|NIL +Sea|NIL|NIL +Island|NIL|NIL +Island|Sea|NIL +off|coast|NIL +coast|NIL|NIL +coast|Georgia|NIL +Georgia|NIL|NIL +Senator|NIL|NIL +Tower|NIL|NIL +Tower|Senator|NIL +been|Tower|AUX-SBJ +been|nominee|AUX-PRD +President|NIL|NIL +Bush|NIL|NIL +Bush|President|NIL +nominee|NIL|NIL +nominee|Bush|NIL +nominee|Secretary|NIL +Secretary|NIL|NIL +Secretary|defense|NIL +defense|NIL|NIL +nomination|NIL|NIL +rejected|NIL|NIL +rejected|nomination|ARG1 +rejected|Senate|ARG0 +rejected|recommendation|ARGM-LOC +Senate|NIL|NIL +recommendation|NIL|NIL +recommendation|Committee|NIL +Senate|NIL|NIL +Armed|NIL|NIL +Services|NIL|NIL +Committee|NIL|NIL +Committee|Senate|NIL +Committee|Armed|NIL +Committee|Services|NIL +was|This|AUX-SBJ +was|time|AUX-PRD +only|NIL|NIL +ninth|NIL|NIL +time|NIL|NIL +time|ninth|NIL +time|history|NIL +history|NIL|NIL +cabinet|NIL|NIL +nominee|NIL|NIL +nominee|a|NIL +nominee|cabinet|NIL +rejected|NIL|NIL +rejected|nominee|ARG1 +committee|NIL|NIL +recommended|NIL|NIL +recommended|committee|ARG0 +recommended|hearing|ARGM-TMP +rejection|NIL|NIL +hearing|NIL|NIL +hearing|allegations|ARG1 +hearing|use|ARG1 +allegations|NIL|NIL +Tower|NIL|NIL +use|NIL|NIL +use|Tower|NIL +use|alcohol|NIL +use|behavior|NIL +use|women|NIL +alcohol|NIL|NIL +alcohol|his|NIL +alcohol|inappropriate|NIL +his|NIL|NIL +inappropriate|NIL|NIL +behavior|NIL|NIL +behavior|his|NIL +behavior|inappropriate|NIL +women|NIL|NIL +women|his|NIL +women|inappropriate|NIL +committee|NIL|NIL +also|NIL|NIL +questioned|NIL|NIL +questioned|committee|ARG0 +questioned|also|ARGM-DIS +questioned|dealings|ARG1 +questioned|gave|ARGM-TMP +his|NIL|NIL +dealings|NIL|NIL +dealings|his|NIL +dealings|contractors|NIL +defense|NIL|NIL +contractors|NIL|NIL +contractors|defense|NIL +Tower|NIL|NIL +gave|NIL|NIL +gave|Tower|ARG0 +gave|testimony|ARG1 +contradictory|NIL|NIL +testimony|NIL|NIL +testimony|contradictory|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D119.M.100.I.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D119.M.100.I.26.be new file mode 100644 index 0000000000000000000000000000000000000000..001b2c92627d7eff9f7e7ed7b58bbcd14420eb67 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D119.M.100.I.26.be @@ -0,0 +1,138 @@ +05/17/1989|NIL|NIL +But|NIL|NIL +Pell|NIL|NIL +Pell|05/17/1989|NIL +Pell|But|NIL +said|NIL|NIL +said|Pell|ARG0 +said|unpersuaded|ARG1 +he|NIL|NIL +unpersuaded|NIL|NIL +05/10/1990|NIL|NIL +Bush|NIL|NIL +administration|NIL|NIL +administration|Bush|NIL +expected|NIL|NIL +expected|administration|ARG1 +expected|name|ARG1 +name|NIL|NIL +name|diplomat|ARG1 +name|ambassador|ARG2 +name|years|ARGM-LOC +career|NIL|NIL +diplomat|NIL|NIL +diplomat|career|NIL +diplomat|Harry|NIL +diplomat|Shlaudeman|NIL +Harry|NIL|NIL +Shlaudeman|NIL|NIL +first|NIL|NIL +U.S.|NIL|NIL +ambassador|NIL|NIL +ambassador|first|NIL +ambassador|U.S.|NIL +ambassador|Nicaragua|NIL +Nicaragua|NIL|NIL +almost|NIL|NIL +almost|two|NIL +two|NIL|NIL +years|NIL|NIL +years|almost|NIL +U.S.|NIL|NIL +official|NIL|NIL +official|a|NIL +official|U.S.|NIL +says|NIL|NIL +says|expected|ARGM-ADV +says|official|ARG0 +05/10/1990|NIL|NIL +United|NIL|NIL +United|05/10/1990|NIL +United|States|NIL +States|NIL|NIL +had|United|ARG0 +had|ambassador|ARG1 +had|July|ARGM-TMP +ambassador|NIL|NIL +ambassador|no|NIL +ambassador|Nicaragua|NIL +Nicaragua|NIL|NIL +July|NIL|NIL +July|1988|NIL +1988|NIL|NIL +05/10/1990|NIL|NIL +Shlaudeman|NIL|NIL +Shlaudeman|05/10/1990|NIL +served|NIL|NIL +served|Shlaudeman|ARG0 +served|ambassador|ARG1 +ambassador|NIL|NIL +ambassador|Argentina|NIL +ambassador|Peru|NIL +ambassador|Brazil|NIL +ambassador|Venezuela|NIL +Argentina|NIL|NIL +Peru|NIL|NIL +Brazil|NIL|NIL +Venezuela|NIL|NIL +is|Shlaudeman|AUX-SBJ +is|specialist|AUX-PRD +premier|NIL|NIL +State|NIL|NIL +Department|NIL|NIL +specialist|NIL|NIL +specialist|a|NIL +specialist|premier|NIL +specialist|State|NIL +specialist|Department|NIL +specialist|America|NIL +Latin|NIL|NIL +America|NIL|NIL +America|Latin|NIL +expected|NIL|NIL +expected|Shlaudeman|ARG1 +expected|win|ARG1 +win|NIL|NIL +win|confirmation|ARG1 +easy|NIL|NIL +Senate|NIL|NIL +confirmation|NIL|NIL +confirmation|easy|NIL +confirmation|Senate|NIL +02/03/1992|NIL|NIL +President|NIL|NIL +Bush|NIL|NIL +Bush|President|NIL +plans|NIL|NIL +plans|Bush|ARG0 +plans|name|ARG1 +plans|appoint|ARG1 +name|NIL|NIL +name|Pickering|ARG1 +name|envoy|ARG2 +name|India|ARG2 +United|NIL|NIL +Nations|NIL|NIL +Ambassador|NIL|NIL +Thomas|NIL|NIL +Pickering|NIL|NIL +Pickering|United|NIL +Pickering|Nations|NIL +Pickering|Ambassador|NIL +Pickering|Thomas|NIL +U.S.|NIL|NIL +envoy|NIL|NIL +envoy|U.S.|NIL +India|NIL|NIL +appoint|NIL|NIL +appoint|head|ARG1 +current|NIL|NIL +head|NIL|NIL +head|current|NIL +head|service|NIL +foreign|NIL|NIL +service|NIL|NIL +service|foreign|NIL +succeed|NIL|NIL +succeed|him|ARG1 +him|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D119.M.100.I.F.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D119.M.100.I.F.be new file mode 100644 index 0000000000000000000000000000000000000000..5232e26ebcb7791866844dbb91ac019e4267244b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D119.M.100.I.F.be @@ -0,0 +1,124 @@ +Some|nominees|NIL +President|NIL|NIL +Bush|NIL|NIL +Bush|President|NIL +nominees|NIL|NIL +nominees|Bush|NIL +nominees|ambassadorships|NIL +ambassadorships|NIL|NIL +selected|NIL|NIL +selected|Some|ARG1 +selected|reward|ARG2 +selected|senators|ARGM-ADV +reward|NIL|NIL +reward|a|NIL +reward|contributions|NIL +large|NIL|NIL +money|NIL|NIL +contributions|NIL|NIL +contributions|large|NIL +contributions|money|NIL +contributions|Party|NIL +Republican|NIL|NIL +Party|NIL|NIL +Party|Republican|NIL +according|NIL|NIL +Democratic|NIL|NIL +senators|NIL|NIL +senators|Democratic|NIL +retired|NIL|NIL +retired|diplomats|ARG0 +diplomats|NIL|NIL +diplomats|some|NIL +consider|NIL|NIL +consider|diplomats|ARG0 +few|NIL|NIL +few|a|NIL +not|NIL|NIL +be|few|AUX-SBJ +be|qualified|AUX-PRD +qualified|NIL|NIL +nominees|NIL|NIL +nominees|These|NIL +faced|NIL|NIL +faced|nominees|ARG0 +faced|strong|ARG1 +faced|hearings|ARGM-TMP +strong|NIL|NIL +strong|questioning|NIL +strong|Democrats|NIL +questioning|NIL|NIL +Democrats|NIL|NIL +committee|NIL|NIL +hearings|NIL|NIL +hearings|committee|NIL +manage|NIL|NIL +manage|nominees|ARG0 +manage|get|ARG1 +get|NIL|NIL +get|approval|ARG1 +slim|NIL|NIL +approval|NIL|NIL +approval|a|NIL +approval|slim|NIL +approval|committee|NIL +committee|NIL|NIL +Conservative|NIL|NIL +senators|NIL|NIL +senators|Conservative|NIL +objected|NIL|NIL +objected|senators|ARG0 +objected|two|ARG2 +two|NIL|NIL +two|selections|NIL +Bush|NIL|NIL +selections|NIL|NIL +selections|Bush|NIL +Most|NIL|NIL +Most|picks|NIL +president|NIL|NIL +picks|NIL|NIL +picks|president|NIL +won|NIL|NIL +won|Most|ARG0 +won|approval|ARG1 +easy|NIL|NIL +approval|NIL|NIL +approval|easy|NIL +Two|NIL|NIL +Two|picks|NIL +Bush|NIL|NIL +picks|NIL|NIL +picks|Bush|NIL +received|NIL|NIL +received|Two|ARG0 +received|reaction|ARG1 +received|expert|ARG1 +received|naming|ARG1 +received|India|ARG4 +highly|NIL|NIL +favorable|NIL|NIL +favorable|highly|NIL +reaction|NIL|NIL +reaction|favorable|NIL +Latin|NIL|NIL +American|NIL|NIL +expert|NIL|NIL +expert|a|NIL +expert|Latin|NIL +expert|American|NIL +expert|ambassador|NIL +ambassador|NIL|NIL +ambassador|Nicaragua|NIL +Nicaragua|NIL|NIL +naming|NIL|NIL +naming|Pickering|NIL +Thomas|NIL|NIL +Pickering|NIL|NIL +Pickering|Thomas|NIL +Pickering|diplomat|NIL +well-known|NIL|NIL +diplomat|NIL|NIL +diplomat|a|NIL +diplomat|well-known|NIL +India|NIL|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D120.M.100.I.26.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D120.M.100.I.26.be new file mode 100644 index 0000000000000000000000000000000000000000..63a31c8b469c6bd3440619ccfabb12d390cbb385 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D120.M.100.I.26.be @@ -0,0 +1,126 @@ +11/27/1990|NIL|NIL +John|NIL|NIL +Major|NIL|NIL +Major|11/27/1990|NIL +Major|John|NIL +endorsed|NIL|NIL +endorsed|Major|ARG1 +endorsed|Thatcher|ARG0 +endorsed|successor|ARGM-MNR +Prime|NIL|NIL +Minister|NIL|NIL +Margaret|NIL|NIL +Thatcher|NIL|NIL +Thatcher|Prime|NIL +Thatcher|Minister|NIL +Thatcher|Margaret|NIL +her|NIL|NIL +successor|NIL|NIL +successor|her|NIL +heir|NIL|NIL +heir|her|NIL +elected|NIL|NIL +elected|Major|ARG1 +elected|11/27/1990|ARGM-TMP +elected|leader|ARG2 +11/27/1990|NIL|NIL +leader|NIL|NIL +leader|Party|NIL +Conservative|NIL|NIL +Party|NIL|NIL +Party|Conservative|NIL +become|NIL|NIL +become|Major|ARG1 +become|minister|ARG2 +prime|NIL|NIL +minister|NIL|NIL +minister|prime|NIL +11/28/1990|NIL|NIL +John|NIL|NIL +Major|NIL|NIL +Major|11/28/1990|NIL +Major|John|NIL +47-year-old|NIL|NIL +chancellor|NIL|NIL +chancellor|47-year-old|NIL +chancellor|exchequer|NIL +chancellor|one|NIL +exchequer|NIL|NIL +rose|NIL|NIL +rose|out|ARGM-DIR +one|NIL|NIL +one|neighborhoods|NIL +London|NIL|NIL +toughest|NIL|NIL +neighborhoods|NIL|NIL +neighborhoods|London|NIL +neighborhoods|toughest|NIL +unemployment|NIL|NIL +line|NIL|NIL +line|unemployment|NIL +selected|NIL|NIL +selected|Major|ARG1 +selected|chancellor|ARG1 +selected|line|ARG1 +selected|11/27/1990|ARG3 +selected|minister|ARG2 +11/27/1990|NIL|NIL +Britain|NIL|NIL +next|NIL|NIL +prime|NIL|NIL +minister|NIL|NIL +minister|Britain|NIL +minister|next|NIL +minister|prime|NIL +11/28/1990|NIL|NIL +Major|NIL|NIL +Major|11/28/1990|NIL +whose|father|NIL +father|NIL|NIL +was|Major|AUX-SBJ +was|once|AUX-TMP +was|artist|AUX-PRD +once|NIL|NIL +circus|NIL|NIL +trapeze|NIL|NIL +artist|NIL|NIL +artist|a|NIL +artist|circus|NIL +artist|trapeze|NIL +elected|NIL|NIL +elected|Major|ARG1 +elected|replace|ARG2 +leader|NIL|NIL +leader|Party|NIL +Conservative|NIL|NIL +Party|NIL|NIL +Party|Conservative|NIL +replace|NIL|NIL +replace|leader|ARG0 +replace|Thatcher|ARG1 +Margaret|NIL|NIL +Thatcher|NIL|NIL +Thatcher|Margaret|NIL +whose|resignation|NIL +whose|pressure|NIL +sudden|NIL|NIL +resignation|NIL|NIL +resignation|sudden|NIL +pressure|NIL|NIL +last|NIL|NIL +week|NIL|NIL +week|last|NIL +surprised|NIL|NIL +surprised|week|ARGM-TMP +surprised|nation|ARG1 +nation|NIL|NIL +05/28/1994|NIL|NIL +wonder|NIL|NIL +wonder|No|NIL +Majors|NIL|NIL +liked|NIL|NIL +liked|wonder|ARG0 +liked|Majors|ARG0 +liked|film|ARG1 +film|NIL|NIL +film|this|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D120.M.100.I.J.be b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D120.M.100.I.J.be new file mode 100644 index 0000000000000000000000000000000000000000..2ae6775476fb8b00c6bcff12016ab2b58e378921 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/BE-L/D120.M.100.I.J.be @@ -0,0 +1,129 @@ +Easter|NIL|NIL +Sunday|NIL|NIL +Sunday|Easter|NIL +three|NIL|NIL +Cabinet|NIL|NIL +ministers|NIL|NIL +ministers|three|NIL +ministers|Cabinet|NIL +issued|NIL|NIL +issued|Sunday|ARGM-TMP +issued|ministers|ARG0 +issued|statements|ARG1 +issued|speculation|ARG1 +issued|forced|ARG1 +statements|NIL|NIL +statements|behalf|NIL +behalf|NIL|NIL +behalf|Major|NIL +Prime|NIL|NIL +Minister|NIL|NIL +John|NIL|NIL +Major|NIL|NIL +Major|Prime|NIL +Major|Minister|NIL +Major|John|NIL +amidst|NIL|NIL +speculation|NIL|NIL +speculation|amidst|NIL +he|NIL|NIL +forced|NIL|NIL +forced|he|ARG1 +forced|out|ARG2 +forced|autumn|ARGM-TMP +autumn|NIL|NIL +autumn|this|NIL +May|NIL|NIL +local|NIL|NIL +elections|NIL|NIL +elections|May|NIL +elections|local|NIL +elections|Britain|NIL +Britain|NIL|NIL +however|NIL|NIL +Conservatives|NIL|NIL +loss|NIL|NIL +loss|seats|ARG1 +444|NIL|NIL +seats|NIL|NIL +seats|444|NIL +word|NIL|NIL +circulated|NIL|NIL +circulated|word|ARG1 +circulated|was|ARG1 +Major|NIL|NIL +was|Major|AUX-SBJ +was|up|AUX-PRD +not|NIL|NIL +up|NIL|NIL +up|job|NIL +job|NIL|NIL +Major|NIL|NIL +became|NIL|NIL +became|leader|ARG2 +became|mentor|ARGM-TMP +leader|NIL|NIL +leader|Party|NIL +leader|Minister|NIL +Conservative|NIL|NIL +Party|NIL|NIL +Party|Conservative|NIL +Prime|NIL|NIL +Minister|NIL|NIL +Minister|Prime|NIL +his|NIL|NIL +mentor|NIL|NIL +mentor|his|NIL +Margaret|NIL|NIL +Thatcher|NIL|NIL +Thatcher|Margaret|NIL +resigned|NIL|NIL +resigned|Thatcher|ARG0 +resigned|pressure|ARGM-LOC +resigned|1990|ARGM-TMP +pressure|NIL|NIL +1990|NIL|NIL +he|NIL|NIL +won|NIL|NIL +won|he|ARG0 +won|election|ARG1 +1992|NIL|NIL +general|NIL|NIL +general|1992|NIL +election|NIL|NIL +election|general|NIL +lingering|NIL|NIL +lingering|recession|ARG1 +lingering|controversies|ARG1 +recession|NIL|NIL +controversies|NIL|NIL +involving|NIL|NIL +involving|recession|ARG2 +involving|controversies|ARG2 +involving|issues|ARG1 +European|NIL|NIL +community|NIL|NIL +issues|NIL|NIL +issues|European|NIL +issues|community|NIL +splintered|NIL|NIL +Tories|NIL|NIL +Tories|recession|NIL +Tories|controversies|NIL +Tories|splintered|NIL +He|NIL|NIL +came|NIL|NIL +came|viewed|ARG1 +viewed|NIL|NIL +viewed|leader|ARG2 +weak|NIL|NIL +vacillating|NIL|NIL +leader|NIL|NIL +leader|a|NIL +leader|weak|NIL +leader|vacillating|NIL +lacking|NIL|NIL +lacking|conviction|ARG1 +political|NIL|NIL +conviction|NIL|NIL +conviction|political|NIL diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D061.M.100.J.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D061.M.100.J.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..97c07cf66f7ea4c398dd988934171a8f74a1296c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D061.M.100.J.26.spl @@ -0,0 +1,5 @@ +-LRB- 09/11/1988 -RRB- Hurricane Gilbert . +-LRB- 09/11/1988 -RRB- The hurricane swept toward the Dominican Republic on 09/11/1988 , and the Civil Defense alerted its heavily populated south coast to prepare for high winds , heavy rains and high seas . +-LRB- 09/11/1988 -RRB- The storm was approaching from the southeast with sustained winds of 75 mph gusting to 92 mph . +-LRB- 09/12/1988 -RRB- The hurricane , packing 110 mph winds and torrential rain , moved over this capital city on 09/12/1988 after skirting Puerto Rico , Haiti and the Dominican Republic . +-LRB- 09/12/1988 -RRB- The hurricane swept toward Jamaica on 09/11/1988 with 100-mile-an-hour winds , and officials issued warnings to residents on the southern coasts of the Dominican Republic , Haiti and Cuba . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D061.M.100.J.I.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D061.M.100.J.I.spl new file mode 100644 index 0000000000000000000000000000000000000000..161a493cb38a2de4d188f916dcb840c7d98b0687 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D061.M.100.J.I.spl @@ -0,0 +1,7 @@ +Hurricane Gilbert has cut a destructive swath through the Caribbean . +The third hurricane of 1988 buffeted the southern coasts of Puerto Rico , the Virgin Islands , the Dominican Republic , Haiti and Cuba . +Five were killed in the Dominican Republic . +On Monday , the storm hit Jamaica with its full force , killing 19 and causing extensive damage . +Wednesday , Gilbert hit the resorts of Cancun and Cozumel on Mexico 's Yucatan peninsula with winds of 160 mph , causing extensive damage . +Gilbert then headed for the Gulf of Mexico . +Forecasters remain baffled by why Gilbert became such an intense storm , attaining the lowest barometric pressure ever recorded . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D062.M.100.J.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D062.M.100.J.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..235448831aa05f8d645fa4b4998cef5f6f4e1081 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D062.M.100.J.26.spl @@ -0,0 +1,4 @@ +-LRB- 10/18/1989 -RRB- Most San Francisco-area homeowners may have to pay for damage from on 10/17/1989 's earthquake out of their own pockets , while insurance companies may reap long-term benefits from higher rates , industry spokesmen and analysts said on 10/17/1989 . +-LRB- 10/18/1989 -RRB- Only 15 percent to 20 percent of California homeowners have earthquake insurance , which typically requires a 10 percent deductible and costs between $ 200 to $ 400 a year for a $ 100,000 home , according to industry spokesmen . +-LRB- 10/19/1989 -RRB- Insurers face the prospect of paying out billions of dollars for damages caused by this week 's California earthquake . +-LRB- 10/20/1989 -RRB- Usually earthquakes pass , but this one went on and on . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D062.M.100.J.A.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D062.M.100.J.A.spl new file mode 100644 index 0000000000000000000000000000000000000000..1b00af787d0acb08747b51ebc8646f343e6cfec4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D062.M.100.J.A.spl @@ -0,0 +1,5 @@ +The California earthquake of Oct. 17 , 1989 caused extensive damage . +Despite heavy insurance losses , insurance company stocks posted gains as investors bet on increases in insurance rates producing a long-term increase in profits . +In Washington , the White House appeared hyperactive , anxious to show its responsiveness to the disaster . +In Sacramento , Governor Deukmejian called a special session of the legislature to deal with the crisis . +Critics accused him of blaming others for the collapse of freeways and called on him to get on with reconstruction and a temporary increase of the gasoline tax so hundreds of thousands of commuters could get to work . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D063.M.100.J.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D063.M.100.J.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..8b767120eaae926f38449a01718a21d66e9d1a43 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D063.M.100.J.26.spl @@ -0,0 +1,4 @@ +-LRB- 09/23/1989 -RRB- The IRA bombing that killed 10 men and blew apart a building at the Royal Marines Music School outraged Britons and stirred recriminations over safety standards at the school . +-LRB- 09/23/1989 -RRB- The outlawed Irish Republican Army , engaged in a 20-year-old campaign to drive the British from the province of Northern Ireland , claimed responsibility in a telephone call to Ireland International , a Dublin news agency . +-LRB- 09/23/1989 -RRB- Family members on 09/23/1989 grieved for their slain loved ones and criticized the security arrangements at the Royal Marines Music School , where an IRA terrorist attack killed 10 military musicians . +-LRB- 09/23/1989 -RRB- ` ` The security at those barracks was absolutely abysmal . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D063.M.100.J.E.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D063.M.100.J.E.spl new file mode 100644 index 0000000000000000000000000000000000000000..6972cc32c4e2f6d6be428bcecd00a9cf42a06247 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D063.M.100.J.E.spl @@ -0,0 +1,5 @@ +An Irish Republican Army bomb destroyed a barracks belonging to the Royal Marines Music School in Deal on Friday . +The blast killed 10 and injured 22 others and also damaged or destroyed neighboring houses . +Neighbors and opposition politicians blamed lax security and condemned the use of private security firms at this and 29 other bases in Britain considered to be low risk . +The IRA said the blast was in response to a speech by Prime Minister Thatcher to the Ulster Defense Regiment , calling the speech an '' act of war . '' +This is the latest of a series of attacks as the IRA seeks the withdrawal of British forces from Northern Ireland . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D064.M.100.J.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D064.M.100.J.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..dd7ca0019515dcec8deed9693f42c5e21e9469d5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D064.M.100.J.26.spl @@ -0,0 +1,4 @@ +-LRB- 03/14/1988 -RRB- The communist world gets its first McDonald 's next week , and some people here are wondering whether its American hamburgers will be as popular as the local fast-food treat , Pljeskavica . +-LRB- 04/12/1988 -RRB- McDonald 's is flourishing in 11 other nations in the region . +-LRB- 10/08/1990 -RRB- McDonald 's hamburgers , fries and golden arches came to China on 10/08/1990 when the fast-food chain opened its first restaurant in a nation famed for its distinctive cuisine . +-LRB- 10/08/1990 -RRB- Hundreds of Chinese waited for hours outside the restaurant in Shenzhen , an economic boom town near Hong Kong , for their first taste of a McDonald 's hamburger , fries or shake . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D064.M.100.J.B.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D064.M.100.J.B.spl new file mode 100644 index 0000000000000000000000000000000000000000..97948a24418ab164a6af74cbe69d218cefd2fde2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D064.M.100.J.B.spl @@ -0,0 +1,7 @@ +To capitalize on Asia 's fastest-growing economy McDonald 's opened its first outlet in South Korea . +Moving into communist countries , on March 24 , 1988 it opened in Belgrade , Yugoslavia . +There to compete with the locally favored '' pljeskavica '' , a pork and onion sandwich , initial reaction was favorable . +Two years later came its largest outlet to date . +In Moscow thousands lined up for an opening day record of 30,000 meals being served at 27 cash registers . +Next , McDonald 's opened in China , where cooking is a culinary art . +McDonald 's worldwide restaurants are joint ventures with locals of the country in which they operate . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D065.M.100.J.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D065.M.100.J.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..e1a695d12ad0e8e4223516cabe037a85ef9a04b0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D065.M.100.J.26.spl @@ -0,0 +1,3 @@ +-LRB- 11/14/1988 -RRB- Dan Quayle is likely to be a ` ` man on the outside ' ' in George Bush 's White House following a vice presidential candidacy that began in a furor but settled into obscurity , experts say . +-LRB- 11/14/1988 -RRB- Relegated in the campaign to small towns and safe GOP areas , Quayle as vice president is likely to be given a traditional ceremonial role _ going to political gatherings and state funerals _ rather than the advisory role that Walter Mondale and even Bush had , some scholars feel . +-LRB- 11/12/1989 -RRB- One year after his election , Dan Quayle has achieved all he ever wanted : He has become dull . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D065.M.100.J.F.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D065.M.100.J.F.spl new file mode 100644 index 0000000000000000000000000000000000000000..3f2aabf0a2fdfcb2ebac18331eaee84477c22b0f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D065.M.100.J.F.spl @@ -0,0 +1,6 @@ +George Bush 's choice of Dan Quayle as his running mate surprised most political observers , but was quickly supported by many of Quayle 's fellow Republican senators . +Quayle was viewed as a lightweight and questions were raised about his military service and errors in his official resume . +His main attributes were party loyalty and identification as a devoted family man . +Quayle contributed little to the campaign and , after being elected , all but disappeared from the political scene . +President Bush , however , continued to voice support for , and confidence in Quayle . +His friends , especially in his home town , called him a winner . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D066.M.100.J.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D066.M.100.J.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..44277ae412322629c6904730e339c7b2677fcade --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D066.M.100.J.26.spl @@ -0,0 +1,5 @@ +-LRB- 03/23/1989 -RRB- Paying unexpected calls on stores is one way Walton has kept in close touch with everyday goings-on . +-LRB- 06/15/1989 -RRB- Wal-Mart founder Sam Walton pitched in to help check-out clerks at his store in this Florida Panhandle city when an electronic glitch shut down the cash registers . +-LRB- 05/07/1990 -RRB- Forty years after Sam Walton first hung out his shingle , Walton 's 5 & 10 will reopen to show how a little rural storekeeper built a discount retail empire . +-LRB- 09/03/1992 -RRB- MADE IN AMERICA : MY STORY By Sam Walton Doubleday , Dollars 22.50 . +269 pages Being an American folk hero is a tricky assignment , as Ross Perot found out . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D066.M.100.J.I.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D066.M.100.J.I.spl new file mode 100644 index 0000000000000000000000000000000000000000..a8bcd64175d380f7fe7bf8f3136fd19588e2fc1c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D066.M.100.J.I.spl @@ -0,0 +1,6 @@ +Sam Walton , who died in April 1992 , revolutionized discount retailing . +Born in Oklahoma , he became the richest man in America . +He took discount shopping to rural America founding Wal-Mart Discount City , which became Wal-Mart , the world 's largest retailer by 1992 . +Sam was frugal and homespun and used pop-in visits to test for happy customers and employees . +To preserve his personal legacy , he opened a Wal-Mart visitors ' center and wrote his autobiography , filling it with '' good ole '' anecdotes . +A 1994 book highlighted his ability to copy and adapt , the chain 's responsive management , and the chain 's impact on Mom-and-Pop stores and anti-union position . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D067.M.100.F.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D067.M.100.F.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..c2e4a3be8747e76efbba2eecb953c15de39b782d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D067.M.100.F.26.spl @@ -0,0 +1,4 @@ +-LRB- 08/25/1992 -RRB- Hurricane Andrew . +-LRB- 08/25/1992 -RRB- US CITIES along the Gulf of Mexico from Alabama to eastern Texas were on storm watch on the night of 08/24/1992 as Hurricane Andrew headed west after sweeping across southern Florida , causing at least eight deaths and severe property damage . +-LRB- 08/27/1992 -RRB- HURRICANE Andrew , claimed to be the costliest natural disaster in US history , on 08/26/1992 smashed its way through the state of Louisiana , inflicting severe damage on rural communities but narrowly missing the low-lying city of New Orleans . +-LRB- 08/28/1992 -RRB- What this means is that GA is able to pass on its losses to external reinsurers once a certain claims threshold has been breached . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D067.M.100.F.I.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D067.M.100.F.I.spl new file mode 100644 index 0000000000000000000000000000000000000000..70807a9b2e23879550e38ea8d9204d3592fc75c7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D067.M.100.F.I.spl @@ -0,0 +1,8 @@ +Damage from Hurricane Andrew is estimated at $ 20 billion , with $ 8 billion covered by insurance . +American insurers will take the brunt of the claims , but General Accident , the leading British insurer , expects claims to rise as high as $ 40 million . +Andrew tore through southern Florida , leaving 15 dead , power outages , and polluted water in his wake . +Homestead and the nearby air force base were flattened . +In Dade County , 250,000 people are homeless . +Andrew next smashed into Louisiana , killing two . +It missed the important oil refineries , but damaged crops and the oyster and alligator businesses . +The dollar sustained a similar assault . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D068.M.100.F.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D068.M.100.F.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..97dfa031d68b47b54bad6ea2d746d4cab8e1c201 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D068.M.100.F.26.spl @@ -0,0 +1,5 @@ +-LRB- 06/21/1990 -RRB- Checkpoint Charlie , the famed Allied border crossing by the Berlin Wall , was to be hauled away on 06/22/1990 . +-LRB- 06/22/1990 -RRB- The proposal was outlined by Soviet Foreign Minister Eduard Shevardnadze during international talks in East Berlin on the strategic future of a united Germany . +-LRB- 06/22/1990 -RRB- Checkpoint Charlie , the Berlin Wall border post that symbolized the Cold War , was hoisted into history on 06/22/1990 . +-LRB- 06/22/1990 -RRB- Checkpoint Charlie went up in 1961 in the middle of the Friedrichstrasse boulevard after Communist East Germany erected the Berlin Wall to choke off a flood of refugees to the enclave of West Berlin . +-LRB- 06/23/1990 -RRB- Patrick Gainey took pictures for the U.S. Army . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D068.M.100.F.A.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D068.M.100.F.A.spl new file mode 100644 index 0000000000000000000000000000000000000000..534aab9a0f3094b2a2ac74a8a6445df39a0ddbf0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D068.M.100.F.A.spl @@ -0,0 +1,3 @@ +On June 22 , 1990 Checkpoint Charlie , the allied border crossing on the west side of the Berlin Wall , was hoisted by crane onto a flatbed truck . +The removal of this symbol of the Cold War was part of an elaborate ceremony attended by the top diplomats of the two Germanys and the four World War II allies . +Appropriate to the occasion , Soviet Foreign Minister Shevardnadze backed away from all-out opposition to united Germany 's membership in NATO , suggesting that this could take place but only after a five-year waiting period during which all Soviet and U.S. troops would leave the country . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D069.M.100.F.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D069.M.100.F.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..e4e6af3490b57eda9592a1f9592004f7072f9128 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D069.M.100.F.26.spl @@ -0,0 +1,4 @@ +-LRB- 09/22/1989 -RRB- The mass emigration of thousands of disaffected East Germans has rekindled reunification talk in West Germany , where some legislators plan to begin exploring the possiblity of reuniting the two Germanys . +-LRB- 12/02/1989 -RRB- Chancellor Helmut Kohl assured visiting U.S. senators on the eve of a superpower summit that West Germany will not forsake NATO to reunite with East Germany , one of the senators said on 12/01/1989 . +-LRB- 12/02/1989 -RRB- There is growing discussion in West Germany about German reunification as a result of sweeping social and political reforms underway in East Germany . +-LRB- 12/07/1989 -RRB- He said German reunification ` ` cannot go ahead ' ' of the reunification of Europe . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D069.M.100.F.C.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D069.M.100.F.C.spl new file mode 100644 index 0000000000000000000000000000000000000000..ba8f3f75180143c28f1359c9bf63d1310cac9954 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D069.M.100.F.C.spl @@ -0,0 +1,8 @@ +East Germany was near chaos by the end of 1989 . +Woeful economic conditions prevailed . +Massive demonstrations for democratic reform swept the nation . +The hard-line Communist government admitted its failure , giving strong impetus to the German reunification movement . +The Soviets endorsed it in February as the World War II Allies did later . +Unification was now imminent . +The specter of an economically and politically powerful Germany disturbed many , but particularly the Poles , Soviets and world Jewry . +Despite concerns , reunification would be accepted as a lesser threat than a chaotic East Germany . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D070.M.100.F.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D070.M.100.F.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..b3d3036953e7f87d24de1bb31a3c724bfcb03c72 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D070.M.100.F.26.spl @@ -0,0 +1,4 @@ +-LRB- 01/29/1990 -RRB- Ousted East German leader Erich Honecker , who is expected to be indicted for high treason , was arrested on 01/29/1990 morning upon release from a hospital and taken to prison , the official news agency ADN said . +-LRB- 01/29/1990 -RRB- Honecker , the aging hard-line Stalinist leader who ruled East Germany for 18 years until his ouster on Oct. 18 , had previously been declared too ill to withstand imprisonment . +-LRB- 01/29/1990 -RRB- Eleven members of Honecker 's ousted Politburo already are in prison awaiting trial . +-LRB- 08/25/1990 -RRB- Ousted East German leader Erich Honecker will not stand trial in East Germany as long as the formerly Communist country exists , a West German newspaper reported . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D070.M.100.F.D.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D070.M.100.F.D.spl new file mode 100644 index 0000000000000000000000000000000000000000..2827baa1eb8ebe39f9443e5ae1e3bdcdc6954c88 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D070.M.100.F.D.spl @@ -0,0 +1,6 @@ +Erich Honecker , former head of East Germany , died on 29 May 1994 in Santiago Chile . +He had been living there since his release from prison in 1993 . +Honecker and his regime were toppled in October 1989 , by pro-democracy demonstrators , leading to the eventual unification of East and West Germany . +He , along with several members of his Politburo , were arrested and charges with treason , corruption , and abuse of power . +Honecker was also charged with manslaughter , stemming from his orders , which resulted in the deaths of East Germans attempting to flee to the West . +Honecker ruled East Germany for 18 years by using extreme repression . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D071.M.100.F.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D071.M.100.F.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..cd8ade52d52a2c91484f8c804b49524b09bdcc5b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D071.M.100.F.26.spl @@ -0,0 +1,6 @@ +-LRB- 03/10/1988 -RRB- Two dogs , to be specific , the city 's top police dog and the nation 's top show dog . +-LRB- 03/10/1988 -RRB- The Pomeranian was named best in show at the prestigious Westminister Kennel Club Show in Madison Square Garden last month . +-LRB- 02/04/1989 -RRB- More than 2,500 dogs , representing 138 breeds , will compete for prizes at on 02/05/1989 's All Breed Dog Show and Obedience Trials at the Los Angeles Sports Arena . +-LRB- 02/04/1989 -RRB- In the scent relay , teams of dogs will jump over hurdles and locate the jackets of their owners . +-LRB- 02/04/1989 -RRB- There will also be a demonstration of how dogs herd farm animals . +-LRB- 02/04/1989 -RRB- Show hours are 8 a.m. to 9 p.m. . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D071.M.100.F.D.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D071.M.100.F.D.spl new file mode 100644 index 0000000000000000000000000000000000000000..9a5dd4e1d111c9795c4b44978fe6ff4e5d2eebf1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D071.M.100.F.D.spl @@ -0,0 +1,5 @@ +Dog competition in national and international events is both entertainment and big business . +Competitions attract numerous contestants and visitors . +In Israel , the dog of the year contest briefly outshone the general election and the uprising known as the intefadeh . +Owners of one dog were embroiled in a law suit over whether the dog should be retired or not and a Manhattan artist 's Weimaraners have served as both models for his work and appeared on Sesame Street . +Dog handling can be lucrative , but the overhead is high and the hours are long , according to Bill McFadden a professional dog handler . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D072.M.100.F.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D072.M.100.F.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..4e1d1d213ee59bce898e64111eb9812755cd2278 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D072.M.100.F.26.spl @@ -0,0 +1,3 @@ +-LRB- 11/15/1988 -RRB- Leonard Bernstein , whose 70th birthday in August was marked with a gala at Tanglewood , returned to Carnegie Hall with the New York Philharmonic 45 years after he made his triumphant conducting debut there with the orchestra . +-LRB- 11/15/1988 -RRB- At intermission , Mrs. Artur Rodzinski , whose late husband was the Philharmonic music 's director in 1943 and hired Bernstein as his assistant , was introduced from a box . +-LRB- 10/19/1990 -RRB- Recordings by Leonard Bernstein , one of the most documented conductors in history , will undergo expanded release programs following the conductor 's death on 10/21/1990 , said representatives of the recording companies controlling the late Bernstein 's catalogues . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D072.M.100.F.J.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D072.M.100.F.J.spl new file mode 100644 index 0000000000000000000000000000000000000000..a6d901f7404d12a18a0eaff5216498cd1bf5282d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D072.M.100.F.J.spl @@ -0,0 +1,6 @@ +Leonard Bernstein , the beloved internationally acclaimed maestro died on October 14th at 72 of lung failure . +Within days , the New York Philharmonic , in tribute to its 47-year association with the brilliant conductor played a special program , as did several other orchestras . +Recently , Broadway also honored Bernstein , composer of '' West Side Story , '' with a special show at the Majestic Theater . +Several record companies will accelerate re-releases of Bernstein recordings . +Bernstein though ill for some time , did participate in his 70th birthday celebrations at Tanglewood and Carnegie Hall . +The latter occurred on the 45th anniversary of his directorial debut with the Philharmonic . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D073.M.100.B.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D073.M.100.B.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..0ebf3862ef2b023eddbd27a7a9e17df13fab29b2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D073.M.100.B.26.spl @@ -0,0 +1,3 @@ +-LRB- 06/11/1991 -RRB- '' I think we could see a major explosive eruption any time , '' said Peter Lipman , a volcanologist at the U.S. Geological Survey office in Menlo Park . +-LRB- 06/13/1991 -RRB- Three major new eruptions rocked Mount Pinatubo late on 06/12/1991 night and early today , forcing another emergency evacuation of Clark Air Base and increasing fears of even more violent explosions from the long-dormant volcano in the days ahead . +; -LRB- 06/15/1991 -RRB- Mount Pinatubo rumbled on 06/15/1991 with explosions that hurled ash and gas more than 12 miles high , and a typhoon brought heavy rain that could unleash tons of debris from the jagged slopes . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D073.M.100.B.J.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D073.M.100.B.J.spl new file mode 100644 index 0000000000000000000000000000000000000000..b47cc45b0f30f1475ae6c49d0b0920a385216981 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D073.M.100.B.J.spl @@ -0,0 +1,7 @@ +Pinatubo began erupting about two weeks ago , after six centuries of dormancy . +Located 10 miles from Clark AFB , the explosions have become increasingly severe . +The U.S. has denied the possibility of radioactive contamination if volcanic debris hits the weapons depots at Clark AFB , which was evacuated a week ago . +At least four dead and 24 injured are attributed to the eruptions . +About 84,000 have been evacuated . +Heavy rains today have raised fears of catastrophic mudflows . +According to Foreign Secretary Manglapus , the eruptions should not effect the stalled talks with the U.S. on new Clark and Subic lease agreements . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D074.M.100.B.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D074.M.100.B.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..b4ebaf0a11aa63d79ac7c9f7c0a3fc530e64e973 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D074.M.100.B.26.spl @@ -0,0 +1,3 @@ +-LRB- 09/11/1991 -RRB- While the 14-member Senate Judiciary Committee presses Clarence Thomas to explain his qualifications for the Supreme Court , all 100 senators are under mounting pressure to explain their views of the judge . +; -LRB- 09/11/1991 -RRB- -LRB- check -RRB- About 300 black pastors , representing congregations totaling more than 1 million churchgoers in 30 states , held a rally on the steps of the Supreme Court and then lobbied their senators to support confirmation of President Bush 's Supreme Court nominee . +; -LRB- 09/12/1991 -RRB- Frustrated Democrats on the Senate Judiciary Committee say Supreme Court nominee Clarence Thomas is an evasive witness , but no groundswell of opposition to his confirmation seems to be emerging . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D074.M.100.B.A.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D074.M.100.B.A.spl new file mode 100644 index 0000000000000000000000000000000000000000..cb68709e4d875623f7d928bbe720e7f418a56314 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D074.M.100.B.A.spl @@ -0,0 +1,6 @@ +From Sept. 10 to Sept. 16 , 1991 the Senate Judiciary Committee questioned Supreme Court nominee Clarence Thomas . +Thomas 's refusal to answer certain questions caused complaints , but it appeared early on that the committee would approve the nomination . +By the end of the questioning an affirmative vote of 10 - 4 or 9 - 5 was predicted . +There was media attention to Thomas 's wife Virginia . +A successful Washington lawyer , she had taken strong conservative positions that antagonized certain groups and the fact that she was white and he black raised questions for some blacks . +During the hearings lobbyists on either side worked to influence the ensuing vote of the full Senate . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D075.M.100.B.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D075.M.100.B.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..00a5932b2a1c5848a7d6b712306516a0e809b1cc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D075.M.100.B.26.spl @@ -0,0 +1,3 @@ +-LRB- 04/28/1988 -RRB- New treatments that stop a heart attack in its tracks may help victims to get out of the hospital more quickly than ever before , perhaps even three days after their attacks , a study published on 04/28/1988 concludes . +-LRB- 04/18/1991 -RRB- An experiment with more than 1,700 high blood pressure patients showed that a blood and urine test can pinpoint those patients most likely to have a heart attack . +-LRB- 04/18/1991 -RRB- About half of the 1.5 million Americans who suffer a heart attack each year do n't have the known risk factors for heart disease , such as high cholesterol levels , cigarette smoking , obesity and high blood pressure . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D075.M.100.B.E.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D075.M.100.B.E.spl new file mode 100644 index 0000000000000000000000000000000000000000..7e1f248010a06868994af47d266b63324911e91f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D075.M.100.B.E.spl @@ -0,0 +1,5 @@ +New medicines and new treatments which have appeared in the last decade have significantly reduced the heart attack rate in the United States . +The introduction of calcium blockers such as Diltiazem and Verapamil significantly reduce the damage caused by a heart attack while even the simple aspirin , taken every other day , also reduces heart attack risk . +Aspiring , when taken with clot-busting drugs , has been shown to be especially helpful . +Surgical procedures such as balloon angioplasty and ileal bypass also show promise in the treatment of heart disease . +Even life style changes like smoking less or a better diet are effective in lowering the risk of a heart attack . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D076.M.100.B.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D076.M.100.B.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..769da000cb50e3ed97188214cef44378b834a6a3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D076.M.100.B.26.spl @@ -0,0 +1,5 @@ +-LRB- 04/06/1989 -RRB- Margaret Thatcher , prime minister ; wrote most criticism . +-LRB- 11/20/1990 -RRB- Flamboyant former Defense Minister Michael Heseltine 's challenge to Prime Minister Margaret Thatcher for leadership of the Conservative Party has caused a political sensation in Britain . +-LRB- 11/23/1990 -RRB- ` ` Margaret Thatcher was a completely reliable ally and partner of the greatest personal integrity , ' ' Reagan said in a statement after Mrs. Thatcher announced her impending retirement . +-LRB- 12/08/1990 -RRB- Queen Elizabeth II awarded former Prime Minister Margaret Thatcher the coveted Order of Merit on 12/07/1990 and made her husband a baronet , which is a hereditary knighthood . +-LRB- 12/08/1990 -RRB- Deceased recipients include Prime Minister Winston Churchill , Gen. Dwight D. Eisenhower , missionary Albert Schweitzer and actor Lawrence Olivier . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D076.M.100.B.E.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D076.M.100.B.E.spl new file mode 100644 index 0000000000000000000000000000000000000000..09c736192b48ad82232e53481bcff13d82fa2f45 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D076.M.100.B.E.spl @@ -0,0 +1,6 @@ +Prime Minister Margaret Thatcher resigned on Thursday after her cabinet withdrew its support in an upcoming vote . +The move was seen as an attempt to head off a campaign by former defense minister Hazeltine to wrest control of the Conservative Party . +The announcement took President Bush , and other world leaders , by surprise . +Mrs. Thatcher 's special relationship with the Reagan administration was well known . +Strong willed , the Iron Lady , was prime minister for over 11 years , longer than any other prime minister of this century . +While prime minister , she is credited with turning around the declining British economy as well as helping shape international politics . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D077.M.100.B.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D077.M.100.B.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..466e2ae55fb8b8c900825cbc3f6162c909c232ec --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D077.M.100.B.26.spl @@ -0,0 +1,4 @@ +-LRB- 10/18/1989 -RRB- Ever since the 1906 earthquake devastated San Francisco , many scientists have believed the next ` ` big one ' ' would strike the Los Angeles end of the mighty San Andreas Fault . +-LRB- 10/18/1989 -RRB- The epicenter of the quake was about 8 miles northeast of Santa Cruz and 75 miles south of San Francisco . +-LRB- 10/18/1989 -RRB- These studies gave various interpretations of how much stress inside the Earth was released by the great San Francisco earthquake of 1906 , which had a magnitude of about 8.3 and killed at least 2,500 people . +-LRB- 10/19/1989 -RRB- San Francisco Mayor Art Agnos has estimated damage $ 2 billion in his city alone . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D077.M.100.B.H.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D077.M.100.B.H.spl new file mode 100644 index 0000000000000000000000000000000000000000..4c021a8aedb3004561b73acdb86222b98dd76175 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D077.M.100.B.H.spl @@ -0,0 +1,11 @@ +A 6.9 earthquake rocked Northern California at 5:04 pm on October 17 , 1989 . +It lasted 15 seconds , caused $ 2 billion damage , and killed 60 . +Candlestick Park shook and World Series Game Three was postponed . +Buildings collapsed because of poor soil and structural design . +The Marina District lost 60 buildings and was swept by fire . +High-rises built to strict earthquake codes escaped damage . +Part of the Bay Bridge 's upper deck collapsed . +The 1906 San Francisco quake , measuring 8.3 , killed 2500 . +Tuesday 's epicenter was Northern California 's most likely spot for a large quake within 30 years . +Offers of help were widespread . +Charleston , SC , sympathized , suffering comparable damage from Hurricane Hugo . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D078.M.100.B.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D078.M.100.B.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..40614f16d8d120ec32e1ad63dabc883d04ba6461 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D078.M.100.B.26.spl @@ -0,0 +1,4 @@ +-LRB- 03/23/1989 -RRB- Oscar selection has come under scrutiny as film studios go to new lengths to pull votes out of the Academy of Motion Picture Arts and Sciences . +-LRB- 03/24/1989 -RRB- Free enterprise has collided with the Academy Awards , and everybody 's trying to pick up the pieces . +-LRB- 03/24/1989 -RRB- With Oscar statuettes selling at auction for more than $ 10,000 and a Chicago trophy company casting alleged Academy Award clones , the National Academy of Motion Picture Arts and Sciences is scrambling to make sure Oscar 's golden sheen is n't tarnished by Hollywood hucksterism . +-LRB- 03/30/1989 -RRB- The Tracy credo is recommended to future producers of Academy Award shows . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D078.M.100.B.J.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D078.M.100.B.J.spl new file mode 100644 index 0000000000000000000000000000000000000000..a61895f7df9b32525652447859bb91fcc9c9b417 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D078.M.100.B.J.spl @@ -0,0 +1,6 @@ +The Oscar nomination and selection process is under scrutiny as studios campaign to influence voting by Academy of Motion Pictures Arts and Sciences members . +Directors Brooks -LRB- 1988 -RRB- , Spielberg -LRB- 1988 -RRB- , and Lee -LRB- 1989 -RRB- are among the luminaries who were overlooked in the annual voting during the award 's 61-year history . +Millions watch the televised awards show which can take over three hours . +The 1989 show is memorable for the number of films honored and for a musical number that sparked a Disney suit against the Academy . +The highly recognizable statue is not protected by copyright . +Walt Disney was the most-awarded person -LRB- 32 -RRB- . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D079.M.100.A.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D079.M.100.A.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..b1b67e42cae327bbeb3d6737dce41ba1ec00d40b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D079.M.100.A.26.spl @@ -0,0 +1,5 @@ +-LRB- 09/11/1988 -RRB- Hurricane Gilbert . +-LRB- 09/14/1988 -RRB- The hurricane killed at least five people on 09/18/1988 in the Dominican Republic , civil defense officials said . +-LRB- 09/15/1988 -RRB- The most intense hurricane on record surged toward Texas on 09/15/1988 after battering the Yucatan Peninsula with 160 mph winds , leveling slums , pummeling posh resorts and forcing tens of thousands to flee . +-LRB- 09/15/1988 -RRB- The hurricane , which has left nearly one in four Jamaicans homeless , slackened somewhat as it swirled over land , but the storm was beginning to gain strength over open water as it moved toward the U.S. Gulf Coast with sustained winds of 120 mph . +-LRB- 09/16/1988 -RRB- ` ` I feel sorry for anybody wherever this hits . ' ' diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D079.M.100.A.I.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D079.M.100.A.I.spl new file mode 100644 index 0000000000000000000000000000000000000000..2f7c2675478cda7b4ce1c77dd39a4cc36d7a09bc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D079.M.100.A.I.spl @@ -0,0 +1,6 @@ +Gilbert is now a tropical storm , bringing heavy rain , flooding , and mudslides to northeastern Mexico . +It did not hit Texas as feared , but did spawn tornadoes . +The Hurricane Gilbert formed in the eastern Caribbean and during the last week ravaged the Dominican Republic , Jamaica , and the Cayman Islands . +On Tuesday Gilbert had winds of 175mph and the lowest pressure ever recorded and was upgraded to a Category 5 storm , the highest . +Wednesday it slammed into the Yucatan Peninsula severely damaging the resort areas , severing electricity and communications , and causing widespread flooding . +At least 109 people have been killed and 800,000 left homeless . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D080.M.100.A.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D080.M.100.A.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..a23fd6f6e7cf09fa472b600bd087df7f8acb8911 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D080.M.100.A.26.spl @@ -0,0 +1,3 @@ +-LRB- 01/18/1990 -RRB- Mother-and-son defendants Peggy McMartin Buckey , 63 , and Raymond Buckey , 31 , wept as the verdicts were announced . +-LRB- 01/22/1990 -RRB- A Hermosa Beach minister who for years has tried in vain to quell rumors tying his church to the McMartin Pre-School scandal announced on 01/28/1990 that the '' extreme stress '' of fallout from the case has forced him to seek disability retirement . +-LRB- 01/22/1990 -RRB- The McMartin case , which prompted the longest and most expensive criminal trial in U.S. history , ended on 01/25/1990 with the acquittal of defendants Ray Buckey and Peggy McMartin Buckey on a total of 52 counts of child molestation at the Manhattan Beach school . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D080.M.100.A.E.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D080.M.100.A.E.spl new file mode 100644 index 0000000000000000000000000000000000000000..bc0eb89d2dcef23b609ef5ff1923a64df00bd25f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D080.M.100.A.E.spl @@ -0,0 +1,5 @@ +The McMartin Pre-School child molestation trial , the longest criminal trial in U.S. history , ended with a verdict of innocent for Raymond Buckey and is mother , Peggy McMartin Buckey . +The jury found the Buckeys innocent on 52 of the charges but deadlocked on another 13 , causing a mistrial on those charges . +Prosecutors must now decide if they want a retrial on the deadlocked charges . +Originally involving 7 defendants , including Raymond Buckeys sister and grandmother , the charges against the sister and grandmother as well as three employees of the school were dropped . +Parents of the children involved expressed anger and disappoint at the verdict . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D081.M.100.A.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D081.M.100.A.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..03034a627387de362ebb3101c0f4a62a7e806f17 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D081.M.100.A.26.spl @@ -0,0 +1,4 @@ +-LRB- 07/21/1989 -RRB- Coal miners in Siberia ended their strike on 07/21/1989 after exacting promises of better food , housing and working conditions , but the wave of unrest they launched continued in other key coal regions . +-LRB- 11/03/1989 -RRB- Thousands of miners in the northern Vorkuta region are expanding their strike and some are blocking coal shipments , the Soviet news media reported on 11/03/1989 . +-LRB- 11/03/1989 -RRB- Coal miners in the northern region and the Ukraine struck for two weeks this summer but returned to work in July after parliament passed a resolution promising reforms , including improved social and economic conditions . +-LRB- 06/29/1994 -RRB- The strike continued at these mines on 28 June . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D081.M.100.A.D.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D081.M.100.A.D.spl new file mode 100644 index 0000000000000000000000000000000000000000..4373964fc8c9e7af1ad985b83d1d130a5a0404e4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D081.M.100.A.D.spl @@ -0,0 +1,4 @@ +Miners throughout the world have used strikes not only to achieve economic gains , but also to gain greater control over their industries and to achieve political ends . +Miners in Poland , Romania and in every region of the Soviet Union have struck for higher wages and better living conditions and also and for more local control . +In Poland , miners struck for legalization of Solidarity . +In South Africa miners struck for better wages and working conditions and in the U.S. miners walked of f the job in sympathy for fellow miners in a bitter dispute with a coal company . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D082.M.100.A.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D082.M.100.A.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..180a28172784ec9fedee82f2aa29fca795de39ae --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D082.M.100.A.26.spl @@ -0,0 +1,3 @@ +-LRB- 05/12/1988 -RRB- A Soviet newspaper has painted a highly sympathetic portrait of Andrei D. Sakharov and Yelena Bonner , countering past attacks on the dissident couple once branded as traitors by the state-run media . +-LRB- 05/12/1988 -RRB- Since then , Sakharov , who was one of the creators of his nation 's hydrogen bomb , has vocally supported Soviet leader Mikhail S. Gorbachev 's reform campaign , but has called for the liberation of all political prisoners and more improvements in the field of human rights . +-LRB- 12/16/1989 -RRB- The obituary noted Sakharov was exiled in the industrial city of Gorky about 250 miles east of Moscow from 1980 to 1986 . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D082.M.100.A.C.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D082.M.100.A.C.spl new file mode 100644 index 0000000000000000000000000000000000000000..b95c6aff74b3ef656da7c93371b3dd4e91797b85 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D082.M.100.A.C.spl @@ -0,0 +1,9 @@ +Andrei Sakharov was a physicist who helped develop the Soviet hydrogen bomb . +He later gained widespread fame as a human rights advocate and the 1979 winner of the Nobel Peace Prize . +His constant criticism irked the Kremlin . +In 1980 he criticized the invasion of Afghanistan and Breznev exiled him to Gorky . +Gorbachev freed him in 1986 . +Sakharov praised Gorbachev on foreign affairs , but criticized his economic policies . +Sakharov was elected to the Soviet Congress of People 's Deputies in April 1989 . +Sakharov died suddenly on 14 December 1989 . +His obituary , signed by Gorbachev , was tantamount to public apology . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D083.M.100.A.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D083.M.100.A.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..4867d658800d6bd6e0a9b7e1cc48d5027fd4717a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D083.M.100.A.26.spl @@ -0,0 +1,5 @@ +-LRB- 11/16/1989 -RRB- ` ` It 's total destruction where the tornado hit . +-LRB- 11/16/1989 -RRB- _ Alabama : Seventeen people were killed in Huntsville on 11/15/1989 when a tornado touched down just before rush hour , causing major damage . +-LRB- 11/16/1989 -RRB- Three people were injured in an earlier tornado in Clay County in eastern Alabama . +-LRB- 11/16/1989 -RRB- A violent storm that spun tornadoes across the South and Midwest blew north on 11/16/1989 , knocking a cafeteria wall down on top of lunching schoolchildren in upstate New York . +-LRB- 11/16/1989 -RRB- Seventeen people died on 11/15/1989 in Huntsville , Ala. , when a tornado packing 250 mph winds struck virtually without warning , laying waste to a wide swath of the city . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D083.M.100.A.G.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D083.M.100.A.G.spl new file mode 100644 index 0000000000000000000000000000000000000000..036469f687c7fbcef2b4faf8c686cf5589d781f6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D083.M.100.A.G.spl @@ -0,0 +1,6 @@ +A powerful storm system brought tornadoes , high winds , heavy thunderstorms , and large hailstones across the Midwest , Mississippi Valley , Southeast and Northeast on Wednesday and Thursday . +Twenty-seven people were killed , more than 500 injured , and hundreds left homeless . +The tornadoes struck mostly across Midwestern and Southeastern states . +A devastating tornado struck Huntsville , AL laying waste to a wide swath through the city and causing death to 14 people . +A tornado killed four people in Palmetto , Georgia . +Heavy winds caused the death of seven children in a school in Newburgh , NY , one person in Elizabeth , NJ , and another in New York City . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D084.M.100.A.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D084.M.100.A.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..dd63949c75df71180096348dcbafe32df59425e2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D084.M.100.A.26.spl @@ -0,0 +1,3 @@ +-LRB- 04/21/1989 -RRB- Investigators aboard the USS Iowa searched for clues to the cause of a fiery explosion that claimed the lives of 47 sailors as the damaged battleship headed home and grief-stricken families dealt with the loss of their loved ones . +-LRB- 04/22/1989 -RRB- Hundreds of people gathered to honor the 47 sailors who died on the USS Iowa as victims of a tragedy that ` ` reaches into little towns all over the country . ' ' +-LRB- 04/24/1989 -RRB- Navy investigators will be looking at all possibilities of human or mechanical error in their effort to determine what caused the explosion that killed 47 aboard the battleship USS Iowa , officials say . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D084.M.100.A.H.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D084.M.100.A.H.spl new file mode 100644 index 0000000000000000000000000000000000000000..a18f50551315c0794bdc839fac548ddfeec6b39f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D084.M.100.A.H.spl @@ -0,0 +1,6 @@ +An explosion in the battleship Iowa 's No. 2 turret on Wednesday , April 19 , 1989 , during a training exercise NE of Puerto Rico , killed 47 . +Naval investigators concluded the explosion occurred while gunpowder was in transit from a powder hoist . +Thousands welcomed the Iowa home to Norfolk on Sunday , with sailors with black arm bands lining the ship 's rails and surviving guncrew members standing atop the blackened No. 2 turret . +On Monday , President Bush spoke to mourners at a Norfolk memorial service . +A moratorium was placed on firing the WWII-era 16-inch guns , which are criticized as outdated and dangerous . +The Senate Armed Services Committee will hold hearings on the explosion . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D085.M.100.D.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D085.M.100.D.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..4d3836ea9080eb014c710d1d5e4d47ab62dd8d34 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D085.M.100.D.26.spl @@ -0,0 +1,5 @@ +-LRB- 09/22/1989 -RRB- Hurricane Sheets . +-LRB- 09/22/1989 -RRB- But hurricane tracking remains an uncertain science . +-LRB- 09/23/1989 -RRB- The ` ` greenhouse effect ' ' may breed bigger and deadlier hurricanes in the future , storms up to 50 percent stronger than Hugo and last year -LRB- 1988 -RRB- 's record-setting Gilbert , some meteorologists say . +-LRB- 09/25/1989 -RRB- Residents took forecasters at their word when they warned of Hurricane Hugo 's fury , and the low number of deaths from the powerful storm can be credited to this healthy respect , authorities said . +-LRB- 09/25/1989 -RRB- The storm , which caused billions in damage , claimed 17 lives in South Carolina , and only two were in the Charleston area , which bore the brunt of Hugo 's 135 mph winds . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D085.M.100.D.H.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D085.M.100.D.H.spl new file mode 100644 index 0000000000000000000000000000000000000000..eb6f3be3eaa375414c96af8ac5224f6b78a46db0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D085.M.100.D.H.spl @@ -0,0 +1,7 @@ +Category 4 Hurricane Hugo did extensive damage in the eastern Caribbean on Sep 17 , 1989 , and on the 21st hit Charleston , South Carolina with 135mph winds . +It killed 17 in the state . +Coastal residents fled inland or crowded into shelters . +Satellites , a computerized tracking model , and Air Force reconnaissance planes helped forecasters at the National Hurricane Center monitor Hugo 's progress . +Pinpointing landfall and intensity were difficult . +Billions in insurance claims made Hugo the most expensive storm to date . +Ocean warming caused by the greenhouse effect could increase future storms ' destructive power , demonstrated by Hugo jumping from 105 to 135mph winds as it passed over the Gulf Stream . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D086.M.100.D.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D086.M.100.D.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..a38f7349c1871bca8e6766d321159f2c413fbdd0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D086.M.100.D.26.spl @@ -0,0 +1,3 @@ +-LRB- 08/02/1990 -RRB- Tank-led Iraqi troops invaded Kuwait before dawn on 08/02/1990 , seizing the ruler 's palace and other government buildings , Kuwaiti officials reported. , -LRB- 08/03/1990 -RRB- Iraqi President Saddam Hussein seemed determined to solve his financial problems and fulfill territorial ambitions by dethroning the government of neighboring Kuwait . +-LRB- 08/03/1990 -RRB- Here is a brief chronology in the dispute between Iraq and Kuwait over oil production and their common border . +-LRB- 08/03/1990 -RRB- July 17 _ Iraqi President Saddam Hussein accuses Kuwait and the United Arab Emirates of flooding the oil market and driving prices down , and that the move cost Iraq $ 14 billion in lost oil revenue . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D086.M.100.D.B.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D086.M.100.D.B.spl new file mode 100644 index 0000000000000000000000000000000000000000..c4f583a1d1f062a60d40f35e415b223f8010cfdb --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D086.M.100.D.B.spl @@ -0,0 +1,6 @@ +Saddam accused Kuwait of costing Iraq billions by exceeding OPEC production quotas thus driving down oil prices . +He further accused Kuwait of '' stealing '' Iraqi oil from a common oil field on their border . +He then invaded Kuwait , claiming to do so at the request of Kuwaiti revolutionary coup leaders . +The United States led the western world and the United Nations in calling the coup a sham , denouncing this invasion and imposing strong economic and military sanctions on Iraq in an attempt to get them to withdraw . +Oil prices surged while Saddam warned against foreign intervention . +The U.S. dispatched warships to the area . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D087.M.100.D.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D087.M.100.D.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..be769c8dbec03f438e3b557f69bcfe0a3b336809 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D087.M.100.D.26.spl @@ -0,0 +1,4 @@ +-LRB- 02/28/1988 -RRB- The best America could do was six medals , its worst Winter Games showing in 52 years . +-LRB- 10/02/1988 -RRB- The 1988 Summer Olympics , kept free of terrorism but tainted by drug scandals , closed on 10/02/1988 with the pealing of a medieval bell to symbolize the sorrow of parting . +-LRB- 10/02/1988 -RRB- East Germany had 102 medals and 37 gold , and the United States 94 medals and 36 gold . +-LRB- 08/08/1992 -RRB- The US has comfortably won the most relay medals , followed by Britain , the former Soviet Union , the former West Germany -LRB- not even counting the six won before 1939 -RRB- , the former East Germany , France and Canada . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D087.M.100.D.B.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D087.M.100.D.B.spl new file mode 100644 index 0000000000000000000000000000000000000000..d4747584b866b33126593441bf3a076f1dd4dcb7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D087.M.100.D.B.spl @@ -0,0 +1,5 @@ +In the world of international competition , the Olympics are special . +It is here that national pride is displayed , individual dreams are realized and fame is attained . +The summer Olympics with its gymnastics , track and field , and swimming events will showcase superstars such as Mary Lou Retton , Carl Lewis , Florence Griffith Joyner and Greg Louganis , some of whom capitalize on their fame and glory with lucrative advertising contracts . +The Winter Olympics generally highlight the figure skaters , speed skaters and downhill skiers . +Sometimes an Olympian acquires lifelong fame , as happened to Jesse Owens , who in 1936 soundly defeated Hitler 's '' master race '' competitors . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D089.M.100.D.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D089.M.100.D.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..36b24100f5651a975adf1111d1b61adaaec76fb6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D089.M.100.D.26.spl @@ -0,0 +1,5 @@ +-LRB- 11/16/1989 -RRB- Rescuers crawled through collapsed homes and shops on 11/16/1989 looking for more victims of a tornado that carved a 3-mile stretch of destruction , killing 17 people , injuring 463 and leaving 1,000 homeless . +-LRB- 11/16/1989 -RRB- The other tornadoes caused at least 19 injuries and far-flung property damage . +-LRB- 11/16/1989 -RRB- A powerful storm system brought strong winds and heavy thunderstorms to the Northeast on 11/16/1989 , causing flooding and widespread property damage . +-LRB- 11/16/1989 -RRB- _ Alabama : Seventeen people were killed in Huntsville on 11/15/1989 when a tornado touched down just before rush hour , causing major damage . +-LRB- 11/16/1989 -RRB- Three people were injured in an earlier tornado in Clay County in eastern Alabama . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D089.M.100.D.G.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D089.M.100.D.G.spl new file mode 100644 index 0000000000000000000000000000000000000000..dba354f1d0501887905d5f09c82088e54e56dae6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D089.M.100.D.G.spl @@ -0,0 +1,5 @@ +A powerful storm brought tornadoes , high winds , and thunderstorms across the Midwest , Mississippi Valley , Southeast and Northeast on Wednesday and Thursday . +Twenty-seven people were killed , more than 500 injured , and thousands left homeless . +The worst hit was Huntsville , AL when a tornado laid waste a wide swath through the city causing the death of at least fourteen people and over 400 injuries . +Another tornado killed four people in Palmetto , Georgia In Newburgh , NY , strong winds caused a school roof to collapse killing seven children and injuring eighteen . +The storm caused one death in New Jersey and another in New York City . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D090.M.100.D.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D090.M.100.D.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..b223ed655ee1e179d436890370ae3fdaf8ffb771 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D090.M.100.D.26.spl @@ -0,0 +1,4 @@ +-LRB- 06/25/1988 -RRB- The reports did not say when criminal charges against Marcos , Aquino 's ousted predecessor , will be filed or when Mrs. Aquino will allow him to return . +-LRB- 05/19/1989 -RRB- Marcos ' lawyer also asked the Philippine Supreme Court to order the return , pledging the ousted leader would cooperate with the Aquino administration . +-LRB- 05/20/1989 -RRB- President Corazon Aquino said on 05/19/1989 that for security reasons she would not permit deposed President Ferdinand E. Marcos to be buried in the Philippines . +-LRB- 05/20/1989 -RRB- Philippine officials were asked repeatedly whether the Aquino government 's refusal to allow Marcos to return to the country would remain in effect after his death . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D090.M.100.D.J.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D090.M.100.D.J.spl new file mode 100644 index 0000000000000000000000000000000000000000..03697a942e112aa93a6d8e1c3c613eca2b765171 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D090.M.100.D.J.spl @@ -0,0 +1,6 @@ +With military firepower , President Aquino ended the Oct. 4 - 6 uprising . +She has survived two major coup attempts and several mutinies . +Recently , in a reversal of policy , Aquino said she would negotiate with Communist guerillas . +Aquino 's , political controversies include her opposition to the nomination of agrarian reform leader Secretary-designate Abad , and her Vice President 's refusal to condemn an insurrection in 1989 . +Aquino succeeded Marcos who was accused of stealing billions from the government . +In 1989 she refused to let Marcos , critically ill in Hawaii , to reenter the country or to allow him to be buried in the Philippines . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D091.M.100.C.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D091.M.100.C.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..4156586defd78edbdf30632da0cdb1034dd49ace --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D091.M.100.C.26.spl @@ -0,0 +1,4 @@ +-LRB- 06/15/1990 -RRB- Torrential thunderstorms sent a flash flood surging through a valley into this Ohio River town , killing at least 11 people , leaving 51 missing and scores of others homeless on 06/15/1990 , authorities said . +-LRB- 06/15/1990 -RRB- About 200 people were reported evacuated in central Ohio . +-LRB- 06/15/1990 -RRB- The Federal Emergency Management Agency declared Belmont County , which includes Shadyside , and Jefferson and Franklin counties disaster areas , making federal aid available to residents . +-LRB- 06/18/1990 -RRB- The death toll from last week 's flash floods mounted to 21 on 06/18/1990 when a body was found in the Ohio River , and authorities said there was little hope for the 14 people still listed as missing . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D091.M.100.C.F.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D091.M.100.C.F.spl new file mode 100644 index 0000000000000000000000000000000000000000..19032ea8bf1d91ffe10551ca0ed0826ce582bbaa --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D091.M.100.C.F.spl @@ -0,0 +1,6 @@ +The death toll from floods in eastern Ohio rose to 21 and may to higher since 14 persons are still missing . +Torrential rains caused two creeks near Shadyside , Ohio , overflow and create a wall of water 15 to 20 feet high . +The flood raged through the valley demolishing a crowded tavern and at least 70 houses . +Governor Celeste declared a state of emergency and sent National Guard troops into the area to assist . +Dog teams were used to search for survivors and bodies . +Few of the damaged homes were covered by flood insurance so the owners must look to federal assistance . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D092.M.100.C.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D092.M.100.C.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..7bbcfe48bfd2e97b564e756a6424c6760084d5d5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D092.M.100.C.26.spl @@ -0,0 +1,5 @@ +-LRB- 06/22/1990 -RRB- The earthquake that struck northern Iran brought reminders of another quake that devastated Soviet Armenia in 1988 . +-LRB- 06/22/1990 -RRB- Iranian news media reacted with little emotion on 06/21/1990 to a killer earthquake that left an estimated 25,000 people dead in northern Iran . +-LRB- 06/22/1990 -RRB- About 25,000 people died in eastern Iran in a 1978 earthquake . +-LRB- 06/23/1990 -RRB- Iran is deliberately underreporting the number of casualties from on 06/21/1990 's massive earthquake out of fear of a political backlash , leaders of a group seeking to overthrow the country 's Islamic leadership say . +-LRB- 06/23/1990 -RRB- Northern Iran was stuck on 06/21/1990 by an earthquake measuring between 7.3 and 7.7 on the Richter Scale . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D092.M.100.C.A.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D092.M.100.C.A.spl new file mode 100644 index 0000000000000000000000000000000000000000..5b123747d53a310d0c342759607b453a77dfafa6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D092.M.100.C.A.spl @@ -0,0 +1,4 @@ +An earthquake of magnitude 7.7 hit northwestern Iran on June 21 , 1990 killing at least 50,000 people and injuring 200,000 . +The quake occurred when most people were inside asleep and hit a coastal floodplain where loosely deposited soil shifts easily and caused the fragile adobe homes in the area to collapse . +The Iranian president appealed for international aid and the response was overwhelming , including assistance from the United States , the first such since the hostage crisis of 1979-80 . +On the negative side , Iranian news media were slow to report on the disaster and the Iranian and U.S. government were blamed by their respective critics for the excessive casualties . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D093.M.100.C.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D093.M.100.C.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..84c170ccbba7dfe69b2b688a6a476a3f0f003d0c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D093.M.100.C.26.spl @@ -0,0 +1,4 @@ +-LRB- 12/18/1988 -RRB- It said that by on 12/16/1988 , 125 survivors had been rescued , 55 bodies were found and seven people were missing . +-LRB- 12/16/1991 -RRB- U.S. Navy aircraft joined the search on 12/16/1991 for survivors of the ferry sinking that left 471 people missing in shark-infested Red Sea waters but found nothing but empty life rafts and debris . +; -LRB- 12/16/1991 -RRB- The engineer of a ferry that sank off this Red Sea port , leaving more than 400 people missing , on 12/16/1991 denied accusations of widespread negligence on the part of the ship 's crew . +; -LRB- 12/16/1991 -RRB- Only seven bodies have been recovered since the ferry went down , leaving 462 people missing . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D093.M.100.C.H.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D093.M.100.C.H.spl new file mode 100644 index 0000000000000000000000000000000000000000..c907533af9ac3dd9930d69d77ddd227346bd6d0d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D093.M.100.C.H.spl @@ -0,0 +1,4 @@ +In 1988 , overloaded ferries capsized in India 's Ganges River , killing 400 ; in Bangladesh 's Meghna River , killing 100 ; off China 's Hainan Island , killing 55 students and teachers , and in Guangxi Zhuang Autonomous Region , killing 61 . +An overloaded ferry capsized in Guatemala in 1989 , killing 67 . +In 1991 , ferries capsized after striking reefs off Kenya , killing 180 Somali refugees , and in the Red Sea , killing 352 . +Other ferry capsizings killed 150 on India 's Krishna River in 1970 ; 133 on China 's Min River and 71 on the Yangtze in 1988 ; 19 sailors off Israel 's coast in 1990 ; and 11 refugees off Kenya in 1991 . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D094.M.100.C.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D094.M.100.C.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..c5648fb2399b0c2610ab3e3ff5469a9dd3218268 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D094.M.100.C.26.spl @@ -0,0 +1,4 @@ +-LRB- 01/12/1989 -RRB- U.S. prosecutors pressured Japan 's wartime prime minister , Gen. Hideki Tojo , into changing testimony at his trial to avoid incriminating Emperor Hirohito in war crimes , a television documentary claims . +-LRB- 02/24/1989 -RRB- To the rest of the world , he was known as Emperor Hirohito , but in Japan his given name was seldom used . +-LRB- 02/24/1989 -RRB- English-language newspapers published in Japan quickly began using the name Showa for Hirohito after his death , but it did not become truly official until Jan. 31 , when Emperor Akihito conducted a ceremony in which Showa became the late emperor 's posthumous name . +-LRB- 08/21/1989 -RRB- Hirohito died of cancer on Jan. 7 at age 87 . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D094.M.100.C.D.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D094.M.100.C.D.spl new file mode 100644 index 0000000000000000000000000000000000000000..b619021bce3a7ef7284acada21752d2060dcab55 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D094.M.100.C.D.spl @@ -0,0 +1,6 @@ +Emperor Hirohito of Japan died in 1989 at the age of 87 . +He ascended the throne in 1926 and presided over one of Japan 's most tumultuous eras . +The last of the World War II generation of leaders , Hirohito was a controversial figure , even in death . +While western leaders generally , Asian leaders whose countries suffered under the Japanese military in World War II were cool . +While some historians regard him as a powerless figurehead , others believe that he was complicit in Japanese war crimes . +Hirohito died of cancer after a long illness and is succeeded by his son Akihito . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D095.M.100.C.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D095.M.100.C.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..c95e346a496e48bc0253430475f327bb9377c520 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D095.M.100.C.26.spl @@ -0,0 +1,4 @@ +-LRB- 01/17/1989 -RRB- The attack at Cleveland Elementary School came shortly before noon . +-LRB- 01/18/1989 -RRB- A South Carolina school where a gunman killed two 8-year-old girls Sept. 26 will send cards and offer words of encouragement to a California school that lost five pupils in a shooting rampage . +-LRB- 01/21/1989 -RRB- Grief-stricken family and friends mourned the deaths of five school children gunned down during recess , while the killer was buried nearly unnoticed in a nearby town . +-LRB- 01/21/1989 -RRB- Patrick Purdy , 24 , opened fire outside the Cleveland Elementary School with an AK-47 semiautomatic assault rifle , firing more than 100 rounds , killing five children and wounding 29 others and one teacher . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D095.M.100.C.H.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D095.M.100.C.H.spl new file mode 100644 index 0000000000000000000000000000000000000000..95a60604b1b5c0adebe517d34248a84e0c84a8e0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D095.M.100.C.H.spl @@ -0,0 +1,8 @@ +On January 16 , 1989 , Patrick Edward Purdy fired an AK-47 automatic assault rifle into a crowded playground at Cleveland Elementary School in Stockton , California , killing five children and wounding 30 , then killing himself . +All the dead were children of Southeast Asian refugees , as were 60 % of the school 's students . +Translators and Buddhist priests assisted families , and returning students received counseling . +A South Carolina school where a similar attack occurred sent encouragement . +Governor Deukmejian spoke at one memorial service . +Anti-racism statements were made . +Purdy , 24 , attended Cleveland Elementary through third grade . +A loner , he had drifted around the country searching for work and had a long criminal record. , diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D096.M.100.C.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D096.M.100.C.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..de4551cb39b6859ed39557cec2db8cedb318d8e0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D096.M.100.C.26.spl @@ -0,0 +1,4 @@ +-LRB- 01/22/1987 -RRB- Sports Illustrated is taking 300 advertisers to Super Bowl XXI in Pasadena , Calif. , this weekend for an all-out bash . +-LRB- 11/17/1989 -RRB- Inc. and Miller Brewing Co. , are gearing up to sell their beer with by staging mock football games in television commercials in conjunction with Super Bowl XXIV in New Orleans . +-LRB- 11/17/1989 -RRB- The first such game was staged during the last Super Bowl . +-LRB- 01/30/1990 -RRB- Super Bowl XXIV was the most watched television event of the week , viewed by a whopping 63 % of TV viewers , but not even Joe Montana could lift CBS out of the cellar in the ratings race , it was reported on 01/30/1990 . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D096.M.100.C.G.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D096.M.100.C.G.spl new file mode 100644 index 0000000000000000000000000000000000000000..ac8ff2f1d298cfbdfe95f13dd534060747fa4b91 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D096.M.100.C.G.spl @@ -0,0 +1,5 @@ +The San Francisco 49ers won the 1989 and 1990 Super Bowls , marking four out of four wins and setting several players ' records . +The 1990 Super Bowl was the lowest rated in 21 years , although the most watched TV event of the week . +Super Bowl XXV , to be held in Tampa in 1991 , will feature local events planned by a committee headed by two black men in order to resolve an area racial dispute . +Only 80 % of the face value of Super Bowl tickets can be deducted now . +The Rose Bowl is being offered rent free to the NFL for Super Bowl XXVII . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D097.M.100.E.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D097.M.100.E.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..aa6cfcd067fa33b792c6321bade16c40223925c7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D097.M.100.E.26.spl @@ -0,0 +1,4 @@ +-LRB- 09/21/1989 -RRB- Hurricane Riley . +-LRB- 09/25/1989 -RRB- Residents took forecasters at their word when they warned of Hurricane Hugo 's fury , and the low number of deaths from the powerful storm can be credited to this healthy respect , authorities said . +-LRB- 09/25/1989 -RRB- The storm , which caused billions in damage , claimed 17 lives in South Carolina , and only two were in the Charleston area , which bore the brunt of Hugo 's 135 mph winds . +-LRB- 09/27/1989 -RRB- Hurricane Hugo will go down in the record books as the costliest storm insurers have faced so far , but it won 't cause property-casualty premium rates to rise immediately , analysts and company officials say . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D097.M.100.E.J.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D097.M.100.E.J.spl new file mode 100644 index 0000000000000000000000000000000000000000..62f1fb14b29dfccf7a3d82e43aefb567ba5cc4e6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D097.M.100.E.J.spl @@ -0,0 +1,5 @@ +The two largest property insurance companies in the Carolinas , State Farm and Nationwide , estimate Hurricane Hugo losses at $ 600 million , making it the costliest hurricane ever . +Hugo , a Category 4 storm dubbed a '' killer hurricane '' by Charleston 's mayor , struck the city Thursday night . +Though there was significant damage , only two were killed in Charleston , 17 total in South Carolina . +Officials credit the low number of fatalities to residents who heeded Hurricane Center warnings and evacuated before the storm 's arrival . +Kingston , New York , assisted by Charleston during the Revolutionary War , is repaying the kindness by sending money to help the city recover . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D098.M.100.E.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D098.M.100.E.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..f0325409d3de1e35eb63057facfc56f557356bb8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D098.M.100.E.26.spl @@ -0,0 +1,4 @@ +-LRB- 04/25/1990 -RRB- Discovery 's astronauts overcame balky equipment to send the Hubble Space Telescope floating free from the shuttle on 04/25/1990 on a 15-year quest for secrets of the universe . +-LRB- 04/25/1990 -RRB- After years of delay and a last-minute snag , the Hubble Space Telescope was freed from the shuttle Discovery on 04/25/1990 and , glinting in the sunlight , drifted into orbit on its 15-year search for new worlds . +-LRB- 04/25/1990 -RRB- Mission specialist Steven Hawley released Hubble from the end of the shuttle 's 50-foot-long mechanical arm after a delay in getting one of the telescope 's solar wings unfurled . +-LRB- 04/26/1990 -RRB- Space shuttle Discovery was 46 miles away , available to remedy certain problems . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D098.M.100.E.A.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D098.M.100.E.A.spl new file mode 100644 index 0000000000000000000000000000000000000000..44016e87b5f7e634a245e53696c5bb56d4bfe945 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D098.M.100.E.A.spl @@ -0,0 +1,4 @@ +Scientists were elated with the successful launch of space shuttle Discovery with the Hubble Space Telescope -LRB- HST -RRB- aboard on April 24 , 1990 . +Deployment of the telescope was originally scheduled for 1983 but was delayed by technical problems and the Challenger accident . +Although the communications and electronics systems of the HST still presented some problems , by April 28 the telescope was in orbit 380 miles above the earth 's atmosphere with the potential of providing 10 times better resolution and 25 times more sensitivity than ground - based observatories . +The Discovery astronauts were permitted to return to Earth . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D099.M.100.E.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D099.M.100.E.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..8fbb9be87d1f6e06f1ebaf3b05400d03824545c3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D099.M.100.E.26.spl @@ -0,0 +1,5 @@ +-LRB- 02/20/1987 -RRB- Marathons have had corporate backing for some time . +-LRB- 06/19/1991 -RRB- The women 's field for on 06/23/1991 's San Francisco Marathon appears mighty impressive to race President Rich Nichols , who did n't have to do much coaxing to get the highly ranked women to enter . +; -LRB- 06/19/1991 -RRB- Most top-ranked U.S. women are looking for any summer-time marathon in which to run and the San Francisco version offers excellent conditions . +; -LRB- 06/19/1991 -RRB- The hills of San Francisco make this marathon challenging . +-LRB- 08/08/1992 -RRB- Run in high heat , high humidity , high pollution levels and over an extraordinary course , the Barcelona Olympic men 's marathon will prove one of the most physically demanding ever run . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D099.M.100.E.D.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D099.M.100.E.D.spl new file mode 100644 index 0000000000000000000000000000000000000000..840e2a91c7d6ead827c3c90e1dda4fca522bc5d5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D099.M.100.E.D.spl @@ -0,0 +1,6 @@ +Marathons attract both professional athletes as well as amateur runners . +Some marathons , such as Los Angeles ' , concentrate on the commercial and moneymaking side of marathons , while other cities such as New York , Boston and San Francisco attract world-class runners . +Still others , such as the Marine Corps marathon which bills itself as the '' people 's race , '' are just for the sport . +Tour companies sponsor international trips organized around marathons , offering clients a chance to run in some of the most popular marathons in the world . +Age is no barrier to marathon running . +John Kelley , 83 , plans to run in the Boston marathon . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D100.M.100.E.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D100.M.100.E.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..154b93371720838fc1da954c3f11b3d87c5091f2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D100.M.100.E.26.spl @@ -0,0 +1,5 @@ +-LRB- 08/08/1988 -RRB- John Lennon , singer-songwriter ; wrote the song ` ` Imagine ' ' in 1969 or ' 70. . +-LRB- 09/15/1988 -RRB- A biography that portrays John Lennon as a drug-addled , anorexic bisexual who raged his way from Liverpool to New York City is ` ` totally fiction , ' ' Yoko Ono said in a national radio broadcast . +-LRB- 09/15/1988 -RRB- As for Ono , Goldman shows her as a gold-digger who snorted heroin up to the time of Lennon 's death . +-LRB- 09/15/1988 -RRB- Ono refuted virtually all of these charges , and countered through taped interviews with Lennon friends and employees that Goldman 's book was based on unreliable sources and misquotes . +-LRB- 05/05/1990 -RRB- Tickets were $ 41 for the charity benefit concert , which featured a program of Beatles and Lennon songs . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D100.M.100.E.F.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D100.M.100.E.F.spl new file mode 100644 index 0000000000000000000000000000000000000000..50c7e688edeca166fae61b009c0cc053789e8b0b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D100.M.100.E.F.spl @@ -0,0 +1,6 @@ +John Lennon was celebrated in life and death for his music and commitment to world peace . +He had detractors , namely a celebrity biographer in The Lives of John Lennon . +His widow , Yoko Ono , former wife , and sons refuted the alleged misdeeds contained in that book . +On the 50th anniversary of his birth , his song '' Imagine '' was broadcast worldwide to an audience of one billion people . +On the tenth anniversary of his murder , admirers gathered in Liverpool and other locations around the world to pay homage . +Ono has kept his memory alive but many believe she does so for mercenary reasons . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D101.M.100.E.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D101.M.100.E.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..1207d7df800ad7e47b51b085f0f24c62f00c5ebc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D101.M.100.E.26.spl @@ -0,0 +1,3 @@ +-LRB- 08/22/1991 -RRB- Earlier , he told reporters he would have killed himself rather than submit to any forced arrangement with the coup leaders . +-LRB- 08/23/1991 -RRB- Mikhail Gorbachev and Boris Yeltsin launched a sweeping purge on 08/23/1991 that dealt a series of stunning blows to the Communist Party power structure , including the ouster of top officials , the sealing of party headquarters and the curtailing of party activities . +; -LRB- 08/23/1991 -RRB- Yeltsin , who had led the nationwide resistance to the coup , announced a ban on Communist Party activities in the Russian republic , the army , police units of the Interior Ministry and the KGB , which for decades helped enforce Communist rule . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D101.M.100.E.G.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D101.M.100.E.G.spl new file mode 100644 index 0000000000000000000000000000000000000000..697dd45b7e6fb628491e1a5e71d6f51d337fa4ed --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D101.M.100.E.G.spl @@ -0,0 +1,4 @@ +Soviet President Mikhail Gorbachev returned to power as the coup against him collapsed , unraveling swiftly as junta was unable to cope with thousands of people who created barricades around the Russian Parliament , Russian President Yeltsin 's stronghold . +The national legislature demanded Gorbachev 's reinstatement and the Communist Party , seeking to salvage its image , denounced the takeover . +The real issue for the coup failure was not Gorbachev but the new political culture of democracy he initiated . +At first Gorbachev and Yeltsin appeared as equals but Yeltsin , who challenged the Communist Party and stayed close to the Russian people , trumped Gorbachev . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D102.M.100.E.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D102.M.100.E.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..ce3e9792377fe8ce218e4793cf894f2662c82477 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D102.M.100.E.26.spl @@ -0,0 +1,4 @@ +-LRB- 04/26/1989 -RRB- Lucille Ball , a gifted comedienne who brought laughter to millions . +-LRB- 04/26/1989 -RRB- Lucille Ball , the leggy showgirl , model and B-grade movie queen whose pumpkin-colored hair and genius for comedy made her an icon of television 's early years , died early on 04/26/1989 , a week after undergoing emergency heart surgery . +-LRB- 04/26/1989 -RRB- Miss Ball , who had a heart attack and had throat surgery in 1988 , underwent surgery at Cedars-Sinai on April 18 to replace her aorta and aortic valve and had been getting out of bed , eating and even walking around the room in recent days . +-LRB- 04/27/1989 -RRB- A private burial was planned , reportedly with no funeral services in accordance with Miss Ball 's wishes . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D102.M.100.E.D.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D102.M.100.E.D.spl new file mode 100644 index 0000000000000000000000000000000000000000..538436477393cad3a268a14a03d2d827fc11c0ea --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D102.M.100.E.D.spl @@ -0,0 +1,6 @@ +Lucille Ball , who died in April 1989 at the age of 77 , will long be remembered . +She made her craft look easy , spontaneous and unrehearsed . +The result was the durable and probably the finest series in television , '' I Love Lucy '' . +She starred in the show along with her husband Desi Arnaz , and together they founded Desilu Productions , which eventually took over RKO Studios and television and produced many popular television shows . +The couple had two children and divorced in 1960 . +Condolences poured in form all over the country in which she was credited with helping to establish television as the nation 's leading entertainment industry . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D103.M.100.G.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D103.M.100.G.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..bb959149da5e1e1691d29755dacd23446d39abb3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D103.M.100.G.26.spl @@ -0,0 +1,5 @@ +-LRB- 06/22/1990 -RRB- The earthquake that struck northern Iran brought reminders of another quake that devastated Soviet Armenia in 1988 . +-LRB- 06/22/1990 -RRB- The Armenian quake was measured at 6.9 on the Richter scale , but on 06/21/1990 's earthquake shook the earth with a magnitude of 7.7 according to the U.S. Geological Survey . +-LRB- 06/25/1990 -RRB- The estimated 50,000 dead in the Iran earthquake make it the world 's fourth deadliest quake in the past half-century . +-LRB- 06/25/1990 -RRB- Iran , Sept. 16 , 1978 , 7.7 , 25,000 . +-LRB- 06/26/1990 -RRB- Writer Salman Rushdie , who has been sentenced to die by Iranian zealots , has donated $ 8,600 to victims of last week 's devastating earthquake in Iran . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D103.M.100.G.A.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D103.M.100.G.A.spl new file mode 100644 index 0000000000000000000000000000000000000000..79f96f2b81ba37c9bdf8a42c033f7344709ed6af --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D103.M.100.G.A.spl @@ -0,0 +1,5 @@ +An earthquake of magnitude 7.7 hit northwestern Iran on June 21 , 1990 killing at least 50,000 people and leaving 400,000 homeless . +The quake occurred when most people were inside asleep and hit a coastal floodplain where loosely deposited soil shifts easily and caused the fragile adobe homes in the area to collapse . +The Iranian president appealed for international aid and the response was overwhelming , both from countries friendly to Iran 's Islamic government and from those hostile . +Assistance from the United States was the first such since the hostage crisis of 1979-80 . +Their respective critics blamed the U.S. and Iranian governments for the high death toll . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D104.M.100.G.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D104.M.100.G.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..4f9f014a9ce1394b08597e6b1bd86e7aa8df5594 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D104.M.100.G.26.spl @@ -0,0 +1,4 @@ +-LRB- 06/03/1989 -RRB- Beijing University students put up posters praising him and indirectly criticizing opponents who forced his resignation after student demonstrations in 1986-87 . +-LRB- 06/03/1989 -RRB- April 30 _ Beijing 's Communist Party chief , Zhao Ziyang , meets with student representatives . +-LRB- 06/03/1989 -RRB- Dawn broke on 06/04/1989 over a battle-scarred Tiananmen Square with tanks and rifle-toting troops ruling the vast expanse occupied the day before by students seeking a freer society from their communist rulers . +-LRB- 06/03/1989 -RRB- The battle for Tiananmen was primarily fought in the streets leading to the square , where scores of people fell trying to prevent columns of troops and armored military vehicles from moving on the students . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D104.M.100.G.C.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D104.M.100.G.C.spl new file mode 100644 index 0000000000000000000000000000000000000000..f33e11a3f5828083d80bbde6889cc2c77bc2e380 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D104.M.100.G.C.spl @@ -0,0 +1,6 @@ +Firing indiscriminately on the crowds as they advanced , Chinese troops broke through barricades of reform-minded protesters late on 3 June1989 and reached Tiananmen Square after being rebuffed in earlier attempts . +Early the next day they routed the surviving demonstrators who fled the square that had occupied for three weeks in defiance of government orders . +Thousands died in the two days of violence . +The bloody weekend was the climax of trouble that had escalated since April . +Later demonstrations in other large Chinese cities protested the Beijing slaughter . +The United States suspended all military sales to China . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D105.M.100.G.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D105.M.100.G.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..5a3ac56a453125c7157425c2f4074caa9852d52e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D105.M.100.G.26.spl @@ -0,0 +1,3 @@ +-LRB- 12/30/1990 -RRB- Gorbachev also gave the republic 10 days to dissolve a new national guard and to come up with measures guaranteeing equal rights for all ethnic groups within its borders . +-LRB- 07/15/1992 -RRB- RUSSIA and Georgia on 07/14/1992 deployed ' blue helmet ' troops to stop ethnic fighting in the disputed region of South Ossetia in the first peace-keeping operation since the collapse of the Soviet Union , Reuter reports from Moscow . +-LRB- 12/14/1993 -RRB- The international community is starting to look beyond the conflict in the former Yugoslavia , and is becoming increasingly aware of the true magnitude and seriousness of ethnic and political conflicts in the former Soviet Union . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D105.M.100.G.C.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D105.M.100.G.C.spl new file mode 100644 index 0000000000000000000000000000000000000000..a2bf88f241c318998e020b371e57df5fa4f274e2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D105.M.100.G.C.spl @@ -0,0 +1,7 @@ +Ethnic unrest erupted in the last years of the Soviet Union . +The Kremlin dispatched troops to check the violence generated by some of the USSR 's more than 100 ethnic groups . +The ethnic unrest proliferated after the Soviet Union 's demise . +Serious ethnic-driven fighting occurred in Armenia , Azerbaijan , Georgia , Khirghizia , Kazakhstan , Uzbekistan , Tajikistan and Moldavia , One hundred thousand were killed in Tajikistan . +In late 1992 Russia sent troops to the Caucasus and Tajikistan . +The international community feared the destabilization of the former Soviet Union . +In 1944 there was a call for a restored Soviet Union To deal with ethnicity . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D106.M.100.G.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D106.M.100.G.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..9ea23a2aff474f787c3f6ab9f2e10d4dfda075c2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D106.M.100.G.26.spl @@ -0,0 +1,6 @@ +-LRB- 05/08/1988 -RRB- Nelson Mandela , an .. . attorney and an activist who worked against apartheid . +-LRB- 11/13/1988 -RRB- A representative of the African National Congress said on 11/12/1988 the South African government may release black nationalist leader Nelson Mandela as early as on 11/12/1988 . +-LRB- 11/13/1988 -RRB- Mandela the 70-year-old leader of the ANC jailed 27 years ago , was sentenced to life in prison for conspiring to overthrow the South African government . +-LRB- 02/11/1990 -RRB- From behind bars , Nelson Mandela has dominated the fight for black rights in South Africa . +-LRB- 02/11/1990 -RRB- Mandela joins the African National Congress at age 26 , later becoming president of the group 's Youth League . +-LRB- 02/11/1990 -RRB- Mandela is named leader of the campaign and breaks curfew as the first act of defiance . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D106.M.100.G.F.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D106.M.100.G.F.spl new file mode 100644 index 0000000000000000000000000000000000000000..9204c8d6237507b34a3428b4bd2fb8d186153889 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D106.M.100.G.F.spl @@ -0,0 +1,6 @@ +Nelson Mandela , a leader in the African National Congress ' opposition to South Africa 's policy of apartheid , spent nearly 27 years in prison . +He was sentenced to life in prison in 1964 for conspiring to overthrow the government . +He became a rallying point for nations that were pressuring South Africa to end its all-white government . +World leaders hailed Mandela 's release in 1990 , and he was welcomed as a hero when he traveled , including a visit to New York City . +In-fighting among black elements complicated Mandela 's role in negotiations to end white-minority rule in South Africa . +Also , Mandela 's wife , Winnie , was imprisoned , complicating matters . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D107.M.100.G.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D107.M.100.G.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..070a29e94a3e3557be3819c6ff33d7d8ea9aaf89 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D107.M.100.G.26.spl @@ -0,0 +1,3 @@ +-LRB- 07/11/1988 -RRB- The crippling drought hitting North America is expected to reduce world grain stocks to levels that may cause food shortages in many poor countries , the U.N. Food and Agriculture Organization reported on 07/11/1988 . +-LRB- 07/11/1988 -RRB- If the drought in the United States ended now , grain production would fall close to the low levels of 1983 , when a drought and farmers ' participation in a government crop reduction program decreased output , the agency reported . +-LRB- 07/16/1988 -RRB- Georgia 's carpet industry may be forced to reduce production and lay off workers if the drought continues for an extended period , industry officials said . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D107.M.100.G.H.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D107.M.100.G.H.spl new file mode 100644 index 0000000000000000000000000000000000000000..05ae9a7399a84771863d65cb20d5c176c2fedf44 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D107.M.100.G.H.spl @@ -0,0 +1,15 @@ +In mid-July , 1988 's drought looked record-breaking . +Further drought was predicted based on past records . +Severe storms brought tornadoes , hail damage , and lightning-sparked fires . +States issued heat alerts . +Weather experts who attended a Drought Symposium urged continued attention to climate and greenhouse-effect reduction . +Crop declines were forecast and grain futures fell . +Adequate domestic and export supplies were expected . +UPS , railroads , and truckers transported hay for free . +Federal aid , state loans to farmers , and eased future crop controls were proposed . +Reagan visited drought areas . +Farmers sued reneging insurers . +Drinking water was hauled in and dam flows reduced . +Livestock sales increased . +Cannery , mill , and logging jobs fell . +Highway projects were accelerated . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D108.M.100.G.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D108.M.100.G.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..23f41cc67151783fa0841c68129014ab12458b55 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D108.M.100.G.26.spl @@ -0,0 +1,5 @@ +-LRB- 08/02/1990 -RRB- _ Mohammad Abulhasan , Kuwait 's ambassador to the United Nations . +-LRB- 08/02/1990 -RRB- THE INVASION : Iraq 's troops , led by about 350 tanks , crossed the border at dawn on 08/02/1990 , and seized the Kuwaiti palace and government buildings 40 miles away . +-LRB- 08/02/1990 -RRB- Kuwait 's Sheik Saad al-Abdullah al-Sabah fled to safety in Saudi Arabia . +-LRB- 08/03/1990 -RRB- Here is a brief chronology in the dispute between Iraq and Kuwait over oil production and their common border . +-LRB- 08/03/1990 -RRB- July 17 _ Iraqi President Saddam Hussein accuses Kuwait and the United Arab Emirates of flooding the oil market and driving prices down , and that the move cost Iraq $ 14 billion in lost oil revenue . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D108.M.100.G.I.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D108.M.100.G.I.spl new file mode 100644 index 0000000000000000000000000000000000000000..d86a12f613f2194cd244658a275f779dc16b712f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D108.M.100.G.I.spl @@ -0,0 +1,7 @@ +After two weeks of accusations and maneuvering , Iraq invaded tiny Kuwait on August 2 with 100,000 battle-trained troops , quickly taking the country . +While the Kuwaiti emir and refugees fled to Saudi Arabia , Iraq began rounding up foreign nationals and repopulating the nation with Iraqi citizens . +Some foreigners were taken to Iraq , while some were flown to Jordan . +Reactions to the invasion have been strong . +The United Nations Security Council unanimously passed trade and military sanctions and President Bush said he would defend U.S. interests . +Iran rejoiced . +Most nations are strongly enforcing these sanctions as oil prices soar and Iraq begins defensive preparations . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D109.M.100.H.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D109.M.100.H.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..b1e5c8a32d08a89913ab977f5592ccf0fac1b02f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D109.M.100.H.26.spl @@ -0,0 +1,5 @@ +-LRB- 06/19/1994 -RRB- This capital of central China 's Hunan province has been hit by floods in the wake of a succession of rainstorms on the upper and middle reaches of the Xiangjiang River . +-LRB- 06/19/1994 -RRB- The flood has caused serious losses to people along both banks of the river , especially in Changsha , according to the sources . +-LRB- 06/19/1994 -RRB- Most of the 15,000 people affected by the flood there have been evacuated to safer places . +-LRB- 06/22/1994 -RRB- Flood lasting for ten or more days in Fujian Province has brought about heavy losses in agriculture there . +-LRB- 06/22/1994 -RRB- Of these , Sanming City is worst hit by the flood . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D109.M.100.H.B.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D109.M.100.H.B.spl new file mode 100644 index 0000000000000000000000000000000000000000..2efbbac1543123ab5b1995add5762b6cd606c0f4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D109.M.100.H.B.spl @@ -0,0 +1,5 @@ +Floods being called the worst in 100 years have hit major parts of Guangdong , Guangxi , Hunan , Jiangxi , Fujian and Zhejiang Provinces . +They were caused by torrential rains in the Xiangjiang , Xunjiang , Xijiang and Beijiang river valleys . +Cities most seriously affected where Changsha , Zhuzhou and Xiangtan in Hunan Province , Wuzhou in Guangxi Province and Sanming in Fujian Province . +Central Party official Wen Jiabao visited Changsha , Zhuzhou , Xiangtan and Jiangxi cities to offer appreciation , encouragement and guidance for the ongoing flood fighting and relief work , and to direct the resumption of industrial and agricultural production . +He emphasized measures to salvage the rice crop . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D110.M.100.H.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D110.M.100.H.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..6791afa9acd8eafe84f28db38ef03a56f2278e1a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D110.M.100.H.26.spl @@ -0,0 +1,4 @@ +-LRB- 08/02/1990 -RRB- The U.N. Security Council on 08/02/1990 swiftly condemned Iraq 's invasion of Kuwait , demanding an unconditional withdrawal of Iraqi troops and calling for immediate negotiations between the countries . +-LRB- 08/02/1990 -RRB- THE INVASION : Iraq 's troops , led by about 350 tanks , crossed the border at dawn on 08/02/1990 , and seized the Kuwaiti palace and government buildings 40 miles away . +-LRB- 08/02/1990 -RRB- CAUSE OF CONFLICT : President Saddam Hussein of Iraq accused Kuwait of stealing oil from its territory and forcing down oil prices through overproduction . +-LRB- 08/04/1990 -RRB- Saudi Arabia has been subdued in its reaction to Iraq 's invasion of Kuwait , which places Iraqi forces near the oil-rich kingdom 's border . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D110.M.100.H.C.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D110.M.100.H.C.spl new file mode 100644 index 0000000000000000000000000000000000000000..fc7d7ca68e735b2e3e4b1e0c7be07f0fbdff3cd9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D110.M.100.H.C.spl @@ -0,0 +1,9 @@ +Iraq 's powerful army met little resistance when it invaded Kuwait on 2 August 1990 . +The invasion came as no surprise . +Iraqi President Hussein had accused Kuwait of stealing oil from a border area , and exceeding OPEC production goals . +The United Nations Security Council voted on 6 August to impose trade and military sanctions on Iraq . +Some major oil importers had already embargoed Iraqi oil . +Oil prices soared . +The United States moved an aircraft carrier into the Arabian Sea . +Iraq warned its people of a possible United States attack . +President Bush only said that all options were open . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D111.M.100.H.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D111.M.100.H.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..f25cf81cfb22938b94249a35eeaaa6b3f3f4d195 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D111.M.100.H.26.spl @@ -0,0 +1,3 @@ +-LRB- 05/21/1988 -RRB- Greek divers have plunged 162 feet beneath the Aegean Sea and back into history , finding a treasure-laden Turkish warship sunk by Greek revolutionaries in 1822 . +-LRB- 05/21/1988 -RRB- The remains of the wooden sailing ship were found near the island of Chios in the eastern Aegean at a point where historical accounts place the sinking of the Ottoman ship , according to Peter Nicolaides , a diver and salvage expert . +-LRB- 01/25/1989 -RRB- Leopold Gratz , the president of Parliament and one of the most powerful politicians in the Socialist Party , resigned on 01/25/1989 over a scandal surrounding the mysterious sinking of ship 12 years ago . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D111.M.100.H.C.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D111.M.100.H.C.spl new file mode 100644 index 0000000000000000000000000000000000000000..2ac584cb7b01b5a50c165565d7f6d7eed05d8013 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D111.M.100.H.C.spl @@ -0,0 +1,9 @@ +Freighters sank off Cape Cod in 1989 , and in the North Sea in 1988 . +A 1989 Austrian scandal grew out of the 1977 sinking of the Lucona . +In 1989 an Argentine supply ship sank in Antarctica . +In 1994 a Korean fishing vessel was scuttled while fishing illegally near Argentina . +The Ostwind , once Hitler 's yacht , was purposely sunk off Florida . +An American pleasure boat was sunk by aggressive whales . +In 1994 the ferry Estonia sank with 800 aboard . +The German battleship Bismarck , scuttled in 1989 , was located in 1989 . +A Turkish vessel , sunk in 1822 , was found in 1988 . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D112.M.100.H.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D112.M.100.H.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..6f74edf0a7c948dbd56665648c33f6a0a5e9bdd5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D112.M.100.H.26.spl @@ -0,0 +1,2 @@ +-LRB- 12/11/1991 -RRB- Kevin Maxwell also was quoted as saying that much of the criticism calling his father a crook is fair and that there 's '' not the remotest possibility '' his father 's death a month ago was a suicide . +-LRB- 12/11/1991 -RRB- In an interview published on 12/11/1991 by the Daily Mirror , Robert Maxwell 's London flagship newspaper , Kevin Maxwell was quoted as saying of the pensioners : ; -LRB- 05/03/1994 -RRB- Two writs have been filed alleging that Goldman Sachs , the US - based investment bank , assisted in diverting Pounds 55m from two pension schemes controlled by Robert Maxwell to ensure its own debts from Maxwell interests would be repaid . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D112.M.100.H.E.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D112.M.100.H.E.spl new file mode 100644 index 0000000000000000000000000000000000000000..b64a4c2b8f2a5b4354d6c2934b2b501f30bfae54 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D112.M.100.H.E.spl @@ -0,0 +1,4 @@ +Economic confusion surrounds the mysterious death of publishing magnate Robert Maxwell . +Maxwell , who put together a publishing empire following his immigration to Britain in 1940 , was found dead off the coast of the Canary Islands after apparently having fallen overboard from his yacht . +There are allegations that Maxwell , along with two of his sons , Kevin and Ian , and a senior executive in several Maxwell corporations , Michael Stoney , were involved in the illegal transfer of funds to help his publishing empire fend off debt . +The scheme used Swiss trusts and a number of institutions , including the U.S. investment bank , Goldman Sachs . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D113.M.100.H.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D113.M.100.H.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..3ba326ad4a165fd9da4c2695513b21eb16efe3ca --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D113.M.100.H.26.spl @@ -0,0 +1,3 @@ +-LRB- 03/12/1993 -RRB- A ROW has erupted between the Bombay stock exchange , India 's largest stock market , and the Securities and Exchange Board of India , the securities watchdog , over the board 's recent first-ever inspection of stockbrokers ' books . +-LRB- 03/13/1993 -RRB- Among the targets were the Bombay Stock Exchange , the landmark Air India building , a shopping complex , and two hotels near the airport . +-LRB- 03/17/1993 -RRB- The identity of the bombers was unknown but the explosion comes just five days after over 250 people were killed and at least 1,200 injured in a series of bomb attacks aimed at the heart of the Indian business capital of Bombay . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D113.M.100.H.I.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D113.M.100.H.I.spl new file mode 100644 index 0000000000000000000000000000000000000000..59f9b9fe10bb547edac808ee35879a7056b2238d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D113.M.100.H.I.spl @@ -0,0 +1,6 @@ +The Bombay Stock Exchange -LRB- BSE -RRB- remains open following a week of onslaught . +First the Securities and Exchange Board of India accused the market of ignoring and failing to enforce rules . +The Indian market already had fallen 48 percent since early last year , aggravated by a negative reaction to the Indian budget . +On Friday afternoon , India 's commercial heart , including the BSE , was hit with car bombs . +While a militant Sikh group claimed responsibility , Indian officials still suspect Moslem extremists seeking a return of communal strife . +The BSE was able to resume limited trading , but a slight rise was halted by an explosion Wednesday in Calcutta . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D114.M.100.H.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D114.M.100.H.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..ba2168d4417e2e61ceae0064c02c715659b5025c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D114.M.100.H.26.spl @@ -0,0 +1,5 @@ +-LRB- 01/21/1990 -RRB- Troops battled mobs of Moslem separatists in the Kashmir city of Srinagar over the weekend , and at least 21 people were killed and 100 wounded before the fighting subsided on 01/21/1990 night , police said . +-LRB- 03/07/1990 -RRB- There were no casualties , he said . +-LRB- 03/24/1990 -RRB- Srinagar has been a focal point of the fighting between government troops and separatists . +-LRB- 06/25/1990 -RRB- The bodies of four Moslems were found in a Kashmir town on 06/25/1990 , five days after they were kidnapped by Moslem militants agitating for secession from India . +-LRB- 06/25/1990 -RRB- The Hezbul Mujahedeen is one of more than a dozen Moslem organizations fighting for independence of the Kashmir valley from India . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D114.M.100.H.F.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D114.M.100.H.F.spl new file mode 100644 index 0000000000000000000000000000000000000000..aa848be91d8b046f6e33b5e91dee8e1c3d8ffafa --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D114.M.100.H.F.spl @@ -0,0 +1,6 @@ +India and Pakistan have feuded over Jammu-Kashmir since the subcontinent was divided in 1947 . +It is India 's only predominately Moslem state with 64 % of its five million people Moslem . +Moslem separatists began a campaign of violence in Jammu-Kashmir hoping initially to lead to union with Pakistan but later for independence . +Indian authorities began a crackdown in January 1990 , and by summer , over a thousand people died . +India accused Pakistan of arming and training the insurgents , a charge Pakistan denied . +Despite incidences of soldiers firing across cease-fire lines , the two countries said the situation was local and not serious . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D115.M.100.I.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D115.M.100.I.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..ffde48d9f15e8b558195b4d5faf526ac664833ed --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D115.M.100.I.26.spl @@ -0,0 +1,5 @@ +-LRB- 08/21/1988 -RRB- A strong earthquake triggered landslides and destroyed houses in the mountainous India-Nepal border region early on 08/21/1988 , killing at least 237 people and injuring more than 1,500 , officials and news reports said . +-LRB- 08/22/1988 -RRB- Rescuers searched through debris on 08/22/1988 for victims of an earthquake that ravaged one-third of this country 's territory and parts of India , killing at least 650 people and injuring thousands . +-LRB- 08/22/1988 -RRB- The quake , centered almost on the India-Nepal border , registered 6.5 on the Richter scale . +-LRB- 08/23/1988 -RRB- Rumors predicting another large quake sent thousands of panic-stricken people fleeing from their homes in India and Nepal . +-LRB- 08/26/1988 -RRB- In India , the official count rose to 277 . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D115.M.100.I.B.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D115.M.100.I.B.spl new file mode 100644 index 0000000000000000000000000000000000000000..833eea52d5a8d09e0b8a666085c6c576d6a872c5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D115.M.100.I.B.spl @@ -0,0 +1,6 @@ +The deadliest earthquake in this region since 1950 , hit near the Nepal-India border killing at least 750 people and injuring thousands . +The magnitude 6.5 quake , with its epicenter about 100 miles southeast of Katmandu , Nepal , was felt as far away as New Delhi and Calcutta . +The hardest hit areas were Bihar state in India and the Dharan district of Nepal . +Aftershocks kept people terrified for days . +Earthquake damage and monsoon rains have paralyzed rail and road transportation thus hindering rescue efforts and isolating some remote areas . +In Nepal police bulldozed more than 50 houses considered too unsafe to be habitable . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D116.M.100.I.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D116.M.100.I.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..f932996f156164ccebbdcbc29af543bea20997e8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D116.M.100.I.26.spl @@ -0,0 +1,4 @@ +-LRB- 04/22/1990 -RRB- Discovery 's five astronauts returned on 04/22/1990 for a second attempt to launch the shuttle with NASA 's most valuable and celebrated payload , the $ 1.5 billion Hubble Space Telescope . +-LRB- 04/24/1990 -RRB- Five astronauts boarded Discovery on 04/24/1990 for a second try at sending the Hubble Space Telescope into orbit to scan the outermost reaches of the universe for clues to the beginning of time . +-LRB- 04/25/1990 -RRB- The Discovery astronauts triumphantly launched the $ 1.5 - billion Hubble Space Telescope one orbit late on 04/25/1990 after last-ditch commands from Earth freed a stuck solar panel , narrowly averting a daring emergency spacewalk . +-LRB- 04/26/1990 -RRB- Space shuttle Discovery was 46 miles away , available to remedy certain problems . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D116.M.100.I.B.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D116.M.100.I.B.spl new file mode 100644 index 0000000000000000000000000000000000000000..09053d8b84501cb5ea33e0bb1e32d82ca3a48eb2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D116.M.100.I.B.spl @@ -0,0 +1,5 @@ +The shuttle Discovery soared into space to launch its history-making payload , the $ 1.5 billion Hubble Space Telescope . +While orbiting at 380 statute miles above Earth , it will provide astronomers worldwide with 10 times better resolution and 25 times more sensitivity than ground - based observatories . +The telescope 's release from the shuttle Discovery was delayed because a solar power panel took three tries before it fully unfurled . +Once released , ground controllers were unable to link up the telescope 's two high-gain antennas with their assigned relay satellite . +However , scientists , optimistic that the Hubble will soon be operational , authorized the shuttle Discovery crew to return home . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D117.M.100.I.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D117.M.100.I.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..10480a9407f77c6d64cc3dedca6515e351be0595 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D117.M.100.I.26.spl @@ -0,0 +1,3 @@ +-LRB- 10/08/1990 -RRB- The Booker Prize is Britain 's literary event of the year , guaranteed to boost sales of the chosen novel after the award announcement Oct. 16 , and dinner in London 's ancient Guildhall . +-LRB- 09/06/1994 -RRB- The shortlist of six for the Pounds 20,000 Booker Prize for fiction , announced on 09/05/1994 , immediately prompted the question ' Who ? ' from many in the publishing industry . +-LRB- 09/06/1994 -RRB- The shortlist for the Booker , the UK 's most hyped literary prize and one of the most lucrative , is all the more surprising in a bumper year for new fiction fulfilling the criteria - English language and non-American - for consideration for the award . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D117.M.100.I.G.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D117.M.100.I.G.spl new file mode 100644 index 0000000000000000000000000000000000000000..2ba569e4e9dc26554a8bd2a937fef425ba452414 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D117.M.100.I.G.spl @@ -0,0 +1,6 @@ +Britain 's Booker Prize for fiction novels is similar to America 's Pulitzer Prize and National Book awards but more excitement is associated with it . +British publishers each submit three new titles . +The total of around 100 books is narrowed down to a final six by a panel of learned judges after they have read all the novels . +Odds are given with reviews , and literary insiders bet on which book will win the prize . +The winner is announced at a yearly banquet . +The Prize is administered by Book Trust , an educational charity , and sponsored by Booker , an international food and farming business . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D118.M.100.I.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D118.M.100.I.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..74bb4debdaa3362fc3a90c97bb204d96e42b378b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D118.M.100.I.26.spl @@ -0,0 +1,3 @@ +-LRB- 02/11/1989 -RRB- Defense Secretary-designate John Tower contradicted an earlier sworn statement when he told the Senate his work for a British firm involved no military matters , according to reports published on 02/11/1989 . +-LRB- 02/11/1989 -RRB- The Senate Armed Services Committee has put the nomination of Tower , a former Texas senator and onetime chairman of the committee , on hold while it takes a second look at Tower 's personal habits , including his use of alcohol , and his links to defense contractors . +-LRB- 03/09/1989 -RRB- The Senate 's 53 - 47 vote came after a bitter and divisive debate focused on Tower 's drinking habits , behavior toward women and his business dealings with defense contractors . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D118.M.100.I.E.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D118.M.100.I.E.spl new file mode 100644 index 0000000000000000000000000000000000000000..d6a94b78094acb26a55a59cf45a802506e7b5142 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D118.M.100.I.E.spl @@ -0,0 +1,5 @@ +Former Texas Senator John Tower and his daughter were killed in the crash of a commuter plane on Sea Island , off the coast of Georgia . +Senator Tower had been President Bush 's nominee for Secretary of defense , but the nomination was rejected by the Senate on the recommendation of the Senate Armed Services Committee . +This was only the ninth time in history that a cabinet nominee has been rejected . +The committee recommended rejection after hearing allegations about Tower 's use of alcohol and his inappropriate behavior towards women . +The committee also questioned his dealings with defense contractors after Tower gave contradictory testimony . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D119.M.100.I.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D119.M.100.I.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..c01d73a766eec7ef14a73e1190b43bea1889514b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D119.M.100.I.26.spl @@ -0,0 +1,5 @@ +-LRB- 05/17/1989 -RRB- But Pell said he was unpersuaded . +-LRB- 05/10/1990 -RRB- The Bush administration is expected to name career diplomat Harry Shlaudeman as the first U.S. ambassador to Nicaragua in almost two years , a U.S. official says . +-LRB- 05/10/1990 -RRB- The United States has had no ambassador to Nicaragua since July 1988 . +-LRB- 05/10/1990 -RRB- Shlaudeman , who has served as ambassador to Argentina , Peru , Brazil and Venezuela , is a premier State Department specialist on Latin America and is expected to win easy Senate confirmation . +-LRB- 02/03/1992 -RRB- President Bush plans to name United Nations Ambassador Thomas Pickering as U.S. envoy to India , and appoint the current head of the foreign service to succeed him . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D119.M.100.I.F.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D119.M.100.I.F.spl new file mode 100644 index 0000000000000000000000000000000000000000..7739cd6eb057c277d2d1cfbd5eda551faf32ce3f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D119.M.100.I.F.spl @@ -0,0 +1,5 @@ +Some of President Bush 's nominees for ambassadorships have been selected as a reward for large money contributions to the Republican Party , according to Democratic senators , and some retired diplomats consider a few not to be qualified . +These nominees faced strong questioning from the Democrats during committee hearings but did manage to get a slim approval from the committee . +Conservative senators objected to two of Bush 's selections . +Most of the president 's picks won easy approval . +Two of Bush 's picks received highly favorable reaction : a Latin American expert for ambassador to Nicaragua , and the naming of Thomas Pickering , a well-known diplomat , to India . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D120.M.100.I.26.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D120.M.100.I.26.spl new file mode 100644 index 0000000000000000000000000000000000000000..a589105795f6ce0c900f18d7df410588e10f7b04 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D120.M.100.I.26.spl @@ -0,0 +1,4 @@ +-LRB- 11/27/1990 -RRB- John Major , who was endorsed by Prime Minister Margaret Thatcher as her successor and heir , was elected on 11/27/1990 as leader of the Conservative Party and will become prime minister . +-LRB- 11/28/1990 -RRB- John Major , the 47-year-old chancellor of the exchequer who rose out of one of London 's toughest neighborhoods and the unemployment line , was selected on 11/27/1990 as Britain 's next prime minister . +-LRB- 11/28/1990 -RRB- Major , whose father was once a circus trapeze artist , was elected leader of the Conservative Party to replace Margaret Thatcher , whose sudden resignation under pressure last week surprised the nation . +-LRB- 05/28/1994 -RRB- No wonder the Majors liked this film . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D120.M.100.I.J.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D120.M.100.I.J.spl new file mode 100644 index 0000000000000000000000000000000000000000..05d8517a6b71c88833d14ade0ec62cc363da2481 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/DUC2002/docs-spl/D120.M.100.I.J.spl @@ -0,0 +1,5 @@ +On Easter Sunday , three Cabinet ministers issued statements on behalf of Prime Minister John Major amidst speculation that he could be forced out this autumn . +In May local elections across Britain , however , the Conservatives loss 444 seats , and word circulated that Major was not up to the job . +Major became leader of the Conservative Party and Prime Minister after his mentor , Margaret Thatcher resigned under pressure in 1990 . +Though he won the 1992 general election , the lingering recession and controversies involving European community issues splintered the Tories . +He came to be viewed as a weak , vacillating leader , lacking political conviction . diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/ROUGE-test.xml b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/ROUGE-test.xml new file mode 100644 index 0000000000000000000000000000000000000000..3a4647669352fafc0b1e5c011330a658f5df98b3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/ROUGE-test.xml @@ -0,0 +1,652 @@ + + + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-01.html

+

SL.P.10.R.12.SL062003-01.html

+

SL.P.10.R.13.SL062003-01.html

+

SL.P.10.R.14.SL062003-01.html

+

SL.P.10.R.21.SL062003-01.html

+

SL.P.10.R.22.SL062003-01.html

+

SL.P.10.R.23.SL062003-01.html

+

SL.P.10.R.24.SL062003-01.html

+
+ +SL.P.10.R.A.SL062003-01.html +SL.P.10.R.B.SL062003-01.html +SL.P.10.R.C.SL062003-01.html +SL.P.10.R.D.SL062003-01.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-02.html

+

SL.P.10.R.12.SL062003-02.html

+

SL.P.10.R.13.SL062003-02.html

+

SL.P.10.R.14.SL062003-02.html

+

SL.P.10.R.21.SL062003-02.html

+

SL.P.10.R.22.SL062003-02.html

+

SL.P.10.R.23.SL062003-02.html

+

SL.P.10.R.24.SL062003-02.html

+
+ +SL.P.10.R.A.SL062003-02.html +SL.P.10.R.B.SL062003-02.html +SL.P.10.R.C.SL062003-02.html +SL.P.10.R.D.SL062003-02.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-03.html

+

SL.P.10.R.12.SL062003-03.html

+

SL.P.10.R.13.SL062003-03.html

+

SL.P.10.R.14.SL062003-03.html

+

SL.P.10.R.21.SL062003-03.html

+

SL.P.10.R.22.SL062003-03.html

+

SL.P.10.R.23.SL062003-03.html

+

SL.P.10.R.24.SL062003-03.html

+
+ +SL.P.10.R.A.SL062003-03.html +SL.P.10.R.B.SL062003-03.html +SL.P.10.R.C.SL062003-03.html +SL.P.10.R.D.SL062003-03.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-04.html

+

SL.P.10.R.12.SL062003-04.html

+

SL.P.10.R.13.SL062003-04.html

+

SL.P.10.R.14.SL062003-04.html

+

SL.P.10.R.21.SL062003-04.html

+

SL.P.10.R.22.SL062003-04.html

+

SL.P.10.R.23.SL062003-04.html

+

SL.P.10.R.24.SL062003-04.html

+
+ +SL.P.10.R.A.SL062003-04.html +SL.P.10.R.B.SL062003-04.html +SL.P.10.R.C.SL062003-04.html +SL.P.10.R.D.SL062003-04.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-05.html

+

SL.P.10.R.12.SL062003-05.html

+

SL.P.10.R.13.SL062003-05.html

+

SL.P.10.R.14.SL062003-05.html

+

SL.P.10.R.21.SL062003-05.html

+

SL.P.10.R.22.SL062003-05.html

+

SL.P.10.R.23.SL062003-05.html

+

SL.P.10.R.24.SL062003-05.html

+
+ +SL.P.10.R.A.SL062003-05.html +SL.P.10.R.B.SL062003-05.html +SL.P.10.R.C.SL062003-05.html +SL.P.10.R.D.SL062003-05.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-06.html

+

SL.P.10.R.12.SL062003-06.html

+

SL.P.10.R.13.SL062003-06.html

+

SL.P.10.R.14.SL062003-06.html

+

SL.P.10.R.21.SL062003-06.html

+

SL.P.10.R.22.SL062003-06.html

+

SL.P.10.R.23.SL062003-06.html

+

SL.P.10.R.24.SL062003-06.html

+
+ +SL.P.10.R.A.SL062003-06.html +SL.P.10.R.B.SL062003-06.html +SL.P.10.R.C.SL062003-06.html +SL.P.10.R.D.SL062003-06.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-07.html

+

SL.P.10.R.12.SL062003-07.html

+

SL.P.10.R.13.SL062003-07.html

+

SL.P.10.R.14.SL062003-07.html

+

SL.P.10.R.21.SL062003-07.html

+

SL.P.10.R.22.SL062003-07.html

+

SL.P.10.R.23.SL062003-07.html

+

SL.P.10.R.24.SL062003-07.html

+
+ +SL.P.10.R.A.SL062003-07.html +SL.P.10.R.B.SL062003-07.html +SL.P.10.R.C.SL062003-07.html +SL.P.10.R.D.SL062003-07.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-08.html

+

SL.P.10.R.12.SL062003-08.html

+

SL.P.10.R.13.SL062003-08.html

+

SL.P.10.R.14.SL062003-08.html

+

SL.P.10.R.21.SL062003-08.html

+

SL.P.10.R.22.SL062003-08.html

+

SL.P.10.R.23.SL062003-08.html

+

SL.P.10.R.24.SL062003-08.html

+
+ +SL.P.10.R.A.SL062003-08.html +SL.P.10.R.B.SL062003-08.html +SL.P.10.R.C.SL062003-08.html +SL.P.10.R.D.SL062003-08.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-09.html

+

SL.P.10.R.12.SL062003-09.html

+

SL.P.10.R.13.SL062003-09.html

+

SL.P.10.R.14.SL062003-09.html

+

SL.P.10.R.21.SL062003-09.html

+

SL.P.10.R.22.SL062003-09.html

+

SL.P.10.R.23.SL062003-09.html

+

SL.P.10.R.24.SL062003-09.html

+
+ +SL.P.10.R.A.SL062003-09.html +SL.P.10.R.B.SL062003-09.html +SL.P.10.R.C.SL062003-09.html +SL.P.10.R.D.SL062003-09.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-10.html

+

SL.P.10.R.12.SL062003-10.html

+

SL.P.10.R.13.SL062003-10.html

+

SL.P.10.R.14.SL062003-10.html

+

SL.P.10.R.21.SL062003-10.html

+

SL.P.10.R.22.SL062003-10.html

+

SL.P.10.R.23.SL062003-10.html

+

SL.P.10.R.24.SL062003-10.html

+
+ +SL.P.10.R.A.SL062003-10.html +SL.P.10.R.B.SL062003-10.html +SL.P.10.R.C.SL062003-10.html +SL.P.10.R.D.SL062003-10.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-11.html

+

SL.P.10.R.12.SL062003-11.html

+

SL.P.10.R.13.SL062003-11.html

+

SL.P.10.R.14.SL062003-11.html

+

SL.P.10.R.21.SL062003-11.html

+

SL.P.10.R.22.SL062003-11.html

+

SL.P.10.R.23.SL062003-11.html

+

SL.P.10.R.24.SL062003-11.html

+
+ +SL.P.10.R.A.SL062003-11.html +SL.P.10.R.B.SL062003-11.html +SL.P.10.R.C.SL062003-11.html +SL.P.10.R.D.SL062003-11.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-12.html

+

SL.P.10.R.12.SL062003-12.html

+

SL.P.10.R.13.SL062003-12.html

+

SL.P.10.R.14.SL062003-12.html

+

SL.P.10.R.21.SL062003-12.html

+

SL.P.10.R.22.SL062003-12.html

+

SL.P.10.R.23.SL062003-12.html

+

SL.P.10.R.24.SL062003-12.html

+
+ +SL.P.10.R.A.SL062003-12.html +SL.P.10.R.B.SL062003-12.html +SL.P.10.R.C.SL062003-12.html +SL.P.10.R.D.SL062003-12.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-13.html

+

SL.P.10.R.12.SL062003-13.html

+

SL.P.10.R.13.SL062003-13.html

+

SL.P.10.R.14.SL062003-13.html

+

SL.P.10.R.21.SL062003-13.html

+

SL.P.10.R.22.SL062003-13.html

+

SL.P.10.R.23.SL062003-13.html

+

SL.P.10.R.24.SL062003-13.html

+
+ +SL.P.10.R.A.SL062003-13.html +SL.P.10.R.B.SL062003-13.html +SL.P.10.R.C.SL062003-13.html +SL.P.10.R.D.SL062003-13.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-14.html

+

SL.P.10.R.12.SL062003-14.html

+

SL.P.10.R.13.SL062003-14.html

+

SL.P.10.R.14.SL062003-14.html

+

SL.P.10.R.21.SL062003-14.html

+

SL.P.10.R.22.SL062003-14.html

+

SL.P.10.R.23.SL062003-14.html

+

SL.P.10.R.24.SL062003-14.html

+
+ +SL.P.10.R.A.SL062003-14.html +SL.P.10.R.B.SL062003-14.html +SL.P.10.R.C.SL062003-14.html +SL.P.10.R.D.SL062003-14.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-15.html

+

SL.P.10.R.12.SL062003-15.html

+

SL.P.10.R.13.SL062003-15.html

+

SL.P.10.R.14.SL062003-15.html

+

SL.P.10.R.21.SL062003-15.html

+

SL.P.10.R.22.SL062003-15.html

+

SL.P.10.R.23.SL062003-15.html

+

SL.P.10.R.24.SL062003-15.html

+
+ +SL.P.10.R.A.SL062003-15.html +SL.P.10.R.B.SL062003-15.html +SL.P.10.R.C.SL062003-15.html +SL.P.10.R.D.SL062003-15.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-16.html

+

SL.P.10.R.12.SL062003-16.html

+

SL.P.10.R.13.SL062003-16.html

+

SL.P.10.R.14.SL062003-16.html

+

SL.P.10.R.21.SL062003-16.html

+

SL.P.10.R.22.SL062003-16.html

+

SL.P.10.R.23.SL062003-16.html

+

SL.P.10.R.24.SL062003-16.html

+
+ +SL.P.10.R.A.SL062003-16.html +SL.P.10.R.B.SL062003-16.html +SL.P.10.R.C.SL062003-16.html +SL.P.10.R.D.SL062003-16.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-17.html

+

SL.P.10.R.12.SL062003-17.html

+

SL.P.10.R.13.SL062003-17.html

+

SL.P.10.R.14.SL062003-17.html

+

SL.P.10.R.21.SL062003-17.html

+

SL.P.10.R.22.SL062003-17.html

+

SL.P.10.R.23.SL062003-17.html

+

SL.P.10.R.24.SL062003-17.html

+
+ +SL.P.10.R.A.SL062003-17.html +SL.P.10.R.B.SL062003-17.html +SL.P.10.R.C.SL062003-17.html +SL.P.10.R.D.SL062003-17.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-18.html

+

SL.P.10.R.12.SL062003-18.html

+

SL.P.10.R.13.SL062003-18.html

+

SL.P.10.R.14.SL062003-18.html

+

SL.P.10.R.21.SL062003-18.html

+

SL.P.10.R.22.SL062003-18.html

+

SL.P.10.R.23.SL062003-18.html

+

SL.P.10.R.24.SL062003-18.html

+
+ +SL.P.10.R.A.SL062003-18.html +SL.P.10.R.B.SL062003-18.html +SL.P.10.R.C.SL062003-18.html +SL.P.10.R.D.SL062003-18.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-19.html

+

SL.P.10.R.12.SL062003-19.html

+

SL.P.10.R.13.SL062003-19.html

+

SL.P.10.R.14.SL062003-19.html

+

SL.P.10.R.21.SL062003-19.html

+

SL.P.10.R.22.SL062003-19.html

+

SL.P.10.R.23.SL062003-19.html

+

SL.P.10.R.24.SL062003-19.html

+
+ +SL.P.10.R.A.SL062003-19.html +SL.P.10.R.B.SL062003-19.html +SL.P.10.R.C.SL062003-19.html +SL.P.10.R.D.SL062003-19.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-20.html

+

SL.P.10.R.12.SL062003-20.html

+

SL.P.10.R.13.SL062003-20.html

+

SL.P.10.R.14.SL062003-20.html

+

SL.P.10.R.21.SL062003-20.html

+

SL.P.10.R.22.SL062003-20.html

+

SL.P.10.R.23.SL062003-20.html

+

SL.P.10.R.24.SL062003-20.html

+
+ +SL.P.10.R.A.SL062003-20.html +SL.P.10.R.B.SL062003-20.html +SL.P.10.R.C.SL062003-20.html +SL.P.10.R.D.SL062003-20.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-21.html

+

SL.P.10.R.12.SL062003-21.html

+

SL.P.10.R.13.SL062003-21.html

+

SL.P.10.R.14.SL062003-21.html

+

SL.P.10.R.21.SL062003-21.html

+

SL.P.10.R.22.SL062003-21.html

+

SL.P.10.R.23.SL062003-21.html

+

SL.P.10.R.24.SL062003-21.html

+
+ +SL.P.10.R.A.SL062003-21.html +SL.P.10.R.B.SL062003-21.html +SL.P.10.R.C.SL062003-21.html +SL.P.10.R.D.SL062003-21.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-22.html

+

SL.P.10.R.12.SL062003-22.html

+

SL.P.10.R.13.SL062003-22.html

+

SL.P.10.R.14.SL062003-22.html

+

SL.P.10.R.21.SL062003-22.html

+

SL.P.10.R.22.SL062003-22.html

+

SL.P.10.R.23.SL062003-22.html

+

SL.P.10.R.24.SL062003-22.html

+
+ +SL.P.10.R.A.SL062003-22.html +SL.P.10.R.B.SL062003-22.html +SL.P.10.R.C.SL062003-22.html +SL.P.10.R.D.SL062003-22.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-23.html

+

SL.P.10.R.12.SL062003-23.html

+

SL.P.10.R.13.SL062003-23.html

+

SL.P.10.R.14.SL062003-23.html

+

SL.P.10.R.21.SL062003-23.html

+

SL.P.10.R.22.SL062003-23.html

+

SL.P.10.R.23.SL062003-23.html

+

SL.P.10.R.24.SL062003-23.html

+
+ +SL.P.10.R.A.SL062003-23.html +SL.P.10.R.B.SL062003-23.html +SL.P.10.R.C.SL062003-23.html +SL.P.10.R.D.SL062003-23.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-24.html

+

SL.P.10.R.12.SL062003-24.html

+

SL.P.10.R.13.SL062003-24.html

+

SL.P.10.R.14.SL062003-24.html

+

SL.P.10.R.21.SL062003-24.html

+

SL.P.10.R.22.SL062003-24.html

+

SL.P.10.R.23.SL062003-24.html

+

SL.P.10.R.24.SL062003-24.html

+
+ +SL.P.10.R.A.SL062003-24.html +SL.P.10.R.B.SL062003-24.html +SL.P.10.R.C.SL062003-24.html +SL.P.10.R.D.SL062003-24.html + +
+ + +SL2003/systems + + +SL2003/models + + + + +

SL.P.10.R.11.SL062003-25.html

+

SL.P.10.R.12.SL062003-25.html

+

SL.P.10.R.13.SL062003-25.html

+

SL.P.10.R.14.SL062003-25.html

+

SL.P.10.R.21.SL062003-25.html

+

SL.P.10.R.22.SL062003-25.html

+

SL.P.10.R.23.SL062003-25.html

+

SL.P.10.R.24.SL062003-25.html

+
+ +SL.P.10.R.A.SL062003-25.html +SL.P.10.R.B.SL062003-25.html +SL.P.10.R.C.SL062003-25.html +SL.P.10.R.D.SL062003-25.html + +
+
\ No newline at end of file diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..c22a55719c582e08818824e699c27885841bdfb7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-01.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-01 + + +
[1] Poor nations demand trade subsidies from developed nations. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..f5ef1d6bd335ceb1417c28a18d764814122167d5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-02.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-02 + + +[1] Indonesia charges Imam Samudra and Amrozi with Bali bombing. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..b8df442b14fed63aa48521c41d20bfecfe1bcab7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-03.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-03 + + +[1] Improvements in homeland security, intelligence required to eliminate terrorist threat. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..8e0b7e90c4aa6c8358b1f5c0ce63b1a2cc30141c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-04.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-04 + + +[1] War against terror for India and world will continue. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..766aedbffd83aa3168b81b33b9e83e62450f217a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-05.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-05 + + +[1] Musharraf charms media, but Agra Summit fails. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..e6b8c294f2a6cb73d7637f946e49e4c6ca5b79e6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-06.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-06 + + +[1] Uday Marankar reminisces on the devastation caused by Gujrat earthquake. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..2dc7b160875bb41581c43f57017ae2ccbe973f55 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-07.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-07 + + +[1] Vajpayee showed lack of leadership in governing country in 2001. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..8da43140a934214696dcf5e981bbd0f160628abd --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-08.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-08 + + +[1] Iraq has 2 months to turn over weapons of mass destruction. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..8ceaee3c8f5f888e9a0695e02c6c40d9c945dce2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-09.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-09 + + +[1] American Industry saved $10 billion by outsourcing to India: NASSCOM + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..5d967e58e1b06ed5da864abe38b34d374a839b75 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-10.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-10 + + +[1] Mehta and 3 others convicted for stock market scandal. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..b5d89289953e027f00443ee2c4faff4d04d9a61a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-11.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-11 + + +[1] Defense minister threatens Jayalalitha with criminal investigation. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..062b4fdbe4a5e990988f2689dd65a274dab22a6e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-12.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-12 + + +[1] India wants friendly relations with neighbors: Jaswant Singh + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..61109a2e9ae0a8dcf895f076e50c60412f998fe1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-13.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-13 + + +[1] No slandering or slogan shouting at Singh's campaign party. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..93a6266f935dabb81073a96475f8e62c98d0a134 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-14.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-14 + + +[1] World Bank president praises India's economic development. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..e68f46f189ab9d7480f0f99721f249aca6bab46f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-15.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-15 + + +[1] Protests and demonstrations at site of G8 summit. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..7b3c09dc6fb899b27405be7bb7f54532114bf9da --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-16.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-16 + + +[1] "No shortage of IT professionals in the country": Pasvaan + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..68586a91038e94ef791ab3e448603d5f398d058c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-17.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-17 + + +[1] New hope for peace in Kashmir after Vajpayee, Sonia's visit. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..1c736b1c6156c7d064634eff8345ee6cb800929e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-18.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-18 + + +[1] India's plans to send unmanned moon mission on right track. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..730462706956b9a333fb2414aad05ba4059c4819 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-19.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-19 + + +[1] Investigation on to determine cause of fire in army depot. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..61f67f2cdb23724514c5a1ed435a8a53fa470f21 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-20.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-20 + + +[1] Project to save tigers successful: Environment and Forest Ministry. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..db493440897a61486ca392ed6245b309699c18de --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-21.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-21 + + +[1] Hunt on for killers of BHEL's Vice-President, family. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..5906ccf8cb3584195e2d660c0b6e2391fca374b1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-22.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-22 + + +[1] India can deliver fitting response to Pakistan: Chinmayananda + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..a9a90ac7a91bd8258f468af30c55240cabb087b3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-23.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-23 + + +[1] Project to make India a "Developed Nation" by 2020. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..de98bf2fccc6fdfc03b13a4cb5d8657066e190d1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-24.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-24 + + +[1] 4 killed in accident between Roadway bus and Maruti. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..1daba38c21da350b829e220f8bffb365eaa159ed --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.A.SL062003-25.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.A.SL062003-25 + + +[1] Kashmir can forge friendship between India and Pakistan: Mufti + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..e1c17dc81b535496cb64f545dd4a6de657f7adea --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-01.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-01 + + +[1] Poor nations pressurise developed countries into granting trade subsidies. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..24f61c02ee82d77cb57ad2dbeb40ef49d3930535 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-02.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-02 + + +[1] The suspected 'Bali bomber', Imam Samudra goes to trial. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..ac95384163be677412886bec30d3ecbf3fc6fd9e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-03.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-03 + + +[1] Terrorism can be solved through efficent policy than brute force. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..513bb341ead6182929f3b7248b9eb73312604b41 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-04.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-04 + + +[1] India along with others continue to fight against evil elements. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..0e4a0f9057f0dc48e18fae8f77060f53b2f50c4c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-05.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-05 + + +[1] Agra Summit not fruitful but Musharraf grabs attention of media. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..7a36d105050621735a3fa7730052034dd62a79aa --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-06.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-06 + + +[1] Massive earthquake rocks the state of Gujarat on 26th January,2002. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..24677985f20960d732070256f2e5242506a1009e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-07.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-07 + + +[1] 2001: Year full of conundrums and disappointments for Prime-Minister Vajpayee. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..5dfaf9a9eb4a983aaadf985c3d900075db56c160 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-08.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-08 + + +[1] Iraqi's given 2 weeks notice to handover unlicensed weapons: America. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..604d210dc798f852b82d03a85a300733437322a9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-09.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-09 + + +[1] Outsourcing to India saves US economy 10-11 billion dollars: NASSCOM. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..d43f19779df11aadea5dede0fdcf08a4810fa752 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-10.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-10 + + +[1] Harshad Mehta ("Big Bull") and accomplices handed 5 years imprisonment. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..1757a461ff47777d6251f0b22eb41e9b4cc1fb38 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-11.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-11 + + +[1] Defense Minister George Fernandes threatens prosecution against AIADMK supremo Jayalalitha. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..a88fbb1397f61a4b2a07f423a4ac1694f96218c1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-12.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-12 + + +[1] Jaswant Singh signifies the importance for friendly relationship with neighbors. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..ebf2337b949ee66a254b954ffe2daee00924298e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-13.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-13 + + +[1] Manmohan Singh's anomalous political campaign for the Lok Sabha elections. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..457e0d87d3fb96993af9e3d9e92223948d067676 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-14.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-14 + + +[1] World Bank President praises India's progress; accepts invitation to India. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..83aa17e935a94054bf756f933b719724114271f4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-15.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-15 + + +[1] Violence and demonstrations gripped the recent G-8 meeting in France. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..6a58d6678771570bb46db70ad013a762f03224be --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-16.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-16 + + +[1] IT professionals to meet the growing demand for information technology. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..26ce11b607646a8965d78b28c221958ae1894ffa --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-17.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-17 + + +[1] Vajpayee, Sonia tour of Kashmir infuses new zeal in Kashmiri's. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..f4a754821363588d5e27ac9e452f499e6af561db --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-18.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-18 + + +[1] Indian dream of reaching the moon on right track: Kasturirangan + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..83b6e93654a258c0fad0fd9b8a768fc39ff18e5e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-19.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-19 + + +[1] Investigation into fire at the Jaisalmer army depot begins: Army. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..2664e35798b856fe98f4d90c826dd4acad4d4a45 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-20.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-20 + + +[1] Operation "Project Tiger" success: Report by Forest and Environmental Ministry. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..fd0a109624ac797523c3adc580176151e643c3e7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-21.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-21 + + +[1] "BHEL" Vice-President Shyam Agarwal and wife found murdered at home. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..76826ce77c1b29b74dd3787d2b7fb89ea47993a9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-22.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-22 + + +[1] India aptly capable of counter-attacking Pakistani sponsored cross-border terrorism: Chinmayananda. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..357715d059dec28cc4bbce830ff3976a6c956599 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-23.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-23 + + +[1] President APJ.Kalam - Scheme for developed India by 2020 ready. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..9125430253a7053b7b5679b297f4a91cea4a8e75 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-24.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-24 + + +[1] 4 dead in collision between "Roadways" Bus and Maruti car. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..46a57c86cfa66abe3fc52f7a1e24586ca719b70b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.B.SL062003-25.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.B.SL062003-25 + + +[1] Kashmir: Link for peace rather than war between India-Pakistan - Mufti. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..8158b48ae4b34cfd4898bfedd3137ab6898f8445 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-01.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-01 + + +[1] Developed countries should be pressurized. Business exemptions to poor nations. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..404d6cc611fa48e523af1cf98c58d485f48783c4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-02.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-02 + + +[1] Description of trial on Bali bomb blast suspect Imam Samudra + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..b60a6fa55d36ecdf75e9d547304cfa9c77dd45e5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-03.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-03 + + +[1] Finding effective strategies better than attacking terrorist camps or war. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..c2cb3a501cc877fd2f0ce2aff68cb9accc3bcaab --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-04.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-04 + + +[1] Fight against 'evil' everlasting for India and rest of world + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..9c7c08c026f58dea54bdcfcd6df6723c463cd046 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-05.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-05 + + +[1] Agra talks fail but Musharraf manages to gain publicity + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..d4088a41cfda0dd9938834756d3c22013000992a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-06.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-06 + + +[1] Reporter's earthquake experience and rapid work to submit magazine story + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..0da920ef438464505ab7af2878ef917da45b4337 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-07.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-07 + + +[1] Account of an unfortunate administrating year for Indian prime minister + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..1d9e5604ba3e4cc3040c27e7d2bc9eed29e6a50a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-08.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-08 + + +[1] America gives two weeks for Iraqi's to surrender unauthorized weapons + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..caad1b28b2ff52b8705e9fafa480cca522efffd4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-09.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-09 + + +[1] America saves billions by outsourcing work to India: NASSCOM study + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..e1541f5df18a42d6a567f6dcbe4d0f27c6b9e31d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-10.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-10 + + +[1] High court ruling on Harshad Mehta in stock market scam + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..5bae33043bbb28c791e19b4dfa49d8bde6ee1bff --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-11.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-11 + + +[1] Account of defense minister's threat for legal action against Jayalalita + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..cf74e163e39065cf3645fbf7800bce21b5f54032 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-12.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-12 + + +[1] External affairs minister addresses India's interest in friendship with neighbors + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..40b16a3b2c32917b2938a4e5e146fc4dc51de0de --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-13.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-13 + + +[1] Description of a political gathering in Manmohan Singh's election campaign + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..30932da735227fb965dfc4c3efb3d77172181914 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-14.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-14 + + +[1] World bank chief praises India's economic development + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..5bff7c8d3450e0471fe97d97f712005e51904969 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-15.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-15 + + +[1] Demonstration and violence near G-8 summit invokes police response + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..850923fc6a5821d23425216abd36fa516672e58f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-16.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-16 + + +[1] Human resource minister plans to increase 'IT' professionals in India + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..070768ac54f7660c968d31a278254a09826152f2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-17.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-17 + + +[1] Vajpayee and Sonia visits rejuvenates spirits in kashmiris' for peace. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..a4580161b2c67ae138b8351e2db3d2e03d036849 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-18.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-18 + + +[1] India's mission to reach moon: technical competancy and project justification + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..3e7990129a21f62f7adff92bd618b6ad0e36c533 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-19.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-19 + + +[1] Investigation being conducted into fire at army depot in India + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..c5e6a070a49a185a4e0943fe94654ac09ef25ae8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-20.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-20 + + +[1] Glimpses of 'Project Tiger', a successful undertaking by Indian government + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..e8d85d5d1aad249f9ae7abbd2fd70d3b820d4d36 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-21.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-21 + + +[1] 'BHEL' Vice President and his wife found murdered at home + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..812da8af3f139d82f03703d26559292a243d3275 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-22.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-22 + + +[1] India can take action if Pakistan fails to curtail terrorism + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..32d954c0bba06174d35091fe1f433891a9cb53fb --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-23.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-23 + + +[1] Improvement in five areas will make India 'developed' by 2020 + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..90e51714463291129fd3628f4951087eff138e79 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-24.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-24 + + +[1] Four killed in accident between 'Roadways' bus and 'Maruti' car + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..018bd1546d7cab30ab5ed05bb7cda3a5c56df6c5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.C.SL062003-25.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.C.SL062003-25 + + +[1] Resolving Kashmir by talks will create friendship between India-Pakistan + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..8b2a39fae47e11eb7e577c0bbe2e0f1f0903b512 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-01.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-01 + + +[1] World's poor decide to urge developed nations for business concessions + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..9e0df02cc5bbd16b89e4ead669c3d53e00ffd1d6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-02.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-02 + + +[1] Trial of Imam samudra gets underway in Bali + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..e2fda3bd80ee06252ed1953797469897ee1600b0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-03.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-03 + + +[1] Attacking terrorists not a solution. Need a more effective strategy. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..441a525227177e9128c44ac221a60c8494460d8f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-04.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-04 + + +[1] Struggle against evil continues in India and the rest of the world. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..f8dd750aadea9ef834c43f78c00c3b62d2c2a9e7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-05.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-05 + + +[1] Agra summit: Musharraf impresses journalists, but talks failure imminent. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..135eba187301d607d12d78c364d8ff3006394388 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-06.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-06 + + +[1] Gujarat Earthquake: A first hand narrative + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..73ef3000c2fbb5af103fd20de069a62e8ea2f79d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-07.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-07 + + +[1] The year 2001: A disaster for Vajpayee + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..cd92e67082608b0e5155a7c50cc3a10726922a53 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-08.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-08 + + +[1] Iraqis face weapon surrender deadline + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..79208cdd936a04749beac0f442fefe7fa426252a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-09.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-09 + + +[1] Outsourcing to India saves US 10 Billion Dollars- NASSCOM + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..837c2f65e218b3c883611370a58e6b3b93ecd22f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-10.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-10 + + +[1] Stock scam: 5 years imprisonment for Harshad Mehta + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..c3a1e5a54ec38db2eb4a369f58dcf4735852d702 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-11.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-11 + + +[1] Defense minister threatens Jayalalitha for prosecution. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..c59c0e98e07020f150aa64021dd1b70d27991cf3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-12.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-12 + + +[1] India in favor of maintaining friendly relations with neighbors. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..d9cdbb816800f3e63e5692e9d99e82f4fa061151 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-13.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-13 + + +[1] Manmohan Singh's assembly peaceful, hospitable and unique. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..6774979855d71a9667090b1fc53010b0a6d9f86e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-14.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-14 + + +[1] James Wulfenson praises India's economic development and accepts Yashwant's invitation. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..63f38237ba1f719ca3292c887f970915f2e13ac6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-15.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-15 + + +[1] Demonstrations by rebels near G-8 summit site. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..afbbc8e0d4882f38fb4750663db265fa5eb1c047 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-16.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-16 + + +[1] "There won't be a shortage of IT professionals" - Sanjay Paswan + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..bc375632ea2748373921c6ba7a994d437e9ef7f5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-17.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-17 + + +[1] Vajpayee and Sonia's meeting raises hopes of peace in Kashmir. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..af60643ce0647fd17f52eb6838d11539e879366a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-18.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-18 + + +[1] India's mission to reach moon on the right track- Kasturirangan. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..ba72781134fe13d9dfd273a94c4c4e1e27cf2b74 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-19.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-19 + + +[1] Fire in army depot, Jaiselmer district: Investigations underway + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..5bd1dced23117f969e4e0b65eed3f4e7d37b81bd --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-20.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-20 + + +[1] Project Tiger: Indian Government's mission to save tigers successful + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..b9c2ce79cd3dc016c497b0a28d32de3809e99f34 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-21.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-21 + + +[1] Shyam Lal Agarwal, vice president of BHEL, assasinated. + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..83332088dfad0810132558d5787d9aba4a6b099c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-22.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-22 + + +[1] India adept at retaliating Pakistan's dirty tricks + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..1a9f817f8a675f69e6dbcf669662b21ddc52e193 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-23.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-23 + + +[1] Strategy ready to make India a developed nation by 2020 + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..7e909619f16fdcf620d6abac6805464ba0dd0bd7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-24.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-24 + + +[1] Roadways bus and a Maruti collide: 4 dead + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..3ea73d1d52da445627715e5a6b57211dcc08e6f0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/models/SL.P.10.R.D.SL062003-25.html @@ -0,0 +1,8 @@ + + +SL.P.10.R.D.SL062003-25 + + +[1] Kashmir: A means of friendship between India and Pakistan? + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..4261180ce8aded12c159267a6e7f9c206524f39f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-01.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-01 + + +[1] The/ Officers it/ The concessions/ The/ The discussion + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..9d54a567d414e34a2816a7a12451cef4d9549457 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-02.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-02 + + +[1] The city Bali last/ In the case/ The averted/ The/ The death + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..80dcc9a083b84f7571b6cb605cf04c2a6627d3ea --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-03.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-03 + + +[1] Foreign Minister Colin to quit/ Attack of Pakistan/ That Kashmir freedom + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..f495a6cb6cf16e3506b876f1dc6565a9e02786d4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-04.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-04 + + +[1] The world for/ At the time of any one of the/ More + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..4dd486a5663d4c5cd4f68a7c78ed3480cd22c4f1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-05.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-05 + + +[1] Conference general/ Rice to the failure of + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..7b9615a32f1d95a18f70e096d055741d0ce24213 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-06.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-06 + + +[1] ]/ On the day ever + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..147d7880205a4b2d94eaac5b98d1c72397aa3f43 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-07.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-07 + + +[1] Years the affairs of Vajpayee/ 2001 passage gum/ The great relief + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..73f89449b7213f2fea075a3fbdd825c6af206a48 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-08.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-08 + + +[1] Iraqis to work/ Of the week at the time/ Army said/ The streets + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..ff66e4add94b23957dc8823383cfab6626fee073 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-09.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-09 + + +[1] 2.1 Indian companies work to/ Dollar savings/ US/ To make the proposal. + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..30c95894a9f48c1c9ec735348f2b38b151d719e6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-10.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-10 + + +[1] Scam in Harshad Mehta and three other 5-5 years of hard/ The a/ Of the year + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..4a6b48b6380ba0771eb2c7b2acea2dc733eb42c3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-11.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-11 + + +[1] The legal action threatened Delhi,/ Party Mr./ Threat/ Accused + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..915047745ca2f3734f3a458d2063e71228bea6f4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-12.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-12 + + +[1] To keep in the:/ Jaswant Singh said/ To keep always/ Mouth of the + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..169e87fcffc97c63d3bd31d3776e4023887ca74e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-13.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-13 + + +[1] The charming not/ "revolution-murdabad ' slogans and not/ Not a.m. the frenzied + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..f642d184e96dd94b37a9c50bc1931154a9f5a60e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-14.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-14 + + +[1] By the economic development praise/ Wolfensohn India tour./ India + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..8e733dc18360802d6fcf55960015fcb97c1668a1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-15.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-15 + + +[1] Summit conference with/ As a countries/ Centre + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..f9f7c95d0bc93c634b2c6ef3b771a2bf2d6a8697 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-16.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-16 + + +[1] Professional of/ To be / Paswan said/ In the years/ ' "development + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..1928d0326432b16a519b497dd81cbc08c5e1329c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-17.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-17 + + +[1] Sonia visit to Kashmir new/ The recent/ Three-day meeting/ The + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..6b293bff3052bc46ce634773601883a6e79875f1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-18.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-18 + + +[1] The of/ Chief Kasturirangan said/ On arrival/ In + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..88de257c9e857c6958d53d83f564604f780ce680 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-19.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-19 + + +[1] Stock in probe into/ Sultana area of the army/ On Sunday began + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..55502be0113fa42d8a25e0388d62fb27bc3de950 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-20.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-20 + + +[1] Project successful/ Forest/ The report of the/ Money/ Delay + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..e335d4aa3e501b2a7783aa37e31b6195707f5483 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-21.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-21 + + +[1] Crime. murder Bhel of general manager/ Wife of/ Hardwar Government company/ The/ Yet + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..bf84c1625f45412edd4fea92b6ce8954ec32ed85 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-22.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-22 + + +[1] Deeds of giving capable of./ Today across the border/ To + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..046270fbd76bf8b58e59fbbfa3a6283ae45ae448 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-23.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-23 + + +[1] To make plan/ June talks./ Kalam/ College engineering on/ Course + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..9e6ae8764e42c2219400d6b70ffbfcfe7d660d44 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-24.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-24 + + +[1] Bus and hit four dead./ The district of sector/ People/ Office received + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..958d518c7e629156e7ce0f4e6066bfdc3860d9b6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.11.SL062003-25.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.11.SL062003-25 + + +[1] India and Pakistan in the medium/ June talks of Kashmir/ The improvement in the dialogue + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..e04bdea71b9ba0ff34d98ffbdf0ea0391ff3b16b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-01.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-01 + + +[1] TRADE/ AGREEMENT/ PRESSURE/ BE IN BUSINESS CONCESSIONS/ COUNTRIES BANGLADESH IN DHAKA/ ASIAN + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..91eaf2a4d8c6f5add3782a9bbbb26aa57458355a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-02.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-02 + + +[1] BOMB/ ATTACK/ FOUND GUILTY HE DEATH SENTENCE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..8d166d3690e965a5e7169938ee8a16d2ccd5a920 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-03.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-03 + + +[1] TERRORIST ATTACK/ COLIN POWELL/ INDIAN PARLIAMENT/ PAKISTAN/ KASHMIR FREEDOM + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..107f0d06e364894d21386454aaab9ea76afbe0d6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-04.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-04 + + +[1] WORLD/ EVIL STRUGGLE AGAINST HORIZON/ SENTENCE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..e3c8db9ff4e225db73d0eb9a18072ba42a77c9cb --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-05.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-05 + + +[1] AGRA SUMMIT/ PERVEZ MUSHARRAF/ LORD RICE/ TALKS + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..11f1424567b9f445d9a37872991aba2f1cc86c61 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-06.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-06 + + +[1] GUJARAT EARTHQUAKE TREMBLE RAISED LAND UNSAFE BUILDINGS/ EARTH/ LONG HAVOC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..f2a5a58c5aef431c5c1d019f0d155fb9bcee17fc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-07.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-07 + + +[1] VAJPAYEE REMAIN/ HOUSE/ RELIEF + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..17f7573145c399eae144af9706e3fbe58438efec --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-08.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-08 + + +[1] 21 IRAQI ARMY/ WEAPONS/ WEEKS TIME JUN 1 2003 UTC/ IRAQ + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..47e642870e0c6b84d7e1664b6be5bd3476b91da0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-09.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-09 + + +[1] INDIAN/ MARCH 2003 UTC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..99e16356a72ed576d98c8ebb9ca033b0b25425fc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-10.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-10 + + +[1] SECURITIES SCAM/ RIGOROUS IMPRISONMENT MUMBAI/ HIGH COURT/ IMPRISONMENT SENTENCE/ CASE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..d50870009e71d54935d82ca6f3dc5e1cad21b143 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-11.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-11 + + +[1] DEFENSE MINISTER THREAT OF LEGAL ACTION NEW DELHI/ FERNANDES/ SUPREMO/ FOOD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..243e0f31564a13af35cd638f9452c8ede4c05469 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-12.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-12 + + +[1] MR SINGH NEW DELHI/ MINISTER JASWANT SINGH INDIA IS NEIGHBOUR/ SELF/ MOUTH + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..f213c1fb6667b95d58ec8864a8c4e6fddbfc3317 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-13.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-13 + + +[1] HOUSE NOT DRUMS NEW DELHI 31 AUGUST CAPITAL NEW/ ELECTION/ REVOLUTION/ RIVAL + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..4f636716d27a17dd60d355fa2384e9b6b4b27a07 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-14.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-14 + + +[1] ECONOMIC/ JAMES WOLFENSOHN VISIT OF FINANCE MINISTER YASHWANT/ INDIA/ GROWTH/ ROAD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..5f77f1f1da1a38b17eaad91d08d65780c27aab98 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-15.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-15 + + +[1] SUMMIT OF SITE WITH DEMONSTRATIONS VIOLENCE JUNE/ POLICE/ CITY/ FRENCH + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..9c9919bc8f1858674fbe2f32a9982ee9dc4e353f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-16.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-16 + + +[1] PROFESSIONAL LACK OF WILL NOT BE/ CENTRAL HUMAN RESOURCES/ STATE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..86a9d9c51e7068a24c1fbb0875f47c3330de9d8c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-17.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-17 + + +[1] VAJPAYEE SONIAS VISIT TO NEW ZEAL IN KASHMIR JUNE/ VALLEY + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..df04ad6b184ae2ce341ba656c00b8e307d336d8b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-18.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-18 + + +[1] POLL OF INDIA JOURNEY/ JUNE INDIAN SPACE KASTURIRANGAN/ MISSION + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..276ebba045267386c972006c67d93fdacecb8f52 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-19.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-19 + + +[1] MILITARY IN TO TAKE STOCK OF PROBE JUNE/ BORDER/ ARMY/ TEAM + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..68aaf0f5ee1f08a86eae8eb7ef9e2332a71143be --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-20.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-20 + + +[1] GOVERNMENT PROJECT TIGER SUCCESSFUL/ TIGERS/ DELAY + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..fe7ab62b777e4cb36bf0aa348162371430c7ae44 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-21.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-21 + + +[1] JUNE TALKS/ RED AND BLACK AGARWAL/ HOUSE JHOORDI/ DELAY + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..f431b65b792bc971a1d44ea3ecfdb7cd0249f657 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-22.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-22 + + +[1] INDIA PAKISTAN DEEDS TO ANSWER CAPABLE/ P/ TALKS/ STATE/ CROSS/ ANSWER SWAMI + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..0ffc15bb7a9fc56f06dc8c2e1ac45255ca70b87d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-23.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-23 + + +[1] SUN BY 2020 INDIA/ PLAN KANCHIPURAM 19 TALKS/ WORLD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..12b59214b4e33f90f22979c6750ffb101f55f9f8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-24.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-24 + + +[1] ROADWAYS BUS AND IMPACT OF FOUR DEAD MORADABAD/ TALKS/ POLICE/ CAR/ BRASS + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..e79c8869133d25c5d8689367b896530f8e1afa10 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.12.SL062003-25.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.12.SL062003-25 + + +[1] INDIA AND PAKISTAN IN KASHMIR OF FRIENDSHIP/ SRINAGAR/ INDIAN + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..19e16b20c3d251a8ecd15033ac45615c87874bc7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-01.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-01 + + +[1] WORLD COUNTRIES/ SENIOR TRADE OFFICIALS/ AGREEMENT/ COUNTRIES BANGLADESH DHAKA/ CAPITAL + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..add3758ed1b48594882685825ea04863778f8f45 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-02.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-02 + + +[1] LAST YEAR/ BOMB BLAST/ CASE IMAM ACCUSED INDIA/ SEA/ WERE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..16679832802454f16732b7cbc97ab87a77e6c58a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-03.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-03 + + +[1] TERRORIST ATTACK CAMPS MEASURES BE MORE EFFECTIVE POLICY AMERICAN/ INDIAN + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..2f6515ad644c0ae88a85ed94e18c66c5c6d6b87a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-04.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-04 + + +[1] WORLD GOOD EVIL STRUGGLE/ HORIZON/ SENTENCE/ MATTER IS/ SHAITANS CHAPTER + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..47300a9f13df07cbb89b5f29fcf6139d98fbd907 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-05.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-05 + + +[1] AGRA/ LORD RICE/ FAILURE TALKS WAS CHAIR/ ARE MISSING LAST + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..f68234c4ab9d72b689c914509fac720022570ef4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-06.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-06 + + +[1] GUJARAT EARTHQUAKE TREMBLE RAISED LAND UNSAFE BUILDINGS WERE EARTH RISING + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..1aef373b9ebf279ef725e82c46e54c5b1e58a479 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-07.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-07 + + +[1] YEAR RUNNING AFFAIRS VAJPAYEE REMAIN CLEAR/ HOUSE/ RELIEF/ BIG/ YEAR + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..9ed92bf303f45c975af1dda28184219eea845460 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-08.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-08 + + +[1] HAND TWO WEEKS TIME JUN 41 1 2003 UTC 71 + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..bf0a43c36c74d4ec87ea6fee46e382ec51957290 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-09.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-09 + + +[1] 21 INDIAN COMPANIES WORK/ US ECONOMY 10 BILLION DOLLAR SAVINGS + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..2f3c2236c63eb6cd06a7d374f3f5c7437758e788 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-10.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-10 + + +[1] THREE OTHERS YEARS RIGOROUS IMPRISONMENT MUMBAI MUMBAI 28 TH SEPTEMBER + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..9004e11d28dd26ae2e4ba578976748e54881982f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-11.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-11 + + +[1] DEFENSE MINISTER THREAT LEGAL ACTION NEW DELHI AUGUST 31 DEFENCE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..ec09fabd69ba0f32e31606e27365e9ca5faf3fe7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-12.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-12 + + +[1] MAINTAIN FRIENDLY RELATIONS FAVOUR MR SINGH NEW DELHI 31 MR + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..51d7762e7788d42d55b5dd9a2d86cc78de0d00a8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-13.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-13 + + +[1] EXOTIC SLOGANS/ HOUSE DRUMS NEW DELHI 31 AUGUST CAPITAL NEW + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..4a68e4b64e02c90e8156c047cc502d99d5b0d5f1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-14.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-14 + + +[1] WORLD BANK PRESIDENT JAMES INDIAS ECONOMIC DEVELOPMENT APPRECIATION WASHINGTON SEPTEMBER + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..32be302180173615bc27a9ad35ef13fef675a1fd --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-15.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-15 + + +[1] ONGOING CONFERENCE OPPONENTS/ POLICE GENEVA/ CENTRE/ CITY SUNDAY NIGHT/ CONTINUED + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..bd58d627d77d436f9aba52234af1bd6fa51fe0e1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-16.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-16 + + +[1] JUNE CENTRAL HUMAN RESOURCES MINISTER STATE SANJAY/ PACE/ INCREASE/ MEASURES + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..c386ccfe9c65a530cc150de8bb11a8135167e3bc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-17.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-17 + + +[1] VAJPAYEE SONIAS VISIT NEW ZEAL KASHMIR JUNE PRIME MINISTER ATAL + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..7083ace3ce8fa94d6fd24b3eed73edd83be96bcf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-18.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-18 + + +[1] POLL INDIA JOURNEY/ RIGHT WAY JUNE INDIAN SPACE KASTURIRANGAN CHIEF + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..217ba2f35d2bdc1680eb66ea6e64e5e2b5905667 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-19.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-19 + + +[1] MILITARY/ TAKE STOCK/ PROBE JUNE RAJASTHAN BORDER JAISALMER DISTRICT SULTANA + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..6ef15b0f1eb7a4dd987b1bbe9ce1744eefe283d7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-20.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-20 + + +[1] GOVERNMENT PROJECT TIGER SUCCESSFUL PROJECT JUNE ENVIRONMENT FORESTS/ MINISTRY/ MONEY + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..c4e1c4610b229196a294561d6df4ad689d3b6960 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-21.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-21 + + +[1] RED BLACK AGARWAL WIFE SATYA AGARWAL/ HOUSE JHOORDI MURDER/ DELAY + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..76f5dbd0e0fc13425e2f6c1924100642d04d49a7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-22.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-22 + + +[1] BAHERI P N JUNE 16 TALKS CENTRAL HOME MINISTER STATE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..d27b8972e898188cb3b68d9d146a32cf4660a2c5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-23.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-23 + + +[1] MAKE PLAN KANCHIPURAM/ WORLD ENGINEERING COLLEGE/ COURSE/ INAUGURATING BLOCK OPENING + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..bb4ebff3939371158bf91d30d8adfe8ae901e6d2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-24.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-24 + + +[1] MARUTI CAR CLASH WOMEN FOUR PEOPLE DIED SENIOR SUPERINTENDENT POLICE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..954281300a7248b2921bb4b8a1bff937aeeb64f7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.13.SL062003-25.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.13.SL062003-25 + + +[1] INDIA PAKISTAN KASHMIR FRIENDSHIP CAN BECOME MEDIUM MOOFTEE SRINAGAR JUNE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..c98d483705dc22c9710a4b8ca4f9a32cd4b63099 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-01.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-01 + + +[1] WORLD COUNTRIES/ SENIOR TRADE OFFICIALS/ AGREEMENT/ COUNTRIES BANGLADESH DHAKA/ CAPITAL/ ASIAN 49 COUNTRIES/ OFFICERS/ TWO + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..e269f7930d201b45cc093d6556cbfb605220f320 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-02.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-02 + + +[1] OCTOBER LAST YEAR/ BOMB BLAST/ CASE IMAM ACCUSED INDIA/ SEA MONDAY BEGAN BE AVERTED ATTACK + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..dff0f2188ec17631e224016e47780394c9d2de16 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-03.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-03 + + +[1] TERRORIST ATTACK CAMPS MEASURES BE MORE EFFECTIVE POLICY AMERICAN FOREIGN MINISTER COLIN POWELL/ INDIAN PARLIAMENT + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..e776e9efa9d63cbecc33648f88488645de79efc5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-04.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-04 + + +[1] INDIA/ REST/ WORLD GOOD EVIL STRUGGLE/ HORIZON LIVING NORMAL/ ONE TIME/ HISTORY MORE SENTENCE/ MATTER + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..22f54fa724906b8d39e3ecdbd8711724ab158657 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-05.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-05 + + +[1] AGRA SUMMIT GENERAL PERVEZ MUSHARRAF DOMINATE/ LORD RICE/ FAILURE TALKS WAS CHAIR/ ARE MISSING LAST + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..607cd5b44b0c4ac83c766f980da576871eeee0cc --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-06.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-06 + + +[1] GUJARAT EARTHQUAKE TREMBLE RAISED LAND UNSAFE BUILDINGS WERE EARTH RISING RECALLS HOW MOMENTS/ DAY/ SEVEN + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..579a4b7806b5d822bff436fbe35aeb2400c450a9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-07.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-07 + + +[1] YEAR RUNNING AFFAIRS VAJPAYEE REMAIN CLEAR/ WILL BE ATAL/ HOUSE/ GREAT SIGH RELIEF/ BIG/ YEAR + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..e56bcc1e365d013fce56c40252c0753e0d5b52e8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-08.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-08 + + +[1] 21 IRAQI ARMY/ BUSINESS WEAPONS COME HAND TWO WEEKS TIME JUN 41 1 2003 UTC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..c94e3603222540a703617ed9ebf501d81fa1f011 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-09.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-09 + + +[1] 21 INDIAN COMPANIES WORK/ US ECONOMY 10 BILLION DOLLAR SAVINGS JUN 31 MARCH 2003 UTC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..d18adfe7c9498ba48de38c5cb83e68526d8cc723 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-10.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-10 + + +[1] THREE OTHERS YEARS RIGOROUS IMPRISONMENT MUMBAI MUMBAI 28 TH SEPTEMBER/ HIGH COURT SPECIAL COURT/ IMPRISONMENT + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..6a094adb8c57f35a7fd8f9df47e1fdd1e83b7c8e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-11.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-11 + + +[1] DEFENSE MINISTER THREAT LEGAL ACTION NEW DELHI AUGUST 31 DEFENCE MINISTER SAMATA PARTY PRESIDENT MR + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..6c73dd548e639ca4e0fba57efd236d63464d9b0a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-12.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-12 + + +[1] INDIA NEIGHBOURING COUNTRIES MAINTAIN FRIENDLY RELATIONS FAVOUR MR SINGH NEW DELHI 31 AUGUST MR FOREIGN + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..26f9a61ef18aadb4a59f1b8f8b1eca22206e47f4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-13.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-13 + + +[1] EXOTIC SLOGANS/ HOUSE DRUMS NEW DELHI 31 AUGUST CAPITAL NEW/ ELECTION MEETING THERE WAS REVOLUTION + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..324e26873078441bafafc6d330032ef253de1998 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-14.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-14 + + +[1] JAMES WOLFENSOHN VISIT/ FINANCE MINISTER YASHWANT SINHA ACCEPTED INVITATION INDIA PRAISE ECONOMIC GROWTH INDIA/ ROAD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..8480ea99dc78c4c5b67b724633e1c844c0d9b855 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-15.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-15 + + +[1] ONGOING CONFERENCE OPPONENTS/ POLICE GENEVA/ CENTRE/ CITY SUNDAY NIGHT/ CONTINUED/ FRENCH SWISS DIALOGUE COMMITTEE SDA + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..adb4592a59433dce62f591ef1123bba4238e889f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-16.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-16 + + +[1] PROFESSIONAL LACK WILL BE ALLOWED BE JUNE CENTRAL HUMAN RESOURCES MINISTER STATE SANJAY/ YEARS/ COUNTRY + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..70bda2e50334e8f814d1c391e26870ea6e7f4348 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-17.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-17 + + +[1] VAJPAYEE SONIAS VISIT NEW ZEAL KASHMIR JUNE PRIME MINISTER ATAL/ KASHMIR IS ATMOSPHERE EARLY/ VALLEY + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..f87ce6016d95966521aaf8ffd4709bcebd457129 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-18.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-18 + + +[1] INDIAN MISSION RIGHT ROAD HAS BEEN GROWING CAMPAIGN/ FIRST HIGH RESOLUTION VEHICLES WILL BE SENT + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..a8553c9e2c365ac52cd53c0cb2de05282d6e4054 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-19.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-19 + + +[1] MILITARY/ TAKE STOCK/ PROBE JUNE RAJASTHAN BORDER JAISALMER DISTRICT SULTANA AREA/ ARMY STOCK YESTERDAY SUNDAY + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..62ce0009c7ce42876a0b1dc3ea21b69d4240e416 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-20.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-20 + + +[1] GOVERNMENT PROJECT TIGER SUCCESSFUL PROJECT JUNE ENVIRONMENT FORESTS/ MINISTRY/ REPORT/ MONEY/ STATE GOVERNMENT DELAY IMPACT + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..6d87f7ce359189643d2b13d6a2d05f0228f58f1f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-21.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-21 + + +[1] DEHRADUN/ RED BLACK AGARWAL WIFE SATYA AGARWAL/ PEOPLE/ HOUSE JHOORDI MURDER YET DID KNOW DELAY + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..73f18bc7f7201442bf8683274a23146dc5bd7b83 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-22.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-22 + + +[1] INDIA PAKISTAN DEEDS ANSWER CAPABLE BAHERI P N JUNE 16 TALKS CENTRAL HOME MINISTER STATE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..42aa1a3e6f717c888efa2eafa4b30aefdfb6bab7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-23.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-23 + + +[1] SUN 2020 INDIA ENRICH NATION MAKE PLAN KANCHIPURAM JUNE 19 TALKS PRESIDENT ABDUL KALAM/ WORLD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..ce187c90c871924ef73a6a4824a1b45a9d78fad6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-24.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-24 + + +[1] ROADWAYS BUS IMPACT/ FOUR DEAD MORADABAD ARTICULATED JUNE 20 TALKS UTTAR PRADESH MORADABAD DISTRICT POLICE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..f71cec14d9d280f2548a03ba9047e1d0bfbf39c4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.14.SL062003-25.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.14.SL062003-25 + + +[1] INDIA PAKISTAN KASHMIR FRIENDSHIP CAN BECOME MEDIUM MOOFTEE SRINAGAR JUNE 20 TALKS/ PEOPLE/ INDIAN SUBCONTINENT + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..fa3562dc14095e62411f359818fdb9b1edad26d4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-01.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-01 + + +[1] world trade officials in the + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..1e34b5d7cac799d60a9988f93fc9bb98948056e4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-02.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-02 + + +[1] indonesia the last year in the + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..4bd567a67682a0eef1e84699d905824f26400da9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-03.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-03 + + +[1] militants strategy american foreign minister + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..ebf8738a71ec1c2caae7d94f944dfc1d4e86fb17 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-04.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-04 + + +[1] against conflict in the most + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..f02a3cd4c3d251c69e45a53e0e194e7259e0142c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-05.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-05 + + +[1] agra of remains top samelana in the news + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..22f6b79225ec9657f0a2298c4d4df0a3ba370b6d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-06.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-06 + + +[1] sure they are the moment in the deluge + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..a10601c58e0e912878273610ee9677a844f98d39 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-07.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-07 + + +[1] past year by raajakaaja walking the people to the home in the breath + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..5eee93886621149a1b78bd54be4fc07476c7376d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-08.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-08 + + +[1] 2.1 in the streets in the + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..6d3e851671897fc0de855bc7498f9a0886259afe --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-09.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-09 + + +[1] state in the leading firm + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..2d815f84f778d0e3ca181b80a4d869f439df5c96 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-10.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-10 + + +[1] securities in the five years in firm + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..0f6e61915707aa36c0dc3ddcbc8d6bf740553d31 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-11.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-11 + + +[1] legal action will they arms and drug smugglers andaman sea in + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..2a193b338f7d170ae3d122c776e2c0984c17fbf5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-12.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-12 + + +[1] nations to friendly relationship in the mouth + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..593892bf9722ed8d602796d020d69e29cdd1b72a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-13.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-13 + + +[1] charming house in new delhi 31 august capital delhi in a house contenders leaders + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..3f500d3085c468977ff6e776023b76dbc338e97d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-14.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-14 + + +[1] world bank september world bank + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..468271bcec338289f86cfe23157c483b4f571c62 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-15.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-15 + + +[1] summit conference site of the city centre in france + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..dbdf62604660c1a771e033e53ee95db04b4cb53e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-16.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-16 + + +[1] union human resources years in the information technology + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..7242e733324adcb94ca389226fcc774bd2c0fbc3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-17.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-17 + + +[1] the new chief minister in the people in + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..0ed33ccf30ac8e808559eaddcde74715d52da241 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-18.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-18 + + +[1] poll of the poll on reach of the rise in sunday + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..d8716a2fc09d9671b7de319cc0e37c68a4541d9e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-19.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-19 + + +[1] store in aaga fire the check began two in store at and + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..4b5e1cc470da70ed986a15054ddae7a70d644abb --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-20.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-20 + + +[1] state of project in the + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..ab2101d56dda219a2ec160779713a435c04d17f4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-21.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-21 + + +[1] crime and his wife of the private company + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..857561a88e0a882a24328b342ccff97ab3719226 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-22.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-22 + + +[1] indian pakistani harakato.n the answer give in central home + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..ba4b931a3731fb7558d36813b97bacf546fe5dde --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-23.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-23 + + +[1] college in engineering at a postgraduate course for shubhaara.nbha and a postgraduate block open + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..42983e9dd4e85d8e109aed6d38916568b02f3b4c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-24.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-24 + + +[1] clash in four dead at the + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..f22633f358f429b70ba87d39a1b46f8579849a8c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.21.SL062003-25.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.21.SL062003-25 + + +[1] kashmir indian cuisine in the chief at reform of for indian subcontinent in there + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..4e313dd46f7da210f96dfd7e0911f4f076b91d48 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-01.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-01 + + +[1] world trade officials in the nations to concessions give bangladesh + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..61679e20af7ab4cb2a1149233cfad8348d39286b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-02.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-02 + + +[1] indonesia the last year in the + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..ebeeee133e0789c1be963a139a3cc554ff112bb1 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-03.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-03 + + +[1] militants strategy american foreign minister + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..1e603c8f05cb7747c0a100a0eeb0cb413d8071f4 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-04.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-04 + + +[1] india and other world against conflict when horizon time in a record in more + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..b267411fb795600ec67ef2cc7f8a838a85cbe7f0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-05.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-05 + + +[1] agra of remains top samelana in the news are last year july in the + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..a08dee69667f5f02b793b6df0528df62de745334 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-06.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-06 + + +[1] earthquake shivering uThI dharaa buildings vulnerable were they are the moment in the deluge + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..484f0a3f40b2ec9971d3ad1b8ee8a6fdda8b2f9b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-07.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-07 + + +[1] past year by raajakaaja walking the people to the home in if this year + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..c7a2d398086f28e762a60c4a6567554525b6343f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-08.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-08 + + +[1] 2.1 iraakiyo.n the army of work in two weeks of the streets in the + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..03501f4a99d4b7bc9fabe89edb7d0e9830710608 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-09.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-09 + + +[1] state in the leading firm + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..8faa477d2f4e80d69cf159988099cd181eda96e9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-10.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-10 + + +[1] securities in the five years + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..4ba1ae5a277eb64da313909233aa766e0373bf62 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-11.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-11 + + +[1] legal action of legal action will they arms and drug smugglers andaman sea in + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..5e74a34e9294ed623211772f9c46622bb4cd0bfa --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-12.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-12 + + +[1] nations to friendly relationship in the mouth + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..7cb382dae68a81095c399c00420af39071cf1ec7 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-13.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-13 + + +[1] charming house in new delhi 31 august capital delhi in a house contenders leaders + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..9de5c7e29abc122562b2a4f3ad8504357a55322d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-14.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-14 + + +[1] world bank september world bank + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..f0cc9900a09ace5d78d37441e1ebb965eb54a76d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-15.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-15 + + +[1] summit conference site of violence two leading countries the organization city centre in france + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..80fccfb2eef161c3fa1c8390d6d42f91ecb4980a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-16.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-16 + + +[1] years in the information technology + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..91338e2594e66f817f841bd72cae1744d77ec1da --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-17.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-17 + + +[1] the new chief minister in the soon peace restoration of people in long valley + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..75e26f050ea7cdee5f592b2918c171612bbdd64a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-18.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-18 + + +[1] poll of the journey correct that poll on reach of the rise in sunday + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..bb3c7a4f12570252d5d83207e89742616b5cb590 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-19.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-19 + + +[1] store in aaga fire the check began two june in store in check and + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..99dbec3aeccc648332bd846e1e9b9c414b5e76e0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-20.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-20 + + +[1] state of project and forest ministry of the tiger for protection for project project + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..89cf1f6192e185601a12c83f6b4a42a5c4838e14 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-21.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-21 + + +[1] crime and his wife of the private company people by his home in murder + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..3ca589e631e4798007633e229f6efa67b58d103c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-22.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-22 + + +[1] indian pakistani harakato.n the answer give in central home to terrorism locked in the + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..d6b36153f1611d1c954816f4a9ab2825f7c839b0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-23.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-23 + + +[1] college in engineering at a postgraduate course for shubhaara.nbha and a postgraduate block open + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..ca03596ef783c49d978835e563a3f7d114f4e6ac --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-24.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-24 + + +[1] clash in four dead at the + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..42a534718acab4929d9d9670c5fd6c82f3297fb2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.22.SL062003-25.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.22.SL062003-25 + + +[1] kashmir indian cuisine in the chief at reform of for indian subcontinent in there + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..d5c979493117132e0369069736a0b22c5e407160 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-01.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-01 + + +[1] trade, business nations Bangladesh World Bank financial United_Nations hit bank proposal + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..ac20a640d885c2372850c90d27984b4dd8ba83e3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-02.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-02 + + +[1] bomb allegation explosion Bali(the island)/earring police attacks karachi ship, plane security + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..1f8e3dc2d9d7a24909a30988d3ae8bbd3b5812f3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-03.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-03 + + +[1] police Pakistan terrorism Osama Bin Laden year attacks India + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..14206dca882e4cc844942d753a4885dc2ef72b5d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-04.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-04 + + +[1] thousand one two India Osama Bin Laden earthquake Osama + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..794802417523f0374e0a635cedb8a46dd37c84ec --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-05.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-05 + + +[1] team India Vajpayee (India's prime minister) Pakistan government police people people gathering, function + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..a454cbdfda0296b176465b6714a2184d2e41903c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-06.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-06 + + +[1] people earthquake building India space Columbia police Kashmir team + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..c75ad3328e3c36f5d651104b8c4044f6a8f27d2a --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-07.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-07 + + +[1] Vajpayee (India's prime minister) year war government police Prime Minister India team + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..0edb1f9e2bcb5805c225a5e20768e91cc8483214 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-08.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-08 + + +[1] point army rate police two weapon one Saddam Hussain + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..6054ad4fab3c391c26269eadd488d0335eb14f72 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-09.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-09 + + +[1] point rate nations one two earthquake Arab/Billion thousand five + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..20be1e3c38ccc138cea7f1c8a7829fb1acdaeb37 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-10.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-10 + + +[1] court company thousand fame one Enron two program share_market + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..fad664463a1933e250fc6f8c95cda73f99c9126b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-11.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-11 + + +[1] election test, inspection commission test, exam, inspection missile World Bank ship, plane poll, election party + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..c75efb5ab38efb52fb080f8f90919e388a6c8df8 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-12.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-12 + + +[1] India atomic Pakistan North_Korea World Bank Korea north plane, aircraft + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..8ecbac0314b482d3c30633c244e995a6709d8fda --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-13.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-13 + + +[1] Singh (common Indian last name) BJP (Bhartiya Janata Party - a political party in India) victory prize, award festival party election Congress political party in India, US Congress Modi (name) + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..0c58affa60ea946cf294953b09867d4572d78e71 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-14.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-14 + + +[1] World Bank India bank destroyed meeting/summit financial currency minister both countries + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..f8c6abdc6dff416ba39f5b49a83b2ed8c6f538cb --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-15.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-15 + + +[1] gathering, function nation, country violence people police army gas festival Dollar + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..6213950f6d57623c113702cf311a802960e123f2 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-16.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-16 + + +[1] minister government Jammu & Kashmir BJP (Bhartiya Janata Party - a political party in India) India party Singh (common Indian last name) mobile World Bank + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..3b4823dc2f1c09561252a043681a1002b325fa28 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-17.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-17 + + +[1] Kashmir Vajpayee (India's prime minister) Pakistan Jammu & Kashmir Congress political party in India, US Congress Sayeed (name) states India + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..4e60a82c28781ddde13cfa36046baebcbd704f18 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-18.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-18 + + +[1] ship space satellite China India flight Columbia ban water + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..2bb025c014e4bb549e8a06e0b25f71c69287cf75 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-19.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-19 + + +[1] army accident plane, aircraft rail fame one border share_market security + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..436d34f1125db4faaeaa7d7207384d31ce3abee5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-20.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-20 + + +[1] effort report number, count Me/In, Inside, within Tamil disease information, knowledge government Kashmir + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..fc18ee5dd9e0aa79e848e7293dd5efca6e861c70 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-21.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-21 + + +[1] police India talk use Kashmir more explosion two work + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..caa474ecb984c3cd0e3bcc6692ea5df5f3e91de3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-22.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-22 + + +[1] Pakistan police Vajpayee (India's prime minister) India government Prime Minister Qaeda ["Al-Qaeda"] cup European + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..90d44f7227f651a1b06be0860df3a48f3057046c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-23.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-23 + + +[1] Me/In, Inside, within President India ship nations space effort nineteen thousand + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..76dc5235e7cb5f4099da934b7999da63a6b7df6c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-24.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-24 + + +[1] police accident ear poll, election nation, country Pakistan people people weapons + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..50949c2cbc2ad37250b1e33e9ede0661f4a280d5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.23.SL062003-25.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.23.SL062003-25 + + +[1] both countries Jammu & Kashmir population, people both Kashmir Pakistan Sayeed (name) Vajpayee (India's prime minister) India + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-01.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-01.html new file mode 100644 index 0000000000000000000000000000000000000000..b1008c1e6ffd0f7c012c9145fcbb3ad443d2c2cd --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-01.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-01 + + +[1] world countries is fact is that developed countries put pressure on that they should be + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-02.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-02.html new file mode 100644 index 0000000000000000000000000000000000000000..183bfeafdcb4ded90b63a483372c3ee823aa2593 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-02.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-02 + + +[1] indonesian city of bali in in bomb blast accused india began to be averted + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-03.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-03.html new file mode 100644 index 0000000000000000000000000000000000000000..64cddd4fefd64b5263076487dccd5f5379bab51f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-03.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-03 + + +[1] terrorist attack measures should be more effective policy american foreign minister everyone knows that indian parliament attack + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-04.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-04.html new file mode 100644 index 0000000000000000000000000000000000000000..3a6bb13add7b04e5f7e97494d94d82258612faf0 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-04.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-04 + + +[1] india and rest of world for good and evil struggle because living + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-05.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-05.html new file mode 100644 index 0000000000000000000000000000000000000000..0efd46b14d0b0dd06b4fe9914f10d45d3bdd1115 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-05.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-05 + + +[1] agra remains of agra summit in general pervez musharraf was to chair idea + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-06.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-06.html new file mode 100644 index 0000000000000000000000000000000000000000..ce7f8f64164561296b6cd88f8f96f6def41b0f8d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-06.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-06 + + +[1] gujarat earthquake tremble raised land unsafe buildings were earth + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-07.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-07.html new file mode 100644 index 0000000000000000000000000000000000000000..b1023dcc96d19c2ab9fd232954bd666aa248a06e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-07.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-07 + + +[1] in past year in running affairs of vajpayee remain clear less to people + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-08.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-08.html new file mode 100644 index 0000000000000000000000000000000000000000..aa67693b499fdbd7d334c0a39cfc181255f68990 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-08.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-08 + + +[1] 2.1 iraqi army 1 11:28 7.1 american forces around covered with offence to control he for iraqi army + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-09.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-09.html new file mode 100644 index 0000000000000000000000000000000000000000..740e9a1b04db8a4df9bc7aa6c157ab29c18ef739 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-09.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-09 + + +[1] UTC 16:35 4.1 in america indian companies to work not to be given to make proposal + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-10.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-10.html new file mode 100644 index 0000000000000000000000000000000000000000..68a21258f8c9e05343ec38ab64e2d3bc851ea749 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-10.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-10 + + +[1] securities scam in harshad mehta and three others to 5 @-@ 5 years + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-11.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-11.html new file mode 100644 index 0000000000000000000000000000000000000000..86a8180b2f2896aa02ef54e9b029fc0cb52cd236 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-11.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-11 + + +[1] defense minister threat + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-12.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-12.html new file mode 100644 index 0000000000000000000000000000000000000000..d3db7bdf0c7c6cbdc56c8e1bd5ffc82fa74c3d3c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-12.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-12 + + +[1] india from neighbouring countries to maintain friendly relations in favour + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-13.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-13.html new file mode 100644 index 0000000000000000000000000000000000000000..f1af50c8a67ffb206dff0028b8cbe13274b01a50 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-13.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-13 + + +[1] manmohan not drums new delhi 31 august capital new delhi there was not @-@ revolution murdabad ' slogans and not + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-14.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-14.html new file mode 100644 index 0000000000000000000000000000000000000000..125d074e57a854e7b3feb3eb18ff732aa8e90a4d --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-14.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-14 + + +[1] world bank president james by india ' s economic development appreciation visit yashwant sinha accepted invitation + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-15.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-15.html new file mode 100644 index 0000000000000000000000000000000000000000..d05a5b057fbced92f116edefac59e5c87544f3a6 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-15.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-15 + + +[1] g @-@ 8 summit violence june 2 as leading countries 8 summit all over continued + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-16.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-16.html new file mode 100644 index 0000000000000000000000000000000000000000..07ad7a19adc4284479329a084b81ddb913362e27 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-16.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-16 + + +[1] professional lack will not be allowed to be june 2 central human resources minister said + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-17.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-17.html new file mode 100644 index 0000000000000000000000000000000000000000..b18262cd03678703ca42e979518bdfee5dfc8eec --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-17.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-17 + + +[1] vajpayee sonia s visit to new zeal in kashmir june is atmosphere + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-18.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-18.html new file mode 100644 index 0000000000000000000000000000000000000000..23418555b9f74642da4ac2d12bddb350af457cb9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-18.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-18 + + +[1] poll of india journey of right way june 2 indian space kasturirangan will be sent + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-19.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-19.html new file mode 100644 index 0000000000000000000000000000000000000000..3915d1a29b2c3794ed5d8a0860d5d8b46c522d7c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-19.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-19 + + +[1] military in to take stock june 2 rajasthan border jaisalmer district in stock yesterday began + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-20.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-20.html new file mode 100644 index 0000000000000000000000000000000000000000..f29c6662f60ef116cc87d83833b5cc2a3e69925c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-20.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-20 + + +[1] government project ' tiger ' successful project june 2 environment and forests of ministry + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-21.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-21.html new file mode 100644 index 0000000000000000000000000000000000000000..242f63b5c5cd519d68b9310d264d7b9bab3e30e9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-21.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-21 + + +[1] crime + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-22.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-22.html new file mode 100644 index 0000000000000000000000000000000000000000..90a5962f61675bdb12fc8742aa24cc3b392e7622 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-22.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-22 + + +[1] india pakistan deeds to answer capable of + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-23.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-23.html new file mode 100644 index 0000000000000000000000000000000000000000..c0ea66d2704fd4ea0a9c087d9e0d342568e8c3db --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-23.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-23 + + +[1] sun enrich nation to make plan kanchipuram june 19 + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-24.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-24.html new file mode 100644 index 0000000000000000000000000000000000000000..6b237796ecb4ad0a651b32999d0b555a700307f9 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-24.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-24 + + +[1] roadways bus and impact + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-25.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-25.html new file mode 100644 index 0000000000000000000000000000000000000000..0a85c3f174b0d9a970f10abb9f381bdf2dcc44d5 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/SL2003/systems/SL.P.10.R.24.SL062003-25.html @@ -0,0 +1,9 @@ + + +SL.P.10.R.24.SL062003-25 + + +[1] india and pakistan in kashmir can become medium @-@ mooftee srinagar june 20 + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.C.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.C.spl new file mode 100644 index 0000000000000000000000000000000000000000..cf5322f9961fe138f500ebeed8535be84ac01a3e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.C.spl @@ -0,0 +1,11 @@ +BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +withCCC crimesCCC againstCCC humanityCCC +includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.D.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.D.spl new file mode 100644 index 0000000000000000000000000000000000000000..9b14dedf7cdcdd419bfe2e07af24204bfa184a9e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.D.spl @@ -0,0 +1,11 @@ +BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +withDDD crimesDDD againstDDD humanityDDD +includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.E.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.E.spl new file mode 100644 index 0000000000000000000000000000000000000000..64d076352ec069bdd77b9a9f148614ad92eaf1bf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.E.spl @@ -0,0 +1,11 @@ +BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +withEEE crimesEEE againstEEE humanityEEE +includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.F.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.F.spl new file mode 100644 index 0000000000000000000000000000000000000000..05e7e47b841798d5e85097e7b88b49170037c85f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.F.spl @@ -0,0 +1,11 @@ +BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +withFFF crimesFFF againstFFF humanityFFF +includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.G.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.G.spl new file mode 100644 index 0000000000000000000000000000000000000000..f7a6b37bbc930af0a7a3d83dbfdec92d559d316e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.M.100.A.G.spl @@ -0,0 +1,11 @@ +BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +withGGG crimesGGG againstGGG humanityGGG +includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0001.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0001.spl new file mode 100644 index 0000000000000000000000000000000000000000..cf5322f9961fe138f500ebeed8535be84ac01a3e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0001.spl @@ -0,0 +1,11 @@ +BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +withCCC crimesCCC againstCCC humanityCCC +includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0002.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0002.spl new file mode 100644 index 0000000000000000000000000000000000000000..cf5322f9961fe138f500ebeed8535be84ac01a3e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0002.spl @@ -0,0 +1,11 @@ +BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +withCCC crimesCCC againstCCC humanityCCC +includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0003.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0003.spl new file mode 100644 index 0000000000000000000000000000000000000000..cf5322f9961fe138f500ebeed8535be84ac01a3e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0003.spl @@ -0,0 +1,11 @@ +BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +withCCC crimesCCC againstCCC humanityCCC +includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0004.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0004.spl new file mode 100644 index 0000000000000000000000000000000000000000..cf5322f9961fe138f500ebeed8535be84ac01a3e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.C.ISI08012003.0004.spl @@ -0,0 +1,11 @@ +BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +withCCC crimesCCC againstCCC humanityCCC +includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0001.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0001.spl new file mode 100644 index 0000000000000000000000000000000000000000..9b14dedf7cdcdd419bfe2e07af24204bfa184a9e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0001.spl @@ -0,0 +1,11 @@ +BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +withDDD crimesDDD againstDDD humanityDDD +includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0002.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0002.spl new file mode 100644 index 0000000000000000000000000000000000000000..9b14dedf7cdcdd419bfe2e07af24204bfa184a9e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0002.spl @@ -0,0 +1,11 @@ +BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +withDDD crimesDDD againstDDD humanityDDD +includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0003.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0003.spl new file mode 100644 index 0000000000000000000000000000000000000000..9b14dedf7cdcdd419bfe2e07af24204bfa184a9e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0003.spl @@ -0,0 +1,11 @@ +BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +withDDD crimesDDD againstDDD humanityDDD +includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0004.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0004.spl new file mode 100644 index 0000000000000000000000000000000000000000..9b14dedf7cdcdd419bfe2e07af24204bfa184a9e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.D.ISI08012003.0004.spl @@ -0,0 +1,11 @@ +BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +withDDD crimesDDD againstDDD humanityDDD +includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0001.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0001.spl new file mode 100644 index 0000000000000000000000000000000000000000..64d076352ec069bdd77b9a9f148614ad92eaf1bf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0001.spl @@ -0,0 +1,11 @@ +BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +withEEE crimesEEE againstEEE humanityEEE +includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0002.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0002.spl new file mode 100644 index 0000000000000000000000000000000000000000..64d076352ec069bdd77b9a9f148614ad92eaf1bf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0002.spl @@ -0,0 +1,11 @@ +BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +withEEE crimesEEE againstEEE humanityEEE +includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0003.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0003.spl new file mode 100644 index 0000000000000000000000000000000000000000..64d076352ec069bdd77b9a9f148614ad92eaf1bf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0003.spl @@ -0,0 +1,11 @@ +BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +withEEE crimesEEE againstEEE humanityEEE +includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0004.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0004.spl new file mode 100644 index 0000000000000000000000000000000000000000..64d076352ec069bdd77b9a9f148614ad92eaf1bf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.E.ISI08012003.0004.spl @@ -0,0 +1,11 @@ +BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +withEEE crimesEEE againstEEE humanityEEE +includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0001.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0001.spl new file mode 100644 index 0000000000000000000000000000000000000000..05e7e47b841798d5e85097e7b88b49170037c85f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0001.spl @@ -0,0 +1,11 @@ +BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +withFFF crimesFFF againstFFF humanityFFF +includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0002.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0002.spl new file mode 100644 index 0000000000000000000000000000000000000000..05e7e47b841798d5e85097e7b88b49170037c85f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0002.spl @@ -0,0 +1,11 @@ +BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +withFFF crimesFFF againstFFF humanityFFF +includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0003.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0003.spl new file mode 100644 index 0000000000000000000000000000000000000000..05e7e47b841798d5e85097e7b88b49170037c85f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0003.spl @@ -0,0 +1,11 @@ +BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +withFFF crimesFFF againstFFF humanityFFF +includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0004.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0004.spl new file mode 100644 index 0000000000000000000000000000000000000000..05e7e47b841798d5e85097e7b88b49170037c85f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.F.ISI08012003.0004.spl @@ -0,0 +1,11 @@ +BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +withFFF crimesFFF againstFFF humanityFFF +includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0001.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0001.spl new file mode 100644 index 0000000000000000000000000000000000000000..f7a6b37bbc930af0a7a3d83dbfdec92d559d316e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0001.spl @@ -0,0 +1,11 @@ +BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +withGGG crimesGGG againstGGG humanityGGG +includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0002.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0002.spl new file mode 100644 index 0000000000000000000000000000000000000000..f7a6b37bbc930af0a7a3d83dbfdec92d559d316e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0002.spl @@ -0,0 +1,11 @@ +BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +withGGG crimesGGG againstGGG humanityGGG +includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0003.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0003.spl new file mode 100644 index 0000000000000000000000000000000000000000..f7a6b37bbc930af0a7a3d83dbfdec92d559d316e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0003.spl @@ -0,0 +1,11 @@ +BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +withGGG crimesGGG againstGGG humanityGGG +includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0004.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0004.spl new file mode 100644 index 0000000000000000000000000000000000000000..f7a6b37bbc930af0a7a3d83dbfdec92d559d316e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00000.P.10.A.G.ISI08012003.0004.spl @@ -0,0 +1,11 @@ +BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +withGGG crimesGGG againstGGG humanityGGG +includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.C.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.C.spl new file mode 100644 index 0000000000000000000000000000000000000000..cf5322f9961fe138f500ebeed8535be84ac01a3e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.C.spl @@ -0,0 +1,11 @@ +BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +withCCC crimesCCC againstCCC humanityCCC +includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.D.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.D.spl new file mode 100644 index 0000000000000000000000000000000000000000..9b14dedf7cdcdd419bfe2e07af24204bfa184a9e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.D.spl @@ -0,0 +1,11 @@ +BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +withDDD crimesDDD againstDDD humanityDDD +includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.E.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.E.spl new file mode 100644 index 0000000000000000000000000000000000000000..64d076352ec069bdd77b9a9f148614ad92eaf1bf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.E.spl @@ -0,0 +1,11 @@ +BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +withEEE crimesEEE againstEEE humanityEEE +includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.F.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.F.spl new file mode 100644 index 0000000000000000000000000000000000000000..05e7e47b841798d5e85097e7b88b49170037c85f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.F.spl @@ -0,0 +1,11 @@ +BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +withFFF crimesFFF againstFFF humanityFFF +includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.G.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.G.spl new file mode 100644 index 0000000000000000000000000000000000000000..f7a6b37bbc930af0a7a3d83dbfdec92d559d316e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00001.M.100.A.G.spl @@ -0,0 +1,11 @@ +BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +withGGG crimesGGG againstGGG humanityGGG +includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.C.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.C.spl new file mode 100644 index 0000000000000000000000000000000000000000..cf5322f9961fe138f500ebeed8535be84ac01a3e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.C.spl @@ -0,0 +1,11 @@ +BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +withCCC crimesCCC againstCCC humanityCCC +includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.D.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.D.spl new file mode 100644 index 0000000000000000000000000000000000000000..9b14dedf7cdcdd419bfe2e07af24204bfa184a9e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.D.spl @@ -0,0 +1,11 @@ +BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +withDDD crimesDDD againstDDD humanityDDD +includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.E.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.E.spl new file mode 100644 index 0000000000000000000000000000000000000000..64d076352ec069bdd77b9a9f148614ad92eaf1bf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.E.spl @@ -0,0 +1,11 @@ +BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +withEEE crimesEEE againstEEE humanityEEE +includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.F.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.F.spl new file mode 100644 index 0000000000000000000000000000000000000000..05e7e47b841798d5e85097e7b88b49170037c85f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.F.spl @@ -0,0 +1,11 @@ +BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +withFFF crimesFFF againstFFF humanityFFF +includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.G.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.G.spl new file mode 100644 index 0000000000000000000000000000000000000000..f7a6b37bbc930af0a7a3d83dbfdec92d559d316e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00002.M.100.A.G.spl @@ -0,0 +1,11 @@ +BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +withGGG crimesGGG againstGGG humanityGGG +includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.C.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.C.spl new file mode 100644 index 0000000000000000000000000000000000000000..cf5322f9961fe138f500ebeed8535be84ac01a3e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.C.spl @@ -0,0 +1,11 @@ +BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +withCCC crimesCCC againstCCC humanityCCC +includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.D.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.D.spl new file mode 100644 index 0000000000000000000000000000000000000000..9b14dedf7cdcdd419bfe2e07af24204bfa184a9e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.D.spl @@ -0,0 +1,11 @@ +BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +withDDD crimesDDD againstDDD humanityDDD +includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.E.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.E.spl new file mode 100644 index 0000000000000000000000000000000000000000..64d076352ec069bdd77b9a9f148614ad92eaf1bf --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.E.spl @@ -0,0 +1,11 @@ +BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +withEEE crimesEEE againstEEE humanityEEE +includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.F.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.F.spl new file mode 100644 index 0000000000000000000000000000000000000000..05e7e47b841798d5e85097e7b88b49170037c85f --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.F.spl @@ -0,0 +1,11 @@ +BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +withFFF crimesFFF againstFFF humanityFFF +includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.G.spl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.G.spl new file mode 100644 index 0000000000000000000000000000000000000000..f7a6b37bbc930af0a7a3d83dbfdec92d559d316e --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/D00003.M.100.A.G.spl @@ -0,0 +1,11 @@ +BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +withGGG crimesGGG againstGGG humanityGGG +includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/mkSPL.pl b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/mkSPL.pl new file mode 100644 index 0000000000000000000000000000000000000000..8e704bb6d639754b11cfc32eca764ff2fd5684de --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify-SPL/mkSPL.pl @@ -0,0 +1,19 @@ +#!/usr/bin/perl -w +opendir(DIR,".")||die "Cannot open .\n"; +while(defined($file=readdir(DIR))) { + if($file=~/^(.+)\.html$/o) { + $ofile="$1\.spl"; + open(IN,$file)||die "Cannot open $file\n"; + open(OUT,">$ofile")||die "Cannot open $ofile\n"; + print "writing $ofile\n"; + while(defined($line=)) { + if($line=~/id=[0-9]+>([^<]+)<\/a>/o) { + $text=$1; + print OUT $text,"\n"; + } + } + close(IN); + close(OUT); + } +} +closedir(DIR); diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.C.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.C.html new file mode 100644 index 0000000000000000000000000000000000000000..964d0c1e17e2b93fa43a10bc103afc61f2362b25 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.C.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.C + + + + +[1] BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +[2] issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +[3] TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +[4] whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +[5] withCCC crimesCCC againstCCC humanityCCC +[6] includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +[7] TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +[8] butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +[9] PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +[10] suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +[11] evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.D.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.D.html new file mode 100644 index 0000000000000000000000000000000000000000..1998b8e4cc37fc7ef425fabf205ff574a0a3c6b3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.D.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.D + + + + +[1] BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +[2] issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +[3] TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +[4] whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +[5] withDDD crimesDDD againstDDD humanityDDD +[6] includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +[7] TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +[8] butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +[9] PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +[10] suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +[11] evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.E.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.E.html new file mode 100644 index 0000000000000000000000000000000000000000..3c9378075c3995fd056e71328cc899081bdfc79b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.E.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.E + + + + +[1] BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +[2] issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +[3] TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +[4] whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +[5] withEEE crimesEEE againstEEE humanityEEE +[6] includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +[7] TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +[8] butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +[9] PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +[10] suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +[11] evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.F.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.F.html new file mode 100644 index 0000000000000000000000000000000000000000..1071b349d6391bb38a30e5ee5c923fa776839d1c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.F.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.F + + + + +[1] BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +[2] issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +[3] TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +[4] whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +[5] withFFF crimesFFF againstFFF humanityFFF +[6] includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +[7] TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +[8] butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +[9] PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +[10] suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +[11] evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.G.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.G.html new file mode 100644 index 0000000000000000000000000000000000000000..0210e5d833378f5692c9315a2dce6f0546e06495 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.M.100.A.G.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.G + + + + +[1] BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +[2] issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +[3] TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +[4] whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +[5] withGGG crimesGGG againstGGG humanityGGG +[6] includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +[7] TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +[8] butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +[9] PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +[10] suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +[11] evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0001.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0001.html new file mode 100644 index 0000000000000000000000000000000000000000..964d0c1e17e2b93fa43a10bc103afc61f2362b25 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0001.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.C + + + + +[1] BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +[2] issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +[3] TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +[4] whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +[5] withCCC crimesCCC againstCCC humanityCCC +[6] includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +[7] TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +[8] butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +[9] PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +[10] suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +[11] evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0002.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0002.html new file mode 100644 index 0000000000000000000000000000000000000000..964d0c1e17e2b93fa43a10bc103afc61f2362b25 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0002.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.C + + + + +[1] BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +[2] issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +[3] TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +[4] whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +[5] withCCC crimesCCC againstCCC humanityCCC +[6] includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +[7] TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +[8] butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +[9] PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +[10] suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +[11] evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0003.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0003.html new file mode 100644 index 0000000000000000000000000000000000000000..964d0c1e17e2b93fa43a10bc103afc61f2362b25 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0003.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.C + + + + +[1] BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +[2] issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +[3] TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +[4] whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +[5] withCCC crimesCCC againstCCC humanityCCC +[6] includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +[7] TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +[8] butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +[9] PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +[10] suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +[11] evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0004.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0004.html new file mode 100644 index 0000000000000000000000000000000000000000..964d0c1e17e2b93fa43a10bc103afc61f2362b25 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.C.ISI08012003.0004.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.C + + + + +[1] BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +[2] issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +[3] TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +[4] whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +[5] withCCC crimesCCC againstCCC humanityCCC +[6] includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +[7] TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +[8] butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +[9] PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +[10] suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +[11] evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0001.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0001.html new file mode 100644 index 0000000000000000000000000000000000000000..1998b8e4cc37fc7ef425fabf205ff574a0a3c6b3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0001.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.D + + + + +[1] BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +[2] issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +[3] TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +[4] whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +[5] withDDD crimesDDD againstDDD humanityDDD +[6] includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +[7] TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +[8] butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +[9] PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +[10] suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +[11] evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0002.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0002.html new file mode 100644 index 0000000000000000000000000000000000000000..1998b8e4cc37fc7ef425fabf205ff574a0a3c6b3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0002.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.D + + + + +[1] BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +[2] issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +[3] TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +[4] whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +[5] withDDD crimesDDD againstDDD humanityDDD +[6] includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +[7] TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +[8] butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +[9] PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +[10] suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +[11] evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0003.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0003.html new file mode 100644 index 0000000000000000000000000000000000000000..1998b8e4cc37fc7ef425fabf205ff574a0a3c6b3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0003.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.D + + + + +[1] BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +[2] issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +[3] TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +[4] whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +[5] withDDD crimesDDD againstDDD humanityDDD +[6] includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +[7] TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +[8] butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +[9] PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +[10] suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +[11] evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0004.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0004.html new file mode 100644 index 0000000000000000000000000000000000000000..1998b8e4cc37fc7ef425fabf205ff574a0a3c6b3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.D.ISI08012003.0004.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.D + + + + +[1] BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +[2] issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +[3] TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +[4] whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +[5] withDDD crimesDDD againstDDD humanityDDD +[6] includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +[7] TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +[8] butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +[9] PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +[10] suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +[11] evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0001.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0001.html new file mode 100644 index 0000000000000000000000000000000000000000..3c9378075c3995fd056e71328cc899081bdfc79b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0001.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.E + + + + +[1] BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +[2] issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +[3] TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +[4] whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +[5] withEEE crimesEEE againstEEE humanityEEE +[6] includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +[7] TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +[8] butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +[9] PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +[10] suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +[11] evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0002.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0002.html new file mode 100644 index 0000000000000000000000000000000000000000..3c9378075c3995fd056e71328cc899081bdfc79b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0002.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.E + + + + +[1] BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +[2] issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +[3] TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +[4] whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +[5] withEEE crimesEEE againstEEE humanityEEE +[6] includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +[7] TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +[8] butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +[9] PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +[10] suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +[11] evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0003.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0003.html new file mode 100644 index 0000000000000000000000000000000000000000..3c9378075c3995fd056e71328cc899081bdfc79b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0003.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.E + + + + +[1] BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +[2] issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +[3] TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +[4] whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +[5] withEEE crimesEEE againstEEE humanityEEE +[6] includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +[7] TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +[8] butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +[9] PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +[10] suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +[11] evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0004.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0004.html new file mode 100644 index 0000000000000000000000000000000000000000..3c9378075c3995fd056e71328cc899081bdfc79b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.E.ISI08012003.0004.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.E + + + + +[1] BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +[2] issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +[3] TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +[4] whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +[5] withEEE crimesEEE againstEEE humanityEEE +[6] includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +[7] TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +[8] butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +[9] PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +[10] suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +[11] evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0001.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0001.html new file mode 100644 index 0000000000000000000000000000000000000000..1071b349d6391bb38a30e5ee5c923fa776839d1c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0001.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.F + + + + +[1] BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +[2] issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +[3] TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +[4] whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +[5] withFFF crimesFFF againstFFF humanityFFF +[6] includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +[7] TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +[8] butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +[9] PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +[10] suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +[11] evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0002.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0002.html new file mode 100644 index 0000000000000000000000000000000000000000..1071b349d6391bb38a30e5ee5c923fa776839d1c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0002.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.F + + + + +[1] BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +[2] issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +[3] TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +[4] whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +[5] withFFF crimesFFF againstFFF humanityFFF +[6] includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +[7] TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +[8] butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +[9] PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +[10] suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +[11] evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0003.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0003.html new file mode 100644 index 0000000000000000000000000000000000000000..1071b349d6391bb38a30e5ee5c923fa776839d1c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0003.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.F + + + + +[1] BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +[2] issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +[3] TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +[4] whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +[5] withFFF crimesFFF againstFFF humanityFFF +[6] includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +[7] TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +[8] butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +[9] PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +[10] suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +[11] evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0004.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0004.html new file mode 100644 index 0000000000000000000000000000000000000000..1071b349d6391bb38a30e5ee5c923fa776839d1c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.F.ISI08012003.0004.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.F + + + + +[1] BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +[2] issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +[3] TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +[4] whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +[5] withFFF crimesFFF againstFFF humanityFFF +[6] includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +[7] TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +[8] butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +[9] PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +[10] suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +[11] evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0001.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0001.html new file mode 100644 index 0000000000000000000000000000000000000000..0210e5d833378f5692c9315a2dce6f0546e06495 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0001.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.G + + + + +[1] BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +[2] issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +[3] TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +[4] whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +[5] withGGG crimesGGG againstGGG humanityGGG +[6] includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +[7] TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +[8] butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +[9] PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +[10] suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +[11] evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0002.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0002.html new file mode 100644 index 0000000000000000000000000000000000000000..0210e5d833378f5692c9315a2dce6f0546e06495 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0002.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.G + + + + +[1] BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +[2] issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +[3] TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +[4] whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +[5] withGGG crimesGGG againstGGG humanityGGG +[6] includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +[7] TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +[8] butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +[9] PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +[10] suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +[11] evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0003.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0003.html new file mode 100644 index 0000000000000000000000000000000000000000..0210e5d833378f5692c9315a2dce6f0546e06495 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0003.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.G + + + + +[1] BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +[2] issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +[3] TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +[4] whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +[5] withGGG crimesGGG againstGGG humanityGGG +[6] includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +[7] TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +[8] butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +[9] PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +[10] suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +[11] evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0004.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0004.html new file mode 100644 index 0000000000000000000000000000000000000000..0210e5d833378f5692c9315a2dce6f0546e06495 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00000.P.10.A.G.ISI08012003.0004.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.G + + + + +[1] BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +[2] issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +[3] TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +[4] whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +[5] withGGG crimesGGG againstGGG humanityGGG +[6] includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +[7] TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +[8] butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +[9] PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +[10] suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +[11] evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.C.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.C.html new file mode 100644 index 0000000000000000000000000000000000000000..964d0c1e17e2b93fa43a10bc103afc61f2362b25 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.C.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.C + + + + +[1] BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +[2] issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +[3] TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +[4] whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +[5] withCCC crimesCCC againstCCC humanityCCC +[6] includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +[7] TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +[8] butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +[9] PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +[10] suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +[11] evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.D.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.D.html new file mode 100644 index 0000000000000000000000000000000000000000..1998b8e4cc37fc7ef425fabf205ff574a0a3c6b3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.D.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.D + + + + +[1] BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +[2] issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +[3] TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +[4] whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +[5] withDDD crimesDDD againstDDD humanityDDD +[6] includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +[7] TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +[8] butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +[9] PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +[10] suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +[11] evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.E.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.E.html new file mode 100644 index 0000000000000000000000000000000000000000..3c9378075c3995fd056e71328cc899081bdfc79b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.E.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.E + + + + +[1] BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +[2] issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +[3] TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +[4] whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +[5] withEEE crimesEEE againstEEE humanityEEE +[6] includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +[7] TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +[8] butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +[9] PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +[10] suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +[11] evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.F.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.F.html new file mode 100644 index 0000000000000000000000000000000000000000..1071b349d6391bb38a30e5ee5c923fa776839d1c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.F.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.F + + + + +[1] BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +[2] issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +[3] TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +[4] whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +[5] withFFF crimesFFF againstFFF humanityFFF +[6] includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +[7] TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +[8] butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +[9] PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +[10] suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +[11] evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.G.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.G.html new file mode 100644 index 0000000000000000000000000000000000000000..0210e5d833378f5692c9315a2dce6f0546e06495 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00001.M.100.A.G.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.G + + + + +[1] BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +[2] issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +[3] TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +[4] whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +[5] withGGG crimesGGG againstGGG humanityGGG +[6] includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +[7] TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +[8] butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +[9] PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +[10] suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +[11] evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.C.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.C.html new file mode 100644 index 0000000000000000000000000000000000000000..964d0c1e17e2b93fa43a10bc103afc61f2362b25 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.C.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.C + + + + +[1] BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +[2] issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +[3] TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +[4] whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +[5] withCCC crimesCCC againstCCC humanityCCC +[6] includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +[7] TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +[8] butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +[9] PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +[10] suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +[11] evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.D.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.D.html new file mode 100644 index 0000000000000000000000000000000000000000..1998b8e4cc37fc7ef425fabf205ff574a0a3c6b3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.D.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.D + + + + +[1] BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +[2] issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +[3] TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +[4] whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +[5] withDDD crimesDDD againstDDD humanityDDD +[6] includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +[7] TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +[8] butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +[9] PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +[10] suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +[11] evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.E.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.E.html new file mode 100644 index 0000000000000000000000000000000000000000..3c9378075c3995fd056e71328cc899081bdfc79b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.E.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.E + + + + +[1] BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +[2] issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +[3] TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +[4] whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +[5] withEEE crimesEEE againstEEE humanityEEE +[6] includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +[7] TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +[8] butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +[9] PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +[10] suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +[11] evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.F.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.F.html new file mode 100644 index 0000000000000000000000000000000000000000..1071b349d6391bb38a30e5ee5c923fa776839d1c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.F.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.F + + + + +[1] BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +[2] issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +[3] TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +[4] whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +[5] withFFF crimesFFF againstFFF humanityFFF +[6] includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +[7] TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +[8] butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +[9] PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +[10] suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +[11] evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.G.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.G.html new file mode 100644 index 0000000000000000000000000000000000000000..0210e5d833378f5692c9315a2dce6f0546e06495 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00002.M.100.A.G.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.G + + + + +[1] BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +[2] issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +[3] TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +[4] whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +[5] withGGG crimesGGG againstGGG humanityGGG +[6] includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +[7] TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +[8] butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +[9] PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +[10] suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +[11] evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.C.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.C.html new file mode 100644 index 0000000000000000000000000000000000000000..964d0c1e17e2b93fa43a10bc103afc61f2362b25 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.C.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.C + + + + +[1] BritishCCC authoritiesCCC arrestedCCC GeneralCCC AugustoCCC PinochetCCC inCCC LondonCCC forCCC backCCC surgeryCCC onCCC anCCC internationalCCC warrantCCC +[2] issuedCCC byCCC SpanishCCC magistrateCCC BaltasarCCC GarzonCCC +[3] TheCCC MadridCCC courtCCC chargedCCC PinochetCCC +[4] whoCCC ruledCCC ChileCCC asCCC aCCC despotCCC forCCC yearsCCC +[5] withCCC crimesCCC againstCCC humanityCCC +[6] includingCCC genocideCCC andCCC terrorismCCC involvingCCC theCCC deathsCCC ofCCC moreCCC thanCCC peopleCCC +[7] TheCCC ChileanCCC governmentCCC protestedCCC thatCCC PinochetCCC nowCCC aCCC hasCCC legalCCC immunityCCC +[8] butCCC fewCCC inCCC ChileanCCC societyCCC protestedCCC theCCC arrestCCC +[9] PinochetCCC arrestCCC showsCCC theCCC growingCCC significanceCCC ofCCC internationalCCC lawCCC +[10] suggestingCCC thatCCC officialsCCC accusedCCC ofCCC atrocitiesCCC haveCCC fewerCCC placesCCC toCCC hideCCC theseCCC daysCCC +[11] evenCCC ifCCC theyCCC areCCC carryingCCC diplomaticCCC passportsCCC + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.D.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.D.html new file mode 100644 index 0000000000000000000000000000000000000000..1998b8e4cc37fc7ef425fabf205ff574a0a3c6b3 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.D.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.D + + + + +[1] BritishDDD authoritiesDDD arrestedDDD GeneralDDD AugustoDDD PinochetDDD inDDD LondonDDD forDDD backDDD surgeryDDD onDDD anDDD internationalDDD warrantDDD +[2] issuedDDD byDDD SpanishDDD magistrateDDD BaltasarDDD GarzonDDD +[3] TheDDD MadridDDD courtDDD chargedDDD PinochetDDD +[4] whoDDD ruledDDD ChileDDD asDDD aDDD despotDDD forDDD yearsDDD +[5] withDDD crimesDDD againstDDD humanityDDD +[6] includingDDD genocideDDD andDDD terrorismDDD involvingDDD theDDD deathsDDD ofDDD moreDDD thanDDD peopleDDD +[7] TheDDD ChileanDDD governmentDDD protestedDDD thatDDD PinochetDDD nowDDD aDDD hasDDD legalDDD immunityDDD +[8] butDDD fewDDD inDDD ChileanDDD societyDDD protestedDDD theDDD arrestDDD +[9] PinochetDDD arrestDDD showsDDD theDDD growingDDD significanceDDD ofDDD internationalDDD lawDDD +[10] suggestingDDD thatDDD officialsDDD accusedDDD ofDDD atrocitiesDDD haveDDD fewerDDD placesDDD toDDD hideDDD theseDDD daysDDD +[11] evenDDD ifDDD theyDDD areDDD carryingDDD diplomaticDDD passportsDDD + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.E.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.E.html new file mode 100644 index 0000000000000000000000000000000000000000..3c9378075c3995fd056e71328cc899081bdfc79b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.E.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.E + + + + +[1] BritishEEE authoritiesEEE arrestedEEE GeneralEEE AugustoEEE PinochetEEE inEEE LondonEEE forEEE backEEE surgeryEEE onEEE anEEE internationalEEE warrantEEE +[2] issuedEEE byEEE SpanishEEE magistrateEEE BaltasarEEE GarzonEEE +[3] TheEEE MadridEEE courtEEE chargedEEE PinochetEEE +[4] whoEEE ruledEEE ChileEEE asEEE aEEE despotEEE forEEE yearsEEE +[5] withEEE crimesEEE againstEEE humanityEEE +[6] includingEEE genocideEEE andEEE terrorismEEE involvingEEE theEEE deathsEEE ofEEE moreEEE thanEEE peopleEEE +[7] TheEEE ChileanEEE governmentEEE protestedEEE thatEEE PinochetEEE nowEEE aEEE hasEEE legalEEE immunityEEE +[8] butEEE fewEEE inEEE ChileanEEE societyEEE protestedEEE theEEE arrestEEE +[9] PinochetEEE arrestEEE showsEEE theEEE growingEEE significanceEEE ofEEE internationalEEE lawEEE +[10] suggestingEEE thatEEE officialsEEE accusedEEE ofEEE atrocitiesEEE haveEEE fewerEEE placesEEE toEEE hideEEE theseEEE daysEEE +[11] evenEEE ifEEE theyEEE areEEE carryingEEE diplomaticEEE passportsEEE + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.F.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.F.html new file mode 100644 index 0000000000000000000000000000000000000000..1071b349d6391bb38a30e5ee5c923fa776839d1c --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.F.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.F + + + + +[1] BritishFFF authoritiesFFF arrestedFFF GeneralFFF AugustoFFF PinochetFFF inFFF LondonFFF forFFF backFFF surgeryFFF onFFF anFFF internationalFFF warrantFFF +[2] issuedFFF byFFF SpanishFFF magistrateFFF BaltasarFFF GarzonFFF +[3] TheFFF MadridFFF courtFFF chargedFFF PinochetFFF +[4] whoFFF ruledFFF ChileFFF asFFF aFFF despotFFF forFFF yearsFFF +[5] withFFF crimesFFF againstFFF humanityFFF +[6] includingFFF genocideFFF andFFF terrorismFFF involvingFFF theFFF deathsFFF ofFFF moreFFF thanFFF peopleFFF +[7] TheFFF ChileanFFF governmentFFF protestedFFF thatFFF PinochetFFF nowFFF aFFF hasFFF legalFFF immunityFFF +[8] butFFF fewFFF inFFF ChileanFFF societyFFF protestedFFF theFFF arrestFFF +[9] PinochetFFF arrestFFF showsFFF theFFF growingFFF significanceFFF ofFFF internationalFFF lawFFF +[10] suggestingFFF thatFFF officialsFFF accusedFFF ofFFF atrocitiesFFF haveFFF fewerFFF placesFFF toFFF hideFFF theseFFF daysFFF +[11] evenFFF ifFFF theyFFF areFFF carryingFFF diplomaticFFF passportsFFF + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.G.html b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.G.html new file mode 100644 index 0000000000000000000000000000000000000000..0210e5d833378f5692c9315a2dce6f0546e06495 --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/Verify/D00003.M.100.A.G.html @@ -0,0 +1,20 @@ + + D00000.M.100.A.G + + + + +[1] BritishGGG authoritiesGGG arrestedGGG GeneralGGG AugustoGGG PinochetGGG inGGG LondonGGG forGGG backGGG surgeryGGG onGGG anGGG internationalGGG warrantGGG +[2] issuedGGG byGGG SpanishGGG magistrateGGG BaltasarGGG GarzonGGG +[3] TheGGG MadridGGG courtGGG chargedGGG PinochetGGG +[4] whoGGG ruledGGG ChileGGG asGGG aGGG despotGGG forGGG yearsGGG +[5] withGGG crimesGGG againstGGG humanityGGG +[6] includingGGG genocideGGG andGGG terrorismGGG involvingGGG theGGG deathsGGG ofGGG moreGGG thanGGG peopleGGG +[7] TheGGG ChileanGGG governmentGGG protestedGGG thatGGG PinochetGGG nowGGG aGGG hasGGG legalGGG immunityGGG +[8] butGGG fewGGG inGGG ChileanGGG societyGGG protestedGGG theGGG arrestGGG +[9] PinochetGGG arrestGGG showsGGG theGGG growingGGG significanceGGG ofGGG internationalGGG lawGGG +[10] suggestingGGG thatGGG officialsGGG accusedGGG ofGGG atrocitiesGGG haveGGG fewerGGG placesGGG toGGG hideGGG theseGGG daysGGG +[11] evenGGG ifGGG theyGGG areGGG carryingGGG diplomaticGGG passportsGGG + + + diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/verify-spl.xml b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/verify-spl.xml new file mode 100644 index 0000000000000000000000000000000000000000..309846beea8b4d227bc4c288300c14584bec00bd --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/verify-spl.xml @@ -0,0 +1,94 @@ + + + +Verify-SPL + + +Verify-SPL + + + + +

D00000.P.10.A.C.ISI08012003.0001.spl

+

D00000.P.10.A.D.ISI08012003.0001.spl

+

D00000.P.10.A.E.ISI08012003.0001.spl

+

D00000.P.10.A.F.ISI08012003.0001.spl

+

D00000.P.10.A.G.ISI08012003.0001.spl

+
+ +D00000.P.10.A.C.ISI08012003.0001.spl +D00000.P.10.A.D.ISI08012003.0001.spl +D00000.P.10.A.E.ISI08012003.0001.spl +D00000.P.10.A.F.ISI08012003.0001.spl + +
+ + +Verify-SPL + + +Verify-SPL + + + + +

D00000.P.10.A.C.ISI08012003.0002.spl

+

D00000.P.10.A.D.ISI08012003.0002.spl

+

D00000.P.10.A.E.ISI08012003.0002.spl

+

D00000.P.10.A.F.ISI08012003.0002.spl

+

D00000.P.10.A.G.ISI08012003.0002.spl

+
+ +D00000.P.10.A.C.ISI08012003.0002.spl +D00000.P.10.A.C.ISI08012003.0002.spl +D00000.P.10.A.E.ISI08012003.0002.spl +D00000.P.10.A.F.ISI08012003.0002.spl + +
+ + +Verify-SPL + + +Verify-SPL + + + + +

D00000.P.10.A.C.ISI08012003.0003.spl

+

D00000.P.10.A.D.ISI08012003.0003.spl

+

D00000.P.10.A.E.ISI08012003.0003.spl

+

D00000.P.10.A.F.ISI08012003.0003.spl

+

D00000.P.10.A.G.ISI08012003.0003.spl

+
+ +D00000.P.10.A.C.ISI08012003.0003.spl +D00000.P.10.A.C.ISI08012003.0003.spl +D00000.P.10.A.C.ISI08012003.0003.spl +D00000.P.10.A.F.ISI08012003.0003.spl + +
+ + +Verify-SPL + + +Verify-SPL + + + + +

D00000.P.10.A.C.ISI08012003.0004.spl

+

D00000.P.10.A.D.ISI08012003.0004.spl

+

D00000.P.10.A.E.ISI08012003.0004.spl

+

D00000.P.10.A.F.ISI08012003.0004.spl

+

D00000.P.10.A.G.ISI08012003.0004.spl

+
+ +D00000.P.10.A.C.ISI08012003.0004.spl +D00000.P.10.A.C.ISI08012003.0004.spl +D00000.P.10.A.C.ISI08012003.0004.spl +D00000.P.10.A.C.ISI08012003.0004.spl + +
+
diff --git a/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/verify.xml b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/verify.xml new file mode 100644 index 0000000000000000000000000000000000000000..0ce7c5f4bff07a487a732b31b393105eb398ac9b --- /dev/null +++ b/fastSum/resources/ROUGE/RELEASE-1.5.5/sample-test/verify.xml @@ -0,0 +1,94 @@ + + + +Verify + + +Verify + + + + +

D00000.P.10.A.C.ISI08012003.0001.html

+

D00000.P.10.A.D.ISI08012003.0001.html

+

D00000.P.10.A.E.ISI08012003.0001.html

+

D00000.P.10.A.F.ISI08012003.0001.html

+

D00000.P.10.A.G.ISI08012003.0001.html

+
+ +D00000.P.10.A.C.ISI08012003.0001.html +D00000.P.10.A.D.ISI08012003.0001.html +D00000.P.10.A.E.ISI08012003.0001.html +D00000.P.10.A.F.ISI08012003.0001.html + +
+ + +Verify + + +Verify + + + + +

D00000.P.10.A.C.ISI08012003.0002.html

+

D00000.P.10.A.D.ISI08012003.0002.html

+

D00000.P.10.A.E.ISI08012003.0002.html

+

D00000.P.10.A.F.ISI08012003.0002.html

+

D00000.P.10.A.G.ISI08012003.0002.html

+
+ +D00000.P.10.A.C.ISI08012003.0002.html +D00000.P.10.A.C.ISI08012003.0002.html +D00000.P.10.A.E.ISI08012003.0002.html +D00000.P.10.A.F.ISI08012003.0002.html + +
+ + +Verify + + +Verify + + + + +

D00000.P.10.A.C.ISI08012003.0003.html

+

D00000.P.10.A.D.ISI08012003.0003.html

+

D00000.P.10.A.E.ISI08012003.0003.html

+

D00000.P.10.A.F.ISI08012003.0003.html

+

D00000.P.10.A.G.ISI08012003.0003.html

+
+ +D00000.P.10.A.C.ISI08012003.0003.html +D00000.P.10.A.C.ISI08012003.0003.html +D00000.P.10.A.C.ISI08012003.0003.html +D00000.P.10.A.F.ISI08012003.0003.html + +
+ + +Verify + + +Verify + + + + +

D00000.P.10.A.C.ISI08012003.0004.html

+

D00000.P.10.A.D.ISI08012003.0004.html

+

D00000.P.10.A.E.ISI08012003.0004.html

+

D00000.P.10.A.F.ISI08012003.0004.html

+

D00000.P.10.A.G.ISI08012003.0004.html

+
+ +D00000.P.10.A.C.ISI08012003.0004.html +D00000.P.10.A.C.ISI08012003.0004.html +D00000.P.10.A.C.ISI08012003.0004.html +D00000.P.10.A.C.ISI08012003.0004.html + +
+
diff --git a/fastSum/resources/ROUGE/ROUGE-1.5.5.tgz b/fastSum/resources/ROUGE/ROUGE-1.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..aa4e6a6bba5358b75d9d4a2a87bdcd8cbe926d37 Binary files /dev/null and b/fastSum/resources/ROUGE/ROUGE-1.5.5.tgz differ diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46.tar.gz b/fastSum/resources/ROUGE/XML-DOM-1.46.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0e6ab11b5abe111f6e307dd9af2830fdef8fa5ca Binary files /dev/null and b/fastSum/resources/ROUGE/XML-DOM-1.46.tar.gz differ diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/BUGS b/fastSum/resources/ROUGE/XML-DOM-1.46/BUGS new file mode 100644 index 0000000000000000000000000000000000000000..a5701f539083aa6b7aae4fd2570c516c69fd9637 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/BUGS @@ -0,0 +1,10 @@ +There have been reports of XML::DOM core dumping when +the 'use diagnostics' pragma is set. Patches welcome! + +t/dom_jp_print fails when using a locally compiled Perl 5.8.0 +t/dom_jp_print........FAILED test 2 + Failed 1/3 tests, 66.67% okay + +The test passes with the Mandrake Perl 5.8.0 RPM - perhaps +it is a bug in Perl that Mandrake fixed in their release of +Perl 5.8.0? diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/Changes b/fastSum/resources/ROUGE/XML-DOM-1.46/Changes new file mode 100644 index 0000000000000000000000000000000000000000..b13d311c5a901c2b51880ead34bbb340a03698ea --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/Changes @@ -0,0 +1,483 @@ +Change History for XML-DOM: + +1.46 (tjmather) 09/21/2016 +- Correct name passed to WriteMakefile to XML::DOM (was XML/Dom) + +1.45 (tjmather) 08/16/2015 +- Fix pod errors and a typo ( Florian Schlichting ) +- properly encode output for printToFile ( Martin Ferrari, Gregor Herrmann ) + +1.44 (tjmather) 07/25/2005 +- Only use 'use bytes' where needed (by XML::RegExp) (Gisle Aas) + +1.43 (tjmather) 07/28/2003 +- Fixed bug that manifests itself with XML::Parser 2.32 and greater, +specify external style as 'XML::Parser::Dom' rather than just 'Dom'. +(Matt Sergeant) + +1.42 (tjmather) 12/05/2002 +- Fixed bug where XML::DOM doesn't encode some characters in +attribute values under Perl 5.8.0 (Steve Hay) +- Added t/dom_encode.t test to check encoding on attribute values +- Fixed warning message and use in XML::DOM::PerlSAX (Mike Castle) + +1.41 (tjmather) 10/19/2002 +- included XML-Parser-2.31.patch, required for XML::Parser +to work with 5.8.0 unicode +- use utf8 in unicode test scripts, fixes 5.8.0 test failures +NOTE - you should use the utf8 pragma in your programs if you +are passing utf8 to XML::DOM. +- only use encodeText for Perl < 5.6.0 +- replace match w/ substitution in AttDef::new, workaround for 5.8.0 unicode +- replace match w/ substitution in Default handler for non-paramter +entity reference, workaround for 5.8.0 unicode + +1.40 (tjmather) 10/13/2002 +- Fixed problem when defining user LWP object (Willems Luc) +- Autodetect whether to 'use bytes' (Ed Avis) +- Added dispose method to XML::DOM::Parser Synopsis (Ruben Diez) +- Fixed warning message in Attr.getValue method (Christian Lizell) + +1.39 (tjmather) 04/16/2002 +- Deletes value if both System ID and value are defined + (Brian Thomas) +- Fixed bug, now TextNode->getData doesn't expand entities when + NoExpand => 1, added t/dom_noexpand.t test script (Brian Thomas) + +1.38 (tjmather) 04/05/2002 +- Removed bin/pretty.pl, it is now in XML-Filter-Reindent +- Removed return from addCDATA function to fix memory leak + (Steve Hay) +- Added missing _to_sax method to ProcessingInstruction class + (Patrick Whittle) +- Removed extranous debugging statement from ExternEnt subroutine + (Jon Grov) + +1.37 (tjmather) 02/15/2002 +- parameter should be last argument of DocumentType::addEntity + (Patrick Whittle) + +1.36 (tjmather) 01/04/2002 +- Replaced 'our' with 'my' in t/dom_text.t, to work with perl < 5.6.0 + +1.35 (tjmather) 10/26/2001 +- Fixed bug with XML::DOM::Comment::_to_sax (Mark Pundsack) +- Added test for XML::DOM::Text::splitText (Michael Guennewig) + +1.34 (tjmather) 10/07/2001 +- Fixed bug with XML::DOM::Text::splitText (Michael Guennewig) +- The '>' character is now encoded in attribute values (Stephen Crowley) +- hasFeature now is case-insensitve for name of feature and + the version defaults to 1.0, in accordance with the DOM 1.0 + standard. (Wolfgang Mauerer) + +1.33 (tjmather) 8/29/2001 +- Added use bytes pragma to XML::DOM to fix unicode problems. + +1.32 (tjmather) 8/25/2001 +- Separated out XML::UM, XML::Filter::* and XML::Builder::* modules + into separate distributions (Idea of Matt Sergeant, as discussed + on perl-xml@listserver.activestate.com) +- Removed dependency on Parse::Yapp - shouldn't have been there in the first + place. + +1.31 (tjmather) 6/26/2001 +- Added dependency check for XML::RegExp in Makefile.PL + +1.30 (tjmather) 6/20/2001 +- XML::RegExp, XML::XQL, and XML::Checker separated out from libxml-enno, + and libxml-enno renamed to XML-DOM. + +libxml-enno-1.05 (tjmather) 5/14/2001 + +- DOM: Fixed XML/DOM.pm to include forward declaration for + XML::DOM::DocumentType (Oleh Khoma and Wolfgang Gassner) + +libxml-enno-1.04 (tjmather) 3/20/2001 + +- DOM: Fixed XML::DOM::DocumentType::replaceChild to call + SUPER::replaceChild instead of SUPER::appendChild (John Salmon) +- DOM: Fixed XML::DOM::Text::splitText to use substr instead of + (non-existant) substring and insertBefore instead of (non-existant) + insertAfter (Duncan Cameron) +- DOM: Fixed XML::DOM::Text::print to encode '>' and '"' (John Cope) +- DOM: Added code to convert Model argument of XML::Parser::Dom::Element + from XML::Parser::ContentModel to string. XML::Parser >= 2.28 passes + a XML::Parser::ContentModel object for the model arg of the Element handler + while earlier versions passed a string. Fixed cannot find equals + method in XML::Parser::ContentModel in dom_extent.t. +- DOM: Updated XML::DOM::Entity and XML::Parser::Dom::Entity to reflect + new Entity handler API in XML::Parser >= 2.28. There is a new isParam + parameter and the name no longer starts with '%' if it is a parameter + entity. +- DOM: Fixed errors in test cases t/build_dom.t t/dom_attr.t by changing + hair (none | blue | yellow) "yellow" to hair (none|blue|yellow) 'yellow' + Also fixed t/dom_jp_attr by changing equivalent japanese text. +- DOM: Fixed errors in test cases t/dom_print.t and t/dom_jp_print.t + by changing to + +- DOM: Fixed error in test 3 of t/dom_jp_attr.t under Perl 5.6.0 + by changing $FILE->print("$name $type") in XML::DOM::AttDef::print. + +libxml-enno-1.02 (enno) 3/2/2000 +- This release fixes some installation related stuff. + +- Changed =head3 pod directives to =head2 in XML/Checker.pm + This used to cause warnings when generating the man pages with pod2man. +- Changed dependency of XML::Parser::PerlSAX to require version 0.07. + libxml-perl 0.06 had a bad version number, causing a warning when doing 'make'. +- Removed the libxml-enno.ppd file from the distribution. As Matt Sergeant + pointed out, these PPD files are platform dependant and you can generate + them yourselves with 'make ppd'. If you still need one, try Simon Oliver's + website (see below.) + +libxml-enno-1.01 (enno) 2/17/2000 +- This release contains XML::DOM 1.27, XML::XQL 0.63 and XML::Checker 0.09. + +- Added FAQ.xml (Needs more stuff.) +- Added dependencies in Makefile.PL for LWP::UserAgent and XML::Parser::PerlSAX. + See Makefile.PL for details. +- Fixed XML::Filter::SAXT (a PerlSAX that works like Unix' tee command.) +- Renamed XML::DOM::PerlSAX to XML::Handler::BuildDOM. A warning will be issued + with -w if your code uses XML::DOM::PerlSAX. The reason for this change + is that the new name is more consistent with how other PerlSAX related + classes are named. + Also added a test case for it in t/build_dom.t. +- Added XML::Filter::DetectWS, a first stab at a PerlSAX filter that detects + ignorable whitespace. Needs more testing! +- Added XML::Filter::Reindent, a first stab at a PerlSAX filter that removes and + inserts whitespace into the PerlSAX event stream to reindent the XML document + for pretty printing functionality. Needs more testing! +- Added XML::Handler::Composer. Yet another XML printer/writer that has several + features missing in other implementations. + See docs for details. Needs more testing! +- Added bin/pretty.pl, an XML pretty printer that uses the previous 3 classes. +- Added XML::UM for encoding support when printing XML. Needs more testing! +- Added XML::Handler::PrintEvents for debugging PerlSAX filters/producers. +- Added a PPM description called: libxml-enno.ppd + I have no idea whether or how it works, so let me know! + (Thanks to Simon Oliver , who has more package + files at http://www.bi.umist.ac.uk/packages) + +- DOM: Reimplemented all Node types as a blessed array reference instead of a + blessed hash reference. This should speed things up and consume less memory. + Downside is that the code is harder to read and it's harder to extend the Node + classes. +- DOM: In XML::DOM::Element, attributes are stored in a NamedNodeMap with the + hash key 'A' (i.e. _A). Previously, the NamedNodeMap object was created even + if there were no attributes. For speed and memory reasons, we now create the + NamedNodeMap objects only when needed. +- DOM: The parsefile() method of XML::DOM::Parser now supports URLs. + It uses LWP to download the remote file. See XML::DOM::Parser documentation + for more info. This probably belongs in XML::Parser. +- DOM: Added new test cases in t/dom_jp_*.t and a Japanese XML file in + samples/minutes.xml. + (Thanks to OKABE, Keiichi ) +- DOM: Added support for parameter entity references (e.g. %pent;) in the DTD. + If the reference points to a SYSTEM entity and XML::Parser read and expanded + it (ParseParamEnt=1) and XML::DOM::Parser option ExpandParamEnt=0, then it will + still add the contents of the entity to the DTD, but the nodes are flagged as + 'Hidden'. In this case, it will also add an EntityReference node to the DTD. + The Hidden nodes are skipped when printing, so this way you can suppress the + expansion of external parameter entity references. Note that we still want to + add these hidden nodes to the DTD, because they might contain e.g. ENTITY + declarations that can be referenced further in the document. + See new testcase t/dom_extent.t. + (Thanks to Guillaume Rouchy ) + +libxml-enno-1.00 (enno) 10/26/1999 +- This is the first version of libxml-enno. It contains + XML::DOM 1.26, XML::XQL 0.62 and XML::Checker 0.08. + See Changes.DOM, Changes.XQL and Changes.Checker for the change history prior + to libxml-enno. + +- I redid the html documentation. Lots of cross links, more info. Check it out! +- Added XML::DOM::PerlSAX. It's a PerlSAX handler that builds DOM trees. +- Added XML::Filter::SAXT. It's a PerlSAX handler that forwards the callbacks + to 2 or more PerlSAX handlers, kind of like the Unix 'tee' command. +- Added XML::RegExp. It contains regular expressions for several XML tokens, + as defined in the XML spec. + +- DOM: XML::DOM warnings now go thru XML::DOM::warning() + (which uses warn by default) + You can redefine XML::DOM::warning() to change this behavior. + Currently, warning() is called only in one place: + in XML::DOM::AttListDecl::addAttDef when multiple attribute definitions exist + for the same attribute. +- DOM: I added the xql() method to XML::DOM::Node as yet another shortcut to + perform XQL queries on nodes. Make sure you 'use' XML::XQL and XML::XQL::DOM. + +1.25 (enno) 8/24/1999 +- Removed $`, $' and $& from code to speed up pattern matching in general +- Fixed replaceChild() to process a DocumentFragment correctly + (Thanks to Michael Stillwel ) +- Fixed appendChild, replaceChild and insertBefore for Document nodes, so you + can't add multiple Element nodes. +- The XmlDecl field was called XMLDecl in certain place. + (Thanks to Matt Sergeant ) +- Fixed the non-recursive getElementsByTagName + (Thanks to Geert Josten ) + +1.24 (enno) 8/2/1999 +- Processing Instructions inside an Element node were accidentally added to + the Document node. +- Added DOM.gif to the distribution and to the XML::DOM home page + (http://www.erols.com/enno/dom) which shows a logical view of the DOM + interfaces. (Thanks to Vance Christiaanse ) +- Added recurse option (2nd parameter) to getElementsByTagName. When set to 0, + it only returns direct child nodes. When not specified, it defaults to 1, + so it should not break existing code. Note that using 0 is not portable to + other DOM implementations. +- Fixed the regular expressions for XML tokens to include Unicode values > 127 +- Removed XML::DOM::UTF8 (it is no longer needed due to previous fix) +- Fixed encodeText(). In certain cases special characters (like ", < and &) + would not be converted to " etc. when writing attribute values. + (Thanks to Alon Salant ) +- When writing XML, single quotes were converted to &apos instead of ' + (Thanks to Galactic Taco ) + +1.23 (enno) 6/4/1999 +- Added XML::DOM::setTagCompression to give you control over how empty + element tags are printed. See XML::DOM documentation for details. +- Fixed CAVEAT section in XML::DOM documentation to refer to the www-dom + mailing list (as opposed to xml-dom.) + +1.22 (enno) 5/28/1999 +- The XML::DOM documentation was translated into Japanese by Takanori Kawai + (aka Hippo2000) at http://member.nifty.ne.jp/hippo2000/perltips/xml/dom.htm +- Fixed documentation of XML::DOM::Node::removeChild() + It used to list the exceptions HIERARCHY_REQUEST_ERR, WRONG_DOCUMENT_ERR. + (Thanks again, Takanori) +- XML::DOM::Entity::print was putting double quotes around the notation name + after the NDATA keyword. +- Added Unparsed handler that calls the Entity handler. +- Changed implementation of XML::Parser::Dom to use local variables for slight + performance improvement and easier exception handling. +- Removed support for old XML::Parser versions (for detecting whether attributes + were specified or defaulted.) + People should move to latest XML::Parser (currently version 2.23) +- If an ENTITY value was e.g. '"', it would be printed as """ + (Thanks to Raimund Jacob ) + +1.21 (enno) 4/27/1999 +- Fixed Start handler to work with new method specified_attr() in + XML::Parser 2.23 + +1.20 (enno) 4/16/1999 +- Fixed getPreviousSibling(). If the node was the first child, it would return + the last child of its parent instead of undef. + (Thanks to Christoph StueckJuergen ) + +1.19 (enno) 4/7/1999 +- Fixed memory leak: Final handler did not call dispose on a temporarily + created DocumentType object that was no longer needed. + (Thanks to Loic Dachary ) +- Fixed DocumentType::removeChildhoodMemories (which is called by dispose) + to work correctly when the DocumentType node is already decoupled from + the document. + +1.18 (enno) 3/15/1999 +- Fixed typo "DOM::XML::XmlUtf8Encode" in expandEntityRefs() to + XML::DOM::XmlUtf8Encode. + (Thanks to Manessinger Andreas ) +- XML::Parser 2.20 added the is_defaulted method, which improves performance + a bit when used. Benchmark (see below) went from 6.50s to 6.07s (7%) + You don't have to upgrade to 2.20, this change is backwards compatible. +- Copied node constants (e.g. ELEMENT_NODE) from XML::DOM::Node to XML::DOM, + so you can use ELEMENT_NODE instead of XML::DOM::ELEMENT_NODE. + The old style will still work. +- Fixed XmlUtf8Decode to add 'x' when printing hex entities (not used by + XML::DOM module, but other people might want to use it at some point) +- Fixed typo: DocumentType::getSysid should have been getSysId. + (Thanks to Bruce Kaskel ) +- Added DocumentType::setName, setSysId, setPubId +- Added Document::createDocumentType +- DocumentType::print no longer prints the square brackets if it has + no entities, notations or other children. (Thanks again, Bruce) +- The MacOS related bugs in the testcases etc. should all be fixed. + (Thanks to Arved Sandstrom and + Chris Nandor ) +- Added code to ignore Text Declarations from external parsed entities, i.e. + They were causing exceptions like + "XML::DOM::DOMException(Code=5, Name=INVALID_CHARACTER_ERR, Message=bad + Entity Name [] in EntityReference)" + (Thanks to Marcin Jagodzinski ) + +1.17 (enno) 2/26/1999 (This release was never deployed to CPAN) +- Added XML::DOM::UTF8 module which exploits Perl's new utf8 capabilities + (version 5.005_55 recommended.) If you don't use/require this module, XML::DOM + will work as it did before. If you do use/require it, it allows Unicode + characters with character codes > 127 in element and attibute names etc. + See XML::DOM::UTF8 man page for details. Note that this module hasn't been + tested thoroughly yet. +- Fixed Makefile.PL, it would accidentally install CheckAncestors.pm and + CmpDOM.pm which were only meant for the test cases. +- Added allowReservedNames, setAllowReservedNames to support checking for + reserved XML Names (element/attribute/entity/etc. names starting with "xml") +- Changed some print methods (in the DOCTYPE section) to use "\xA" as + an end-of-line delimiter instead of "\n". Since XML::Parser (expat) converts + all end-of-line sequences to "\xA", it makes sense that the print routines + are consistent with that. +- Fixed the testcases to convert "\n" to "\xA" before comparing test + results with expected results, so that they also work on Mac OS. + +1.16 (enno) 2/23/1999 +- Added XML::DOM::Element::setTagName +- Methods returning NodeList objects will now return regular perl lists when + called in list context, e.g: + @list = $elem->getChildNodes; # returns a list + $nodelist = $elem->getChildNodes; # return a NodeList (object reference) + Note that a NodeList is 'live' (except the one returned by + getElementsByTagName) and that a list is not 'live'. +- Fixed getElementsByTagName. + - It would return the node that it was called on (if the tagName matched) + - It would return the nodes in the wrong order (they should be in + document order) + +1.15 (enno) 2/12/1999 +- 28% Performance improvements. Benchmark was the following program: + + use XML::DOM; + $dom = XML::DOM::Parser->new; + my $doc = $dom->parsefile ("samples/REC-xml-19980210.xml"); + + Running it 20 times on a Sun Ultra-1, using the ksh function 'time', + the average time was 9.02s (real time.) XML::Parser 2.19, Perl 5.005_02. + As a comparison, XML-Grove-0.05 takes 2.17s running: + + use XML::Parser; + use XML::Parser::Grove; + use XML::Grove; + + $parser = XML::Parser->new(Style => 'Grove'); + $grove = $parser->parsefile ("samples/REC-xml-19980210.xml"); + + And XML::Parser 2.19 takes 0.71s running (i.e. building nothing): + + use XML::Parser; + $parser = XML::Parser->new; + $parser->parsefile ("samples/REC-xml-19980210.xml"); + + XML-Grove-0.40alpha takes 4.62s running the following script: + + use XML::Grove::Builder; + use XML::Parser::SAXPerl; + $grove_builder = XML::Grove::Builder->new; + $parser = XML::Parser::SAXPerl->new ( Handler => $grove_builder ); + $document = $parser->parse ( Source => { + SystemId => "samples/REC-xml-19980210.xml" } ); + + Each following improvement knocked a few tenths of a second off: + + - Reimplemented the ReadOnly mechanism, because it was spending a lot of + time in setReadOnly when parsing large documents (new time: 8.00s) + - Hacked appendChild to squeeze out a little speed (new time: 7.70s) + - Eliminated calls to addText in the Start handler which had to figure out + every time wether it should add a piece of text to a previous text node. + Now I keep track of whether the previous node was a text node in the + XML::DOM::Parser code and take care of adding the text and creating a + new Text node right there, without the overhead of several function calls + (new time: 6.45s) + +1.14 (enno) 15/1/1999 +- Bug in Document::dispose - it tried to call dispose on XMLDecl even + if it didn't exist +- Bug with XML::Parser 2.19 (and up): + XML::Parser 2.19 added support for CdataStart and CdataEnd handlers which + will call the Default handler instead if those handlers aren't defined. + This caused the exception "XML::DOM::DOMException(Code=5, Name=INVALID_CHARACTER_ERR, Message=bad Entity Name [] in EntityReference)" + whenever it encountered a CDATASection. + (Thanks to Roger Espinosa ) +- Added a new XML::DOM::Parser option 'KeepCDATA' which will store CDATASections + as CDATASection nodes instead of converting them to Text nodes (which is the + default/old behavior) +- Fixed bug in CDATASection print routine. It printed ") +- removeChildNodes was using $_, which was somehow messing up the global $_. + (Thanks again, Francois) + +1.11 (enno) 12/16/1998 +- Fixed checking of XML::Parser version number. Newer versions should be + allowed as well. Current version works with XML::Parser 2.17. + (Thanks to Martin Kolbuszewski ) +- Fixed typo in SYNOPSIS: "print $node->getValue ..." should have been + "print $href->getValue ..." (Thanks again Martin) +- Fixed typo in documentation: 'getItem' method should have been 'item' + (in 2 places.) (Thanks again Martin) + +1.10 (enno) 12/8/1998 +- Attributes with non-alphanumeric characters in the attribute name (like "-") + were mistaken for default attribute values. (Bug in checkUnspecAttr regexp.) + Default attribute values aren't printed out, so it appeared those attributes + just vanished. + (Thanks to Aravind Subramanian ) + +1.09 (enno) 12/3/1998 +- Changed NamedNodeMap {Values} to a NodeList instead of [] + This way getValues can return a (live) NodeList. +- Added NodeList and NamedNodeMap to documentation +- Fixed documentation section near list of node type constants. + I accidentally pasted some text in between and messed up that whole section. +- getNodeTypeName() always returned empty strings and the documentation + said @XML::DOM::NodeNames, which should have been @XML::DOM::Node::NodeNames + (Thanks to Andrew Fitzhugh ) +- Added dispose to NodeList +- Added setOwnerDocument to all Nodes, NodeList and NamedNodeMap, to allow + cut and paste between XML::DOM::Documents. + It does nothing when called on a Document node. + +1.08 (enno) 12/1/1998 +- No changes - I messed up uploading to PAUS and had to up the version number. + +1.07 (enno) 12/1/1998 +- added Node::isElementNode for optimization +- added NamedNodeMap::getChildIndex +- fixed documentation regarding getNodeValue. It said it should return + getTagName for Element nodes, but it should return undef. + (Thanks to Aravind Subramanian ) +- added CAVEATS in documentation (getElementsByTagName does not return "live" + NodeLists) +- added section about Notation node in documentation + +1.06 (enno) 11/16/1998 +- fixed example in the SYNOPSIS of the man page + (Thanks to Aravind Subramanian ) +- added test case t/example.t (it's also a simple example) + +1.05 (enno) 11/11/1998 +- added use strict, use vars etc. +- fixed replaceData - changed $str to $data +- merged getElementsByTagName and getElementsByTagName2 +- added parsing of attributes (CheckUnspecAttr) to support Attr::isSpecified +- added XML::DOM::Parser class to perform proper cleanup when an exception + is thrown +- more performance improvements, e.g. SafeMode, removed SUPER::new +- added frequency comments for performance optimization: e.g. "REC 7473" + means that that code is hit 7473 times when parsing REC-xml-19980210.xml +- updated POD documentation +- fixed problem in perl 5.004 (can't seems to use references to strings, e.g. + *str = \ "constant";) + +1.04 (enno) 10/21/1998 +- Removed internal calls to getOwnerDocument, getParentNode +- fixed isAncestor: $node->isAncestor($node) should return true +- Fixed ReadOnly mechanism. Added isAlwaysReadOnly. +- DocumentType::getDefaultAttrValue was using getElementDecl + instead of getAttlistDecl +- Attr::cloneNode cloneChildren was missing 2nd parameter=1 (deep) +- NamedNodeMap::cloneNode forgot to copy {Values} list +- Element::setAttributeNode was comparing {UsedIn} against $self instead of {A} +- fixed AttDef::cloneNode, Value was copied wrong diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/CheckAncestors.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/CheckAncestors.pm new file mode 100644 index 0000000000000000000000000000000000000000..89b8ca4e66e8bbf75ed607a36bbe9ac860c2df69 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/CheckAncestors.pm @@ -0,0 +1,133 @@ +# +# Perl module for testing the XML::DOM module. +# Used by the test cases in the 't' directory. +# Recursively walks the node tree and checks parent/child and document links. +# + +use strict; + +package CheckAncestors; + +use XML::DOM; +use Carp; + +BEGIN +{ + # import the constants for accessing member fields, e.g. _Doc + import XML::DOM::Node qw{ :Fields }; + import XML::DOM::DocumentType qw{ :Fields }; +} + +sub new +{ + my %args = (Mark => {}); + bless \%args, $_[0]; +} + +sub check +{ + my ($self, $node) = @_; + + # check if node was already seen + croak "found Node twice [$node]" if ($self->{Mark}->{$node}); + $self->{Mark}->{$node} = $node; + + # check if document is correct + my $doc = $self->{Doc}; + if (defined $doc) + { + my $doc2 = $node->[_Doc]; + croak "wrong Doc [$doc] [$doc2]" if $doc != $doc2; + } + else + { + $self->{Doc} = $doc; + } + + # check if node's children know their parent + # and, recursively, check each kid + my $nodes = $node->getChildNodes; + if ($nodes) + { + for my $kid (@$nodes) + { + my $parent = $kid->getParentNode; + croak "wrong parent node=[$node] parent=[$parent]" + if ($parent != $node); + $self->check ($kid); + } + } + + # check NamedNodeMaps + my $type = $node->getNodeType; + if ($type == XML::DOM::Node::ELEMENT_NODE || + $type == XML::DOM::Node::ATTLIST_DECL_NODE) + { + $self->checkAttr ($node, $node->[_A]); + } + elsif ($type == XML::DOM::Node::DOCUMENT_TYPE_NODE) + { + $self->checkAttr ($node, $node->[_Entities]); + $self->checkAttr ($node, $node->[_Notations]); + } +} + +# (This should have been called checkNamedNodeMap) +sub checkAttr +{ + my ($self, $node, $attr) = @_; + return unless defined $attr; + + # check if NamedNodeMap was already seen + croak "found NamedNodeMap twice [$attr]" if ($self->{Mark}->{$attr}); + $self->{Mark}->{$attr} = $attr; + + # check if document is correct + my $doc = $self->{Doc}; + if (defined $doc) + { + my $doc2 = $attr->getProperty ("Doc"); + croak "wrong Doc [$doc] [$doc2]" if $doc != $doc2; + } + else + { + $self->{Doc} = $attr->getProperty ("Doc"); + } + + # check if NamedNodeMap knows his daddy + my $parent = $attr->getProperty ("Parent"); + croak "wrong parent node=[$node] parent=[$parent]" + unless $node == $parent; + + # check if NamedNodeMap's children know their parent + # and, recursively, check the child nodes + my $nodes = $attr->getValues; + if ($nodes) + { + for my $kid (@$nodes) + { + my $parent = $kid->{InUse}; + croak "wrong InUse attr=[$attr] parent=[$parent]" + if ($parent != $attr); + + $self->check ($kid); + } + } +} + +sub doit +{ + my $node = shift; + my $check = new CheckAncestors; + eval { + $check->check ($node); + }; + if ($@) + { + print "checkAncestors failed:\n$@\n"; + return 0; + } + return 1; +} + +1; diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/CmpDOM.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/CmpDOM.pm new file mode 100644 index 0000000000000000000000000000000000000000..94805d53d477580e645bac3fa2e5fbfed283c316 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/CmpDOM.pm @@ -0,0 +1,292 @@ +# +# Used by test scripts to compare 2 DOM subtrees. +# +# Usage: +# +# my $cmp = new CmpDOM; +# $node1->equals ($node2, $cmp) or +# print "Difference found! Context:" . $cmp->context . "\n"; +# +use strict; + +package CmpDOM; + +use XML::DOM; +use Carp; + +sub new +{ + my %args = (SkipReadOnly => 0, Context => []); + bless \%args, $_[0]; +} + +sub pushContext +{ + my ($self, $str) = @_; + push @{$self->{Context}}, $str; +#print ":: " . $self->context . "\n"; +} + +sub popContext +{ + pop @{$_[0]->{Context}}; +} + +sub skipReadOnly +{ + my $self = shift; + my $prev = $self->{SkipReadOnly}; + if (@_ > 0) + { + $self->{SkipReadOnly} = shift; + } + $prev; +} + +sub sameType +{ + my ($self, $x, $y) = @_; + + return 1 if (ref ($x) eq ref ($y)); + + $self->fail ("wrong type " . ref($x) . " != " . ref($y)); +} + +sub sameReadOnly +{ + my ($self, $x, $y) = @_; + return 1 if $self->{SkipReadOnly}; + + my $result = 1; + if (not defined $x) + { + $result = 0 if defined $y; + } + else + { + if (not defined $y) + { + $result = 0; + } + elsif ($x != $y) + { + $result = 0; + } + } + return 1 if ($result == 1); + + $self->fail ("ReadOnly $x != $y"); +} + +sub fail +{ + my ($self, $str) = @_; + $self->pushContext ($str); + 0; +} + +sub context +{ + my $self = shift; + join (", ", @{$self->{Context}}); +} + +package XML::DOM::NamedNodeMap; + +sub equals +{ + my ($self, $other, $cmp) = @_; + + return 0 unless $cmp->sameType ($self, $other); + + # sanity checks + my $n1 = int (keys %$self); + my $n2 = int (keys %$other); + return $cmp->fail("same keys length") unless $n1 == $n2; + + return $cmp->fail("#1 value length") unless ($n1-1 == $self->getLength); + return $cmp->fail("#2 value length") unless ($n2-1 == $other->getLength); + + my $i = 0; + my $ov = $other->getValues; + for my $n (@{$self->getValues}) + { + $cmp->pushContext ($n->getNodeName); + return 0 unless $n->equals ($ov->[$i], $cmp); + $i++; + $cmp->popContext; + } + return 0 unless $cmp->sameReadOnly ($self->isReadOnly, + $other->isReadOnly); + 1; +} + +package XML::DOM::NodeList; + +sub equals +{ + my ($self, $other, $cmp) = @_; + return 0 unless $cmp->sameType ($self, $other); + + return $cmp->fail("wrong length") + unless $self->getLength == $other->getLength; + + my $i = 0; + for my $n (@$self) + { + $cmp->pushContext ("[$i]"); + return 0 unless $n->equals ($other->[$i], $cmp); + $i++; + $cmp->popContext; + } + 1; +} + +package XML::DOM::Node; + +sub get_prop_byname +{ + my ($self, $propname) = @_; + my $pkg = ref ($self); + + no strict 'refs'; + my $hfields = \ %{"$pkg\::HFIELDS"}; + $self->[$hfields->{$propname}]; +} + +sub equals +{ + my ($self, $other, $cmp) = @_; + return 0 unless $cmp->sameType ($self, $other); + + my $hasKids = $self->hasChildNodes; + return $cmp->fail("hasChildNodes") unless $hasKids == $other->hasChildNodes; + + if ($hasKids) + { + $cmp->pushContext ("C"); + return 0 unless $self->[_C]->equals ($other->[_C], $cmp); + $cmp->popContext; + } + return 0 unless $cmp->sameReadOnly ($self->isReadOnly, + $other->isReadOnly); + + for my $prop (@{$self->getCmpProps}) + { + $cmp->pushContext ($prop); + my $p1 = $self->get_prop_byname ($prop); + my $p2 = $other->get_prop_byname ($prop); + if (ref ($p1)) + { + return 0 unless $p1->equals ($p2, $cmp); + } + elsif (! defined ($p1)) + { + return 0 if defined $p2; + } + else + { + return $cmp->fail("$p1 != $p2") unless $p1 eq $p2; + } + $cmp->popContext; + } + 1; +} + +sub getCmpProps +{ + return []; +} + +package XML::DOM::Attr; + +sub getCmpProps +{ + ['Name', 'Specified']; +} + +package XML::DOM::ProcessingInstruction; + +sub getCmpProps +{ + ['Target', 'Data']; +} + +package XML::DOM::Notation; + +sub getCmpProps +{ + return ['Name', 'Base', 'SysId', 'PubId']; +} + +package XML::DOM::Entity; + +sub getCmpProps +{ + return ['NotationName', 'Parameter', 'Value', 'SysId', 'PubId']; +} + +package XML::DOM::EntityReference; + +sub getCmpProps +{ + return ['EntityName', 'Parameter']; +} + +package XML::DOM::AttDef; + +sub getCmpProps +{ + return ['Name', 'Type', 'Required', 'Implied', 'Quote', 'Default', 'Fixed']; +} + +package XML::DOM::AttlistDecl; + +sub getCmpProps +{ + return ['ElementName', 'A']; +} + +package XML::DOM::ElementDecl; + +sub getCmpProps +{ + return ['Name', 'Model']; +} + +package XML::DOM::Element; + +sub getCmpProps +{ + return ['TagName', 'A']; +} + +package XML::DOM::CharacterData; + +sub getCmpProps +{ + return ['Data']; +} + +package XML::DOM::XMLDecl; + +sub getCmpProps +{ + return ['Version', 'Encoding', 'Standalone']; +} + +package XML::DOM::DocumentType; + +sub getCmpProps +{ + return ['Entities', 'Notations', 'Name', 'SysId', 'PubId', 'Internal']; +} + +package XML::DOM::Document; + +sub getCmpProps +{ + return ['XmlDecl', 'Doctype']; +} + +1; diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/FAQ.xml b/fastSum/resources/ROUGE/XML-DOM-1.46/FAQ.xml new file mode 100644 index 0000000000000000000000000000000000000000..73ca6a8bb79bd394e71dd4d1751183096300719d --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/FAQ.xml @@ -0,0 +1,140 @@ + + + +This document contains answers to common questions. +I need to add a lot more stuff and make sure it is valid XML. +(The format may change, but since it's XML, it's easy to transform...) + + + + libxml-enno FAQ + +
+ Known Build/Make Problems + + + + +'unrecognized pod directive in ...: head3' warnings in 'make install' + + + + +These are caused by pod2man. (A bug in pod2man, IMHO.) +It doesn't seem to recognize '=head3' in pod files. Ignore the warnings. + + + + + + + +t/out/dc_attr3.err missing from distribution + + + + +Create the file. It should be empty (i.e. size 0.) +WinZIP sometimes doesn't add or extract the file when it has size 0. +I've only seen this on Windows. + + + + + + +
Getting Started
+ + + Element node has too many children. + + + + + NAME + +-------------------------------------------------- + +and the perl code: +-------------------------------------------------- + +my $parser = new XML::DOM::Parser; +my $doc = $parser->parsefile("test.xml"); +my $root = $doc->getDocumentElement(); + +my $i = 0; +for my $kids ($root->getChildNodes()) { + print STDERR " Child $i is $kids\n"; + print STDERR " name ", $kids->getNodeName(), "\n"; + print STDERR " type ", $kids->getNodeType(), "\n"; + print STDERR " value ", $kids->getNodeValue(), "\n"; + $i++; +} +-------------------------------------------------- + +And I found that my root node has 3 children, where I thought it should have one: + +1) a text node having as value a cariage return and two spaces + +2) an element node named Image with no value (in fact the value is in a +text child of that element) + +3) an other text child having as value a carriage return + +I thought the XML root would have only one child (Image) with the value 'NAME'. + +]]> + + + +That's what an XML processor is supposed to do: all characters, including +whitespace (outside of markup) are reported to the application. Your DOM +script should then decide what to do with unnecessary whitespaces. + +You can use a PerlSAX filter (like XML::Handler::DetectWS) to filter out the +whitespace at parse time, before it reaches the DOM document. + + + + + + +How do I move (not copy) parts of one XML::DOM::Document (or Element) to another? + + + + +You can use cloneNode() to copy a subtree or use removeNode() +to cut the subtree out of document A. +Then use setOwnerDocument($docB) on the subtree and use +insertNode() or appendNode() to add it to document B. +(Note that setOwnerNode is not part of the DOM Level 1 specification, so +your code won't be portable to other DOM implementations.) + +One problem: if you have attributes in the subtree with +defaulted values (i.e. they were not specified in document A, +but XML::Parser (expat) generated them because an ATTLIST +declaration specified a default value for that attribute), +the attributes will still point to the default values in +document A. + +I haven't found a good solution for this problem yet, +because users may want different things in different situations. +Any thoughts are welcome. + + + + + + + + + + + +
+
diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/MANIFEST b/fastSum/resources/ROUGE/XML-DOM-1.46/MANIFEST new file mode 100644 index 0000000000000000000000000000000000000000..fe947b3ad452f395d4eed57c494f84ebf18cb191 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/MANIFEST @@ -0,0 +1,64 @@ +BUGS +Changes +CheckAncestors.pm Used by test cases in t/ +CmpDOM.pm Used by test cases in t/ +FAQ.xml +MANIFEST This file. +Makefile.PL +README +lib/XML/DOM.pm +lib/XML/DOM/AttDef.pod +lib/XML/DOM/AttlistDecl.pod +lib/XML/DOM/Attr.pod +lib/XML/DOM/CDATASection.pod +lib/XML/DOM/CharacterData.pod +lib/XML/DOM/Comment.pod +lib/XML/DOM/DOMException.pm +lib/XML/DOM/DOMImplementation.pod +lib/XML/DOM/Document.pod +lib/XML/DOM/DocumentFragment.pod +lib/XML/DOM/DocumentType.pod +lib/XML/DOM/Element.pod +lib/XML/DOM/ElementDecl.pod +lib/XML/DOM/Entity.pod +lib/XML/DOM/EntityReference.pod +lib/XML/DOM/NamedNodeMap.pm +lib/XML/DOM/NamedNodeMap.pod +lib/XML/DOM/Node.pod +lib/XML/DOM/NodeList.pm +lib/XML/DOM/NodeList.pod +lib/XML/DOM/Notation.pod +lib/XML/DOM/Parser.pod +lib/XML/DOM/PerlSAX.pm +lib/XML/DOM/ProcessingInstruction.pod +lib/XML/DOM/Text.pod +lib/XML/DOM/XMLDecl.pod +lib/XML/Handler/BuildDOM.pm +samples/REC-xml-19980210.xml Sample XML files +samples/minutes.xml +t/build_dom.t +t/dom_astress.t dom_*.t are test cases for XML::DOM +t/dom_attr.t +t/dom_cdata.t +t/dom_documenttype.t +t/dom_encode.t +t/dom_example.t +t/dom_extent.dtd +t/dom_extent.ent +t/dom_extent.t +t/dom_jp_astress.t +t/dom_jp_attr.t +t/dom_jp_cdata.t +t/dom_jp_example.t +t/dom_jp_minus.t +t/dom_jp_modify.t +t/dom_jp_print.t +t/dom_minus.t +t/dom_modify.t +t/dom_noexpand.t +t/dom_print.t +t/dom_template.t +t/dom_text.t +XML-Parser-2.31.patch +META.yml Module meta-data (added by MakeMaker) +META.json Module JSON meta-data (added by MakeMaker) diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/META.json b/fastSum/resources/ROUGE/XML-DOM-1.46/META.json new file mode 100644 index 0000000000000000000000000000000000000000..ceba11535d20e51a4aa882fab8ea8e5e18e021ce --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/META.json @@ -0,0 +1,44 @@ +{ + "abstract" : "unknown", + "author" : [ + "unknown" + ], + "dynamic_config" : 1, + "generated_by" : "ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.120921", + "license" : [ + "unknown" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "XML-DOM", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "runtime" : { + "requires" : { + "LWP::UserAgent" : "0", + "XML::Parser" : "2.30", + "XML::Parser::PerlSAX" : "0.07", + "XML::RegExp" : "0" + } + } + }, + "release_status" : "stable", + "version" : "1.46" +} diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/META.yml b/fastSum/resources/ROUGE/XML-DOM-1.46/META.yml new file mode 100644 index 0000000000000000000000000000000000000000..aae7910a989af2e40d74929945d587f0e52541a2 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/META.yml @@ -0,0 +1,25 @@ +--- +abstract: unknown +author: + - unknown +build_requires: + ExtUtils::MakeMaker: 0 +configure_requires: + ExtUtils::MakeMaker: 0 +dynamic_config: 1 +generated_by: 'ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.120921' +license: unknown +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 +name: XML-DOM +no_index: + directory: + - t + - inc +requires: + LWP::UserAgent: 0 + XML::Parser: 2.30 + XML::Parser::PerlSAX: 0.07 + XML::RegExp: 0 +version: 1.46 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/MYMETA.json b/fastSum/resources/ROUGE/XML-DOM-1.46/MYMETA.json new file mode 100644 index 0000000000000000000000000000000000000000..7ad652701f014024387fef951e58f680f68deca6 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/MYMETA.json @@ -0,0 +1,44 @@ +{ + "abstract" : "unknown", + "author" : [ + "unknown" + ], + "dynamic_config" : 0, + "generated_by" : "ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.120921, CPAN::Meta::Converter version 2.150001", + "license" : [ + "unknown" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "XML-DOM", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "runtime" : { + "requires" : { + "LWP::UserAgent" : "0", + "XML::Parser" : "2.30", + "XML::Parser::PerlSAX" : "0.07", + "XML::RegExp" : "0" + } + } + }, + "release_status" : "stable", + "version" : "1.46" +} diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/MYMETA.yml b/fastSum/resources/ROUGE/XML-DOM-1.46/MYMETA.yml new file mode 100644 index 0000000000000000000000000000000000000000..1b4c5f5224a66b694bbce09ed60f0676c28f4ca7 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/MYMETA.yml @@ -0,0 +1,25 @@ +--- +abstract: unknown +author: + - unknown +build_requires: + ExtUtils::MakeMaker: '0' +configure_requires: + ExtUtils::MakeMaker: '0' +dynamic_config: 0 +generated_by: 'ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.120921, CPAN::Meta::Converter version 2.150001' +license: unknown +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: XML-DOM +no_index: + directory: + - t + - inc +requires: + LWP::UserAgent: '0' + XML::Parser: '2.30' + XML::Parser::PerlSAX: '0.07' + XML::RegExp: '0' +version: '1.46' diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/Makefile b/fastSum/resources/ROUGE/XML-DOM-1.46/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..3b020068b4ce97d78b715c8206bc358bc56fe028 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/Makefile @@ -0,0 +1,1037 @@ +# This Makefile is for the XML::DOM extension to perl. +# +# It was generated automatically by MakeMaker version +# 7.0401 (Revision: 70401) from the contents of +# Makefile.PL. Don't edit this file, edit Makefile.PL instead. +# +# ANY CHANGES MADE HERE WILL BE LOST! +# +# MakeMaker ARGV: () +# + +# MakeMaker Parameters: + +# BUILD_REQUIRES => { } +# CONFIGURE_REQUIRES => { } +# NAME => q[XML::DOM] +# PREREQ_PM => { LWP::UserAgent=>q[0], XML::Parser=>q[2.30], XML::Parser::PerlSAX=>q[0.07], XML::RegExp=>q[0] } +# TEST_REQUIRES => { } +# VERSION_FROM => q[lib/XML/DOM.pm] +# dist => { COMPRESS=>q[gzip], SUFFIX=>q[.gz] } + +# --- MakeMaker post_initialize section: + + +# --- MakeMaker const_config section: + +# These definitions are from config.sh (via /usr/lib/x86_64-linux-gnu/perl/5.22/Config.pm). +# They may have been overridden via Makefile.PL or on the command line. +AR = ar +CC = x86_64-linux-gnu-gcc +CCCDLFLAGS = -fPIC +CCDLFLAGS = -Wl,-E +DLEXT = so +DLSRC = dl_dlopen.xs +EXE_EXT = +FULL_AR = /usr/bin/ar +LD = x86_64-linux-gnu-gcc +LDDLFLAGS = -shared -L/usr/local/lib -fstack-protector-strong +LDFLAGS = -fstack-protector-strong -L/usr/local/lib +LIBC = libc-2.23.so +LIB_EXT = .a +OBJ_EXT = .o +OSNAME = linux +OSVERS = 3.16.0 +RANLIB = : +SITELIBEXP = /usr/local/share/perl/5.22.1 +SITEARCHEXP = /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 +SO = so +VENDORARCHEXP = /usr/lib/x86_64-linux-gnu/perl5/5.22 +VENDORLIBEXP = /usr/share/perl5 + + +# --- MakeMaker constants section: +AR_STATIC_ARGS = cr +DIRFILESEP = / +DFSEP = $(DIRFILESEP) +NAME = XML::DOM +NAME_SYM = XML_DOM +VERSION = 1.46 +VERSION_MACRO = VERSION +VERSION_SYM = 1_46 +DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\" +XS_VERSION = 1.46 +XS_VERSION_MACRO = XS_VERSION +XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\" +INST_ARCHLIB = blib/arch +INST_SCRIPT = blib/script +INST_BIN = blib/bin +INST_LIB = blib/lib +INST_MAN1DIR = blib/man1 +INST_MAN3DIR = blib/man3 +MAN1EXT = 1p +MAN3EXT = 3pm +INSTALLDIRS = site +DESTDIR = +PREFIX = $(SITEPREFIX) +PERLPREFIX = /usr +SITEPREFIX = /usr/local +VENDORPREFIX = /usr +INSTALLPRIVLIB = /usr/share/perl/5.22 +DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB) +INSTALLSITELIB = /usr/local/share/perl/5.22.1 +DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB) +INSTALLVENDORLIB = /usr/share/perl5 +DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB) +INSTALLARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.22 +DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB) +INSTALLSITEARCH = /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 +DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH) +INSTALLVENDORARCH = /usr/lib/x86_64-linux-gnu/perl5/5.22 +DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH) +INSTALLBIN = /usr/bin +DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN) +INSTALLSITEBIN = /usr/local/bin +DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN) +INSTALLVENDORBIN = /usr/bin +DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN) +INSTALLSCRIPT = /usr/bin +DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT) +INSTALLSITESCRIPT = /usr/local/bin +DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT) +INSTALLVENDORSCRIPT = /usr/bin +DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT) +INSTALLMAN1DIR = /usr/share/man/man1 +DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR) +INSTALLSITEMAN1DIR = /usr/local/man/man1 +DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR) +INSTALLVENDORMAN1DIR = /usr/share/man/man1 +DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR) +INSTALLMAN3DIR = /usr/share/man/man3 +DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR) +INSTALLSITEMAN3DIR = /usr/local/man/man3 +DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR) +INSTALLVENDORMAN3DIR = /usr/share/man/man3 +DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR) +PERL_LIB = /usr/share/perl/5.22 +PERL_ARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.22 +PERL_ARCHLIBDEP = /usr/lib/x86_64-linux-gnu/perl/5.22 +LIBPERL_A = libperl.a +FIRST_MAKEFILE = Makefile +MAKEFILE_OLD = Makefile.old +MAKE_APERL_FILE = Makefile.aperl +PERLMAINCC = $(CC) +PERL_INC = /usr/lib/x86_64-linux-gnu/perl/5.22/CORE +PERL_INCDEP = /usr/lib/x86_64-linux-gnu/perl/5.22/CORE +PERL = "/usr/bin/perl" +FULLPERL = "/usr/bin/perl" +ABSPERL = $(PERL) +PERLRUN = $(PERL) +FULLPERLRUN = $(FULLPERL) +ABSPERLRUN = $(ABSPERL) +PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +PERL_CORE = 0 +PERM_DIR = 755 +PERM_RW = 644 +PERM_RWX = 755 + +MAKEMAKER = /usr/share/perl/5.22/ExtUtils/MakeMaker.pm +MM_VERSION = 7.0401 +MM_REVISION = 70401 + +# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle). +# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle) +# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar) +# DLBASE = Basename part of dynamic library. May be just equal BASEEXT. +MAKE = make +FULLEXT = XML/DOM +BASEEXT = DOM +PARENT_NAME = XML +DLBASE = $(BASEEXT) +VERSION_FROM = lib/XML/DOM.pm +OBJECT = +LDFROM = $(OBJECT) +LINKTYPE = dynamic +BOOTDEP = + +# Handy lists of source code files: +XS_FILES = +C_FILES = +O_FILES = +H_FILES = +MAN1PODS = +MAN3PODS = lib/XML/DOM.pm \ + lib/XML/DOM/AttDef.pod \ + lib/XML/DOM/AttlistDecl.pod \ + lib/XML/DOM/Attr.pod \ + lib/XML/DOM/CDATASection.pod \ + lib/XML/DOM/CharacterData.pod \ + lib/XML/DOM/Comment.pod \ + lib/XML/DOM/DOMImplementation.pod \ + lib/XML/DOM/Document.pod \ + lib/XML/DOM/DocumentFragment.pod \ + lib/XML/DOM/DocumentType.pod \ + lib/XML/DOM/Element.pod \ + lib/XML/DOM/ElementDecl.pod \ + lib/XML/DOM/Entity.pod \ + lib/XML/DOM/EntityReference.pod \ + lib/XML/DOM/NamedNodeMap.pod \ + lib/XML/DOM/Node.pod \ + lib/XML/DOM/NodeList.pod \ + lib/XML/DOM/Notation.pod \ + lib/XML/DOM/Parser.pod \ + lib/XML/DOM/PerlSAX.pm \ + lib/XML/DOM/ProcessingInstruction.pod \ + lib/XML/DOM/Text.pod \ + lib/XML/DOM/XMLDecl.pod \ + lib/XML/Handler/BuildDOM.pm + +# Where is the Config information that we are using/depend on +CONFIGDEP = $(PERL_ARCHLIBDEP)$(DFSEP)Config.pm $(PERL_INCDEP)$(DFSEP)config.h + +# Where to build things +INST_LIBDIR = $(INST_LIB)/XML +INST_ARCHLIBDIR = $(INST_ARCHLIB)/XML + +INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT) +INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT) + +INST_STATIC = +INST_DYNAMIC = +INST_BOOT = + +# Extra linker info +EXPORT_LIST = +PERL_ARCHIVE = +PERL_ARCHIVEDEP = +PERL_ARCHIVE_AFTER = + + +TO_INST_PM = lib/XML/DOM.pm \ + lib/XML/DOM/AttDef.pod \ + lib/XML/DOM/AttlistDecl.pod \ + lib/XML/DOM/Attr.pod \ + lib/XML/DOM/CDATASection.pod \ + lib/XML/DOM/CharacterData.pod \ + lib/XML/DOM/Comment.pod \ + lib/XML/DOM/DOMException.pm \ + lib/XML/DOM/DOMImplementation.pod \ + lib/XML/DOM/Document.pod \ + lib/XML/DOM/DocumentFragment.pod \ + lib/XML/DOM/DocumentType.pod \ + lib/XML/DOM/Element.pod \ + lib/XML/DOM/ElementDecl.pod \ + lib/XML/DOM/Entity.pod \ + lib/XML/DOM/EntityReference.pod \ + lib/XML/DOM/NamedNodeMap.pm \ + lib/XML/DOM/NamedNodeMap.pod \ + lib/XML/DOM/Node.pod \ + lib/XML/DOM/NodeList.pm \ + lib/XML/DOM/NodeList.pod \ + lib/XML/DOM/Notation.pod \ + lib/XML/DOM/Parser.pod \ + lib/XML/DOM/PerlSAX.pm \ + lib/XML/DOM/ProcessingInstruction.pod \ + lib/XML/DOM/Text.pod \ + lib/XML/DOM/XMLDecl.pod \ + lib/XML/Handler/BuildDOM.pm + +PM_TO_BLIB = lib/XML/DOM.pm \ + blib/lib/XML/DOM.pm \ + lib/XML/DOM/AttDef.pod \ + blib/lib/XML/DOM/AttDef.pod \ + lib/XML/DOM/AttlistDecl.pod \ + blib/lib/XML/DOM/AttlistDecl.pod \ + lib/XML/DOM/Attr.pod \ + blib/lib/XML/DOM/Attr.pod \ + lib/XML/DOM/CDATASection.pod \ + blib/lib/XML/DOM/CDATASection.pod \ + lib/XML/DOM/CharacterData.pod \ + blib/lib/XML/DOM/CharacterData.pod \ + lib/XML/DOM/Comment.pod \ + blib/lib/XML/DOM/Comment.pod \ + lib/XML/DOM/DOMException.pm \ + blib/lib/XML/DOM/DOMException.pm \ + lib/XML/DOM/DOMImplementation.pod \ + blib/lib/XML/DOM/DOMImplementation.pod \ + lib/XML/DOM/Document.pod \ + blib/lib/XML/DOM/Document.pod \ + lib/XML/DOM/DocumentFragment.pod \ + blib/lib/XML/DOM/DocumentFragment.pod \ + lib/XML/DOM/DocumentType.pod \ + blib/lib/XML/DOM/DocumentType.pod \ + lib/XML/DOM/Element.pod \ + blib/lib/XML/DOM/Element.pod \ + lib/XML/DOM/ElementDecl.pod \ + blib/lib/XML/DOM/ElementDecl.pod \ + lib/XML/DOM/Entity.pod \ + blib/lib/XML/DOM/Entity.pod \ + lib/XML/DOM/EntityReference.pod \ + blib/lib/XML/DOM/EntityReference.pod \ + lib/XML/DOM/NamedNodeMap.pm \ + blib/lib/XML/DOM/NamedNodeMap.pm \ + lib/XML/DOM/NamedNodeMap.pod \ + blib/lib/XML/DOM/NamedNodeMap.pod \ + lib/XML/DOM/Node.pod \ + blib/lib/XML/DOM/Node.pod \ + lib/XML/DOM/NodeList.pm \ + blib/lib/XML/DOM/NodeList.pm \ + lib/XML/DOM/NodeList.pod \ + blib/lib/XML/DOM/NodeList.pod \ + lib/XML/DOM/Notation.pod \ + blib/lib/XML/DOM/Notation.pod \ + lib/XML/DOM/Parser.pod \ + blib/lib/XML/DOM/Parser.pod \ + lib/XML/DOM/PerlSAX.pm \ + blib/lib/XML/DOM/PerlSAX.pm \ + lib/XML/DOM/ProcessingInstruction.pod \ + blib/lib/XML/DOM/ProcessingInstruction.pod \ + lib/XML/DOM/Text.pod \ + blib/lib/XML/DOM/Text.pod \ + lib/XML/DOM/XMLDecl.pod \ + blib/lib/XML/DOM/XMLDecl.pod \ + lib/XML/Handler/BuildDOM.pm \ + blib/lib/XML/Handler/BuildDOM.pm + + +# --- MakeMaker platform_constants section: +MM_Unix_VERSION = 7.0401 +PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc + + +# --- MakeMaker tool_autosplit section: +# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto +AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$$$ARGV[0], $$$$ARGV[1], 0, 1, 1)' -- + + + +# --- MakeMaker tool_xsubpp section: + + +# --- MakeMaker tools_other section: +SHELL = /bin/sh +CHMOD = chmod +CP = cp +MV = mv +NOOP = $(TRUE) +NOECHO = @ +RM_F = rm -f +RM_RF = rm -rf +TEST_F = test -f +TOUCH = touch +UMASK_NULL = umask 0 +DEV_NULL = > /dev/null 2>&1 +MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' -- +EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' -- +FALSE = false +TRUE = true +ECHO = echo +ECHO_N = echo -n +UNINST = 0 +VERBINST = 0 +MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' -- +DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' -- +UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' -- +WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' -- +MACROSTART = +MACROEND = +USEMAKEFILE = -f +FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' -- +CP_NONEMPTY = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'cp_nonempty' -- + + +# --- MakeMaker makemakerdflt section: +makemakerdflt : all + $(NOECHO) $(NOOP) + + +# --- MakeMaker dist section: +TAR = tar +TARFLAGS = cvf +ZIP = zip +ZIPFLAGS = -r +COMPRESS = gzip +SUFFIX = .gz +SHAR = shar +PREOP = $(NOECHO) $(NOOP) +POSTOP = $(NOECHO) $(NOOP) +TO_UNIX = $(NOECHO) $(NOOP) +CI = ci -u +RCS_LABEL = rcs -Nv$(VERSION_SYM): -q +DIST_CP = best +DIST_DEFAULT = tardist +DISTNAME = XML-DOM +DISTVNAME = XML-DOM-1.46 + + +# --- MakeMaker macro section: + + +# --- MakeMaker depend section: + + +# --- MakeMaker cflags section: + + +# --- MakeMaker const_loadlibs section: + + +# --- MakeMaker const_cccmd section: + + +# --- MakeMaker post_constants section: + + +# --- MakeMaker pasthru section: + +PASTHRU = LIBPERL_A="$(LIBPERL_A)"\ + LINKTYPE="$(LINKTYPE)"\ + LD="$(LD)"\ + PREFIX="$(PREFIX)" + + +# --- MakeMaker special_targets section: +.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT) + +.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir + + + +# --- MakeMaker c_o section: + + +# --- MakeMaker xs_c section: + + +# --- MakeMaker xs_o section: + + +# --- MakeMaker top_targets section: +all :: pure_all manifypods + $(NOECHO) $(NOOP) + + +pure_all :: config pm_to_blib subdirs linkext + $(NOECHO) $(NOOP) + +subdirs :: $(MYEXTLIB) + $(NOECHO) $(NOOP) + +config :: $(FIRST_MAKEFILE) blibdirs + $(NOECHO) $(NOOP) + +help : + perldoc ExtUtils::MakeMaker + + +# --- MakeMaker blibdirs section: +blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists + $(NOECHO) $(NOOP) + +# Backwards compat with 6.18 through 6.25 +blibdirs.ts : blibdirs + $(NOECHO) $(NOOP) + +$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_LIBDIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR) + $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists + +$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHLIB) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB) + $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists + +$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_AUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR) + $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists + +$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR) + $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists + +$(INST_BIN)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_BIN) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN) + $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists + +$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_SCRIPT) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT) + $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists + +$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN1DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR) + $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists + +$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN3DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR) + $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists + + + +# --- MakeMaker linkext section: + +linkext :: $(LINKTYPE) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dlsyms section: + + +# --- MakeMaker dynamic_bs section: + +BOOTSTRAP = + + +# --- MakeMaker dynamic section: + +dynamic :: $(FIRST_MAKEFILE) $(BOOTSTRAP) $(INST_DYNAMIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dynamic_lib section: + + +# --- MakeMaker static section: + +## $(INST_PM) has been moved to the all: target. +## It remains here for awhile to allow for old usage: "make static" +static :: $(FIRST_MAKEFILE) $(INST_STATIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker static_lib section: + + +# --- MakeMaker manifypods section: + +POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--" +POD2MAN = $(POD2MAN_EXE) + + +manifypods : pure_all \ + lib/XML/DOM.pm \ + lib/XML/DOM/AttDef.pod \ + lib/XML/DOM/AttlistDecl.pod \ + lib/XML/DOM/Attr.pod \ + lib/XML/DOM/CDATASection.pod \ + lib/XML/DOM/CharacterData.pod \ + lib/XML/DOM/Comment.pod \ + lib/XML/DOM/DOMImplementation.pod \ + lib/XML/DOM/Document.pod \ + lib/XML/DOM/DocumentFragment.pod \ + lib/XML/DOM/DocumentType.pod \ + lib/XML/DOM/Element.pod \ + lib/XML/DOM/ElementDecl.pod \ + lib/XML/DOM/Entity.pod \ + lib/XML/DOM/EntityReference.pod \ + lib/XML/DOM/NamedNodeMap.pod \ + lib/XML/DOM/Node.pod \ + lib/XML/DOM/NodeList.pod \ + lib/XML/DOM/Notation.pod \ + lib/XML/DOM/Parser.pod \ + lib/XML/DOM/PerlSAX.pm \ + lib/XML/DOM/ProcessingInstruction.pod \ + lib/XML/DOM/Text.pod \ + lib/XML/DOM/XMLDecl.pod \ + lib/XML/Handler/BuildDOM.pm + $(NOECHO) $(POD2MAN) --section=$(MAN3EXT) --perm_rw=$(PERM_RW) -u \ + lib/XML/DOM.pm $(INST_MAN3DIR)/XML::DOM.$(MAN3EXT) \ + lib/XML/DOM/AttDef.pod $(INST_MAN3DIR)/XML::DOM::AttDef.$(MAN3EXT) \ + lib/XML/DOM/AttlistDecl.pod $(INST_MAN3DIR)/XML::DOM::AttlistDecl.$(MAN3EXT) \ + lib/XML/DOM/Attr.pod $(INST_MAN3DIR)/XML::DOM::Attr.$(MAN3EXT) \ + lib/XML/DOM/CDATASection.pod $(INST_MAN3DIR)/XML::DOM::CDATASection.$(MAN3EXT) \ + lib/XML/DOM/CharacterData.pod $(INST_MAN3DIR)/XML::DOM::CharacterData.$(MAN3EXT) \ + lib/XML/DOM/Comment.pod $(INST_MAN3DIR)/XML::DOM::Comment.$(MAN3EXT) \ + lib/XML/DOM/DOMImplementation.pod $(INST_MAN3DIR)/XML::DOM::DOMImplementation.$(MAN3EXT) \ + lib/XML/DOM/Document.pod $(INST_MAN3DIR)/XML::DOM::Document.$(MAN3EXT) \ + lib/XML/DOM/DocumentFragment.pod $(INST_MAN3DIR)/XML::DOM::DocumentFragment.$(MAN3EXT) \ + lib/XML/DOM/DocumentType.pod $(INST_MAN3DIR)/XML::DOM::DocumentType.$(MAN3EXT) \ + lib/XML/DOM/Element.pod $(INST_MAN3DIR)/XML::DOM::Element.$(MAN3EXT) \ + lib/XML/DOM/ElementDecl.pod $(INST_MAN3DIR)/XML::DOM::ElementDecl.$(MAN3EXT) \ + lib/XML/DOM/Entity.pod $(INST_MAN3DIR)/XML::DOM::Entity.$(MAN3EXT) \ + lib/XML/DOM/EntityReference.pod $(INST_MAN3DIR)/XML::DOM::EntityReference.$(MAN3EXT) \ + lib/XML/DOM/NamedNodeMap.pod $(INST_MAN3DIR)/XML::DOM::NamedNodeMap.$(MAN3EXT) \ + lib/XML/DOM/Node.pod $(INST_MAN3DIR)/XML::DOM::Node.$(MAN3EXT) \ + lib/XML/DOM/NodeList.pod $(INST_MAN3DIR)/XML::DOM::NodeList.$(MAN3EXT) \ + lib/XML/DOM/Notation.pod $(INST_MAN3DIR)/XML::DOM::Notation.$(MAN3EXT) \ + lib/XML/DOM/Parser.pod $(INST_MAN3DIR)/XML::DOM::Parser.$(MAN3EXT) \ + lib/XML/DOM/PerlSAX.pm $(INST_MAN3DIR)/XML::DOM::PerlSAX.$(MAN3EXT) \ + lib/XML/DOM/ProcessingInstruction.pod $(INST_MAN3DIR)/XML::DOM::ProcessingInstruction.$(MAN3EXT) \ + lib/XML/DOM/Text.pod $(INST_MAN3DIR)/XML::DOM::Text.$(MAN3EXT) \ + lib/XML/DOM/XMLDecl.pod $(INST_MAN3DIR)/XML::DOM::XMLDecl.$(MAN3EXT) \ + lib/XML/Handler/BuildDOM.pm $(INST_MAN3DIR)/XML::Handler::BuildDOM.$(MAN3EXT) + + + + +# --- MakeMaker processPL section: + + +# --- MakeMaker installbin section: + + +# --- MakeMaker subdirs section: + +# none + +# --- MakeMaker clean_subdirs section: +clean_subdirs : + $(NOECHO) $(NOOP) + + +# --- MakeMaker clean section: + +# Delete temporary files but do not touch installed files. We don't delete +# the Makefile here so a later make realclean still has a makefile to use. + +clean :: clean_subdirs + - $(RM_F) \ + $(BASEEXT).bso $(BASEEXT).def \ + $(BASEEXT).exp $(BASEEXT).x \ + $(BOOTSTRAP) $(INST_ARCHAUTODIR)/extralibs.all \ + $(INST_ARCHAUTODIR)/extralibs.ld $(MAKE_APERL_FILE) \ + *$(LIB_EXT) *$(OBJ_EXT) \ + *perl.core MYMETA.json \ + MYMETA.yml blibdirs.ts \ + core core.*perl.*.? \ + core.[0-9] core.[0-9][0-9] \ + core.[0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9] \ + core.[0-9][0-9][0-9][0-9][0-9] lib$(BASEEXT).def \ + mon.out perl \ + perl$(EXE_EXT) perl.exe \ + perlmain.c pm_to_blib \ + pm_to_blib.ts so_locations \ + tmon.out + - $(RM_RF) \ + blib + $(NOECHO) $(RM_F) $(MAKEFILE_OLD) + - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL) + + +# --- MakeMaker realclean_subdirs section: +realclean_subdirs : + $(NOECHO) $(NOOP) + + +# --- MakeMaker realclean section: +# Delete temporary files (via clean) and also delete dist files +realclean purge :: clean realclean_subdirs + - $(RM_F) \ + $(FIRST_MAKEFILE) $(MAKEFILE_OLD) + - $(RM_RF) \ + $(DISTVNAME) + + +# --- MakeMaker metafile section: +metafile : create_distdir + $(NOECHO) $(ECHO) Generating META.yml + $(NOECHO) $(ECHO) '---' > META_new.yml + $(NOECHO) $(ECHO) 'abstract: unknown' >> META_new.yml + $(NOECHO) $(ECHO) 'author:' >> META_new.yml + $(NOECHO) $(ECHO) ' - unknown' >> META_new.yml + $(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'dynamic_config: 1' >> META_new.yml + $(NOECHO) $(ECHO) 'generated_by: '\''ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'license: unknown' >> META_new.yml + $(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml + $(NOECHO) $(ECHO) ' url: http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml + $(NOECHO) $(ECHO) ' version: '\''1.4'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'name: XML-DOM' >> META_new.yml + $(NOECHO) $(ECHO) 'no_index:' >> META_new.yml + $(NOECHO) $(ECHO) ' directory:' >> META_new.yml + $(NOECHO) $(ECHO) ' - t' >> META_new.yml + $(NOECHO) $(ECHO) ' - inc' >> META_new.yml + $(NOECHO) $(ECHO) 'requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' LWP::UserAgent: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) ' XML::Parser: '\''2.30'\''' >> META_new.yml + $(NOECHO) $(ECHO) ' XML::Parser::PerlSAX: '\''0.07'\''' >> META_new.yml + $(NOECHO) $(ECHO) ' XML::RegExp: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'version: '\''1.46'\''' >> META_new.yml + -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml + $(NOECHO) $(ECHO) Generating META.json + $(NOECHO) $(ECHO) '{' > META_new.json + $(NOECHO) $(ECHO) ' "abstract" : "unknown",' >> META_new.json + $(NOECHO) $(ECHO) ' "author" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "unknown"' >> META_new.json + $(NOECHO) $(ECHO) ' ],' >> META_new.json + $(NOECHO) $(ECHO) ' "dynamic_config" : 1,' >> META_new.json + $(NOECHO) $(ECHO) ' "generated_by" : "ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001",' >> META_new.json + $(NOECHO) $(ECHO) ' "license" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "unknown"' >> META_new.json + $(NOECHO) $(ECHO) ' ],' >> META_new.json + $(NOECHO) $(ECHO) ' "meta-spec" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",' >> META_new.json + $(NOECHO) $(ECHO) ' "version" : "2"' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "name" : "XML-DOM",' >> META_new.json + $(NOECHO) $(ECHO) ' "no_index" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "directory" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "t",' >> META_new.json + $(NOECHO) $(ECHO) ' "inc"' >> META_new.json + $(NOECHO) $(ECHO) ' ]' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "prereqs" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "build" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "ExtUtils::MakeMaker" : "0"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "configure" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "ExtUtils::MakeMaker" : "0"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "runtime" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "LWP::UserAgent" : "0",' >> META_new.json + $(NOECHO) $(ECHO) ' "XML::Parser" : "2.30",' >> META_new.json + $(NOECHO) $(ECHO) ' "XML::Parser::PerlSAX" : "0.07",' >> META_new.json + $(NOECHO) $(ECHO) ' "XML::RegExp" : "0"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "release_status" : "stable",' >> META_new.json + $(NOECHO) $(ECHO) ' "version" : "1.46"' >> META_new.json + $(NOECHO) $(ECHO) '}' >> META_new.json + -$(NOECHO) $(MV) META_new.json $(DISTVNAME)/META.json + + +# --- MakeMaker signature section: +signature : + cpansign -s + + +# --- MakeMaker dist_basics section: +distclean :: realclean distcheck + $(NOECHO) $(NOOP) + +distcheck : + $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck + +skipcheck : + $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck + +manifest : + $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest + +veryclean : realclean + $(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old + + + +# --- MakeMaker dist_core section: + +dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE) + $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \ + -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' -- + +tardist : $(DISTVNAME).tar$(SUFFIX) + $(NOECHO) $(NOOP) + +uutardist : $(DISTVNAME).tar$(SUFFIX) + uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)_uu' + +$(DISTVNAME).tar$(SUFFIX) : distdir + $(PREOP) + $(TO_UNIX) + $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME) + $(RM_RF) $(DISTVNAME) + $(COMPRESS) $(DISTVNAME).tar + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)' + $(POSTOP) + +zipdist : $(DISTVNAME).zip + $(NOECHO) $(NOOP) + +$(DISTVNAME).zip : distdir + $(PREOP) + $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME) + $(RM_RF) $(DISTVNAME) + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).zip' + $(POSTOP) + +shdist : distdir + $(PREOP) + $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar + $(RM_RF) $(DISTVNAME) + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).shar' + $(POSTOP) + + +# --- MakeMaker distdir section: +create_distdir : + $(RM_RF) $(DISTVNAME) + $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \ + -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');" + +distdir : create_distdir distmeta + $(NOECHO) $(NOOP) + + + +# --- MakeMaker dist_test section: +disttest : distdir + cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL + cd $(DISTVNAME) && $(MAKE) $(PASTHRU) + cd $(DISTVNAME) && $(MAKE) test $(PASTHRU) + + + +# --- MakeMaker dist_ci section: + +ci : + $(PERLRUN) "-MExtUtils::Manifest=maniread" \ + -e "@all = keys %{ maniread() };" \ + -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \ + -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});" + + +# --- MakeMaker distmeta section: +distmeta : create_distdir metafile + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -e q{META.yml};' \ + -e 'eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) }' \ + -e ' or print "Could not add META.yml to MANIFEST: $$$${'\''@'\''}\n"' -- + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -f q{META.json};' \ + -e 'eval { maniadd({q{META.json} => q{Module JSON meta-data (added by MakeMaker)}}) }' \ + -e ' or print "Could not add META.json to MANIFEST: $$$${'\''@'\''}\n"' -- + + + +# --- MakeMaker distsignature section: +distsignature : create_distdir + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) }' \ + -e ' or print "Could not add SIGNATURE to MANIFEST: $$$${'\''@'\''}\n"' -- + $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE + cd $(DISTVNAME) && cpansign -s + + + +# --- MakeMaker install section: + +install :: pure_install doc_install + $(NOECHO) $(NOOP) + +install_perl :: pure_perl_install doc_perl_install + $(NOECHO) $(NOOP) + +install_site :: pure_site_install doc_site_install + $(NOECHO) $(NOOP) + +install_vendor :: pure_vendor_install doc_vendor_install + $(NOECHO) $(NOOP) + +pure_install :: pure_$(INSTALLDIRS)_install + $(NOECHO) $(NOOP) + +doc_install :: doc_$(INSTALLDIRS)_install + $(NOECHO) $(NOOP) + +pure__install : pure_site_install + $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site + +doc__install : doc_site_install + $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site + +pure_perl_install :: all + $(NOECHO) umask 022; $(MOD_INSTALL) \ + "$(INST_LIB)" "$(DESTINSTALLPRIVLIB)" \ + "$(INST_ARCHLIB)" "$(DESTINSTALLARCHLIB)" \ + "$(INST_BIN)" "$(DESTINSTALLBIN)" \ + "$(INST_SCRIPT)" "$(DESTINSTALLSCRIPT)" \ + "$(INST_MAN1DIR)" "$(DESTINSTALLMAN1DIR)" \ + "$(INST_MAN3DIR)" "$(DESTINSTALLMAN3DIR)" + $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ + "$(SITEARCHEXP)/auto/$(FULLEXT)" + + +pure_site_install :: all + $(NOECHO) umask 02; $(MOD_INSTALL) \ + read "$(SITEARCHEXP)/auto/$(FULLEXT)/.packlist" \ + write "$(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist" \ + "$(INST_LIB)" "$(DESTINSTALLSITELIB)" \ + "$(INST_ARCHLIB)" "$(DESTINSTALLSITEARCH)" \ + "$(INST_BIN)" "$(DESTINSTALLSITEBIN)" \ + "$(INST_SCRIPT)" "$(DESTINSTALLSITESCRIPT)" \ + "$(INST_MAN1DIR)" "$(DESTINSTALLSITEMAN1DIR)" \ + "$(INST_MAN3DIR)" "$(DESTINSTALLSITEMAN3DIR)" + $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ + "$(PERL_ARCHLIB)/auto/$(FULLEXT)" + +pure_vendor_install :: all + $(NOECHO) umask 022; $(MOD_INSTALL) \ + "$(INST_LIB)" "$(DESTINSTALLVENDORLIB)" \ + "$(INST_ARCHLIB)" "$(DESTINSTALLVENDORARCH)" \ + "$(INST_BIN)" "$(DESTINSTALLVENDORBIN)" \ + "$(INST_SCRIPT)" "$(DESTINSTALLVENDORSCRIPT)" \ + "$(INST_MAN1DIR)" "$(DESTINSTALLVENDORMAN1DIR)" \ + "$(INST_MAN3DIR)" "$(DESTINSTALLVENDORMAN3DIR)" + + +doc_perl_install :: all + +doc_site_install :: all + $(NOECHO) $(ECHO) Appending installation info to "$(DESTINSTALLSITEARCH)/perllocal.pod" + -$(NOECHO) umask 02; $(MKPATH) "$(DESTINSTALLSITEARCH)" + -$(NOECHO) umask 02; $(DOC_INSTALL) \ + "Module" "$(NAME)" \ + "installed into" $(INSTALLSITELIB) \ + LINKTYPE "$(LINKTYPE)" \ + VERSION "$(VERSION)" \ + EXE_FILES "$(EXE_FILES)" \ + >> "$(DESTINSTALLSITEARCH)/perllocal.pod" + +doc_vendor_install :: all + + +uninstall :: uninstall_from_$(INSTALLDIRS)dirs + $(NOECHO) $(NOOP) + +uninstall_from_perldirs :: + +uninstall_from_sitedirs :: + $(NOECHO) $(UNINSTALL) "$(SITEARCHEXP)/auto/$(FULLEXT)/.packlist" + +uninstall_from_vendordirs :: + + +# --- MakeMaker force section: +# Phony target to force checking subdirectories. +FORCE : + $(NOECHO) $(NOOP) + + +# --- MakeMaker perldepend section: + + +# --- MakeMaker makefile section: +# We take a very conservative approach here, but it's worth it. +# We move Makefile to Makefile.old here to avoid gnu make looping. +$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP) + $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?" + $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..." + -$(NOECHO) $(RM_F) $(MAKEFILE_OLD) + -$(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) + - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL) + $(PERLRUN) Makefile.PL + $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <==" + $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <==" + $(FALSE) + + + +# --- MakeMaker staticmake section: + +# --- MakeMaker makeaperl section --- +MAP_TARGET = perl +FULLPERL = "/usr/bin/perl" + +$(MAP_TARGET) :: static $(MAKE_APERL_FILE) + $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@ + +$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib + $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET) + $(NOECHO) $(PERLRUNINST) \ + Makefile.PL DIR="" \ + MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \ + MAKEAPERL=1 NORECURS=1 CCCDLFLAGS= + + +# --- MakeMaker test section: + +TEST_VERBOSE=0 +TEST_TYPE=test_$(LINKTYPE) +TEST_FILE = test.pl +TEST_FILES = t/*.t +TESTDB_SW = -d + +testdb :: testdb_$(LINKTYPE) + +test :: $(TEST_TYPE) subdirs-test + +subdirs-test :: + $(NOECHO) $(NOOP) + + +test_dynamic :: pure_all + PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES) + +testdb_dynamic :: pure_all + PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) + +test_ : test_dynamic + +test_static :: test_dynamic +testdb_static :: testdb_dynamic + + +# --- MakeMaker ppd section: +# Creates a PPD (Perl Package Description) for a binary distribution. +ppd : + $(NOECHO) $(ECHO) '' > $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) '' >> $(DISTNAME).ppd + + +# --- MakeMaker pm_to_blib section: + +pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM) + $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \ + lib/XML/DOM.pm blib/lib/XML/DOM.pm \ + lib/XML/DOM/AttDef.pod blib/lib/XML/DOM/AttDef.pod \ + lib/XML/DOM/AttlistDecl.pod blib/lib/XML/DOM/AttlistDecl.pod \ + lib/XML/DOM/Attr.pod blib/lib/XML/DOM/Attr.pod \ + lib/XML/DOM/CDATASection.pod blib/lib/XML/DOM/CDATASection.pod \ + lib/XML/DOM/CharacterData.pod blib/lib/XML/DOM/CharacterData.pod \ + lib/XML/DOM/Comment.pod blib/lib/XML/DOM/Comment.pod \ + lib/XML/DOM/DOMException.pm blib/lib/XML/DOM/DOMException.pm \ + lib/XML/DOM/DOMImplementation.pod blib/lib/XML/DOM/DOMImplementation.pod \ + lib/XML/DOM/Document.pod blib/lib/XML/DOM/Document.pod \ + lib/XML/DOM/DocumentFragment.pod blib/lib/XML/DOM/DocumentFragment.pod \ + lib/XML/DOM/DocumentType.pod blib/lib/XML/DOM/DocumentType.pod \ + lib/XML/DOM/Element.pod blib/lib/XML/DOM/Element.pod \ + lib/XML/DOM/ElementDecl.pod blib/lib/XML/DOM/ElementDecl.pod \ + lib/XML/DOM/Entity.pod blib/lib/XML/DOM/Entity.pod \ + lib/XML/DOM/EntityReference.pod blib/lib/XML/DOM/EntityReference.pod \ + lib/XML/DOM/NamedNodeMap.pm blib/lib/XML/DOM/NamedNodeMap.pm \ + lib/XML/DOM/NamedNodeMap.pod blib/lib/XML/DOM/NamedNodeMap.pod \ + lib/XML/DOM/Node.pod blib/lib/XML/DOM/Node.pod \ + lib/XML/DOM/NodeList.pm blib/lib/XML/DOM/NodeList.pm \ + lib/XML/DOM/NodeList.pod blib/lib/XML/DOM/NodeList.pod \ + lib/XML/DOM/Notation.pod blib/lib/XML/DOM/Notation.pod \ + lib/XML/DOM/Parser.pod blib/lib/XML/DOM/Parser.pod \ + lib/XML/DOM/PerlSAX.pm blib/lib/XML/DOM/PerlSAX.pm \ + lib/XML/DOM/ProcessingInstruction.pod blib/lib/XML/DOM/ProcessingInstruction.pod \ + lib/XML/DOM/Text.pod blib/lib/XML/DOM/Text.pod \ + lib/XML/DOM/XMLDecl.pod blib/lib/XML/DOM/XMLDecl.pod \ + lib/XML/Handler/BuildDOM.pm blib/lib/XML/Handler/BuildDOM.pm + $(NOECHO) $(TOUCH) pm_to_blib + + +# --- MakeMaker selfdocument section: + + +# --- MakeMaker postamble section: + + +# End. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/Makefile.PL b/fastSum/resources/ROUGE/XML-DOM-1.46/Makefile.PL new file mode 100644 index 0000000000000000000000000000000000000000..a82fa2f81b3ef1edf63ac8c5a0940d342702e5d6 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/Makefile.PL @@ -0,0 +1,38 @@ +use ExtUtils::MakeMaker; + +sub MY::libscan +{ + package MY; + + my ($self, $file) = @_; + + # Don't install these PM files (or Emacs or other backups: *~ *.bak) + # Also don't install XML/Parser.pod and XML/Parser/Expat.pod because I copied + # those from the XML::Parser distribution. + return undef if $file =~ /(XML.Parser\.pod|Expat\.pod|CmpDOM|CheckAncestors|~$|\.bak$)/; + + return $self->SUPER::libscan ($file); +} + +# See lib/ExtUtils/MakeMaker.pm for details of how to influence +# the contents of the Makefile that is written. +WriteMakefile( + NAME => 'XML::DOM', + VERSION_FROM => 'lib/XML/DOM.pm', + # XML::Parser 2.28 and above work, but make test + # doesn't pass because of different ways + # errors are reported + PREREQ_PM => { 'XML::Parser' => '2.30', + # LWP::UserAgent is used when parsing XML from URLs + # It's part of libwww-perl, and you don't strictly need it + # (some test cases may fail) + 'LWP::UserAgent' => '0', + # XML::Parser::PerlSAX is part of libxml-perl. + # It's used by some test cases in t/chk_batch.t and you + # don't strictly need it. Version 0.05 causes errors in the + # test cases in t/chk_batch.t. + 'XML::Parser::PerlSAX' => '0.07', + 'XML::RegExp' => 0, + }, + dist => {'COMPRESS' => 'gzip', 'SUFFIX' => '.gz'}, +); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/README b/fastSum/resources/ROUGE/XML-DOM-1.46/README new file mode 100644 index 0000000000000000000000000000000000000000..0a96d203ce4f1afde029b5e452cd95e9c50767c3 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/README @@ -0,0 +1,76 @@ + Perl module: XML-DOM + +Copyright (c) 1999,2000 Enno Derksen +All rights reserved. +This program is free software; you can redistribute it and/or modify it +under the same terms as Perl itself. + +The XML::DOM code is fairly stable and has been used quite a bit. + +However, there is a new DOM module, XML::GDOME which is under active +development and significantly faster than XML::DOM, since it is based on +the libgdome C library. It provides Level 2 of the DOM Core API. For +more details see http://tjmather.com/xml-gdome/ + +Patches welcome! Send them to tjmather@maxmind.com + +Paid support is available from directly from the maintainers of this package. +Please see http://www.maxmind.com/app/opensourceservices for more details. + +========= DEPENDENCIES ========================================================= + +You need the following modules (all available at CPAN): + +- Perl 5.6.0 or higher (can run under earlier versions, simply remove + use bytes; + from lib/XML/DOM.pm) +- XML::RegExp +- XML::Parser (At least version 2.28, 2.30 recommended) + If you are using XML::Parser 2.27, then you should download + libxml-enno-1.02 from your local CPAN mirror. + If you are using Perl 5.8.0 or greater and XML::Parser 2.32 or lesser, you must apply the + included XML-Parser-2.31.patch. +- LWP::UserAgent (It's part of libwww-perl. If you don't have it, some test + cases may fail and you can't read files from URLs.) +- XML::Parser::PerlSAX (It's part of libxml-perl. You need at least version 0.06. + If you don't have it some test cases may fail.) + +========= INSTALLATION ========================================================= + +To configure this module, cd to the directory that contains this README file +and type the following. + + perl Makefile.PL + +Alternatively, if you plan to install XML::Parser somewhere other than +your system's perl library directory. You can type something like this: + + perl Makefile.PL PREFIX=/home/me/perl INSTALLDIRS=perl + +Then to build you run make. + + make + +You can then test the module by typing: + + make test + +If you have write access to the perl library directories, you may then +install by typing: + + make install + +============= XML::DOM ========================================================= + +This is a Perl extension to XML::Parser. It adds a new 'Style' to XML::Parser, +called 'Dom', that allows XML::Parser to build an Object Oriented datastructure +with a DOM Level 1 compliant interface. +For a description of the DOM (Document Object Model), see http://www.w3.org/DOM/ + +XML::Parser is a Perl extension interface to James Clark's XML parser, expat. +It requires at least version 5.004 of perl and can be found on CPAN. + +This is a beta version and although there will not be any major API changes, +minor changes may occur as we get feedback +from the people on the perl-xml mailing list. [You can subscribe to +this list by sending a message to subscribe-perl-xml@listserv.activestate.com.] diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/XML-Parser-2.31.patch b/fastSum/resources/ROUGE/XML-DOM-1.46/XML-Parser-2.31.patch new file mode 100644 index 0000000000000000000000000000000000000000..2e6b48410c5e79adb7aa9bf7d2013ded3d8babbe --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/XML-Parser-2.31.patch @@ -0,0 +1,25 @@ +--- XML-Parser-2.31/Expat/Expat.pm 2002-04-02 12:35:54.000000000 -0500 ++++ XML-Parser-2.32/Expat/Expat.pm 2002-10-19 12:51:00.000000000 -0400 +@@ -568,7 +568,8 @@ + } + else { + my $sep = $self->{Type} == CHOICE ? '|' : ','; +- $ret = '(' . join($sep, @{$self->{Children}}) . ')'; ++ my @children_str = map { $_->asString } @{$self->{Children}}; ++ $ret = '(' . join($sep, @children_str) . ')'; + } + + $ret .= $self->{Quant} if $self->{Quant}; +Only in XML-Parser-2.32/Expat: Expat.pm~ +diff -ur XML-Parser-2.31/Expat/Expat.xs XML-Parser-2.32/Expat/Expat.xs +--- XML-Parser-2.31/Expat/Expat.xs 2002-04-02 12:35:54.000000000 -0500 ++++ XML-Parser-2.32/Expat/Expat.xs 2002-10-19 12:20:12.000000000 -0400 +@@ -259,7 +259,7 @@ + + switch(model->type) { + case XML_CTYPE_NAME: +- hv_store(hash, "Tag", 3, newSVpv((char *)model->name, 0), 0); ++ hv_store(hash, "Tag", 3, newUTF8SVpv((char *)model->name, 0), 0); + break; + + case XML_CTYPE_MIXED: diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/arch/.exists b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/arch/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/arch/auto/XML/DOM/.exists b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/arch/auto/XML/DOM/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/bin/.exists b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/bin/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/.exists b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM.pm new file mode 100644 index 0000000000000000000000000000000000000000..14e7084d55fb89d17eb965673f5234cc8c087155 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM.pm @@ -0,0 +1,5129 @@ +################################################################################ +# +# Perl module: XML::DOM +# +# By Enno Derksen +# +################################################################################ +# +# To do: +# +# * optimize Attr if it only contains 1 Text node to hold the value +# * fix setDocType! +# +# * BUG: setOwnerDocument - does not process default attr values correctly, +# they still point to the old doc. +# * change Exception mechanism +# * maybe: more checking of sysId etc. +# * NoExpand mode (don't know what else is useful) +# * various odds and ends: see comments starting with "??" +# * normalize(1) could also expand CDataSections and EntityReferences +# * parse a DocumentFragment? +# * encoding support +# +###################################################################### + +###################################################################### +package XML::DOM; +###################################################################### + +use strict; + +use vars qw( $VERSION @ISA @EXPORT + $IgnoreReadOnly $SafeMode $TagStyle + %DefaultEntities %DecodeDefaultEntity + ); +use Carp; +use XML::RegExp; + +BEGIN +{ + require XML::Parser; + $VERSION = '1.46'; + + my $needVersion = '2.28'; + die "need at least XML::Parser version $needVersion (current=${XML::Parser::VERSION})" + unless $XML::Parser::VERSION >= $needVersion; + + @ISA = qw( Exporter ); + + # Constants for XML::DOM Node types + @EXPORT = qw( + UNKNOWN_NODE + ELEMENT_NODE + ATTRIBUTE_NODE + TEXT_NODE + CDATA_SECTION_NODE + ENTITY_REFERENCE_NODE + ENTITY_NODE + PROCESSING_INSTRUCTION_NODE + COMMENT_NODE + DOCUMENT_NODE + DOCUMENT_TYPE_NODE + DOCUMENT_FRAGMENT_NODE + NOTATION_NODE + ELEMENT_DECL_NODE + ATT_DEF_NODE + XML_DECL_NODE + ATTLIST_DECL_NODE + ); +} + +#---- Constant definitions + +# Node types + +sub UNKNOWN_NODE () { 0 } # not in the DOM Spec + +sub ELEMENT_NODE () { 1 } +sub ATTRIBUTE_NODE () { 2 } +sub TEXT_NODE () { 3 } +sub CDATA_SECTION_NODE () { 4 } +sub ENTITY_REFERENCE_NODE () { 5 } +sub ENTITY_NODE () { 6 } +sub PROCESSING_INSTRUCTION_NODE () { 7 } +sub COMMENT_NODE () { 8 } +sub DOCUMENT_NODE () { 9 } +sub DOCUMENT_TYPE_NODE () { 10} +sub DOCUMENT_FRAGMENT_NODE () { 11} +sub NOTATION_NODE () { 12} + +sub ELEMENT_DECL_NODE () { 13 } # not in the DOM Spec +sub ATT_DEF_NODE () { 14 } # not in the DOM Spec +sub XML_DECL_NODE () { 15 } # not in the DOM Spec +sub ATTLIST_DECL_NODE () { 16 } # not in the DOM Spec + +%DefaultEntities = +( + "quot" => '"', + "gt" => ">", + "lt" => "<", + "apos" => "'", + "amp" => "&" +); + +%DecodeDefaultEntity = +( + '"' => """, + ">" => ">", + "<" => "<", + "'" => "'", + "&" => "&" +); + +# +# If you don't want DOM warnings to use 'warn', override this method like this: +# +# { # start block scope +# local *XML::DOM::warning = \&my_warn; +# ... your code here ... +# } # end block scope (old XML::DOM::warning takes effect again) +# +sub warning # static +{ + warn @_; +} + +# +# This method defines several things in the caller's package, so you can use named constants to +# access the array that holds the member data, i.e. $self->[_Data]. It assumes the caller's package +# defines a class that is implemented as a blessed array reference. +# Note that this is very similar to using 'use fields' and 'use base'. +# +# E.g. if $fields eq "Name Model", $parent eq "XML::DOM::Node" and +# XML::DOM::Node had "A B C" as fields and it was called from package "XML::DOM::ElementDecl", +# then this code would basically do the following: +# +# package XML::DOM::ElementDecl; +# +# sub _Name () { 3 } # Note that parent class had three fields +# sub _Model () { 4 } +# +# # Maps constant names (without '_') to constant (int) value +# %HFIELDS = ( %XML::DOM::Node::HFIELDS, Name => _Name, Model => _Model ); +# +# # Define XML:DOM::ElementDecl as a subclass of XML::DOM::Node +# @ISA = qw{ XML::DOM::Node }; +# +# # The following function names can be exported into the user's namespace. +# @EXPORT_OK = qw{ _Name _Model }; +# +# # The following function names can be exported into the user's namespace +# # with: import XML::DOM::ElementDecl qw( :Fields ); +# %EXPORT_TAGS = ( Fields => qw{ _Name _Model } ); +# +sub def_fields # static +{ + my ($fields, $parent) = @_; + + my ($pkg) = caller; + + no strict 'refs'; + + my @f = split (/\s+/, $fields); + my $n = 0; + + my %hfields; + if (defined $parent) + { + my %pf = %{"$parent\::HFIELDS"}; + %hfields = %pf; + + $n = scalar (keys %pf); + @{"$pkg\::ISA"} = ( $parent ); + } + + my $i = $n; + for (@f) + { + eval "sub $pkg\::_$_ () { $i }"; + $hfields{$_} = $i; + $i++; + } + %{"$pkg\::HFIELDS"} = %hfields; + @{"$pkg\::EXPORT_OK"} = map { "_$_" } @f; + + ${"$pkg\::EXPORT_TAGS"}{Fields} = [ map { "_$_" } @f ]; +} + +# sub blesh +# { +# my $hashref = shift; +# my $class = shift; +# no strict 'refs'; +# my $self = bless [\%{"$class\::FIELDS"}], $class; +# if (defined $hashref) +# { +# for (keys %$hashref) +# { +# $self->{$_} = $hashref->{$_}; +# } +# } +# $self; +# } + +# sub blesh2 +# { +# my $hashref = shift; +# my $class = shift; +# no strict 'refs'; +# my $self = bless [\%{"$class\::FIELDS"}], $class; +# if (defined $hashref) +# { +# for (keys %$hashref) +# { +# eval { $self->{$_} = $hashref->{$_}; }; +# croak "ERROR in field [$_] $@" if $@; +# } +# } +# $self; +#} + +# +# CDATA section may not contain "]]>" +# +sub encodeCDATA +{ + my ($str) = shift; + $str =~ s/]]>/]]>/go; + $str; +} + +# +# PI may not contain "?>" +# +sub encodeProcessingInstruction +{ + my ($str) = shift; + $str =~ s/\?>/?>/go; + $str; +} + +# +#?? Not sure if this is right - must prevent double minus somehow... +# +sub encodeComment +{ + my ($str) = shift; + return undef unless defined $str; + + $str =~ s/--/--/go; + $str; +} + +# +# For debugging +# +sub toHex +{ + my $str = shift; + my $len = length($str); + my @a = unpack ("C$len", $str); + my $s = ""; + for (@a) + { + $s .= sprintf ("%02x", $_); + } + $s; +} + +# +# 2nd parameter $default: list of Default Entity characters that need to be +# converted (e.g. "&<" for conversion to "&" and "<" resp.) +# +sub encodeText +{ + my ($str, $default) = @_; + return undef unless defined $str; + + if ($] >= 5.006) { + $str =~ s/([$default])|(]]>)/ + defined ($1) ? $DecodeDefaultEntity{$1} : "]]>" /egs; + } + else { + $str =~ s/([\xC0-\xDF].|[\xE0-\xEF]..|[\xF0-\xFF]...)|([$default])|(]]>)/ + defined($1) ? XmlUtf8Decode ($1) : + defined ($2) ? $DecodeDefaultEntity{$2} : "]]>" /egs; + } + +#?? could there be references that should not be expanded? +# e.g. should not replace &#nn; ¯ and &abc; +# $str =~ s/&(?!($ReName|#[0-9]+|#x[0-9a-fA-F]+);)/&/go; + + $str; +} + +# +# Used by AttDef - default value +# +sub encodeAttrValue +{ + encodeText (shift, '"&<>'); +} + +# +# Converts an integer (Unicode - ISO/IEC 10646) to a UTF-8 encoded character +# sequence. +# Used when converting e.g. { or Ͽ to a string value. +# +# Algorithm borrowed from expat/xmltok.c/XmlUtf8Encode() +# +# not checking for bad characters: < 0, x00-x08, x0B-x0C, x0E-x1F, xFFFE-xFFFF +# +sub XmlUtf8Encode +{ + my $n = shift; + if ($n < 0x80) + { + return chr ($n); + } + elsif ($n < 0x800) + { + return pack ("CC", (($n >> 6) | 0xc0), (($n & 0x3f) | 0x80)); + } + elsif ($n < 0x10000) + { + return pack ("CCC", (($n >> 12) | 0xe0), ((($n >> 6) & 0x3f) | 0x80), + (($n & 0x3f) | 0x80)); + } + elsif ($n < 0x110000) + { + return pack ("CCCC", (($n >> 18) | 0xf0), ((($n >> 12) & 0x3f) | 0x80), + ((($n >> 6) & 0x3f) | 0x80), (($n & 0x3f) | 0x80)); + } + croak "number is too large for Unicode [$n] in &XmlUtf8Encode"; +} + +# +# Opposite of XmlUtf8Decode plus it adds prefix "&#" or "&#x" and suffix ";" +# The 2nd parameter ($hex) indicates whether the result is hex encoded or not. +# +sub XmlUtf8Decode +{ + my ($str, $hex) = @_; + my $len = length ($str); + my $n; + + if ($len == 2) + { + my @n = unpack "C2", $str; + $n = (($n[0] & 0x3f) << 6) + ($n[1] & 0x3f); + } + elsif ($len == 3) + { + my @n = unpack "C3", $str; + $n = (($n[0] & 0x1f) << 12) + (($n[1] & 0x3f) << 6) + + ($n[2] & 0x3f); + } + elsif ($len == 4) + { + my @n = unpack "C4", $str; + $n = (($n[0] & 0x0f) << 18) + (($n[1] & 0x3f) << 12) + + (($n[2] & 0x3f) << 6) + ($n[3] & 0x3f); + } + elsif ($len == 1) # just to be complete... + { + $n = ord ($str); + } + else + { + croak "bad value [$str] for XmlUtf8Decode"; + } + $hex ? sprintf ("&#x%x;", $n) : "&#$n;"; +} + +$IgnoreReadOnly = 0; +$SafeMode = 1; + +sub getIgnoreReadOnly +{ + $IgnoreReadOnly; +} + +# +# The global flag $IgnoreReadOnly is set to the specified value and the old +# value of $IgnoreReadOnly is returned. +# +# To temporarily disable read-only related exceptions (i.e. when parsing +# XML or temporarily), do the following: +# +# my $oldIgnore = XML::DOM::ignoreReadOnly (1); +# ... do whatever you want ... +# XML::DOM::ignoreReadOnly ($oldIgnore); +# +sub ignoreReadOnly +{ + my $i = $IgnoreReadOnly; + $IgnoreReadOnly = $_[0]; + return $i; +} + +# +# XML spec seems to break its own rules... (see ENTITY xmlpio) +# +sub forgiving_isValidName +{ + use bytes; # XML::RegExp expressed in terms encoded UTF8 + $_[0] =~ /^$XML::RegExp::Name$/o; +} + +# +# Don't allow names starting with xml (either case) +# +sub picky_isValidName +{ + use bytes; # XML::RegExp expressed in terms encoded UTF8 + $_[0] =~ /^$XML::RegExp::Name$/o and $_[0] !~ /^xml/i; +} + +# Be forgiving by default, +*isValidName = \&forgiving_isValidName; + +sub allowReservedNames # static +{ + *isValidName = ($_[0] ? \&forgiving_isValidName : \&picky_isValidName); +} + +sub getAllowReservedNames # static +{ + *isValidName == \&forgiving_isValidName; +} + +# +# Always compress empty tags by default +# This is used by Element::print. +# +$TagStyle = sub { 0 }; + +sub setTagCompression +{ + $TagStyle = shift; +} + +###################################################################### +package XML::DOM::PrintToFileHandle; +###################################################################### + +# +# Used by XML::DOM::Node::printToFileHandle +# + +sub new +{ + my($class, $fn) = @_; + bless $fn, $class; +} + +sub print +{ + my ($self, $str) = @_; + print $self $str; +} + +###################################################################### +package XML::DOM::PrintToString; +###################################################################### + +use vars qw{ $Singleton }; + +# +# Used by XML::DOM::Node::toString to concatenate strings +# + +sub new +{ + my($class) = @_; + my $str = ""; + bless \$str, $class; +} + +sub print +{ + my ($self, $str) = @_; + $$self .= $str; +} + +sub toString +{ + my $self = shift; + $$self; +} + +sub reset +{ + ${$_[0]} = ""; +} + +$Singleton = new XML::DOM::PrintToString; + +###################################################################### +package XML::DOM::DOMImplementation; +###################################################################### + +$XML::DOM::DOMImplementation::Singleton = + bless \$XML::DOM::DOMImplementation::Singleton, 'XML::DOM::DOMImplementation'; + +sub hasFeature +{ + my ($self, $feature, $version) = @_; + + uc($feature) eq 'XML' and ($version eq '1.0' || $version eq ''); +} + + +###################################################################### +package XML::XQL::Node; # forward declaration +###################################################################### + +###################################################################### +package XML::DOM::Node; +###################################################################### + +use vars qw( @NodeNames @EXPORT @ISA %HFIELDS @EXPORT_OK @EXPORT_TAGS ); + +BEGIN +{ + use XML::DOM::DOMException; + import Carp; + + require FileHandle; + + @ISA = qw( Exporter XML::XQL::Node ); + + # NOTE: SortKey is used in XML::XQL::Node. + # UserData is reserved for users (Hang your data here!) + XML::DOM::def_fields ("C A Doc Parent ReadOnly UsedIn Hidden SortKey UserData"); + + push (@EXPORT, qw( + UNKNOWN_NODE + ELEMENT_NODE + ATTRIBUTE_NODE + TEXT_NODE + CDATA_SECTION_NODE + ENTITY_REFERENCE_NODE + ENTITY_NODE + PROCESSING_INSTRUCTION_NODE + COMMENT_NODE + DOCUMENT_NODE + DOCUMENT_TYPE_NODE + DOCUMENT_FRAGMENT_NODE + NOTATION_NODE + ELEMENT_DECL_NODE + ATT_DEF_NODE + XML_DECL_NODE + ATTLIST_DECL_NODE + )); +} + +#---- Constant definitions + +# Node types + +sub UNKNOWN_NODE () {0;} # not in the DOM Spec + +sub ELEMENT_NODE () {1;} +sub ATTRIBUTE_NODE () {2;} +sub TEXT_NODE () {3;} +sub CDATA_SECTION_NODE () {4;} +sub ENTITY_REFERENCE_NODE () {5;} +sub ENTITY_NODE () {6;} +sub PROCESSING_INSTRUCTION_NODE () {7;} +sub COMMENT_NODE () {8;} +sub DOCUMENT_NODE () {9;} +sub DOCUMENT_TYPE_NODE () {10;} +sub DOCUMENT_FRAGMENT_NODE () {11;} +sub NOTATION_NODE () {12;} + +sub ELEMENT_DECL_NODE () {13;} # not in the DOM Spec +sub ATT_DEF_NODE () {14;} # not in the DOM Spec +sub XML_DECL_NODE () {15;} # not in the DOM Spec +sub ATTLIST_DECL_NODE () {16;} # not in the DOM Spec + +@NodeNames = ( + "UNKNOWN_NODE", # not in the DOM Spec! + + "ELEMENT_NODE", + "ATTRIBUTE_NODE", + "TEXT_NODE", + "CDATA_SECTION_NODE", + "ENTITY_REFERENCE_NODE", + "ENTITY_NODE", + "PROCESSING_INSTRUCTION_NODE", + "COMMENT_NODE", + "DOCUMENT_NODE", + "DOCUMENT_TYPE_NODE", + "DOCUMENT_FRAGMENT_NODE", + "NOTATION_NODE", + + "ELEMENT_DECL_NODE", + "ATT_DEF_NODE", + "XML_DECL_NODE", + "ATTLIST_DECL_NODE" + ); + +sub decoupleUsedIn +{ + my $self = shift; + undef $self->[_UsedIn]; # was delete +} + +sub getParentNode +{ + $_[0]->[_Parent]; +} + +sub appendChild +{ + my ($self, $node) = @_; + + # REC 7473 + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + } + + my $doc = $self->[_Doc]; + + if ($node->isDocumentFragmentNode) + { + if ($XML::DOM::SafeMode) + { + for my $n (@{$node->[_C]}) + { + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR, + "nodes belong to different documents") + if $doc != $n->[_Doc]; + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "node is ancestor of parent node") + if $n->isAncestor ($self); + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "bad node type") + if $self->rejectChild ($n); + } + } + + my @list = @{$node->[_C]}; # don't try to compress this + for my $n (@list) + { + $n->setParentNode ($self); + } + push @{$self->[_C]}, @list; + } + else + { + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR, + "nodes belong to different documents") + if $doc != $node->[_Doc]; + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "node is ancestor of parent node") + if $node->isAncestor ($self); + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "bad node type") + if $self->rejectChild ($node); + } + $node->setParentNode ($self); + push @{$self->[_C]}, $node; + } + $node; +} + +sub getChildNodes +{ + # NOTE: if node can't have children, $self->[_C] is undef. + my $kids = $_[0]->[_C]; + + # Return a list if called in list context. + wantarray ? (defined ($kids) ? @{ $kids } : ()) : + (defined ($kids) ? $kids : $XML::DOM::NodeList::EMPTY); +} + +sub hasChildNodes +{ + my $kids = $_[0]->[_C]; + defined ($kids) && @$kids > 0; +} + +# This method is overriden in Document +sub getOwnerDocument +{ + $_[0]->[_Doc]; +} + +sub getFirstChild +{ + my $kids = $_[0]->[_C]; + defined $kids ? $kids->[0] : undef; +} + +sub getLastChild +{ + my $kids = $_[0]->[_C]; + defined $kids ? $kids->[-1] : undef; +} + +sub getPreviousSibling +{ + my $self = shift; + + my $pa = $self->[_Parent]; + return undef unless $pa; + my $index = $pa->getChildIndex ($self); + return undef unless $index; + + $pa->getChildAtIndex ($index - 1); +} + +sub getNextSibling +{ + my $self = shift; + + my $pa = $self->[_Parent]; + return undef unless $pa; + + $pa->getChildAtIndex ($pa->getChildIndex ($self) + 1); +} + +sub insertBefore +{ + my ($self, $node, $refNode) = @_; + + return $self->appendChild ($node) unless $refNode; # append at the end + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my @nodes = ($node); + @nodes = @{$node->[_C]} + if $node->getNodeType == DOCUMENT_FRAGMENT_NODE; + + my $doc = $self->[_Doc]; + + for my $n (@nodes) + { + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR, + "nodes belong to different documents") + if $doc != $n->[_Doc]; + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "node is ancestor of parent node") + if $n->isAncestor ($self); + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "bad node type") + if $self->rejectChild ($n); + } + my $index = $self->getChildIndex ($refNode); + + croak new XML::DOM::DOMException (NOT_FOUND_ERR, + "reference node not found") + if $index == -1; + + for my $n (@nodes) + { + $n->setParentNode ($self); + } + + splice (@{$self->[_C]}, $index, 0, @nodes); + $node; +} + +sub replaceChild +{ + my ($self, $node, $refNode) = @_; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my @nodes = ($node); + @nodes = @{$node->[_C]} + if $node->getNodeType == DOCUMENT_FRAGMENT_NODE; + + for my $n (@nodes) + { + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR, + "nodes belong to different documents") + if $self->[_Doc] != $n->[_Doc]; + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "node is ancestor of parent node") + if $n->isAncestor ($self); + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "bad node type") + if $self->rejectChild ($n); + } + + my $index = $self->getChildIndex ($refNode); + croak new XML::DOM::DOMException (NOT_FOUND_ERR, + "reference node not found") + if $index == -1; + + for my $n (@nodes) + { + $n->setParentNode ($self); + } + splice (@{$self->[_C]}, $index, 1, @nodes); + + $refNode->removeChildHoodMemories; + $refNode; +} + +sub removeChild +{ + my ($self, $node) = @_; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my $index = $self->getChildIndex ($node); + + croak new XML::DOM::DOMException (NOT_FOUND_ERR, + "reference node not found") + if $index == -1; + + splice (@{$self->[_C]}, $index, 1, ()); + + $node->removeChildHoodMemories; + $node; +} + +# Merge all subsequent Text nodes in this subtree +sub normalize +{ + my ($self) = shift; + my $prev = undef; # previous Text node + + return unless defined $self->[_C]; + + my @nodes = @{$self->[_C]}; + my $i = 0; + my $n = @nodes; + while ($i < $n) + { + my $node = $self->getChildAtIndex($i); + my $type = $node->getNodeType; + + if (defined $prev) + { + # It should not merge CDATASections. Dom Spec says: + # Adjacent CDATASections nodes are not merged by use + # of the Element.normalize() method. + if ($type == TEXT_NODE) + { + $prev->appendData ($node->getData); + $self->removeChild ($node); + $i--; + $n--; + } + else + { + $prev = undef; + if ($type == ELEMENT_NODE) + { + $node->normalize; + if (defined $node->[_A]) + { + for my $attr (@{$node->[_A]->getValues}) + { + $attr->normalize; + } + } + } + } + } + else + { + if ($type == TEXT_NODE) + { + $prev = $node; + } + elsif ($type == ELEMENT_NODE) + { + $node->normalize; + if (defined $node->[_A]) + { + for my $attr (@{$node->[_A]->getValues}) + { + $attr->normalize; + } + } + } + } + $i++; + } +} + +# +# Return all Element nodes in the subtree that have the specified tagName. +# If tagName is "*", all Element nodes are returned. +# NOTE: the DOM Spec does not specify a 3rd or 4th parameter +# +sub getElementsByTagName +{ + my ($self, $tagName, $recurse, $list) = @_; + $recurse = 1 unless defined $recurse; + $list = (wantarray ? [] : new XML::DOM::NodeList) unless defined $list; + + return unless defined $self->[_C]; + + # preorder traversal: check parent node first + for my $kid (@{$self->[_C]}) + { + if ($kid->isElementNode) + { + if ($tagName eq "*" || $tagName eq $kid->getTagName) + { + push @{$list}, $kid; + } + $kid->getElementsByTagName ($tagName, $recurse, $list) if $recurse; + } + } + wantarray ? @{ $list } : $list; +} + +sub getNodeValue +{ + undef; +} + +sub setNodeValue +{ + # no-op +} + +# +# Redefined by XML::DOM::Element +# +sub getAttributes +{ + undef; +} + +#------------------------------------------------------------ +# Extra method implementations + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + $self->[_Doc] = $doc; + + return unless defined $self->[_C]; + + for my $kid (@{$self->[_C]}) + { + $kid->setOwnerDocument ($doc); + } +} + +sub cloneChildren +{ + my ($self, $node, $deep) = @_; + return unless $deep; + + return unless defined $self->[_C]; + + local $XML::DOM::IgnoreReadOnly = 1; + + for my $kid (@{$node->[_C]}) + { + my $newNode = $kid->cloneNode ($deep); + push @{$self->[_C]}, $newNode; + $newNode->setParentNode ($self); + } +} + +# +# For internal use only! +# +sub removeChildHoodMemories +{ + my ($self) = @_; + + undef $self->[_Parent]; # was delete +} + +# +# Remove circular dependencies. The Node and its children should +# not be used afterwards. +# +sub dispose +{ + my $self = shift; + + $self->removeChildHoodMemories; + + if (defined $self->[_C]) + { + $self->[_C]->dispose; + undef $self->[_C]; # was delete + } + undef $self->[_Doc]; # was delete +} + +# +# For internal use only! +# +sub setParentNode +{ + my ($self, $parent) = @_; + + # REC 7473 + my $oldParent = $self->[_Parent]; + if (defined $oldParent) + { + # remove from current parent + my $index = $oldParent->getChildIndex ($self); + + # NOTE: we don't have to check if [_C] is defined, + # because were removing a child here! + splice (@{$oldParent->[_C]}, $index, 1, ()); + + $self->removeChildHoodMemories; + } + $self->[_Parent] = $parent; +} + +# +# This function can return 3 values: +# 1: always readOnly +# 0: never readOnly +# undef: depends on parent node +# +# Returns 1 for DocumentType, Notation, Entity, EntityReference, Attlist, +# ElementDecl, AttDef. +# The first 4 are readOnly according to the DOM Spec, the others are always +# children of DocumentType. (Naturally, children of a readOnly node have to be +# readOnly as well...) +# These nodes are always readOnly regardless of who their ancestors are. +# Other nodes, e.g. Comment, are readOnly only if their parent is readOnly, +# which basically means that one of its ancestors has to be one of the +# aforementioned node types. +# Document and DocumentFragment return 0 for obvious reasons. +# Attr, Element, CDATASection, Text return 0. The DOM spec says that they can +# be children of an Entity, but I don't think that that's possible +# with the current XML::Parser. +# Attr uses a {ReadOnly} property, which is only set if it's part of a AttDef. +# Always returns 0 if ignoreReadOnly is set. +# +sub isReadOnly +{ + # default implementation for Nodes that are always readOnly + ! $XML::DOM::IgnoreReadOnly; +} + +sub rejectChild +{ + 1; +} + +sub getNodeTypeName +{ + $NodeNames[$_[0]->getNodeType]; +} + +sub getChildIndex +{ + my ($self, $node) = @_; + my $i = 0; + + return -1 unless defined $self->[_C]; + + for my $kid (@{$self->[_C]}) + { + return $i if $kid == $node; + $i++; + } + -1; +} + +sub getChildAtIndex +{ + my $kids = $_[0]->[_C]; + defined ($kids) ? $kids->[$_[1]] : undef; +} + +sub isAncestor +{ + my ($self, $node) = @_; + + do + { + return 1 if $self == $node; + $node = $node->[_Parent]; + } + while (defined $node); + + 0; +} + +# +# Added for optimization. Overriden in XML::DOM::Text +# +sub isTextNode +{ + 0; +} + +# +# Added for optimization. Overriden in XML::DOM::DocumentFragment +# +sub isDocumentFragmentNode +{ + 0; +} + +# +# Added for optimization. Overriden in XML::DOM::Element +# +sub isElementNode +{ + 0; +} + +# +# Add a Text node with the specified value or append the text to the +# previous Node if it is a Text node. +# +sub addText +{ + # REC 9456 (if it was called) + my ($self, $str) = @_; + + my $node = ${$self->[_C]}[-1]; # $self->getLastChild + + if (defined ($node) && $node->isTextNode) + { + # REC 5475 (if it was called) + $node->appendData ($str); + } + else + { + $node = $self->[_Doc]->createTextNode ($str); + $self->appendChild ($node); + } + $node; +} + +# +# Add a CDATASection node with the specified value or append the text to the +# previous Node if it is a CDATASection node. +# +sub addCDATA +{ + my ($self, $str) = @_; + + my $node = ${$self->[_C]}[-1]; # $self->getLastChild + + if (defined ($node) && $node->getNodeType == CDATA_SECTION_NODE) + { + $node->appendData ($str); + } + else + { + $node = $self->[_Doc]->createCDATASection ($str); + $self->appendChild ($node); + } +} + +sub removeChildNodes +{ + my $self = shift; + + my $cref = $self->[_C]; + return unless defined $cref; + + my $kid; + while ($kid = pop @{$cref}) + { + undef $kid->[_Parent]; # was delete + } +} + +sub toString +{ + my $self = shift; + my $pr = $XML::DOM::PrintToString::Singleton; + $pr->reset; + $self->print ($pr); + $pr->toString; +} + +sub to_sax +{ + my $self = shift; + unshift @_, 'Handler' if (@_ == 1); + my %h = @_; + + my $doch = exists ($h{DocumentHandler}) ? $h{DocumentHandler} + : $h{Handler}; + my $dtdh = exists ($h{DTDHandler}) ? $h{DTDHandler} + : $h{Handler}; + my $enth = exists ($h{EntityResolver}) ? $h{EntityResolver} + : $h{Handler}; + + $self->_to_sax ($doch, $dtdh, $enth); +} + +sub printToFile +{ + my ($self, $fileName) = @_; + my $encoding = $self->getXMLDecl()->getEncoding(); + my $fh = new FileHandle ($fileName, ">:encoding($encoding)") || + croak "printToFile - can't open output file $fileName"; + + $self->print ($fh); + $fh->close; +} + +# +# Use print to print to a FileHandle object (see printToFile code) +# +sub printToFileHandle +{ + my ($self, $FH) = @_; + my $pr = new XML::DOM::PrintToFileHandle ($FH); + $self->print ($pr); +} + +# +# Used by AttDef::setDefault to convert unexpanded default attribute value +# +sub expandEntityRefs +{ + my ($self, $str) = @_; + my $doctype = $self->[_Doc]->getDoctype; + + use bytes; # XML::RegExp expressed in terms encoded UTF8 + $str =~ s/&($XML::RegExp::Name|(#([0-9]+)|#x([0-9a-fA-F]+)));/ + defined($2) ? XML::DOM::XmlUtf8Encode ($3 || hex ($4)) + : expandEntityRef ($1, $doctype)/ego; + $str; +} + +sub expandEntityRef +{ + my ($entity, $doctype) = @_; + + my $expanded = $XML::DOM::DefaultEntities{$entity}; + return $expanded if defined $expanded; + + $expanded = $doctype->getEntity ($entity); + return $expanded->getValue if (defined $expanded); + +#?? is this an error? + croak "Could not expand entity reference of [$entity]\n"; +# return "&$entity;"; # entity not found +} + +sub isHidden +{ + $_[0]->[_Hidden]; +} + +###################################################################### +package XML::DOM::Attr; +###################################################################### + +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Name Specified", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +sub new +{ + my ($class, $doc, $name, $value, $specified) = @_; + + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Attr name [$name]") + unless XML::DOM::isValidName ($name); + } + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_C] = new XML::DOM::NodeList; + $self->[_Name] = $name; + + if (defined $value) + { + $self->setValue ($value); + $self->[_Specified] = (defined $specified) ? $specified : 1; + } + else + { + $self->[_Specified] = 0; + } + $self; +} + +sub getNodeType +{ + ATTRIBUTE_NODE; +} + +sub isSpecified +{ + $_[0]->[_Specified]; +} + +sub getName +{ + $_[0]->[_Name]; +} + +sub getValue +{ + my $self = shift; + my $value = ""; + + for my $kid (@{$self->[_C]}) + { + $value .= $kid->getData if defined $kid->getData; + } + $value; +} + +sub setValue +{ + my ($self, $value) = @_; + + # REC 1147 + $self->removeChildNodes; + $self->appendChild ($self->[_Doc]->createTextNode ($value)); + $self->[_Specified] = 1; +} + +sub getNodeName +{ + $_[0]->getName; +} + +sub getNodeValue +{ + $_[0]->getValue; +} + +sub setNodeValue +{ + $_[0]->setValue ($_[1]); +} + +sub cloneNode +{ + my ($self) = @_; # parameter deep is ignored + + my $node = $self->[_Doc]->createAttribute ($self->getName); + $node->[_Specified] = $self->[_Specified]; + $node->[_ReadOnly] = 1 if $self->[_ReadOnly]; + + $node->cloneChildren ($self, 1); + $node; +} + +#------------------------------------------------------------ +# Extra method implementations +# + +sub isReadOnly +{ + # ReadOnly property is set if it's part of a AttDef + ! $XML::DOM::IgnoreReadOnly && defined ($_[0]->[_ReadOnly]); +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_Name]; + + $FILE->print ("$name=\""); + for my $kid (@{$self->[_C]}) + { + if ($kid->getNodeType == TEXT_NODE) + { + $FILE->print (XML::DOM::encodeAttrValue ($kid->getData)); + } + else # ENTITY_REFERENCE_NODE + { + $kid->print ($FILE); + } + } + $FILE->print ("\""); +} + +sub rejectChild +{ + my $t = $_[1]->getNodeType; + + $t != TEXT_NODE + && $t != ENTITY_REFERENCE_NODE; +} + +###################################################################### +package XML::DOM::ProcessingInstruction; +###################################################################### + +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Target Data", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +sub new +{ + my ($class, $doc, $target, $data, $hidden) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad ProcessingInstruction Target [$target]") + unless (XML::DOM::isValidName ($target) && $target !~ /^xml$/io); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Target] = $target; + $self->[_Data] = $data; + $self->[_Hidden] = $hidden; + $self; +} + +sub getNodeType +{ + PROCESSING_INSTRUCTION_NODE; +} + +sub getTarget +{ + $_[0]->[_Target]; +} + +sub getData +{ + $_[0]->[_Data]; +} + +sub setData +{ + my ($self, $data) = @_; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + $self->[_Data] = $data; +} + +sub getNodeName +{ + $_[0]->[_Target]; +} + +# +# Same as getData +# +sub getNodeValue +{ + $_[0]->[_Data]; +} + +sub setNodeValue +{ + $_[0]->setData ($_[1]); +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createProcessingInstruction ($self->getTarget, + $self->getData, + $self->isHidden); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + return 0 if $XML::DOM::IgnoreReadOnly; + + my $pa = $_[0]->[_Parent]; + defined ($pa) ? $pa->isReadOnly : 0; +} + +sub print +{ + my ($self, $FILE) = @_; + + $FILE->print ("print ($self->[_Target]); + $FILE->print (" "); + $FILE->print (XML::DOM::encodeProcessingInstruction ($self->[_Data])); + $FILE->print ("?>"); +} + +sub _to_sax { + my ($self, $doch) = @_; + $doch->processing_instruction({Target => $self->getTarget, Data => $self->getData}); +} + +###################################################################### +package XML::DOM::Notation; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Name Base SysId PubId", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +sub new +{ + my ($class, $doc, $name, $base, $sysId, $pubId, $hidden) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Notation Name [$name]") + unless XML::DOM::isValidName ($name); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Name] = $name; + $self->[_Base] = $base; + $self->[_SysId] = $sysId; + $self->[_PubId] = $pubId; + $self->[_Hidden] = $hidden; + $self; +} + +sub getNodeType +{ + NOTATION_NODE; +} + +sub getPubId +{ + $_[0]->[_PubId]; +} + +sub setPubId +{ + $_[0]->[_PubId] = $_[1]; +} + +sub getSysId +{ + $_[0]->[_SysId]; +} + +sub setSysId +{ + $_[0]->[_SysId] = $_[1]; +} + +sub getName +{ + $_[0]->[_Name]; +} + +sub setName +{ + $_[0]->[_Name] = $_[1]; +} + +sub getBase +{ + $_[0]->[_Base]; +} + +sub getNodeName +{ + $_[0]->[_Name]; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_Name]; + my $sysId = $self->[_SysId]; + my $pubId = $self->[_PubId]; + + $FILE->print ("print (" PUBLIC \"$pubId\""); + } + if (defined $sysId) + { + $FILE->print (" SYSTEM \"$sysId\""); + } + $FILE->print (">"); +} + +sub cloneNode +{ + my ($self) = @_; + $self->[_Doc]->createNotation ($self->[_Name], $self->[_Base], + $self->[_SysId], $self->[_PubId], + $self->[_Hidden]); +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->Notation ($self->getName, $self->getBase, + $self->getSysId, $self->getPubId); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $dtdh->notation_decl ( { Name => $self->getName, + Base => $self->getBase, + SystemId => $self->getSysId, + PublicId => $self->getPubId }); +} + +###################################################################### +package XML::DOM::Entity; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("NotationName Parameter Value Ndata SysId PubId", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +sub new +{ + my ($class, $doc, $notationName, $value, $sysId, $pubId, $ndata, $isParam, $hidden) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Entity Name [$notationName]") + unless XML::DOM::isValidName ($notationName); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_NotationName] = $notationName; + $self->[_Parameter] = $isParam; + $self->[_Value] = $value; + $self->[_Ndata] = $ndata; + $self->[_SysId] = $sysId; + $self->[_PubId] = $pubId; + $self->[_Hidden] = $hidden; + $self; +#?? maybe Value should be a Text node +} + +sub getNodeType +{ + ENTITY_NODE; +} + +sub getPubId +{ + $_[0]->[_PubId]; +} + +sub getSysId +{ + $_[0]->[_SysId]; +} + +# Dom Spec says: +# For unparsed entities, the name of the notation for the +# entity. For parsed entities, this is null. + +#?? do we have unparsed entities? +sub getNotationName +{ + $_[0]->[_NotationName]; +} + +sub getNodeName +{ + $_[0]->[_NotationName]; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createEntity ($self->[_NotationName], $self->[_Value], + $self->[_SysId], $self->[_PubId], + $self->[_Ndata], $self->[_Parameter], $self->[_Hidden]); +} + +sub rejectChild +{ + return 1; +#?? if value is split over subnodes, recode this section +# also add: C => new XML::DOM::NodeList, + + my $t = $_[1]; + + return $t == TEXT_NODE + || $t == ENTITY_REFERENCE_NODE + || $t == PROCESSING_INSTRUCTION_NODE + || $t == COMMENT_NODE + || $t == CDATA_SECTION_NODE + || $t == ELEMENT_NODE; +} + +sub getValue +{ + $_[0]->[_Value]; +} + +sub isParameterEntity +{ + $_[0]->[_Parameter]; +} + +sub getNdata +{ + $_[0]->[_Ndata]; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_NotationName]; + + my $par = $self->isParameterEntity ? "% " : ""; + + $FILE->print ("[_Value]; + my $sysId = $self->[_SysId]; + my $pubId = $self->[_PubId]; + my $ndata = $self->[_Ndata]; + + if (defined $value) + { +#?? Not sure what to do if it contains both single and double quote + $value = ($value =~ /\"/) ? "'$value'" : "\"$value\""; + $FILE->print (" $value"); + } + if (defined $pubId) + { + $FILE->print (" PUBLIC \"$pubId\""); + } + elsif (defined $sysId) + { + $FILE->print (" SYSTEM"); + } + + if (defined $sysId) + { + $FILE->print (" \"$sysId\""); + } + $FILE->print (" NDATA $ndata") if defined $ndata; + $FILE->print (">"); +} + +sub to_expat +{ + my ($self, $iter) = @_; + my $name = ($self->isParameterEntity ? '%' : "") . $self->getNotationName; + $iter->Entity ($name, + $self->getValue, $self->getSysId, $self->getPubId, + $self->getNdata); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + my $name = ($self->isParameterEntity ? '%' : "") . $self->getNotationName; + $dtdh->entity_decl ( { Name => $name, + Value => $self->getValue, + SystemId => $self->getSysId, + PublicId => $self->getPubId, + Notation => $self->getNdata } ); +} + +###################################################################### +package XML::DOM::EntityReference; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("EntityName Parameter NoExpand", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +sub new +{ + my ($class, $doc, $name, $parameter, $noExpand) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Entity Name [$name] in EntityReference") + unless XML::DOM::isValidName ($name); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_EntityName] = $name; + $self->[_Parameter] = ($parameter || 0); + $self->[_NoExpand] = ($noExpand || 0); + + $self; +} + +sub getNodeType +{ + ENTITY_REFERENCE_NODE; +} + +sub getNodeName +{ + $_[0]->[_EntityName]; +} + +#------------------------------------------------------------ +# Extra method implementations + +sub getEntityName +{ + $_[0]->[_EntityName]; +} + +sub isParameterEntity +{ + $_[0]->[_Parameter]; +} + +sub getData +{ + my $self = shift; + my $name = $self->[_EntityName]; + my $parameter = $self->[_Parameter]; + + my $data; + if ($self->[_NoExpand]) { + $data = "&$name;" if $name; + } else { + $data = $self->[_Doc]->expandEntity ($name, $parameter); + } + + unless (defined $data) + { +#?? this is probably an error, but perhaps requires check to NoExpand +# will fix it? + my $pc = $parameter ? "%" : "&"; + $data = "$pc$name;"; + } + $data; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_EntityName]; + +#?? or do we expand the entities? + + my $pc = $self->[_Parameter] ? "%" : "&"; + $FILE->print ("$pc$name;"); +} + +# Dom Spec says: +# [...] but if such an Entity exists, then +# the child list of the EntityReference node is the same as that of the +# Entity node. +# +# The resolution of the children of the EntityReference (the replacement +# value of the referenced Entity) may be lazily evaluated; actions by the +# user (such as calling the childNodes method on the EntityReference +# node) are assumed to trigger the evaluation. +sub getChildNodes +{ + my $self = shift; + my $entity = $self->[_Doc]->getEntity ($self->[_EntityName]); + defined ($entity) ? $entity->getChildNodes : new XML::DOM::NodeList; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createEntityReference ($self->[_EntityName], + $self->[_Parameter], + $self->[_NoExpand], + ); +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->EntityRef ($self->getEntityName, $self->isParameterEntity); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + my @par = $self->isParameterEntity ? (Parameter => 1) : (); +#?? not supported by PerlSAX: $self->isParameterEntity + + $doch->entity_reference ( { Name => $self->getEntityName, @par } ); +} + +# NOTE: an EntityReference can't really have children, so rejectChild +# is not reimplemented (i.e. it always returns 0.) + +###################################################################### +package XML::DOM::AttDef; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Name Type Fixed Default Required Implied Quote", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +#------------------------------------------------------------ +# Extra method implementations + +# AttDef is not part of DOM Spec +sub new +{ + my ($class, $doc, $name, $attrType, $default, $fixed, $hidden) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Attr name in AttDef [$name]") + unless XML::DOM::isValidName ($name); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Name] = $name; + $self->[_Type] = $attrType; + + if (defined $default) + { + if ($default eq "#REQUIRED") + { + $self->[_Required] = 1; + } + elsif ($default eq "#IMPLIED") + { + $self->[_Implied] = 1; + } + else + { + # strip off quotes - see Attlist handler in XML::Parser + # this regexp doesn't work with 5.8.0 unicode +# $default =~ m#^(["'])(.*)['"]$#; +# $self->[_Quote] = $1; # keep track of the quote character +# $self->[_Default] = $self->setDefault ($2); + + # workaround for 5.8.0 unicode + $default =~ s!^(["'])!!; + $self->[_Quote] = $1; + $default =~ s!(["'])$!!; + $self->[_Default] = $self->setDefault ($default); + +#?? should default value be decoded - what if it contains e.g. "&" + } + } + $self->[_Fixed] = $fixed if defined $fixed; + $self->[_Hidden] = $hidden if defined $hidden; + + $self; +} + +sub getNodeType +{ + ATT_DEF_NODE; +} + +sub getName +{ + $_[0]->[_Name]; +} + +# So it can be added to a NamedNodeMap +sub getNodeName +{ + $_[0]->[_Name]; +} + +sub getType +{ + $_[0]->[_Type]; +} + +sub setType +{ + $_[0]->[_Type] = $_[1]; +} + +sub getDefault +{ + $_[0]->[_Default]; +} + +sub setDefault +{ + my ($self, $value) = @_; + + # specified=0, it's the default ! + my $attr = $self->[_Doc]->createAttribute ($self->[_Name], undef, 0); + $attr->[_ReadOnly] = 1; + +#?? this should be split over Text and EntityReference nodes, just like other +# Attr nodes - just expand the text for now + $value = $self->expandEntityRefs ($value); + $attr->addText ($value); +#?? reimplement in NoExpand mode! + + $attr; +} + +sub isFixed +{ + $_[0]->[_Fixed] || 0; +} + +sub isRequired +{ + $_[0]->[_Required] || 0; +} + +sub isImplied +{ + $_[0]->[_Implied] || 0; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_Name]; + my $type = $self->[_Type]; + my $fixed = $self->[_Fixed]; + my $default = $self->[_Default]; + +# $FILE->print ("$name $type"); + # replaced line above with the two lines below + # seems to be a bug in perl 5.6.0 that causes + # test 3 of dom_jp_attr.t to fail? + $FILE->print ($name); + $FILE->print (" $type"); + + $FILE->print (" #FIXED") if defined $fixed; + + if ($self->[_Required]) + { + $FILE->print (" #REQUIRED"); + } + elsif ($self->[_Implied]) + { + $FILE->print (" #IMPLIED"); + } + elsif (defined ($default)) + { + my $quote = $self->[_Quote]; + $FILE->print (" $quote"); + for my $kid (@{$default->[_C]}) + { + $kid->print ($FILE); + } + $FILE->print ($quote); + } +} + +sub getDefaultString +{ + my $self = shift; + my $default; + + if ($self->[_Required]) + { + return "#REQUIRED"; + } + elsif ($self->[_Implied]) + { + return "#IMPLIED"; + } + elsif (defined ($default = $self->[_Default])) + { + my $quote = $self->[_Quote]; + $default = $default->toString; + return "$quote$default$quote"; + } + undef; +} + +sub cloneNode +{ + my $self = shift; + my $node = new XML::DOM::AttDef ($self->[_Doc], $self->[_Name], $self->[_Type], + undef, $self->[_Fixed]); + + $node->[_Required] = 1 if $self->[_Required]; + $node->[_Implied] = 1 if $self->[_Implied]; + $node->[_Fixed] = $self->[_Fixed] if defined $self->[_Fixed]; + $node->[_Hidden] = $self->[_Hidden] if defined $self->[_Hidden]; + + if (defined $self->[_Default]) + { + $node->[_Default] = $self->[_Default]->cloneNode(1); + } + $node->[_Quote] = $self->[_Quote]; + + $node; +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + $self->SUPER::setOwnerDocument ($doc); + + if (defined $self->[_Default]) + { + $self->[_Default]->setOwnerDocument ($doc); + } +} + +###################################################################### +package XML::DOM::AttlistDecl; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + import XML::DOM::AttDef qw{ :Fields }; + + XML::DOM::def_fields ("ElementName", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +#------------------------------------------------------------ +# Extra method implementations + +# AttlistDecl is not part of the DOM Spec +sub new +{ + my ($class, $doc, $name) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Element TagName [$name] in AttlistDecl") + unless XML::DOM::isValidName ($name); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_C] = new XML::DOM::NodeList; + $self->[_ReadOnly] = 1; + $self->[_ElementName] = $name; + + $self->[_A] = new XML::DOM::NamedNodeMap (Doc => $doc, + ReadOnly => 1, + Parent => $self); + + $self; +} + +sub getNodeType +{ + ATTLIST_DECL_NODE; +} + +sub getName +{ + $_[0]->[_ElementName]; +} + +sub getNodeName +{ + $_[0]->[_ElementName]; +} + +sub getAttDef +{ + my ($self, $attrName) = @_; + $self->[_A]->getNamedItem ($attrName); +} + +sub addAttDef +{ + my ($self, $attrName, $type, $default, $fixed, $hidden) = @_; + my $node = $self->getAttDef ($attrName); + + if (defined $node) + { + # data will be ignored if already defined + my $elemName = $self->getName; + XML::DOM::warning ("multiple definitions of attribute $attrName for element $elemName, only first one is recognized"); + } + else + { + $node = new XML::DOM::AttDef ($self->[_Doc], $attrName, $type, + $default, $fixed, $hidden); + $self->[_A]->setNamedItem ($node); + } + $node; +} + +sub getDefaultAttrValue +{ + my ($self, $attr) = @_; + my $attrNode = $self->getAttDef ($attr); + (defined $attrNode) ? $attrNode->getDefault : undef; +} + +sub cloneNode +{ + my ($self, $deep) = @_; + my $node = $self->[_Doc]->createAttlistDecl ($self->[_ElementName]); + + $node->[_A] = $self->[_A]->cloneNode ($deep); + $node; +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + $self->SUPER::setOwnerDocument ($doc); + + $self->[_A]->setOwnerDocument ($doc); +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->getName; + my @attlist = @{$self->[_A]->getValues}; + + my $hidden = 1; + for my $att (@attlist) + { + unless ($att->[_Hidden]) + { + $hidden = 0; + last; + } + } + + unless ($hidden) + { + $FILE->print ("print (" "); + $attlist[0]->print ($FILE); + } + else + { + for my $attr (@attlist) + { + next if $attr->[_Hidden]; + + $FILE->print ("\x0A "); + $attr->print ($FILE); + } + } + $FILE->print (">"); + } +} + +sub to_expat +{ + my ($self, $iter) = @_; + my $tag = $self->getName; + for my $a ($self->[_A]->getValues) + { + my $default = $a->isImplied ? '#IMPLIED' : + ($a->isRequired ? '#REQUIRED' : + ($a->[_Quote] . $a->getDefault->getValue . $a->[_Quote])); + + $iter->Attlist ($tag, $a->getName, $a->getType, $default, $a->isFixed); + } +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + my $tag = $self->getName; + for my $a ($self->[_A]->getValues) + { + my $default = $a->isImplied ? '#IMPLIED' : + ($a->isRequired ? '#REQUIRED' : + ($a->[_Quote] . $a->getDefault->getValue . $a->[_Quote])); + + $dtdh->attlist_decl ({ ElementName => $tag, + AttributeName => $a->getName, + Type => $a->[_Type], + Default => $default, + Fixed => $a->isFixed }); + } +} + +###################################################################### +package XML::DOM::ElementDecl; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Name Model", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + + +#------------------------------------------------------------ +# Extra method implementations + +# ElementDecl is not part of the DOM Spec +sub new +{ + my ($class, $doc, $name, $model, $hidden) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Element TagName [$name] in ElementDecl") + unless XML::DOM::isValidName ($name); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Name] = $name; + $self->[_ReadOnly] = 1; + $self->[_Model] = $model; + $self->[_Hidden] = $hidden; + $self; +} + +sub getNodeType +{ + ELEMENT_DECL_NODE; +} + +sub getName +{ + $_[0]->[_Name]; +} + +sub getNodeName +{ + $_[0]->[_Name]; +} + +sub getModel +{ + $_[0]->[_Model]; +} + +sub setModel +{ + my ($self, $model) = @_; + + $self->[_Model] = $model; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_Name]; + my $model = $self->[_Model]; + + $FILE->print ("") + unless $self->[_Hidden]; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createElementDecl ($self->[_Name], $self->[_Model], + $self->[_Hidden]); +} + +sub to_expat +{ +#?? add support for Hidden?? (allover, also in _to_sax!!) + + my ($self, $iter) = @_; + $iter->Element ($self->getName, $self->getModel); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $dtdh->element_decl ( { Name => $self->getName, + Model => $self->getModel } ); +} + +###################################################################### +package XML::DOM::Element; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("TagName", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use XML::DOM::NamedNodeMap; +use Carp; + +sub new +{ + my ($class, $doc, $tagName) = @_; + + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Element TagName [$tagName]") + unless XML::DOM::isValidName ($tagName); + } + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_C] = new XML::DOM::NodeList; + $self->[_TagName] = $tagName; + +# Now we're creating the NamedNodeMap only when needed (REC 2313 => 1147) +# $self->[_A] = new XML::DOM::NamedNodeMap (Doc => $doc, +# Parent => $self); + + $self; +} + +sub getNodeType +{ + ELEMENT_NODE; +} + +sub getTagName +{ + $_[0]->[_TagName]; +} + +sub getNodeName +{ + $_[0]->[_TagName]; +} + +sub getAttributeNode +{ + my ($self, $name) = @_; + return undef unless defined $self->[_A]; + + $self->getAttributes->{$name}; +} + +sub getAttribute +{ + my ($self, $name) = @_; + my $attr = $self->getAttributeNode ($name); + (defined $attr) ? $attr->getValue : ""; +} + +sub setAttribute +{ + my ($self, $name, $val) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Attr Name [$name]") + unless XML::DOM::isValidName ($name); + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my $node = $self->getAttributes->{$name}; + if (defined $node) + { + $node->setValue ($val); + } + else + { + $node = $self->[_Doc]->createAttribute ($name, $val); + $self->[_A]->setNamedItem ($node); + } +} + +sub setAttributeNode +{ + my ($self, $node) = @_; + my $attr = $self->getAttributes; + my $name = $node->getNodeName; + + # REC 1147 + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR, + "nodes belong to different documents") + if $self->[_Doc] != $node->[_Doc]; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my $attrParent = $node->[_UsedIn]; + croak new XML::DOM::DOMException (INUSE_ATTRIBUTE_ERR, + "Attr is already used by another Element") + if (defined ($attrParent) && $attrParent != $attr); + } + + my $other = $attr->{$name}; + $attr->removeNamedItem ($name) if defined $other; + + $attr->setNamedItem ($node); + + $other; +} + +sub removeAttributeNode +{ + my ($self, $node) = @_; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my $attr = $self->[_A]; + unless (defined $attr) + { + croak new XML::DOM::DOMException (NOT_FOUND_ERR); + return undef; + } + + my $name = $node->getNodeName; + my $attrNode = $attr->getNamedItem ($name); + +#?? should it croak if it's the default value? + croak new XML::DOM::DOMException (NOT_FOUND_ERR) + unless $node == $attrNode; + + # Not removing anything if it's the default value already + return undef unless $node->isSpecified; + + $attr->removeNamedItem ($name); + + # Substitute with default value if it's defined + my $default = $self->getDefaultAttrValue ($name); + if (defined $default) + { + local $XML::DOM::IgnoreReadOnly = 1; + + $default = $default->cloneNode (1); + $attr->setNamedItem ($default); + } + $node; +} + +sub removeAttribute +{ + my ($self, $name) = @_; + my $attr = $self->[_A]; + unless (defined $attr) + { + croak new XML::DOM::DOMException (NOT_FOUND_ERR); + return; + } + + my $node = $attr->getNamedItem ($name); + if (defined $node) + { +#?? could use dispose() to remove circular references for gc, but what if +#?? somebody is referencing it? + $self->removeAttributeNode ($node); + } +} + +sub cloneNode +{ + my ($self, $deep) = @_; + my $node = $self->[_Doc]->createElement ($self->getTagName); + + # Always clone the Attr nodes, even if $deep == 0 + if (defined $self->[_A]) + { + $node->[_A] = $self->[_A]->cloneNode (1); # deep=1 + $node->[_A]->setParentNode ($node); + } + + $node->cloneChildren ($self, $deep); + $node; +} + +sub getAttributes +{ + $_[0]->[_A] ||= XML::DOM::NamedNodeMap->new (Doc => $_[0]->[_Doc], + Parent => $_[0]); +} + +#------------------------------------------------------------ +# Extra method implementations + +# Added for convenience +sub setTagName +{ + my ($self, $tagName) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Element TagName [$tagName]") + unless XML::DOM::isValidName ($tagName); + + $self->[_TagName] = $tagName; +} + +sub isReadOnly +{ + 0; +} + +# Added for optimization. +sub isElementNode +{ + 1; +} + +sub rejectChild +{ + my $t = $_[1]->getNodeType; + + $t != TEXT_NODE + && $t != ENTITY_REFERENCE_NODE + && $t != PROCESSING_INSTRUCTION_NODE + && $t != COMMENT_NODE + && $t != CDATA_SECTION_NODE + && $t != ELEMENT_NODE; +} + +sub getDefaultAttrValue +{ + my ($self, $attr) = @_; + $self->[_Doc]->getDefaultAttrValue ($self->[_TagName], $attr); +} + +sub dispose +{ + my $self = shift; + + $self->[_A]->dispose if defined $self->[_A]; + $self->SUPER::dispose; +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + $self->SUPER::setOwnerDocument ($doc); + + $self->[_A]->setOwnerDocument ($doc) if defined $self->[_A]; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_TagName]; + + $FILE->print ("<$name"); + + if (defined $self->[_A]) + { + for my $att (@{$self->[_A]->getValues}) + { + # skip un-specified (default) Attr nodes + if ($att->isSpecified) + { + $FILE->print (" "); + $att->print ($FILE); + } + } + } + + my @kids = @{$self->[_C]}; + if (@kids > 0) + { + $FILE->print (">"); + for my $kid (@kids) + { + $kid->print ($FILE); + } + $FILE->print (""); + } + else + { + my $style = &$XML::DOM::TagStyle ($name, $self); + if ($style == 0) + { + $FILE->print ("/>"); + } + elsif ($style == 1) + { + $FILE->print (">"); + } + else + { + $FILE->print (" />"); + } + } +} + +sub check +{ + my ($self, $checker) = @_; + die "Usage: \$xml_dom_elem->check (\$checker)" unless $checker; + + $checker->InitDomElem; + $self->to_expat ($checker); + $checker->FinalDomElem; +} + +sub to_expat +{ + my ($self, $iter) = @_; + + my $tag = $self->getTagName; + $iter->Start ($tag); + + if (defined $self->[_A]) + { + for my $attr ($self->[_A]->getValues) + { + $iter->Attr ($tag, $attr->getName, $attr->getValue, $attr->isSpecified); + } + } + + $iter->EndAttr; + + for my $kid ($self->getChildNodes) + { + $kid->to_expat ($iter); + } + + $iter->End; +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + + my $tag = $self->getTagName; + + my @attr = (); + my $attrOrder; + my $attrDefaulted; + + if (defined $self->[_A]) + { + my @spec = (); # names of specified attributes + my @unspec = (); # names of defaulted attributes + + for my $attr ($self->[_A]->getValues) + { + my $attrName = $attr->getName; + push @attr, $attrName, $attr->getValue; + if ($attr->isSpecified) + { + push @spec, $attrName; + } + else + { + push @unspec, $attrName; + } + } + $attrOrder = [ @spec, @unspec ]; + $attrDefaulted = @spec; + } + $doch->start_element (defined $attrOrder ? + { Name => $tag, + Attributes => { @attr }, + AttributeOrder => $attrOrder, + Defaulted => $attrDefaulted + } : + { Name => $tag, + Attributes => { @attr } + } + ); + + for my $kid ($self->getChildNodes) + { + $kid->_to_sax ($doch, $dtdh, $enth); + } + + $doch->end_element ( { Name => $tag } ); +} + +###################################################################### +package XML::DOM::CharacterData; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Data", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + + +# +# CharacterData nodes should never be created directly, only subclassed! +# +sub new +{ + my ($class, $doc, $data) = @_; + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Data] = $data; + $self; +} + +sub appendData +{ + my ($self, $data) = @_; + + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + } + $self->[_Data] .= $data; +} + +sub deleteData +{ + my ($self, $offset, $count) = @_; + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "bad offset [$offset]") + if ($offset < 0 || $offset >= length ($self->[_Data])); +#?? DOM Spec says >, but >= makes more sense! + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "negative count [$count]") + if $count < 0; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + substr ($self->[_Data], $offset, $count) = ""; +} + +sub getData +{ + $_[0]->[_Data]; +} + +sub getLength +{ + length $_[0]->[_Data]; +} + +sub insertData +{ + my ($self, $offset, $data) = @_; + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "bad offset [$offset]") + if ($offset < 0 || $offset >= length ($self->[_Data])); +#?? DOM Spec says >, but >= makes more sense! + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + substr ($self->[_Data], $offset, 0) = $data; +} + +sub replaceData +{ + my ($self, $offset, $count, $data) = @_; + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "bad offset [$offset]") + if ($offset < 0 || $offset >= length ($self->[_Data])); +#?? DOM Spec says >, but >= makes more sense! + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "negative count [$count]") + if $count < 0; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + substr ($self->[_Data], $offset, $count) = $data; +} + +sub setData +{ + my ($self, $data) = @_; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + $self->[_Data] = $data; +} + +sub substringData +{ + my ($self, $offset, $count) = @_; + my $data = $self->[_Data]; + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "bad offset [$offset]") + if ($offset < 0 || $offset >= length ($data)); +#?? DOM Spec says >, but >= makes more sense! + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "negative count [$count]") + if $count < 0; + + substr ($data, $offset, $count); +} + +sub getNodeValue +{ + $_[0]->getData; +} + +sub setNodeValue +{ + $_[0]->setData ($_[1]); +} + +###################################################################### +package XML::DOM::CDATASection; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::CharacterData qw( :DEFAULT :Fields ); + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("", "XML::DOM::CharacterData"); +} + +use XML::DOM::DOMException; + +sub getNodeName +{ + "#cdata-section"; +} + +sub getNodeType +{ + CDATA_SECTION_NODE; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createCDATASection ($self->getData); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + 0; +} + +sub print +{ + my ($self, $FILE) = @_; + $FILE->print ("print (XML::DOM::encodeCDATA ($self->getData)); + $FILE->print ("]]>"); +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->CData ($self->getData); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $doch->start_cdata; + $doch->characters ( { Data => $self->getData } ); + $doch->end_cdata; +} + +###################################################################### +package XML::DOM::Comment; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::CharacterData qw( :DEFAULT :Fields ); + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("", "XML::DOM::CharacterData"); +} + +use XML::DOM::DOMException; +use Carp; + +#?? setData - could check comment for double minus + +sub getNodeType +{ + COMMENT_NODE; +} + +sub getNodeName +{ + "#comment"; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createComment ($self->getData); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + return 0 if $XML::DOM::IgnoreReadOnly; + + my $pa = $_[0]->[_Parent]; + defined ($pa) ? $pa->isReadOnly : 0; +} + +sub print +{ + my ($self, $FILE) = @_; + my $comment = XML::DOM::encodeComment ($self->[_Data]); + + $FILE->print (""); +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->Comment ($self->getData); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $doch->comment ( { Data => $self->getData }); +} + +###################################################################### +package XML::DOM::Text; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::CharacterData qw( :DEFAULT :Fields ); + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("", "XML::DOM::CharacterData"); +} + +use XML::DOM::DOMException; +use Carp; + +sub getNodeType +{ + TEXT_NODE; +} + +sub getNodeName +{ + "#text"; +} + +sub splitText +{ + my ($self, $offset) = @_; + + my $data = $self->getData; + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "bad offset [$offset]") + if ($offset < 0 || $offset >= length ($data)); +#?? DOM Spec says >, but >= makes more sense! + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my $rest = substr ($data, $offset); + + $self->setData (substr ($data, 0, $offset)); + my $node = $self->[_Doc]->createTextNode ($rest); + + # insert new node after this node + $self->[_Parent]->insertBefore ($node, $self->getNextSibling); + + $node; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createTextNode ($self->getData); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + 0; +} + +sub print +{ + my ($self, $FILE) = @_; + $FILE->print (XML::DOM::encodeText ($self->getData, '<&>"')); +} + +sub isTextNode +{ + 1; +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->Char ($self->getData); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $doch->characters ( { Data => $self->getData } ); +} + +###################################################################### +package XML::DOM::XMLDecl; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Version Encoding Standalone", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; + + +#------------------------------------------------------------ +# Extra method implementations + +# XMLDecl is not part of the DOM Spec +sub new +{ + my ($class, $doc, $version, $encoding, $standalone) = @_; + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Version] = $version if defined $version; + $self->[_Encoding] = $encoding if defined $encoding; + $self->[_Standalone] = $standalone if defined $standalone; + + $self; +} + +sub setVersion +{ + if (defined $_[1]) + { + $_[0]->[_Version] = $_[1]; + } + else + { + undef $_[0]->[_Version]; # was delete + } +} + +sub getVersion +{ + $_[0]->[_Version]; +} + +sub setEncoding +{ + if (defined $_[1]) + { + $_[0]->[_Encoding] = $_[1]; + } + else + { + undef $_[0]->[_Encoding]; # was delete + } +} + +sub getEncoding +{ + $_[0]->[_Encoding]; +} + +sub setStandalone +{ + if (defined $_[1]) + { + $_[0]->[_Standalone] = $_[1]; + } + else + { + undef $_[0]->[_Standalone]; # was delete + } +} + +sub getStandalone +{ + $_[0]->[_Standalone]; +} + +sub getNodeType +{ + XML_DECL_NODE; +} + +sub cloneNode +{ + my $self = shift; + + new XML::DOM::XMLDecl ($self->[_Doc], $self->[_Version], + $self->[_Encoding], $self->[_Standalone]); +} + +sub print +{ + my ($self, $FILE) = @_; + + my $version = $self->[_Version]; + my $encoding = $self->[_Encoding]; + my $standalone = $self->[_Standalone]; + $standalone = ($standalone ? "yes" : "no") if defined $standalone; + + $FILE->print ("print (" version=\"$version\"") if defined $version; + $FILE->print (" encoding=\"$encoding\"") if defined $encoding; + $FILE->print (" standalone=\"$standalone\"") if defined $standalone; + $FILE->print ("?>"); +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->XMLDecl ($self->getVersion, $self->getEncoding, $self->getStandalone); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $dtdh->xml_decl ( { Version => $self->getVersion, + Encoding => $self->getEncoding, + Standalone => $self->getStandalone } ); +} + +###################################################################### +package XML::DOM::DocumentFragment; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; + +sub new +{ + my ($class, $doc) = @_; + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_C] = new XML::DOM::NodeList; + $self; +} + +sub getNodeType +{ + DOCUMENT_FRAGMENT_NODE; +} + +sub getNodeName +{ + "#document-fragment"; +} + +sub cloneNode +{ + my ($self, $deep) = @_; + my $node = $self->[_Doc]->createDocumentFragment; + + $node->cloneChildren ($self, $deep); + $node; +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + 0; +} + +sub print +{ + my ($self, $FILE) = @_; + + for my $node (@{$self->[_C]}) + { + $node->print ($FILE); + } +} + +sub rejectChild +{ + my $t = $_[1]->getNodeType; + + $t != TEXT_NODE + && $t != ENTITY_REFERENCE_NODE + && $t != PROCESSING_INSTRUCTION_NODE + && $t != COMMENT_NODE + && $t != CDATA_SECTION_NODE + && $t != ELEMENT_NODE; +} + +sub isDocumentFragmentNode +{ + 1; +} + +###################################################################### +package XML::DOM::DocumentType; # forward declaration +###################################################################### + +###################################################################### +package XML::DOM::Document; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Doctype XmlDecl", "XML::DOM::Node"); +} + +use Carp; +use XML::DOM::NodeList; +use XML::DOM::DOMException; + +sub new +{ + my ($class) = @_; + my $self = bless [], $class; + + # keep Doc pointer, even though getOwnerDocument returns undef + $self->[_Doc] = $self; + $self->[_C] = new XML::DOM::NodeList; + $self; +} + +sub getNodeType +{ + DOCUMENT_NODE; +} + +sub getNodeName +{ + "#document"; +} + +#?? not sure about keeping a fixed order of these nodes.... +sub getDoctype +{ + $_[0]->[_Doctype]; +} + +sub getDocumentElement +{ + my ($self) = @_; + for my $kid (@{$self->[_C]}) + { + return $kid if $kid->isElementNode; + } + undef; +} + +sub getOwnerDocument +{ + undef; +} + +sub getImplementation +{ + $XML::DOM::DOMImplementation::Singleton; +} + +# +# Added extra parameters ($val, $specified) that are passed straight to the +# Attr constructor +# +sub createAttribute +{ + new XML::DOM::Attr (@_); +} + +sub createCDATASection +{ + new XML::DOM::CDATASection (@_); +} + +sub createComment +{ + new XML::DOM::Comment (@_); + +} + +sub createElement +{ + new XML::DOM::Element (@_); +} + +sub createTextNode +{ + new XML::DOM::Text (@_); +} + +sub createProcessingInstruction +{ + new XML::DOM::ProcessingInstruction (@_); +} + +sub createEntityReference +{ + new XML::DOM::EntityReference (@_); +} + +sub createDocumentFragment +{ + new XML::DOM::DocumentFragment (@_); +} + +sub createDocumentType +{ + new XML::DOM::DocumentType (@_); +} + +sub cloneNode +{ + my ($self, $deep) = @_; + my $node = new XML::DOM::Document; + + $node->cloneChildren ($self, $deep); + + my $xmlDecl = $self->[_XmlDecl]; + $node->[_XmlDecl] = $xmlDecl->cloneNode ($deep) if defined $xmlDecl; + + $node; +} + +sub appendChild +{ + my ($self, $node) = @_; + + # Extra check: make sure we don't end up with more than one Element. + # Don't worry about multiple DocType nodes, because DocumentFragment + # can't contain DocType nodes. + + my @nodes = ($node); + @nodes = @{$node->[_C]} + if $node->getNodeType == DOCUMENT_FRAGMENT_NODE; + + my $elem = 0; + for my $n (@nodes) + { + $elem++ if $n->isElementNode; + } + + if ($elem > 0 && defined ($self->getDocumentElement)) + { + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "document can have only one Element"); + } + $self->SUPER::appendChild ($node); +} + +sub insertBefore +{ + my ($self, $node, $refNode) = @_; + + # Extra check: make sure sure we don't end up with more than 1 Elements. + # Don't worry about multiple DocType nodes, because DocumentFragment + # can't contain DocType nodes. + + my @nodes = ($node); + @nodes = @{$node->[_C]} + if $node->getNodeType == DOCUMENT_FRAGMENT_NODE; + + my $elem = 0; + for my $n (@nodes) + { + $elem++ if $n->isElementNode; + } + + if ($elem > 0 && defined ($self->getDocumentElement)) + { + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "document can have only one Element"); + } + $self->SUPER::insertBefore ($node, $refNode); +} + +sub replaceChild +{ + my ($self, $node, $refNode) = @_; + + # Extra check: make sure sure we don't end up with more than 1 Elements. + # Don't worry about multiple DocType nodes, because DocumentFragment + # can't contain DocType nodes. + + my @nodes = ($node); + @nodes = @{$node->[_C]} + if $node->getNodeType == DOCUMENT_FRAGMENT_NODE; + + my $elem = 0; + $elem-- if $refNode->isElementNode; + + for my $n (@nodes) + { + $elem++ if $n->isElementNode; + } + + if ($elem > 0 && defined ($self->getDocumentElement)) + { + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "document can have only one Element"); + } + $self->SUPER::replaceChild ($node, $refNode); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + 0; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $xmlDecl = $self->getXMLDecl; + if (defined $xmlDecl) + { + $xmlDecl->print ($FILE); + $FILE->print ("\x0A"); + } + + for my $node (@{$self->[_C]}) + { + $node->print ($FILE); + $FILE->print ("\x0A"); + } +} + +sub setDoctype +{ + my ($self, $doctype) = @_; + my $oldDoctype = $self->[_Doctype]; + if (defined $oldDoctype) + { + $self->replaceChild ($doctype, $oldDoctype); + } + else + { +#?? before root element, but after XmlDecl ! + $self->appendChild ($doctype); + } + $_[0]->[_Doctype] = $_[1]; +} + +sub removeDoctype +{ + my $self = shift; + my $doctype = $self->removeChild ($self->[_Doctype]); + + undef $self->[_Doctype]; # was delete + $doctype; +} + +sub rejectChild +{ + my $t = $_[1]->getNodeType; + $t != ELEMENT_NODE + && $t != PROCESSING_INSTRUCTION_NODE + && $t != COMMENT_NODE + && $t != DOCUMENT_TYPE_NODE; +} + +sub expandEntity +{ + my ($self, $ent, $param) = @_; + my $doctype = $self->getDoctype; + + (defined $doctype) ? $doctype->expandEntity ($ent, $param) : undef; +} + +sub getDefaultAttrValue +{ + my ($self, $elem, $attr) = @_; + + my $doctype = $self->getDoctype; + + (defined $doctype) ? $doctype->getDefaultAttrValue ($elem, $attr) : undef; +} + +sub getEntity +{ + my ($self, $entity) = @_; + + my $doctype = $self->getDoctype; + + (defined $doctype) ? $doctype->getEntity ($entity) : undef; +} + +sub dispose +{ + my $self = shift; + + $self->[_XmlDecl]->dispose if defined $self->[_XmlDecl]; + undef $self->[_XmlDecl]; # was delete + undef $self->[_Doctype]; # was delete + $self->SUPER::dispose; +} + +sub setOwnerDocument +{ + # Do nothing, you can't change the owner document! +#?? could throw exception... +} + +sub getXMLDecl +{ + $_[0]->[_XmlDecl]; +} + +sub setXMLDecl +{ + $_[0]->[_XmlDecl] = $_[1]; +} + +sub createXMLDecl +{ + new XML::DOM::XMLDecl (@_); +} + +sub createNotation +{ + new XML::DOM::Notation (@_); +} + +sub createElementDecl +{ + new XML::DOM::ElementDecl (@_); +} + +sub createAttlistDecl +{ + new XML::DOM::AttlistDecl (@_); +} + +sub createEntity +{ + new XML::DOM::Entity (@_); +} + +sub createChecker +{ + my $self = shift; + my $checker = XML::Checker->new; + + $checker->Init; + my $doctype = $self->getDoctype; + $doctype->to_expat ($checker) if $doctype; + $checker->Final; + + $checker; +} + +sub check +{ + my ($self, $checker) = @_; + $checker ||= XML::Checker->new; + + $self->to_expat ($checker); +} + +sub to_expat +{ + my ($self, $iter) = @_; + + $iter->Init; + + for my $kid ($self->getChildNodes) + { + $kid->to_expat ($iter); + } + $iter->Final; +} + +sub check_sax +{ + my ($self, $checker) = @_; + $checker ||= XML::Checker->new; + + $self->to_sax (Handler => $checker); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + + $doch->start_document; + + for my $kid ($self->getChildNodes) + { + $kid->_to_sax ($doch, $dtdh, $enth); + } + $doch->end_document; +} + +###################################################################### +package XML::DOM::DocumentType; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + import XML::DOM::Document qw( :Fields ); + XML::DOM::def_fields ("Entities Notations Name SysId PubId Internal", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use XML::DOM::NamedNodeMap; + +sub new +{ + my $class = shift; + my $doc = shift; + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_ReadOnly] = 1; + $self->[_C] = new XML::DOM::NodeList; + + $self->[_Entities] = new XML::DOM::NamedNodeMap (Doc => $doc, + Parent => $self, + ReadOnly => 1); + $self->[_Notations] = new XML::DOM::NamedNodeMap (Doc => $doc, + Parent => $self, + ReadOnly => 1); + $self->setParams (@_); + $self; +} + +sub getNodeType +{ + DOCUMENT_TYPE_NODE; +} + +sub getNodeName +{ + $_[0]->[_Name]; +} + +sub getName +{ + $_[0]->[_Name]; +} + +sub getEntities +{ + $_[0]->[_Entities]; +} + +sub getNotations +{ + $_[0]->[_Notations]; +} + +sub setParentNode +{ + my ($self, $parent) = @_; + $self->SUPER::setParentNode ($parent); + + $parent->[_Doctype] = $self + if $parent->getNodeType == DOCUMENT_NODE; +} + +sub cloneNode +{ + my ($self, $deep) = @_; + + my $node = new XML::DOM::DocumentType ($self->[_Doc], $self->[_Name], + $self->[_SysId], $self->[_PubId], + $self->[_Internal]); + +#?? does it make sense to make a shallow copy? + + # clone the NamedNodeMaps + $node->[_Entities] = $self->[_Entities]->cloneNode ($deep); + + $node->[_Notations] = $self->[_Notations]->cloneNode ($deep); + + $node->cloneChildren ($self, $deep); + + $node; +} + +#------------------------------------------------------------ +# Extra method implementations + +sub getSysId +{ + $_[0]->[_SysId]; +} + +sub getPubId +{ + $_[0]->[_PubId]; +} + +sub getInternal +{ + $_[0]->[_Internal]; +} + +sub setSysId +{ + $_[0]->[_SysId] = $_[1]; +} + +sub setPubId +{ + $_[0]->[_PubId] = $_[1]; +} + +sub setInternal +{ + $_[0]->[_Internal] = $_[1]; +} + +sub setName +{ + $_[0]->[_Name] = $_[1]; +} + +sub removeChildHoodMemories +{ + my ($self, $dontWipeReadOnly) = @_; + + my $parent = $self->[_Parent]; + if (defined $parent && $parent->getNodeType == DOCUMENT_NODE) + { + undef $parent->[_Doctype]; # was delete + } + $self->SUPER::removeChildHoodMemories; +} + +sub dispose +{ + my $self = shift; + + $self->[_Entities]->dispose; + $self->[_Notations]->dispose; + $self->SUPER::dispose; +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + $self->SUPER::setOwnerDocument ($doc); + + $self->[_Entities]->setOwnerDocument ($doc); + $self->[_Notations]->setOwnerDocument ($doc); +} + +sub expandEntity +{ + my ($self, $ent, $param) = @_; + + my $kid = $self->[_Entities]->getNamedItem ($ent); + return $kid->getValue + if (defined ($kid) && $param == $kid->isParameterEntity); + + undef; # entity not found +} + +sub getAttlistDecl +{ + my ($self, $elemName) = @_; + for my $kid (@{$_[0]->[_C]}) + { + return $kid if ($kid->getNodeType == ATTLIST_DECL_NODE && + $kid->getName eq $elemName); + } + undef; # not found +} + +sub getElementDecl +{ + my ($self, $elemName) = @_; + for my $kid (@{$_[0]->[_C]}) + { + return $kid if ($kid->getNodeType == ELEMENT_DECL_NODE && + $kid->getName eq $elemName); + } + undef; # not found +} + +sub addElementDecl +{ + my ($self, $name, $model, $hidden) = @_; + my $node = $self->getElementDecl ($name); + +#?? could warn + unless (defined $node) + { + $node = $self->[_Doc]->createElementDecl ($name, $model, $hidden); + $self->appendChild ($node); + } + $node; +} + +sub addAttlistDecl +{ + my ($self, $name) = @_; + my $node = $self->getAttlistDecl ($name); + + unless (defined $node) + { + $node = $self->[_Doc]->createAttlistDecl ($name); + $self->appendChild ($node); + } + $node; +} + +sub addNotation +{ + my $self = shift; + my $node = $self->[_Doc]->createNotation (@_); + $self->[_Notations]->setNamedItem ($node); + $node; +} + +sub addEntity +{ + my $self = shift; + my $node = $self->[_Doc]->createEntity (@_); + + $self->[_Entities]->setNamedItem ($node); + $node; +} + +# All AttDefs for a certain Element are merged into a single ATTLIST +sub addAttDef +{ + my $self = shift; + my $elemName = shift; + + # create the AttlistDecl if it doesn't exist yet + my $attListDecl = $self->addAttlistDecl ($elemName); + $attListDecl->addAttDef (@_); +} + +sub getDefaultAttrValue +{ + my ($self, $elem, $attr) = @_; + my $elemNode = $self->getAttlistDecl ($elem); + (defined $elemNode) ? $elemNode->getDefaultAttrValue ($attr) : undef; +} + +sub getEntity +{ + my ($self, $entity) = @_; + $self->[_Entities]->getNamedItem ($entity); +} + +sub setParams +{ + my ($self, $name, $sysid, $pubid, $internal) = @_; + + $self->[_Name] = $name; + +#?? not sure if we need to hold on to these... + $self->[_SysId] = $sysid if defined $sysid; + $self->[_PubId] = $pubid if defined $pubid; + $self->[_Internal] = $internal if defined $internal; + + $self; +} + +sub rejectChild +{ + # DOM Spec says: DocumentType -- no children + not $XML::DOM::IgnoreReadOnly; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_Name]; + + my $sysId = $self->[_SysId]; + my $pubId = $self->[_PubId]; + + $FILE->print ("print (" PUBLIC \"$pubId\" \"$sysId\""); + } + elsif (defined $sysId) + { + $FILE->print (" SYSTEM \"$sysId\""); + } + + my @entities = @{$self->[_Entities]->getValues}; + my @notations = @{$self->[_Notations]->getValues}; + my @kids = @{$self->[_C]}; + + if (@entities || @notations || @kids) + { + $FILE->print (" [\x0A"); + + for my $kid (@entities) + { + next if $kid->[_Hidden]; + + $FILE->print (" "); + $kid->print ($FILE); + $FILE->print ("\x0A"); + } + + for my $kid (@notations) + { + next if $kid->[_Hidden]; + + $FILE->print (" "); + $kid->print ($FILE); + $FILE->print ("\x0A"); + } + + for my $kid (@kids) + { + next if $kid->[_Hidden]; + + $FILE->print (" "); + $kid->print ($FILE); + $FILE->print ("\x0A"); + } + $FILE->print ("]"); + } + $FILE->print (">"); +} + +sub to_expat +{ + my ($self, $iter) = @_; + + $iter->Doctype ($self->getName, $self->getSysId, $self->getPubId, $self->getInternal); + + for my $ent ($self->getEntities->getValues) + { + next if $ent->[_Hidden]; + $ent->to_expat ($iter); + } + + for my $nota ($self->getNotations->getValues) + { + next if $nota->[_Hidden]; + $nota->to_expat ($iter); + } + + for my $kid ($self->getChildNodes) + { + next if $kid->[_Hidden]; + $kid->to_expat ($iter); + } +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + + $dtdh->doctype_decl ( { Name => $self->getName, + SystemId => $self->getSysId, + PublicId => $self->getPubId, + Internal => $self->getInternal }); + + for my $ent ($self->getEntities->getValues) + { + next if $ent->[_Hidden]; + $ent->_to_sax ($doch, $dtdh, $enth); + } + + for my $nota ($self->getNotations->getValues) + { + next if $nota->[_Hidden]; + $nota->_to_sax ($doch, $dtdh, $enth); + } + + for my $kid ($self->getChildNodes) + { + next if $kid->[_Hidden]; + $kid->_to_sax ($doch, $dtdh, $enth); + } +} + +###################################################################### +package XML::DOM::Parser; +###################################################################### +use vars qw ( @ISA ); +@ISA = qw( XML::Parser ); + +sub new +{ + my ($class, %args) = @_; + + $args{Style} = 'XML::Parser::Dom'; + $class->SUPER::new (%args); +} + +# This method needed to be overriden so we can restore some global +# variables when an exception is thrown +sub parse +{ + my $self = shift; + + local $XML::Parser::Dom::_DP_doc; + local $XML::Parser::Dom::_DP_elem; + local $XML::Parser::Dom::_DP_doctype; + local $XML::Parser::Dom::_DP_in_prolog; + local $XML::Parser::Dom::_DP_end_doc; + local $XML::Parser::Dom::_DP_saw_doctype; + local $XML::Parser::Dom::_DP_in_CDATA; + local $XML::Parser::Dom::_DP_keep_CDATA; + local $XML::Parser::Dom::_DP_last_text; + + + # Temporarily disable checks that Expat already does (for performance) + local $XML::DOM::SafeMode = 0; + # Temporarily disable ReadOnly checks + local $XML::DOM::IgnoreReadOnly = 1; + + my $ret; + eval { + $ret = $self->SUPER::parse (@_); + }; + my $err = $@; + + if ($err) + { + my $doc = $XML::Parser::Dom::_DP_doc; + if ($doc) + { + $doc->dispose; + } + die $err; + } + + $ret; +} + +my $LWP_USER_AGENT; +sub set_LWP_UserAgent +{ + $LWP_USER_AGENT = shift; +} + +sub parsefile +{ + my $self = shift; + my $url = shift; + + # Any other URL schemes? + if ($url =~ /^(https?|ftp|wais|gopher|file):/) + { + # Read the file from the web with LWP. + # + # Note that we read in the entire file, which may not be ideal + # for large files. LWP::UserAgent also provides a callback style + # request, which we could convert to a stream with a fork()... + + my $result; + eval + { + use LWP::UserAgent; + + my $ua = $self->{LWP_UserAgent}; + unless (defined $ua) + { + unless (defined $LWP_USER_AGENT) + { + $LWP_USER_AGENT = LWP::UserAgent->new; + + # Load proxy settings from environment variables, i.e.: + # http_proxy, ftp_proxy, no_proxy etc. (see LWP::UserAgent(3)) + # You need these to go thru firewalls. + $LWP_USER_AGENT->env_proxy; + } + $ua = $LWP_USER_AGENT; + } + my $req = new HTTP::Request 'GET', $url; + my $response = $ua->request ($req); + + # Parse the result of the HTTP request + $result = $self->parse ($response->content, @_); + }; + if ($@) + { + die "Couldn't parsefile [$url] with LWP: $@"; + } + return $result; + } + else + { + return $self->SUPER::parsefile ($url, @_); + } +} + +###################################################################### +package XML::Parser::Dom; +###################################################################### + +BEGIN +{ + import XML::DOM::Node qw( :Fields ); + import XML::DOM::CharacterData qw( :Fields ); +} + +use vars qw( $_DP_doc + $_DP_elem + $_DP_doctype + $_DP_in_prolog + $_DP_end_doc + $_DP_saw_doctype + $_DP_in_CDATA + $_DP_keep_CDATA + $_DP_last_text + $_DP_level + $_DP_expand_pent + ); + +# This adds a new Style to the XML::Parser class. +# From now on you can say: $parser = new XML::Parser ('Style' => 'Dom' ); +# but that is *NOT* how a regular user should use it! +$XML::Parser::Built_In_Styles{Dom} = 1; + +sub Init +{ + $_DP_elem = $_DP_doc = new XML::DOM::Document(); + $_DP_doctype = new XML::DOM::DocumentType ($_DP_doc); + $_DP_doc->setDoctype ($_DP_doctype); + $_DP_keep_CDATA = $_[0]->{KeepCDATA}; + + # Prepare for document prolog + $_DP_in_prolog = 1; + + # We haven't passed the root element yet + $_DP_end_doc = 0; + + # Expand parameter entities in the DTD by default + + $_DP_expand_pent = defined $_[0]->{ExpandParamEnt} ? + $_[0]->{ExpandParamEnt} : 1; + if ($_DP_expand_pent) + { + $_[0]->{DOM_Entity} = {}; + } + + $_DP_level = 0; + + undef $_DP_last_text; +} + +sub Final +{ + unless ($_DP_saw_doctype) + { + my $doctype = $_DP_doc->removeDoctype; + $doctype->dispose; + } + $_DP_doc; +} + +sub Char +{ + my $str = $_[1]; + + if ($_DP_in_CDATA && $_DP_keep_CDATA) + { + undef $_DP_last_text; + # Merge text with previous node if possible + $_DP_elem->addCDATA ($str); + } + else + { + # Merge text with previous node if possible + # Used to be: $expat->{DOM_Element}->addText ($str); + if ($_DP_last_text) + { + $_DP_last_text->[_Data] .= $str; + } + else + { + $_DP_last_text = $_DP_doc->createTextNode ($str); + $_DP_last_text->[_Parent] = $_DP_elem; + push @{$_DP_elem->[_C]}, $_DP_last_text; + } + } +} + +sub Start +{ + my ($expat, $elem, @attr) = @_; + my $parent = $_DP_elem; + my $doc = $_DP_doc; + + if ($parent == $doc) + { + # End of document prolog, i.e. start of first Element + $_DP_in_prolog = 0; + } + + undef $_DP_last_text; + my $node = $doc->createElement ($elem); + $_DP_elem = $node; + $parent->appendChild ($node); + + my $n = @attr; + return unless $n; + + # Add attributes + my $first_default = $expat->specified_attr; + my $i = 0; + while ($i < $n) + { + my $specified = $i < $first_default; + my $name = $attr[$i++]; + undef $_DP_last_text; + my $attr = $doc->createAttribute ($name, $attr[$i++], $specified); + $node->setAttributeNode ($attr); + } +} + +sub End +{ + $_DP_elem = $_DP_elem->[_Parent]; + undef $_DP_last_text; + + # Check for end of root element + $_DP_end_doc = 1 if ($_DP_elem == $_DP_doc); +} + +# Called at end of file, i.e. whitespace following last closing tag +# Also for Entity references +# May also be called at other times... +sub Default +{ + my ($expat, $str) = @_; + +# shift; deb ("Default", @_); + + if ($_DP_in_prolog) # still processing Document prolog... + { +#?? could try to store this text later +#?? I've only seen whitespace here so far + } + elsif (!$_DP_end_doc) # ignore whitespace at end of Document + { +# if ($expat->{NoExpand}) +# { + # Got a TextDecl () from an external entity here once + + # create non-parameter entity reference, correct? + return unless $str =~ s!^&!!; + return unless $str =~ s!;$!!; + $_DP_elem->appendChild ( + $_DP_doc->createEntityReference ($str,0,$expat->{NoExpand})); + undef $_DP_last_text; +# } +# else +# { +# $expat->{DOM_Element}->addText ($str); +# } + } +} + +# XML::Parser 2.19 added support for CdataStart and CdataEnd handlers +# If they are not defined, the Default handler is called instead +# with the text "createComment ($_[1]); + $_DP_elem->appendChild ($comment); + } +} + +sub deb +{ +# return; + + my $name = shift; + print "$name (" . join(",", map {defined($_)?$_ : "(undef)"} @_) . ")\n"; +} + +sub Doctype +{ + my $expat = shift; +# deb ("Doctype", @_); + + $_DP_doctype->setParams (@_); + $_DP_saw_doctype = 1; +} + +sub Attlist +{ + my $expat = shift; +# deb ("Attlist", @_); + + $_[5] = "Hidden" unless $_DP_expand_pent || $_DP_level == 0; + $_DP_doctype->addAttDef (@_); +} + +sub XMLDecl +{ + my $expat = shift; +# deb ("XMLDecl", @_); + + undef $_DP_last_text; + $_DP_doc->setXMLDecl (new XML::DOM::XMLDecl ($_DP_doc, @_)); +} + +sub Entity +{ + my $expat = shift; +# deb ("Entity", @_); + + # check to see if Parameter Entity + if ($_[5]) + { + + if (defined $_[2]) # was sysid specified? + { + # Store the Entity mapping for use in ExternEnt + if (exists $expat->{DOM_Entity}->{$_[2]}) + { + # If this ever happens, the name of entity may be the wrong one + # when writing out the Document. + XML::DOM::warning ("Entity $_[2] is known as %$_[0] and %" . + $expat->{DOM_Entity}->{$_[2]}); + } + else + { + $expat->{DOM_Entity}->{$_[2]} = $_[0]; + } + #?? remove this block when XML::Parser has better support + } + } + + # no value on things with sysId + if (defined $_[2] && defined $_[1]) + { + # print STDERR "XML::DOM Warning $_[0] had both value($_[1]) And SYSId ($_[2]), removing value.\n"; + $_[1] = undef; + } + + undef $_DP_last_text; + + $_[6] = "Hidden" unless $_DP_expand_pent || $_DP_level == 0; + $_DP_doctype->addEntity (@_); +} + +# +# Unparsed is called when it encounters e.g: +# +# +# +sub Unparsed +{ + Entity (@_); # same as regular ENTITY, as far as DOM is concerned +} + +sub Element +{ + shift; +# deb ("Element", @_); + + # put in to convert XML::Parser::ContentModel object to string + # ($_[1] used to be a string in XML::Parser 2.27 and + # dom_attr.t fails if we don't stringify here) + $_[1] = "$_[1]"; + + undef $_DP_last_text; + push @_, "Hidden" unless $_DP_expand_pent || $_DP_level == 0; + $_DP_doctype->addElementDecl (@_); +} + +sub Notation +{ + shift; +# deb ("Notation", @_); + + undef $_DP_last_text; + $_[4] = "Hidden" unless $_DP_expand_pent || $_DP_level == 0; + $_DP_doctype->addNotation (@_); +} + +sub Proc +{ + shift; +# deb ("Proc", @_); + + undef $_DP_last_text; + push @_, "Hidden" unless $_DP_expand_pent || $_DP_level == 0; + $_DP_elem->appendChild ($_DP_doc->createProcessingInstruction (@_)); +} + +# +# ExternEnt is called when an external entity, such as: +# +# +# +# is referenced in the document, e.g. with: &externalEntity; +# If ExternEnt is not specified, the entity reference is passed to the Default +# handler as e.g. "&externalEntity;", where an EntityReference object is added. +# +# Also for %externalEntity; references in the DTD itself. +# +# It can also be called when XML::Parser parses the DOCTYPE header +# (just before calling the DocType handler), when it contains a +# reference like "docbook.dtd" below: +# +# 2.27 since file_ext_ent_handler + # now returns a IO::File object instead of a content string + + # Invoke XML::Parser's default ExternEnt handler + my $content; + if ($XML::Parser::have_LWP) + { + $content = XML::Parser::lwp_ext_ent_handler (@_); + } + else + { + $content = XML::Parser::file_ext_ent_handler (@_); + } + + if ($_DP_expand_pent) + { + return $content; + } + else + { + my $entname = $expat->{DOM_Entity}->{$sysid}; + if (defined $entname) + { + $_DP_doctype->appendChild ($_DP_doc->createEntityReference ($entname, 1, $expat->{NoExpand})); + # Wrap the contents in special comments, so we know when we reach the + # end of parsing the entity. This way we can omit the contents from + # the DTD, when ExpandParamEnt is set to 0. + + return "" . + $content . ""; + } + else + { + # We either read the entity ref'd by the system id in the + # header, or the entity was undefined. + # In either case, don't bother with maintaining the entity + # reference, just expand the contents. + return "" . + $content . ""; + } + } +} + +1; # module return code + +__END__ + +=head1 NAME + +XML::DOM - A perl module for building DOM Level 1 compliant document structures + +=head1 SYNOPSIS + + use XML::DOM; + + my $parser = new XML::DOM::Parser; + my $doc = $parser->parsefile ("file.xml"); + + # print all HREF attributes of all CODEBASE elements + my $nodes = $doc->getElementsByTagName ("CODEBASE"); + my $n = $nodes->getLength; + + for (my $i = 0; $i < $n; $i++) + { + my $node = $nodes->item ($i); + my $href = $node->getAttributeNode ("HREF"); + print $href->getValue . "\n"; + } + + # Print doc file + $doc->printToFile ("out.xml"); + + # Print to string + print $doc->toString; + + # Avoid memory leaks - cleanup circular references for garbage collection + $doc->dispose; + +=head1 DESCRIPTION + +This module extends the XML::Parser module by Clark Cooper. +The XML::Parser module is built on top of XML::Parser::Expat, +which is a lower level interface to James Clark's expat library. + +XML::DOM::Parser is derived from XML::Parser. It parses XML strings or files +and builds a data structure that conforms to the API of the Document Object +Model as described at http://www.w3.org/TR/REC-DOM-Level-1. +See the XML::Parser manpage for other available features of the +XML::DOM::Parser class. +Note that the 'Style' property should not be used (it is set internally.) + +The XML::Parser I option is more or less supported, in that it will +generate EntityReference objects whenever an entity reference is encountered +in character data. I'm not sure how useful this is. Any comments are welcome. + +As described in the synopsis, when you create an XML::DOM::Parser object, +the parse and parsefile methods create an I object +from the specified input. This Document object can then be examined, modified and +written back out to a file or converted to a string. + +When using XML::DOM with XML::Parser version 2.19 and up, setting the +XML::DOM::Parser option I to 1 will store CDATASections in +CDATASection nodes, instead of converting them to Text nodes. +Subsequent CDATASection nodes will be merged into one. Let me know if this +is a problem. + +When using XML::Parser 2.27 and above, you can suppress expansion of +parameter entity references (e.g. %pent;) in the DTD, by setting I +to 1 and I to 0. See L for details. + +A Document has a tree structure consisting of I objects. A Node may contain +other nodes, depending on its type. +A Document may have Element, Text, Comment, and CDATASection nodes. +Element nodes may have Attr, Element, Text, Comment, and CDATASection nodes. +The other nodes may not have any child nodes. + +This module adds several node types that are not part of the DOM spec (yet.) +These are: ElementDecl (for declarations), AttlistDecl (for + declarations), XMLDecl (for declarations) and AttDef +(for attribute definitions in an AttlistDecl.) + +=head1 XML::DOM Classes + +The XML::DOM module stores XML documents in a tree structure with a root node +of type XML::DOM::Document. Different nodes in tree represent different +parts of the XML file. The DOM Level 1 Specification defines the following +node types: + +=over 4 + +=item * L - Super class of all node types + +=item * L - The root of the XML document + +=item * L - Describes the document structure: + +=item * L - An XML element: ... + +=item * L - An XML element attribute: name="value" + +=item * L - Super class of Text, Comment and CDATASection + +=item * L - Text in an XML element + +=item * L - Escaped block of text: + +=item * L - An XML comment: + +=item * L - Refers to an ENTITY: &ent; or %ent; + +=item * L - An ENTITY definition: + +=item * L - + +=item * L - Lightweight node for cut & paste + +=item * L - An NOTATION definition: + +=back + +In addition, the XML::DOM module contains the following nodes that are not part +of the DOM Level 1 Specification: + +=over 4 + +=item * L - Defines an element: + +=item * L - Defines one or more attributes in an + +=item * L - Defines one attribute in an + +=item * L - An XML declaration: + +=back + +Other classes that are part of the DOM Level 1 Spec: + +=over 4 + +=item * L - Provides information about this implementation. Currently it doesn't do much. + +=item * L - Used internally to store a node's child nodes. Also returned by getElementsByTagName. + +=item * L - Used internally to store an element's attributes. + +=back + +Other classes that are not part of the DOM Level 1 Spec: + +=over 4 + +=item * L - An non-validating XML parser that creates XML::DOM::Documents + +=item * L - A validating XML parser that creates XML::DOM::Documents. It uses L to check against the DocumentType (DTD) + +=item * L - A PerlSAX handler that creates XML::DOM::Documents. + +=back + +=head1 XML::DOM package + +=over 4 + +=item Constant definitions + +The following predefined constants indicate which type of node it is. + +=back + + UNKNOWN_NODE (0) The node type is unknown (not part of DOM) + + ELEMENT_NODE (1) The node is an Element. + ATTRIBUTE_NODE (2) The node is an Attr. + TEXT_NODE (3) The node is a Text node. + CDATA_SECTION_NODE (4) The node is a CDATASection. + ENTITY_REFERENCE_NODE (5) The node is an EntityReference. + ENTITY_NODE (6) The node is an Entity. + PROCESSING_INSTRUCTION_NODE (7) The node is a ProcessingInstruction. + COMMENT_NODE (8) The node is a Comment. + DOCUMENT_NODE (9) The node is a Document. + DOCUMENT_TYPE_NODE (10) The node is a DocumentType. + DOCUMENT_FRAGMENT_NODE (11) The node is a DocumentFragment. + NOTATION_NODE (12) The node is a Notation. + + ELEMENT_DECL_NODE (13) The node is an ElementDecl (not part of DOM) + ATT_DEF_NODE (14) The node is an AttDef (not part of DOM) + XML_DECL_NODE (15) The node is an XMLDecl (not part of DOM) + ATTLIST_DECL_NODE (16) The node is an AttlistDecl (not part of DOM) + + Usage: + + if ($node->getNodeType == ELEMENT_NODE) + { + print "It's an Element"; + } + +B: The DOM Spec does not mention UNKNOWN_NODE and, +quite frankly, you should never encounter it. The last 4 node types were added +to support the 4 added node classes. + +=head2 Global Variables + +=over 4 + +=item $VERSION + +The variable $XML::DOM::VERSION contains the version number of this +implementation, e.g. "1.43". + +=back + +=head2 METHODS + +These methods are not part of the DOM Level 1 Specification. + +=over 4 + +=item getIgnoreReadOnly and ignoreReadOnly (readOnly) + +The DOM Level 1 Spec does not allow you to edit certain sections of the document, +e.g. the DocumentType, so by default this implementation throws DOMExceptions +(i.e. NO_MODIFICATION_ALLOWED_ERR) when you try to edit a readonly node. +These readonly checks can be disabled by (temporarily) setting the global +IgnoreReadOnly flag. + +The ignoreReadOnly method sets the global IgnoreReadOnly flag and returns its +previous value. The getIgnoreReadOnly method simply returns its current value. + + my $oldIgnore = XML::DOM::ignoreReadOnly (1); + eval { + ... do whatever you want, catching any other exceptions ... + }; + XML::DOM::ignoreReadOnly ($oldIgnore); # restore previous value + +Another way to do it, using a local variable: + + { # start new scope + local $XML::DOM::IgnoreReadOnly = 1; + ... do whatever you want, don't worry about exceptions ... + } # end of scope ($IgnoreReadOnly is set back to its previous value) + + +=item isValidName (name) + +Whether the specified name is a valid "Name" as specified in the XML spec. +Characters with Unicode values > 127 are now also supported. + +=item getAllowReservedNames and allowReservedNames (boolean) + +The first method returns whether reserved names are allowed. +The second takes a boolean argument and sets whether reserved names are allowed. +The initial value is 1 (i.e. allow reserved names.) + +The XML spec states that "Names" starting with (X|x)(M|m)(L|l) +are reserved for future use. (Amusingly enough, the XML version of the XML spec +(REC-xml-19980210.xml) breaks that very rule by defining an ENTITY with the name +'xmlpio'.) +A "Name" in this context means the Name token as found in the BNF rules in the +XML spec. + +XML::DOM only checks for errors when you modify the DOM tree, not when the +DOM tree is built by the XML::DOM::Parser. + +=item setTagCompression (funcref) + +There are 3 possible styles for printing empty Element tags: + +=over 4 + +=item Style 0 + + or + +XML::DOM uses this style by default for all Elements. + +=item Style 1 + + or + +=item Style 2 + + or + +This style is sometimes desired when using XHTML. +(Note the extra space before the slash "/") +See L Appendix C for more details. + +=back + +By default XML::DOM compresses all empty Element tags (style 0.) +You can control which style is used for a particular Element by calling +XML::DOM::setTagCompression with a reference to a function that takes +2 arguments. The first is the tag name of the Element, the second is the +XML::DOM::Element that is being printed. +The function should return 0, 1 or 2 to indicate which style should be used to +print the empty tag. E.g. + + XML::DOM::setTagCompression (\&my_tag_compression); + + sub my_tag_compression + { + my ($tag, $elem) = @_; + + # Print empty br, hr and img tags like this:
+ return 2 if $tag =~ /^(br|hr|img)$/; + + # Print other empty tags like this: + return 1; + } + +=back + +=head1 IMPLEMENTATION DETAILS + +=over 4 + +=item * Perl Mappings + +The value undef was used when the DOM Spec said null. + +The DOM Spec says: Applications must encode DOMString using UTF-16 (defined in +Appendix C.3 of [UNICODE] and Amendment 1 of [ISO-10646]). +In this implementation we use plain old Perl strings encoded in UTF-8 instead of +UTF-16. + +=item * Text and CDATASection nodes + +The Expat parser expands EntityReferences and CDataSection sections to +raw strings and does not indicate where it was found. +This implementation does therefore convert both to Text nodes at parse time. +CDATASection and EntityReference nodes that are added to an existing Document +(by the user) will be preserved. + +Also, subsequent Text nodes are always merged at parse time. Text nodes that are +added later can be merged with the normalize method. Consider using the addText +method when adding Text nodes. + +=item * Printing and toString + +When printing (and converting an XML Document to a string) the strings have to +encoded differently depending on where they occur. E.g. in a CDATASection all +substrings are allowed except for "]]>". In regular text, certain characters are +not allowed, e.g. ">" has to be converted to ">". +These routines should be verified by someone who knows the details. + +=item * Quotes + +Certain sections in XML are quoted, like attribute values in an Element. +XML::Parser strips these quotes and the print methods in this implementation +always uses double quotes, so when parsing and printing a document, single quotes +may be converted to double quotes. The default value of an attribute definition +(AttDef) in an AttlistDecl, however, will maintain its quotes. + +=item * AttlistDecl + +Attribute declarations for a certain Element are always merged into a single +AttlistDecl object. + +=item * Comments + +Comments in the DOCTYPE section are not kept in the right place. They will become +child nodes of the Document. + +=item * Hidden Nodes + +Previous versions of XML::DOM would expand parameter entity references +(like B<%pent;>), so when printing the DTD, it would print the contents +of the external entity, instead of the parameter entity reference. +With this release (1.27), you can prevent this by setting the XML::DOM::Parser +options ParseParamEnt => 1 and ExpandParamEnt => 0. + +When it is parsing the contents of the external entities, it *DOES* still add +the nodes to the DocumentType, but it marks these nodes by setting +the 'Hidden' property. In addition, it adds an EntityReference node to the +DocumentType node. + +When printing the DocumentType node (or when using to_expat() or to_sax()), +the 'Hidden' nodes are suppressed, so you will see the parameter entity +reference instead of the contents of the external entities. See test case +t/dom_extent.t for an example. + +The reason for adding the 'Hidden' nodes to the DocumentType node, is that +the nodes may contain definitions that are referenced further +in the document. (Simply not adding the nodes to the DocumentType could +cause such entity references to be expanded incorrectly.) + +Note that you need XML::Parser 2.27 or higher for this to work correctly. + +=back + +=head1 SEE ALSO + +L + +The Japanese version of this document by Takanori Kawai (Hippo2000) +at L + +The DOM Level 1 specification at L + +The XML spec (Extensible Markup Language 1.0) at L + +The L and L manual pages. + +L also provides a DOM Parser, and is significantly faster +than XML::DOM, and is under active development. It requires that you +download the Gnome libxml library. + +L will provide the DOM Level 2 Core API, and should be +as fast as XML::LibXML, but more robust, since it uses the memory +management functions of libgdome. For more details see +L + +=head1 CAVEATS + +The method getElementsByTagName() does not return a "live" NodeList. +Whether this is an actual caveat is debatable, but a few people on the +www-dom mailing list seemed to think so. I haven't decided yet. It's a pain +to implement, it slows things down and the benefits seem marginal. +Let me know what you think. + +=head1 AUTHOR + +Enno Derksen is the original author. + +Send patches to T.J. Mather at >. + +Paid support is available from directly from the maintainers of this package. +Please see L for more details. + +Thanks to Clark Cooper for his help with the initial version. + +=cut diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/AttDef.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/AttDef.pod new file mode 100644 index 0000000000000000000000000000000000000000..b5acb78f2e7d95c6638117f5973342da36c00689 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/AttDef.pod @@ -0,0 +1,36 @@ +=head1 NAME + +XML::DOM::AttDef - A single XML attribute definition in an ATTLIST in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::AttDef extends L, but is not part of the DOM Level 1 +specification. + +Each object of this class represents one attribute definition in an AttlistDecl. + +=head2 METHODS + +=over 4 + +=item getName + +Returns the attribute name. + +=item getDefault + +Returns the default value, or undef. + +=item isFixed + +Whether the attribute value is fixed (see #FIXED keyword.) + +=item isRequired + +Whether the attribute value is required (see #REQUIRED keyword.) + +=item isImplied + +Whether the attribute value is implied (see #IMPLIED keyword.) + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/AttlistDecl.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/AttlistDecl.pod new file mode 100644 index 0000000000000000000000000000000000000000..56f2c71112e2794096833e65126c30a2f7dd84b4 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/AttlistDecl.pod @@ -0,0 +1,45 @@ +=head1 NAME + +XML::DOM::AttlistDecl - An XML ATTLIST declaration in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::AttlistDecl extends L but is not part of the +DOM Level 1 specification. + +This node represents an ATTLIST declaration, e.g. + + + +Each attribute definition is stored a separate AttDef node. The AttDef nodes can +be retrieved with getAttDef and added with addAttDef. +(The AttDef nodes are stored in a NamedNodeMap internally.) + +=head2 METHODS + +=over 4 + +=item getName + +Returns the Element tagName. + +=item getAttDef (attrName) + +Returns the AttDef node for the attribute with the specified name. + +=item addAttDef (attrName, type, default, [ fixed ]) + +Adds a AttDef node for the attribute with the specified name. + +Parameters: + I the attribute name. + I the attribute type (e.g. "CDATA" or "(male|female)".) + I the default value enclosed in quotes (!), the string #IMPLIED or + the string #REQUIRED. + I whether the attribute is '#FIXED' (default is 0.) + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Attr.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Attr.pod new file mode 100644 index 0000000000000000000000000000000000000000..9305c21389bc0eedbb18df0fbe77ef344bcc0903 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Attr.pod @@ -0,0 +1,67 @@ +=head1 NAME + +XML::DOM::Attr - An XML attribute in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Attr extends L. + +The Attr nodes built by the XML::DOM::Parser always have one child node +which is a Text node containing the expanded string value (i.e. EntityReferences +are always expanded.) EntityReferences may be added when modifying or creating +a new Document. + +The Attr interface represents an attribute in an Element object. +Typically the allowable values for the attribute are defined in a +document type definition. + +Attr objects inherit the Node interface, but since they are not +actually child nodes of the element they describe, the DOM does not +consider them part of the document tree. Thus, the Node attributes +parentNode, previousSibling, and nextSibling have a undef value for Attr +objects. The DOM takes the view that attributes are properties of +elements rather than having a separate identity from the elements they +are associated with; this should make it more efficient to implement +such features as default attributes associated with all elements of a +given type. Furthermore, Attr nodes may not be immediate children of a +DocumentFragment. However, they can be associated with Element nodes +contained within a DocumentFragment. In short, users and implementors +of the DOM need to be aware that Attr nodes have some things in common +with other objects inheriting the Node interface, but they also are +quite distinct. + +The attribute's effective value is determined as follows: if this +attribute has been explicitly assigned any value, that value is the +attribute's effective value; otherwise, if there is a declaration for +this attribute, and that declaration includes a default value, then +that default value is the attribute's effective value; otherwise, the +attribute does not exist on this element in the structure model until +it has been explicitly added. Note that the nodeValue attribute on the +Attr instance can also be used to retrieve the string version of the +attribute's value(s). + +In XML, where the value of an attribute can contain entity references, +the child nodes of the Attr node provide a representation in which +entity references are not expanded. These child nodes may be either +Text or EntityReference nodes. Because the attribute type may be +unknown, there are no tokenized attribute values. + +=head2 METHODS + +=over 4 + +=item getValue + +On retrieval, the value of the attribute is returned as a string. +Character and general entity references are replaced with their values. + +=item setValue (str) + +DOM Spec: On setting, this creates a Text node with the unparsed contents of the +string. + +=item getName + +Returns the name of this attribute. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/CDATASection.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/CDATASection.pod new file mode 100644 index 0000000000000000000000000000000000000000..54c26e1f86c1986bf3173bb0c963dee951e34e79 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/CDATASection.pod @@ -0,0 +1,31 @@ +=head1 NAME + +XML::DOM::CDATASection - Escaping XML text blocks in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::CDATASection extends L which extends +L. + +CDATA sections are used to escape blocks of text containing characters +that would otherwise be regarded as markup. The only delimiter that is +recognized in a CDATA section is the "]]>" string that ends the CDATA +section. CDATA sections can not be nested. The primary purpose is for +including material such as XML fragments, without needing to escape all +the delimiters. + +The DOMString attribute of the Text node holds the text that is +contained by the CDATA section. Note that this may contain characters +that need to be escaped outside of CDATA sections and that, depending +on the character encoding ("charset") chosen for serialization, it may +be impossible to write out some characters as part of a CDATA section. + +The CDATASection interface inherits the CharacterData interface through +the Text interface. Adjacent CDATASections nodes are not merged by use +of the Element.normalize() method. + +B XML::DOM::Parser and XML::DOM::ValParser convert all CDATASections +to regular text by default. +To preserve CDATASections, set the parser option KeepCDATA to 1. + + diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/CharacterData.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/CharacterData.pod new file mode 100644 index 0000000000000000000000000000000000000000..da591a7066d4018ad364ddf3a037d33d79925ef2 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/CharacterData.pod @@ -0,0 +1,87 @@ +=head1 NAME + +XML::DOM::CharacterData - Common interface for Text, CDATASections and Comments + +=head1 DESCRIPTION + +XML::DOM::CharacterData extends L + +The CharacterData interface extends Node with a set of attributes and +methods for accessing character data in the DOM. For clarity this set +is defined here rather than on each object that uses these attributes +and methods. No DOM objects correspond directly to CharacterData, +though Text, Comment and CDATASection do inherit the interface from it. +All offsets in this interface start from 0. + +=head2 METHODS + +=over 4 + +=item getData and setData (data) + +The character data of the node that implements this +interface. The DOM implementation may not put arbitrary +limits on the amount of data that may be stored in a +CharacterData node. However, implementation limits may mean +that the entirety of a node's data may not fit into a single +DOMString. In such cases, the user may call substringData to +retrieve the data in appropriately sized pieces. + +=item getLength + +The number of characters that are available through data and +the substringData method below. This may have the value zero, +i.e., CharacterData nodes may be empty. + +=item substringData (offset, count) + +Extracts a range of data from the node. + +Parameters: + I Start offset of substring to extract. + I The number of characters to extract. + +Return Value: The specified substring. If the sum of offset and count +exceeds the length, then all characters to the end of +the data are returned. + +=item appendData (str) + +Appends the string to the end of the character data of the +node. Upon success, data provides access to the concatenation +of data and the DOMString specified. + +=item insertData (offset, arg) + +Inserts a string at the specified character offset. + +Parameters: + I The character offset at which to insert. + I The DOMString to insert. + +=item deleteData (offset, count) + +Removes a range of characters from the node. +Upon success, data and length reflect the change. +If the sum of offset and count exceeds length then all characters +from offset to the end of the data are deleted. + +Parameters: + I The offset from which to remove characters. + I The number of characters to delete. + +=item replaceData (offset, count, arg) + +Replaces the characters starting at the specified character +offset with the specified string. + +Parameters: + I The offset from which to start replacing. + I The number of characters to replace. + I The DOMString with which the range must be replaced. + +If the sum of offset and count exceeds length, then all characters to the end of +the data are replaced (i.e., the effect is the same as a remove method call with +the same range, followed by an append method invocation). + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Comment.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Comment.pod new file mode 100644 index 0000000000000000000000000000000000000000..f8e2cb290e0e2baff9c371718eca6495265d3f92 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Comment.pod @@ -0,0 +1,14 @@ +=head1 NAME + +XML::DOM::Comment - An XML comment in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Comment extends L which extends +L. + +This node represents the content of a comment, i.e., all the characters +between the starting ''. Note that this is the +definition of a comment in XML, and, in practice, HTML, although some +HTML tools may implement the full SGML comment structure. + diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DOMException.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DOMException.pm new file mode 100644 index 0000000000000000000000000000000000000000..d49c69859a45b10b93fe1720f2264f211da21dc3 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DOMException.pm @@ -0,0 +1,88 @@ +###################################################################### +package XML::DOM::DOMException; +###################################################################### + +use Exporter; + +use overload '""' => \&stringify; +use vars qw ( @ISA @EXPORT @ErrorNames ); + +BEGIN +{ + @ISA = qw( Exporter ); + @EXPORT = qw( INDEX_SIZE_ERR + DOMSTRING_SIZE_ERR + HIERARCHY_REQUEST_ERR + WRONG_DOCUMENT_ERR + INVALID_CHARACTER_ERR + NO_DATA_ALLOWED_ERR + NO_MODIFICATION_ALLOWED_ERR + NOT_FOUND_ERR + NOT_SUPPORTED_ERR + INUSE_ATTRIBUTE_ERR + ); +} + +sub UNKNOWN_ERR () {0;} # not in the DOM Spec! +sub INDEX_SIZE_ERR () {1;} +sub DOMSTRING_SIZE_ERR () {2;} +sub HIERARCHY_REQUEST_ERR () {3;} +sub WRONG_DOCUMENT_ERR () {4;} +sub INVALID_CHARACTER_ERR () {5;} +sub NO_DATA_ALLOWED_ERR () {6;} +sub NO_MODIFICATION_ALLOWED_ERR () {7;} +sub NOT_FOUND_ERR () {8;} +sub NOT_SUPPORTED_ERR () {9;} +sub INUSE_ATTRIBUTE_ERR () {10;} + +@ErrorNames = ( + "UNKNOWN_ERR", + "INDEX_SIZE_ERR", + "DOMSTRING_SIZE_ERR", + "HIERARCHY_REQUEST_ERR", + "WRONG_DOCUMENT_ERR", + "INVALID_CHARACTER_ERR", + "NO_DATA_ALLOWED_ERR", + "NO_MODIFICATION_ALLOWED_ERR", + "NOT_FOUND_ERR", + "NOT_SUPPORTED_ERR", + "INUSE_ATTRIBUTE_ERR" + ); +sub new +{ + my ($type, $code, $msg) = @_; + my $self = bless {Code => $code}, $type; + + $self->{Message} = $msg if defined $msg; + +# print "=> Exception: " . $self->stringify . "\n"; + $self; +} + +sub getCode +{ + $_[0]->{Code}; +} + +#------------------------------------------------------------ +# Extra method implementations + +sub getName +{ + $ErrorNames[$_[0]->{Code}]; +} + +sub getMessage +{ + $_[0]->{Message}; +} + +sub stringify +{ + my $self = shift; + + "XML::DOM::DOMException(Code=" . $self->getCode . ", Name=" . + $self->getName . ", Message=" . $self->getMessage . ")"; +} + +1; # package return code diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DOMImplementation.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DOMImplementation.pod new file mode 100644 index 0000000000000000000000000000000000000000..cb5e34df9ccb114665e7578fbbbefc8c4cb4b054 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DOMImplementation.pod @@ -0,0 +1,24 @@ +=head1 NAME + +XML::DOM::DOMImplementation - Information about XML::DOM implementation + +=head1 DESCRIPTION + +The DOMImplementation interface provides a number of methods for +performing operations that are independent of any particular instance +of the document object model. + +The DOM Level 1 does not specify a way of creating a document instance, +and hence document creation is an operation specific to an +implementation. Future Levels of the DOM specification are expected to +provide methods for creating documents directly. + +=head2 METHODS + +=over 4 + +=item hasFeature (feature, version) + +Returns 1 if and only if feature equals "XML" and version equals "1.0". + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Document.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Document.pod new file mode 100644 index 0000000000000000000000000000000000000000..f8e7b81c9e6c53689280b4e0976c9c832b2f02d5 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Document.pod @@ -0,0 +1,220 @@ +=head1 NAME + +XML::DOM::Document - An XML document node in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Document extends L. + +It is the main root of the XML document structure as returned by +XML::DOM::Parser::parse and XML::DOM::Parser::parsefile. + +Since elements, text nodes, comments, processing instructions, etc. +cannot exist outside the context of a Document, the Document interface +also contains the factory methods needed to create these objects. The +Node objects created have a getOwnerDocument method which associates +them with the Document within whose context they were created. + +=head2 METHODS + +=over 4 + +=item getDocumentElement + +This is a convenience method that allows direct access to +the child node that is the root Element of the document. + +=item getDoctype + +The Document Type Declaration (see DocumentType) associated +with this document. For HTML documents as well as XML +documents without a document type declaration this returns +undef. The DOM Level 1 does not support editing the Document +Type Declaration. + +B: This implementation allows editing the doctype. +See I for details. + +=item getImplementation + +The DOMImplementation object that handles this document. A +DOM application may use objects from multiple implementations. + +=item createElement (tagName) + +Creates an element of the type specified. Note that the +instance returned implements the Element interface, so +attributes can be specified directly on the returned object. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the tagName does not conform to the XML spec. + +=back + +=item createTextNode (data) + +Creates a Text node given the specified string. + +=item createComment (data) + +Creates a Comment node given the specified string. + +=item createCDATASection (data) + +Creates a CDATASection node given the specified string. + +=item createAttribute (name [, value [, specified ]]) + +Creates an Attr of the given name. Note that the Attr +instance can then be set on an Element using the setAttribute method. + +B: The DOM Spec does not allow passing the value or the +specified property in this method. In this implementation they are optional. + +Parameters: + I The attribute's value. See Attr::setValue for details. + If the value is not supplied, the specified property is set to 0. + I Whether the attribute value was specified or whether the default + value was used. If not supplied, it's assumed to be 1. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the name does not conform to the XML spec. + +=back + +=item createProcessingInstruction (target, data) + +Creates a ProcessingInstruction node given the specified name and data strings. + +Parameters: + I The target part of the processing instruction. + I The data for the node. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the target does not conform to the XML spec. + +=back + +=item createDocumentFragment + +Creates an empty DocumentFragment object. + +=item createEntityReference (name) + +Creates an EntityReference object. + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item getXMLDecl and setXMLDecl (xmlDecl) + +Returns the XMLDecl for this Document or undef if none was specified. +Note that XMLDecl is not part of the list of child nodes. + +=item setDoctype (doctype) + +Sets or replaces the DocumentType. +B: Don't use appendChild or insertBefore to set the DocumentType. +Even though doctype will be part of the list of child nodes, it is handled +specially. + +=item getDefaultAttrValue (elem, attr) + +Returns the default attribute value as a string or undef, if none is available. + +Parameters: + I The element tagName. + I The attribute name. + +=item getEntity (name) + +Returns the Entity with the specified name. + +=item createXMLDecl (version, encoding, standalone) + +Creates an XMLDecl object. All parameters may be undefined. + +=item createDocumentType (name, sysId, pubId) + +Creates a DocumentType object. SysId and pubId may be undefined. + +=item createNotation (name, base, sysId, pubId) + +Creates a new Notation object. Consider using +XML::DOM::DocumentType::addNotation! + +=item createEntity (parameter, notationName, value, sysId, pubId, ndata) + +Creates an Entity object. Consider using XML::DOM::DocumentType::addEntity! + +=item createElementDecl (name, model) + +Creates an ElementDecl object. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the element name (tagName) does not conform to the XML spec. + +=back + +=item createAttlistDecl (name) + +Creates an AttlistDecl object. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the element name (tagName) does not conform to the XML spec. + +=back + +=item expandEntity (entity [, parameter]) + +Expands the specified entity or parameter entity (if parameter=1) and returns +its value as a string, or undef if the entity does not exist. +(The entity name should not contain the '%', '&' or ';' delimiters.) + +=item check ( [$checker] ) + +Uses the specified L to validate the document. +If no XML::Checker is supplied, a new XML::Checker is created. +See L for details. + +=item check_sax ( [$checker] ) + +Similar to check() except it uses the SAX interface to XML::Checker instead of +the expat interface. This method may disappear or replace check() at some time. + +=item createChecker () + +Creates an XML::Checker based on the document's DTD. +The $checker can be reused to check any elements within the document. +Create a new L whenever the DOCTYPE section of the document +is altered! + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DocumentFragment.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DocumentFragment.pod new file mode 100644 index 0000000000000000000000000000000000000000..aae2cd61f4b94daffae0c3b41b7835ac674ac1b7 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DocumentFragment.pod @@ -0,0 +1,40 @@ +=head1 NAME + +XML::DOM::DocumentFragment - Facilitates cut & paste in XML::DOM documents + +=head1 DESCRIPTION + +XML::DOM::DocumentFragment extends L + +DocumentFragment is a "lightweight" or "minimal" Document object. It is +very common to want to be able to extract a portion of a document's +tree or to create a new fragment of a document. Imagine implementing a +user command like cut or rearranging a document by moving fragments +around. It is desirable to have an object which can hold such fragments +and it is quite natural to use a Node for this purpose. While it is +true that a Document object could fulfil this role, a Document object +can potentially be a heavyweight object, depending on the underlying +implementation. What is really needed for this is a very lightweight +object. DocumentFragment is such an object. + +Furthermore, various operations -- such as inserting nodes as children +of another Node -- may take DocumentFragment objects as arguments; this +results in all the child nodes of the DocumentFragment being moved to +the child list of this node. + +The children of a DocumentFragment node are zero or more nodes +representing the tops of any sub-trees defining the structure of the +document. DocumentFragment nodes do not need to be well-formed XML +documents (although they do need to follow the rules imposed upon +well-formed XML parsed entities, which can have multiple top nodes). +For example, a DocumentFragment might have only one child and that +child node could be a Text node. Such a structure model represents +neither an HTML document nor a well-formed XML document. + +When a DocumentFragment is inserted into a Document (or indeed any +other Node that may take children) the children of the DocumentFragment +and not the DocumentFragment itself are inserted into the Node. This +makes the DocumentFragment very useful when the user wishes to create +nodes that are siblings; the DocumentFragment acts as the parent of +these nodes so that the user can use the standard methods from the Node +interface, such as insertBefore() and appendChild(). diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DocumentType.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DocumentType.pod new file mode 100644 index 0000000000000000000000000000000000000000..21df2629f7ffdccdca6fe292c32dcb49c4c96655 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/DocumentType.pod @@ -0,0 +1,186 @@ +=head1 NAME + +XML::DOM::DocumentType - An XML document type (DTD) in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::DocumentType extends L. + +Each Document has a doctype attribute whose value is either null or a +DocumentType object. The DocumentType interface in the DOM Level 1 Core +provides an interface to the list of entities that are defined for the +document, and little else because the effect of namespaces and the +various XML scheme efforts on DTD representation are not clearly +understood as of this writing. +The DOM Level 1 doesn't support editing DocumentType nodes. + +B: This implementation has added a lot of extra +functionality to the DOM Level 1 interface. +To allow editing of the DocumentType nodes, see XML::DOM::ignoreReadOnly. + +=head2 METHODS + +=over 4 + +=item getName + +Returns the name of the DTD, i.e. the name immediately following the +DOCTYPE keyword. + +=item getEntities + +A NamedNodeMap containing the general entities, both external +and internal, declared in the DTD. Duplicates are discarded. +For example in: + + + + + ]> + + +the interface provides access to foo and bar but not baz. +Every node in this map also implements the Entity interface. + +The DOM Level 1 does not support editing entities, therefore +entities cannot be altered in any way. + +B: See XML::DOM::ignoreReadOnly to edit the DocumentType etc. + +=item getNotations + +A NamedNodeMap containing the notations declared in the DTD. +Duplicates are discarded. Every node in this map also +implements the Notation interface. + +The DOM Level 1 does not support editing notations, therefore +notations cannot be altered in any way. + +B: See XML::DOM::ignoreReadOnly to edit the DocumentType etc. + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item Creating and setting the DocumentType + +A new DocumentType can be created with: + + $doctype = $doc->createDocumentType ($name, $sysId, $pubId, $internal); + +To set (or replace) the DocumentType for a particular document, use: + + $doc->setDocType ($doctype); + +=item getSysId and setSysId (sysId) + +Returns or sets the system id. + +=item getPubId and setPubId (pudId) + +Returns or sets the public id. + +=item setName (name) + +Sets the name of the DTD, i.e. the name immediately following the +DOCTYPE keyword. Note that this should always be the same as the element +tag name of the root element. + +=item getAttlistDecl (elemName) + +Returns the AttlistDecl for the Element with the specified name, or undef. + +=item getElementDecl (elemName) + +Returns the ElementDecl for the Element with the specified name, or undef. + +=item getEntity (entityName) + +Returns the Entity with the specified name, or undef. + +=item addAttlistDecl (elemName) + +Adds a new AttDecl node with the specified elemName if one doesn't exist yet. +Returns the AttlistDecl (new or existing) node. + +=item addElementDecl (elemName, model) + +Adds a new ElementDecl node with the specified elemName and model if one doesn't +exist yet. +Returns the AttlistDecl (new or existing) node. The model is ignored if one +already existed. + +=item addEntity (notationName, value, sysId, pubId, ndata, parameter) + +Adds a new Entity node. Don't use createEntity and appendChild, because it should +be added to the internal NamedNodeMap containing the entities. + +Parameters: + I the entity name. + I the entity value. + I the system id (if any.) + I the public id (if any.) + I the NDATA declaration (if any, for general unparsed entities.) + I whether it is a parameter entity (%ent;) or not (&ent;). + +SysId, pubId and ndata may be undefined. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the notationName does not conform to the XML spec. + +=back + +=item addNotation (name, base, sysId, pubId) + +Adds a new Notation object. + +Parameters: + I the notation name. + I the base to be used for resolving a relative URI. + I the system id. + I the public id. + +Base, sysId, and pubId may all be undefined. +(These parameters are passed by the XML::Parser Notation handler.) + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the notationName does not conform to the XML spec. + +=back + +=item addAttDef (elemName, attrName, type, default, fixed) + +Adds a new attribute definition. It will add the AttDef node to the AttlistDecl +if it exists. If an AttDef with the specified attrName already exists for the +given elemName, this function only generates a warning. + +See XML::DOM::AttDef::new for the other parameters. + +=item getDefaultAttrValue (elem, attr) + +Returns the default attribute value as a string or undef, if none is available. + +Parameters: + I The element tagName. + I The attribute name. + +=item expandEntity (entity [, parameter]) + +Expands the specified entity or parameter entity (if parameter=1) and returns +its value as a string, or undef if the entity does not exist. +(The entity name should not contain the '%', '&' or ';' delimiters.) + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Element.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Element.pod new file mode 100644 index 0000000000000000000000000000000000000000..7a07e0d2a88bc41ca2b8be5b83db122d4a811b05 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Element.pod @@ -0,0 +1,191 @@ +=head1 NAME + +XML::DOM::Element - An XML element node in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Element extends L. + +By far the vast majority of objects (apart from text) that authors +encounter when traversing a document are Element nodes. Assume the +following XML document: + + + + + + +When represented using DOM, the top node is an Element node for +"elementExample", which contains two child Element nodes, one for +"subelement1" and one for "subelement2". "subelement1" contains no +child nodes. + +Elements may have attributes associated with them; since the Element +interface inherits from Node, the generic Node interface method +getAttributes may be used to retrieve the set of all attributes for an +element. There are methods on the Element interface to retrieve either +an Attr object by name or an attribute value by name. In XML, where an +attribute value may contain entity references, an Attr object should be +retrieved to examine the possibly fairly complex sub-tree representing +the attribute value. On the other hand, in HTML, where all attributes +have simple string values, methods to directly access an attribute +value can safely be used as a convenience. + +=head2 METHODS + +=over 4 + +=item getTagName + +The name of the element. For example, in: + + + ... + + +tagName has the value "elementExample". Note that this is +case-preserving in XML, as are all of the operations of the +DOM. + +=item getAttribute (name) + +Retrieves an attribute value by name. + +Return Value: The Attr value as a string, or the empty string if that +attribute does not have a specified or default value. + +=item setAttribute (name, value) + +Adds a new attribute. If an attribute with that name is +already present in the element, its value is changed to be +that of the value parameter. This value is a simple string, +it is not parsed as it is being set. So any markup (such as +syntax to be recognized as an entity reference) is treated as +literal text, and needs to be appropriately escaped by the +implementation when it is written out. In order to assign an +attribute value that contains entity references, the user +must create an Attr node plus any Text and EntityReference +nodes, build the appropriate subtree, and use +setAttributeNode to assign it as the value of an attribute. + + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the specified name contains an invalid character. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=back + +=item removeAttribute (name) + +Removes an attribute by name. If the removed attribute has a +default value it is immediately replaced. + +DOMExceptions: + +=over 4 + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=back + +=item getAttributeNode + +Retrieves an Attr node by name. + +Return Value: The Attr node with the specified attribute name or undef +if there is no such attribute. + +=item setAttributeNode (attr) + +Adds a new attribute. If an attribute with that name is +already present in the element, it is replaced by the new one. + +Return Value: If the newAttr attribute replaces an existing attribute +with the same name, the previously existing Attr node is +returned, otherwise undef is returned. + +DOMExceptions: + +=over 4 + +=item * WRONG_DOCUMENT_ERR + +Raised if newAttr was created from a different document than the one that created +the element. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=item * INUSE_ATTRIBUTE_ERR + +Raised if newAttr is already an attribute of another Element object. The DOM +user must explicitly clone Attr nodes to re-use them in other elements. + +=back + +=item removeAttributeNode (oldAttr) + +Removes the specified attribute. If the removed Attr has a default value it is +immediately replaced. If the Attr already is the default value, nothing happens +and nothing is returned. + +Parameters: + I The Attr node to remove from the attribute list. + +Return Value: The Attr node that was removed. + +DOMExceptions: + +=over 4 + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=item * NOT_FOUND_ERR + +Raised if oldAttr is not an attribute of the element. + +=back + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item setTagName (newTagName) + +Sets the tag name of the Element. Note that this method is not portable +between DOM implementations. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the specified name contains an invalid character. + +=back + +=item check ($checker) + +Uses the specified L to validate the document. +NOTE: an XML::Checker must be supplied. The checker can be created in +different ways, e.g. when parsing a document with XML::DOM::ValParser, +or with XML::DOM::Document::createChecker(). +See L for more info. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/ElementDecl.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/ElementDecl.pod new file mode 100644 index 0000000000000000000000000000000000000000..dd59b693121e58e91e65fe8ab0b608e7ab24dbb7 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/ElementDecl.pod @@ -0,0 +1,27 @@ +=head1 NAME + +XML::DOM::ElementDecl - An XML ELEMENT declaration in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::ElementDecl extends L but is not part of the +DOM Level 1 specification. + +This node represents an Element declaration, e.g. + + + +=head2 METHODS + +=over 4 + +=item getName + +Returns the Element tagName. + +=item getModel and setModel (model) + +Returns and sets the model as a string, e.g. +"(street+, city, state, zip, country?)" in the above example. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Entity.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Entity.pod new file mode 100644 index 0000000000000000000000000000000000000000..45418e87f14ae1630a175d6e38278547fa2c9d17 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Entity.pod @@ -0,0 +1,56 @@ +=head1 NAME + +XML::DOM::Entity - An XML ENTITY in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Entity extends L. + +This node represents an Entity declaration, e.g. + + + + + +The first one is called a parameter entity and is referenced like this: %draft; +The 2nd is a (regular) entity and is referenced like this: &hatch-pic; + +=head2 METHODS + +=over 4 + +=item getNotationName + +Returns the name of the notation for the entity. + +I The DOM Spec says: For unparsed entities, the name of the +notation for the entity. For parsed entities, this is null. +(This implementation does not support unparsed entities.) + +=item getSysId + +Returns the system id, or undef. + +=item getPubId + +Returns the public id, or undef. + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item isParameterEntity + +Whether it is a parameter entity (%ent;) or not (&ent;) + +=item getValue + +Returns the entity value. + +=item getNdata + +Returns the NDATA declaration (for general unparsed entities), or undef. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/EntityReference.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/EntityReference.pod new file mode 100644 index 0000000000000000000000000000000000000000..4ecda3101b75f5f41e96ff96663a7e2af756f54d --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/EntityReference.pod @@ -0,0 +1,27 @@ +=head1 NAME + +XML::DOM::EntityReference - An XML ENTITY reference in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::EntityReference extends L. + +EntityReference objects may be inserted into the structure model when +an entity reference is in the source document, or when the user wishes +to insert an entity reference. Note that character references and +references to predefined entities are considered to be expanded by the +HTML or XML processor so that characters are represented by their +Unicode equivalent rather than by an entity reference. Moreover, the +XML processor may completely expand references to entities while +building the structure model, instead of providing EntityReference +objects. If it does provide such objects, then for a given +EntityReference node, it may be that there is no Entity node +representing the referenced entity; but if such an Entity exists, then +the child list of the EntityReference node is the same as that of the +Entity node. As with the Entity node, all descendants of the +EntityReference are readonly. + +The resolution of the children of the EntityReference (the replacement +value of the referenced Entity) may be lazily evaluated; actions by the +user (such as calling the childNodes method on the EntityReference +node) are assumed to trigger the evaluation. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NamedNodeMap.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NamedNodeMap.pm new file mode 100644 index 0000000000000000000000000000000000000000..3747d545f0aa3973ac2421de845623a9c55d2e80 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NamedNodeMap.pm @@ -0,0 +1,271 @@ +###################################################################### +package XML::DOM::NamedNodeMap; +###################################################################### + +use strict; + +use Carp; +use XML::DOM::DOMException; +use XML::DOM::NodeList; + +use vars qw( $Special ); + +# Constant definition: +# Note: a real Name should have at least 1 char, so nobody else should use this +$Special = ""; + +sub new +{ + my ($class, %args) = @_; + + $args{Values} = new XML::DOM::NodeList; + + # Store all NamedNodeMap properties in element $Special + bless { $Special => \%args}, $class; +} + +sub getNamedItem +{ + # Don't return the $Special item! + ($_[1] eq $Special) ? undef : $_[0]->{$_[1]}; +} + +sub setNamedItem +{ + my ($self, $node) = @_; + my $prop = $self->{$Special}; + + my $name = $node->getNodeName; + + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR) + if $self->isReadOnly; + + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR) + if $node->[XML::DOM::Node::_Doc] != $prop->{Doc}; + + croak new XML::DOM::DOMException (INUSE_ATTRIBUTE_ERR) + if defined ($node->[XML::DOM::Node::_UsedIn]); + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "can't add name with NodeName [$name] to NamedNodeMap") + if $name eq $Special; + } + + my $values = $prop->{Values}; + my $index = -1; + + my $prev = $self->{$name}; + if (defined $prev) + { + # decouple previous node + $prev->decoupleUsedIn; + + # find index of $prev + $index = 0; + for my $val (@{$values}) + { + last if ($val == $prev); + $index++; + } + } + + $self->{$name} = $node; + $node->[XML::DOM::Node::_UsedIn] = $self; + + if ($index == -1) + { + push (@{$values}, $node); + } + else # replace previous node with new node + { + splice (@{$values}, $index, 1, $node); + } + + $prev; +} + +sub removeNamedItem +{ + my ($self, $name) = @_; + + # Be careful that user doesn't delete $Special node! + croak new XML::DOM::DOMException (NOT_FOUND_ERR) + if $name eq $Special; + + my $node = $self->{$name}; + + croak new XML::DOM::DOMException (NOT_FOUND_ERR) + unless defined $node; + + # The DOM Spec doesn't mention this Exception - I think it's an oversight + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR) + if $self->isReadOnly; + + $node->decoupleUsedIn; + delete $self->{$name}; + + # remove node from Values list + my $values = $self->getValues; + my $index = 0; + for my $val (@{$values}) + { + if ($val == $node) + { + splice (@{$values}, $index, 1, ()); + last; + } + $index++; + } + $node; +} + +# The following 2 are really bogus. DOM should use an iterator instead (Clark) + +sub item +{ + my ($self, $item) = @_; + $self->{$Special}->{Values}->[$item]; +} + +sub getLength +{ + my ($self) = @_; + my $vals = $self->{$Special}->{Values}; + int (@$vals); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + return 0 if $XML::DOM::IgnoreReadOnly; + + my $used = $_[0]->{$Special}->{UsedIn}; + defined $used ? $used->isReadOnly : 0; +} + +sub cloneNode +{ + my ($self, $deep) = @_; + my $prop = $self->{$Special}; + + my $map = new XML::DOM::NamedNodeMap (Doc => $prop->{Doc}); + # Not copying Parent property on purpose! + + local $XML::DOM::IgnoreReadOnly = 1; # temporarily... + + for my $val (@{$prop->{Values}}) + { + my $key = $val->getNodeName; + + my $newNode = $val->cloneNode ($deep); + $newNode->[XML::DOM::Node::_UsedIn] = $map; + $map->{$key} = $newNode; + push (@{$map->{$Special}->{Values}}, $newNode); + } + + $map; +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + my $special = $self->{$Special}; + + $special->{Doc} = $doc; + for my $kid (@{$special->{Values}}) + { + $kid->setOwnerDocument ($doc); + } +} + +sub getChildIndex +{ + my ($self, $attr) = @_; + my $i = 0; + for my $kid (@{$self->{$Special}->{Values}}) + { + return $i if $kid == $attr; + $i++; + } + -1; # not found +} + +sub getValues +{ + wantarray ? @{ $_[0]->{$Special}->{Values} } : $_[0]->{$Special}->{Values}; +} + +# Remove circular dependencies. The NamedNodeMap and its values should +# not be used afterwards. +sub dispose +{ + my $self = shift; + + for my $kid (@{$self->getValues}) + { + undef $kid->[XML::DOM::Node::_UsedIn]; # was delete + $kid->dispose; + } + + delete $self->{$Special}->{Doc}; + delete $self->{$Special}->{Parent}; + delete $self->{$Special}->{Values}; + + for my $key (keys %$self) + { + delete $self->{$key}; + } +} + +sub setParentNode +{ + $_[0]->{$Special}->{Parent} = $_[1]; +} + +sub getProperty +{ + $_[0]->{$Special}->{$_[1]}; +} + +#?? remove after debugging +sub toString +{ + my ($self) = @_; + my $str = "NamedNodeMap["; + while (my ($key, $val) = each %$self) + { + if ($key eq $Special) + { + $str .= "##Special ("; + while (my ($k, $v) = each %$val) + { + if ($k eq "Values") + { + $str .= $k . " => ["; + for my $a (@$v) + { +# $str .= $a->getNodeName . "=" . $a . ","; + $str .= $a->toString . ","; + } + $str .= "], "; + } + else + { + $str .= $k . " => " . $v . ", "; + } + } + $str .= "), "; + } + else + { + $str .= $key . " => " . $val . ", "; + } + } + $str . "]"; +} + +1; # package return code diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NamedNodeMap.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NamedNodeMap.pod new file mode 100644 index 0000000000000000000000000000000000000000..62c276272a8483b0bfc2966ba7a990ae96175363 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NamedNodeMap.pod @@ -0,0 +1,130 @@ +=head1 NAME + +XML::DOM::NamedNodeMap - A hash table interface for XML::DOM + +=head1 DESCRIPTION + +Objects implementing the NamedNodeMap interface are used to represent +collections of nodes that can be accessed by name. Note that +NamedNodeMap does not inherit from NodeList; NamedNodeMaps are not +maintained in any particular order. Objects contained in an object +implementing NamedNodeMap may also be accessed by an ordinal index, but +this is simply to allow convenient enumeration of the contents of a +NamedNodeMap, and does not imply that the DOM specifies an order to +these Nodes. + +Note that in this implementation, the objects added to a NamedNodeMap +are kept in order. + +=head2 METHODS + +=over 4 + +=item getNamedItem (name) + +Retrieves a node specified by name. + +Return Value: A Node (of any type) with the specified name, or undef if +the specified name did not identify any node in the map. + +=item setNamedItem (arg) + +Adds a node using its nodeName attribute. + +As the nodeName attribute is used to derive the name which +the node must be stored under, multiple nodes of certain +types (those that have a "special" string value) cannot be +stored as the names would clash. This is seen as preferable +to allowing nodes to be aliased. + +Parameters: + I A node to store in a named node map. + +The node will later be accessible using the value of the nodeName +attribute of the node. If a node with that name is +already present in the map, it is replaced by the new one. + +Return Value: If the new Node replaces an existing node with the same +name the previously existing Node is returned, otherwise undef is returned. + +DOMExceptions: + +=over 4 + +=item * WRONG_DOCUMENT_ERR + +Raised if arg was created from a different document than the one that +created the NamedNodeMap. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this NamedNodeMap is readonly. + +=item * INUSE_ATTRIBUTE_ERR + +Raised if arg is an Attr that is already an attribute of another Element object. +The DOM user must explicitly clone Attr nodes to re-use them in other elements. + +=back + +=item removeNamedItem (name) + +Removes a node specified by name. If the removed node is an +Attr with a default value it is immediately replaced. + +Return Value: The node removed from the map or undef if no node with +such a name exists. + +DOMException: + +=over 4 + +=item * NOT_FOUND_ERR + +Raised if there is no node named name in the map. + +=back + +=item item (index) + +Returns the indexth item in the map. If index is greater than +or equal to the number of nodes in the map, this returns undef. + +Return Value: The node at the indexth position in the NamedNodeMap, or +undef if that is not a valid index. + +=item getLength + +Returns the number of nodes in the map. The range of valid child node +indices is 0 to length-1 inclusive. + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item getValues + +Returns a NodeList with the nodes contained in the NamedNodeMap. +The NodeList is "live", in that it reflects changes made to the NamedNodeMap. + +When this method is called in a list context, it returns a regular perl list +containing the values. Note that this list is not "live". E.g. + + @list = $map->getValues; # returns a perl list + $nodelist = $map->getValues; # returns a NodeList (object ref.) + for my $val ($map->getValues) # iterate over the values + +=item getChildIndex (node) + +Returns the index of the node in the NodeList as returned by getValues, or -1 +if the node is not in the NamedNodeMap. + +=item dispose + +Removes all circular references in this NamedNodeMap and its descendants so the +objects can be claimed for garbage collection. The objects should not be used +afterwards. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Node.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Node.pod new file mode 100644 index 0000000000000000000000000000000000000000..0129cc5c1cf6096c28258073a69aa69635dd8723 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Node.pod @@ -0,0 +1,451 @@ +=head1 NAME + +XML::DOM::Node - Super class of all nodes in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Node is the super class of all nodes in an XML::DOM document. +This means that all nodes that subclass XML::DOM::Node also inherit all +the methods that XML::DOM::Node implements. + +=head2 GLOBAL VARIABLES + +=over 4 + +=item @NodeNames + +The variable @XML::DOM::Node::NodeNames maps the node type constants to strings. +It is used by XML::DOM::Node::getNodeTypeName. + +=back + +=head2 METHODS + +=over 4 + +=item getNodeType + +Return an integer indicating the node type. See XML::DOM constants. + +=item getNodeName + +Return a property or a hardcoded string, depending on the node type. +Here are the corresponding functions or values: + + Attr getName + AttDef getName + AttlistDecl getName + CDATASection "#cdata-section" + Comment "#comment" + Document "#document" + DocumentType getNodeName + DocumentFragment "#document-fragment" + Element getTagName + ElementDecl getName + EntityReference getEntityName + Entity getNotationName + Notation getName + ProcessingInstruction getTarget + Text "#text" + XMLDecl "#xml-declaration" + +B: AttDef, AttlistDecl, ElementDecl and XMLDecl were added for +completeness. + +=item getNodeValue and setNodeValue (value) + +Returns a string or undef, depending on the node type. This method is provided +for completeness. In other languages it saves the programmer an upcast. +The value is either available thru some other method defined in the subclass, or +else undef is returned. Here are the corresponding methods: +Attr::getValue, Text::getData, CDATASection::getData, Comment::getData, +ProcessingInstruction::getData. + +=item getParentNode and setParentNode (parentNode) + +The parent of this node. All nodes, except Document, +DocumentFragment, and Attr may have a parent. However, if a +node has just been created and not yet added to the tree, or +if it has been removed from the tree, this is undef. + +=item getChildNodes + +A NodeList that contains all children of this node. If there +are no children, this is a NodeList containing no nodes. The +content of the returned NodeList is "live" in the sense that, +for instance, changes to the children of the node object that +it was created from are immediately reflected in the nodes +returned by the NodeList accessors; it is not a static +snapshot of the content of the node. This is true for every +NodeList, including the ones returned by the +getElementsByTagName method. + +NOTE: this implementation does not return a "live" NodeList for +getElementsByTagName. See L. + +When this method is called in a list context, it returns a regular perl list +containing the child nodes. Note that this list is not "live". E.g. + + @list = $node->getChildNodes; # returns a perl list + $nodelist = $node->getChildNodes; # returns a NodeList (object reference) + for my $kid ($node->getChildNodes) # iterate over the children of $node + +=item getFirstChild + +The first child of this node. If there is no such node, this returns undef. + +=item getLastChild + +The last child of this node. If there is no such node, this returns undef. + +=item getPreviousSibling + +The node immediately preceding this node. If there is no such +node, this returns undef. + +=item getNextSibling + +The node immediately following this node. If there is no such node, this returns +undef. + +=item getAttributes + +A NamedNodeMap containing the attributes (Attr nodes) of this node +(if it is an Element) or undef otherwise. +Note that adding/removing attributes from the returned object, also adds/removes +attributes from the Element node that the NamedNodeMap came from. + +=item getOwnerDocument + +The Document object associated with this node. This is also +the Document object used to create new nodes. When this node +is a Document this is undef. + +=item insertBefore (newChild, refChild) + +Inserts the node newChild before the existing child node +refChild. If refChild is undef, insert newChild at the end of +the list of children. + +If newChild is a DocumentFragment object, all of its children +are inserted, in the same order, before refChild. If the +newChild is already in the tree, it is first removed. + +Return Value: The node being inserted. + +DOMExceptions: + +=over 4 + +=item * HIERARCHY_REQUEST_ERR + +Raised if this node is of a type that does not allow children of the type of +the newChild node, or if the node to insert is one of this node's ancestors. + +=item * WRONG_DOCUMENT_ERR + +Raised if newChild was created from a different document than the one that +created this node. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=item * NOT_FOUND_ERR + +Raised if refChild is not a child of this node. + +=back + +=item replaceChild (newChild, oldChild) + +Replaces the child node oldChild with newChild in the list of +children, and returns the oldChild node. If the newChild is +already in the tree, it is first removed. + +Return Value: The node replaced. + +DOMExceptions: + +=over 4 + +=item * HIERARCHY_REQUEST_ERR + +Raised if this node is of a type that does not allow children of the type of +the newChild node, or it the node to put in is one of this node's ancestors. + +=item * WRONG_DOCUMENT_ERR + +Raised if newChild was created from a different document than the one that +created this node. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=item * NOT_FOUND_ERR + +Raised if oldChild is not a child of this node. + +=back + +=item removeChild (oldChild) + +Removes the child node indicated by oldChild from the list of +children, and returns it. + +Return Value: The node removed. + +DOMExceptions: + +=over 4 + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=item * NOT_FOUND_ERR + +Raised if oldChild is not a child of this node. + +=back + +=item appendChild (newChild) + +Adds the node newChild to the end of the list of children of +this node. If the newChild is already in the tree, it is +first removed. If it is a DocumentFragment object, the entire contents of +the document fragment are moved into the child list of this node + +Return Value: The node added. + +DOMExceptions: + +=over 4 + +=item * HIERARCHY_REQUEST_ERR + +Raised if this node is of a type that does not allow children of the type of +the newChild node, or if the node to append is one of this node's ancestors. + +=item * WRONG_DOCUMENT_ERR + +Raised if newChild was created from a different document than the one that +created this node. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=back + +=item hasChildNodes + +This is a convenience method to allow easy determination of +whether a node has any children. + +Return Value: 1 if the node has any children, 0 otherwise. + +=item cloneNode (deep) + +Returns a duplicate of this node, i.e., serves as a generic +copy constructor for nodes. The duplicate node has no parent +(parentNode returns undef.). + +Cloning an Element copies all attributes and their values, +including those generated by the XML processor to represent +defaulted attributes, but this method does not copy any text +it contains unless it is a deep clone, since the text is +contained in a child Text node. Cloning any other type of +node simply returns a copy of this node. + +Parameters: + I If true, recursively clone the subtree under the specified node. +If false, clone only the node itself (and its attributes, if it is an Element). + +Return Value: The duplicate node. + +=item normalize + +Puts all Text nodes in the full depth of the sub-tree +underneath this Element into a "normal" form where only +markup (e.g., tags, comments, processing instructions, CDATA +sections, and entity references) separates Text nodes, i.e., +there are no adjacent Text nodes. This can be used to ensure +that the DOM view of a document is the same as if it were +saved and re-loaded, and is useful when operations (such as +XPointer lookups) that depend on a particular document tree +structure are to be used. + +B: In the DOM Spec this method is defined in the Element and +Document class interfaces only, but it doesn't hurt to have it here... + +=item getElementsByTagName (name [, recurse]) + +Returns a NodeList of all descendant elements with a given +tag name, in the order in which they would be encountered in +a preorder traversal of the Element tree. + +Parameters: + I The name of the tag to match on. The special value "*" matches all tags. + I Whether it should return only direct child nodes (0) or any descendant that matches the tag name (1). This argument is optional and defaults to 1. It is not part of the DOM spec. + +Return Value: A list of matching Element nodes. + +NOTE: this implementation does not return a "live" NodeList for +getElementsByTagName. See L. + +When this method is called in a list context, it returns a regular perl list +containing the result nodes. E.g. + + @list = $node->getElementsByTagName("tag"); # returns a perl list + $nodelist = $node->getElementsByTagName("tag"); # returns a NodeList (object ref.) + for my $elem ($node->getElementsByTagName("tag")) # iterate over the result nodes + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item getNodeTypeName + +Return the string describing the node type. +E.g. returns "ELEMENT_NODE" if getNodeType returns ELEMENT_NODE. +It uses @XML::DOM::Node::NodeNames. + +=item toString + +Returns the entire subtree as a string. + +=item printToFile (filename) + +Prints the entire subtree to the file with the specified filename. + +Croaks: if the file could not be opened for writing. + +=item printToFileHandle (handle) + +Prints the entire subtree to the file handle. +E.g. to print to STDOUT: + + $node->printToFileHandle (\*STDOUT); + +=item print (obj) + +Prints the entire subtree using the object's print method. E.g to print to a +FileHandle object: + + $f = new FileHandle ("file.out", "w"); + $node->print ($f); + +=item getChildIndex (child) + +Returns the index of the child node in the list returned by getChildNodes. + +Return Value: the index or -1 if the node is not found. + +=item getChildAtIndex (index) + +Returns the child node at the specified index or undef. + +=item addText (text) + +Appends the specified string to the last child if it is a Text node, or else +appends a new Text node (with the specified text.) + +Return Value: the last child if it was a Text node or else the new Text node. + +=item dispose + +Removes all circular references in this node and its descendants so the +objects can be claimed for garbage collection. The objects should not be used +afterwards. + +=item setOwnerDocument (doc) + +Sets the ownerDocument property of this node and all its children (and +attributes etc.) to the specified document. +This allows the user to cut and paste document subtrees between different +XML::DOM::Documents. The node should be removed from the original document +first, before calling setOwnerDocument. + +This method does nothing when called on a Document node. + +=item isAncestor (parent) + +Returns 1 if parent is an ancestor of this node or if it is this node itself. + +=item expandEntityRefs (str) + +Expands all the entity references in the string and returns the result. +The entity references can be character references (e.g. "{" or "ῂ"), +default entity references (""", ">", "<", "'" and "&") or +entity references defined in Entity objects as part of the DocumentType of +the owning Document. Character references are expanded into UTF-8. +Parameter entity references (e.g. %ent;) are not expanded. + +=item to_sax ( %HANDLERS ) + +E.g. + + $node->to_sax (DocumentHandler => $my_handler, + Handler => $handler2 ); + +%HANDLERS may contain the following handlers: + +=over 4 + +=item * DocumentHandler + +=item * DTDHandler + +=item * EntityResolver + +=item * Handler + +Default handler when one of the above is not specified + +=back + +Each XML::DOM::Node generates the appropriate SAX callbacks (for the +appropriate SAX handler.) Different SAX handlers can be plugged in to +accomplish different things, e.g. L would check the node +(currently only Document and Element nodes are supported), L +would create a new DOM subtree (thereby, in essence, copying the Node) +and in the near future, XML::Writer could print the node. +All Perl SAX related work is still in flux, so this interface may change a +little. + +See PerlSAX for the description of the SAX interface. + +=item check ( [$checker] ) + +See descriptions for check() in L and L. + +=item xql ( @XQL_OPTIONS ) + +To use the xql method, you must first I L and L. +This method is basically a shortcut for: + + $query = new XML::XQL::Query ( @XQL_OPTIONS ); + return $query->solve ($node); + +If the first parameter in @XQL_OPTIONS is the XQL expression, you can leave off +the 'Expr' keyword, so: + + $node->xql ("doc//elem1[@attr]", @other_options); + +is identical to: + + $node->xql (Expr => "doc//elem1[@attr]", @other_options); + +See L for other available XQL_OPTIONS. +See L and L for more info. + +=item isHidden () + +Whether the node is hidden. +See L for details. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NodeList.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NodeList.pm new file mode 100644 index 0000000000000000000000000000000000000000..81aad84881cc06ade5f0232f33989f0615a21bce --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NodeList.pm @@ -0,0 +1,46 @@ +###################################################################### +package XML::DOM::NodeList; +###################################################################### + +use vars qw ( $EMPTY ); + +# Empty NodeList +$EMPTY = new XML::DOM::NodeList; + +sub new +{ + bless [], $_[0]; +} + +sub item +{ + $_[0]->[$_[1]]; +} + +sub getLength +{ + int (@{$_[0]}); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub dispose +{ + my $self = shift; + for my $kid (@{$self}) + { + $kid->dispose; + } +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + for my $kid (@{$self}) + { + $kid->setOwnerDocument ($doc); + } +} + +1; # package return code diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NodeList.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NodeList.pod new file mode 100644 index 0000000000000000000000000000000000000000..1767c5b6a0100851ffe94296eeb2e5dffbf6b70d --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/NodeList.pod @@ -0,0 +1,46 @@ +=head1 NAME + +XML::DOM::NodeList - A node list as used by XML::DOM + +=head1 DESCRIPTION + +The NodeList interface provides the abstraction of an ordered +collection of nodes, without defining or constraining how this +collection is implemented. + +The items in the NodeList are accessible via an integral index, +starting from 0. + +Although the DOM spec states that all NodeLists are "live" in that they +allways reflect changes to the DOM tree, the NodeList returned by +getElementsByTagName is not live in this implementation. See L +for details. + +=head2 METHODS + +=over 4 + +=item item (index) + +Returns the indexth item in the collection. If index is +greater than or equal to the number of nodes in the list, +this returns undef. + +=item getLength + +The number of nodes in the list. The range of valid child +node indices is 0 to length-1 inclusive. + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item dispose + +Removes all circular references in this NodeList and its descendants so the +objects can be claimed for garbage collection. The objects should not be used +afterwards. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Notation.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Notation.pod new file mode 100644 index 0000000000000000000000000000000000000000..e197a177f263805746524d3e49c1917339b53c4e --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Notation.pod @@ -0,0 +1,47 @@ +=head1 NAME + +XML::DOM::Notation - An XML NOTATION in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Notation extends L. + +This node represents a Notation, e.g. + + + + + + + + + +=head2 METHODS + +=over 4 + +=item getName and setName (name) + +Returns (or sets) the Notation name, which is the first token after the +NOTATION keyword. + +=item getSysId and setSysId (sysId) + +Returns (or sets) the system ID, which is the token after the optional +SYSTEM keyword. + +=item getPubId and setPubId (pubId) + +Returns (or sets) the public ID, which is the token after the optional +PUBLIC keyword. + +=item getBase + +This is passed by XML::Parser in the Notation handler. +I don't know what it is yet. + +=item getNodeName + +Returns the same as getName. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Parser.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Parser.pod new file mode 100644 index 0000000000000000000000000000000000000000..b8cd46ec91963eec25511df32d5e9d1f8aa1b5cb --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Parser.pod @@ -0,0 +1,67 @@ +=head1 NAME + +XML::DOM::Parser - An XML::Parser that builds XML::DOM document structures + +=head1 SYNOPSIS + + use XML::DOM; + + my $parser = new XML::DOM::Parser; + my $doc = $parser->parsefile ("file.xml"); + $doc->dispose; # Avoid memory leaks - cleanup circular references + +=head1 DESCRIPTION + +XML::DOM::Parser extends L + +The XML::Parser module was written by Clark Cooper and +is built on top of XML::Parser::Expat, +which is a lower level interface to James Clark's expat library. + +XML::DOM::Parser parses XML strings or files +and builds a data structure that conforms to the API of the Document Object +Model as described at L. +See the L manpage for other additional properties of the +XML::DOM::Parser class. +Note that the 'Style' property should not be used (it is set internally.) + +The XML::Parser B option is more or less supported, in that it will +generate EntityReference objects whenever an entity reference is encountered +in character data. I'm not sure how useful this is. Any comments are welcome. + +As described in the synopsis, when you create an XML::DOM::Parser object, +the parse and parsefile methods create an L object +from the specified input. This Document object can then be examined, modified and +written back out to a file or converted to a string. + +When using XML::DOM with XML::Parser version 2.19 and up, setting the +XML::DOM::Parser option B to 1 will store CDATASections in +CDATASection nodes, instead of converting them to Text nodes. +Subsequent CDATASection nodes will be merged into one. Let me know if this +is a problem. + +=head1 Using LWP to parse URLs + +The parsefile() method now also supports URLs, e.g. I. +It uses LWP to download the file and then calls parse() on the resulting string. +By default it will use a L that is created as follows: + + use LWP::UserAgent; + $LWP_USER_AGENT = LWP::UserAgent->new; + $LWP_USER_AGENT->env_proxy; + +Note that env_proxy reads proxy settings from environment variables, which is what I need to +do to get thru our firewall. If you want to use a different LWP::UserAgent, you can either set +it globally with: + + XML::DOM::Parser::set_LWP_UserAgent ($my_agent); + +or, you can specify it for a specific XML::DOM::Parser by passing it to the constructor: + + my $parser = new XML::DOM::Parser (LWP_UserAgent => $my_agent); + +Currently, LWP is used when the filename (passed to parsefile) starts with one of +the following URL schemes: http, https, ftp, wais, gopher, or file (followed by a colon.) +If I missed one, please let me know. + +The LWP modules are part of libwww-perl which is available at CPAN. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/PerlSAX.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/PerlSAX.pm new file mode 100644 index 0000000000000000000000000000000000000000..f025cce0afdeb00a79a7c1d72cb522e1131062c0 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/PerlSAX.pm @@ -0,0 +1,47 @@ +package XML::DOM::PerlSAX; +use strict; + +BEGIN +{ + if ($^W) + { + warn "XML::DOM::PerlSAX has been renamed to XML::Handler::BuildDOM, please modify your code accordingly."; + } +} + +use XML::Handler::BuildDOM; +use vars qw{ @ISA }; +@ISA = qw{ XML::Handler::BuildDOM }; + +1; # package return code + +__END__ + +=head1 NAME + +XML::DOM::PerlSAX - Old name of L + +=head1 SYNOPSIS + + See L + +=head1 DESCRIPTION + +XML::DOM::PerlSAX was renamed to L to comply +with naming conventions for PerlSAX filters/handlers. + +For backward compatibility, this package will remain in existence +(it simply includes XML::Handler::BuildDOM), but it will print a warning when +running with I<'perl -w'>. + +=head1 AUTHOR + +Enno Derksen is the original author. + +Send bug reports, hints, tips, suggestions to T.J Mather at +>. + +=head1 SEE ALSO + +L, L + diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/ProcessingInstruction.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/ProcessingInstruction.pod new file mode 100644 index 0000000000000000000000000000000000000000..9bedf175ed9ceaf6f4c9d8ac748b2cab80af2e09 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/ProcessingInstruction.pod @@ -0,0 +1,32 @@ +=head1 NAME + +XML::DOM::ProcessingInstruction - An XML processing instruction in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::ProcessingInstruction extends L. + +It represents a "processing instruction", used in XML as a way to keep +processor-specific information in the text of the document. An example: + + + +Here, "PI" is the target and "processing instruction" is the data. + +=head2 METHODS + +=over 4 + +=item getTarget + +The target of this processing instruction. XML defines this +as being the first token following the markup that begins the +processing instruction. + +=item getData and setData (data) + +The content of this processing instruction. This is from the +first non white space character after the target to the +character immediately preceding the ?>. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Text.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Text.pod new file mode 100644 index 0000000000000000000000000000000000000000..b86f1ea784767ed521100f4a721b19d3b1a595c7 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/Text.pod @@ -0,0 +1,60 @@ +=head1 NAME + +XML::DOM::Text - A piece of XML text in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Text extends L, which extends +L. + +The Text interface represents the textual content (termed character +data in XML) of an Element or Attr. If there is no markup inside an +element's content, the text is contained in a single object +implementing the Text interface that is the only child of the element. +If there is markup, it is parsed into a list of elements and Text nodes +that form the list of children of the element. + +When a document is first made available via the DOM, there is only one +Text node for each block of text. Users may create adjacent Text nodes +that represent the contents of a given element without any intervening +markup, but should be aware that there is no way to represent the +separations between these nodes in XML or HTML, so they will not (in +general) persist between DOM editing sessions. The normalize() method +on Element merges any such adjacent Text objects into a single node for +each block of text; this is recommended before employing operations +that depend on a particular document structure, such as navigation with +XPointers. + +=head2 METHODS + +=over 4 + +=item splitText (offset) + +Breaks this Text node into two Text nodes at the specified +offset, keeping both in the tree as siblings. This node then +only contains all the content up to the offset point. And a +new Text node, which is inserted as the next sibling of this +node, contains all the content at and after the offset point. + +Parameters: + I The offset at which to split, starting from 0. + +Return Value: The new Text node. + +DOMExceptions: + +=over 4 + +=item * INDEX_SIZE_ERR + +Raised if the specified offset is negative or greater than the number of +characters in data. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=back + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/XMLDecl.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/XMLDecl.pod new file mode 100644 index 0000000000000000000000000000000000000000..f6e6a3a48a1fd8d961f356e89dc77adb782b02da --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/DOM/XMLDecl.pod @@ -0,0 +1,33 @@ +=head1 NAME + +XML::DOM::XMLDecl - XML declaration in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::XMLDecl extends L, but is not part of the DOM Level 1 +specification. + +It contains the XML declaration, e.g. + + + +See also XML::DOM::Document::getXMLDecl. + +=head2 METHODS + +=over 4 + +=item getVersion and setVersion (version) + +Returns and sets the XML version. At the time of this writing the version should +always be "1.0" + +=item getEncoding and setEncoding (encoding) + +undef may be specified for the encoding value. + +=item getStandalone and setStandalone (standalone) + +undef may be specified for the standalone value. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/Handler/BuildDOM.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/Handler/BuildDOM.pm new file mode 100644 index 0000000000000000000000000000000000000000..e124f47ee4923ddb1181c5b881218e55313d106f --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/XML/Handler/BuildDOM.pm @@ -0,0 +1,338 @@ +package XML::Handler::BuildDOM; +use strict; +use XML::DOM; + +# +# TODO: +# - add support for parameter entity references +# - expand API: insert Elements in the tree or stuff into DocType etc. + +sub new +{ + my ($class, %args) = @_; + bless \%args, $class; +} + +#-------- PerlSAX Handler methods ------------------------------ + +sub start_document # was Init +{ + my $self = shift; + + # Define Document if it's not set & not obtainable from Element or DocType + $self->{Document} ||= + (defined $self->{Element} ? $self->{Element}->getOwnerDocument : undef) + || (defined $self->{DocType} ? $self->{DocType}->getOwnerDocument : undef) + || new XML::DOM::Document(); + + $self->{Element} ||= $self->{Document}; + + unless (defined $self->{DocType}) + { + $self->{DocType} = $self->{Document}->getDoctype + if defined $self->{Document}; + + unless (defined $self->{Doctype}) + { +#?? should be $doc->createDocType for extensibility! + $self->{DocType} = new XML::DOM::DocumentType ($self->{Document}); + $self->{Document}->setDoctype ($self->{DocType}); + } + } + + # Prepare for document prolog + $self->{InProlog} = 1; + + # We haven't passed the root element yet + $self->{EndDoc} = 0; + + undef $self->{LastText}; +} + +sub end_document # was Final +{ + my $self = shift; + unless ($self->{SawDocType}) + { + my $doctype = $self->{Document}->removeDoctype; + $doctype->dispose; +#?? do we always want to destroy the Doctype? + } + $self->{Document}; +} + +sub characters # was Char +{ + my $self = $_[0]; + my $str = $_[1]->{Data}; + + if ($self->{InCDATA} && $self->{KeepCDATA}) + { + undef $self->{LastText}; + # Merge text with previous node if possible + $self->{Element}->addCDATA ($str); + } + else + { + # Merge text with previous node if possible + # Used to be: $expat->{DOM_Element}->addText ($str); + if ($self->{LastText}) + { + $self->{LastText}->appendData ($str); + } + else + { + $self->{LastText} = $self->{Document}->createTextNode ($str); + $self->{Element}->appendChild ($self->{LastText}); + } + } +} + +sub start_element # was Start +{ + my ($self, $hash) = @_; + my $elem = $hash->{Name}; + my $attr = $hash->{Attributes}; + + my $parent = $self->{Element}; + my $doc = $self->{Document}; + + if ($parent == $doc) + { + # End of document prolog, i.e. start of first Element + $self->{InProlog} = 0; + } + + undef $self->{LastText}; + my $node = $doc->createElement ($elem); + $self->{Element} = $node; + $parent->appendChild ($node); + + my $i = 0; + my $n = scalar keys %$attr; + return unless $n; + + if (exists $hash->{AttributeOrder}) + { + my $defaulted = $hash->{Defaulted}; + my @order = @{ $hash->{AttributeOrder} }; + + # Specified attributes + for (my $i = 0; $i < $defaulted; $i++) + { + my $a = $order[$i]; + my $att = $doc->createAttribute ($a, $attr->{$a}, 1); + $node->setAttributeNode ($att); + } + + # Defaulted attributes + for (my $i = $defaulted; $i < @order; $i++) + { + my $a = $order[$i]; + my $att = $doc->createAttribute ($elem, $attr->{$a}, 0); + $node->setAttributeNode ($att); + } + } + else + { + # We're assuming that all attributes were specified (1) + for my $a (keys %$attr) + { + my $att = $doc->createAttribute ($a, $attr->{$a}, 1); + $node->setAttributeNode ($att); + } + } +} + +sub end_element +{ + my $self = shift; + $self->{Element} = $self->{Element}->getParentNode; + undef $self->{LastText}; + + # Check for end of root element + $self->{EndDoc} = 1 if ($self->{Element} == $self->{Document}); +} + +sub entity_reference # was Default +{ + my $self = $_[0]; + my $name = $_[1]->{Name}; + + $self->{Element}->appendChild ( + $self->{Document}->createEntityReference ($name)); + undef $self->{LastText}; +} + +sub start_cdata +{ + my $self = shift; + $self->{InCDATA} = 1; +} + +sub end_cdata +{ + my $self = shift; + $self->{InCDATA} = 0; +} + +sub comment +{ + my $self = $_[0]; + + local $XML::DOM::IgnoreReadOnly = 1; + + undef $self->{LastText}; + my $comment = $self->{Document}->createComment ($_[1]->{Data}); + $self->{Element}->appendChild ($comment); +} + +sub doctype_decl +{ + my ($self, $hash) = @_; + + $self->{DocType}->setParams ($hash->{Name}, $hash->{SystemId}, + $hash->{PublicId}, $hash->{Internal}); + $self->{SawDocType} = 1; +} + +sub attlist_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + $self->{DocType}->addAttDef ($hash->{ElementName}, + $hash->{AttributeName}, + $hash->{Type}, + $hash->{Default}, + $hash->{Fixed}); +} + +sub xml_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + undef $self->{LastText}; + $self->{Document}->setXMLDecl (new XML::DOM::XMLDecl ($self->{Document}, + $hash->{Version}, + $hash->{Encoding}, + $hash->{Standalone})); +} + +sub entity_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + # Parameter Entities names are passed starting with '%' + my $parameter = 0; + +#?? parameter entities currently not supported by PerlSAX! + + undef $self->{LastText}; + $self->{DocType}->addEntity ($parameter, $hash->{Name}, $hash->{Value}, + $hash->{SystemId}, $hash->{PublicId}, + $hash->{Notation}); +} + +# Unparsed is called when it encounters e.g: +# +# +# +sub unparsed_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + # same as regular ENTITY, as far as DOM is concerned + $self->entity_decl ($hash); +} + +sub element_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + undef $self->{LastText}; + $self->{DocType}->addElementDecl ($hash->{Name}, $hash->{Model}); +} + +sub notation_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + undef $self->{LastText}; + $self->{DocType}->addNotation ($hash->{Name}, $hash->{Base}, + $hash->{SystemId}, $hash->{PublicId}); +} + +sub processing_instruction +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + undef $self->{LastText}; + $self->{Element}->appendChild (new XML::DOM::ProcessingInstruction + ($self->{Document}, $hash->{Target}, $hash->{Data})); +} + +return 1; + +__END__ + +=head1 NAME + +XML::Handler::BuildDOM - PerlSAX handler that creates XML::DOM document structures + +=head1 SYNOPSIS + + use XML::Handler::BuildDOM; + use XML::Parser::PerlSAX; + + my $handler = new XML::Handler::BuildDOM (KeepCDATA => 1); + my $parser = new XML::Parser::PerlSAX (Handler => $handler); + + my $doc = $parser->parsefile ("file.xml"); + +=head1 DESCRIPTION + +XML::Handler::BuildDOM creates L document structures +(i.e. L) from PerlSAX events. + +This class used to be called L prior to libxml-enno 1.0.1. + +=head2 CONSTRUCTOR OPTIONS + +The XML::Handler::BuildDOM constructor supports the following options: + +=over 4 + +=item * KeepCDATA => 1 + +If set to 0 (default), CDATASections will be converted to regular text. + +=item * Document => $doc + +If undefined, start_document will extract it from Element or DocType (if set), +otherwise it will create a new XML::DOM::Document. + +=item * Element => $elem + +If undefined, it is set to Document. This will be the insertion point (or parent) +for the nodes defined by the following callbacks. + +=item * DocType => $doctype + +If undefined, start_document will extract it from Document (if possible). +Otherwise it adds a new XML::DOM::DocumentType to the Document. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/auto/XML/DOM/.exists b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/lib/auto/XML/DOM/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man1/.exists b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man1/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/.exists b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM.3pm new file mode 100644 index 0000000000000000000000000000000000000000..bd8a5bfc0114690e4ddf1e91cbbb4aae3092fac9 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM.3pm @@ -0,0 +1,468 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM 3pm" +.TH XML::DOM 3pm "2016-09-21" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM \- A perl module for building DOM Level 1 compliant document structures +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& use XML::DOM; +\& +\& my $parser = new XML::DOM::Parser; +\& my $doc = $parser\->parsefile ("file.xml"); +\& +\& # print all HREF attributes of all CODEBASE elements +\& my $nodes = $doc\->getElementsByTagName ("CODEBASE"); +\& my $n = $nodes\->getLength; +\& +\& for (my $i = 0; $i < $n; $i++) +\& { +\& my $node = $nodes\->item ($i); +\& my $href = $node\->getAttributeNode ("HREF"); +\& print $href\->getValue . "\en"; +\& } +\& +\& # Print doc file +\& $doc\->printToFile ("out.xml"); +\& +\& # Print to string +\& print $doc\->toString; +\& +\& # Avoid memory leaks \- cleanup circular references for garbage collection +\& $doc\->dispose; +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +This module extends the XML::Parser module by Clark Cooper. +The XML::Parser module is built on top of XML::Parser::Expat, +which is a lower level interface to James Clark's expat library. +.PP +XML::DOM::Parser is derived from XML::Parser. It parses \s-1XML\s0 strings or files +and builds a data structure that conforms to the \s-1API\s0 of the Document Object +Model as described at http://www.w3.org/TR/REC\-DOM\-Level\-1. +See the XML::Parser manpage for other available features of the +XML::DOM::Parser class. +Note that the 'Style' property should not be used (it is set internally.) +.PP +The XML::Parser \fINoExpand\fR option is more or less supported, in that it will +generate EntityReference objects whenever an entity reference is encountered +in character data. I'm not sure how useful this is. Any comments are welcome. +.PP +As described in the synopsis, when you create an XML::DOM::Parser object, +the parse and parsefile methods create an \fIXML::DOM::Document\fR object +from the specified input. This Document object can then be examined, modified and +written back out to a file or converted to a string. +.PP +When using \s-1XML::DOM\s0 with XML::Parser version 2.19 and up, setting the +XML::DOM::Parser option \fIKeepCDATA\fR to 1 will store CDATASections in +CDATASection nodes, instead of converting them to Text nodes. +Subsequent CDATASection nodes will be merged into one. Let me know if this +is a problem. +.PP +When using XML::Parser 2.27 and above, you can suppress expansion of +parameter entity references (e.g. \f(CW%pent\fR;) in the \s-1DTD,\s0 by setting \fIParseParamEnt\fR +to 1 and \fIExpandParamEnt\fR to 0. See Hidden Nodes for details. +.PP +A Document has a tree structure consisting of \fINode\fR objects. A Node may contain +other nodes, depending on its type. +A Document may have Element, Text, Comment, and CDATASection nodes. +Element nodes may have Attr, Element, Text, Comment, and CDATASection nodes. +The other nodes may not have any child nodes. +.PP +This module adds several node types that are not part of the \s-1DOM\s0 spec (yet.) +These are: ElementDecl (for declarations), AttlistDecl (for + declarations), XMLDecl (for declarations) and AttDef +(for attribute definitions in an AttlistDecl.) +.SH "XML::DOM Classes" +.IX Header "XML::DOM Classes" +The \s-1XML::DOM\s0 module stores \s-1XML\s0 documents in a tree structure with a root node +of type XML::DOM::Document. Different nodes in tree represent different +parts of the \s-1XML\s0 file. The \s-1DOM\s0 Level 1 Specification defines the following +node types: +.IP "\(bu" 4 +XML::DOM::Node \- Super class of all node types +.IP "\(bu" 4 +XML::DOM::Document \- The root of the \s-1XML\s0 document +.IP "\(bu" 4 +XML::DOM::DocumentType \- Describes the document structure: +.IP "\(bu" 4 +XML::DOM::Element \- An \s-1XML\s0 element: ... +.IP "\(bu" 4 +XML::DOM::Attr \- An \s-1XML\s0 element attribute: name=\*(L"value\*(R" +.IP "\(bu" 4 +XML::DOM::CharacterData \- Super class of Text, Comment and CDATASection +.IP "\(bu" 4 +XML::DOM::Text \- Text in an \s-1XML\s0 element +.IP "\(bu" 4 +XML::DOM::CDATASection \- Escaped block of text: +.IP "\(bu" 4 +XML::DOM::Comment \- An \s-1XML\s0 comment: +.IP "\(bu" 4 +XML::DOM::EntityReference \- Refers to an \s-1ENTITY:\s0 &ent; or \f(CW%ent\fR; +.IP "\(bu" 4 +XML::DOM::Entity \- An \s-1ENTITY\s0 definition: +.IP "\(bu" 4 +XML::DOM::ProcessingInstruction \- +.IP "\(bu" 4 +XML::DOM::DocumentFragment \- Lightweight node for cut & paste +.IP "\(bu" 4 +XML::DOM::Notation \- An \s-1NOTATION\s0 definition: +.PP +In addition, the \s-1XML::DOM\s0 module contains the following nodes that are not part +of the \s-1DOM\s0 Level 1 Specification: +.IP "\(bu" 4 +XML::DOM::ElementDecl \- Defines an element: +.IP "\(bu" 4 +XML::DOM::AttlistDecl \- Defines one or more attributes in an +.IP "\(bu" 4 +XML::DOM::AttDef \- Defines one attribute in an +.IP "\(bu" 4 +XML::DOM::XMLDecl \- An \s-1XML\s0 declaration: +.PP +Other classes that are part of the \s-1DOM\s0 Level 1 Spec: +.IP "\(bu" 4 +XML::DOM::Implementation \- Provides information about this implementation. Currently it doesn't do much. +.IP "\(bu" 4 +XML::DOM::NodeList \- Used internally to store a node's child nodes. Also returned by getElementsByTagName. +.IP "\(bu" 4 +XML::DOM::NamedNodeMap \- Used internally to store an element's attributes. +.PP +Other classes that are not part of the \s-1DOM\s0 Level 1 Spec: +.IP "\(bu" 4 +XML::DOM::Parser \- An non-validating \s-1XML\s0 parser that creates XML::DOM::Documents +.IP "\(bu" 4 +XML::DOM::ValParser \- A validating \s-1XML\s0 parser that creates XML::DOM::Documents. It uses XML::Checker to check against the DocumentType (\s-1DTD\s0) +.IP "\(bu" 4 +XML::Handler::BuildDOM \- A PerlSAX handler that creates XML::DOM::Documents. +.SH "XML::DOM package" +.IX Header "XML::DOM package" +.IP "Constant definitions" 4 +.IX Item "Constant definitions" +The following predefined constants indicate which type of node it is. +.PP +.Vb 1 +\& UNKNOWN_NODE (0) The node type is unknown (not part of DOM) +\& +\& ELEMENT_NODE (1) The node is an Element. +\& ATTRIBUTE_NODE (2) The node is an Attr. +\& TEXT_NODE (3) The node is a Text node. +\& CDATA_SECTION_NODE (4) The node is a CDATASection. +\& ENTITY_REFERENCE_NODE (5) The node is an EntityReference. +\& ENTITY_NODE (6) The node is an Entity. +\& PROCESSING_INSTRUCTION_NODE (7) The node is a ProcessingInstruction. +\& COMMENT_NODE (8) The node is a Comment. +\& DOCUMENT_NODE (9) The node is a Document. +\& DOCUMENT_TYPE_NODE (10) The node is a DocumentType. +\& DOCUMENT_FRAGMENT_NODE (11) The node is a DocumentFragment. +\& NOTATION_NODE (12) The node is a Notation. +\& +\& ELEMENT_DECL_NODE (13) The node is an ElementDecl (not part of DOM) +\& ATT_DEF_NODE (14) The node is an AttDef (not part of DOM) +\& XML_DECL_NODE (15) The node is an XMLDecl (not part of DOM) +\& ATTLIST_DECL_NODE (16) The node is an AttlistDecl (not part of DOM) +\& +\& Usage: +\& +\& if ($node\->getNodeType == ELEMENT_NODE) +\& { +\& print "It\*(Aqs an Element"; +\& } +.Ve +.PP +\&\fBNot In \s-1DOM\s0 Spec\fR: The \s-1DOM\s0 Spec does not mention \s-1UNKNOWN_NODE\s0 and, +quite frankly, you should never encounter it. The last 4 node types were added +to support the 4 added node classes. +.SS "Global Variables" +.IX Subsection "Global Variables" +.ie n .IP "$VERSION" 4 +.el .IP "\f(CW$VERSION\fR" 4 +.IX Item "$VERSION" +The variable \f(CW$XML::DOM::VERSION\fR contains the version number of this +implementation, e.g. \*(L"1.43\*(R". +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +These methods are not part of the \s-1DOM\s0 Level 1 Specification. +.IP "getIgnoreReadOnly and ignoreReadOnly (readOnly)" 4 +.IX Item "getIgnoreReadOnly and ignoreReadOnly (readOnly)" +The \s-1DOM\s0 Level 1 Spec does not allow you to edit certain sections of the document, +e.g. the DocumentType, so by default this implementation throws DOMExceptions +(i.e. \s-1NO_MODIFICATION_ALLOWED_ERR\s0) when you try to edit a readonly node. +These readonly checks can be disabled by (temporarily) setting the global +IgnoreReadOnly flag. +.Sp +The ignoreReadOnly method sets the global IgnoreReadOnly flag and returns its +previous value. The getIgnoreReadOnly method simply returns its current value. +.Sp +.Vb 5 +\& my $oldIgnore = XML::DOM::ignoreReadOnly (1); +\& eval { +\& ... do whatever you want, catching any other exceptions ... +\& }; +\& XML::DOM::ignoreReadOnly ($oldIgnore); # restore previous value +.Ve +.Sp +Another way to do it, using a local variable: +.Sp +.Vb 4 +\& { # start new scope +\& local $XML::DOM::IgnoreReadOnly = 1; +\& ... do whatever you want, don\*(Aqt worry about exceptions ... +\& } # end of scope ($IgnoreReadOnly is set back to its previous value) +.Ve +.IP "isValidName (name)" 4 +.IX Item "isValidName (name)" +Whether the specified name is a valid \*(L"Name\*(R" as specified in the \s-1XML\s0 spec. +Characters with Unicode values > 127 are now also supported. +.IP "getAllowReservedNames and allowReservedNames (boolean)" 4 +.IX Item "getAllowReservedNames and allowReservedNames (boolean)" +The first method returns whether reserved names are allowed. +The second takes a boolean argument and sets whether reserved names are allowed. +The initial value is 1 (i.e. allow reserved names.) +.Sp +The \s-1XML\s0 spec states that \*(L"Names\*(R" starting with (X|x)(M|m)(L|l) +are reserved for future use. (Amusingly enough, the \s-1XML\s0 version of the \s-1XML\s0 spec +(REC\-xml\-19980210.xml) breaks that very rule by defining an \s-1ENTITY\s0 with the name +\&'xmlpio'.) +A \*(L"Name\*(R" in this context means the Name token as found in the \s-1BNF\s0 rules in the +\&\s-1XML\s0 spec. +.Sp +\&\s-1XML::DOM\s0 only checks for errors when you modify the \s-1DOM\s0 tree, not when the +\&\s-1DOM\s0 tree is built by the XML::DOM::Parser. +.IP "setTagCompression (funcref)" 4 +.IX Item "setTagCompression (funcref)" +There are 3 possible styles for printing empty Element tags: +.RS 4 +.IP "Style 0" 4 +.IX Item "Style 0" +.Vb 1 +\& or +.Ve +.Sp +\&\s-1XML::DOM\s0 uses this style by default for all Elements. +.IP "Style 1" 4 +.IX Item "Style 1" +.Vb 1 +\& or +.Ve +.IP "Style 2" 4 +.IX Item "Style 2" +.Vb 1 +\& or +.Ve +.Sp +This style is sometimes desired when using \s-1XHTML. +\&\s0(Note the extra space before the slash \*(L"/\*(R") +See Appendix C for more details. +.RE +.RS 4 +.Sp +By default \s-1XML::DOM\s0 compresses all empty Element tags (style 0.) +You can control which style is used for a particular Element by calling +XML::DOM::setTagCompression with a reference to a function that takes +2 arguments. The first is the tag name of the Element, the second is the +XML::DOM::Element that is being printed. +The function should return 0, 1 or 2 to indicate which style should be used to +print the empty tag. E.g. +.Sp +.Vb 1 +\& XML::DOM::setTagCompression (\e&my_tag_compression); +\& +\& sub my_tag_compression +\& { +\& my ($tag, $elem) = @_; +\& +\& # Print empty br, hr and img tags like this:
+\& return 2 if $tag =~ /^(br|hr|img)$/; +\& +\& # Print other empty tags like this: +\& return 1; +\& } +.Ve +.RE +.SH "IMPLEMENTATION DETAILS" +.IX Header "IMPLEMENTATION DETAILS" +.IP "\(bu" 4 +Perl Mappings +.Sp +The value undef was used when the \s-1DOM\s0 Spec said null. +.Sp +The \s-1DOM\s0 Spec says: Applications must encode DOMString using \s-1UTF\-16 \s0(defined in +Appendix C.3 of [\s-1UNICODE\s0] and Amendment 1 of [\s-1ISO\-10646\s0]). +In this implementation we use plain old Perl strings encoded in \s-1UTF\-8\s0 instead of +\&\s-1UTF\-16.\s0 +.IP "\(bu" 4 +Text and CDATASection nodes +.Sp +The Expat parser expands EntityReferences and CDataSection sections to +raw strings and does not indicate where it was found. +This implementation does therefore convert both to Text nodes at parse time. +CDATASection and EntityReference nodes that are added to an existing Document +(by the user) will be preserved. +.Sp +Also, subsequent Text nodes are always merged at parse time. Text nodes that are +added later can be merged with the normalize method. Consider using the addText +method when adding Text nodes. +.IP "\(bu" 4 +Printing and toString +.Sp +When printing (and converting an \s-1XML\s0 Document to a string) the strings have to +encoded differently depending on where they occur. E.g. in a CDATASection all +substrings are allowed except for \*(L"]]>\*(R". In regular text, certain characters are +not allowed, e.g. \*(L">\*(R" has to be converted to \*(L">\*(R". +These routines should be verified by someone who knows the details. +.IP "\(bu" 4 +Quotes +.Sp +Certain sections in \s-1XML\s0 are quoted, like attribute values in an Element. +XML::Parser strips these quotes and the print methods in this implementation +always uses double quotes, so when parsing and printing a document, single quotes +may be converted to double quotes. The default value of an attribute definition +(AttDef) in an AttlistDecl, however, will maintain its quotes. +.IP "\(bu" 4 +AttlistDecl +.Sp +Attribute declarations for a certain Element are always merged into a single +AttlistDecl object. +.IP "\(bu" 4 +Comments +.Sp +Comments in the \s-1DOCTYPE\s0 section are not kept in the right place. They will become +child nodes of the Document. +.IP "\(bu" 4 +Hidden Nodes +.Sp +Previous versions of \s-1XML::DOM\s0 would expand parameter entity references +(like \fB\f(CB%pent\fB;\fR), so when printing the \s-1DTD,\s0 it would print the contents +of the external entity, instead of the parameter entity reference. +With this release (1.27), you can prevent this by setting the XML::DOM::Parser +options ParseParamEnt => 1 and ExpandParamEnt => 0. +.Sp +When it is parsing the contents of the external entities, it *DOES* still add +the nodes to the DocumentType, but it marks these nodes by setting +the 'Hidden' property. In addition, it adds an EntityReference node to the +DocumentType node. +.Sp +When printing the DocumentType node (or when using \fIto_expat()\fR or \fIto_sax()\fR), +the 'Hidden' nodes are suppressed, so you will see the parameter entity +reference instead of the contents of the external entities. See test case +t/dom_extent.t for an example. +.Sp +The reason for adding the 'Hidden' nodes to the DocumentType node, is that +the nodes may contain definitions that are referenced further +in the document. (Simply not adding the nodes to the DocumentType could +cause such entity references to be expanded incorrectly.) +.Sp +Note that you need XML::Parser 2.27 or higher for this to work correctly. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +XML::DOM::XPath +.PP +The Japanese version of this document by Takanori Kawai (Hippo2000) +at +.PP +The \s-1DOM\s0 Level 1 specification at +.PP +The \s-1XML\s0 spec (Extensible Markup Language 1.0) at +.PP +The XML::Parser and XML::Parser::Expat manual pages. +.PP +XML::LibXML also provides a \s-1DOM\s0 Parser, and is significantly faster +than \s-1XML::DOM,\s0 and is under active development. It requires that you +download the Gnome libxml library. +.PP +\&\s-1XML::GDOME\s0 will provide the \s-1DOM\s0 Level 2 Core \s-1API,\s0 and should be +as fast as XML::LibXML, but more robust, since it uses the memory +management functions of libgdome. For more details see + +.SH "CAVEATS" +.IX Header "CAVEATS" +The method \fIgetElementsByTagName()\fR does not return a \*(L"live\*(R" NodeList. +Whether this is an actual caveat is debatable, but a few people on the +www-dom mailing list seemed to think so. I haven't decided yet. It's a pain +to implement, it slows things down and the benefits seem marginal. +Let me know what you think. +.SH "AUTHOR" +.IX Header "AUTHOR" +Enno Derksen is the original author. +.PP +Send patches to T.J. Mather at <\fItjmather@maxmind.com\fR>. +.PP +Paid support is available from directly from the maintainers of this package. +Please see for more details. +.PP +Thanks to Clark Cooper for his help with the initial version. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__AttDef.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__AttDef.3pm new file mode 100644 index 0000000000000000000000000000000000000000..9075fb88d52b256986b7d3ad8055cf40dc9d1151 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__AttDef.3pm @@ -0,0 +1,103 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::AttDef 3pm" +.TH XML::DOM::AttDef 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::AttDef \- A single XML attribute definition in an ATTLIST in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::AttDef extends XML::DOM::Node, but is not part of the \s-1DOM\s0 Level 1 +specification. +.PP +Each object of this class represents one attribute definition in an AttlistDecl. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getName" 4 +.IX Item "getName" +Returns the attribute name. +.IP "getDefault" 4 +.IX Item "getDefault" +Returns the default value, or undef. +.IP "isFixed" 4 +.IX Item "isFixed" +Whether the attribute value is fixed (see #FIXED keyword.) +.IP "isRequired" 4 +.IX Item "isRequired" +Whether the attribute value is required (see #REQUIRED keyword.) +.IP "isImplied" 4 +.IX Item "isImplied" +Whether the attribute value is implied (see #IMPLIED keyword.) diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__AttlistDecl.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__AttlistDecl.3pm new file mode 100644 index 0000000000000000000000000000000000000000..2f6d7b2e2ce9e10be00c756d4ed7e6ce5208ebd2 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__AttlistDecl.3pm @@ -0,0 +1,116 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::AttlistDecl 3pm" +.TH XML::DOM::AttlistDecl 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::AttlistDecl \- An XML ATTLIST declaration in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::AttlistDecl extends XML::DOM::Node but is not part of the +\&\s-1DOM\s0 Level 1 specification. +.PP +This node represents an \s-1ATTLIST\s0 declaration, e.g. +.PP +.Vb 5 +\& +.Ve +.PP +Each attribute definition is stored a separate AttDef node. The AttDef nodes can +be retrieved with getAttDef and added with addAttDef. +(The AttDef nodes are stored in a NamedNodeMap internally.) +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getName" 4 +.IX Item "getName" +Returns the Element tagName. +.IP "getAttDef (attrName)" 4 +.IX Item "getAttDef (attrName)" +Returns the AttDef node for the attribute with the specified name. +.IP "addAttDef (attrName, type, default, [ fixed ])" 4 +.IX Item "addAttDef (attrName, type, default, [ fixed ])" +Adds a AttDef node for the attribute with the specified name. +.Sp +Parameters: + \fIattrName\fR the attribute name. + \fItype\fR the attribute type (e.g. \*(L"\s-1CDATA\*(R"\s0 or \*(L"(male|female)\*(R".) + \fIdefault\fR the default value enclosed in quotes (!), the string #IMPLIED or + the string #REQUIRED. + \fIfixed\fR whether the attribute is '#FIXED' (default is 0.) diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Attr.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Attr.3pm new file mode 100644 index 0000000000000000000000000000000000000000..f5bf7649d106d3edb41ca729097822fbc8744336 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Attr.3pm @@ -0,0 +1,136 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::Attr 3pm" +.TH XML::DOM::Attr 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::Attr \- An XML attribute in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::Attr extends XML::DOM::Node. +.PP +The Attr nodes built by the XML::DOM::Parser always have one child node +which is a Text node containing the expanded string value (i.e. EntityReferences +are always expanded.) EntityReferences may be added when modifying or creating +a new Document. +.PP +The Attr interface represents an attribute in an Element object. +Typically the allowable values for the attribute are defined in a +document type definition. +.PP +Attr objects inherit the Node interface, but since they are not +actually child nodes of the element they describe, the \s-1DOM\s0 does not +consider them part of the document tree. Thus, the Node attributes +parentNode, previousSibling, and nextSibling have a undef value for Attr +objects. The \s-1DOM\s0 takes the view that attributes are properties of +elements rather than having a separate identity from the elements they +are associated with; this should make it more efficient to implement +such features as default attributes associated with all elements of a +given type. Furthermore, Attr nodes may not be immediate children of a +DocumentFragment. However, they can be associated with Element nodes +contained within a DocumentFragment. In short, users and implementors +of the \s-1DOM\s0 need to be aware that Attr nodes have some things in common +with other objects inheriting the Node interface, but they also are +quite distinct. +.PP +The attribute's effective value is determined as follows: if this +attribute has been explicitly assigned any value, that value is the +attribute's effective value; otherwise, if there is a declaration for +this attribute, and that declaration includes a default value, then +that default value is the attribute's effective value; otherwise, the +attribute does not exist on this element in the structure model until +it has been explicitly added. Note that the nodeValue attribute on the +Attr instance can also be used to retrieve the string version of the +attribute's value(s). +.PP +In \s-1XML,\s0 where the value of an attribute can contain entity references, +the child nodes of the Attr node provide a representation in which +entity references are not expanded. These child nodes may be either +Text or EntityReference nodes. Because the attribute type may be +unknown, there are no tokenized attribute values. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getValue" 4 +.IX Item "getValue" +On retrieval, the value of the attribute is returned as a string. +Character and general entity references are replaced with their values. +.IP "setValue (str)" 4 +.IX Item "setValue (str)" +\&\s-1DOM\s0 Spec: On setting, this creates a Text node with the unparsed contents of the +string. +.IP "getName" 4 +.IX Item "getName" +Returns the name of this attribute. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__CDATASection.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__CDATASection.3pm new file mode 100644 index 0000000000000000000000000000000000000000..7152ebaa2dcc06b40cfd90f13beb28ab42d3a6ab --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__CDATASection.3pm @@ -0,0 +1,105 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::CDATASection 3pm" +.TH XML::DOM::CDATASection 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::CDATASection \- Escaping XML text blocks in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::CDATASection extends XML::DOM::CharacterData which extends +XML::DOM::Node. +.PP +\&\s-1CDATA\s0 sections are used to escape blocks of text containing characters +that would otherwise be regarded as markup. The only delimiter that is +recognized in a \s-1CDATA\s0 section is the \*(L"]]>\*(R" string that ends the \s-1CDATA\s0 +section. \s-1CDATA\s0 sections can not be nested. The primary purpose is for +including material such as \s-1XML\s0 fragments, without needing to escape all +the delimiters. +.PP +The DOMString attribute of the Text node holds the text that is +contained by the \s-1CDATA\s0 section. Note that this may contain characters +that need to be escaped outside of \s-1CDATA\s0 sections and that, depending +on the character encoding (\*(L"charset\*(R") chosen for serialization, it may +be impossible to write out some characters as part of a \s-1CDATA\s0 section. +.PP +The CDATASection interface inherits the CharacterData interface through +the Text interface. Adjacent CDATASections nodes are not merged by use +of the Element.\fInormalize()\fR method. +.PP +\&\fB\s-1NOTE:\s0\fR XML::DOM::Parser and XML::DOM::ValParser convert all CDATASections +to regular text by default. +To preserve CDATASections, set the parser option KeepCDATA to 1. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__CharacterData.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__CharacterData.3pm new file mode 100644 index 0000000000000000000000000000000000000000..79d0ecee79a779c6df6915ab44f2652066f45091 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__CharacterData.3pm @@ -0,0 +1,152 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::CharacterData 3pm" +.TH XML::DOM::CharacterData 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::CharacterData \- Common interface for Text, CDATASections and Comments +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::CharacterData extends XML::DOM::Node +.PP +The CharacterData interface extends Node with a set of attributes and +methods for accessing character data in the \s-1DOM.\s0 For clarity this set +is defined here rather than on each object that uses these attributes +and methods. No \s-1DOM\s0 objects correspond directly to CharacterData, +though Text, Comment and CDATASection do inherit the interface from it. +All offsets in this interface start from 0. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getData and setData (data)" 4 +.IX Item "getData and setData (data)" +The character data of the node that implements this +interface. The \s-1DOM\s0 implementation may not put arbitrary +limits on the amount of data that may be stored in a +CharacterData node. However, implementation limits may mean +that the entirety of a node's data may not fit into a single +DOMString. In such cases, the user may call substringData to +retrieve the data in appropriately sized pieces. +.IP "getLength" 4 +.IX Item "getLength" +The number of characters that are available through data and +the substringData method below. This may have the value zero, +i.e., CharacterData nodes may be empty. +.IP "substringData (offset, count)" 4 +.IX Item "substringData (offset, count)" +Extracts a range of data from the node. +.Sp +Parameters: + \fIoffset\fR Start offset of substring to extract. + \fIcount\fR The number of characters to extract. +.Sp +Return Value: The specified substring. If the sum of offset and count +exceeds the length, then all characters to the end of +the data are returned. +.IP "appendData (str)" 4 +.IX Item "appendData (str)" +Appends the string to the end of the character data of the +node. Upon success, data provides access to the concatenation +of data and the DOMString specified. +.IP "insertData (offset, arg)" 4 +.IX Item "insertData (offset, arg)" +Inserts a string at the specified character offset. +.Sp +Parameters: + \fIoffset\fR The character offset at which to insert. + \fIarg\fR The DOMString to insert. +.IP "deleteData (offset, count)" 4 +.IX Item "deleteData (offset, count)" +Removes a range of characters from the node. +Upon success, data and length reflect the change. +If the sum of offset and count exceeds length then all characters +from offset to the end of the data are deleted. +.Sp +Parameters: + \fIoffset\fR The offset from which to remove characters. + \fIcount\fR The number of characters to delete. +.IP "replaceData (offset, count, arg)" 4 +.IX Item "replaceData (offset, count, arg)" +Replaces the characters starting at the specified character +offset with the specified string. +.Sp +Parameters: + \fIoffset\fR The offset from which to start replacing. + \fIcount\fR The number of characters to replace. + \fIarg\fR The DOMString with which the range must be replaced. +.Sp +If the sum of offset and count exceeds length, then all characters to the end of +the data are replaced (i.e., the effect is the same as a remove method call with +the same range, followed by an append method invocation). diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Comment.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Comment.3pm new file mode 100644 index 0000000000000000000000000000000000000000..b7889077e9b1d69c8c78b4cd4fa7d238f707c7bc --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Comment.3pm @@ -0,0 +1,89 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::Comment 3pm" +.TH XML::DOM::Comment 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::Comment \- An XML comment in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::Comment extends XML::DOM::CharacterData which extends +XML::DOM::Node. +.PP +This node represents the content of a comment, i.e., all the characters +between the starting ''. Note that this is the +definition of a comment in \s-1XML,\s0 and, in practice, \s-1HTML,\s0 although some +\&\s-1HTML\s0 tools may implement the full \s-1SGML\s0 comment structure. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__DOMImplementation.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__DOMImplementation.3pm new file mode 100644 index 0000000000000000000000000000000000000000..bc8f3567ad18a83c61e432e4963a890d5c944bed --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__DOMImplementation.3pm @@ -0,0 +1,95 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::DOMImplementation 3pm" +.TH XML::DOM::DOMImplementation 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::DOMImplementation \- Information about XML::DOM implementation +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The DOMImplementation interface provides a number of methods for +performing operations that are independent of any particular instance +of the document object model. +.PP +The \s-1DOM\s0 Level 1 does not specify a way of creating a document instance, +and hence document creation is an operation specific to an +implementation. Future Levels of the \s-1DOM\s0 specification are expected to +provide methods for creating documents directly. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "hasFeature (feature, version)" 4 +.IX Item "hasFeature (feature, version)" +Returns 1 if and only if feature equals \*(L"\s-1XML\*(R"\s0 and version equals \*(L"1.0\*(R". diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Document.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Document.3pm new file mode 100644 index 0000000000000000000000000000000000000000..e233ec405cc95a16171d00cfb5c689df6e5012c4 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Document.3pm @@ -0,0 +1,263 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::Document 3pm" +.TH XML::DOM::Document 3pm "2001-08-26" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::Document \- An XML document node in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::Document extends XML::DOM::Node. +.PP +It is the main root of the \s-1XML\s0 document structure as returned by +XML::DOM::Parser::parse and XML::DOM::Parser::parsefile. +.PP +Since elements, text nodes, comments, processing instructions, etc. +cannot exist outside the context of a Document, the Document interface +also contains the factory methods needed to create these objects. The +Node objects created have a getOwnerDocument method which associates +them with the Document within whose context they were created. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getDocumentElement" 4 +.IX Item "getDocumentElement" +This is a convenience method that allows direct access to +the child node that is the root Element of the document. +.IP "getDoctype" 4 +.IX Item "getDoctype" +The Document Type Declaration (see DocumentType) associated +with this document. For \s-1HTML\s0 documents as well as \s-1XML\s0 +documents without a document type declaration this returns +undef. The \s-1DOM\s0 Level 1 does not support editing the Document +Type Declaration. +.Sp +\&\fBNot In \s-1DOM\s0 Spec\fR: This implementation allows editing the doctype. +See \fIXML::DOM::ignoreReadOnly\fR for details. +.IP "getImplementation" 4 +.IX Item "getImplementation" +The DOMImplementation object that handles this document. A +\&\s-1DOM\s0 application may use objects from multiple implementations. +.IP "createElement (tagName)" 4 +.IX Item "createElement (tagName)" +Creates an element of the type specified. Note that the +instance returned implements the Element interface, so +attributes can be specified directly on the returned object. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1INVALID_CHARACTER_ERR\s0 +.Sp +Raised if the tagName does not conform to the \s-1XML\s0 spec. +.RE +.RS 4 +.RE +.IP "createTextNode (data)" 4 +.IX Item "createTextNode (data)" +Creates a Text node given the specified string. +.IP "createComment (data)" 4 +.IX Item "createComment (data)" +Creates a Comment node given the specified string. +.IP "createCDATASection (data)" 4 +.IX Item "createCDATASection (data)" +Creates a CDATASection node given the specified string. +.IP "createAttribute (name [, value [, specified ]])" 4 +.IX Item "createAttribute (name [, value [, specified ]])" +Creates an Attr of the given name. Note that the Attr +instance can then be set on an Element using the setAttribute method. +.Sp +\&\fBNot In \s-1DOM\s0 Spec\fR: The \s-1DOM\s0 Spec does not allow passing the value or the +specified property in this method. In this implementation they are optional. +.Sp +Parameters: + \fIvalue\fR The attribute's value. See Attr::setValue for details. + If the value is not supplied, the specified property is set to 0. + \fIspecified\fR Whether the attribute value was specified or whether the default + value was used. If not supplied, it's assumed to be 1. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1INVALID_CHARACTER_ERR\s0 +.Sp +Raised if the name does not conform to the \s-1XML\s0 spec. +.RE +.RS 4 +.RE +.IP "createProcessingInstruction (target, data)" 4 +.IX Item "createProcessingInstruction (target, data)" +Creates a ProcessingInstruction node given the specified name and data strings. +.Sp +Parameters: + \fItarget\fR The target part of the processing instruction. + \fIdata\fR The data for the node. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1INVALID_CHARACTER_ERR\s0 +.Sp +Raised if the target does not conform to the \s-1XML\s0 spec. +.RE +.RS 4 +.RE +.IP "createDocumentFragment" 4 +.IX Item "createDocumentFragment" +Creates an empty DocumentFragment object. +.IP "createEntityReference (name)" 4 +.IX Item "createEntityReference (name)" +Creates an EntityReference object. +.SS "Additional methods not in the \s-1DOM\s0 Spec" +.IX Subsection "Additional methods not in the DOM Spec" +.IP "getXMLDecl and setXMLDecl (xmlDecl)" 4 +.IX Item "getXMLDecl and setXMLDecl (xmlDecl)" +Returns the XMLDecl for this Document or undef if none was specified. +Note that XMLDecl is not part of the list of child nodes. +.IP "setDoctype (doctype)" 4 +.IX Item "setDoctype (doctype)" +Sets or replaces the DocumentType. +\&\fB\s-1NOTE\s0\fR: Don't use appendChild or insertBefore to set the DocumentType. +Even though doctype will be part of the list of child nodes, it is handled +specially. +.IP "getDefaultAttrValue (elem, attr)" 4 +.IX Item "getDefaultAttrValue (elem, attr)" +Returns the default attribute value as a string or undef, if none is available. +.Sp +Parameters: + \fIelem\fR The element tagName. + \fIattr\fR The attribute name. +.IP "getEntity (name)" 4 +.IX Item "getEntity (name)" +Returns the Entity with the specified name. +.IP "createXMLDecl (version, encoding, standalone)" 4 +.IX Item "createXMLDecl (version, encoding, standalone)" +Creates an XMLDecl object. All parameters may be undefined. +.IP "createDocumentType (name, sysId, pubId)" 4 +.IX Item "createDocumentType (name, sysId, pubId)" +Creates a DocumentType object. SysId and pubId may be undefined. +.IP "createNotation (name, base, sysId, pubId)" 4 +.IX Item "createNotation (name, base, sysId, pubId)" +Creates a new Notation object. Consider using +XML::DOM::DocumentType::addNotation! +.IP "createEntity (parameter, notationName, value, sysId, pubId, ndata)" 4 +.IX Item "createEntity (parameter, notationName, value, sysId, pubId, ndata)" +Creates an Entity object. Consider using XML::DOM::DocumentType::addEntity! +.IP "createElementDecl (name, model)" 4 +.IX Item "createElementDecl (name, model)" +Creates an ElementDecl object. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1INVALID_CHARACTER_ERR\s0 +.Sp +Raised if the element name (tagName) does not conform to the \s-1XML\s0 spec. +.RE +.RS 4 +.RE +.IP "createAttlistDecl (name)" 4 +.IX Item "createAttlistDecl (name)" +Creates an AttlistDecl object. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1INVALID_CHARACTER_ERR\s0 +.Sp +Raised if the element name (tagName) does not conform to the \s-1XML\s0 spec. +.RE +.RS 4 +.RE +.IP "expandEntity (entity [, parameter])" 4 +.IX Item "expandEntity (entity [, parameter])" +Expands the specified entity or parameter entity (if parameter=1) and returns +its value as a string, or undef if the entity does not exist. +(The entity name should not contain the '%', '&' or ';' delimiters.) +.IP "check ( [$checker] )" 4 +.IX Item "check ( [$checker] )" +Uses the specified XML::Checker to validate the document. +If no XML::Checker is supplied, a new XML::Checker is created. +See XML::Checker for details. +.IP "check_sax ( [$checker] )" 4 +.IX Item "check_sax ( [$checker] )" +Similar to \fIcheck()\fR except it uses the \s-1SAX\s0 interface to XML::Checker instead of +the expat interface. This method may disappear or replace \fIcheck()\fR at some time. +.IP "createChecker ()" 4 +.IX Item "createChecker ()" +Creates an XML::Checker based on the document's \s-1DTD.\s0 +The \f(CW$checker\fR can be reused to check any elements within the document. +Create a new XML::Checker whenever the \s-1DOCTYPE\s0 section of the document +is altered! diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__DocumentFragment.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__DocumentFragment.3pm new file mode 100644 index 0000000000000000000000000000000000000000..de4fbda5920b383e025e7d281b29ff6c2a9be0c7 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__DocumentFragment.3pm @@ -0,0 +1,116 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::DocumentFragment 3pm" +.TH XML::DOM::DocumentFragment 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::DocumentFragment \- Facilitates cut & paste in XML::DOM documents +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::DocumentFragment extends XML::DOM::Node +.PP +DocumentFragment is a \*(L"lightweight\*(R" or \*(L"minimal\*(R" Document object. It is +very common to want to be able to extract a portion of a document's +tree or to create a new fragment of a document. Imagine implementing a +user command like cut or rearranging a document by moving fragments +around. It is desirable to have an object which can hold such fragments +and it is quite natural to use a Node for this purpose. While it is +true that a Document object could fulfil this role, a Document object +can potentially be a heavyweight object, depending on the underlying +implementation. What is really needed for this is a very lightweight +object. DocumentFragment is such an object. +.PP +Furthermore, various operations \*(-- such as inserting nodes as children +of another Node \*(-- may take DocumentFragment objects as arguments; this +results in all the child nodes of the DocumentFragment being moved to +the child list of this node. +.PP +The children of a DocumentFragment node are zero or more nodes +representing the tops of any sub-trees defining the structure of the +document. DocumentFragment nodes do not need to be well-formed \s-1XML\s0 +documents (although they do need to follow the rules imposed upon +well-formed \s-1XML\s0 parsed entities, which can have multiple top nodes). +For example, a DocumentFragment might have only one child and that +child node could be a Text node. Such a structure model represents +neither an \s-1HTML\s0 document nor a well-formed \s-1XML\s0 document. +.PP +When a DocumentFragment is inserted into a Document (or indeed any +other Node that may take children) the children of the DocumentFragment +and not the DocumentFragment itself are inserted into the Node. This +makes the DocumentFragment very useful when the user wishes to create +nodes that are siblings; the DocumentFragment acts as the parent of +these nodes so that the user can use the standard methods from the Node +interface, such as \fIinsertBefore()\fR and \fIappendChild()\fR. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__DocumentType.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__DocumentType.3pm new file mode 100644 index 0000000000000000000000000000000000000000..202fae84a806663baca3c9e857e8956caeca0632 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__DocumentType.3pm @@ -0,0 +1,243 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::DocumentType 3pm" +.TH XML::DOM::DocumentType 3pm "2015-08-17" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::DocumentType \- An XML document type (DTD) in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::DocumentType extends XML::DOM::Node. +.PP +Each Document has a doctype attribute whose value is either null or a +DocumentType object. The DocumentType interface in the \s-1DOM\s0 Level 1 Core +provides an interface to the list of entities that are defined for the +document, and little else because the effect of namespaces and the +various \s-1XML\s0 scheme efforts on \s-1DTD\s0 representation are not clearly +understood as of this writing. +The \s-1DOM\s0 Level 1 doesn't support editing DocumentType nodes. +.PP +\&\fBNot In \s-1DOM\s0 Spec\fR: This implementation has added a lot of extra +functionality to the \s-1DOM\s0 Level 1 interface. +To allow editing of the DocumentType nodes, see XML::DOM::ignoreReadOnly. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getName" 4 +.IX Item "getName" +Returns the name of the \s-1DTD,\s0 i.e. the name immediately following the +\&\s-1DOCTYPE\s0 keyword. +.IP "getEntities" 4 +.IX Item "getEntities" +A NamedNodeMap containing the general entities, both external +and internal, declared in the \s-1DTD.\s0 Duplicates are discarded. +For example in: +.Sp +.Vb 6 +\& +\& +\& +\& ]> +\& +.Ve +.Sp +the interface provides access to foo and bar but not baz. +Every node in this map also implements the Entity interface. +.Sp +The \s-1DOM\s0 Level 1 does not support editing entities, therefore +entities cannot be altered in any way. +.Sp +\&\fBNot In \s-1DOM\s0 Spec\fR: See XML::DOM::ignoreReadOnly to edit the DocumentType etc. +.IP "getNotations" 4 +.IX Item "getNotations" +A NamedNodeMap containing the notations declared in the \s-1DTD.\s0 +Duplicates are discarded. Every node in this map also +implements the Notation interface. +.Sp +The \s-1DOM\s0 Level 1 does not support editing notations, therefore +notations cannot be altered in any way. +.Sp +\&\fBNot In \s-1DOM\s0 Spec\fR: See XML::DOM::ignoreReadOnly to edit the DocumentType etc. +.SS "Additional methods not in the \s-1DOM\s0 Spec" +.IX Subsection "Additional methods not in the DOM Spec" +.IP "Creating and setting the DocumentType" 4 +.IX Item "Creating and setting the DocumentType" +A new DocumentType can be created with: +.Sp +.Vb 1 +\& $doctype = $doc\->createDocumentType ($name, $sysId, $pubId, $internal); +.Ve +.Sp +To set (or replace) the DocumentType for a particular document, use: +.Sp +.Vb 1 +\& $doc\->setDocType ($doctype); +.Ve +.IP "getSysId and setSysId (sysId)" 4 +.IX Item "getSysId and setSysId (sysId)" +Returns or sets the system id. +.IP "getPubId and setPubId (pudId)" 4 +.IX Item "getPubId and setPubId (pudId)" +Returns or sets the public id. +.IP "setName (name)" 4 +.IX Item "setName (name)" +Sets the name of the \s-1DTD,\s0 i.e. the name immediately following the +\&\s-1DOCTYPE\s0 keyword. Note that this should always be the same as the element +tag name of the root element. +.IP "getAttlistDecl (elemName)" 4 +.IX Item "getAttlistDecl (elemName)" +Returns the AttlistDecl for the Element with the specified name, or undef. +.IP "getElementDecl (elemName)" 4 +.IX Item "getElementDecl (elemName)" +Returns the ElementDecl for the Element with the specified name, or undef. +.IP "getEntity (entityName)" 4 +.IX Item "getEntity (entityName)" +Returns the Entity with the specified name, or undef. +.IP "addAttlistDecl (elemName)" 4 +.IX Item "addAttlistDecl (elemName)" +Adds a new AttDecl node with the specified elemName if one doesn't exist yet. +Returns the AttlistDecl (new or existing) node. +.IP "addElementDecl (elemName, model)" 4 +.IX Item "addElementDecl (elemName, model)" +Adds a new ElementDecl node with the specified elemName and model if one doesn't +exist yet. +Returns the AttlistDecl (new or existing) node. The model is ignored if one +already existed. +.IP "addEntity (notationName, value, sysId, pubId, ndata, parameter)" 4 +.IX Item "addEntity (notationName, value, sysId, pubId, ndata, parameter)" +Adds a new Entity node. Don't use createEntity and appendChild, because it should +be added to the internal NamedNodeMap containing the entities. +.Sp +Parameters: + \fInotationName\fR the entity name. + \fIvalue\fR the entity value. + \fIsysId\fR the system id (if any.) + \fIpubId\fR the public id (if any.) + \fIndata\fR the \s-1NDATA\s0 declaration (if any, for general unparsed entities.) + \fIparameter\fR whether it is a parameter entity (%ent;) or not (&ent;). +.Sp +SysId, pubId and ndata may be undefined. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1INVALID_CHARACTER_ERR\s0 +.Sp +Raised if the notationName does not conform to the \s-1XML\s0 spec. +.RE +.RS 4 +.RE +.IP "addNotation (name, base, sysId, pubId)" 4 +.IX Item "addNotation (name, base, sysId, pubId)" +Adds a new Notation object. +.Sp +Parameters: + \fIname\fR the notation name. + \fIbase\fR the base to be used for resolving a relative \s-1URI. + \s0\fIsysId\fR the system id. + \fIpubId\fR the public id. +.Sp +Base, sysId, and pubId may all be undefined. +(These parameters are passed by the XML::Parser Notation handler.) +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1INVALID_CHARACTER_ERR\s0 +.Sp +Raised if the notationName does not conform to the \s-1XML\s0 spec. +.RE +.RS 4 +.RE +.IP "addAttDef (elemName, attrName, type, default, fixed)" 4 +.IX Item "addAttDef (elemName, attrName, type, default, fixed)" +Adds a new attribute definition. It will add the AttDef node to the AttlistDecl +if it exists. If an AttDef with the specified attrName already exists for the +given elemName, this function only generates a warning. +.Sp +See XML::DOM::AttDef::new for the other parameters. +.IP "getDefaultAttrValue (elem, attr)" 4 +.IX Item "getDefaultAttrValue (elem, attr)" +Returns the default attribute value as a string or undef, if none is available. +.Sp +Parameters: + \fIelem\fR The element tagName. + \fIattr\fR The attribute name. +.IP "expandEntity (entity [, parameter])" 4 +.IX Item "expandEntity (entity [, parameter])" +Expands the specified entity or parameter entity (if parameter=1) and returns +its value as a string, or undef if the entity does not exist. +(The entity name should not contain the '%', '&' or ';' delimiters.) diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Element.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Element.3pm new file mode 100644 index 0000000000000000000000000000000000000000..79aab58f8a661e8d0bfc8de8a42d6ac3472e7810 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Element.3pm @@ -0,0 +1,253 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::Element 3pm" +.TH XML::DOM::Element 3pm "2015-08-17" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::Element \- An XML element node in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::Element extends XML::DOM::Node. +.PP +By far the vast majority of objects (apart from text) that authors +encounter when traversing a document are Element nodes. Assume the +following \s-1XML\s0 document: +.PP +.Vb 4 +\& +\& +\& +\& +.Ve +.PP +When represented using \s-1DOM,\s0 the top node is an Element node for +\&\*(L"elementExample\*(R", which contains two child Element nodes, one for +\&\*(L"subelement1\*(R" and one for \*(L"subelement2\*(R". \*(L"subelement1\*(R" contains no +child nodes. +.PP +Elements may have attributes associated with them; since the Element +interface inherits from Node, the generic Node interface method +getAttributes may be used to retrieve the set of all attributes for an +element. There are methods on the Element interface to retrieve either +an Attr object by name or an attribute value by name. In \s-1XML,\s0 where an +attribute value may contain entity references, an Attr object should be +retrieved to examine the possibly fairly complex sub-tree representing +the attribute value. On the other hand, in \s-1HTML,\s0 where all attributes +have simple string values, methods to directly access an attribute +value can safely be used as a convenience. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getTagName" 4 +.IX Item "getTagName" +The name of the element. For example, in: +.Sp +.Vb 3 +\& +\& ... +\& +.Ve +.Sp +tagName has the value \*(L"elementExample\*(R". Note that this is +case-preserving in \s-1XML,\s0 as are all of the operations of the +\&\s-1DOM.\s0 +.IP "getAttribute (name)" 4 +.IX Item "getAttribute (name)" +Retrieves an attribute value by name. +.Sp +Return Value: The Attr value as a string, or the empty string if that +attribute does not have a specified or default value. +.IP "setAttribute (name, value)" 4 +.IX Item "setAttribute (name, value)" +Adds a new attribute. If an attribute with that name is +already present in the element, its value is changed to be +that of the value parameter. This value is a simple string, +it is not parsed as it is being set. So any markup (such as +syntax to be recognized as an entity reference) is treated as +literal text, and needs to be appropriately escaped by the +implementation when it is written out. In order to assign an +attribute value that contains entity references, the user +must create an Attr node plus any Text and EntityReference +nodes, build the appropriate subtree, and use +setAttributeNode to assign it as the value of an attribute. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1INVALID_CHARACTER_ERR\s0 +.Sp +Raised if the specified name contains an invalid character. +.IP "\(bu" 4 +\&\s-1NO_MODIFICATION_ALLOWED_ERR\s0 +.Sp +Raised if this node is readonly. +.RE +.RS 4 +.RE +.IP "removeAttribute (name)" 4 +.IX Item "removeAttribute (name)" +Removes an attribute by name. If the removed attribute has a +default value it is immediately replaced. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1NO_MODIFICATION_ALLOWED_ERR\s0 +.Sp +Raised if this node is readonly. +.RE +.RS 4 +.RE +.IP "getAttributeNode" 4 +.IX Item "getAttributeNode" +Retrieves an Attr node by name. +.Sp +Return Value: The Attr node with the specified attribute name or undef +if there is no such attribute. +.IP "setAttributeNode (attr)" 4 +.IX Item "setAttributeNode (attr)" +Adds a new attribute. If an attribute with that name is +already present in the element, it is replaced by the new one. +.Sp +Return Value: If the newAttr attribute replaces an existing attribute +with the same name, the previously existing Attr node is +returned, otherwise undef is returned. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1WRONG_DOCUMENT_ERR\s0 +.Sp +Raised if newAttr was created from a different document than the one that created +the element. +.IP "\(bu" 4 +\&\s-1NO_MODIFICATION_ALLOWED_ERR\s0 +.Sp +Raised if this node is readonly. +.IP "\(bu" 4 +\&\s-1INUSE_ATTRIBUTE_ERR\s0 +.Sp +Raised if newAttr is already an attribute of another Element object. The \s-1DOM\s0 +user must explicitly clone Attr nodes to re-use them in other elements. +.RE +.RS 4 +.RE +.IP "removeAttributeNode (oldAttr)" 4 +.IX Item "removeAttributeNode (oldAttr)" +Removes the specified attribute. If the removed Attr has a default value it is +immediately replaced. If the Attr already is the default value, nothing happens +and nothing is returned. +.Sp +Parameters: + \fIoldAttr\fR The Attr node to remove from the attribute list. +.Sp +Return Value: The Attr node that was removed. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1NO_MODIFICATION_ALLOWED_ERR\s0 +.Sp +Raised if this node is readonly. +.IP "\(bu" 4 +\&\s-1NOT_FOUND_ERR\s0 +.Sp +Raised if oldAttr is not an attribute of the element. +.RE +.RS 4 +.RE +.SS "Additional methods not in the \s-1DOM\s0 Spec" +.IX Subsection "Additional methods not in the DOM Spec" +.IP "setTagName (newTagName)" 4 +.IX Item "setTagName (newTagName)" +Sets the tag name of the Element. Note that this method is not portable +between \s-1DOM\s0 implementations. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1INVALID_CHARACTER_ERR\s0 +.Sp +Raised if the specified name contains an invalid character. +.RE +.RS 4 +.RE +.IP "check ($checker)" 4 +.IX Item "check ($checker)" +Uses the specified XML::Checker to validate the document. +\&\s-1NOTE:\s0 an XML::Checker must be supplied. The checker can be created in +different ways, e.g. when parsing a document with XML::DOM::ValParser, +or with \fIXML::DOM::Document::createChecker()\fR. +See XML::Checker for more info. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__ElementDecl.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__ElementDecl.3pm new file mode 100644 index 0000000000000000000000000000000000000000..d0e581940e7ac975d80388874f0d62e61a301f7c --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__ElementDecl.3pm @@ -0,0 +1,99 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::ElementDecl 3pm" +.TH XML::DOM::ElementDecl 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::ElementDecl \- An XML ELEMENT declaration in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::ElementDecl extends XML::DOM::Node but is not part of the +\&\s-1DOM\s0 Level 1 specification. +.PP +This node represents an Element declaration, e.g. +.PP +.Vb 1 +\& +.Ve +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getName" 4 +.IX Item "getName" +Returns the Element tagName. +.IP "getModel and setModel (model)" 4 +.IX Item "getModel and setModel (model)" +Returns and sets the model as a string, e.g. +\&\*(L"(street+, city, state, zip, country?)\*(R" in the above example. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Entity.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Entity.3pm new file mode 100644 index 0000000000000000000000000000000000000000..f1f56c3a7ad006f3dcdc4545f2962c21d1cf889b --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Entity.3pm @@ -0,0 +1,120 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::Entity 3pm" +.TH XML::DOM::Entity 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::Entity \- An XML ENTITY in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::Entity extends XML::DOM::Node. +.PP +This node represents an Entity declaration, e.g. +.PP +.Vb 1 +\& +\& +\& +.Ve +.PP +The first one is called a parameter entity and is referenced like this: \f(CW%draft\fR; +The 2nd is a (regular) entity and is referenced like this: &hatch\-pic; +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getNotationName" 4 +.IX Item "getNotationName" +Returns the name of the notation for the entity. +.Sp +\&\fINot Implemented\fR The \s-1DOM\s0 Spec says: For unparsed entities, the name of the +notation for the entity. For parsed entities, this is null. +(This implementation does not support unparsed entities.) +.IP "getSysId" 4 +.IX Item "getSysId" +Returns the system id, or undef. +.IP "getPubId" 4 +.IX Item "getPubId" +Returns the public id, or undef. +.SS "Additional methods not in the \s-1DOM\s0 Spec" +.IX Subsection "Additional methods not in the DOM Spec" +.IP "isParameterEntity" 4 +.IX Item "isParameterEntity" +Whether it is a parameter entity (%ent;) or not (&ent;) +.IP "getValue" 4 +.IX Item "getValue" +Returns the entity value. +.IP "getNdata" 4 +.IX Item "getNdata" +Returns the \s-1NDATA\s0 declaration (for general unparsed entities), or undef. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__EntityReference.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__EntityReference.3pm new file mode 100644 index 0000000000000000000000000000000000000000..8b9a12e678785789aa3f5511a3750b891cb9bc73 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__EntityReference.3pm @@ -0,0 +1,103 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::EntityReference 3pm" +.TH XML::DOM::EntityReference 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::EntityReference \- An XML ENTITY reference in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::EntityReference extends XML::DOM::Node. +.PP +EntityReference objects may be inserted into the structure model when +an entity reference is in the source document, or when the user wishes +to insert an entity reference. Note that character references and +references to predefined entities are considered to be expanded by the +\&\s-1HTML\s0 or \s-1XML\s0 processor so that characters are represented by their +Unicode equivalent rather than by an entity reference. Moreover, the +\&\s-1XML\s0 processor may completely expand references to entities while +building the structure model, instead of providing EntityReference +objects. If it does provide such objects, then for a given +EntityReference node, it may be that there is no Entity node +representing the referenced entity; but if such an Entity exists, then +the child list of the EntityReference node is the same as that of the +Entity node. As with the Entity node, all descendants of the +EntityReference are readonly. +.PP +The resolution of the children of the EntityReference (the replacement +value of the referenced Entity) may be lazily evaluated; actions by the +user (such as calling the childNodes method on the EntityReference +node) are assumed to trigger the evaluation. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__NamedNodeMap.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__NamedNodeMap.3pm new file mode 100644 index 0000000000000000000000000000000000000000..7ab7c88b9cde765a2d04659ac66838e919a424ae --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__NamedNodeMap.3pm @@ -0,0 +1,192 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::NamedNodeMap 3pm" +.TH XML::DOM::NamedNodeMap 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::NamedNodeMap \- A hash table interface for XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +Objects implementing the NamedNodeMap interface are used to represent +collections of nodes that can be accessed by name. Note that +NamedNodeMap does not inherit from NodeList; NamedNodeMaps are not +maintained in any particular order. Objects contained in an object +implementing NamedNodeMap may also be accessed by an ordinal index, but +this is simply to allow convenient enumeration of the contents of a +NamedNodeMap, and does not imply that the \s-1DOM\s0 specifies an order to +these Nodes. +.PP +Note that in this implementation, the objects added to a NamedNodeMap +are kept in order. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getNamedItem (name)" 4 +.IX Item "getNamedItem (name)" +Retrieves a node specified by name. +.Sp +Return Value: A Node (of any type) with the specified name, or undef if +the specified name did not identify any node in the map. +.IP "setNamedItem (arg)" 4 +.IX Item "setNamedItem (arg)" +Adds a node using its nodeName attribute. +.Sp +As the nodeName attribute is used to derive the name which +the node must be stored under, multiple nodes of certain +types (those that have a \*(L"special\*(R" string value) cannot be +stored as the names would clash. This is seen as preferable +to allowing nodes to be aliased. +.Sp +Parameters: + \fIarg\fR A node to store in a named node map. +.Sp +The node will later be accessible using the value of the nodeName +attribute of the node. If a node with that name is +already present in the map, it is replaced by the new one. +.Sp +Return Value: If the new Node replaces an existing node with the same +name the previously existing Node is returned, otherwise undef is returned. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1WRONG_DOCUMENT_ERR\s0 +.Sp +Raised if arg was created from a different document than the one that +created the NamedNodeMap. +.IP "\(bu" 4 +\&\s-1NO_MODIFICATION_ALLOWED_ERR\s0 +.Sp +Raised if this NamedNodeMap is readonly. +.IP "\(bu" 4 +\&\s-1INUSE_ATTRIBUTE_ERR\s0 +.Sp +Raised if arg is an Attr that is already an attribute of another Element object. +The \s-1DOM\s0 user must explicitly clone Attr nodes to re-use them in other elements. +.RE +.RS 4 +.RE +.IP "removeNamedItem (name)" 4 +.IX Item "removeNamedItem (name)" +Removes a node specified by name. If the removed node is an +Attr with a default value it is immediately replaced. +.Sp +Return Value: The node removed from the map or undef if no node with +such a name exists. +.Sp +DOMException: +.RS 4 +.IP "\(bu" 4 +\&\s-1NOT_FOUND_ERR\s0 +.Sp +Raised if there is no node named name in the map. +.RE +.RS 4 +.RE +.IP "item (index)" 4 +.IX Item "item (index)" +Returns the indexth item in the map. If index is greater than +or equal to the number of nodes in the map, this returns undef. +.Sp +Return Value: The node at the indexth position in the NamedNodeMap, or +undef if that is not a valid index. +.IP "getLength" 4 +.IX Item "getLength" +Returns the number of nodes in the map. The range of valid child node +indices is 0 to length\-1 inclusive. +.SS "Additional methods not in the \s-1DOM\s0 Spec" +.IX Subsection "Additional methods not in the DOM Spec" +.IP "getValues" 4 +.IX Item "getValues" +Returns a NodeList with the nodes contained in the NamedNodeMap. +The NodeList is \*(L"live\*(R", in that it reflects changes made to the NamedNodeMap. +.Sp +When this method is called in a list context, it returns a regular perl list +containing the values. Note that this list is not \*(L"live\*(R". E.g. +.Sp +.Vb 3 +\& @list = $map\->getValues; # returns a perl list +\& $nodelist = $map\->getValues; # returns a NodeList (object ref.) +\& for my $val ($map\->getValues) # iterate over the values +.Ve +.IP "getChildIndex (node)" 4 +.IX Item "getChildIndex (node)" +Returns the index of the node in the NodeList as returned by getValues, or \-1 +if the node is not in the NamedNodeMap. +.IP "dispose" 4 +.IX Item "dispose" +Removes all circular references in this NamedNodeMap and its descendants so the +objects can be claimed for garbage collection. The objects should not be used +afterwards. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Node.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Node.3pm new file mode 100644 index 0000000000000000000000000000000000000000..d5ea9df5e71fb0bea6d4e8d4269dcc47a6e85fb3 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Node.3pm @@ -0,0 +1,500 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::Node 3pm" +.TH XML::DOM::Node 3pm "2015-08-17" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::Node \- Super class of all nodes in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::Node is the super class of all nodes in an \s-1XML::DOM\s0 document. +This means that all nodes that subclass XML::DOM::Node also inherit all +the methods that XML::DOM::Node implements. +.SS "\s-1GLOBAL VARIABLES\s0" +.IX Subsection "GLOBAL VARIABLES" +.ie n .IP "@NodeNames" 4 +.el .IP "\f(CW@NodeNames\fR" 4 +.IX Item "@NodeNames" +The variable \f(CW@XML::DOM::Node::NodeNames\fR maps the node type constants to strings. +It is used by XML::DOM::Node::getNodeTypeName. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getNodeType" 4 +.IX Item "getNodeType" +Return an integer indicating the node type. See \s-1XML::DOM\s0 constants. +.IP "getNodeName" 4 +.IX Item "getNodeName" +Return a property or a hardcoded string, depending on the node type. +Here are the corresponding functions or values: +.Sp +.Vb 10 +\& Attr getName +\& AttDef getName +\& AttlistDecl getName +\& CDATASection "#cdata\-section" +\& Comment "#comment" +\& Document "#document" +\& DocumentType getNodeName +\& DocumentFragment "#document\-fragment" +\& Element getTagName +\& ElementDecl getName +\& EntityReference getEntityName +\& Entity getNotationName +\& Notation getName +\& ProcessingInstruction getTarget +\& Text "#text" +\& XMLDecl "#xml\-declaration" +.Ve +.Sp +\&\fBNot In \s-1DOM\s0 Spec\fR: AttDef, AttlistDecl, ElementDecl and XMLDecl were added for +completeness. +.IP "getNodeValue and setNodeValue (value)" 4 +.IX Item "getNodeValue and setNodeValue (value)" +Returns a string or undef, depending on the node type. This method is provided +for completeness. In other languages it saves the programmer an upcast. +The value is either available thru some other method defined in the subclass, or +else undef is returned. Here are the corresponding methods: +Attr::getValue, Text::getData, CDATASection::getData, Comment::getData, +ProcessingInstruction::getData. +.IP "getParentNode and setParentNode (parentNode)" 4 +.IX Item "getParentNode and setParentNode (parentNode)" +The parent of this node. All nodes, except Document, +DocumentFragment, and Attr may have a parent. However, if a +node has just been created and not yet added to the tree, or +if it has been removed from the tree, this is undef. +.IP "getChildNodes" 4 +.IX Item "getChildNodes" +A NodeList that contains all children of this node. If there +are no children, this is a NodeList containing no nodes. The +content of the returned NodeList is \*(L"live\*(R" in the sense that, +for instance, changes to the children of the node object that +it was created from are immediately reflected in the nodes +returned by the NodeList accessors; it is not a static +snapshot of the content of the node. This is true for every +NodeList, including the ones returned by the +getElementsByTagName method. +.Sp +\&\s-1NOTE:\s0 this implementation does not return a \*(L"live\*(R" NodeList for +getElementsByTagName. See \s-1CAVEATS\s0. +.Sp +When this method is called in a list context, it returns a regular perl list +containing the child nodes. Note that this list is not \*(L"live\*(R". E.g. +.Sp +.Vb 3 +\& @list = $node\->getChildNodes; # returns a perl list +\& $nodelist = $node\->getChildNodes; # returns a NodeList (object reference) +\& for my $kid ($node\->getChildNodes) # iterate over the children of $node +.Ve +.IP "getFirstChild" 4 +.IX Item "getFirstChild" +The first child of this node. If there is no such node, this returns undef. +.IP "getLastChild" 4 +.IX Item "getLastChild" +The last child of this node. If there is no such node, this returns undef. +.IP "getPreviousSibling" 4 +.IX Item "getPreviousSibling" +The node immediately preceding this node. If there is no such +node, this returns undef. +.IP "getNextSibling" 4 +.IX Item "getNextSibling" +The node immediately following this node. If there is no such node, this returns +undef. +.IP "getAttributes" 4 +.IX Item "getAttributes" +A NamedNodeMap containing the attributes (Attr nodes) of this node +(if it is an Element) or undef otherwise. +Note that adding/removing attributes from the returned object, also adds/removes +attributes from the Element node that the NamedNodeMap came from. +.IP "getOwnerDocument" 4 +.IX Item "getOwnerDocument" +The Document object associated with this node. This is also +the Document object used to create new nodes. When this node +is a Document this is undef. +.IP "insertBefore (newChild, refChild)" 4 +.IX Item "insertBefore (newChild, refChild)" +Inserts the node newChild before the existing child node +refChild. If refChild is undef, insert newChild at the end of +the list of children. +.Sp +If newChild is a DocumentFragment object, all of its children +are inserted, in the same order, before refChild. If the +newChild is already in the tree, it is first removed. +.Sp +Return Value: The node being inserted. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1HIERARCHY_REQUEST_ERR\s0 +.Sp +Raised if this node is of a type that does not allow children of the type of +the newChild node, or if the node to insert is one of this node's ancestors. +.IP "\(bu" 4 +\&\s-1WRONG_DOCUMENT_ERR\s0 +.Sp +Raised if newChild was created from a different document than the one that +created this node. +.IP "\(bu" 4 +\&\s-1NO_MODIFICATION_ALLOWED_ERR\s0 +.Sp +Raised if this node is readonly. +.IP "\(bu" 4 +\&\s-1NOT_FOUND_ERR\s0 +.Sp +Raised if refChild is not a child of this node. +.RE +.RS 4 +.RE +.IP "replaceChild (newChild, oldChild)" 4 +.IX Item "replaceChild (newChild, oldChild)" +Replaces the child node oldChild with newChild in the list of +children, and returns the oldChild node. If the newChild is +already in the tree, it is first removed. +.Sp +Return Value: The node replaced. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1HIERARCHY_REQUEST_ERR\s0 +.Sp +Raised if this node is of a type that does not allow children of the type of +the newChild node, or it the node to put in is one of this node's ancestors. +.IP "\(bu" 4 +\&\s-1WRONG_DOCUMENT_ERR\s0 +.Sp +Raised if newChild was created from a different document than the one that +created this node. +.IP "\(bu" 4 +\&\s-1NO_MODIFICATION_ALLOWED_ERR\s0 +.Sp +Raised if this node is readonly. +.IP "\(bu" 4 +\&\s-1NOT_FOUND_ERR\s0 +.Sp +Raised if oldChild is not a child of this node. +.RE +.RS 4 +.RE +.IP "removeChild (oldChild)" 4 +.IX Item "removeChild (oldChild)" +Removes the child node indicated by oldChild from the list of +children, and returns it. +.Sp +Return Value: The node removed. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1NO_MODIFICATION_ALLOWED_ERR\s0 +.Sp +Raised if this node is readonly. +.IP "\(bu" 4 +\&\s-1NOT_FOUND_ERR\s0 +.Sp +Raised if oldChild is not a child of this node. +.RE +.RS 4 +.RE +.IP "appendChild (newChild)" 4 +.IX Item "appendChild (newChild)" +Adds the node newChild to the end of the list of children of +this node. If the newChild is already in the tree, it is +first removed. If it is a DocumentFragment object, the entire contents of +the document fragment are moved into the child list of this node +.Sp +Return Value: The node added. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1HIERARCHY_REQUEST_ERR\s0 +.Sp +Raised if this node is of a type that does not allow children of the type of +the newChild node, or if the node to append is one of this node's ancestors. +.IP "\(bu" 4 +\&\s-1WRONG_DOCUMENT_ERR\s0 +.Sp +Raised if newChild was created from a different document than the one that +created this node. +.IP "\(bu" 4 +\&\s-1NO_MODIFICATION_ALLOWED_ERR\s0 +.Sp +Raised if this node is readonly. +.RE +.RS 4 +.RE +.IP "hasChildNodes" 4 +.IX Item "hasChildNodes" +This is a convenience method to allow easy determination of +whether a node has any children. +.Sp +Return Value: 1 if the node has any children, 0 otherwise. +.IP "cloneNode (deep)" 4 +.IX Item "cloneNode (deep)" +Returns a duplicate of this node, i.e., serves as a generic +copy constructor for nodes. The duplicate node has no parent +(parentNode returns undef.). +.Sp +Cloning an Element copies all attributes and their values, +including those generated by the \s-1XML\s0 processor to represent +defaulted attributes, but this method does not copy any text +it contains unless it is a deep clone, since the text is +contained in a child Text node. Cloning any other type of +node simply returns a copy of this node. +.Sp +Parameters: + \fIdeep\fR If true, recursively clone the subtree under the specified node. +If false, clone only the node itself (and its attributes, if it is an Element). +.Sp +Return Value: The duplicate node. +.IP "normalize" 4 +.IX Item "normalize" +Puts all Text nodes in the full depth of the sub-tree +underneath this Element into a \*(L"normal\*(R" form where only +markup (e.g., tags, comments, processing instructions, \s-1CDATA\s0 +sections, and entity references) separates Text nodes, i.e., +there are no adjacent Text nodes. This can be used to ensure +that the \s-1DOM\s0 view of a document is the same as if it were +saved and re-loaded, and is useful when operations (such as +XPointer lookups) that depend on a particular document tree +structure are to be used. +.Sp +\&\fBNot In \s-1DOM\s0 Spec\fR: In the \s-1DOM\s0 Spec this method is defined in the Element and +Document class interfaces only, but it doesn't hurt to have it here... +.IP "getElementsByTagName (name [, recurse])" 4 +.IX Item "getElementsByTagName (name [, recurse])" +Returns a NodeList of all descendant elements with a given +tag name, in the order in which they would be encountered in +a preorder traversal of the Element tree. +.Sp +Parameters: + \fIname\fR The name of the tag to match on. The special value \*(L"*\*(R" matches all tags. + \fIrecurse\fR Whether it should return only direct child nodes (0) or any descendant that matches the tag name (1). This argument is optional and defaults to 1. It is not part of the \s-1DOM\s0 spec. +.Sp +Return Value: A list of matching Element nodes. +.Sp +\&\s-1NOTE:\s0 this implementation does not return a \*(L"live\*(R" NodeList for +getElementsByTagName. See \s-1CAVEATS\s0. +.Sp +When this method is called in a list context, it returns a regular perl list +containing the result nodes. E.g. +.Sp +.Vb 3 +\& @list = $node\->getElementsByTagName("tag"); # returns a perl list +\& $nodelist = $node\->getElementsByTagName("tag"); # returns a NodeList (object ref.) +\& for my $elem ($node\->getElementsByTagName("tag")) # iterate over the result nodes +.Ve +.SS "Additional methods not in the \s-1DOM\s0 Spec" +.IX Subsection "Additional methods not in the DOM Spec" +.IP "getNodeTypeName" 4 +.IX Item "getNodeTypeName" +Return the string describing the node type. +E.g. returns \*(L"\s-1ELEMENT_NODE\*(R"\s0 if getNodeType returns \s-1ELEMENT_NODE.\s0 +It uses \f(CW@XML::DOM::Node::NodeNames\fR. +.IP "toString" 4 +.IX Item "toString" +Returns the entire subtree as a string. +.IP "printToFile (filename)" 4 +.IX Item "printToFile (filename)" +Prints the entire subtree to the file with the specified filename. +.Sp +Croaks: if the file could not be opened for writing. +.IP "printToFileHandle (handle)" 4 +.IX Item "printToFileHandle (handle)" +Prints the entire subtree to the file handle. +E.g. to print to \s-1STDOUT:\s0 +.Sp +.Vb 1 +\& $node\->printToFileHandle (\e*STDOUT); +.Ve +.IP "print (obj)" 4 +.IX Item "print (obj)" +Prints the entire subtree using the object's print method. E.g to print to a +FileHandle object: +.Sp +.Vb 2 +\& $f = new FileHandle ("file.out", "w"); +\& $node\->print ($f); +.Ve +.IP "getChildIndex (child)" 4 +.IX Item "getChildIndex (child)" +Returns the index of the child node in the list returned by getChildNodes. +.Sp +Return Value: the index or \-1 if the node is not found. +.IP "getChildAtIndex (index)" 4 +.IX Item "getChildAtIndex (index)" +Returns the child node at the specified index or undef. +.IP "addText (text)" 4 +.IX Item "addText (text)" +Appends the specified string to the last child if it is a Text node, or else +appends a new Text node (with the specified text.) +.Sp +Return Value: the last child if it was a Text node or else the new Text node. +.IP "dispose" 4 +.IX Item "dispose" +Removes all circular references in this node and its descendants so the +objects can be claimed for garbage collection. The objects should not be used +afterwards. +.IP "setOwnerDocument (doc)" 4 +.IX Item "setOwnerDocument (doc)" +Sets the ownerDocument property of this node and all its children (and +attributes etc.) to the specified document. +This allows the user to cut and paste document subtrees between different +XML::DOM::Documents. The node should be removed from the original document +first, before calling setOwnerDocument. +.Sp +This method does nothing when called on a Document node. +.IP "isAncestor (parent)" 4 +.IX Item "isAncestor (parent)" +Returns 1 if parent is an ancestor of this node or if it is this node itself. +.IP "expandEntityRefs (str)" 4 +.IX Item "expandEntityRefs (str)" +Expands all the entity references in the string and returns the result. +The entity references can be character references (e.g. \*(L"{\*(R" or \*(L"ῂ\*(R"), +default entity references (\*(L""\*(R", \*(L">\*(R", \*(L"<\*(R", \*(L"'\*(R" and \*(L"&\*(R") or +entity references defined in Entity objects as part of the DocumentType of +the owning Document. Character references are expanded into \s-1UTF\-8.\s0 +Parameter entity references (e.g. \f(CW%ent\fR;) are not expanded. +.ie n .IP "to_sax ( %HANDLERS )" 4 +.el .IP "to_sax ( \f(CW%HANDLERS\fR )" 4 +.IX Item "to_sax ( %HANDLERS )" +E.g. +.Sp +.Vb 2 +\& $node\->to_sax (DocumentHandler => $my_handler, +\& Handler => $handler2 ); +.Ve +.Sp +\&\f(CW%HANDLERS\fR may contain the following handlers: +.RS 4 +.IP "\(bu" 4 +DocumentHandler +.IP "\(bu" 4 +DTDHandler +.IP "\(bu" 4 +EntityResolver +.IP "\(bu" 4 +Handler +.Sp +Default handler when one of the above is not specified +.RE +.RS 4 +.Sp +Each XML::DOM::Node generates the appropriate \s-1SAX\s0 callbacks (for the +appropriate \s-1SAX\s0 handler.) Different \s-1SAX\s0 handlers can be plugged in to +accomplish different things, e.g. XML::Checker would check the node +(currently only Document and Element nodes are supported), XML::Handler::BuildDOM +would create a new \s-1DOM\s0 subtree (thereby, in essence, copying the Node) +and in the near future, XML::Writer could print the node. +All Perl \s-1SAX\s0 related work is still in flux, so this interface may change a +little. +.Sp +See PerlSAX for the description of the \s-1SAX\s0 interface. +.RE +.IP "check ( [$checker] )" 4 +.IX Item "check ( [$checker] )" +See descriptions for \fIcheck()\fR in XML::DOM::Document and XML::DOM::Element. +.ie n .IP "xql ( @XQL_OPTIONS )" 4 +.el .IP "xql ( \f(CW@XQL_OPTIONS\fR )" 4 +.IX Item "xql ( @XQL_OPTIONS )" +To use the xql method, you must first \fIuse\fR \s-1XML::XQL\s0 and \s-1XML::XQL::DOM\s0. +This method is basically a shortcut for: +.Sp +.Vb 2 +\& $query = new XML::XQL::Query ( @XQL_OPTIONS ); +\& return $query\->solve ($node); +.Ve +.Sp +If the first parameter in \f(CW@XQL_OPTIONS\fR is the \s-1XQL\s0 expression, you can leave off +the 'Expr' keyword, so: +.Sp +.Vb 1 +\& $node\->xql ("doc//elem1[@attr]", @other_options); +.Ve +.Sp +is identical to: +.Sp +.Vb 1 +\& $node\->xql (Expr => "doc//elem1[@attr]", @other_options); +.Ve +.Sp +See XML::XQL::Query for other available \s-1XQL_OPTIONS.\s0 +See \s-1XML::XQL\s0 and XML::XQL::Tutorial for more info. +.IP "isHidden ()" 4 +.IX Item "isHidden ()" +Whether the node is hidden. +See Hidden Nodes for details. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__NodeList.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__NodeList.3pm new file mode 100644 index 0000000000000000000000000000000000000000..8240939ac937a8dddfd069f16daefe3e8a9f8d67 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__NodeList.3pm @@ -0,0 +1,111 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::NodeList 3pm" +.TH XML::DOM::NodeList 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::NodeList \- A node list as used by XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The NodeList interface provides the abstraction of an ordered +collection of nodes, without defining or constraining how this +collection is implemented. +.PP +The items in the NodeList are accessible via an integral index, +starting from 0. +.PP +Although the \s-1DOM\s0 spec states that all NodeLists are \*(L"live\*(R" in that they +allways reflect changes to the \s-1DOM\s0 tree, the NodeList returned by +getElementsByTagName is not live in this implementation. See \s-1CAVEATS\s0 +for details. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "item (index)" 4 +.IX Item "item (index)" +Returns the indexth item in the collection. If index is +greater than or equal to the number of nodes in the list, +this returns undef. +.IP "getLength" 4 +.IX Item "getLength" +The number of nodes in the list. The range of valid child +node indices is 0 to length\-1 inclusive. +.SS "Additional methods not in the \s-1DOM\s0 Spec" +.IX Subsection "Additional methods not in the DOM Spec" +.IP "dispose" 4 +.IX Item "dispose" +Removes all circular references in this NodeList and its descendants so the +objects can be claimed for garbage collection. The objects should not be used +afterwards. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Notation.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Notation.3pm new file mode 100644 index 0000000000000000000000000000000000000000..98451477566a1374833cbcb8526935c859a54427 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Notation.3pm @@ -0,0 +1,116 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::Notation 3pm" +.TH XML::DOM::Notation 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::Notation \- An XML NOTATION in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::Notation extends XML::DOM::Node. +.PP +This node represents a Notation, e.g. +.PP +.Vb 1 +\& +\& +\& +\& +\& +\& +\& +.Ve +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getName and setName (name)" 4 +.IX Item "getName and setName (name)" +Returns (or sets) the Notation name, which is the first token after the +\&\s-1NOTATION\s0 keyword. +.IP "getSysId and setSysId (sysId)" 4 +.IX Item "getSysId and setSysId (sysId)" +Returns (or sets) the system \s-1ID,\s0 which is the token after the optional +\&\s-1SYSTEM\s0 keyword. +.IP "getPubId and setPubId (pubId)" 4 +.IX Item "getPubId and setPubId (pubId)" +Returns (or sets) the public \s-1ID,\s0 which is the token after the optional +\&\s-1PUBLIC\s0 keyword. +.IP "getBase" 4 +.IX Item "getBase" +This is passed by XML::Parser in the Notation handler. +I don't know what it is yet. +.IP "getNodeName" 4 +.IX Item "getNodeName" +Returns the same as getName. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Parser.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Parser.3pm new file mode 100644 index 0000000000000000000000000000000000000000..2c5982809c53867721912823854c7fa0828593f0 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Parser.3pm @@ -0,0 +1,149 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::Parser 3pm" +.TH XML::DOM::Parser 3pm "2002-07-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::Parser \- An XML::Parser that builds XML::DOM document structures +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& use XML::DOM; +\& +\& my $parser = new XML::DOM::Parser; +\& my $doc = $parser\->parsefile ("file.xml"); +\& $doc\->dispose; # Avoid memory leaks \- cleanup circular references +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::Parser extends XML::Parser +.PP +The XML::Parser module was written by Clark Cooper and +is built on top of XML::Parser::Expat, +which is a lower level interface to James Clark's expat library. +.PP +XML::DOM::Parser parses \s-1XML\s0 strings or files +and builds a data structure that conforms to the \s-1API\s0 of the Document Object +Model as described at . +See the XML::Parser manpage for other additional properties of the +XML::DOM::Parser class. +Note that the 'Style' property should not be used (it is set internally.) +.PP +The XML::Parser \fBNoExpand\fR option is more or less supported, in that it will +generate EntityReference objects whenever an entity reference is encountered +in character data. I'm not sure how useful this is. Any comments are welcome. +.PP +As described in the synopsis, when you create an XML::DOM::Parser object, +the parse and parsefile methods create an XML::DOM::Document object +from the specified input. This Document object can then be examined, modified and +written back out to a file or converted to a string. +.PP +When using \s-1XML::DOM\s0 with XML::Parser version 2.19 and up, setting the +XML::DOM::Parser option \fBKeepCDATA\fR to 1 will store CDATASections in +CDATASection nodes, instead of converting them to Text nodes. +Subsequent CDATASection nodes will be merged into one. Let me know if this +is a problem. +.SH "Using LWP to parse URLs" +.IX Header "Using LWP to parse URLs" +The \fIparsefile()\fR method now also supports URLs, e.g. \fIhttp://www.erols.com/enno/xsa.xml\fR. +It uses \s-1LWP\s0 to download the file and then calls \fIparse()\fR on the resulting string. +By default it will use a LWP::UserAgent that is created as follows: +.PP +.Vb 3 +\& use LWP::UserAgent; +\& $LWP_USER_AGENT = LWP::UserAgent\->new; +\& $LWP_USER_AGENT\->env_proxy; +.Ve +.PP +Note that env_proxy reads proxy settings from environment variables, which is what I need to +do to get thru our firewall. If you want to use a different LWP::UserAgent, you can either set +it globally with: +.PP +.Vb 1 +\& XML::DOM::Parser::set_LWP_UserAgent ($my_agent); +.Ve +.PP +or, you can specify it for a specific XML::DOM::Parser by passing it to the constructor: +.PP +.Vb 1 +\& my $parser = new XML::DOM::Parser (LWP_UserAgent => $my_agent); +.Ve +.PP +Currently, \s-1LWP\s0 is used when the filename (passed to parsefile) starts with one of +the following \s-1URL\s0 schemes: http, https, ftp, wais, gopher, or file (followed by a colon.) +If I missed one, please let me know. +.PP +The \s-1LWP\s0 modules are part of libwww-perl which is available at \s-1CPAN.\s0 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__PerlSAX.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__PerlSAX.3pm new file mode 100644 index 0000000000000000000000000000000000000000..63d904006693f7068a4c9cbb51c1e480fa094b4a --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__PerlSAX.3pm @@ -0,0 +1,102 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::PerlSAX 3pm" +.TH XML::DOM::PerlSAX 3pm "2002-10-23" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::PerlSAX \- Old name of XML::Handler::BuildDOM +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& See L +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::PerlSAX was renamed to XML::Handler::BuildDOM to comply +with naming conventions for PerlSAX filters/handlers. +.PP +For backward compatibility, this package will remain in existence +(it simply includes XML::Handler::BuildDOM), but it will print a warning when +running with \fI'perl \-w'\fR. +.SH "AUTHOR" +.IX Header "AUTHOR" +Enno Derksen is the original author. +.PP +Send bug reports, hints, tips, suggestions to T.J Mather at +<\fItjmather@tjmather.com\fR>. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +XML::Handler::BuildDOM, \s-1XML::DOM\s0 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__ProcessingInstruction.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__ProcessingInstruction.3pm new file mode 100644 index 0000000000000000000000000000000000000000..8f993655e70ae29c3fdd007014ea2c98e6cd27d3 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__ProcessingInstruction.3pm @@ -0,0 +1,104 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::ProcessingInstruction 3pm" +.TH XML::DOM::ProcessingInstruction 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::ProcessingInstruction \- An XML processing instruction in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::ProcessingInstruction extends XML::DOM::Node. +.PP +It represents a \*(L"processing instruction\*(R", used in \s-1XML\s0 as a way to keep +processor-specific information in the text of the document. An example: +.PP +.Vb 1 +\& +.Ve +.PP +Here, \*(L"\s-1PI\*(R"\s0 is the target and \*(L"processing instruction\*(R" is the data. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getTarget" 4 +.IX Item "getTarget" +The target of this processing instruction. \s-1XML\s0 defines this +as being the first token following the markup that begins the +processing instruction. +.IP "getData and setData (data)" 4 +.IX Item "getData and setData (data)" +The content of this processing instruction. This is from the +first non white space character after the target to the +character immediately preceding the ?>. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Text.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Text.3pm new file mode 100644 index 0000000000000000000000000000000000000000..bb065d807ee2d637262293d50ad08a8deaf2dfd8 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__Text.3pm @@ -0,0 +1,131 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::Text 3pm" +.TH XML::DOM::Text 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::Text \- A piece of XML text in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::Text extends XML::DOM::CharacterData, which extends +XML::DOM::Node. +.PP +The Text interface represents the textual content (termed character +data in \s-1XML\s0) of an Element or Attr. If there is no markup inside an +element's content, the text is contained in a single object +implementing the Text interface that is the only child of the element. +If there is markup, it is parsed into a list of elements and Text nodes +that form the list of children of the element. +.PP +When a document is first made available via the \s-1DOM,\s0 there is only one +Text node for each block of text. Users may create adjacent Text nodes +that represent the contents of a given element without any intervening +markup, but should be aware that there is no way to represent the +separations between these nodes in \s-1XML\s0 or \s-1HTML,\s0 so they will not (in +general) persist between \s-1DOM\s0 editing sessions. The \fInormalize()\fR method +on Element merges any such adjacent Text objects into a single node for +each block of text; this is recommended before employing operations +that depend on a particular document structure, such as navigation with +XPointers. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "splitText (offset)" 4 +.IX Item "splitText (offset)" +Breaks this Text node into two Text nodes at the specified +offset, keeping both in the tree as siblings. This node then +only contains all the content up to the offset point. And a +new Text node, which is inserted as the next sibling of this +node, contains all the content at and after the offset point. +.Sp +Parameters: + \fIoffset\fR The offset at which to split, starting from 0. +.Sp +Return Value: The new Text node. +.Sp +DOMExceptions: +.RS 4 +.IP "\(bu" 4 +\&\s-1INDEX_SIZE_ERR\s0 +.Sp +Raised if the specified offset is negative or greater than the number of +characters in data. +.IP "\(bu" 4 +\&\s-1NO_MODIFICATION_ALLOWED_ERR\s0 +.Sp +Raised if this node is readonly. +.RE +.RS 4 +.RE diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__XMLDecl.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__XMLDecl.3pm new file mode 100644 index 0000000000000000000000000000000000000000..99db8e51877d3483d6658261d5728ecde8972920 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__DOM__XMLDecl.3pm @@ -0,0 +1,104 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::DOM::XMLDecl 3pm" +.TH XML::DOM::XMLDecl 3pm "2000-01-31" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::DOM::XMLDecl \- XML declaration in XML::DOM +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::DOM::XMLDecl extends XML::DOM::Node, but is not part of the \s-1DOM\s0 Level 1 +specification. +.PP +It contains the \s-1XML\s0 declaration, e.g. +.PP +.Vb 1 +\& +.Ve +.PP +See also XML::DOM::Document::getXMLDecl. +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "getVersion and setVersion (version)" 4 +.IX Item "getVersion and setVersion (version)" +Returns and sets the \s-1XML\s0 version. At the time of this writing the version should +always be \*(L"1.0\*(R" +.IP "getEncoding and setEncoding (encoding)" 4 +.IX Item "getEncoding and setEncoding (encoding)" +undef may be specified for the encoding value. +.IP "getStandalone and setStandalone (standalone)" 4 +.IX Item "getStandalone and setStandalone (standalone)" +undef may be specified for the standalone value. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__Handler__BuildDOM.3pm b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__Handler__BuildDOM.3pm new file mode 100644 index 0000000000000000000000000000000000000000..5c03d6e57f0eaa510b873a440bb69b526ccd8761 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/man3/XML__Handler__BuildDOM.3pm @@ -0,0 +1,119 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "XML::Handler::BuildDOM 3pm" +.TH XML::Handler::BuildDOM 3pm "2000-02-11" "perl v5.22.1" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +XML::Handler::BuildDOM \- PerlSAX handler that creates XML::DOM document structures +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 2 +\& use XML::Handler::BuildDOM; +\& use XML::Parser::PerlSAX; +\& +\& my $handler = new XML::Handler::BuildDOM (KeepCDATA => 1); +\& my $parser = new XML::Parser::PerlSAX (Handler => $handler); +\& +\& my $doc = $parser\->parsefile ("file.xml"); +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +XML::Handler::BuildDOM creates \s-1XML::DOM\s0 document structures +(i.e. XML::DOM::Document) from PerlSAX events. +.PP +This class used to be called XML::PerlSAX::DOM prior to libxml-enno 1.0.1. +.SS "\s-1CONSTRUCTOR OPTIONS\s0" +.IX Subsection "CONSTRUCTOR OPTIONS" +The XML::Handler::BuildDOM constructor supports the following options: +.IP "\(bu" 4 +KeepCDATA => 1 +.Sp +If set to 0 (default), CDATASections will be converted to regular text. +.IP "\(bu" 4 +Document => \f(CW$doc\fR +.Sp +If undefined, start_document will extract it from Element or DocType (if set), +otherwise it will create a new XML::DOM::Document. +.IP "\(bu" 4 +Element => \f(CW$elem\fR +.Sp +If undefined, it is set to Document. This will be the insertion point (or parent) +for the nodes defined by the following callbacks. +.IP "\(bu" 4 +DocType => \f(CW$doctype\fR +.Sp +If undefined, start_document will extract it from Document (if possible). +Otherwise it adds a new XML::DOM::DocumentType to the Document. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/blib/script/.exists b/fastSum/resources/ROUGE/XML-DOM-1.46/blib/script/.exists new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM.pm new file mode 100644 index 0000000000000000000000000000000000000000..14e7084d55fb89d17eb965673f5234cc8c087155 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM.pm @@ -0,0 +1,5129 @@ +################################################################################ +# +# Perl module: XML::DOM +# +# By Enno Derksen +# +################################################################################ +# +# To do: +# +# * optimize Attr if it only contains 1 Text node to hold the value +# * fix setDocType! +# +# * BUG: setOwnerDocument - does not process default attr values correctly, +# they still point to the old doc. +# * change Exception mechanism +# * maybe: more checking of sysId etc. +# * NoExpand mode (don't know what else is useful) +# * various odds and ends: see comments starting with "??" +# * normalize(1) could also expand CDataSections and EntityReferences +# * parse a DocumentFragment? +# * encoding support +# +###################################################################### + +###################################################################### +package XML::DOM; +###################################################################### + +use strict; + +use vars qw( $VERSION @ISA @EXPORT + $IgnoreReadOnly $SafeMode $TagStyle + %DefaultEntities %DecodeDefaultEntity + ); +use Carp; +use XML::RegExp; + +BEGIN +{ + require XML::Parser; + $VERSION = '1.46'; + + my $needVersion = '2.28'; + die "need at least XML::Parser version $needVersion (current=${XML::Parser::VERSION})" + unless $XML::Parser::VERSION >= $needVersion; + + @ISA = qw( Exporter ); + + # Constants for XML::DOM Node types + @EXPORT = qw( + UNKNOWN_NODE + ELEMENT_NODE + ATTRIBUTE_NODE + TEXT_NODE + CDATA_SECTION_NODE + ENTITY_REFERENCE_NODE + ENTITY_NODE + PROCESSING_INSTRUCTION_NODE + COMMENT_NODE + DOCUMENT_NODE + DOCUMENT_TYPE_NODE + DOCUMENT_FRAGMENT_NODE + NOTATION_NODE + ELEMENT_DECL_NODE + ATT_DEF_NODE + XML_DECL_NODE + ATTLIST_DECL_NODE + ); +} + +#---- Constant definitions + +# Node types + +sub UNKNOWN_NODE () { 0 } # not in the DOM Spec + +sub ELEMENT_NODE () { 1 } +sub ATTRIBUTE_NODE () { 2 } +sub TEXT_NODE () { 3 } +sub CDATA_SECTION_NODE () { 4 } +sub ENTITY_REFERENCE_NODE () { 5 } +sub ENTITY_NODE () { 6 } +sub PROCESSING_INSTRUCTION_NODE () { 7 } +sub COMMENT_NODE () { 8 } +sub DOCUMENT_NODE () { 9 } +sub DOCUMENT_TYPE_NODE () { 10} +sub DOCUMENT_FRAGMENT_NODE () { 11} +sub NOTATION_NODE () { 12} + +sub ELEMENT_DECL_NODE () { 13 } # not in the DOM Spec +sub ATT_DEF_NODE () { 14 } # not in the DOM Spec +sub XML_DECL_NODE () { 15 } # not in the DOM Spec +sub ATTLIST_DECL_NODE () { 16 } # not in the DOM Spec + +%DefaultEntities = +( + "quot" => '"', + "gt" => ">", + "lt" => "<", + "apos" => "'", + "amp" => "&" +); + +%DecodeDefaultEntity = +( + '"' => """, + ">" => ">", + "<" => "<", + "'" => "'", + "&" => "&" +); + +# +# If you don't want DOM warnings to use 'warn', override this method like this: +# +# { # start block scope +# local *XML::DOM::warning = \&my_warn; +# ... your code here ... +# } # end block scope (old XML::DOM::warning takes effect again) +# +sub warning # static +{ + warn @_; +} + +# +# This method defines several things in the caller's package, so you can use named constants to +# access the array that holds the member data, i.e. $self->[_Data]. It assumes the caller's package +# defines a class that is implemented as a blessed array reference. +# Note that this is very similar to using 'use fields' and 'use base'. +# +# E.g. if $fields eq "Name Model", $parent eq "XML::DOM::Node" and +# XML::DOM::Node had "A B C" as fields and it was called from package "XML::DOM::ElementDecl", +# then this code would basically do the following: +# +# package XML::DOM::ElementDecl; +# +# sub _Name () { 3 } # Note that parent class had three fields +# sub _Model () { 4 } +# +# # Maps constant names (without '_') to constant (int) value +# %HFIELDS = ( %XML::DOM::Node::HFIELDS, Name => _Name, Model => _Model ); +# +# # Define XML:DOM::ElementDecl as a subclass of XML::DOM::Node +# @ISA = qw{ XML::DOM::Node }; +# +# # The following function names can be exported into the user's namespace. +# @EXPORT_OK = qw{ _Name _Model }; +# +# # The following function names can be exported into the user's namespace +# # with: import XML::DOM::ElementDecl qw( :Fields ); +# %EXPORT_TAGS = ( Fields => qw{ _Name _Model } ); +# +sub def_fields # static +{ + my ($fields, $parent) = @_; + + my ($pkg) = caller; + + no strict 'refs'; + + my @f = split (/\s+/, $fields); + my $n = 0; + + my %hfields; + if (defined $parent) + { + my %pf = %{"$parent\::HFIELDS"}; + %hfields = %pf; + + $n = scalar (keys %pf); + @{"$pkg\::ISA"} = ( $parent ); + } + + my $i = $n; + for (@f) + { + eval "sub $pkg\::_$_ () { $i }"; + $hfields{$_} = $i; + $i++; + } + %{"$pkg\::HFIELDS"} = %hfields; + @{"$pkg\::EXPORT_OK"} = map { "_$_" } @f; + + ${"$pkg\::EXPORT_TAGS"}{Fields} = [ map { "_$_" } @f ]; +} + +# sub blesh +# { +# my $hashref = shift; +# my $class = shift; +# no strict 'refs'; +# my $self = bless [\%{"$class\::FIELDS"}], $class; +# if (defined $hashref) +# { +# for (keys %$hashref) +# { +# $self->{$_} = $hashref->{$_}; +# } +# } +# $self; +# } + +# sub blesh2 +# { +# my $hashref = shift; +# my $class = shift; +# no strict 'refs'; +# my $self = bless [\%{"$class\::FIELDS"}], $class; +# if (defined $hashref) +# { +# for (keys %$hashref) +# { +# eval { $self->{$_} = $hashref->{$_}; }; +# croak "ERROR in field [$_] $@" if $@; +# } +# } +# $self; +#} + +# +# CDATA section may not contain "]]>" +# +sub encodeCDATA +{ + my ($str) = shift; + $str =~ s/]]>/]]>/go; + $str; +} + +# +# PI may not contain "?>" +# +sub encodeProcessingInstruction +{ + my ($str) = shift; + $str =~ s/\?>/?>/go; + $str; +} + +# +#?? Not sure if this is right - must prevent double minus somehow... +# +sub encodeComment +{ + my ($str) = shift; + return undef unless defined $str; + + $str =~ s/--/--/go; + $str; +} + +# +# For debugging +# +sub toHex +{ + my $str = shift; + my $len = length($str); + my @a = unpack ("C$len", $str); + my $s = ""; + for (@a) + { + $s .= sprintf ("%02x", $_); + } + $s; +} + +# +# 2nd parameter $default: list of Default Entity characters that need to be +# converted (e.g. "&<" for conversion to "&" and "<" resp.) +# +sub encodeText +{ + my ($str, $default) = @_; + return undef unless defined $str; + + if ($] >= 5.006) { + $str =~ s/([$default])|(]]>)/ + defined ($1) ? $DecodeDefaultEntity{$1} : "]]>" /egs; + } + else { + $str =~ s/([\xC0-\xDF].|[\xE0-\xEF]..|[\xF0-\xFF]...)|([$default])|(]]>)/ + defined($1) ? XmlUtf8Decode ($1) : + defined ($2) ? $DecodeDefaultEntity{$2} : "]]>" /egs; + } + +#?? could there be references that should not be expanded? +# e.g. should not replace &#nn; ¯ and &abc; +# $str =~ s/&(?!($ReName|#[0-9]+|#x[0-9a-fA-F]+);)/&/go; + + $str; +} + +# +# Used by AttDef - default value +# +sub encodeAttrValue +{ + encodeText (shift, '"&<>'); +} + +# +# Converts an integer (Unicode - ISO/IEC 10646) to a UTF-8 encoded character +# sequence. +# Used when converting e.g. { or Ͽ to a string value. +# +# Algorithm borrowed from expat/xmltok.c/XmlUtf8Encode() +# +# not checking for bad characters: < 0, x00-x08, x0B-x0C, x0E-x1F, xFFFE-xFFFF +# +sub XmlUtf8Encode +{ + my $n = shift; + if ($n < 0x80) + { + return chr ($n); + } + elsif ($n < 0x800) + { + return pack ("CC", (($n >> 6) | 0xc0), (($n & 0x3f) | 0x80)); + } + elsif ($n < 0x10000) + { + return pack ("CCC", (($n >> 12) | 0xe0), ((($n >> 6) & 0x3f) | 0x80), + (($n & 0x3f) | 0x80)); + } + elsif ($n < 0x110000) + { + return pack ("CCCC", (($n >> 18) | 0xf0), ((($n >> 12) & 0x3f) | 0x80), + ((($n >> 6) & 0x3f) | 0x80), (($n & 0x3f) | 0x80)); + } + croak "number is too large for Unicode [$n] in &XmlUtf8Encode"; +} + +# +# Opposite of XmlUtf8Decode plus it adds prefix "&#" or "&#x" and suffix ";" +# The 2nd parameter ($hex) indicates whether the result is hex encoded or not. +# +sub XmlUtf8Decode +{ + my ($str, $hex) = @_; + my $len = length ($str); + my $n; + + if ($len == 2) + { + my @n = unpack "C2", $str; + $n = (($n[0] & 0x3f) << 6) + ($n[1] & 0x3f); + } + elsif ($len == 3) + { + my @n = unpack "C3", $str; + $n = (($n[0] & 0x1f) << 12) + (($n[1] & 0x3f) << 6) + + ($n[2] & 0x3f); + } + elsif ($len == 4) + { + my @n = unpack "C4", $str; + $n = (($n[0] & 0x0f) << 18) + (($n[1] & 0x3f) << 12) + + (($n[2] & 0x3f) << 6) + ($n[3] & 0x3f); + } + elsif ($len == 1) # just to be complete... + { + $n = ord ($str); + } + else + { + croak "bad value [$str] for XmlUtf8Decode"; + } + $hex ? sprintf ("&#x%x;", $n) : "&#$n;"; +} + +$IgnoreReadOnly = 0; +$SafeMode = 1; + +sub getIgnoreReadOnly +{ + $IgnoreReadOnly; +} + +# +# The global flag $IgnoreReadOnly is set to the specified value and the old +# value of $IgnoreReadOnly is returned. +# +# To temporarily disable read-only related exceptions (i.e. when parsing +# XML or temporarily), do the following: +# +# my $oldIgnore = XML::DOM::ignoreReadOnly (1); +# ... do whatever you want ... +# XML::DOM::ignoreReadOnly ($oldIgnore); +# +sub ignoreReadOnly +{ + my $i = $IgnoreReadOnly; + $IgnoreReadOnly = $_[0]; + return $i; +} + +# +# XML spec seems to break its own rules... (see ENTITY xmlpio) +# +sub forgiving_isValidName +{ + use bytes; # XML::RegExp expressed in terms encoded UTF8 + $_[0] =~ /^$XML::RegExp::Name$/o; +} + +# +# Don't allow names starting with xml (either case) +# +sub picky_isValidName +{ + use bytes; # XML::RegExp expressed in terms encoded UTF8 + $_[0] =~ /^$XML::RegExp::Name$/o and $_[0] !~ /^xml/i; +} + +# Be forgiving by default, +*isValidName = \&forgiving_isValidName; + +sub allowReservedNames # static +{ + *isValidName = ($_[0] ? \&forgiving_isValidName : \&picky_isValidName); +} + +sub getAllowReservedNames # static +{ + *isValidName == \&forgiving_isValidName; +} + +# +# Always compress empty tags by default +# This is used by Element::print. +# +$TagStyle = sub { 0 }; + +sub setTagCompression +{ + $TagStyle = shift; +} + +###################################################################### +package XML::DOM::PrintToFileHandle; +###################################################################### + +# +# Used by XML::DOM::Node::printToFileHandle +# + +sub new +{ + my($class, $fn) = @_; + bless $fn, $class; +} + +sub print +{ + my ($self, $str) = @_; + print $self $str; +} + +###################################################################### +package XML::DOM::PrintToString; +###################################################################### + +use vars qw{ $Singleton }; + +# +# Used by XML::DOM::Node::toString to concatenate strings +# + +sub new +{ + my($class) = @_; + my $str = ""; + bless \$str, $class; +} + +sub print +{ + my ($self, $str) = @_; + $$self .= $str; +} + +sub toString +{ + my $self = shift; + $$self; +} + +sub reset +{ + ${$_[0]} = ""; +} + +$Singleton = new XML::DOM::PrintToString; + +###################################################################### +package XML::DOM::DOMImplementation; +###################################################################### + +$XML::DOM::DOMImplementation::Singleton = + bless \$XML::DOM::DOMImplementation::Singleton, 'XML::DOM::DOMImplementation'; + +sub hasFeature +{ + my ($self, $feature, $version) = @_; + + uc($feature) eq 'XML' and ($version eq '1.0' || $version eq ''); +} + + +###################################################################### +package XML::XQL::Node; # forward declaration +###################################################################### + +###################################################################### +package XML::DOM::Node; +###################################################################### + +use vars qw( @NodeNames @EXPORT @ISA %HFIELDS @EXPORT_OK @EXPORT_TAGS ); + +BEGIN +{ + use XML::DOM::DOMException; + import Carp; + + require FileHandle; + + @ISA = qw( Exporter XML::XQL::Node ); + + # NOTE: SortKey is used in XML::XQL::Node. + # UserData is reserved for users (Hang your data here!) + XML::DOM::def_fields ("C A Doc Parent ReadOnly UsedIn Hidden SortKey UserData"); + + push (@EXPORT, qw( + UNKNOWN_NODE + ELEMENT_NODE + ATTRIBUTE_NODE + TEXT_NODE + CDATA_SECTION_NODE + ENTITY_REFERENCE_NODE + ENTITY_NODE + PROCESSING_INSTRUCTION_NODE + COMMENT_NODE + DOCUMENT_NODE + DOCUMENT_TYPE_NODE + DOCUMENT_FRAGMENT_NODE + NOTATION_NODE + ELEMENT_DECL_NODE + ATT_DEF_NODE + XML_DECL_NODE + ATTLIST_DECL_NODE + )); +} + +#---- Constant definitions + +# Node types + +sub UNKNOWN_NODE () {0;} # not in the DOM Spec + +sub ELEMENT_NODE () {1;} +sub ATTRIBUTE_NODE () {2;} +sub TEXT_NODE () {3;} +sub CDATA_SECTION_NODE () {4;} +sub ENTITY_REFERENCE_NODE () {5;} +sub ENTITY_NODE () {6;} +sub PROCESSING_INSTRUCTION_NODE () {7;} +sub COMMENT_NODE () {8;} +sub DOCUMENT_NODE () {9;} +sub DOCUMENT_TYPE_NODE () {10;} +sub DOCUMENT_FRAGMENT_NODE () {11;} +sub NOTATION_NODE () {12;} + +sub ELEMENT_DECL_NODE () {13;} # not in the DOM Spec +sub ATT_DEF_NODE () {14;} # not in the DOM Spec +sub XML_DECL_NODE () {15;} # not in the DOM Spec +sub ATTLIST_DECL_NODE () {16;} # not in the DOM Spec + +@NodeNames = ( + "UNKNOWN_NODE", # not in the DOM Spec! + + "ELEMENT_NODE", + "ATTRIBUTE_NODE", + "TEXT_NODE", + "CDATA_SECTION_NODE", + "ENTITY_REFERENCE_NODE", + "ENTITY_NODE", + "PROCESSING_INSTRUCTION_NODE", + "COMMENT_NODE", + "DOCUMENT_NODE", + "DOCUMENT_TYPE_NODE", + "DOCUMENT_FRAGMENT_NODE", + "NOTATION_NODE", + + "ELEMENT_DECL_NODE", + "ATT_DEF_NODE", + "XML_DECL_NODE", + "ATTLIST_DECL_NODE" + ); + +sub decoupleUsedIn +{ + my $self = shift; + undef $self->[_UsedIn]; # was delete +} + +sub getParentNode +{ + $_[0]->[_Parent]; +} + +sub appendChild +{ + my ($self, $node) = @_; + + # REC 7473 + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + } + + my $doc = $self->[_Doc]; + + if ($node->isDocumentFragmentNode) + { + if ($XML::DOM::SafeMode) + { + for my $n (@{$node->[_C]}) + { + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR, + "nodes belong to different documents") + if $doc != $n->[_Doc]; + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "node is ancestor of parent node") + if $n->isAncestor ($self); + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "bad node type") + if $self->rejectChild ($n); + } + } + + my @list = @{$node->[_C]}; # don't try to compress this + for my $n (@list) + { + $n->setParentNode ($self); + } + push @{$self->[_C]}, @list; + } + else + { + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR, + "nodes belong to different documents") + if $doc != $node->[_Doc]; + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "node is ancestor of parent node") + if $node->isAncestor ($self); + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "bad node type") + if $self->rejectChild ($node); + } + $node->setParentNode ($self); + push @{$self->[_C]}, $node; + } + $node; +} + +sub getChildNodes +{ + # NOTE: if node can't have children, $self->[_C] is undef. + my $kids = $_[0]->[_C]; + + # Return a list if called in list context. + wantarray ? (defined ($kids) ? @{ $kids } : ()) : + (defined ($kids) ? $kids : $XML::DOM::NodeList::EMPTY); +} + +sub hasChildNodes +{ + my $kids = $_[0]->[_C]; + defined ($kids) && @$kids > 0; +} + +# This method is overriden in Document +sub getOwnerDocument +{ + $_[0]->[_Doc]; +} + +sub getFirstChild +{ + my $kids = $_[0]->[_C]; + defined $kids ? $kids->[0] : undef; +} + +sub getLastChild +{ + my $kids = $_[0]->[_C]; + defined $kids ? $kids->[-1] : undef; +} + +sub getPreviousSibling +{ + my $self = shift; + + my $pa = $self->[_Parent]; + return undef unless $pa; + my $index = $pa->getChildIndex ($self); + return undef unless $index; + + $pa->getChildAtIndex ($index - 1); +} + +sub getNextSibling +{ + my $self = shift; + + my $pa = $self->[_Parent]; + return undef unless $pa; + + $pa->getChildAtIndex ($pa->getChildIndex ($self) + 1); +} + +sub insertBefore +{ + my ($self, $node, $refNode) = @_; + + return $self->appendChild ($node) unless $refNode; # append at the end + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my @nodes = ($node); + @nodes = @{$node->[_C]} + if $node->getNodeType == DOCUMENT_FRAGMENT_NODE; + + my $doc = $self->[_Doc]; + + for my $n (@nodes) + { + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR, + "nodes belong to different documents") + if $doc != $n->[_Doc]; + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "node is ancestor of parent node") + if $n->isAncestor ($self); + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "bad node type") + if $self->rejectChild ($n); + } + my $index = $self->getChildIndex ($refNode); + + croak new XML::DOM::DOMException (NOT_FOUND_ERR, + "reference node not found") + if $index == -1; + + for my $n (@nodes) + { + $n->setParentNode ($self); + } + + splice (@{$self->[_C]}, $index, 0, @nodes); + $node; +} + +sub replaceChild +{ + my ($self, $node, $refNode) = @_; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my @nodes = ($node); + @nodes = @{$node->[_C]} + if $node->getNodeType == DOCUMENT_FRAGMENT_NODE; + + for my $n (@nodes) + { + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR, + "nodes belong to different documents") + if $self->[_Doc] != $n->[_Doc]; + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "node is ancestor of parent node") + if $n->isAncestor ($self); + + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "bad node type") + if $self->rejectChild ($n); + } + + my $index = $self->getChildIndex ($refNode); + croak new XML::DOM::DOMException (NOT_FOUND_ERR, + "reference node not found") + if $index == -1; + + for my $n (@nodes) + { + $n->setParentNode ($self); + } + splice (@{$self->[_C]}, $index, 1, @nodes); + + $refNode->removeChildHoodMemories; + $refNode; +} + +sub removeChild +{ + my ($self, $node) = @_; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my $index = $self->getChildIndex ($node); + + croak new XML::DOM::DOMException (NOT_FOUND_ERR, + "reference node not found") + if $index == -1; + + splice (@{$self->[_C]}, $index, 1, ()); + + $node->removeChildHoodMemories; + $node; +} + +# Merge all subsequent Text nodes in this subtree +sub normalize +{ + my ($self) = shift; + my $prev = undef; # previous Text node + + return unless defined $self->[_C]; + + my @nodes = @{$self->[_C]}; + my $i = 0; + my $n = @nodes; + while ($i < $n) + { + my $node = $self->getChildAtIndex($i); + my $type = $node->getNodeType; + + if (defined $prev) + { + # It should not merge CDATASections. Dom Spec says: + # Adjacent CDATASections nodes are not merged by use + # of the Element.normalize() method. + if ($type == TEXT_NODE) + { + $prev->appendData ($node->getData); + $self->removeChild ($node); + $i--; + $n--; + } + else + { + $prev = undef; + if ($type == ELEMENT_NODE) + { + $node->normalize; + if (defined $node->[_A]) + { + for my $attr (@{$node->[_A]->getValues}) + { + $attr->normalize; + } + } + } + } + } + else + { + if ($type == TEXT_NODE) + { + $prev = $node; + } + elsif ($type == ELEMENT_NODE) + { + $node->normalize; + if (defined $node->[_A]) + { + for my $attr (@{$node->[_A]->getValues}) + { + $attr->normalize; + } + } + } + } + $i++; + } +} + +# +# Return all Element nodes in the subtree that have the specified tagName. +# If tagName is "*", all Element nodes are returned. +# NOTE: the DOM Spec does not specify a 3rd or 4th parameter +# +sub getElementsByTagName +{ + my ($self, $tagName, $recurse, $list) = @_; + $recurse = 1 unless defined $recurse; + $list = (wantarray ? [] : new XML::DOM::NodeList) unless defined $list; + + return unless defined $self->[_C]; + + # preorder traversal: check parent node first + for my $kid (@{$self->[_C]}) + { + if ($kid->isElementNode) + { + if ($tagName eq "*" || $tagName eq $kid->getTagName) + { + push @{$list}, $kid; + } + $kid->getElementsByTagName ($tagName, $recurse, $list) if $recurse; + } + } + wantarray ? @{ $list } : $list; +} + +sub getNodeValue +{ + undef; +} + +sub setNodeValue +{ + # no-op +} + +# +# Redefined by XML::DOM::Element +# +sub getAttributes +{ + undef; +} + +#------------------------------------------------------------ +# Extra method implementations + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + $self->[_Doc] = $doc; + + return unless defined $self->[_C]; + + for my $kid (@{$self->[_C]}) + { + $kid->setOwnerDocument ($doc); + } +} + +sub cloneChildren +{ + my ($self, $node, $deep) = @_; + return unless $deep; + + return unless defined $self->[_C]; + + local $XML::DOM::IgnoreReadOnly = 1; + + for my $kid (@{$node->[_C]}) + { + my $newNode = $kid->cloneNode ($deep); + push @{$self->[_C]}, $newNode; + $newNode->setParentNode ($self); + } +} + +# +# For internal use only! +# +sub removeChildHoodMemories +{ + my ($self) = @_; + + undef $self->[_Parent]; # was delete +} + +# +# Remove circular dependencies. The Node and its children should +# not be used afterwards. +# +sub dispose +{ + my $self = shift; + + $self->removeChildHoodMemories; + + if (defined $self->[_C]) + { + $self->[_C]->dispose; + undef $self->[_C]; # was delete + } + undef $self->[_Doc]; # was delete +} + +# +# For internal use only! +# +sub setParentNode +{ + my ($self, $parent) = @_; + + # REC 7473 + my $oldParent = $self->[_Parent]; + if (defined $oldParent) + { + # remove from current parent + my $index = $oldParent->getChildIndex ($self); + + # NOTE: we don't have to check if [_C] is defined, + # because were removing a child here! + splice (@{$oldParent->[_C]}, $index, 1, ()); + + $self->removeChildHoodMemories; + } + $self->[_Parent] = $parent; +} + +# +# This function can return 3 values: +# 1: always readOnly +# 0: never readOnly +# undef: depends on parent node +# +# Returns 1 for DocumentType, Notation, Entity, EntityReference, Attlist, +# ElementDecl, AttDef. +# The first 4 are readOnly according to the DOM Spec, the others are always +# children of DocumentType. (Naturally, children of a readOnly node have to be +# readOnly as well...) +# These nodes are always readOnly regardless of who their ancestors are. +# Other nodes, e.g. Comment, are readOnly only if their parent is readOnly, +# which basically means that one of its ancestors has to be one of the +# aforementioned node types. +# Document and DocumentFragment return 0 for obvious reasons. +# Attr, Element, CDATASection, Text return 0. The DOM spec says that they can +# be children of an Entity, but I don't think that that's possible +# with the current XML::Parser. +# Attr uses a {ReadOnly} property, which is only set if it's part of a AttDef. +# Always returns 0 if ignoreReadOnly is set. +# +sub isReadOnly +{ + # default implementation for Nodes that are always readOnly + ! $XML::DOM::IgnoreReadOnly; +} + +sub rejectChild +{ + 1; +} + +sub getNodeTypeName +{ + $NodeNames[$_[0]->getNodeType]; +} + +sub getChildIndex +{ + my ($self, $node) = @_; + my $i = 0; + + return -1 unless defined $self->[_C]; + + for my $kid (@{$self->[_C]}) + { + return $i if $kid == $node; + $i++; + } + -1; +} + +sub getChildAtIndex +{ + my $kids = $_[0]->[_C]; + defined ($kids) ? $kids->[$_[1]] : undef; +} + +sub isAncestor +{ + my ($self, $node) = @_; + + do + { + return 1 if $self == $node; + $node = $node->[_Parent]; + } + while (defined $node); + + 0; +} + +# +# Added for optimization. Overriden in XML::DOM::Text +# +sub isTextNode +{ + 0; +} + +# +# Added for optimization. Overriden in XML::DOM::DocumentFragment +# +sub isDocumentFragmentNode +{ + 0; +} + +# +# Added for optimization. Overriden in XML::DOM::Element +# +sub isElementNode +{ + 0; +} + +# +# Add a Text node with the specified value or append the text to the +# previous Node if it is a Text node. +# +sub addText +{ + # REC 9456 (if it was called) + my ($self, $str) = @_; + + my $node = ${$self->[_C]}[-1]; # $self->getLastChild + + if (defined ($node) && $node->isTextNode) + { + # REC 5475 (if it was called) + $node->appendData ($str); + } + else + { + $node = $self->[_Doc]->createTextNode ($str); + $self->appendChild ($node); + } + $node; +} + +# +# Add a CDATASection node with the specified value or append the text to the +# previous Node if it is a CDATASection node. +# +sub addCDATA +{ + my ($self, $str) = @_; + + my $node = ${$self->[_C]}[-1]; # $self->getLastChild + + if (defined ($node) && $node->getNodeType == CDATA_SECTION_NODE) + { + $node->appendData ($str); + } + else + { + $node = $self->[_Doc]->createCDATASection ($str); + $self->appendChild ($node); + } +} + +sub removeChildNodes +{ + my $self = shift; + + my $cref = $self->[_C]; + return unless defined $cref; + + my $kid; + while ($kid = pop @{$cref}) + { + undef $kid->[_Parent]; # was delete + } +} + +sub toString +{ + my $self = shift; + my $pr = $XML::DOM::PrintToString::Singleton; + $pr->reset; + $self->print ($pr); + $pr->toString; +} + +sub to_sax +{ + my $self = shift; + unshift @_, 'Handler' if (@_ == 1); + my %h = @_; + + my $doch = exists ($h{DocumentHandler}) ? $h{DocumentHandler} + : $h{Handler}; + my $dtdh = exists ($h{DTDHandler}) ? $h{DTDHandler} + : $h{Handler}; + my $enth = exists ($h{EntityResolver}) ? $h{EntityResolver} + : $h{Handler}; + + $self->_to_sax ($doch, $dtdh, $enth); +} + +sub printToFile +{ + my ($self, $fileName) = @_; + my $encoding = $self->getXMLDecl()->getEncoding(); + my $fh = new FileHandle ($fileName, ">:encoding($encoding)") || + croak "printToFile - can't open output file $fileName"; + + $self->print ($fh); + $fh->close; +} + +# +# Use print to print to a FileHandle object (see printToFile code) +# +sub printToFileHandle +{ + my ($self, $FH) = @_; + my $pr = new XML::DOM::PrintToFileHandle ($FH); + $self->print ($pr); +} + +# +# Used by AttDef::setDefault to convert unexpanded default attribute value +# +sub expandEntityRefs +{ + my ($self, $str) = @_; + my $doctype = $self->[_Doc]->getDoctype; + + use bytes; # XML::RegExp expressed in terms encoded UTF8 + $str =~ s/&($XML::RegExp::Name|(#([0-9]+)|#x([0-9a-fA-F]+)));/ + defined($2) ? XML::DOM::XmlUtf8Encode ($3 || hex ($4)) + : expandEntityRef ($1, $doctype)/ego; + $str; +} + +sub expandEntityRef +{ + my ($entity, $doctype) = @_; + + my $expanded = $XML::DOM::DefaultEntities{$entity}; + return $expanded if defined $expanded; + + $expanded = $doctype->getEntity ($entity); + return $expanded->getValue if (defined $expanded); + +#?? is this an error? + croak "Could not expand entity reference of [$entity]\n"; +# return "&$entity;"; # entity not found +} + +sub isHidden +{ + $_[0]->[_Hidden]; +} + +###################################################################### +package XML::DOM::Attr; +###################################################################### + +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Name Specified", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +sub new +{ + my ($class, $doc, $name, $value, $specified) = @_; + + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Attr name [$name]") + unless XML::DOM::isValidName ($name); + } + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_C] = new XML::DOM::NodeList; + $self->[_Name] = $name; + + if (defined $value) + { + $self->setValue ($value); + $self->[_Specified] = (defined $specified) ? $specified : 1; + } + else + { + $self->[_Specified] = 0; + } + $self; +} + +sub getNodeType +{ + ATTRIBUTE_NODE; +} + +sub isSpecified +{ + $_[0]->[_Specified]; +} + +sub getName +{ + $_[0]->[_Name]; +} + +sub getValue +{ + my $self = shift; + my $value = ""; + + for my $kid (@{$self->[_C]}) + { + $value .= $kid->getData if defined $kid->getData; + } + $value; +} + +sub setValue +{ + my ($self, $value) = @_; + + # REC 1147 + $self->removeChildNodes; + $self->appendChild ($self->[_Doc]->createTextNode ($value)); + $self->[_Specified] = 1; +} + +sub getNodeName +{ + $_[0]->getName; +} + +sub getNodeValue +{ + $_[0]->getValue; +} + +sub setNodeValue +{ + $_[0]->setValue ($_[1]); +} + +sub cloneNode +{ + my ($self) = @_; # parameter deep is ignored + + my $node = $self->[_Doc]->createAttribute ($self->getName); + $node->[_Specified] = $self->[_Specified]; + $node->[_ReadOnly] = 1 if $self->[_ReadOnly]; + + $node->cloneChildren ($self, 1); + $node; +} + +#------------------------------------------------------------ +# Extra method implementations +# + +sub isReadOnly +{ + # ReadOnly property is set if it's part of a AttDef + ! $XML::DOM::IgnoreReadOnly && defined ($_[0]->[_ReadOnly]); +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_Name]; + + $FILE->print ("$name=\""); + for my $kid (@{$self->[_C]}) + { + if ($kid->getNodeType == TEXT_NODE) + { + $FILE->print (XML::DOM::encodeAttrValue ($kid->getData)); + } + else # ENTITY_REFERENCE_NODE + { + $kid->print ($FILE); + } + } + $FILE->print ("\""); +} + +sub rejectChild +{ + my $t = $_[1]->getNodeType; + + $t != TEXT_NODE + && $t != ENTITY_REFERENCE_NODE; +} + +###################################################################### +package XML::DOM::ProcessingInstruction; +###################################################################### + +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Target Data", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +sub new +{ + my ($class, $doc, $target, $data, $hidden) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad ProcessingInstruction Target [$target]") + unless (XML::DOM::isValidName ($target) && $target !~ /^xml$/io); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Target] = $target; + $self->[_Data] = $data; + $self->[_Hidden] = $hidden; + $self; +} + +sub getNodeType +{ + PROCESSING_INSTRUCTION_NODE; +} + +sub getTarget +{ + $_[0]->[_Target]; +} + +sub getData +{ + $_[0]->[_Data]; +} + +sub setData +{ + my ($self, $data) = @_; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + $self->[_Data] = $data; +} + +sub getNodeName +{ + $_[0]->[_Target]; +} + +# +# Same as getData +# +sub getNodeValue +{ + $_[0]->[_Data]; +} + +sub setNodeValue +{ + $_[0]->setData ($_[1]); +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createProcessingInstruction ($self->getTarget, + $self->getData, + $self->isHidden); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + return 0 if $XML::DOM::IgnoreReadOnly; + + my $pa = $_[0]->[_Parent]; + defined ($pa) ? $pa->isReadOnly : 0; +} + +sub print +{ + my ($self, $FILE) = @_; + + $FILE->print ("print ($self->[_Target]); + $FILE->print (" "); + $FILE->print (XML::DOM::encodeProcessingInstruction ($self->[_Data])); + $FILE->print ("?>"); +} + +sub _to_sax { + my ($self, $doch) = @_; + $doch->processing_instruction({Target => $self->getTarget, Data => $self->getData}); +} + +###################################################################### +package XML::DOM::Notation; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Name Base SysId PubId", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +sub new +{ + my ($class, $doc, $name, $base, $sysId, $pubId, $hidden) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Notation Name [$name]") + unless XML::DOM::isValidName ($name); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Name] = $name; + $self->[_Base] = $base; + $self->[_SysId] = $sysId; + $self->[_PubId] = $pubId; + $self->[_Hidden] = $hidden; + $self; +} + +sub getNodeType +{ + NOTATION_NODE; +} + +sub getPubId +{ + $_[0]->[_PubId]; +} + +sub setPubId +{ + $_[0]->[_PubId] = $_[1]; +} + +sub getSysId +{ + $_[0]->[_SysId]; +} + +sub setSysId +{ + $_[0]->[_SysId] = $_[1]; +} + +sub getName +{ + $_[0]->[_Name]; +} + +sub setName +{ + $_[0]->[_Name] = $_[1]; +} + +sub getBase +{ + $_[0]->[_Base]; +} + +sub getNodeName +{ + $_[0]->[_Name]; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_Name]; + my $sysId = $self->[_SysId]; + my $pubId = $self->[_PubId]; + + $FILE->print ("print (" PUBLIC \"$pubId\""); + } + if (defined $sysId) + { + $FILE->print (" SYSTEM \"$sysId\""); + } + $FILE->print (">"); +} + +sub cloneNode +{ + my ($self) = @_; + $self->[_Doc]->createNotation ($self->[_Name], $self->[_Base], + $self->[_SysId], $self->[_PubId], + $self->[_Hidden]); +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->Notation ($self->getName, $self->getBase, + $self->getSysId, $self->getPubId); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $dtdh->notation_decl ( { Name => $self->getName, + Base => $self->getBase, + SystemId => $self->getSysId, + PublicId => $self->getPubId }); +} + +###################################################################### +package XML::DOM::Entity; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("NotationName Parameter Value Ndata SysId PubId", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +sub new +{ + my ($class, $doc, $notationName, $value, $sysId, $pubId, $ndata, $isParam, $hidden) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Entity Name [$notationName]") + unless XML::DOM::isValidName ($notationName); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_NotationName] = $notationName; + $self->[_Parameter] = $isParam; + $self->[_Value] = $value; + $self->[_Ndata] = $ndata; + $self->[_SysId] = $sysId; + $self->[_PubId] = $pubId; + $self->[_Hidden] = $hidden; + $self; +#?? maybe Value should be a Text node +} + +sub getNodeType +{ + ENTITY_NODE; +} + +sub getPubId +{ + $_[0]->[_PubId]; +} + +sub getSysId +{ + $_[0]->[_SysId]; +} + +# Dom Spec says: +# For unparsed entities, the name of the notation for the +# entity. For parsed entities, this is null. + +#?? do we have unparsed entities? +sub getNotationName +{ + $_[0]->[_NotationName]; +} + +sub getNodeName +{ + $_[0]->[_NotationName]; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createEntity ($self->[_NotationName], $self->[_Value], + $self->[_SysId], $self->[_PubId], + $self->[_Ndata], $self->[_Parameter], $self->[_Hidden]); +} + +sub rejectChild +{ + return 1; +#?? if value is split over subnodes, recode this section +# also add: C => new XML::DOM::NodeList, + + my $t = $_[1]; + + return $t == TEXT_NODE + || $t == ENTITY_REFERENCE_NODE + || $t == PROCESSING_INSTRUCTION_NODE + || $t == COMMENT_NODE + || $t == CDATA_SECTION_NODE + || $t == ELEMENT_NODE; +} + +sub getValue +{ + $_[0]->[_Value]; +} + +sub isParameterEntity +{ + $_[0]->[_Parameter]; +} + +sub getNdata +{ + $_[0]->[_Ndata]; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_NotationName]; + + my $par = $self->isParameterEntity ? "% " : ""; + + $FILE->print ("[_Value]; + my $sysId = $self->[_SysId]; + my $pubId = $self->[_PubId]; + my $ndata = $self->[_Ndata]; + + if (defined $value) + { +#?? Not sure what to do if it contains both single and double quote + $value = ($value =~ /\"/) ? "'$value'" : "\"$value\""; + $FILE->print (" $value"); + } + if (defined $pubId) + { + $FILE->print (" PUBLIC \"$pubId\""); + } + elsif (defined $sysId) + { + $FILE->print (" SYSTEM"); + } + + if (defined $sysId) + { + $FILE->print (" \"$sysId\""); + } + $FILE->print (" NDATA $ndata") if defined $ndata; + $FILE->print (">"); +} + +sub to_expat +{ + my ($self, $iter) = @_; + my $name = ($self->isParameterEntity ? '%' : "") . $self->getNotationName; + $iter->Entity ($name, + $self->getValue, $self->getSysId, $self->getPubId, + $self->getNdata); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + my $name = ($self->isParameterEntity ? '%' : "") . $self->getNotationName; + $dtdh->entity_decl ( { Name => $name, + Value => $self->getValue, + SystemId => $self->getSysId, + PublicId => $self->getPubId, + Notation => $self->getNdata } ); +} + +###################################################################### +package XML::DOM::EntityReference; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("EntityName Parameter NoExpand", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +sub new +{ + my ($class, $doc, $name, $parameter, $noExpand) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Entity Name [$name] in EntityReference") + unless XML::DOM::isValidName ($name); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_EntityName] = $name; + $self->[_Parameter] = ($parameter || 0); + $self->[_NoExpand] = ($noExpand || 0); + + $self; +} + +sub getNodeType +{ + ENTITY_REFERENCE_NODE; +} + +sub getNodeName +{ + $_[0]->[_EntityName]; +} + +#------------------------------------------------------------ +# Extra method implementations + +sub getEntityName +{ + $_[0]->[_EntityName]; +} + +sub isParameterEntity +{ + $_[0]->[_Parameter]; +} + +sub getData +{ + my $self = shift; + my $name = $self->[_EntityName]; + my $parameter = $self->[_Parameter]; + + my $data; + if ($self->[_NoExpand]) { + $data = "&$name;" if $name; + } else { + $data = $self->[_Doc]->expandEntity ($name, $parameter); + } + + unless (defined $data) + { +#?? this is probably an error, but perhaps requires check to NoExpand +# will fix it? + my $pc = $parameter ? "%" : "&"; + $data = "$pc$name;"; + } + $data; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_EntityName]; + +#?? or do we expand the entities? + + my $pc = $self->[_Parameter] ? "%" : "&"; + $FILE->print ("$pc$name;"); +} + +# Dom Spec says: +# [...] but if such an Entity exists, then +# the child list of the EntityReference node is the same as that of the +# Entity node. +# +# The resolution of the children of the EntityReference (the replacement +# value of the referenced Entity) may be lazily evaluated; actions by the +# user (such as calling the childNodes method on the EntityReference +# node) are assumed to trigger the evaluation. +sub getChildNodes +{ + my $self = shift; + my $entity = $self->[_Doc]->getEntity ($self->[_EntityName]); + defined ($entity) ? $entity->getChildNodes : new XML::DOM::NodeList; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createEntityReference ($self->[_EntityName], + $self->[_Parameter], + $self->[_NoExpand], + ); +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->EntityRef ($self->getEntityName, $self->isParameterEntity); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + my @par = $self->isParameterEntity ? (Parameter => 1) : (); +#?? not supported by PerlSAX: $self->isParameterEntity + + $doch->entity_reference ( { Name => $self->getEntityName, @par } ); +} + +# NOTE: an EntityReference can't really have children, so rejectChild +# is not reimplemented (i.e. it always returns 0.) + +###################################################################### +package XML::DOM::AttDef; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Name Type Fixed Default Required Implied Quote", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +#------------------------------------------------------------ +# Extra method implementations + +# AttDef is not part of DOM Spec +sub new +{ + my ($class, $doc, $name, $attrType, $default, $fixed, $hidden) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Attr name in AttDef [$name]") + unless XML::DOM::isValidName ($name); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Name] = $name; + $self->[_Type] = $attrType; + + if (defined $default) + { + if ($default eq "#REQUIRED") + { + $self->[_Required] = 1; + } + elsif ($default eq "#IMPLIED") + { + $self->[_Implied] = 1; + } + else + { + # strip off quotes - see Attlist handler in XML::Parser + # this regexp doesn't work with 5.8.0 unicode +# $default =~ m#^(["'])(.*)['"]$#; +# $self->[_Quote] = $1; # keep track of the quote character +# $self->[_Default] = $self->setDefault ($2); + + # workaround for 5.8.0 unicode + $default =~ s!^(["'])!!; + $self->[_Quote] = $1; + $default =~ s!(["'])$!!; + $self->[_Default] = $self->setDefault ($default); + +#?? should default value be decoded - what if it contains e.g. "&" + } + } + $self->[_Fixed] = $fixed if defined $fixed; + $self->[_Hidden] = $hidden if defined $hidden; + + $self; +} + +sub getNodeType +{ + ATT_DEF_NODE; +} + +sub getName +{ + $_[0]->[_Name]; +} + +# So it can be added to a NamedNodeMap +sub getNodeName +{ + $_[0]->[_Name]; +} + +sub getType +{ + $_[0]->[_Type]; +} + +sub setType +{ + $_[0]->[_Type] = $_[1]; +} + +sub getDefault +{ + $_[0]->[_Default]; +} + +sub setDefault +{ + my ($self, $value) = @_; + + # specified=0, it's the default ! + my $attr = $self->[_Doc]->createAttribute ($self->[_Name], undef, 0); + $attr->[_ReadOnly] = 1; + +#?? this should be split over Text and EntityReference nodes, just like other +# Attr nodes - just expand the text for now + $value = $self->expandEntityRefs ($value); + $attr->addText ($value); +#?? reimplement in NoExpand mode! + + $attr; +} + +sub isFixed +{ + $_[0]->[_Fixed] || 0; +} + +sub isRequired +{ + $_[0]->[_Required] || 0; +} + +sub isImplied +{ + $_[0]->[_Implied] || 0; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_Name]; + my $type = $self->[_Type]; + my $fixed = $self->[_Fixed]; + my $default = $self->[_Default]; + +# $FILE->print ("$name $type"); + # replaced line above with the two lines below + # seems to be a bug in perl 5.6.0 that causes + # test 3 of dom_jp_attr.t to fail? + $FILE->print ($name); + $FILE->print (" $type"); + + $FILE->print (" #FIXED") if defined $fixed; + + if ($self->[_Required]) + { + $FILE->print (" #REQUIRED"); + } + elsif ($self->[_Implied]) + { + $FILE->print (" #IMPLIED"); + } + elsif (defined ($default)) + { + my $quote = $self->[_Quote]; + $FILE->print (" $quote"); + for my $kid (@{$default->[_C]}) + { + $kid->print ($FILE); + } + $FILE->print ($quote); + } +} + +sub getDefaultString +{ + my $self = shift; + my $default; + + if ($self->[_Required]) + { + return "#REQUIRED"; + } + elsif ($self->[_Implied]) + { + return "#IMPLIED"; + } + elsif (defined ($default = $self->[_Default])) + { + my $quote = $self->[_Quote]; + $default = $default->toString; + return "$quote$default$quote"; + } + undef; +} + +sub cloneNode +{ + my $self = shift; + my $node = new XML::DOM::AttDef ($self->[_Doc], $self->[_Name], $self->[_Type], + undef, $self->[_Fixed]); + + $node->[_Required] = 1 if $self->[_Required]; + $node->[_Implied] = 1 if $self->[_Implied]; + $node->[_Fixed] = $self->[_Fixed] if defined $self->[_Fixed]; + $node->[_Hidden] = $self->[_Hidden] if defined $self->[_Hidden]; + + if (defined $self->[_Default]) + { + $node->[_Default] = $self->[_Default]->cloneNode(1); + } + $node->[_Quote] = $self->[_Quote]; + + $node; +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + $self->SUPER::setOwnerDocument ($doc); + + if (defined $self->[_Default]) + { + $self->[_Default]->setOwnerDocument ($doc); + } +} + +###################################################################### +package XML::DOM::AttlistDecl; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + import XML::DOM::AttDef qw{ :Fields }; + + XML::DOM::def_fields ("ElementName", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + +#------------------------------------------------------------ +# Extra method implementations + +# AttlistDecl is not part of the DOM Spec +sub new +{ + my ($class, $doc, $name) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Element TagName [$name] in AttlistDecl") + unless XML::DOM::isValidName ($name); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_C] = new XML::DOM::NodeList; + $self->[_ReadOnly] = 1; + $self->[_ElementName] = $name; + + $self->[_A] = new XML::DOM::NamedNodeMap (Doc => $doc, + ReadOnly => 1, + Parent => $self); + + $self; +} + +sub getNodeType +{ + ATTLIST_DECL_NODE; +} + +sub getName +{ + $_[0]->[_ElementName]; +} + +sub getNodeName +{ + $_[0]->[_ElementName]; +} + +sub getAttDef +{ + my ($self, $attrName) = @_; + $self->[_A]->getNamedItem ($attrName); +} + +sub addAttDef +{ + my ($self, $attrName, $type, $default, $fixed, $hidden) = @_; + my $node = $self->getAttDef ($attrName); + + if (defined $node) + { + # data will be ignored if already defined + my $elemName = $self->getName; + XML::DOM::warning ("multiple definitions of attribute $attrName for element $elemName, only first one is recognized"); + } + else + { + $node = new XML::DOM::AttDef ($self->[_Doc], $attrName, $type, + $default, $fixed, $hidden); + $self->[_A]->setNamedItem ($node); + } + $node; +} + +sub getDefaultAttrValue +{ + my ($self, $attr) = @_; + my $attrNode = $self->getAttDef ($attr); + (defined $attrNode) ? $attrNode->getDefault : undef; +} + +sub cloneNode +{ + my ($self, $deep) = @_; + my $node = $self->[_Doc]->createAttlistDecl ($self->[_ElementName]); + + $node->[_A] = $self->[_A]->cloneNode ($deep); + $node; +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + $self->SUPER::setOwnerDocument ($doc); + + $self->[_A]->setOwnerDocument ($doc); +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->getName; + my @attlist = @{$self->[_A]->getValues}; + + my $hidden = 1; + for my $att (@attlist) + { + unless ($att->[_Hidden]) + { + $hidden = 0; + last; + } + } + + unless ($hidden) + { + $FILE->print ("print (" "); + $attlist[0]->print ($FILE); + } + else + { + for my $attr (@attlist) + { + next if $attr->[_Hidden]; + + $FILE->print ("\x0A "); + $attr->print ($FILE); + } + } + $FILE->print (">"); + } +} + +sub to_expat +{ + my ($self, $iter) = @_; + my $tag = $self->getName; + for my $a ($self->[_A]->getValues) + { + my $default = $a->isImplied ? '#IMPLIED' : + ($a->isRequired ? '#REQUIRED' : + ($a->[_Quote] . $a->getDefault->getValue . $a->[_Quote])); + + $iter->Attlist ($tag, $a->getName, $a->getType, $default, $a->isFixed); + } +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + my $tag = $self->getName; + for my $a ($self->[_A]->getValues) + { + my $default = $a->isImplied ? '#IMPLIED' : + ($a->isRequired ? '#REQUIRED' : + ($a->[_Quote] . $a->getDefault->getValue . $a->[_Quote])); + + $dtdh->attlist_decl ({ ElementName => $tag, + AttributeName => $a->getName, + Type => $a->[_Type], + Default => $default, + Fixed => $a->isFixed }); + } +} + +###################################################################### +package XML::DOM::ElementDecl; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Name Model", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + + +#------------------------------------------------------------ +# Extra method implementations + +# ElementDecl is not part of the DOM Spec +sub new +{ + my ($class, $doc, $name, $model, $hidden) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Element TagName [$name] in ElementDecl") + unless XML::DOM::isValidName ($name); + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Name] = $name; + $self->[_ReadOnly] = 1; + $self->[_Model] = $model; + $self->[_Hidden] = $hidden; + $self; +} + +sub getNodeType +{ + ELEMENT_DECL_NODE; +} + +sub getName +{ + $_[0]->[_Name]; +} + +sub getNodeName +{ + $_[0]->[_Name]; +} + +sub getModel +{ + $_[0]->[_Model]; +} + +sub setModel +{ + my ($self, $model) = @_; + + $self->[_Model] = $model; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_Name]; + my $model = $self->[_Model]; + + $FILE->print ("") + unless $self->[_Hidden]; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createElementDecl ($self->[_Name], $self->[_Model], + $self->[_Hidden]); +} + +sub to_expat +{ +#?? add support for Hidden?? (allover, also in _to_sax!!) + + my ($self, $iter) = @_; + $iter->Element ($self->getName, $self->getModel); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $dtdh->element_decl ( { Name => $self->getName, + Model => $self->getModel } ); +} + +###################################################################### +package XML::DOM::Element; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("TagName", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use XML::DOM::NamedNodeMap; +use Carp; + +sub new +{ + my ($class, $doc, $tagName) = @_; + + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Element TagName [$tagName]") + unless XML::DOM::isValidName ($tagName); + } + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_C] = new XML::DOM::NodeList; + $self->[_TagName] = $tagName; + +# Now we're creating the NamedNodeMap only when needed (REC 2313 => 1147) +# $self->[_A] = new XML::DOM::NamedNodeMap (Doc => $doc, +# Parent => $self); + + $self; +} + +sub getNodeType +{ + ELEMENT_NODE; +} + +sub getTagName +{ + $_[0]->[_TagName]; +} + +sub getNodeName +{ + $_[0]->[_TagName]; +} + +sub getAttributeNode +{ + my ($self, $name) = @_; + return undef unless defined $self->[_A]; + + $self->getAttributes->{$name}; +} + +sub getAttribute +{ + my ($self, $name) = @_; + my $attr = $self->getAttributeNode ($name); + (defined $attr) ? $attr->getValue : ""; +} + +sub setAttribute +{ + my ($self, $name, $val) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Attr Name [$name]") + unless XML::DOM::isValidName ($name); + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my $node = $self->getAttributes->{$name}; + if (defined $node) + { + $node->setValue ($val); + } + else + { + $node = $self->[_Doc]->createAttribute ($name, $val); + $self->[_A]->setNamedItem ($node); + } +} + +sub setAttributeNode +{ + my ($self, $node) = @_; + my $attr = $self->getAttributes; + my $name = $node->getNodeName; + + # REC 1147 + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR, + "nodes belong to different documents") + if $self->[_Doc] != $node->[_Doc]; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my $attrParent = $node->[_UsedIn]; + croak new XML::DOM::DOMException (INUSE_ATTRIBUTE_ERR, + "Attr is already used by another Element") + if (defined ($attrParent) && $attrParent != $attr); + } + + my $other = $attr->{$name}; + $attr->removeNamedItem ($name) if defined $other; + + $attr->setNamedItem ($node); + + $other; +} + +sub removeAttributeNode +{ + my ($self, $node) = @_; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my $attr = $self->[_A]; + unless (defined $attr) + { + croak new XML::DOM::DOMException (NOT_FOUND_ERR); + return undef; + } + + my $name = $node->getNodeName; + my $attrNode = $attr->getNamedItem ($name); + +#?? should it croak if it's the default value? + croak new XML::DOM::DOMException (NOT_FOUND_ERR) + unless $node == $attrNode; + + # Not removing anything if it's the default value already + return undef unless $node->isSpecified; + + $attr->removeNamedItem ($name); + + # Substitute with default value if it's defined + my $default = $self->getDefaultAttrValue ($name); + if (defined $default) + { + local $XML::DOM::IgnoreReadOnly = 1; + + $default = $default->cloneNode (1); + $attr->setNamedItem ($default); + } + $node; +} + +sub removeAttribute +{ + my ($self, $name) = @_; + my $attr = $self->[_A]; + unless (defined $attr) + { + croak new XML::DOM::DOMException (NOT_FOUND_ERR); + return; + } + + my $node = $attr->getNamedItem ($name); + if (defined $node) + { +#?? could use dispose() to remove circular references for gc, but what if +#?? somebody is referencing it? + $self->removeAttributeNode ($node); + } +} + +sub cloneNode +{ + my ($self, $deep) = @_; + my $node = $self->[_Doc]->createElement ($self->getTagName); + + # Always clone the Attr nodes, even if $deep == 0 + if (defined $self->[_A]) + { + $node->[_A] = $self->[_A]->cloneNode (1); # deep=1 + $node->[_A]->setParentNode ($node); + } + + $node->cloneChildren ($self, $deep); + $node; +} + +sub getAttributes +{ + $_[0]->[_A] ||= XML::DOM::NamedNodeMap->new (Doc => $_[0]->[_Doc], + Parent => $_[0]); +} + +#------------------------------------------------------------ +# Extra method implementations + +# Added for convenience +sub setTagName +{ + my ($self, $tagName) = @_; + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "bad Element TagName [$tagName]") + unless XML::DOM::isValidName ($tagName); + + $self->[_TagName] = $tagName; +} + +sub isReadOnly +{ + 0; +} + +# Added for optimization. +sub isElementNode +{ + 1; +} + +sub rejectChild +{ + my $t = $_[1]->getNodeType; + + $t != TEXT_NODE + && $t != ENTITY_REFERENCE_NODE + && $t != PROCESSING_INSTRUCTION_NODE + && $t != COMMENT_NODE + && $t != CDATA_SECTION_NODE + && $t != ELEMENT_NODE; +} + +sub getDefaultAttrValue +{ + my ($self, $attr) = @_; + $self->[_Doc]->getDefaultAttrValue ($self->[_TagName], $attr); +} + +sub dispose +{ + my $self = shift; + + $self->[_A]->dispose if defined $self->[_A]; + $self->SUPER::dispose; +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + $self->SUPER::setOwnerDocument ($doc); + + $self->[_A]->setOwnerDocument ($doc) if defined $self->[_A]; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_TagName]; + + $FILE->print ("<$name"); + + if (defined $self->[_A]) + { + for my $att (@{$self->[_A]->getValues}) + { + # skip un-specified (default) Attr nodes + if ($att->isSpecified) + { + $FILE->print (" "); + $att->print ($FILE); + } + } + } + + my @kids = @{$self->[_C]}; + if (@kids > 0) + { + $FILE->print (">"); + for my $kid (@kids) + { + $kid->print ($FILE); + } + $FILE->print (""); + } + else + { + my $style = &$XML::DOM::TagStyle ($name, $self); + if ($style == 0) + { + $FILE->print ("/>"); + } + elsif ($style == 1) + { + $FILE->print (">"); + } + else + { + $FILE->print (" />"); + } + } +} + +sub check +{ + my ($self, $checker) = @_; + die "Usage: \$xml_dom_elem->check (\$checker)" unless $checker; + + $checker->InitDomElem; + $self->to_expat ($checker); + $checker->FinalDomElem; +} + +sub to_expat +{ + my ($self, $iter) = @_; + + my $tag = $self->getTagName; + $iter->Start ($tag); + + if (defined $self->[_A]) + { + for my $attr ($self->[_A]->getValues) + { + $iter->Attr ($tag, $attr->getName, $attr->getValue, $attr->isSpecified); + } + } + + $iter->EndAttr; + + for my $kid ($self->getChildNodes) + { + $kid->to_expat ($iter); + } + + $iter->End; +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + + my $tag = $self->getTagName; + + my @attr = (); + my $attrOrder; + my $attrDefaulted; + + if (defined $self->[_A]) + { + my @spec = (); # names of specified attributes + my @unspec = (); # names of defaulted attributes + + for my $attr ($self->[_A]->getValues) + { + my $attrName = $attr->getName; + push @attr, $attrName, $attr->getValue; + if ($attr->isSpecified) + { + push @spec, $attrName; + } + else + { + push @unspec, $attrName; + } + } + $attrOrder = [ @spec, @unspec ]; + $attrDefaulted = @spec; + } + $doch->start_element (defined $attrOrder ? + { Name => $tag, + Attributes => { @attr }, + AttributeOrder => $attrOrder, + Defaulted => $attrDefaulted + } : + { Name => $tag, + Attributes => { @attr } + } + ); + + for my $kid ($self->getChildNodes) + { + $kid->_to_sax ($doch, $dtdh, $enth); + } + + $doch->end_element ( { Name => $tag } ); +} + +###################################################################### +package XML::DOM::CharacterData; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Data", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use Carp; + + +# +# CharacterData nodes should never be created directly, only subclassed! +# +sub new +{ + my ($class, $doc, $data) = @_; + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Data] = $data; + $self; +} + +sub appendData +{ + my ($self, $data) = @_; + + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + } + $self->[_Data] .= $data; +} + +sub deleteData +{ + my ($self, $offset, $count) = @_; + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "bad offset [$offset]") + if ($offset < 0 || $offset >= length ($self->[_Data])); +#?? DOM Spec says >, but >= makes more sense! + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "negative count [$count]") + if $count < 0; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + substr ($self->[_Data], $offset, $count) = ""; +} + +sub getData +{ + $_[0]->[_Data]; +} + +sub getLength +{ + length $_[0]->[_Data]; +} + +sub insertData +{ + my ($self, $offset, $data) = @_; + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "bad offset [$offset]") + if ($offset < 0 || $offset >= length ($self->[_Data])); +#?? DOM Spec says >, but >= makes more sense! + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + substr ($self->[_Data], $offset, 0) = $data; +} + +sub replaceData +{ + my ($self, $offset, $count, $data) = @_; + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "bad offset [$offset]") + if ($offset < 0 || $offset >= length ($self->[_Data])); +#?? DOM Spec says >, but >= makes more sense! + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "negative count [$count]") + if $count < 0; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + substr ($self->[_Data], $offset, $count) = $data; +} + +sub setData +{ + my ($self, $data) = @_; + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + $self->[_Data] = $data; +} + +sub substringData +{ + my ($self, $offset, $count) = @_; + my $data = $self->[_Data]; + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "bad offset [$offset]") + if ($offset < 0 || $offset >= length ($data)); +#?? DOM Spec says >, but >= makes more sense! + + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "negative count [$count]") + if $count < 0; + + substr ($data, $offset, $count); +} + +sub getNodeValue +{ + $_[0]->getData; +} + +sub setNodeValue +{ + $_[0]->setData ($_[1]); +} + +###################################################################### +package XML::DOM::CDATASection; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::CharacterData qw( :DEFAULT :Fields ); + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("", "XML::DOM::CharacterData"); +} + +use XML::DOM::DOMException; + +sub getNodeName +{ + "#cdata-section"; +} + +sub getNodeType +{ + CDATA_SECTION_NODE; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createCDATASection ($self->getData); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + 0; +} + +sub print +{ + my ($self, $FILE) = @_; + $FILE->print ("print (XML::DOM::encodeCDATA ($self->getData)); + $FILE->print ("]]>"); +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->CData ($self->getData); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $doch->start_cdata; + $doch->characters ( { Data => $self->getData } ); + $doch->end_cdata; +} + +###################################################################### +package XML::DOM::Comment; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::CharacterData qw( :DEFAULT :Fields ); + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("", "XML::DOM::CharacterData"); +} + +use XML::DOM::DOMException; +use Carp; + +#?? setData - could check comment for double minus + +sub getNodeType +{ + COMMENT_NODE; +} + +sub getNodeName +{ + "#comment"; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createComment ($self->getData); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + return 0 if $XML::DOM::IgnoreReadOnly; + + my $pa = $_[0]->[_Parent]; + defined ($pa) ? $pa->isReadOnly : 0; +} + +sub print +{ + my ($self, $FILE) = @_; + my $comment = XML::DOM::encodeComment ($self->[_Data]); + + $FILE->print (""); +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->Comment ($self->getData); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $doch->comment ( { Data => $self->getData }); +} + +###################################################################### +package XML::DOM::Text; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::CharacterData qw( :DEFAULT :Fields ); + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("", "XML::DOM::CharacterData"); +} + +use XML::DOM::DOMException; +use Carp; + +sub getNodeType +{ + TEXT_NODE; +} + +sub getNodeName +{ + "#text"; +} + +sub splitText +{ + my ($self, $offset) = @_; + + my $data = $self->getData; + croak new XML::DOM::DOMException (INDEX_SIZE_ERR, + "bad offset [$offset]") + if ($offset < 0 || $offset >= length ($data)); +#?? DOM Spec says >, but >= makes more sense! + + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR, + "node is ReadOnly") + if $self->isReadOnly; + + my $rest = substr ($data, $offset); + + $self->setData (substr ($data, 0, $offset)); + my $node = $self->[_Doc]->createTextNode ($rest); + + # insert new node after this node + $self->[_Parent]->insertBefore ($node, $self->getNextSibling); + + $node; +} + +sub cloneNode +{ + my $self = shift; + $self->[_Doc]->createTextNode ($self->getData); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + 0; +} + +sub print +{ + my ($self, $FILE) = @_; + $FILE->print (XML::DOM::encodeText ($self->getData, '<&>"')); +} + +sub isTextNode +{ + 1; +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->Char ($self->getData); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $doch->characters ( { Data => $self->getData } ); +} + +###################################################################### +package XML::DOM::XMLDecl; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Version Encoding Standalone", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; + + +#------------------------------------------------------------ +# Extra method implementations + +# XMLDecl is not part of the DOM Spec +sub new +{ + my ($class, $doc, $version, $encoding, $standalone) = @_; + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_Version] = $version if defined $version; + $self->[_Encoding] = $encoding if defined $encoding; + $self->[_Standalone] = $standalone if defined $standalone; + + $self; +} + +sub setVersion +{ + if (defined $_[1]) + { + $_[0]->[_Version] = $_[1]; + } + else + { + undef $_[0]->[_Version]; # was delete + } +} + +sub getVersion +{ + $_[0]->[_Version]; +} + +sub setEncoding +{ + if (defined $_[1]) + { + $_[0]->[_Encoding] = $_[1]; + } + else + { + undef $_[0]->[_Encoding]; # was delete + } +} + +sub getEncoding +{ + $_[0]->[_Encoding]; +} + +sub setStandalone +{ + if (defined $_[1]) + { + $_[0]->[_Standalone] = $_[1]; + } + else + { + undef $_[0]->[_Standalone]; # was delete + } +} + +sub getStandalone +{ + $_[0]->[_Standalone]; +} + +sub getNodeType +{ + XML_DECL_NODE; +} + +sub cloneNode +{ + my $self = shift; + + new XML::DOM::XMLDecl ($self->[_Doc], $self->[_Version], + $self->[_Encoding], $self->[_Standalone]); +} + +sub print +{ + my ($self, $FILE) = @_; + + my $version = $self->[_Version]; + my $encoding = $self->[_Encoding]; + my $standalone = $self->[_Standalone]; + $standalone = ($standalone ? "yes" : "no") if defined $standalone; + + $FILE->print ("print (" version=\"$version\"") if defined $version; + $FILE->print (" encoding=\"$encoding\"") if defined $encoding; + $FILE->print (" standalone=\"$standalone\"") if defined $standalone; + $FILE->print ("?>"); +} + +sub to_expat +{ + my ($self, $iter) = @_; + $iter->XMLDecl ($self->getVersion, $self->getEncoding, $self->getStandalone); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + $dtdh->xml_decl ( { Version => $self->getVersion, + Encoding => $self->getEncoding, + Standalone => $self->getStandalone } ); +} + +###################################################################### +package XML::DOM::DocumentFragment; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; + +sub new +{ + my ($class, $doc) = @_; + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_C] = new XML::DOM::NodeList; + $self; +} + +sub getNodeType +{ + DOCUMENT_FRAGMENT_NODE; +} + +sub getNodeName +{ + "#document-fragment"; +} + +sub cloneNode +{ + my ($self, $deep) = @_; + my $node = $self->[_Doc]->createDocumentFragment; + + $node->cloneChildren ($self, $deep); + $node; +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + 0; +} + +sub print +{ + my ($self, $FILE) = @_; + + for my $node (@{$self->[_C]}) + { + $node->print ($FILE); + } +} + +sub rejectChild +{ + my $t = $_[1]->getNodeType; + + $t != TEXT_NODE + && $t != ENTITY_REFERENCE_NODE + && $t != PROCESSING_INSTRUCTION_NODE + && $t != COMMENT_NODE + && $t != CDATA_SECTION_NODE + && $t != ELEMENT_NODE; +} + +sub isDocumentFragmentNode +{ + 1; +} + +###################################################################### +package XML::DOM::DocumentType; # forward declaration +###################################################################### + +###################################################################### +package XML::DOM::Document; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + XML::DOM::def_fields ("Doctype XmlDecl", "XML::DOM::Node"); +} + +use Carp; +use XML::DOM::NodeList; +use XML::DOM::DOMException; + +sub new +{ + my ($class) = @_; + my $self = bless [], $class; + + # keep Doc pointer, even though getOwnerDocument returns undef + $self->[_Doc] = $self; + $self->[_C] = new XML::DOM::NodeList; + $self; +} + +sub getNodeType +{ + DOCUMENT_NODE; +} + +sub getNodeName +{ + "#document"; +} + +#?? not sure about keeping a fixed order of these nodes.... +sub getDoctype +{ + $_[0]->[_Doctype]; +} + +sub getDocumentElement +{ + my ($self) = @_; + for my $kid (@{$self->[_C]}) + { + return $kid if $kid->isElementNode; + } + undef; +} + +sub getOwnerDocument +{ + undef; +} + +sub getImplementation +{ + $XML::DOM::DOMImplementation::Singleton; +} + +# +# Added extra parameters ($val, $specified) that are passed straight to the +# Attr constructor +# +sub createAttribute +{ + new XML::DOM::Attr (@_); +} + +sub createCDATASection +{ + new XML::DOM::CDATASection (@_); +} + +sub createComment +{ + new XML::DOM::Comment (@_); + +} + +sub createElement +{ + new XML::DOM::Element (@_); +} + +sub createTextNode +{ + new XML::DOM::Text (@_); +} + +sub createProcessingInstruction +{ + new XML::DOM::ProcessingInstruction (@_); +} + +sub createEntityReference +{ + new XML::DOM::EntityReference (@_); +} + +sub createDocumentFragment +{ + new XML::DOM::DocumentFragment (@_); +} + +sub createDocumentType +{ + new XML::DOM::DocumentType (@_); +} + +sub cloneNode +{ + my ($self, $deep) = @_; + my $node = new XML::DOM::Document; + + $node->cloneChildren ($self, $deep); + + my $xmlDecl = $self->[_XmlDecl]; + $node->[_XmlDecl] = $xmlDecl->cloneNode ($deep) if defined $xmlDecl; + + $node; +} + +sub appendChild +{ + my ($self, $node) = @_; + + # Extra check: make sure we don't end up with more than one Element. + # Don't worry about multiple DocType nodes, because DocumentFragment + # can't contain DocType nodes. + + my @nodes = ($node); + @nodes = @{$node->[_C]} + if $node->getNodeType == DOCUMENT_FRAGMENT_NODE; + + my $elem = 0; + for my $n (@nodes) + { + $elem++ if $n->isElementNode; + } + + if ($elem > 0 && defined ($self->getDocumentElement)) + { + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "document can have only one Element"); + } + $self->SUPER::appendChild ($node); +} + +sub insertBefore +{ + my ($self, $node, $refNode) = @_; + + # Extra check: make sure sure we don't end up with more than 1 Elements. + # Don't worry about multiple DocType nodes, because DocumentFragment + # can't contain DocType nodes. + + my @nodes = ($node); + @nodes = @{$node->[_C]} + if $node->getNodeType == DOCUMENT_FRAGMENT_NODE; + + my $elem = 0; + for my $n (@nodes) + { + $elem++ if $n->isElementNode; + } + + if ($elem > 0 && defined ($self->getDocumentElement)) + { + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "document can have only one Element"); + } + $self->SUPER::insertBefore ($node, $refNode); +} + +sub replaceChild +{ + my ($self, $node, $refNode) = @_; + + # Extra check: make sure sure we don't end up with more than 1 Elements. + # Don't worry about multiple DocType nodes, because DocumentFragment + # can't contain DocType nodes. + + my @nodes = ($node); + @nodes = @{$node->[_C]} + if $node->getNodeType == DOCUMENT_FRAGMENT_NODE; + + my $elem = 0; + $elem-- if $refNode->isElementNode; + + for my $n (@nodes) + { + $elem++ if $n->isElementNode; + } + + if ($elem > 0 && defined ($self->getDocumentElement)) + { + croak new XML::DOM::DOMException (HIERARCHY_REQUEST_ERR, + "document can have only one Element"); + } + $self->SUPER::replaceChild ($node, $refNode); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + 0; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $xmlDecl = $self->getXMLDecl; + if (defined $xmlDecl) + { + $xmlDecl->print ($FILE); + $FILE->print ("\x0A"); + } + + for my $node (@{$self->[_C]}) + { + $node->print ($FILE); + $FILE->print ("\x0A"); + } +} + +sub setDoctype +{ + my ($self, $doctype) = @_; + my $oldDoctype = $self->[_Doctype]; + if (defined $oldDoctype) + { + $self->replaceChild ($doctype, $oldDoctype); + } + else + { +#?? before root element, but after XmlDecl ! + $self->appendChild ($doctype); + } + $_[0]->[_Doctype] = $_[1]; +} + +sub removeDoctype +{ + my $self = shift; + my $doctype = $self->removeChild ($self->[_Doctype]); + + undef $self->[_Doctype]; # was delete + $doctype; +} + +sub rejectChild +{ + my $t = $_[1]->getNodeType; + $t != ELEMENT_NODE + && $t != PROCESSING_INSTRUCTION_NODE + && $t != COMMENT_NODE + && $t != DOCUMENT_TYPE_NODE; +} + +sub expandEntity +{ + my ($self, $ent, $param) = @_; + my $doctype = $self->getDoctype; + + (defined $doctype) ? $doctype->expandEntity ($ent, $param) : undef; +} + +sub getDefaultAttrValue +{ + my ($self, $elem, $attr) = @_; + + my $doctype = $self->getDoctype; + + (defined $doctype) ? $doctype->getDefaultAttrValue ($elem, $attr) : undef; +} + +sub getEntity +{ + my ($self, $entity) = @_; + + my $doctype = $self->getDoctype; + + (defined $doctype) ? $doctype->getEntity ($entity) : undef; +} + +sub dispose +{ + my $self = shift; + + $self->[_XmlDecl]->dispose if defined $self->[_XmlDecl]; + undef $self->[_XmlDecl]; # was delete + undef $self->[_Doctype]; # was delete + $self->SUPER::dispose; +} + +sub setOwnerDocument +{ + # Do nothing, you can't change the owner document! +#?? could throw exception... +} + +sub getXMLDecl +{ + $_[0]->[_XmlDecl]; +} + +sub setXMLDecl +{ + $_[0]->[_XmlDecl] = $_[1]; +} + +sub createXMLDecl +{ + new XML::DOM::XMLDecl (@_); +} + +sub createNotation +{ + new XML::DOM::Notation (@_); +} + +sub createElementDecl +{ + new XML::DOM::ElementDecl (@_); +} + +sub createAttlistDecl +{ + new XML::DOM::AttlistDecl (@_); +} + +sub createEntity +{ + new XML::DOM::Entity (@_); +} + +sub createChecker +{ + my $self = shift; + my $checker = XML::Checker->new; + + $checker->Init; + my $doctype = $self->getDoctype; + $doctype->to_expat ($checker) if $doctype; + $checker->Final; + + $checker; +} + +sub check +{ + my ($self, $checker) = @_; + $checker ||= XML::Checker->new; + + $self->to_expat ($checker); +} + +sub to_expat +{ + my ($self, $iter) = @_; + + $iter->Init; + + for my $kid ($self->getChildNodes) + { + $kid->to_expat ($iter); + } + $iter->Final; +} + +sub check_sax +{ + my ($self, $checker) = @_; + $checker ||= XML::Checker->new; + + $self->to_sax (Handler => $checker); +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + + $doch->start_document; + + for my $kid ($self->getChildNodes) + { + $kid->_to_sax ($doch, $dtdh, $enth); + } + $doch->end_document; +} + +###################################################################### +package XML::DOM::DocumentType; +###################################################################### +use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS }; + +BEGIN +{ + import XML::DOM::Node qw( :DEFAULT :Fields ); + import XML::DOM::Document qw( :Fields ); + XML::DOM::def_fields ("Entities Notations Name SysId PubId Internal", "XML::DOM::Node"); +} + +use XML::DOM::DOMException; +use XML::DOM::NamedNodeMap; + +sub new +{ + my $class = shift; + my $doc = shift; + + my $self = bless [], $class; + + $self->[_Doc] = $doc; + $self->[_ReadOnly] = 1; + $self->[_C] = new XML::DOM::NodeList; + + $self->[_Entities] = new XML::DOM::NamedNodeMap (Doc => $doc, + Parent => $self, + ReadOnly => 1); + $self->[_Notations] = new XML::DOM::NamedNodeMap (Doc => $doc, + Parent => $self, + ReadOnly => 1); + $self->setParams (@_); + $self; +} + +sub getNodeType +{ + DOCUMENT_TYPE_NODE; +} + +sub getNodeName +{ + $_[0]->[_Name]; +} + +sub getName +{ + $_[0]->[_Name]; +} + +sub getEntities +{ + $_[0]->[_Entities]; +} + +sub getNotations +{ + $_[0]->[_Notations]; +} + +sub setParentNode +{ + my ($self, $parent) = @_; + $self->SUPER::setParentNode ($parent); + + $parent->[_Doctype] = $self + if $parent->getNodeType == DOCUMENT_NODE; +} + +sub cloneNode +{ + my ($self, $deep) = @_; + + my $node = new XML::DOM::DocumentType ($self->[_Doc], $self->[_Name], + $self->[_SysId], $self->[_PubId], + $self->[_Internal]); + +#?? does it make sense to make a shallow copy? + + # clone the NamedNodeMaps + $node->[_Entities] = $self->[_Entities]->cloneNode ($deep); + + $node->[_Notations] = $self->[_Notations]->cloneNode ($deep); + + $node->cloneChildren ($self, $deep); + + $node; +} + +#------------------------------------------------------------ +# Extra method implementations + +sub getSysId +{ + $_[0]->[_SysId]; +} + +sub getPubId +{ + $_[0]->[_PubId]; +} + +sub getInternal +{ + $_[0]->[_Internal]; +} + +sub setSysId +{ + $_[0]->[_SysId] = $_[1]; +} + +sub setPubId +{ + $_[0]->[_PubId] = $_[1]; +} + +sub setInternal +{ + $_[0]->[_Internal] = $_[1]; +} + +sub setName +{ + $_[0]->[_Name] = $_[1]; +} + +sub removeChildHoodMemories +{ + my ($self, $dontWipeReadOnly) = @_; + + my $parent = $self->[_Parent]; + if (defined $parent && $parent->getNodeType == DOCUMENT_NODE) + { + undef $parent->[_Doctype]; # was delete + } + $self->SUPER::removeChildHoodMemories; +} + +sub dispose +{ + my $self = shift; + + $self->[_Entities]->dispose; + $self->[_Notations]->dispose; + $self->SUPER::dispose; +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + $self->SUPER::setOwnerDocument ($doc); + + $self->[_Entities]->setOwnerDocument ($doc); + $self->[_Notations]->setOwnerDocument ($doc); +} + +sub expandEntity +{ + my ($self, $ent, $param) = @_; + + my $kid = $self->[_Entities]->getNamedItem ($ent); + return $kid->getValue + if (defined ($kid) && $param == $kid->isParameterEntity); + + undef; # entity not found +} + +sub getAttlistDecl +{ + my ($self, $elemName) = @_; + for my $kid (@{$_[0]->[_C]}) + { + return $kid if ($kid->getNodeType == ATTLIST_DECL_NODE && + $kid->getName eq $elemName); + } + undef; # not found +} + +sub getElementDecl +{ + my ($self, $elemName) = @_; + for my $kid (@{$_[0]->[_C]}) + { + return $kid if ($kid->getNodeType == ELEMENT_DECL_NODE && + $kid->getName eq $elemName); + } + undef; # not found +} + +sub addElementDecl +{ + my ($self, $name, $model, $hidden) = @_; + my $node = $self->getElementDecl ($name); + +#?? could warn + unless (defined $node) + { + $node = $self->[_Doc]->createElementDecl ($name, $model, $hidden); + $self->appendChild ($node); + } + $node; +} + +sub addAttlistDecl +{ + my ($self, $name) = @_; + my $node = $self->getAttlistDecl ($name); + + unless (defined $node) + { + $node = $self->[_Doc]->createAttlistDecl ($name); + $self->appendChild ($node); + } + $node; +} + +sub addNotation +{ + my $self = shift; + my $node = $self->[_Doc]->createNotation (@_); + $self->[_Notations]->setNamedItem ($node); + $node; +} + +sub addEntity +{ + my $self = shift; + my $node = $self->[_Doc]->createEntity (@_); + + $self->[_Entities]->setNamedItem ($node); + $node; +} + +# All AttDefs for a certain Element are merged into a single ATTLIST +sub addAttDef +{ + my $self = shift; + my $elemName = shift; + + # create the AttlistDecl if it doesn't exist yet + my $attListDecl = $self->addAttlistDecl ($elemName); + $attListDecl->addAttDef (@_); +} + +sub getDefaultAttrValue +{ + my ($self, $elem, $attr) = @_; + my $elemNode = $self->getAttlistDecl ($elem); + (defined $elemNode) ? $elemNode->getDefaultAttrValue ($attr) : undef; +} + +sub getEntity +{ + my ($self, $entity) = @_; + $self->[_Entities]->getNamedItem ($entity); +} + +sub setParams +{ + my ($self, $name, $sysid, $pubid, $internal) = @_; + + $self->[_Name] = $name; + +#?? not sure if we need to hold on to these... + $self->[_SysId] = $sysid if defined $sysid; + $self->[_PubId] = $pubid if defined $pubid; + $self->[_Internal] = $internal if defined $internal; + + $self; +} + +sub rejectChild +{ + # DOM Spec says: DocumentType -- no children + not $XML::DOM::IgnoreReadOnly; +} + +sub print +{ + my ($self, $FILE) = @_; + + my $name = $self->[_Name]; + + my $sysId = $self->[_SysId]; + my $pubId = $self->[_PubId]; + + $FILE->print ("print (" PUBLIC \"$pubId\" \"$sysId\""); + } + elsif (defined $sysId) + { + $FILE->print (" SYSTEM \"$sysId\""); + } + + my @entities = @{$self->[_Entities]->getValues}; + my @notations = @{$self->[_Notations]->getValues}; + my @kids = @{$self->[_C]}; + + if (@entities || @notations || @kids) + { + $FILE->print (" [\x0A"); + + for my $kid (@entities) + { + next if $kid->[_Hidden]; + + $FILE->print (" "); + $kid->print ($FILE); + $FILE->print ("\x0A"); + } + + for my $kid (@notations) + { + next if $kid->[_Hidden]; + + $FILE->print (" "); + $kid->print ($FILE); + $FILE->print ("\x0A"); + } + + for my $kid (@kids) + { + next if $kid->[_Hidden]; + + $FILE->print (" "); + $kid->print ($FILE); + $FILE->print ("\x0A"); + } + $FILE->print ("]"); + } + $FILE->print (">"); +} + +sub to_expat +{ + my ($self, $iter) = @_; + + $iter->Doctype ($self->getName, $self->getSysId, $self->getPubId, $self->getInternal); + + for my $ent ($self->getEntities->getValues) + { + next if $ent->[_Hidden]; + $ent->to_expat ($iter); + } + + for my $nota ($self->getNotations->getValues) + { + next if $nota->[_Hidden]; + $nota->to_expat ($iter); + } + + for my $kid ($self->getChildNodes) + { + next if $kid->[_Hidden]; + $kid->to_expat ($iter); + } +} + +sub _to_sax +{ + my ($self, $doch, $dtdh, $enth) = @_; + + $dtdh->doctype_decl ( { Name => $self->getName, + SystemId => $self->getSysId, + PublicId => $self->getPubId, + Internal => $self->getInternal }); + + for my $ent ($self->getEntities->getValues) + { + next if $ent->[_Hidden]; + $ent->_to_sax ($doch, $dtdh, $enth); + } + + for my $nota ($self->getNotations->getValues) + { + next if $nota->[_Hidden]; + $nota->_to_sax ($doch, $dtdh, $enth); + } + + for my $kid ($self->getChildNodes) + { + next if $kid->[_Hidden]; + $kid->_to_sax ($doch, $dtdh, $enth); + } +} + +###################################################################### +package XML::DOM::Parser; +###################################################################### +use vars qw ( @ISA ); +@ISA = qw( XML::Parser ); + +sub new +{ + my ($class, %args) = @_; + + $args{Style} = 'XML::Parser::Dom'; + $class->SUPER::new (%args); +} + +# This method needed to be overriden so we can restore some global +# variables when an exception is thrown +sub parse +{ + my $self = shift; + + local $XML::Parser::Dom::_DP_doc; + local $XML::Parser::Dom::_DP_elem; + local $XML::Parser::Dom::_DP_doctype; + local $XML::Parser::Dom::_DP_in_prolog; + local $XML::Parser::Dom::_DP_end_doc; + local $XML::Parser::Dom::_DP_saw_doctype; + local $XML::Parser::Dom::_DP_in_CDATA; + local $XML::Parser::Dom::_DP_keep_CDATA; + local $XML::Parser::Dom::_DP_last_text; + + + # Temporarily disable checks that Expat already does (for performance) + local $XML::DOM::SafeMode = 0; + # Temporarily disable ReadOnly checks + local $XML::DOM::IgnoreReadOnly = 1; + + my $ret; + eval { + $ret = $self->SUPER::parse (@_); + }; + my $err = $@; + + if ($err) + { + my $doc = $XML::Parser::Dom::_DP_doc; + if ($doc) + { + $doc->dispose; + } + die $err; + } + + $ret; +} + +my $LWP_USER_AGENT; +sub set_LWP_UserAgent +{ + $LWP_USER_AGENT = shift; +} + +sub parsefile +{ + my $self = shift; + my $url = shift; + + # Any other URL schemes? + if ($url =~ /^(https?|ftp|wais|gopher|file):/) + { + # Read the file from the web with LWP. + # + # Note that we read in the entire file, which may not be ideal + # for large files. LWP::UserAgent also provides a callback style + # request, which we could convert to a stream with a fork()... + + my $result; + eval + { + use LWP::UserAgent; + + my $ua = $self->{LWP_UserAgent}; + unless (defined $ua) + { + unless (defined $LWP_USER_AGENT) + { + $LWP_USER_AGENT = LWP::UserAgent->new; + + # Load proxy settings from environment variables, i.e.: + # http_proxy, ftp_proxy, no_proxy etc. (see LWP::UserAgent(3)) + # You need these to go thru firewalls. + $LWP_USER_AGENT->env_proxy; + } + $ua = $LWP_USER_AGENT; + } + my $req = new HTTP::Request 'GET', $url; + my $response = $ua->request ($req); + + # Parse the result of the HTTP request + $result = $self->parse ($response->content, @_); + }; + if ($@) + { + die "Couldn't parsefile [$url] with LWP: $@"; + } + return $result; + } + else + { + return $self->SUPER::parsefile ($url, @_); + } +} + +###################################################################### +package XML::Parser::Dom; +###################################################################### + +BEGIN +{ + import XML::DOM::Node qw( :Fields ); + import XML::DOM::CharacterData qw( :Fields ); +} + +use vars qw( $_DP_doc + $_DP_elem + $_DP_doctype + $_DP_in_prolog + $_DP_end_doc + $_DP_saw_doctype + $_DP_in_CDATA + $_DP_keep_CDATA + $_DP_last_text + $_DP_level + $_DP_expand_pent + ); + +# This adds a new Style to the XML::Parser class. +# From now on you can say: $parser = new XML::Parser ('Style' => 'Dom' ); +# but that is *NOT* how a regular user should use it! +$XML::Parser::Built_In_Styles{Dom} = 1; + +sub Init +{ + $_DP_elem = $_DP_doc = new XML::DOM::Document(); + $_DP_doctype = new XML::DOM::DocumentType ($_DP_doc); + $_DP_doc->setDoctype ($_DP_doctype); + $_DP_keep_CDATA = $_[0]->{KeepCDATA}; + + # Prepare for document prolog + $_DP_in_prolog = 1; + + # We haven't passed the root element yet + $_DP_end_doc = 0; + + # Expand parameter entities in the DTD by default + + $_DP_expand_pent = defined $_[0]->{ExpandParamEnt} ? + $_[0]->{ExpandParamEnt} : 1; + if ($_DP_expand_pent) + { + $_[0]->{DOM_Entity} = {}; + } + + $_DP_level = 0; + + undef $_DP_last_text; +} + +sub Final +{ + unless ($_DP_saw_doctype) + { + my $doctype = $_DP_doc->removeDoctype; + $doctype->dispose; + } + $_DP_doc; +} + +sub Char +{ + my $str = $_[1]; + + if ($_DP_in_CDATA && $_DP_keep_CDATA) + { + undef $_DP_last_text; + # Merge text with previous node if possible + $_DP_elem->addCDATA ($str); + } + else + { + # Merge text with previous node if possible + # Used to be: $expat->{DOM_Element}->addText ($str); + if ($_DP_last_text) + { + $_DP_last_text->[_Data] .= $str; + } + else + { + $_DP_last_text = $_DP_doc->createTextNode ($str); + $_DP_last_text->[_Parent] = $_DP_elem; + push @{$_DP_elem->[_C]}, $_DP_last_text; + } + } +} + +sub Start +{ + my ($expat, $elem, @attr) = @_; + my $parent = $_DP_elem; + my $doc = $_DP_doc; + + if ($parent == $doc) + { + # End of document prolog, i.e. start of first Element + $_DP_in_prolog = 0; + } + + undef $_DP_last_text; + my $node = $doc->createElement ($elem); + $_DP_elem = $node; + $parent->appendChild ($node); + + my $n = @attr; + return unless $n; + + # Add attributes + my $first_default = $expat->specified_attr; + my $i = 0; + while ($i < $n) + { + my $specified = $i < $first_default; + my $name = $attr[$i++]; + undef $_DP_last_text; + my $attr = $doc->createAttribute ($name, $attr[$i++], $specified); + $node->setAttributeNode ($attr); + } +} + +sub End +{ + $_DP_elem = $_DP_elem->[_Parent]; + undef $_DP_last_text; + + # Check for end of root element + $_DP_end_doc = 1 if ($_DP_elem == $_DP_doc); +} + +# Called at end of file, i.e. whitespace following last closing tag +# Also for Entity references +# May also be called at other times... +sub Default +{ + my ($expat, $str) = @_; + +# shift; deb ("Default", @_); + + if ($_DP_in_prolog) # still processing Document prolog... + { +#?? could try to store this text later +#?? I've only seen whitespace here so far + } + elsif (!$_DP_end_doc) # ignore whitespace at end of Document + { +# if ($expat->{NoExpand}) +# { + # Got a TextDecl () from an external entity here once + + # create non-parameter entity reference, correct? + return unless $str =~ s!^&!!; + return unless $str =~ s!;$!!; + $_DP_elem->appendChild ( + $_DP_doc->createEntityReference ($str,0,$expat->{NoExpand})); + undef $_DP_last_text; +# } +# else +# { +# $expat->{DOM_Element}->addText ($str); +# } + } +} + +# XML::Parser 2.19 added support for CdataStart and CdataEnd handlers +# If they are not defined, the Default handler is called instead +# with the text "createComment ($_[1]); + $_DP_elem->appendChild ($comment); + } +} + +sub deb +{ +# return; + + my $name = shift; + print "$name (" . join(",", map {defined($_)?$_ : "(undef)"} @_) . ")\n"; +} + +sub Doctype +{ + my $expat = shift; +# deb ("Doctype", @_); + + $_DP_doctype->setParams (@_); + $_DP_saw_doctype = 1; +} + +sub Attlist +{ + my $expat = shift; +# deb ("Attlist", @_); + + $_[5] = "Hidden" unless $_DP_expand_pent || $_DP_level == 0; + $_DP_doctype->addAttDef (@_); +} + +sub XMLDecl +{ + my $expat = shift; +# deb ("XMLDecl", @_); + + undef $_DP_last_text; + $_DP_doc->setXMLDecl (new XML::DOM::XMLDecl ($_DP_doc, @_)); +} + +sub Entity +{ + my $expat = shift; +# deb ("Entity", @_); + + # check to see if Parameter Entity + if ($_[5]) + { + + if (defined $_[2]) # was sysid specified? + { + # Store the Entity mapping for use in ExternEnt + if (exists $expat->{DOM_Entity}->{$_[2]}) + { + # If this ever happens, the name of entity may be the wrong one + # when writing out the Document. + XML::DOM::warning ("Entity $_[2] is known as %$_[0] and %" . + $expat->{DOM_Entity}->{$_[2]}); + } + else + { + $expat->{DOM_Entity}->{$_[2]} = $_[0]; + } + #?? remove this block when XML::Parser has better support + } + } + + # no value on things with sysId + if (defined $_[2] && defined $_[1]) + { + # print STDERR "XML::DOM Warning $_[0] had both value($_[1]) And SYSId ($_[2]), removing value.\n"; + $_[1] = undef; + } + + undef $_DP_last_text; + + $_[6] = "Hidden" unless $_DP_expand_pent || $_DP_level == 0; + $_DP_doctype->addEntity (@_); +} + +# +# Unparsed is called when it encounters e.g: +# +# +# +sub Unparsed +{ + Entity (@_); # same as regular ENTITY, as far as DOM is concerned +} + +sub Element +{ + shift; +# deb ("Element", @_); + + # put in to convert XML::Parser::ContentModel object to string + # ($_[1] used to be a string in XML::Parser 2.27 and + # dom_attr.t fails if we don't stringify here) + $_[1] = "$_[1]"; + + undef $_DP_last_text; + push @_, "Hidden" unless $_DP_expand_pent || $_DP_level == 0; + $_DP_doctype->addElementDecl (@_); +} + +sub Notation +{ + shift; +# deb ("Notation", @_); + + undef $_DP_last_text; + $_[4] = "Hidden" unless $_DP_expand_pent || $_DP_level == 0; + $_DP_doctype->addNotation (@_); +} + +sub Proc +{ + shift; +# deb ("Proc", @_); + + undef $_DP_last_text; + push @_, "Hidden" unless $_DP_expand_pent || $_DP_level == 0; + $_DP_elem->appendChild ($_DP_doc->createProcessingInstruction (@_)); +} + +# +# ExternEnt is called when an external entity, such as: +# +# +# +# is referenced in the document, e.g. with: &externalEntity; +# If ExternEnt is not specified, the entity reference is passed to the Default +# handler as e.g. "&externalEntity;", where an EntityReference object is added. +# +# Also for %externalEntity; references in the DTD itself. +# +# It can also be called when XML::Parser parses the DOCTYPE header +# (just before calling the DocType handler), when it contains a +# reference like "docbook.dtd" below: +# +# 2.27 since file_ext_ent_handler + # now returns a IO::File object instead of a content string + + # Invoke XML::Parser's default ExternEnt handler + my $content; + if ($XML::Parser::have_LWP) + { + $content = XML::Parser::lwp_ext_ent_handler (@_); + } + else + { + $content = XML::Parser::file_ext_ent_handler (@_); + } + + if ($_DP_expand_pent) + { + return $content; + } + else + { + my $entname = $expat->{DOM_Entity}->{$sysid}; + if (defined $entname) + { + $_DP_doctype->appendChild ($_DP_doc->createEntityReference ($entname, 1, $expat->{NoExpand})); + # Wrap the contents in special comments, so we know when we reach the + # end of parsing the entity. This way we can omit the contents from + # the DTD, when ExpandParamEnt is set to 0. + + return "" . + $content . ""; + } + else + { + # We either read the entity ref'd by the system id in the + # header, or the entity was undefined. + # In either case, don't bother with maintaining the entity + # reference, just expand the contents. + return "" . + $content . ""; + } + } +} + +1; # module return code + +__END__ + +=head1 NAME + +XML::DOM - A perl module for building DOM Level 1 compliant document structures + +=head1 SYNOPSIS + + use XML::DOM; + + my $parser = new XML::DOM::Parser; + my $doc = $parser->parsefile ("file.xml"); + + # print all HREF attributes of all CODEBASE elements + my $nodes = $doc->getElementsByTagName ("CODEBASE"); + my $n = $nodes->getLength; + + for (my $i = 0; $i < $n; $i++) + { + my $node = $nodes->item ($i); + my $href = $node->getAttributeNode ("HREF"); + print $href->getValue . "\n"; + } + + # Print doc file + $doc->printToFile ("out.xml"); + + # Print to string + print $doc->toString; + + # Avoid memory leaks - cleanup circular references for garbage collection + $doc->dispose; + +=head1 DESCRIPTION + +This module extends the XML::Parser module by Clark Cooper. +The XML::Parser module is built on top of XML::Parser::Expat, +which is a lower level interface to James Clark's expat library. + +XML::DOM::Parser is derived from XML::Parser. It parses XML strings or files +and builds a data structure that conforms to the API of the Document Object +Model as described at http://www.w3.org/TR/REC-DOM-Level-1. +See the XML::Parser manpage for other available features of the +XML::DOM::Parser class. +Note that the 'Style' property should not be used (it is set internally.) + +The XML::Parser I option is more or less supported, in that it will +generate EntityReference objects whenever an entity reference is encountered +in character data. I'm not sure how useful this is. Any comments are welcome. + +As described in the synopsis, when you create an XML::DOM::Parser object, +the parse and parsefile methods create an I object +from the specified input. This Document object can then be examined, modified and +written back out to a file or converted to a string. + +When using XML::DOM with XML::Parser version 2.19 and up, setting the +XML::DOM::Parser option I to 1 will store CDATASections in +CDATASection nodes, instead of converting them to Text nodes. +Subsequent CDATASection nodes will be merged into one. Let me know if this +is a problem. + +When using XML::Parser 2.27 and above, you can suppress expansion of +parameter entity references (e.g. %pent;) in the DTD, by setting I +to 1 and I to 0. See L for details. + +A Document has a tree structure consisting of I objects. A Node may contain +other nodes, depending on its type. +A Document may have Element, Text, Comment, and CDATASection nodes. +Element nodes may have Attr, Element, Text, Comment, and CDATASection nodes. +The other nodes may not have any child nodes. + +This module adds several node types that are not part of the DOM spec (yet.) +These are: ElementDecl (for declarations), AttlistDecl (for + declarations), XMLDecl (for declarations) and AttDef +(for attribute definitions in an AttlistDecl.) + +=head1 XML::DOM Classes + +The XML::DOM module stores XML documents in a tree structure with a root node +of type XML::DOM::Document. Different nodes in tree represent different +parts of the XML file. The DOM Level 1 Specification defines the following +node types: + +=over 4 + +=item * L - Super class of all node types + +=item * L - The root of the XML document + +=item * L - Describes the document structure: + +=item * L - An XML element: ... + +=item * L - An XML element attribute: name="value" + +=item * L - Super class of Text, Comment and CDATASection + +=item * L - Text in an XML element + +=item * L - Escaped block of text: + +=item * L - An XML comment: + +=item * L - Refers to an ENTITY: &ent; or %ent; + +=item * L - An ENTITY definition: + +=item * L - + +=item * L - Lightweight node for cut & paste + +=item * L - An NOTATION definition: + +=back + +In addition, the XML::DOM module contains the following nodes that are not part +of the DOM Level 1 Specification: + +=over 4 + +=item * L - Defines an element: + +=item * L - Defines one or more attributes in an + +=item * L - Defines one attribute in an + +=item * L - An XML declaration: + +=back + +Other classes that are part of the DOM Level 1 Spec: + +=over 4 + +=item * L - Provides information about this implementation. Currently it doesn't do much. + +=item * L - Used internally to store a node's child nodes. Also returned by getElementsByTagName. + +=item * L - Used internally to store an element's attributes. + +=back + +Other classes that are not part of the DOM Level 1 Spec: + +=over 4 + +=item * L - An non-validating XML parser that creates XML::DOM::Documents + +=item * L - A validating XML parser that creates XML::DOM::Documents. It uses L to check against the DocumentType (DTD) + +=item * L - A PerlSAX handler that creates XML::DOM::Documents. + +=back + +=head1 XML::DOM package + +=over 4 + +=item Constant definitions + +The following predefined constants indicate which type of node it is. + +=back + + UNKNOWN_NODE (0) The node type is unknown (not part of DOM) + + ELEMENT_NODE (1) The node is an Element. + ATTRIBUTE_NODE (2) The node is an Attr. + TEXT_NODE (3) The node is a Text node. + CDATA_SECTION_NODE (4) The node is a CDATASection. + ENTITY_REFERENCE_NODE (5) The node is an EntityReference. + ENTITY_NODE (6) The node is an Entity. + PROCESSING_INSTRUCTION_NODE (7) The node is a ProcessingInstruction. + COMMENT_NODE (8) The node is a Comment. + DOCUMENT_NODE (9) The node is a Document. + DOCUMENT_TYPE_NODE (10) The node is a DocumentType. + DOCUMENT_FRAGMENT_NODE (11) The node is a DocumentFragment. + NOTATION_NODE (12) The node is a Notation. + + ELEMENT_DECL_NODE (13) The node is an ElementDecl (not part of DOM) + ATT_DEF_NODE (14) The node is an AttDef (not part of DOM) + XML_DECL_NODE (15) The node is an XMLDecl (not part of DOM) + ATTLIST_DECL_NODE (16) The node is an AttlistDecl (not part of DOM) + + Usage: + + if ($node->getNodeType == ELEMENT_NODE) + { + print "It's an Element"; + } + +B: The DOM Spec does not mention UNKNOWN_NODE and, +quite frankly, you should never encounter it. The last 4 node types were added +to support the 4 added node classes. + +=head2 Global Variables + +=over 4 + +=item $VERSION + +The variable $XML::DOM::VERSION contains the version number of this +implementation, e.g. "1.43". + +=back + +=head2 METHODS + +These methods are not part of the DOM Level 1 Specification. + +=over 4 + +=item getIgnoreReadOnly and ignoreReadOnly (readOnly) + +The DOM Level 1 Spec does not allow you to edit certain sections of the document, +e.g. the DocumentType, so by default this implementation throws DOMExceptions +(i.e. NO_MODIFICATION_ALLOWED_ERR) when you try to edit a readonly node. +These readonly checks can be disabled by (temporarily) setting the global +IgnoreReadOnly flag. + +The ignoreReadOnly method sets the global IgnoreReadOnly flag and returns its +previous value. The getIgnoreReadOnly method simply returns its current value. + + my $oldIgnore = XML::DOM::ignoreReadOnly (1); + eval { + ... do whatever you want, catching any other exceptions ... + }; + XML::DOM::ignoreReadOnly ($oldIgnore); # restore previous value + +Another way to do it, using a local variable: + + { # start new scope + local $XML::DOM::IgnoreReadOnly = 1; + ... do whatever you want, don't worry about exceptions ... + } # end of scope ($IgnoreReadOnly is set back to its previous value) + + +=item isValidName (name) + +Whether the specified name is a valid "Name" as specified in the XML spec. +Characters with Unicode values > 127 are now also supported. + +=item getAllowReservedNames and allowReservedNames (boolean) + +The first method returns whether reserved names are allowed. +The second takes a boolean argument and sets whether reserved names are allowed. +The initial value is 1 (i.e. allow reserved names.) + +The XML spec states that "Names" starting with (X|x)(M|m)(L|l) +are reserved for future use. (Amusingly enough, the XML version of the XML spec +(REC-xml-19980210.xml) breaks that very rule by defining an ENTITY with the name +'xmlpio'.) +A "Name" in this context means the Name token as found in the BNF rules in the +XML spec. + +XML::DOM only checks for errors when you modify the DOM tree, not when the +DOM tree is built by the XML::DOM::Parser. + +=item setTagCompression (funcref) + +There are 3 possible styles for printing empty Element tags: + +=over 4 + +=item Style 0 + + or + +XML::DOM uses this style by default for all Elements. + +=item Style 1 + + or + +=item Style 2 + + or + +This style is sometimes desired when using XHTML. +(Note the extra space before the slash "/") +See L Appendix C for more details. + +=back + +By default XML::DOM compresses all empty Element tags (style 0.) +You can control which style is used for a particular Element by calling +XML::DOM::setTagCompression with a reference to a function that takes +2 arguments. The first is the tag name of the Element, the second is the +XML::DOM::Element that is being printed. +The function should return 0, 1 or 2 to indicate which style should be used to +print the empty tag. E.g. + + XML::DOM::setTagCompression (\&my_tag_compression); + + sub my_tag_compression + { + my ($tag, $elem) = @_; + + # Print empty br, hr and img tags like this:
+ return 2 if $tag =~ /^(br|hr|img)$/; + + # Print other empty tags like this: + return 1; + } + +=back + +=head1 IMPLEMENTATION DETAILS + +=over 4 + +=item * Perl Mappings + +The value undef was used when the DOM Spec said null. + +The DOM Spec says: Applications must encode DOMString using UTF-16 (defined in +Appendix C.3 of [UNICODE] and Amendment 1 of [ISO-10646]). +In this implementation we use plain old Perl strings encoded in UTF-8 instead of +UTF-16. + +=item * Text and CDATASection nodes + +The Expat parser expands EntityReferences and CDataSection sections to +raw strings and does not indicate where it was found. +This implementation does therefore convert both to Text nodes at parse time. +CDATASection and EntityReference nodes that are added to an existing Document +(by the user) will be preserved. + +Also, subsequent Text nodes are always merged at parse time. Text nodes that are +added later can be merged with the normalize method. Consider using the addText +method when adding Text nodes. + +=item * Printing and toString + +When printing (and converting an XML Document to a string) the strings have to +encoded differently depending on where they occur. E.g. in a CDATASection all +substrings are allowed except for "]]>". In regular text, certain characters are +not allowed, e.g. ">" has to be converted to ">". +These routines should be verified by someone who knows the details. + +=item * Quotes + +Certain sections in XML are quoted, like attribute values in an Element. +XML::Parser strips these quotes and the print methods in this implementation +always uses double quotes, so when parsing and printing a document, single quotes +may be converted to double quotes. The default value of an attribute definition +(AttDef) in an AttlistDecl, however, will maintain its quotes. + +=item * AttlistDecl + +Attribute declarations for a certain Element are always merged into a single +AttlistDecl object. + +=item * Comments + +Comments in the DOCTYPE section are not kept in the right place. They will become +child nodes of the Document. + +=item * Hidden Nodes + +Previous versions of XML::DOM would expand parameter entity references +(like B<%pent;>), so when printing the DTD, it would print the contents +of the external entity, instead of the parameter entity reference. +With this release (1.27), you can prevent this by setting the XML::DOM::Parser +options ParseParamEnt => 1 and ExpandParamEnt => 0. + +When it is parsing the contents of the external entities, it *DOES* still add +the nodes to the DocumentType, but it marks these nodes by setting +the 'Hidden' property. In addition, it adds an EntityReference node to the +DocumentType node. + +When printing the DocumentType node (or when using to_expat() or to_sax()), +the 'Hidden' nodes are suppressed, so you will see the parameter entity +reference instead of the contents of the external entities. See test case +t/dom_extent.t for an example. + +The reason for adding the 'Hidden' nodes to the DocumentType node, is that +the nodes may contain definitions that are referenced further +in the document. (Simply not adding the nodes to the DocumentType could +cause such entity references to be expanded incorrectly.) + +Note that you need XML::Parser 2.27 or higher for this to work correctly. + +=back + +=head1 SEE ALSO + +L + +The Japanese version of this document by Takanori Kawai (Hippo2000) +at L + +The DOM Level 1 specification at L + +The XML spec (Extensible Markup Language 1.0) at L + +The L and L manual pages. + +L also provides a DOM Parser, and is significantly faster +than XML::DOM, and is under active development. It requires that you +download the Gnome libxml library. + +L will provide the DOM Level 2 Core API, and should be +as fast as XML::LibXML, but more robust, since it uses the memory +management functions of libgdome. For more details see +L + +=head1 CAVEATS + +The method getElementsByTagName() does not return a "live" NodeList. +Whether this is an actual caveat is debatable, but a few people on the +www-dom mailing list seemed to think so. I haven't decided yet. It's a pain +to implement, it slows things down and the benefits seem marginal. +Let me know what you think. + +=head1 AUTHOR + +Enno Derksen is the original author. + +Send patches to T.J. Mather at >. + +Paid support is available from directly from the maintainers of this package. +Please see L for more details. + +Thanks to Clark Cooper for his help with the initial version. + +=cut diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/AttDef.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/AttDef.pod new file mode 100644 index 0000000000000000000000000000000000000000..b5acb78f2e7d95c6638117f5973342da36c00689 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/AttDef.pod @@ -0,0 +1,36 @@ +=head1 NAME + +XML::DOM::AttDef - A single XML attribute definition in an ATTLIST in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::AttDef extends L, but is not part of the DOM Level 1 +specification. + +Each object of this class represents one attribute definition in an AttlistDecl. + +=head2 METHODS + +=over 4 + +=item getName + +Returns the attribute name. + +=item getDefault + +Returns the default value, or undef. + +=item isFixed + +Whether the attribute value is fixed (see #FIXED keyword.) + +=item isRequired + +Whether the attribute value is required (see #REQUIRED keyword.) + +=item isImplied + +Whether the attribute value is implied (see #IMPLIED keyword.) + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/AttlistDecl.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/AttlistDecl.pod new file mode 100644 index 0000000000000000000000000000000000000000..56f2c71112e2794096833e65126c30a2f7dd84b4 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/AttlistDecl.pod @@ -0,0 +1,45 @@ +=head1 NAME + +XML::DOM::AttlistDecl - An XML ATTLIST declaration in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::AttlistDecl extends L but is not part of the +DOM Level 1 specification. + +This node represents an ATTLIST declaration, e.g. + + + +Each attribute definition is stored a separate AttDef node. The AttDef nodes can +be retrieved with getAttDef and added with addAttDef. +(The AttDef nodes are stored in a NamedNodeMap internally.) + +=head2 METHODS + +=over 4 + +=item getName + +Returns the Element tagName. + +=item getAttDef (attrName) + +Returns the AttDef node for the attribute with the specified name. + +=item addAttDef (attrName, type, default, [ fixed ]) + +Adds a AttDef node for the attribute with the specified name. + +Parameters: + I the attribute name. + I the attribute type (e.g. "CDATA" or "(male|female)".) + I the default value enclosed in quotes (!), the string #IMPLIED or + the string #REQUIRED. + I whether the attribute is '#FIXED' (default is 0.) + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Attr.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Attr.pod new file mode 100644 index 0000000000000000000000000000000000000000..9305c21389bc0eedbb18df0fbe77ef344bcc0903 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Attr.pod @@ -0,0 +1,67 @@ +=head1 NAME + +XML::DOM::Attr - An XML attribute in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Attr extends L. + +The Attr nodes built by the XML::DOM::Parser always have one child node +which is a Text node containing the expanded string value (i.e. EntityReferences +are always expanded.) EntityReferences may be added when modifying or creating +a new Document. + +The Attr interface represents an attribute in an Element object. +Typically the allowable values for the attribute are defined in a +document type definition. + +Attr objects inherit the Node interface, but since they are not +actually child nodes of the element they describe, the DOM does not +consider them part of the document tree. Thus, the Node attributes +parentNode, previousSibling, and nextSibling have a undef value for Attr +objects. The DOM takes the view that attributes are properties of +elements rather than having a separate identity from the elements they +are associated with; this should make it more efficient to implement +such features as default attributes associated with all elements of a +given type. Furthermore, Attr nodes may not be immediate children of a +DocumentFragment. However, they can be associated with Element nodes +contained within a DocumentFragment. In short, users and implementors +of the DOM need to be aware that Attr nodes have some things in common +with other objects inheriting the Node interface, but they also are +quite distinct. + +The attribute's effective value is determined as follows: if this +attribute has been explicitly assigned any value, that value is the +attribute's effective value; otherwise, if there is a declaration for +this attribute, and that declaration includes a default value, then +that default value is the attribute's effective value; otherwise, the +attribute does not exist on this element in the structure model until +it has been explicitly added. Note that the nodeValue attribute on the +Attr instance can also be used to retrieve the string version of the +attribute's value(s). + +In XML, where the value of an attribute can contain entity references, +the child nodes of the Attr node provide a representation in which +entity references are not expanded. These child nodes may be either +Text or EntityReference nodes. Because the attribute type may be +unknown, there are no tokenized attribute values. + +=head2 METHODS + +=over 4 + +=item getValue + +On retrieval, the value of the attribute is returned as a string. +Character and general entity references are replaced with their values. + +=item setValue (str) + +DOM Spec: On setting, this creates a Text node with the unparsed contents of the +string. + +=item getName + +Returns the name of this attribute. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/CDATASection.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/CDATASection.pod new file mode 100644 index 0000000000000000000000000000000000000000..54c26e1f86c1986bf3173bb0c963dee951e34e79 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/CDATASection.pod @@ -0,0 +1,31 @@ +=head1 NAME + +XML::DOM::CDATASection - Escaping XML text blocks in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::CDATASection extends L which extends +L. + +CDATA sections are used to escape blocks of text containing characters +that would otherwise be regarded as markup. The only delimiter that is +recognized in a CDATA section is the "]]>" string that ends the CDATA +section. CDATA sections can not be nested. The primary purpose is for +including material such as XML fragments, without needing to escape all +the delimiters. + +The DOMString attribute of the Text node holds the text that is +contained by the CDATA section. Note that this may contain characters +that need to be escaped outside of CDATA sections and that, depending +on the character encoding ("charset") chosen for serialization, it may +be impossible to write out some characters as part of a CDATA section. + +The CDATASection interface inherits the CharacterData interface through +the Text interface. Adjacent CDATASections nodes are not merged by use +of the Element.normalize() method. + +B XML::DOM::Parser and XML::DOM::ValParser convert all CDATASections +to regular text by default. +To preserve CDATASections, set the parser option KeepCDATA to 1. + + diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/CharacterData.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/CharacterData.pod new file mode 100644 index 0000000000000000000000000000000000000000..da591a7066d4018ad364ddf3a037d33d79925ef2 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/CharacterData.pod @@ -0,0 +1,87 @@ +=head1 NAME + +XML::DOM::CharacterData - Common interface for Text, CDATASections and Comments + +=head1 DESCRIPTION + +XML::DOM::CharacterData extends L + +The CharacterData interface extends Node with a set of attributes and +methods for accessing character data in the DOM. For clarity this set +is defined here rather than on each object that uses these attributes +and methods. No DOM objects correspond directly to CharacterData, +though Text, Comment and CDATASection do inherit the interface from it. +All offsets in this interface start from 0. + +=head2 METHODS + +=over 4 + +=item getData and setData (data) + +The character data of the node that implements this +interface. The DOM implementation may not put arbitrary +limits on the amount of data that may be stored in a +CharacterData node. However, implementation limits may mean +that the entirety of a node's data may not fit into a single +DOMString. In such cases, the user may call substringData to +retrieve the data in appropriately sized pieces. + +=item getLength + +The number of characters that are available through data and +the substringData method below. This may have the value zero, +i.e., CharacterData nodes may be empty. + +=item substringData (offset, count) + +Extracts a range of data from the node. + +Parameters: + I Start offset of substring to extract. + I The number of characters to extract. + +Return Value: The specified substring. If the sum of offset and count +exceeds the length, then all characters to the end of +the data are returned. + +=item appendData (str) + +Appends the string to the end of the character data of the +node. Upon success, data provides access to the concatenation +of data and the DOMString specified. + +=item insertData (offset, arg) + +Inserts a string at the specified character offset. + +Parameters: + I The character offset at which to insert. + I The DOMString to insert. + +=item deleteData (offset, count) + +Removes a range of characters from the node. +Upon success, data and length reflect the change. +If the sum of offset and count exceeds length then all characters +from offset to the end of the data are deleted. + +Parameters: + I The offset from which to remove characters. + I The number of characters to delete. + +=item replaceData (offset, count, arg) + +Replaces the characters starting at the specified character +offset with the specified string. + +Parameters: + I The offset from which to start replacing. + I The number of characters to replace. + I The DOMString with which the range must be replaced. + +If the sum of offset and count exceeds length, then all characters to the end of +the data are replaced (i.e., the effect is the same as a remove method call with +the same range, followed by an append method invocation). + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Comment.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Comment.pod new file mode 100644 index 0000000000000000000000000000000000000000..f8e2cb290e0e2baff9c371718eca6495265d3f92 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Comment.pod @@ -0,0 +1,14 @@ +=head1 NAME + +XML::DOM::Comment - An XML comment in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Comment extends L which extends +L. + +This node represents the content of a comment, i.e., all the characters +between the starting ''. Note that this is the +definition of a comment in XML, and, in practice, HTML, although some +HTML tools may implement the full SGML comment structure. + diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DOMException.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DOMException.pm new file mode 100644 index 0000000000000000000000000000000000000000..d49c69859a45b10b93fe1720f2264f211da21dc3 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DOMException.pm @@ -0,0 +1,88 @@ +###################################################################### +package XML::DOM::DOMException; +###################################################################### + +use Exporter; + +use overload '""' => \&stringify; +use vars qw ( @ISA @EXPORT @ErrorNames ); + +BEGIN +{ + @ISA = qw( Exporter ); + @EXPORT = qw( INDEX_SIZE_ERR + DOMSTRING_SIZE_ERR + HIERARCHY_REQUEST_ERR + WRONG_DOCUMENT_ERR + INVALID_CHARACTER_ERR + NO_DATA_ALLOWED_ERR + NO_MODIFICATION_ALLOWED_ERR + NOT_FOUND_ERR + NOT_SUPPORTED_ERR + INUSE_ATTRIBUTE_ERR + ); +} + +sub UNKNOWN_ERR () {0;} # not in the DOM Spec! +sub INDEX_SIZE_ERR () {1;} +sub DOMSTRING_SIZE_ERR () {2;} +sub HIERARCHY_REQUEST_ERR () {3;} +sub WRONG_DOCUMENT_ERR () {4;} +sub INVALID_CHARACTER_ERR () {5;} +sub NO_DATA_ALLOWED_ERR () {6;} +sub NO_MODIFICATION_ALLOWED_ERR () {7;} +sub NOT_FOUND_ERR () {8;} +sub NOT_SUPPORTED_ERR () {9;} +sub INUSE_ATTRIBUTE_ERR () {10;} + +@ErrorNames = ( + "UNKNOWN_ERR", + "INDEX_SIZE_ERR", + "DOMSTRING_SIZE_ERR", + "HIERARCHY_REQUEST_ERR", + "WRONG_DOCUMENT_ERR", + "INVALID_CHARACTER_ERR", + "NO_DATA_ALLOWED_ERR", + "NO_MODIFICATION_ALLOWED_ERR", + "NOT_FOUND_ERR", + "NOT_SUPPORTED_ERR", + "INUSE_ATTRIBUTE_ERR" + ); +sub new +{ + my ($type, $code, $msg) = @_; + my $self = bless {Code => $code}, $type; + + $self->{Message} = $msg if defined $msg; + +# print "=> Exception: " . $self->stringify . "\n"; + $self; +} + +sub getCode +{ + $_[0]->{Code}; +} + +#------------------------------------------------------------ +# Extra method implementations + +sub getName +{ + $ErrorNames[$_[0]->{Code}]; +} + +sub getMessage +{ + $_[0]->{Message}; +} + +sub stringify +{ + my $self = shift; + + "XML::DOM::DOMException(Code=" . $self->getCode . ", Name=" . + $self->getName . ", Message=" . $self->getMessage . ")"; +} + +1; # package return code diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DOMImplementation.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DOMImplementation.pod new file mode 100644 index 0000000000000000000000000000000000000000..cb5e34df9ccb114665e7578fbbbefc8c4cb4b054 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DOMImplementation.pod @@ -0,0 +1,24 @@ +=head1 NAME + +XML::DOM::DOMImplementation - Information about XML::DOM implementation + +=head1 DESCRIPTION + +The DOMImplementation interface provides a number of methods for +performing operations that are independent of any particular instance +of the document object model. + +The DOM Level 1 does not specify a way of creating a document instance, +and hence document creation is an operation specific to an +implementation. Future Levels of the DOM specification are expected to +provide methods for creating documents directly. + +=head2 METHODS + +=over 4 + +=item hasFeature (feature, version) + +Returns 1 if and only if feature equals "XML" and version equals "1.0". + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Document.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Document.pod new file mode 100644 index 0000000000000000000000000000000000000000..f8e7b81c9e6c53689280b4e0976c9c832b2f02d5 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Document.pod @@ -0,0 +1,220 @@ +=head1 NAME + +XML::DOM::Document - An XML document node in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Document extends L. + +It is the main root of the XML document structure as returned by +XML::DOM::Parser::parse and XML::DOM::Parser::parsefile. + +Since elements, text nodes, comments, processing instructions, etc. +cannot exist outside the context of a Document, the Document interface +also contains the factory methods needed to create these objects. The +Node objects created have a getOwnerDocument method which associates +them with the Document within whose context they were created. + +=head2 METHODS + +=over 4 + +=item getDocumentElement + +This is a convenience method that allows direct access to +the child node that is the root Element of the document. + +=item getDoctype + +The Document Type Declaration (see DocumentType) associated +with this document. For HTML documents as well as XML +documents without a document type declaration this returns +undef. The DOM Level 1 does not support editing the Document +Type Declaration. + +B: This implementation allows editing the doctype. +See I for details. + +=item getImplementation + +The DOMImplementation object that handles this document. A +DOM application may use objects from multiple implementations. + +=item createElement (tagName) + +Creates an element of the type specified. Note that the +instance returned implements the Element interface, so +attributes can be specified directly on the returned object. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the tagName does not conform to the XML spec. + +=back + +=item createTextNode (data) + +Creates a Text node given the specified string. + +=item createComment (data) + +Creates a Comment node given the specified string. + +=item createCDATASection (data) + +Creates a CDATASection node given the specified string. + +=item createAttribute (name [, value [, specified ]]) + +Creates an Attr of the given name. Note that the Attr +instance can then be set on an Element using the setAttribute method. + +B: The DOM Spec does not allow passing the value or the +specified property in this method. In this implementation they are optional. + +Parameters: + I The attribute's value. See Attr::setValue for details. + If the value is not supplied, the specified property is set to 0. + I Whether the attribute value was specified or whether the default + value was used. If not supplied, it's assumed to be 1. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the name does not conform to the XML spec. + +=back + +=item createProcessingInstruction (target, data) + +Creates a ProcessingInstruction node given the specified name and data strings. + +Parameters: + I The target part of the processing instruction. + I The data for the node. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the target does not conform to the XML spec. + +=back + +=item createDocumentFragment + +Creates an empty DocumentFragment object. + +=item createEntityReference (name) + +Creates an EntityReference object. + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item getXMLDecl and setXMLDecl (xmlDecl) + +Returns the XMLDecl for this Document or undef if none was specified. +Note that XMLDecl is not part of the list of child nodes. + +=item setDoctype (doctype) + +Sets or replaces the DocumentType. +B: Don't use appendChild or insertBefore to set the DocumentType. +Even though doctype will be part of the list of child nodes, it is handled +specially. + +=item getDefaultAttrValue (elem, attr) + +Returns the default attribute value as a string or undef, if none is available. + +Parameters: + I The element tagName. + I The attribute name. + +=item getEntity (name) + +Returns the Entity with the specified name. + +=item createXMLDecl (version, encoding, standalone) + +Creates an XMLDecl object. All parameters may be undefined. + +=item createDocumentType (name, sysId, pubId) + +Creates a DocumentType object. SysId and pubId may be undefined. + +=item createNotation (name, base, sysId, pubId) + +Creates a new Notation object. Consider using +XML::DOM::DocumentType::addNotation! + +=item createEntity (parameter, notationName, value, sysId, pubId, ndata) + +Creates an Entity object. Consider using XML::DOM::DocumentType::addEntity! + +=item createElementDecl (name, model) + +Creates an ElementDecl object. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the element name (tagName) does not conform to the XML spec. + +=back + +=item createAttlistDecl (name) + +Creates an AttlistDecl object. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the element name (tagName) does not conform to the XML spec. + +=back + +=item expandEntity (entity [, parameter]) + +Expands the specified entity or parameter entity (if parameter=1) and returns +its value as a string, or undef if the entity does not exist. +(The entity name should not contain the '%', '&' or ';' delimiters.) + +=item check ( [$checker] ) + +Uses the specified L to validate the document. +If no XML::Checker is supplied, a new XML::Checker is created. +See L for details. + +=item check_sax ( [$checker] ) + +Similar to check() except it uses the SAX interface to XML::Checker instead of +the expat interface. This method may disappear or replace check() at some time. + +=item createChecker () + +Creates an XML::Checker based on the document's DTD. +The $checker can be reused to check any elements within the document. +Create a new L whenever the DOCTYPE section of the document +is altered! + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DocumentFragment.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DocumentFragment.pod new file mode 100644 index 0000000000000000000000000000000000000000..aae2cd61f4b94daffae0c3b41b7835ac674ac1b7 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DocumentFragment.pod @@ -0,0 +1,40 @@ +=head1 NAME + +XML::DOM::DocumentFragment - Facilitates cut & paste in XML::DOM documents + +=head1 DESCRIPTION + +XML::DOM::DocumentFragment extends L + +DocumentFragment is a "lightweight" or "minimal" Document object. It is +very common to want to be able to extract a portion of a document's +tree or to create a new fragment of a document. Imagine implementing a +user command like cut or rearranging a document by moving fragments +around. It is desirable to have an object which can hold such fragments +and it is quite natural to use a Node for this purpose. While it is +true that a Document object could fulfil this role, a Document object +can potentially be a heavyweight object, depending on the underlying +implementation. What is really needed for this is a very lightweight +object. DocumentFragment is such an object. + +Furthermore, various operations -- such as inserting nodes as children +of another Node -- may take DocumentFragment objects as arguments; this +results in all the child nodes of the DocumentFragment being moved to +the child list of this node. + +The children of a DocumentFragment node are zero or more nodes +representing the tops of any sub-trees defining the structure of the +document. DocumentFragment nodes do not need to be well-formed XML +documents (although they do need to follow the rules imposed upon +well-formed XML parsed entities, which can have multiple top nodes). +For example, a DocumentFragment might have only one child and that +child node could be a Text node. Such a structure model represents +neither an HTML document nor a well-formed XML document. + +When a DocumentFragment is inserted into a Document (or indeed any +other Node that may take children) the children of the DocumentFragment +and not the DocumentFragment itself are inserted into the Node. This +makes the DocumentFragment very useful when the user wishes to create +nodes that are siblings; the DocumentFragment acts as the parent of +these nodes so that the user can use the standard methods from the Node +interface, such as insertBefore() and appendChild(). diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DocumentType.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DocumentType.pod new file mode 100644 index 0000000000000000000000000000000000000000..21df2629f7ffdccdca6fe292c32dcb49c4c96655 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/DocumentType.pod @@ -0,0 +1,186 @@ +=head1 NAME + +XML::DOM::DocumentType - An XML document type (DTD) in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::DocumentType extends L. + +Each Document has a doctype attribute whose value is either null or a +DocumentType object. The DocumentType interface in the DOM Level 1 Core +provides an interface to the list of entities that are defined for the +document, and little else because the effect of namespaces and the +various XML scheme efforts on DTD representation are not clearly +understood as of this writing. +The DOM Level 1 doesn't support editing DocumentType nodes. + +B: This implementation has added a lot of extra +functionality to the DOM Level 1 interface. +To allow editing of the DocumentType nodes, see XML::DOM::ignoreReadOnly. + +=head2 METHODS + +=over 4 + +=item getName + +Returns the name of the DTD, i.e. the name immediately following the +DOCTYPE keyword. + +=item getEntities + +A NamedNodeMap containing the general entities, both external +and internal, declared in the DTD. Duplicates are discarded. +For example in: + + + + + ]> + + +the interface provides access to foo and bar but not baz. +Every node in this map also implements the Entity interface. + +The DOM Level 1 does not support editing entities, therefore +entities cannot be altered in any way. + +B: See XML::DOM::ignoreReadOnly to edit the DocumentType etc. + +=item getNotations + +A NamedNodeMap containing the notations declared in the DTD. +Duplicates are discarded. Every node in this map also +implements the Notation interface. + +The DOM Level 1 does not support editing notations, therefore +notations cannot be altered in any way. + +B: See XML::DOM::ignoreReadOnly to edit the DocumentType etc. + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item Creating and setting the DocumentType + +A new DocumentType can be created with: + + $doctype = $doc->createDocumentType ($name, $sysId, $pubId, $internal); + +To set (or replace) the DocumentType for a particular document, use: + + $doc->setDocType ($doctype); + +=item getSysId and setSysId (sysId) + +Returns or sets the system id. + +=item getPubId and setPubId (pudId) + +Returns or sets the public id. + +=item setName (name) + +Sets the name of the DTD, i.e. the name immediately following the +DOCTYPE keyword. Note that this should always be the same as the element +tag name of the root element. + +=item getAttlistDecl (elemName) + +Returns the AttlistDecl for the Element with the specified name, or undef. + +=item getElementDecl (elemName) + +Returns the ElementDecl for the Element with the specified name, or undef. + +=item getEntity (entityName) + +Returns the Entity with the specified name, or undef. + +=item addAttlistDecl (elemName) + +Adds a new AttDecl node with the specified elemName if one doesn't exist yet. +Returns the AttlistDecl (new or existing) node. + +=item addElementDecl (elemName, model) + +Adds a new ElementDecl node with the specified elemName and model if one doesn't +exist yet. +Returns the AttlistDecl (new or existing) node. The model is ignored if one +already existed. + +=item addEntity (notationName, value, sysId, pubId, ndata, parameter) + +Adds a new Entity node. Don't use createEntity and appendChild, because it should +be added to the internal NamedNodeMap containing the entities. + +Parameters: + I the entity name. + I the entity value. + I the system id (if any.) + I the public id (if any.) + I the NDATA declaration (if any, for general unparsed entities.) + I whether it is a parameter entity (%ent;) or not (&ent;). + +SysId, pubId and ndata may be undefined. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the notationName does not conform to the XML spec. + +=back + +=item addNotation (name, base, sysId, pubId) + +Adds a new Notation object. + +Parameters: + I the notation name. + I the base to be used for resolving a relative URI. + I the system id. + I the public id. + +Base, sysId, and pubId may all be undefined. +(These parameters are passed by the XML::Parser Notation handler.) + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the notationName does not conform to the XML spec. + +=back + +=item addAttDef (elemName, attrName, type, default, fixed) + +Adds a new attribute definition. It will add the AttDef node to the AttlistDecl +if it exists. If an AttDef with the specified attrName already exists for the +given elemName, this function only generates a warning. + +See XML::DOM::AttDef::new for the other parameters. + +=item getDefaultAttrValue (elem, attr) + +Returns the default attribute value as a string or undef, if none is available. + +Parameters: + I The element tagName. + I The attribute name. + +=item expandEntity (entity [, parameter]) + +Expands the specified entity or parameter entity (if parameter=1) and returns +its value as a string, or undef if the entity does not exist. +(The entity name should not contain the '%', '&' or ';' delimiters.) + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Element.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Element.pod new file mode 100644 index 0000000000000000000000000000000000000000..7a07e0d2a88bc41ca2b8be5b83db122d4a811b05 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Element.pod @@ -0,0 +1,191 @@ +=head1 NAME + +XML::DOM::Element - An XML element node in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Element extends L. + +By far the vast majority of objects (apart from text) that authors +encounter when traversing a document are Element nodes. Assume the +following XML document: + + + + + + +When represented using DOM, the top node is an Element node for +"elementExample", which contains two child Element nodes, one for +"subelement1" and one for "subelement2". "subelement1" contains no +child nodes. + +Elements may have attributes associated with them; since the Element +interface inherits from Node, the generic Node interface method +getAttributes may be used to retrieve the set of all attributes for an +element. There are methods on the Element interface to retrieve either +an Attr object by name or an attribute value by name. In XML, where an +attribute value may contain entity references, an Attr object should be +retrieved to examine the possibly fairly complex sub-tree representing +the attribute value. On the other hand, in HTML, where all attributes +have simple string values, methods to directly access an attribute +value can safely be used as a convenience. + +=head2 METHODS + +=over 4 + +=item getTagName + +The name of the element. For example, in: + + + ... + + +tagName has the value "elementExample". Note that this is +case-preserving in XML, as are all of the operations of the +DOM. + +=item getAttribute (name) + +Retrieves an attribute value by name. + +Return Value: The Attr value as a string, or the empty string if that +attribute does not have a specified or default value. + +=item setAttribute (name, value) + +Adds a new attribute. If an attribute with that name is +already present in the element, its value is changed to be +that of the value parameter. This value is a simple string, +it is not parsed as it is being set. So any markup (such as +syntax to be recognized as an entity reference) is treated as +literal text, and needs to be appropriately escaped by the +implementation when it is written out. In order to assign an +attribute value that contains entity references, the user +must create an Attr node plus any Text and EntityReference +nodes, build the appropriate subtree, and use +setAttributeNode to assign it as the value of an attribute. + + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the specified name contains an invalid character. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=back + +=item removeAttribute (name) + +Removes an attribute by name. If the removed attribute has a +default value it is immediately replaced. + +DOMExceptions: + +=over 4 + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=back + +=item getAttributeNode + +Retrieves an Attr node by name. + +Return Value: The Attr node with the specified attribute name or undef +if there is no such attribute. + +=item setAttributeNode (attr) + +Adds a new attribute. If an attribute with that name is +already present in the element, it is replaced by the new one. + +Return Value: If the newAttr attribute replaces an existing attribute +with the same name, the previously existing Attr node is +returned, otherwise undef is returned. + +DOMExceptions: + +=over 4 + +=item * WRONG_DOCUMENT_ERR + +Raised if newAttr was created from a different document than the one that created +the element. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=item * INUSE_ATTRIBUTE_ERR + +Raised if newAttr is already an attribute of another Element object. The DOM +user must explicitly clone Attr nodes to re-use them in other elements. + +=back + +=item removeAttributeNode (oldAttr) + +Removes the specified attribute. If the removed Attr has a default value it is +immediately replaced. If the Attr already is the default value, nothing happens +and nothing is returned. + +Parameters: + I The Attr node to remove from the attribute list. + +Return Value: The Attr node that was removed. + +DOMExceptions: + +=over 4 + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=item * NOT_FOUND_ERR + +Raised if oldAttr is not an attribute of the element. + +=back + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item setTagName (newTagName) + +Sets the tag name of the Element. Note that this method is not portable +between DOM implementations. + +DOMExceptions: + +=over 4 + +=item * INVALID_CHARACTER_ERR + +Raised if the specified name contains an invalid character. + +=back + +=item check ($checker) + +Uses the specified L to validate the document. +NOTE: an XML::Checker must be supplied. The checker can be created in +different ways, e.g. when parsing a document with XML::DOM::ValParser, +or with XML::DOM::Document::createChecker(). +See L for more info. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/ElementDecl.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/ElementDecl.pod new file mode 100644 index 0000000000000000000000000000000000000000..dd59b693121e58e91e65fe8ab0b608e7ab24dbb7 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/ElementDecl.pod @@ -0,0 +1,27 @@ +=head1 NAME + +XML::DOM::ElementDecl - An XML ELEMENT declaration in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::ElementDecl extends L but is not part of the +DOM Level 1 specification. + +This node represents an Element declaration, e.g. + + + +=head2 METHODS + +=over 4 + +=item getName + +Returns the Element tagName. + +=item getModel and setModel (model) + +Returns and sets the model as a string, e.g. +"(street+, city, state, zip, country?)" in the above example. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Entity.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Entity.pod new file mode 100644 index 0000000000000000000000000000000000000000..45418e87f14ae1630a175d6e38278547fa2c9d17 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Entity.pod @@ -0,0 +1,56 @@ +=head1 NAME + +XML::DOM::Entity - An XML ENTITY in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Entity extends L. + +This node represents an Entity declaration, e.g. + + + + + +The first one is called a parameter entity and is referenced like this: %draft; +The 2nd is a (regular) entity and is referenced like this: &hatch-pic; + +=head2 METHODS + +=over 4 + +=item getNotationName + +Returns the name of the notation for the entity. + +I The DOM Spec says: For unparsed entities, the name of the +notation for the entity. For parsed entities, this is null. +(This implementation does not support unparsed entities.) + +=item getSysId + +Returns the system id, or undef. + +=item getPubId + +Returns the public id, or undef. + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item isParameterEntity + +Whether it is a parameter entity (%ent;) or not (&ent;) + +=item getValue + +Returns the entity value. + +=item getNdata + +Returns the NDATA declaration (for general unparsed entities), or undef. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/EntityReference.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/EntityReference.pod new file mode 100644 index 0000000000000000000000000000000000000000..4ecda3101b75f5f41e96ff96663a7e2af756f54d --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/EntityReference.pod @@ -0,0 +1,27 @@ +=head1 NAME + +XML::DOM::EntityReference - An XML ENTITY reference in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::EntityReference extends L. + +EntityReference objects may be inserted into the structure model when +an entity reference is in the source document, or when the user wishes +to insert an entity reference. Note that character references and +references to predefined entities are considered to be expanded by the +HTML or XML processor so that characters are represented by their +Unicode equivalent rather than by an entity reference. Moreover, the +XML processor may completely expand references to entities while +building the structure model, instead of providing EntityReference +objects. If it does provide such objects, then for a given +EntityReference node, it may be that there is no Entity node +representing the referenced entity; but if such an Entity exists, then +the child list of the EntityReference node is the same as that of the +Entity node. As with the Entity node, all descendants of the +EntityReference are readonly. + +The resolution of the children of the EntityReference (the replacement +value of the referenced Entity) may be lazily evaluated; actions by the +user (such as calling the childNodes method on the EntityReference +node) are assumed to trigger the evaluation. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NamedNodeMap.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NamedNodeMap.pm new file mode 100644 index 0000000000000000000000000000000000000000..3747d545f0aa3973ac2421de845623a9c55d2e80 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NamedNodeMap.pm @@ -0,0 +1,271 @@ +###################################################################### +package XML::DOM::NamedNodeMap; +###################################################################### + +use strict; + +use Carp; +use XML::DOM::DOMException; +use XML::DOM::NodeList; + +use vars qw( $Special ); + +# Constant definition: +# Note: a real Name should have at least 1 char, so nobody else should use this +$Special = ""; + +sub new +{ + my ($class, %args) = @_; + + $args{Values} = new XML::DOM::NodeList; + + # Store all NamedNodeMap properties in element $Special + bless { $Special => \%args}, $class; +} + +sub getNamedItem +{ + # Don't return the $Special item! + ($_[1] eq $Special) ? undef : $_[0]->{$_[1]}; +} + +sub setNamedItem +{ + my ($self, $node) = @_; + my $prop = $self->{$Special}; + + my $name = $node->getNodeName; + + if ($XML::DOM::SafeMode) + { + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR) + if $self->isReadOnly; + + croak new XML::DOM::DOMException (WRONG_DOCUMENT_ERR) + if $node->[XML::DOM::Node::_Doc] != $prop->{Doc}; + + croak new XML::DOM::DOMException (INUSE_ATTRIBUTE_ERR) + if defined ($node->[XML::DOM::Node::_UsedIn]); + + croak new XML::DOM::DOMException (INVALID_CHARACTER_ERR, + "can't add name with NodeName [$name] to NamedNodeMap") + if $name eq $Special; + } + + my $values = $prop->{Values}; + my $index = -1; + + my $prev = $self->{$name}; + if (defined $prev) + { + # decouple previous node + $prev->decoupleUsedIn; + + # find index of $prev + $index = 0; + for my $val (@{$values}) + { + last if ($val == $prev); + $index++; + } + } + + $self->{$name} = $node; + $node->[XML::DOM::Node::_UsedIn] = $self; + + if ($index == -1) + { + push (@{$values}, $node); + } + else # replace previous node with new node + { + splice (@{$values}, $index, 1, $node); + } + + $prev; +} + +sub removeNamedItem +{ + my ($self, $name) = @_; + + # Be careful that user doesn't delete $Special node! + croak new XML::DOM::DOMException (NOT_FOUND_ERR) + if $name eq $Special; + + my $node = $self->{$name}; + + croak new XML::DOM::DOMException (NOT_FOUND_ERR) + unless defined $node; + + # The DOM Spec doesn't mention this Exception - I think it's an oversight + croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR) + if $self->isReadOnly; + + $node->decoupleUsedIn; + delete $self->{$name}; + + # remove node from Values list + my $values = $self->getValues; + my $index = 0; + for my $val (@{$values}) + { + if ($val == $node) + { + splice (@{$values}, $index, 1, ()); + last; + } + $index++; + } + $node; +} + +# The following 2 are really bogus. DOM should use an iterator instead (Clark) + +sub item +{ + my ($self, $item) = @_; + $self->{$Special}->{Values}->[$item]; +} + +sub getLength +{ + my ($self) = @_; + my $vals = $self->{$Special}->{Values}; + int (@$vals); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub isReadOnly +{ + return 0 if $XML::DOM::IgnoreReadOnly; + + my $used = $_[0]->{$Special}->{UsedIn}; + defined $used ? $used->isReadOnly : 0; +} + +sub cloneNode +{ + my ($self, $deep) = @_; + my $prop = $self->{$Special}; + + my $map = new XML::DOM::NamedNodeMap (Doc => $prop->{Doc}); + # Not copying Parent property on purpose! + + local $XML::DOM::IgnoreReadOnly = 1; # temporarily... + + for my $val (@{$prop->{Values}}) + { + my $key = $val->getNodeName; + + my $newNode = $val->cloneNode ($deep); + $newNode->[XML::DOM::Node::_UsedIn] = $map; + $map->{$key} = $newNode; + push (@{$map->{$Special}->{Values}}, $newNode); + } + + $map; +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + my $special = $self->{$Special}; + + $special->{Doc} = $doc; + for my $kid (@{$special->{Values}}) + { + $kid->setOwnerDocument ($doc); + } +} + +sub getChildIndex +{ + my ($self, $attr) = @_; + my $i = 0; + for my $kid (@{$self->{$Special}->{Values}}) + { + return $i if $kid == $attr; + $i++; + } + -1; # not found +} + +sub getValues +{ + wantarray ? @{ $_[0]->{$Special}->{Values} } : $_[0]->{$Special}->{Values}; +} + +# Remove circular dependencies. The NamedNodeMap and its values should +# not be used afterwards. +sub dispose +{ + my $self = shift; + + for my $kid (@{$self->getValues}) + { + undef $kid->[XML::DOM::Node::_UsedIn]; # was delete + $kid->dispose; + } + + delete $self->{$Special}->{Doc}; + delete $self->{$Special}->{Parent}; + delete $self->{$Special}->{Values}; + + for my $key (keys %$self) + { + delete $self->{$key}; + } +} + +sub setParentNode +{ + $_[0]->{$Special}->{Parent} = $_[1]; +} + +sub getProperty +{ + $_[0]->{$Special}->{$_[1]}; +} + +#?? remove after debugging +sub toString +{ + my ($self) = @_; + my $str = "NamedNodeMap["; + while (my ($key, $val) = each %$self) + { + if ($key eq $Special) + { + $str .= "##Special ("; + while (my ($k, $v) = each %$val) + { + if ($k eq "Values") + { + $str .= $k . " => ["; + for my $a (@$v) + { +# $str .= $a->getNodeName . "=" . $a . ","; + $str .= $a->toString . ","; + } + $str .= "], "; + } + else + { + $str .= $k . " => " . $v . ", "; + } + } + $str .= "), "; + } + else + { + $str .= $key . " => " . $val . ", "; + } + } + $str . "]"; +} + +1; # package return code diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NamedNodeMap.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NamedNodeMap.pod new file mode 100644 index 0000000000000000000000000000000000000000..62c276272a8483b0bfc2966ba7a990ae96175363 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NamedNodeMap.pod @@ -0,0 +1,130 @@ +=head1 NAME + +XML::DOM::NamedNodeMap - A hash table interface for XML::DOM + +=head1 DESCRIPTION + +Objects implementing the NamedNodeMap interface are used to represent +collections of nodes that can be accessed by name. Note that +NamedNodeMap does not inherit from NodeList; NamedNodeMaps are not +maintained in any particular order. Objects contained in an object +implementing NamedNodeMap may also be accessed by an ordinal index, but +this is simply to allow convenient enumeration of the contents of a +NamedNodeMap, and does not imply that the DOM specifies an order to +these Nodes. + +Note that in this implementation, the objects added to a NamedNodeMap +are kept in order. + +=head2 METHODS + +=over 4 + +=item getNamedItem (name) + +Retrieves a node specified by name. + +Return Value: A Node (of any type) with the specified name, or undef if +the specified name did not identify any node in the map. + +=item setNamedItem (arg) + +Adds a node using its nodeName attribute. + +As the nodeName attribute is used to derive the name which +the node must be stored under, multiple nodes of certain +types (those that have a "special" string value) cannot be +stored as the names would clash. This is seen as preferable +to allowing nodes to be aliased. + +Parameters: + I A node to store in a named node map. + +The node will later be accessible using the value of the nodeName +attribute of the node. If a node with that name is +already present in the map, it is replaced by the new one. + +Return Value: If the new Node replaces an existing node with the same +name the previously existing Node is returned, otherwise undef is returned. + +DOMExceptions: + +=over 4 + +=item * WRONG_DOCUMENT_ERR + +Raised if arg was created from a different document than the one that +created the NamedNodeMap. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this NamedNodeMap is readonly. + +=item * INUSE_ATTRIBUTE_ERR + +Raised if arg is an Attr that is already an attribute of another Element object. +The DOM user must explicitly clone Attr nodes to re-use them in other elements. + +=back + +=item removeNamedItem (name) + +Removes a node specified by name. If the removed node is an +Attr with a default value it is immediately replaced. + +Return Value: The node removed from the map or undef if no node with +such a name exists. + +DOMException: + +=over 4 + +=item * NOT_FOUND_ERR + +Raised if there is no node named name in the map. + +=back + +=item item (index) + +Returns the indexth item in the map. If index is greater than +or equal to the number of nodes in the map, this returns undef. + +Return Value: The node at the indexth position in the NamedNodeMap, or +undef if that is not a valid index. + +=item getLength + +Returns the number of nodes in the map. The range of valid child node +indices is 0 to length-1 inclusive. + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item getValues + +Returns a NodeList with the nodes contained in the NamedNodeMap. +The NodeList is "live", in that it reflects changes made to the NamedNodeMap. + +When this method is called in a list context, it returns a regular perl list +containing the values. Note that this list is not "live". E.g. + + @list = $map->getValues; # returns a perl list + $nodelist = $map->getValues; # returns a NodeList (object ref.) + for my $val ($map->getValues) # iterate over the values + +=item getChildIndex (node) + +Returns the index of the node in the NodeList as returned by getValues, or -1 +if the node is not in the NamedNodeMap. + +=item dispose + +Removes all circular references in this NamedNodeMap and its descendants so the +objects can be claimed for garbage collection. The objects should not be used +afterwards. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Node.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Node.pod new file mode 100644 index 0000000000000000000000000000000000000000..0129cc5c1cf6096c28258073a69aa69635dd8723 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Node.pod @@ -0,0 +1,451 @@ +=head1 NAME + +XML::DOM::Node - Super class of all nodes in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Node is the super class of all nodes in an XML::DOM document. +This means that all nodes that subclass XML::DOM::Node also inherit all +the methods that XML::DOM::Node implements. + +=head2 GLOBAL VARIABLES + +=over 4 + +=item @NodeNames + +The variable @XML::DOM::Node::NodeNames maps the node type constants to strings. +It is used by XML::DOM::Node::getNodeTypeName. + +=back + +=head2 METHODS + +=over 4 + +=item getNodeType + +Return an integer indicating the node type. See XML::DOM constants. + +=item getNodeName + +Return a property or a hardcoded string, depending on the node type. +Here are the corresponding functions or values: + + Attr getName + AttDef getName + AttlistDecl getName + CDATASection "#cdata-section" + Comment "#comment" + Document "#document" + DocumentType getNodeName + DocumentFragment "#document-fragment" + Element getTagName + ElementDecl getName + EntityReference getEntityName + Entity getNotationName + Notation getName + ProcessingInstruction getTarget + Text "#text" + XMLDecl "#xml-declaration" + +B: AttDef, AttlistDecl, ElementDecl and XMLDecl were added for +completeness. + +=item getNodeValue and setNodeValue (value) + +Returns a string or undef, depending on the node type. This method is provided +for completeness. In other languages it saves the programmer an upcast. +The value is either available thru some other method defined in the subclass, or +else undef is returned. Here are the corresponding methods: +Attr::getValue, Text::getData, CDATASection::getData, Comment::getData, +ProcessingInstruction::getData. + +=item getParentNode and setParentNode (parentNode) + +The parent of this node. All nodes, except Document, +DocumentFragment, and Attr may have a parent. However, if a +node has just been created and not yet added to the tree, or +if it has been removed from the tree, this is undef. + +=item getChildNodes + +A NodeList that contains all children of this node. If there +are no children, this is a NodeList containing no nodes. The +content of the returned NodeList is "live" in the sense that, +for instance, changes to the children of the node object that +it was created from are immediately reflected in the nodes +returned by the NodeList accessors; it is not a static +snapshot of the content of the node. This is true for every +NodeList, including the ones returned by the +getElementsByTagName method. + +NOTE: this implementation does not return a "live" NodeList for +getElementsByTagName. See L. + +When this method is called in a list context, it returns a regular perl list +containing the child nodes. Note that this list is not "live". E.g. + + @list = $node->getChildNodes; # returns a perl list + $nodelist = $node->getChildNodes; # returns a NodeList (object reference) + for my $kid ($node->getChildNodes) # iterate over the children of $node + +=item getFirstChild + +The first child of this node. If there is no such node, this returns undef. + +=item getLastChild + +The last child of this node. If there is no such node, this returns undef. + +=item getPreviousSibling + +The node immediately preceding this node. If there is no such +node, this returns undef. + +=item getNextSibling + +The node immediately following this node. If there is no such node, this returns +undef. + +=item getAttributes + +A NamedNodeMap containing the attributes (Attr nodes) of this node +(if it is an Element) or undef otherwise. +Note that adding/removing attributes from the returned object, also adds/removes +attributes from the Element node that the NamedNodeMap came from. + +=item getOwnerDocument + +The Document object associated with this node. This is also +the Document object used to create new nodes. When this node +is a Document this is undef. + +=item insertBefore (newChild, refChild) + +Inserts the node newChild before the existing child node +refChild. If refChild is undef, insert newChild at the end of +the list of children. + +If newChild is a DocumentFragment object, all of its children +are inserted, in the same order, before refChild. If the +newChild is already in the tree, it is first removed. + +Return Value: The node being inserted. + +DOMExceptions: + +=over 4 + +=item * HIERARCHY_REQUEST_ERR + +Raised if this node is of a type that does not allow children of the type of +the newChild node, or if the node to insert is one of this node's ancestors. + +=item * WRONG_DOCUMENT_ERR + +Raised if newChild was created from a different document than the one that +created this node. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=item * NOT_FOUND_ERR + +Raised if refChild is not a child of this node. + +=back + +=item replaceChild (newChild, oldChild) + +Replaces the child node oldChild with newChild in the list of +children, and returns the oldChild node. If the newChild is +already in the tree, it is first removed. + +Return Value: The node replaced. + +DOMExceptions: + +=over 4 + +=item * HIERARCHY_REQUEST_ERR + +Raised if this node is of a type that does not allow children of the type of +the newChild node, or it the node to put in is one of this node's ancestors. + +=item * WRONG_DOCUMENT_ERR + +Raised if newChild was created from a different document than the one that +created this node. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=item * NOT_FOUND_ERR + +Raised if oldChild is not a child of this node. + +=back + +=item removeChild (oldChild) + +Removes the child node indicated by oldChild from the list of +children, and returns it. + +Return Value: The node removed. + +DOMExceptions: + +=over 4 + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=item * NOT_FOUND_ERR + +Raised if oldChild is not a child of this node. + +=back + +=item appendChild (newChild) + +Adds the node newChild to the end of the list of children of +this node. If the newChild is already in the tree, it is +first removed. If it is a DocumentFragment object, the entire contents of +the document fragment are moved into the child list of this node + +Return Value: The node added. + +DOMExceptions: + +=over 4 + +=item * HIERARCHY_REQUEST_ERR + +Raised if this node is of a type that does not allow children of the type of +the newChild node, or if the node to append is one of this node's ancestors. + +=item * WRONG_DOCUMENT_ERR + +Raised if newChild was created from a different document than the one that +created this node. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=back + +=item hasChildNodes + +This is a convenience method to allow easy determination of +whether a node has any children. + +Return Value: 1 if the node has any children, 0 otherwise. + +=item cloneNode (deep) + +Returns a duplicate of this node, i.e., serves as a generic +copy constructor for nodes. The duplicate node has no parent +(parentNode returns undef.). + +Cloning an Element copies all attributes and their values, +including those generated by the XML processor to represent +defaulted attributes, but this method does not copy any text +it contains unless it is a deep clone, since the text is +contained in a child Text node. Cloning any other type of +node simply returns a copy of this node. + +Parameters: + I If true, recursively clone the subtree under the specified node. +If false, clone only the node itself (and its attributes, if it is an Element). + +Return Value: The duplicate node. + +=item normalize + +Puts all Text nodes in the full depth of the sub-tree +underneath this Element into a "normal" form where only +markup (e.g., tags, comments, processing instructions, CDATA +sections, and entity references) separates Text nodes, i.e., +there are no adjacent Text nodes. This can be used to ensure +that the DOM view of a document is the same as if it were +saved and re-loaded, and is useful when operations (such as +XPointer lookups) that depend on a particular document tree +structure are to be used. + +B: In the DOM Spec this method is defined in the Element and +Document class interfaces only, but it doesn't hurt to have it here... + +=item getElementsByTagName (name [, recurse]) + +Returns a NodeList of all descendant elements with a given +tag name, in the order in which they would be encountered in +a preorder traversal of the Element tree. + +Parameters: + I The name of the tag to match on. The special value "*" matches all tags. + I Whether it should return only direct child nodes (0) or any descendant that matches the tag name (1). This argument is optional and defaults to 1. It is not part of the DOM spec. + +Return Value: A list of matching Element nodes. + +NOTE: this implementation does not return a "live" NodeList for +getElementsByTagName. See L. + +When this method is called in a list context, it returns a regular perl list +containing the result nodes. E.g. + + @list = $node->getElementsByTagName("tag"); # returns a perl list + $nodelist = $node->getElementsByTagName("tag"); # returns a NodeList (object ref.) + for my $elem ($node->getElementsByTagName("tag")) # iterate over the result nodes + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item getNodeTypeName + +Return the string describing the node type. +E.g. returns "ELEMENT_NODE" if getNodeType returns ELEMENT_NODE. +It uses @XML::DOM::Node::NodeNames. + +=item toString + +Returns the entire subtree as a string. + +=item printToFile (filename) + +Prints the entire subtree to the file with the specified filename. + +Croaks: if the file could not be opened for writing. + +=item printToFileHandle (handle) + +Prints the entire subtree to the file handle. +E.g. to print to STDOUT: + + $node->printToFileHandle (\*STDOUT); + +=item print (obj) + +Prints the entire subtree using the object's print method. E.g to print to a +FileHandle object: + + $f = new FileHandle ("file.out", "w"); + $node->print ($f); + +=item getChildIndex (child) + +Returns the index of the child node in the list returned by getChildNodes. + +Return Value: the index or -1 if the node is not found. + +=item getChildAtIndex (index) + +Returns the child node at the specified index or undef. + +=item addText (text) + +Appends the specified string to the last child if it is a Text node, or else +appends a new Text node (with the specified text.) + +Return Value: the last child if it was a Text node or else the new Text node. + +=item dispose + +Removes all circular references in this node and its descendants so the +objects can be claimed for garbage collection. The objects should not be used +afterwards. + +=item setOwnerDocument (doc) + +Sets the ownerDocument property of this node and all its children (and +attributes etc.) to the specified document. +This allows the user to cut and paste document subtrees between different +XML::DOM::Documents. The node should be removed from the original document +first, before calling setOwnerDocument. + +This method does nothing when called on a Document node. + +=item isAncestor (parent) + +Returns 1 if parent is an ancestor of this node or if it is this node itself. + +=item expandEntityRefs (str) + +Expands all the entity references in the string and returns the result. +The entity references can be character references (e.g. "{" or "ῂ"), +default entity references (""", ">", "<", "'" and "&") or +entity references defined in Entity objects as part of the DocumentType of +the owning Document. Character references are expanded into UTF-8. +Parameter entity references (e.g. %ent;) are not expanded. + +=item to_sax ( %HANDLERS ) + +E.g. + + $node->to_sax (DocumentHandler => $my_handler, + Handler => $handler2 ); + +%HANDLERS may contain the following handlers: + +=over 4 + +=item * DocumentHandler + +=item * DTDHandler + +=item * EntityResolver + +=item * Handler + +Default handler when one of the above is not specified + +=back + +Each XML::DOM::Node generates the appropriate SAX callbacks (for the +appropriate SAX handler.) Different SAX handlers can be plugged in to +accomplish different things, e.g. L would check the node +(currently only Document and Element nodes are supported), L +would create a new DOM subtree (thereby, in essence, copying the Node) +and in the near future, XML::Writer could print the node. +All Perl SAX related work is still in flux, so this interface may change a +little. + +See PerlSAX for the description of the SAX interface. + +=item check ( [$checker] ) + +See descriptions for check() in L and L. + +=item xql ( @XQL_OPTIONS ) + +To use the xql method, you must first I L and L. +This method is basically a shortcut for: + + $query = new XML::XQL::Query ( @XQL_OPTIONS ); + return $query->solve ($node); + +If the first parameter in @XQL_OPTIONS is the XQL expression, you can leave off +the 'Expr' keyword, so: + + $node->xql ("doc//elem1[@attr]", @other_options); + +is identical to: + + $node->xql (Expr => "doc//elem1[@attr]", @other_options); + +See L for other available XQL_OPTIONS. +See L and L for more info. + +=item isHidden () + +Whether the node is hidden. +See L for details. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NodeList.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NodeList.pm new file mode 100644 index 0000000000000000000000000000000000000000..81aad84881cc06ade5f0232f33989f0615a21bce --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NodeList.pm @@ -0,0 +1,46 @@ +###################################################################### +package XML::DOM::NodeList; +###################################################################### + +use vars qw ( $EMPTY ); + +# Empty NodeList +$EMPTY = new XML::DOM::NodeList; + +sub new +{ + bless [], $_[0]; +} + +sub item +{ + $_[0]->[$_[1]]; +} + +sub getLength +{ + int (@{$_[0]}); +} + +#------------------------------------------------------------ +# Extra method implementations + +sub dispose +{ + my $self = shift; + for my $kid (@{$self}) + { + $kid->dispose; + } +} + +sub setOwnerDocument +{ + my ($self, $doc) = @_; + for my $kid (@{$self}) + { + $kid->setOwnerDocument ($doc); + } +} + +1; # package return code diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NodeList.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NodeList.pod new file mode 100644 index 0000000000000000000000000000000000000000..1767c5b6a0100851ffe94296eeb2e5dffbf6b70d --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/NodeList.pod @@ -0,0 +1,46 @@ +=head1 NAME + +XML::DOM::NodeList - A node list as used by XML::DOM + +=head1 DESCRIPTION + +The NodeList interface provides the abstraction of an ordered +collection of nodes, without defining or constraining how this +collection is implemented. + +The items in the NodeList are accessible via an integral index, +starting from 0. + +Although the DOM spec states that all NodeLists are "live" in that they +allways reflect changes to the DOM tree, the NodeList returned by +getElementsByTagName is not live in this implementation. See L +for details. + +=head2 METHODS + +=over 4 + +=item item (index) + +Returns the indexth item in the collection. If index is +greater than or equal to the number of nodes in the list, +this returns undef. + +=item getLength + +The number of nodes in the list. The range of valid child +node indices is 0 to length-1 inclusive. + +=back + +=head2 Additional methods not in the DOM Spec + +=over 4 + +=item dispose + +Removes all circular references in this NodeList and its descendants so the +objects can be claimed for garbage collection. The objects should not be used +afterwards. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Notation.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Notation.pod new file mode 100644 index 0000000000000000000000000000000000000000..e197a177f263805746524d3e49c1917339b53c4e --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Notation.pod @@ -0,0 +1,47 @@ +=head1 NAME + +XML::DOM::Notation - An XML NOTATION in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Notation extends L. + +This node represents a Notation, e.g. + + + + + + + + + +=head2 METHODS + +=over 4 + +=item getName and setName (name) + +Returns (or sets) the Notation name, which is the first token after the +NOTATION keyword. + +=item getSysId and setSysId (sysId) + +Returns (or sets) the system ID, which is the token after the optional +SYSTEM keyword. + +=item getPubId and setPubId (pubId) + +Returns (or sets) the public ID, which is the token after the optional +PUBLIC keyword. + +=item getBase + +This is passed by XML::Parser in the Notation handler. +I don't know what it is yet. + +=item getNodeName + +Returns the same as getName. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Parser.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Parser.pod new file mode 100644 index 0000000000000000000000000000000000000000..b8cd46ec91963eec25511df32d5e9d1f8aa1b5cb --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Parser.pod @@ -0,0 +1,67 @@ +=head1 NAME + +XML::DOM::Parser - An XML::Parser that builds XML::DOM document structures + +=head1 SYNOPSIS + + use XML::DOM; + + my $parser = new XML::DOM::Parser; + my $doc = $parser->parsefile ("file.xml"); + $doc->dispose; # Avoid memory leaks - cleanup circular references + +=head1 DESCRIPTION + +XML::DOM::Parser extends L + +The XML::Parser module was written by Clark Cooper and +is built on top of XML::Parser::Expat, +which is a lower level interface to James Clark's expat library. + +XML::DOM::Parser parses XML strings or files +and builds a data structure that conforms to the API of the Document Object +Model as described at L. +See the L manpage for other additional properties of the +XML::DOM::Parser class. +Note that the 'Style' property should not be used (it is set internally.) + +The XML::Parser B option is more or less supported, in that it will +generate EntityReference objects whenever an entity reference is encountered +in character data. I'm not sure how useful this is. Any comments are welcome. + +As described in the synopsis, when you create an XML::DOM::Parser object, +the parse and parsefile methods create an L object +from the specified input. This Document object can then be examined, modified and +written back out to a file or converted to a string. + +When using XML::DOM with XML::Parser version 2.19 and up, setting the +XML::DOM::Parser option B to 1 will store CDATASections in +CDATASection nodes, instead of converting them to Text nodes. +Subsequent CDATASection nodes will be merged into one. Let me know if this +is a problem. + +=head1 Using LWP to parse URLs + +The parsefile() method now also supports URLs, e.g. I. +It uses LWP to download the file and then calls parse() on the resulting string. +By default it will use a L that is created as follows: + + use LWP::UserAgent; + $LWP_USER_AGENT = LWP::UserAgent->new; + $LWP_USER_AGENT->env_proxy; + +Note that env_proxy reads proxy settings from environment variables, which is what I need to +do to get thru our firewall. If you want to use a different LWP::UserAgent, you can either set +it globally with: + + XML::DOM::Parser::set_LWP_UserAgent ($my_agent); + +or, you can specify it for a specific XML::DOM::Parser by passing it to the constructor: + + my $parser = new XML::DOM::Parser (LWP_UserAgent => $my_agent); + +Currently, LWP is used when the filename (passed to parsefile) starts with one of +the following URL schemes: http, https, ftp, wais, gopher, or file (followed by a colon.) +If I missed one, please let me know. + +The LWP modules are part of libwww-perl which is available at CPAN. diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/PerlSAX.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/PerlSAX.pm new file mode 100644 index 0000000000000000000000000000000000000000..f025cce0afdeb00a79a7c1d72cb522e1131062c0 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/PerlSAX.pm @@ -0,0 +1,47 @@ +package XML::DOM::PerlSAX; +use strict; + +BEGIN +{ + if ($^W) + { + warn "XML::DOM::PerlSAX has been renamed to XML::Handler::BuildDOM, please modify your code accordingly."; + } +} + +use XML::Handler::BuildDOM; +use vars qw{ @ISA }; +@ISA = qw{ XML::Handler::BuildDOM }; + +1; # package return code + +__END__ + +=head1 NAME + +XML::DOM::PerlSAX - Old name of L + +=head1 SYNOPSIS + + See L + +=head1 DESCRIPTION + +XML::DOM::PerlSAX was renamed to L to comply +with naming conventions for PerlSAX filters/handlers. + +For backward compatibility, this package will remain in existence +(it simply includes XML::Handler::BuildDOM), but it will print a warning when +running with I<'perl -w'>. + +=head1 AUTHOR + +Enno Derksen is the original author. + +Send bug reports, hints, tips, suggestions to T.J Mather at +>. + +=head1 SEE ALSO + +L, L + diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/ProcessingInstruction.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/ProcessingInstruction.pod new file mode 100644 index 0000000000000000000000000000000000000000..9bedf175ed9ceaf6f4c9d8ac748b2cab80af2e09 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/ProcessingInstruction.pod @@ -0,0 +1,32 @@ +=head1 NAME + +XML::DOM::ProcessingInstruction - An XML processing instruction in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::ProcessingInstruction extends L. + +It represents a "processing instruction", used in XML as a way to keep +processor-specific information in the text of the document. An example: + + + +Here, "PI" is the target and "processing instruction" is the data. + +=head2 METHODS + +=over 4 + +=item getTarget + +The target of this processing instruction. XML defines this +as being the first token following the markup that begins the +processing instruction. + +=item getData and setData (data) + +The content of this processing instruction. This is from the +first non white space character after the target to the +character immediately preceding the ?>. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Text.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Text.pod new file mode 100644 index 0000000000000000000000000000000000000000..b86f1ea784767ed521100f4a721b19d3b1a595c7 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/Text.pod @@ -0,0 +1,60 @@ +=head1 NAME + +XML::DOM::Text - A piece of XML text in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::Text extends L, which extends +L. + +The Text interface represents the textual content (termed character +data in XML) of an Element or Attr. If there is no markup inside an +element's content, the text is contained in a single object +implementing the Text interface that is the only child of the element. +If there is markup, it is parsed into a list of elements and Text nodes +that form the list of children of the element. + +When a document is first made available via the DOM, there is only one +Text node for each block of text. Users may create adjacent Text nodes +that represent the contents of a given element without any intervening +markup, but should be aware that there is no way to represent the +separations between these nodes in XML or HTML, so they will not (in +general) persist between DOM editing sessions. The normalize() method +on Element merges any such adjacent Text objects into a single node for +each block of text; this is recommended before employing operations +that depend on a particular document structure, such as navigation with +XPointers. + +=head2 METHODS + +=over 4 + +=item splitText (offset) + +Breaks this Text node into two Text nodes at the specified +offset, keeping both in the tree as siblings. This node then +only contains all the content up to the offset point. And a +new Text node, which is inserted as the next sibling of this +node, contains all the content at and after the offset point. + +Parameters: + I The offset at which to split, starting from 0. + +Return Value: The new Text node. + +DOMExceptions: + +=over 4 + +=item * INDEX_SIZE_ERR + +Raised if the specified offset is negative or greater than the number of +characters in data. + +=item * NO_MODIFICATION_ALLOWED_ERR + +Raised if this node is readonly. + +=back + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/XMLDecl.pod b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/XMLDecl.pod new file mode 100644 index 0000000000000000000000000000000000000000..f6e6a3a48a1fd8d961f356e89dc77adb782b02da --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/DOM/XMLDecl.pod @@ -0,0 +1,33 @@ +=head1 NAME + +XML::DOM::XMLDecl - XML declaration in XML::DOM + +=head1 DESCRIPTION + +XML::DOM::XMLDecl extends L, but is not part of the DOM Level 1 +specification. + +It contains the XML declaration, e.g. + + + +See also XML::DOM::Document::getXMLDecl. + +=head2 METHODS + +=over 4 + +=item getVersion and setVersion (version) + +Returns and sets the XML version. At the time of this writing the version should +always be "1.0" + +=item getEncoding and setEncoding (encoding) + +undef may be specified for the encoding value. + +=item getStandalone and setStandalone (standalone) + +undef may be specified for the standalone value. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/Handler/BuildDOM.pm b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/Handler/BuildDOM.pm new file mode 100644 index 0000000000000000000000000000000000000000..e124f47ee4923ddb1181c5b881218e55313d106f --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/lib/XML/Handler/BuildDOM.pm @@ -0,0 +1,338 @@ +package XML::Handler::BuildDOM; +use strict; +use XML::DOM; + +# +# TODO: +# - add support for parameter entity references +# - expand API: insert Elements in the tree or stuff into DocType etc. + +sub new +{ + my ($class, %args) = @_; + bless \%args, $class; +} + +#-------- PerlSAX Handler methods ------------------------------ + +sub start_document # was Init +{ + my $self = shift; + + # Define Document if it's not set & not obtainable from Element or DocType + $self->{Document} ||= + (defined $self->{Element} ? $self->{Element}->getOwnerDocument : undef) + || (defined $self->{DocType} ? $self->{DocType}->getOwnerDocument : undef) + || new XML::DOM::Document(); + + $self->{Element} ||= $self->{Document}; + + unless (defined $self->{DocType}) + { + $self->{DocType} = $self->{Document}->getDoctype + if defined $self->{Document}; + + unless (defined $self->{Doctype}) + { +#?? should be $doc->createDocType for extensibility! + $self->{DocType} = new XML::DOM::DocumentType ($self->{Document}); + $self->{Document}->setDoctype ($self->{DocType}); + } + } + + # Prepare for document prolog + $self->{InProlog} = 1; + + # We haven't passed the root element yet + $self->{EndDoc} = 0; + + undef $self->{LastText}; +} + +sub end_document # was Final +{ + my $self = shift; + unless ($self->{SawDocType}) + { + my $doctype = $self->{Document}->removeDoctype; + $doctype->dispose; +#?? do we always want to destroy the Doctype? + } + $self->{Document}; +} + +sub characters # was Char +{ + my $self = $_[0]; + my $str = $_[1]->{Data}; + + if ($self->{InCDATA} && $self->{KeepCDATA}) + { + undef $self->{LastText}; + # Merge text with previous node if possible + $self->{Element}->addCDATA ($str); + } + else + { + # Merge text with previous node if possible + # Used to be: $expat->{DOM_Element}->addText ($str); + if ($self->{LastText}) + { + $self->{LastText}->appendData ($str); + } + else + { + $self->{LastText} = $self->{Document}->createTextNode ($str); + $self->{Element}->appendChild ($self->{LastText}); + } + } +} + +sub start_element # was Start +{ + my ($self, $hash) = @_; + my $elem = $hash->{Name}; + my $attr = $hash->{Attributes}; + + my $parent = $self->{Element}; + my $doc = $self->{Document}; + + if ($parent == $doc) + { + # End of document prolog, i.e. start of first Element + $self->{InProlog} = 0; + } + + undef $self->{LastText}; + my $node = $doc->createElement ($elem); + $self->{Element} = $node; + $parent->appendChild ($node); + + my $i = 0; + my $n = scalar keys %$attr; + return unless $n; + + if (exists $hash->{AttributeOrder}) + { + my $defaulted = $hash->{Defaulted}; + my @order = @{ $hash->{AttributeOrder} }; + + # Specified attributes + for (my $i = 0; $i < $defaulted; $i++) + { + my $a = $order[$i]; + my $att = $doc->createAttribute ($a, $attr->{$a}, 1); + $node->setAttributeNode ($att); + } + + # Defaulted attributes + for (my $i = $defaulted; $i < @order; $i++) + { + my $a = $order[$i]; + my $att = $doc->createAttribute ($elem, $attr->{$a}, 0); + $node->setAttributeNode ($att); + } + } + else + { + # We're assuming that all attributes were specified (1) + for my $a (keys %$attr) + { + my $att = $doc->createAttribute ($a, $attr->{$a}, 1); + $node->setAttributeNode ($att); + } + } +} + +sub end_element +{ + my $self = shift; + $self->{Element} = $self->{Element}->getParentNode; + undef $self->{LastText}; + + # Check for end of root element + $self->{EndDoc} = 1 if ($self->{Element} == $self->{Document}); +} + +sub entity_reference # was Default +{ + my $self = $_[0]; + my $name = $_[1]->{Name}; + + $self->{Element}->appendChild ( + $self->{Document}->createEntityReference ($name)); + undef $self->{LastText}; +} + +sub start_cdata +{ + my $self = shift; + $self->{InCDATA} = 1; +} + +sub end_cdata +{ + my $self = shift; + $self->{InCDATA} = 0; +} + +sub comment +{ + my $self = $_[0]; + + local $XML::DOM::IgnoreReadOnly = 1; + + undef $self->{LastText}; + my $comment = $self->{Document}->createComment ($_[1]->{Data}); + $self->{Element}->appendChild ($comment); +} + +sub doctype_decl +{ + my ($self, $hash) = @_; + + $self->{DocType}->setParams ($hash->{Name}, $hash->{SystemId}, + $hash->{PublicId}, $hash->{Internal}); + $self->{SawDocType} = 1; +} + +sub attlist_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + $self->{DocType}->addAttDef ($hash->{ElementName}, + $hash->{AttributeName}, + $hash->{Type}, + $hash->{Default}, + $hash->{Fixed}); +} + +sub xml_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + undef $self->{LastText}; + $self->{Document}->setXMLDecl (new XML::DOM::XMLDecl ($self->{Document}, + $hash->{Version}, + $hash->{Encoding}, + $hash->{Standalone})); +} + +sub entity_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + # Parameter Entities names are passed starting with '%' + my $parameter = 0; + +#?? parameter entities currently not supported by PerlSAX! + + undef $self->{LastText}; + $self->{DocType}->addEntity ($parameter, $hash->{Name}, $hash->{Value}, + $hash->{SystemId}, $hash->{PublicId}, + $hash->{Notation}); +} + +# Unparsed is called when it encounters e.g: +# +# +# +sub unparsed_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + # same as regular ENTITY, as far as DOM is concerned + $self->entity_decl ($hash); +} + +sub element_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + undef $self->{LastText}; + $self->{DocType}->addElementDecl ($hash->{Name}, $hash->{Model}); +} + +sub notation_decl +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + undef $self->{LastText}; + $self->{DocType}->addNotation ($hash->{Name}, $hash->{Base}, + $hash->{SystemId}, $hash->{PublicId}); +} + +sub processing_instruction +{ + my ($self, $hash) = @_; + + local $XML::DOM::IgnoreReadOnly = 1; + + undef $self->{LastText}; + $self->{Element}->appendChild (new XML::DOM::ProcessingInstruction + ($self->{Document}, $hash->{Target}, $hash->{Data})); +} + +return 1; + +__END__ + +=head1 NAME + +XML::Handler::BuildDOM - PerlSAX handler that creates XML::DOM document structures + +=head1 SYNOPSIS + + use XML::Handler::BuildDOM; + use XML::Parser::PerlSAX; + + my $handler = new XML::Handler::BuildDOM (KeepCDATA => 1); + my $parser = new XML::Parser::PerlSAX (Handler => $handler); + + my $doc = $parser->parsefile ("file.xml"); + +=head1 DESCRIPTION + +XML::Handler::BuildDOM creates L document structures +(i.e. L) from PerlSAX events. + +This class used to be called L prior to libxml-enno 1.0.1. + +=head2 CONSTRUCTOR OPTIONS + +The XML::Handler::BuildDOM constructor supports the following options: + +=over 4 + +=item * KeepCDATA => 1 + +If set to 0 (default), CDATASections will be converted to regular text. + +=item * Document => $doc + +If undefined, start_document will extract it from Element or DocType (if set), +otherwise it will create a new XML::DOM::Document. + +=item * Element => $elem + +If undefined, it is set to Document. This will be the insertion point (or parent) +for the nodes defined by the following callbacks. + +=item * DocType => $doctype + +If undefined, start_document will extract it from Document (if possible). +Otherwise it adds a new XML::DOM::DocumentType to the Document. + +=back diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/pm_to_blib b/fastSum/resources/ROUGE/XML-DOM-1.46/pm_to_blib new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/samples/REC-xml-19980210.xml b/fastSum/resources/ROUGE/XML-DOM-1.46/samples/REC-xml-19980210.xml new file mode 100644 index 0000000000000000000000000000000000000000..c108ff5a7114b7bb01f1b2f53abd670254aaecc6 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/samples/REC-xml-19980210.xml @@ -0,0 +1,4197 @@ + + + + + + + + + + + + + + + + +"> + +'"> + + + + + + + + + +amp, +lt, +gt, +apos, +quot"> + + + + + +]> + + + + + +
+Extensible Markup Language (XML) 1.0 + +REC-xml-&iso6.doc.date; +W3C Recommendation +&draft.day;&draft.month;&draft.year; + + + +http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date; + +http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.xml + +http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.html + +http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.pdf + +http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.ps + + + +http://www.w3.org/TR/REC-xml + + + +http://www.w3.org/TR/PR-xml-971208 + + + +Tim Bray +Textuality and Netscape +tbray@textuality.com +Jean Paoli +Microsoft +jeanpa@microsoft.com +C. M. Sperberg-McQueen +University of Illinois at Chicago +cmsmcq@uic.edu + + +

The Extensible Markup Language (XML) is a subset of +SGML that is completely described in this document. Its goal is to +enable generic SGML to be served, received, and processed on the Web +in the way that is now possible with HTML. XML has been designed for +ease of implementation and for interoperability with both SGML and +HTML.

+
+ +

This document has been reviewed by W3C Members and +other interested parties and has been endorsed by the +Director as a W3C Recommendation. It is a stable +document and may be used as reference material or cited +as a normative reference from another document. W3C's +role in making the Recommendation is to draw attention +to the specification and to promote its widespread +deployment. This enhances the functionality and +interoperability of the Web.

+

+This document specifies a syntax created by subsetting an existing, +widely used international text processing standard (Standard +Generalized Markup Language, ISO 8879:1986(E) as amended and +corrected) for use on the World Wide Web. It is a product of the W3C +XML Activity, details of which can be found at http://www.w3.org/XML. A list of +current W3C Recommendations and other technical documents can be found +at http://www.w3.org/TR. +

+

This specification uses the term URI, which is defined by , a work in progress expected to update and . +

+

The list of known errors in this specification is +available at +http://www.w3.org/XML/xml-19980210-errata.

+

Please report errors in this document to +xml-editor@w3.org. +

+
+ + + +

Chicago, Vancouver, Mountain View, et al.: +World-Wide Web Consortium, XML Working Group, 1996, 1997.

+
+ +

Created in electronic form.

+
+ +English +Extended Backus-Naur Form (formal grammar) + + + +1997-12-03 : CMSMcQ : yet further changes +1997-12-02 : TB : further changes (see TB to XML WG, +2 December 1997) +1997-12-02 : CMSMcQ : deal with as many corrections and +comments from the proofreaders as possible: +entify hard-coded document date in pubdate element, +change expansion of entity WebSGML, +update status description as per Dan Connolly (am not sure +about refernece to Berners-Lee et al.), +add 'The' to abstract as per WG decision, +move Relationship to Existing Standards to back matter and +combine with References, +re-order back matter so normative appendices come first, +re-tag back matter so informative appendices are tagged informdiv1, +remove XXX XXX from list of 'normative' specs in prose, +move some references from Other References to Normative References, +add RFC 1738, 1808, and 2141 to Other References (they are not +normative since we do not require the processor to enforce any +rules based on them), +add reference to 'Fielding draft' (Berners-Lee et al.), +move notation section to end of body, +drop URIchar non-terminal and use SkipLit instead, +lose stray reference to defunct nonterminal 'markupdecls', +move reference to Aho et al. into appendix (Tim's right), +add prose note saying that hash marks and fragment identifiers are +NOT part of the URI formally speaking, and are NOT legal in +system identifiers (processor 'may' signal an error). +Work through: +Tim Bray reacting to James Clark, +Tim Bray on his own, +Eve Maler, + +NOT DONE YET: +change binary / text to unparsed / parsed. +handle James's suggestion about < in attriubte values +uppercase hex characters, +namechar list, + +1997-12-01 : JB : add some column-width parameters +1997-12-01 : CMSMcQ : begin round of changes to incorporate +recent WG decisions and other corrections: +binding sources of character encoding info (27 Aug / 3 Sept), +correct wording of Faust quotation (restore dropped line), +drop SDD from EncodingDecl, +change text at version number 1.0, +drop misleading (wrong!) sentence about ignorables and extenders, +modify definition of PCData to make bar on msc grammatical, +change grammar's handling of internal subset (drop non-terminal markupdecls), +change definition of includeSect to allow conditional sections, +add integral-declaration constraint on internal subset, +drop misleading / dangerous sentence about relationship of +entities with system storage objects, +change table body tag to htbody as per EM change to DTD, +add rule about space normalization in public identifiers, +add description of how to generate our name-space rules from +Unicode character database (needs further work!). + +1997-10-08 : TB : Removed %-constructs again, new rules +for PE appearance. +1997-10-01 : TB : Case-sensitive markup; cleaned up +element-type defs, lotsa little edits for style +1997-09-25 : TB : Change to elm's new DTD, with +substantial detail cleanup as a side-effect +1997-07-24 : CMSMcQ : correct error (lost *) in definition +of ignoreSectContents (thanks to Makoto Murata) +Allow all empty elements to have end-tags, consistent with +SGML TC (as per JJC). +1997-07-23 : CMSMcQ : pre-emptive strike on pending corrections: +introduce the term 'empty-element tag', note that all empty elements +may use it, and elements declared EMPTY must use it. +Add WFC requiring encoding decl to come first in an entity. +Redefine notations to point to PIs as well as binary entities. +Change autodetection table by removing bytes 3 and 4 from +examples with Byte Order Mark. +Add content model as a term and clarify that it applies to both +mixed and element content. + +1997-06-30 : CMSMcQ : change date, some cosmetic changes, +changes to productions for choice, seq, Mixed, NotationType, +Enumeration. Follow James Clark's suggestion and prohibit +conditional sections in internal subset. TO DO: simplify +production for ignored sections as a result, since we don't +need to worry about parsers which don't expand PErefs finding +a conditional section. +1997-06-29 : TB : various edits +1997-06-29 : CMSMcQ : further changes: +Suppress old FINAL EDIT comments and some dead material. +Revise occurrences of % in grammar to exploit Henry Thompson's pun, +especially markupdecl and attdef. +Remove RMD requirement relating to element content (?). + +1997-06-28 : CMSMcQ : Various changes for 1 July draft: +Add text for draconian error handling (introduce +the term Fatal Error). +RE deleta est (changing wording from +original announcement to restrict the requirement to validating +parsers). +Tag definition of validating processor and link to it. +Add colon as name character. +Change def of %operator. +Change standard definitions of lt, gt, amp. +Strip leading zeros from #x00nn forms. +1997-04-02 : CMSMcQ : final corrections of editorial errors +found in last night's proofreading. Reverse course once more on +well-formed: Webster's Second hyphenates it, and that's enough +for me. +1997-04-01 : CMSMcQ : corrections from JJC, EM, HT, and self +1997-03-31 : Tim Bray : many changes +1997-03-29 : CMSMcQ : some Henry Thompson (on entity handling), +some Charles Goldfarb, some ERB decisions (PE handling in miscellaneous +declarations. Changed Ident element to accept def attribute. +Allow normalization of Unicode characters. move def of systemliteral +into section on literals. +1997-03-28 : CMSMcQ : make as many corrections as possible, from +Terry Allen, Norbert Mikula, James Clark, Jon Bosak, Henry Thompson, +Paul Grosso, and self. Among other things: give in on "well formed" +(Terry is right), tentatively rename QuotedCData as AttValue +and Literal as EntityValue to be more informative, since attribute +values are the only place QuotedCData was used, and +vice versa for entity text and Literal. (I'd call it Entity Text, +but 8879 uses that name for both internal and external entities.) +1997-03-26 : CMSMcQ : resynch the two forks of this draft, reapply +my changes dated 03-20 and 03-21. Normalize old 'may not' to 'must not' +except in the one case where it meant 'may or may not'. +1997-03-21 : TB : massive changes on plane flight from Chicago +to Vancouver +1997-03-21 : CMSMcQ : correct as many reported errors as possible. + +1997-03-20 : CMSMcQ : correct typos listed in CMSMcQ hand copy of spec. +1997-03-20 : CMSMcQ : cosmetic changes preparatory to revision for +WWW conference April 1997: restore some of the internal entity +references (e.g. to docdate, etc.), change character xA0 to &nbsp; +and define nbsp as &#160;, and refill a lot of paragraphs for +legibility. +1996-11-12 : CMSMcQ : revise using Tim's edits: +Add list type of NUMBERED and change most lists either to +BULLETS or to NUMBERED. +Suppress QuotedNames, Names (not used). +Correct trivial-grammar doc type decl. +Rename 'marked section' as 'CDATA section' passim. +Also edits from James Clark: +Define the set of characters from which [^abc] subtracts. +Charref should use just [0-9] not Digit. +Location info needs cleaner treatment: remove? (ERB +question). +One example of a PI has wrong pic. +Clarify discussion of encoding names. +Encoding failure should lead to unspecified results; don't +prescribe error recovery. +Don't require exposure of entity boundaries. +Ignore white space in element content. +Reserve entity names of the form u-NNNN. +Clarify relative URLs. +And some of my own: +Correct productions for content model: model cannot +consist of a name, so "elements ::= cp" is no good. + +1996-11-11 : CMSMcQ : revise for style. +Add new rhs to entity declaration, for parameter entities. +1996-11-10 : CMSMcQ : revise for style. +Fix / complete section on names, characters. +Add sections on parameter entities, conditional sections. +Still to do: Add compatibility note on deterministic content models. +Finish stylistic revision. +1996-10-31 : TB : Add Entity Handling section +1996-10-30 : TB : Clean up term & termdef. Slip in +ERB decision re EMPTY. +1996-10-28 : TB : Change DTD. Implement some of Michael's +suggestions. Change comments back to //. Introduce language for +XML namespace reservation. Add section on white-space handling. +Lots more cleanup. +1996-10-24 : CMSMcQ : quick tweaks, implement some ERB +decisions. Characters are not integers. Comments are /* */ not //. +Add bibliographic refs to 10646, HyTime, Unicode. +Rename old Cdata as MsData since it's only seen +in marked sections. Call them attribute-value pairs not +name-value pairs, except once. Internal subset is optional, needs +'?'. Implied attributes should be signaled to the app, not +have values supplied by processor. +1996-10-16 : TB : track down & excise all DSD references; +introduce some EBNF for entity declarations. +1996-10-?? : TB : consistency check, fix up scraps so +they all parse, get formatter working, correct a few productions. +1996-10-10/11 : CMSMcQ : various maintenance, stylistic, and +organizational changes: +Replace a few literals with xmlpio and +pic entities, to make them consistent and ensure we can change pic +reliably when the ERB votes. +Drop paragraph on recognizers from notation section. +Add match, exact match to terminology. +Move old 2.2 XML Processors and Apps into intro. +Mention comments, PIs, and marked sections in discussion of +delimiter escaping. +Streamline discussion of doctype decl syntax. +Drop old section of 'PI syntax' for doctype decl, and add +section on partial-DTD summary PIs to end of Logical Structures +section. +Revise DSD syntax section to use Tim's subset-in-a-PI +mechanism. +1996-10-10 : TB : eliminate name recognizers (and more?) +1996-10-09 : CMSMcQ : revise for style, consistency through 2.3 +(Characters) +1996-10-09 : CMSMcQ : re-unite everything for convenience, +at least temporarily, and revise quickly +1996-10-08 : TB : first major homogenization pass +1996-10-08 : TB : turn "current" attribute on div type into +CDATA +1996-10-02 : TB : remould into skeleton + entities +1996-09-30 : CMSMcQ : add a few more sections prior to exchange + with Tim. +1996-09-20 : CMSMcQ : finish transcribing notes. +1996-09-19 : CMSMcQ : begin transcribing notes for draft. +1996-09-13 : CMSMcQ : made outline from notes of 09-06, +do some housekeeping + + +
+ + +Introduction +

Extensible Markup Language, abbreviated XML, describes a class of +data objects called XML documents and +partially describes the behavior of +computer programs which process them. XML is an application profile or +restricted form of SGML, the Standard Generalized Markup +Language . +By construction, XML documents +are conforming SGML documents. +

+

XML documents are made up of storage units called entities, which contain either parsed +or unparsed data. +Parsed data is made up of characters, +some +of which form character data, +and some of which form markup. +Markup encodes a description of the document's storage layout and +logical structure. XML provides a mechanism to impose constraints on +the storage layout and logical structure.

+

A software module +called an XML processor is used to read XML documents +and provide access to their content and structure. It is assumed that an XML processor is +doing its work on behalf of another module, called the +application. This specification describes the +required behavior of an XML processor in terms of how it must read XML +data and the information it must provide to the application.

+ + +Origin and Goals +

XML was developed by an XML Working Group (originally known as the +SGML Editorial Review Board) formed under the auspices of the World +Wide Web Consortium (W3C) in 1996. +It was chaired by Jon Bosak of Sun +Microsystems with the active participation of an XML Special +Interest Group (previously known as the SGML Working Group) also +organized by the W3C. The membership of the XML Working Group is given +in an appendix. Dan Connolly served as the WG's contact with the W3C. +

+

The design goals for XML are: +

XML shall be straightforwardly usable over the +Internet.

+

XML shall support a wide variety of applications.

+

XML shall be compatible with SGML.

+

It shall be easy to write programs which process XML +documents.

+

The number of optional features in XML is to be kept to the +absolute minimum, ideally zero.

+

XML documents should be human-legible and reasonably +clear.

+

The XML design should be prepared quickly.

+

The design of XML shall be formal and concise.

+

XML documents shall be easy to create.

+

Terseness in XML markup is of minimal importance.

+

+

This specification, +together with associated standards +(Unicode and ISO/IEC 10646 for characters, +Internet RFC 1766 for language identification tags, +ISO 639 for language name codes, and +ISO 3166 for country name codes), +provides all the information necessary to understand +XML Version &XML.version; +and construct computer programs to process it.

+

This version of the XML specification + +&doc.distribution;.

+ +
+ + + + + +Terminology + +

The terminology used to describe XML documents is defined in the body of +this specification. +The terms defined in the following list are used in building those +definitions and in describing the actions of an XML processor: + + + +

Conforming documents and XML +processors are permitted to but need not behave as +described.

+ + + +

Conforming documents and XML processors +are required to behave as described; otherwise they are in error. + +

+
+ + +

A violation of the rules of this +specification; results are +undefined. Conforming software may detect and report an error and may +recover from it.

+
+ + +

An error +which a conforming XML processor +must detect and report to the application. +After encountering a fatal error, the +processor may continue +processing the data to search for further errors and may report such +errors to the application. In order to support correction of errors, +the processor may make unprocessed data from the document (with +intermingled character data and markup) available to the application. +Once a fatal error is detected, however, the processor must not +continue normal processing (i.e., it must not +continue to pass character data and information about the document's +logical structure to the application in the normal way). +

+
+ + +

Conforming software may or must (depending on the modal verb in the +sentence) behave as described; if it does, it must +provide users a means to enable or disable the behavior +described.

+
+ + +

A rule which applies to all +valid XML documents. +Violations of validity constraints are errors; they must, at user option, +be reported by +validating XML processors.

+
+ + +

A rule which applies to all well-formed XML documents. +Violations of well-formedness constraints are +fatal errors.

+
+ + + +

(Of strings or names:) +Two strings or names being compared must be identical. +Characters with multiple possible representations in ISO/IEC 10646 (e.g. +characters with +both precomposed and base+diacritic forms) match only if they have the +same representation in both strings. +At user option, processors may normalize such characters to +some canonical form. +No case folding is performed. +(Of strings and rules in the grammar:) +A string matches a grammatical production if it belongs to the +language generated by that production. +(Of content and content models:) +An element matches its declaration when it conforms +in the fashion described in the constraint +. + +

+
+ + +

A feature of +XML included solely to ensure that XML remains compatible with SGML. +

+
+ + +

A +non-binding recommendation included to increase the chances that XML +documents can be processed by the existing installed base of SGML +processors which predate the +&WebSGML;.

+
+ +

+
+ + +
+ + + +Documents + +

+A data object is an +XML document if it is +well-formed, as +defined in this specification. +A well-formed XML document may in addition be +valid if it meets certain further +constraints.

+ +

Each XML document has both a logical and a physical structure. +Physically, the document is composed of units called entities. An entity may refer to other entities to cause their +inclusion in the document. A document begins in a "root" or document entity. +Logically, the document is composed of declarations, elements, +comments, +character references, and +processing +instructions, all of which are indicated in the document by explicit +markup. +The logical and physical structures must nest properly, as described +in . +

+ + +Well-Formed XML Documents + +

+A textual object is +a well-formed XML document if: + +

Taken as a whole, it +matches the production labeled document.

+

It +meets all the well-formedness constraints given in this specification.

+
+

Each of the parsed entities +which is referenced directly or indirectly within the document is +well-formed.

+

+

+ +Document +document +prolog +element +Misc* + +

+

Matching the document production +implies that: + +

It contains one or more +elements.

+ + +

There is exactly +one element, called the root, or document element, no +part of which appears in the content of any other element. +For all other elements, if the start-tag is in the content of another +element, the end-tag is in the content of the same element. More +simply stated, the elements, delimited by start- and end-tags, nest +properly within each other. +

+ +

+

As a consequence +of this, +for each non-root element +C in the document, there is one other element P +in the document such that +C is in the content of P, but is not in +the content of any other element that is in the content of +P. +P is referred to as the +parent of C, and C as a +child of P.

+ + +Characters + +

A parsed entity contains +text, a sequence of +characters, +which may represent markup or character data. +A character +is an atomic unit of text as specified by +ISO/IEC 10646 . +Legal characters are tab, carriage return, line feed, and the legal +graphic characters of Unicode and ISO/IEC 10646. +The use of "compatibility characters", as defined in section 6.8 +of , is discouraged. + + +Character Range + +Char +#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] +| [#x10000-#x10FFFF] +any Unicode character, excluding the +surrogate blocks, FFFE, and FFFF. + + +

+ +

The mechanism for encoding character code points into bit patterns may +vary from entity to entity. All XML processors must accept the UTF-8 +and UTF-16 encodings of 10646; the mechanisms for signaling which of +the two is in use, or for bringing other encodings into play, are +discussed later, in . +

+ +
+ + +Common Syntactic Constructs + +

This section defines some symbols used widely in the grammar.

+

S (white space) consists of one or more space (#x20) +characters, carriage returns, line feeds, or tabs. + + +White Space + +S +(#x20 | #x9 | #xD | #xA)+ + + +

+

Characters are classified for convenience as letters, digits, or other +characters. Letters consist of an alphabetic or syllabic +base character possibly +followed by one or more combining characters, or of an ideographic +character. +Full definitions of the specific characters in each class +are given in .

+

A Name is a token +beginning with a letter or one of a few punctuation characters, and continuing +with letters, digits, hyphens, underscores, colons, or full stops, together +known as name characters. +Names beginning with the string "xml", or any string +which would match (('X'|'x') ('M'|'m') ('L'|'l')), are +reserved for standardization in this or future versions of this +specification. +

+ +

The colon character within XML names is reserved for experimentation with +name spaces. +Its meaning is expected to be +standardized at some future point, at which point those documents +using the colon for experimental purposes may need to be updated. +(There is no guarantee that any name-space mechanism +adopted for XML will in fact use the colon as a name-space delimiter.) +In practice, this means that authors should not use the colon in XML +names except as part of name-space experiments, but that XML processors +should accept the colon as a name character.

+
+

An +Nmtoken (name token) is any mixture of +name characters. + +Names and Tokens +NameChar +Letter +| Digit +| '.' | '-' | '_' | ':' +| CombiningChar +| Extender + +Name +(Letter | '_' | ':') +(NameChar)* +Names +Name +(S Name)* +Nmtoken +(NameChar)+ +Nmtokens +Nmtoken (S Nmtoken)* + +

+

Literal data is any quoted string not containing +the quotation mark used as a delimiter for that string. +Literals are used +for specifying the content of internal entities +(EntityValue), +the values of attributes (AttValue), +and external identifiers +(SystemLiteral). +Note that a SystemLiteral +can be parsed without scanning for markup. + +Literals +EntityValue +'"' +([^%&"] +| PEReference +| Reference)* +'"' + +|  +"'" +([^%&'] +| PEReference +| Reference)* +"'" + +AttValue +'"' +([^<&"] +| Reference)* +'"' + +|  +"'" +([^<&'] +| Reference)* +"'" + +SystemLiteral +('"' [^"]* '"') | ("'" [^']* "'") + + +PubidLiteral +'"' PubidChar* +'"' +| "'" (PubidChar - "'")* "'" + +PubidChar +#x20 | #xD | #xA +| [a-zA-Z0-9] +| [-'()+,./:=?;!*#@$_%] + + +

+ +
+ + +Character Data and Markup + +

Text consists of intermingled +character +data and markup. +Markup takes the form of +start-tags, +end-tags, +empty-element tags, +entity references, +character references, +comments, +CDATA section delimiters, +document type declarations, and +processing instructions. + +

+

All text that is not markup +constitutes the character data of +the document.

+

The ampersand character (&) and the left angle bracket (<) +may appear in their literal form only when used as markup +delimiters, or within a comment, a +processing instruction, +or a CDATA section. + +They are also legal within the literal entity +value of an internal entity declaration; see +. + +If they are needed elsewhere, +they must be escaped +using either numeric character references +or the strings +"&amp;" and "&lt;" respectively. +The right angle +bracket (>) may be represented using the string +"&gt;", and must, for +compatibility, +be escaped using +"&gt;" or a character reference +when it appears in the string +"]]>" +in content, +when that string is not marking the end of +a CDATA section. +

+

+In the content of elements, character data +is any string of characters which does +not contain the start-delimiter of any markup. +In a CDATA section, character data +is any string of characters not including the CDATA-section-close +delimiter, "]]>".

+

+To allow attribute values to contain both single and double quotes, the +apostrophe or single-quote character (') may be represented as +"&apos;", and the double-quote character (") as +"&quot;". + +Character Data + +CharData +[^<&]* - ([^<&]* ']]>' [^<&]*) + + +

+
+ + +Comments + +

Comments may +appear anywhere in a document outside other +markup; in addition, +they may appear within the document type declaration +at places allowed by the grammar. +They are not part of the document's character +data; an XML +processor may, but need not, make it possible for an application to +retrieve the text of comments. +For compatibility, the string +"--" (double-hyphen) must not occur within +comments. + +Comments +Comment +'<!--' +((Char - '-') +| ('-' (Char - '-')))* +'-->' + + +

+

An example of a comment: +<!&como; declarations for <head> & <body> &comc;> +

+
+ + +Processing Instructions + +

Processing +instructions (PIs) allow documents to contain instructions +for applications. + + +Processing Instructions +PI +'<?' PITarget +(S +(Char* - +(Char* &pic; Char*)))? +&pic; +PITarget +Name - +(('X' | 'x') ('M' | 'm') ('L' | 'l')) + + +PIs are not part of the document's character +data, but must be passed through to the application. The +PI begins with a target (PITarget) used +to identify the application to which the instruction is directed. +The target names "XML", "xml", and so on are +reserved for standardization in this or future versions of this +specification. +The +XML Notation mechanism +may be used for +formal declaration of PI targets. +

+
+ + +CDATA Sections + +

CDATA sections +may occur +anywhere character data may occur; they are +used to escape blocks of text containing characters which would +otherwise be recognized as markup. CDATA sections begin with the +string "<![CDATA[" and end with the string +"]]>": + +CDATA Sections +CDSect +CDStart +CData +CDEnd +CDStart +'<![CDATA[' + +CData +(Char* - +(Char* ']]>' Char*)) + + +CDEnd +']]>' + + + +Within a CDATA section, only the CDEnd string is +recognized as markup, so that left angle brackets and ampersands may occur in +their literal form; they need not (and cannot) be escaped using +"&lt;" and "&amp;". CDATA sections +cannot nest. +

+ +

An example of a CDATA section, in which "<greeting>" and +"</greeting>" +are recognized as character data, not +markup: +<![CDATA[<greeting>Hello, world!</greeting>]]> +

+
+ + +Prolog and Document Type Declaration + +

XML documents +may, and should, +begin with an XML declaration which specifies +the version of +XML being used. +For example, the following is a complete XML document, well-formed but not +valid: + +Hello, world! +]]> +and so is this: +Hello, world! +]]> +

+ +

The version number "1.0" should be used to indicate +conformance to this version of this specification; it is an error +for a document to use the value "1.0" +if it does not conform to this version of this specification. +It is the intent +of the XML working group to give later versions of this specification +numbers other than "1.0", but this intent does not +indicate a +commitment to produce any future versions of XML, nor if any are produced, to +use any particular numbering scheme. +Since future versions are not ruled out, this construct is provided +as a means to allow the possibility of automatic version recognition, should +it become necessary. +Processors may signal an error if they receive documents labeled with +versions they do not support. +

+

The function of the markup in an XML document is to describe its +storage and logical structure and to associate attribute-value pairs +with its logical structures. XML provides a mechanism, the document type declaration, to define +constraints on the logical structure and to support the use of +predefined storage units. + +An XML document is +valid if it has an associated document type +declaration and if the document +complies with the constraints expressed in it.

+

The document type declaration must appear before +the first element in the document. + +Prolog + +prolog +XMLDecl? +Misc* +(doctypedecl +Misc*)? +XMLDecl +&xmlpio; +VersionInfo +EncodingDecl? +SDDecl? +S? +&pic; + +VersionInfo +S 'version' Eq +(' VersionNum ' +| " VersionNum ") + +Eq +S? '=' S? + +VersionNum +([a-zA-Z0-9_.:] | '-')+ + +Misc +Comment | PI | +S + +

+ +

The XML +document type declaration +contains or points to +markup declarations +that provide a grammar for a +class of documents. +This grammar is known as a document type definition, +or DTD. +The document type declaration can point to an external subset (a +special kind of +external entity) containing markup +declarations, or can +contain the markup declarations directly in an internal subset, or can do +both. +The DTD for a document consists of both subsets taken +together. +

+

+A markup declaration is +an element type declaration, +an attribute-list declaration, +an entity declaration, or +a notation declaration. + +These declarations may be contained in whole or in part +within parameter entities, +as described in the well-formedness and validity constraints below. +For fuller information, see +.

+ +Document Type Definition + +doctypedecl +'<!DOCTYPE' S +Name (S +ExternalID)? +S? ('[' +(markupdecl +| PEReference +| S)* +']' +S?)? '>' + + +markupdecl +elementdecl +| AttlistDecl +| EntityDecl +| NotationDecl +| PI +| Comment + + + + + + + + +

The markup declarations may be made up in whole or in part of +the replacement text of +parameter entities. +The productions later in this specification for +individual nonterminals (elementdecl, +AttlistDecl, and so on) describe +the declarations after all the parameter entities have been +included.

+ + +Root Element Type +

+The Name in the document type declaration must +match the element type of the root element. +

+
+ + +Proper Declaration/PE Nesting +

Parameter-entity +replacement text must be properly nested +with markup declarations. +That is to say, if either the first character +or the last character of a markup +declaration (markupdecl above) +is contained in the replacement text for a +parameter-entity reference, +both must be contained in the same replacement text.

+
+ +PEs in Internal Subset +

In the internal DTD subset, +parameter-entity references +can occur only where markup declarations can occur, not +within markup declarations. (This does not apply to +references that occur in +external parameter entities or to the external subset.) +

+
+

+Like the internal subset, the external subset and +any external parameter entities referred to in the DTD +must consist of a series of complete markup declarations of the types +allowed by the non-terminal symbol +markupdecl, interspersed with white space +or parameter-entity references. +However, portions of the contents +of the +external subset or of external parameter entities may conditionally be ignored +by using +the conditional section +construct; this is not allowed in the internal subset. + + +External Subset + +extSubset +TextDecl? +extSubsetDecl +extSubsetDecl +( +markupdecl +| conditionalSect +| PEReference +| S +)* + + +

+

The external subset and external parameter entities also differ +from the internal subset in that in them, +parameter-entity references +are permitted within markup declarations, +not only between markup declarations.

+

An example of an XML document with a document type declaration: + + +Hello, world! +]]> +The system identifier +"hello.dtd" gives the URI of a DTD for the document.

+

The declarations can also be given locally, as in this +example: + + +]> +Hello, world! +]]> +If both the external and internal subsets are used, the +internal subset is considered to occur before the external subset. + +This has the effect that entity and attribute-list declarations in the +internal subset take precedence over those in the external subset. +

+
+ + +Standalone Document Declaration +

Markup declarations can affect the content of the document, +as passed from an XML processor +to an application; examples are attribute defaults and entity +declarations. +The standalone document declaration, +which may appear as a component of the XML declaration, signals +whether or not there are such declarations which appear external to +the document entity. + +Standalone Document Declaration + +SDDecl + +S +'standalone' Eq +(("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"')) + + + +

+

+In a standalone document declaration, the value "yes" indicates +that there +are no markup declarations external to the document +entity (either in the DTD external subset, or in an +external parameter entity referenced from the internal subset) +which affect the information passed from the XML processor to +the application. +The value "no" indicates that there are or may be such +external markup declarations. +Note that the standalone document declaration only +denotes the presence of external declarations; the presence, in a +document, of +references to external entities, when those entities are +internally declared, +does not change its standalone status.

+

If there are no external markup declarations, the standalone document +declaration has no meaning. +If there are external markup declarations but there is no standalone +document declaration, the value "no" is assumed.

+

Any XML document for which standalone="no" holds can +be converted algorithmically to a standalone document, +which may be desirable for some network delivery applications.

+ +Standalone Document Declaration +

The standalone document declaration must have +the value "no" if any external markup declarations +contain declarations of:

+

attributes with default values, if +elements to which +these attributes apply appear in the document without +specifications of values for these attributes, or

+

entities (other than &magicents;), +if references to those +entities appear in the document, or

+
+

attributes with values subject to +normalization, where the +attribute appears in the document with a value which will +change as a result of normalization, or

+
+ +

element types with element content, +if white space occurs +directly within any instance of those types. +

+
+ +
+

An example XML declaration with a standalone document declaration:<?xml version="&XML.version;" standalone='yes'?>

+
+ +White Space Handling + +

In editing XML documents, it is often convenient to use "white space" +(spaces, tabs, and blank lines, denoted by the nonterminal +S in this specification) to +set apart the markup for greater readability. Such white space is typically +not intended for inclusion in the delivered version of the document. +On the other hand, "significant" white space that should be preserved in the +delivered version is common, for example in poetry and +source code.

+

An XML processor +must always pass all characters in a document that are not +markup through to the application. A +validating XML processor must also inform the application +which of these characters constitute white space appearing +in element content. +

+

A special attribute +named xml:space may be attached to an element +to signal an intention that in that element, +white space should be preserved by applications. +In valid documents, this attribute, like any other, must be +declared if it is used. +When declared, it must be given as an +enumerated type whose only +possible values are "default" and "preserve". +For example:]]>

+

The value "default" signals that applications' +default white-space processing modes are acceptable for this element; the +value "preserve" indicates the intent that applications preserve +all the white space. +This declared intent is considered to apply to all elements within the content +of the element where it is specified, unless overriden with another instance +of the xml:space attribute. +

+

The root element of any document +is considered to have signaled no intentions as regards application space +handling, unless it provides a value for +this attribute or the attribute is declared with a default value. +

+ +
+ +End-of-Line Handling +

XML parsed entities are often stored in +computer files which, for editing convenience, are organized into lines. +These lines are typically separated by some combination of the characters +carriage-return (#xD) and line-feed (#xA).

+

To simplify the tasks of applications, +wherever an external parsed entity or the literal entity value +of an internal parsed entity contains either the literal +two-character sequence "#xD#xA" or a standalone literal +#xD, an XML processor must +pass to the application the single character #xA. +(This behavior can +conveniently be produced by normalizing all +line breaks to #xA on input, before parsing.) +

+
+ +Language Identification +

In document processing, it is often useful to +identify the natural or formal language +in which the content is +written. +A special attribute named +xml:lang may be inserted in +documents to specify the +language used in the contents and attribute values +of any element in an XML document. +In valid documents, this attribute, like any other, must be +declared if it is used. +The values of the attribute are language identifiers as defined +by , "Tags for the Identification of Languages": + +Language Identification +LanguageID +Langcode +('-' Subcode)* +Langcode +ISO639Code | +IanaCode | +UserCode + +ISO639Code +([a-z] | [A-Z]) ([a-z] | [A-Z]) +IanaCode +('i' | 'I') '-' ([a-z] | [A-Z])+ +UserCode +('x' | 'X') '-' ([a-z] | [A-Z])+ +Subcode +([a-z] | [A-Z])+ + +The Langcode may be any of the following: + +

a two-letter language code as defined by +, "Codes +for the representation of names of languages"

+

a language identifier registered with the Internet +Assigned Numbers Authority ; these begin with the +prefix "i-" (or "I-")

+

a language identifier assigned by the user, or agreed on +between parties in private use; these must begin with the +prefix "x-" or "X-" in order to ensure that they do not conflict +with names later standardized or registered with IANA

+

+

There may be any number of Subcode segments; if +the first +subcode segment exists and the Subcode consists of two +letters, then it must be a country code from +, "Codes +for the representation of names of countries." +If the first +subcode consists of more than two letters, it must be +a subcode for the language in question registered with IANA, +unless the Langcode begins with the prefix +"x-" or +"X-".

+

It is customary to give the language code in lower case, and +the country code (if any) in upper case. +Note that these values, unlike other names in XML documents, +are case insensitive.

+

For example: +The quick brown fox jumps over the lazy dog.

+

What colour is it?

+

What color is it?

+ + Habe nun, ach! Philosophie, + Juristerei, und Medizin + und leider auch Theologie + durchaus studiert mit heiem Bemh'n. + ]]>

+ +

The intent declared with xml:lang is considered to apply to +all attributes and content of the element where it is specified, +unless overridden with an instance of xml:lang +on another element within that content.

+ +

A simple declaration for xml:lang might take +the form +xml:lang NMTOKEN #IMPLIED +but specific default values may also be given, if appropriate. In a +collection of French poems for English students, with glosses and +notes in English, the xml:lang attribute might be declared this way: + + + ]]> +

+ +
+
+ + + +Logical Structures + +

Each XML document contains one or more +elements, the boundaries of which are +either delimited by start-tags +and end-tags, or, for empty elements, by an empty-element tag. Each element has a type, +identified by name, sometimes called its "generic +identifier" (GI), and may have a set of +attribute specifications. Each attribute specification +has a name and a value. +

+Element +element +EmptyElemTag +| STag content +ETag + + + + +

This specification does not constrain the semantics, use, or (beyond +syntax) names of the element types and attributes, except that names +beginning with a match to (('X'|'x')('M'|'m')('L'|'l')) +are reserved for standardization in this or future versions of this +specification. +

+ +Element Type Match +

+The Name in an element's end-tag must match +the element type in +the start-tag. +

+
+ +Element Valid +

An element is +valid if +there is a declaration matching +elementdecl where the +Name matches the element type, and +one of the following holds:

+ +

The declaration matches EMPTY and the element has no +content.

+

The declaration matches children and +the sequence of +child elements +belongs to the language generated by the regular expression in +the content model, with optional white space (characters +matching the nonterminal S) between each pair +of child elements.

+

The declaration matches Mixed and +the content consists of character +data and child elements +whose types match names in the content model.

+

The declaration matches ANY, and the types +of any child elements have +been declared.

+
+
+ + +Start-Tags, End-Tags, and Empty-Element Tags + +

The beginning of every +non-empty XML element is marked by a start-tag. + +Start-tag + +STag +'<' Name +(S Attribute)* +S? '>' + + +Attribute +Name Eq +AttValue + + + + + +The Name in +the start- and end-tags gives the +element's type. + +The Name-AttValue pairs are +referred to as +the attribute specifications of the element, +with the +Name in each pair +referred to as the attribute name and +the content of the +AttValue (the text between the +' or " delimiters) +as the attribute value. +

+ +Unique Att Spec +

+No attribute name may appear more than once in the same start-tag +or empty-element tag. +

+
+ +Attribute Value Type +

+The attribute must have been declared; the value must be of the type +declared for it. +(For attribute types, see .) +

+
+ +No External Entity References +

+Attribute values cannot contain direct or indirect entity references +to external entities. +

+
+ +No < in Attribute Values +

The replacement text of any entity +referred to directly or indirectly in an attribute +value (other than "&lt;") must not contain +a <. +

+

An example of a start-tag: +<termdef id="dt-dog" term="dog">

+

The end of every element +that begins with a start-tag must +be marked by an end-tag +containing a name that echoes the element's type as given in the +start-tag: + +End-tag + +ETag +'</' Name +S? '>' + + +

+

An example of an end-tag:</termdef>

+

The +text between the start-tag and +end-tag is called the element's +content: + +Content of Elements + +content +(element | CharData +| Reference | CDSect +| PI | Comment)* + + + +

+

If an element is empty, +it must be represented either by a start-tag immediately followed +by an end-tag or by an empty-element tag. +An +empty-element tag takes a special form: + +Tags for Empty Elements + +EmptyElemTag +'<' Name (S +Attribute)* S? +'/>' + + + + +

+

Empty-element tags may be used for any element which has no +content, whether or not it is declared using the keyword +EMPTY. +For interoperability, the empty-element +tag must be used, and can only be used, for elements which are +declared EMPTY.

+

Examples of empty elements: +<IMG align="left" + src="http://www.w3.org/Icons/WWW/w3c_home" /> +<br></br> +<br/>

+
+ + +Element Type Declarations + +

The element structure of an +XML document may, for +validation purposes, +be constrained +using element type and attribute-list declarations. +An element type declaration constrains the element's +content. +

+ +

Element type declarations often constrain which element types can +appear as children of the element. +At user option, an XML processor may issue a warning +when a declaration mentions an element type for which no declaration +is provided, but this is not an error.

+

An element +type declaration takes the form: + +Element Type Declaration + +elementdecl +'<!ELEMENT' S +Name +S +contentspec +S? '>' + +contentspec +'EMPTY' +| 'ANY' +| Mixed +| children + + + + +where the Name gives the element type +being declared. +

+ + +Unique Element Type Declaration +

+No element type may be declared more than once. +

+
+ +

Examples of element type declarations: +<!ELEMENT br EMPTY> +<!ELEMENT p (#PCDATA|emph)* > +<!ELEMENT %name.para; %content.para; > +<!ELEMENT container ANY>

+ + +Element Content + +

An element type has +element content when elements of that +type must contain only child +elements (no character data), optionally separated by +white space (characters matching the nonterminal +S). + +In this case, the +constraint includes a content model, a simple grammar governing +the allowed types of the child +elements and the order in which they are allowed to appear. +The grammar is built on +content particles (cps), which consist of names, +choice lists of content particles, or +sequence lists of content particles: + +Element-content Models + +children +(choice +| seq) +('?' | '*' | '+')? +cp +(Name +| choice +| seq) +('?' | '*' | '+')? +choice +'(' S? cp +( S? '|' S? cp )* +S? ')' + +seq +'(' S? cp +( S? ',' S? cp )* +S? ')' + + + + +where each Name is the type of an element which may +appear as a child. +Any content +particle in a choice list may appear in the element content at the location where +the choice list appears in the grammar; +content particles occurring in a sequence list must each +appear in the element content in the +order given in the list. +The optional character following a name or list governs +whether the element or the content particles in the list may occur one +or more (+), zero or more (*), or zero or +one times (?). +The absence of such an operator means that the element or content particle +must appear exactly once. +This syntax +and meaning are identical to those used in the productions in this +specification.

+

+The content of an element matches a content model if and only if it is +possible to trace out a path through the content model, obeying the +sequence, choice, and repetition operators and matching each element in +the content against an element type in the content model. For compatibility, it is an error +if an element in the document can +match more than one occurrence of an element type in the content model. +For more information, see . + + +

+ +Proper Group/PE Nesting +

Parameter-entity +replacement text must be properly nested +with parenthetized groups. +That is to say, if either of the opening or closing parentheses +in a choice, seq, or +Mixed construct +is contained in the replacement text for a +parameter entity, +both must be contained in the same replacement text.

+

For interoperability, +if a parameter-entity reference appears in a +choice, seq, or +Mixed construct, its replacement text +should not be empty, and +neither the first nor last non-blank +character of the replacement text should be a connector +(| or ,). +

+
+

Examples of element-content models: +<!ELEMENT spec (front, body, back?)> +<!ELEMENT div1 (head, (p | list | note)*, div2*)> +<!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*>

+
+ + +Mixed Content + +

An element +type has +mixed content when elements of that type may contain +character data, optionally interspersed with +child elements. +In this case, the types of the child elements +may be constrained, but not their order or their number of occurrences: + +Mixed-content Declaration + +Mixed +'(' S? +'#PCDATA' +(S? +'|' +S? +Name)* +S? +')*' +| '(' S? '#PCDATA' S? ')' + + + + + + +where the Names give the types of elements +that may appear as children. +

+ +No Duplicate Types +

The same name must not appear more than once in a single mixed-content +declaration. +

+

Examples of mixed content declarations: +<!ELEMENT p (#PCDATA|a|ul|b|i|em)*> +<!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* > +<!ELEMENT b (#PCDATA)>

+
+
+ + +Attribute-List Declarations + +

Attributes are used to associate +name-value pairs with elements. +Attribute specifications may appear only within start-tags +and empty-element tags; +thus, the productions used to +recognize them appear in . +Attribute-list +declarations may be used: + +

To define the set of attributes pertaining to a given +element type.

+

To establish type constraints for these +attributes.

+

To provide default values +for attributes.

+ +

+

+Attribute-list declarations specify the name, data type, and default +value (if any) of each attribute associated with a given element type: + +Attribute-list Declaration +AttlistDecl +'<!ATTLIST' S +Name +AttDef* +S? '>' + +AttDef +S Name +S AttType +S DefaultDecl + + +The Name in the +AttlistDecl rule is the type of an element. At +user option, an XML processor may issue a warning if attributes are +declared for an element type not itself declared, but this is not an +error. The Name in the +AttDef rule is +the name of the attribute.

+

+When more than one AttlistDecl is provided for a +given element type, the contents of all those provided are merged. When +more than one definition is provided for the same attribute of a +given element type, the first declaration is binding and later +declarations are ignored. +For interoperability, writers of DTDs +may choose to provide at most one attribute-list declaration +for a given element type, at most one attribute definition +for a given attribute name, and at least one attribute definition +in each attribute-list declaration. +For interoperability, an XML processor may at user option +issue a warning when more than one attribute-list declaration is +provided for a given element type, or more than one attribute definition +is provided +for a given attribute, but this is not an error. +

+ + +Attribute Types + +

XML attribute types are of three kinds: a string type, a +set of tokenized types, and enumerated types. The string type may take +any literal string as a value; the tokenized types have varying lexical +and semantic constraints, as noted: + +Attribute Types + +AttType +StringType +| TokenizedType +| EnumeratedType + + +StringType +'CDATA' + +TokenizedType +'ID' + + + +| 'IDREF' + +| 'IDREFS' + +| 'ENTITY' + +| 'ENTITIES' + +| 'NMTOKEN' + +| 'NMTOKENS' + + + +

+ +ID +

+Values of type ID must match the +Name production. +A name must not appear more than once in +an XML document as a value of this type; i.e., ID values must uniquely +identify the elements which bear them. +

+
+ +One ID per Element Type +

No element type may have more than one ID attribute specified.

+
+ +ID Attribute Default +

An ID attribute must have a declared default of #IMPLIED or +#REQUIRED.

+
+ +IDREF +

+Values of type IDREF must match +the Name production, and +values of type IDREFS must match +Names; +each Name must match the value of an ID attribute on +some element in the XML document; i.e. IDREF values must +match the value of some ID attribute. +

+
+ +Entity Name +

+Values of type ENTITY +must match the Name production, +values of type ENTITIES must match +Names; +each Name must +match the +name of an unparsed entity declared in the +DTD. +

+
+ +Name Token +

+Values of type NMTOKEN must match the +Nmtoken production; +values of type NMTOKENS must +match Nmtokens. +

+
+ +

Enumerated attributes can take one +of a list of values provided in the declaration. There are two +kinds of enumerated types: + +Enumerated Attribute Types +EnumeratedType +NotationType +| Enumeration + +NotationType +'NOTATION' +S +'(' +S? +Name +(S? '|' S? +Name)* +S? ')' + + +Enumeration +'(' S? +Nmtoken +(S? '|' +S? +Nmtoken)* +S? +')' + + +A NOTATION attribute identifies a +notation, declared in the +DTD with associated system and/or public identifiers, to +be used in interpreting the element to which the attribute +is attached. +

+ + +Notation Attributes +

+Values of this type must match +one of the notation names included in +the declaration; all notation names in the declaration must +be declared. +

+
+ +Enumeration +

+Values of this type +must match one of the Nmtoken tokens in the +declaration. +

+
+

For interoperability, the same +Nmtoken should not occur more than once in the +enumerated attribute types of a single element type. +

+
+ + +Attribute Defaults + +

An attribute declaration provides +information on whether +the attribute's presence is required, and if not, how an XML processor should +react if a declared attribute is absent in a document. + +Attribute Defaults + +DefaultDecl +'#REQUIRED' +| '#IMPLIED' +| (('#FIXED' S)? AttValue) + + + + + + + + +

+

In an attribute declaration, #REQUIRED means that the +attribute must always be provided, #IMPLIED that no default +value is provided. + +If the +declaration +is neither #REQUIRED nor #IMPLIED, then the +AttValue value contains the declared +default value; the #FIXED keyword states that +the attribute must always have the default value. +If a default value +is declared, when an XML processor encounters an omitted attribute, it +is to behave as though the attribute were present with +the declared default value.

+ +Required Attribute +

If the default declaration is the keyword #REQUIRED, then +the attribute must be specified for +all elements of the type in the attribute-list declaration. +

+ +Attribute Default Legal +

+The declared +default value must meet the lexical constraints of the declared attribute type. +

+
+ +Fixed Attribute Default +

If an attribute has a default value declared with the +#FIXED keyword, instances of that attribute must +match the default value. +

+ +

Examples of attribute-list declarations: +<!ATTLIST termdef + id ID #REQUIRED + name CDATA #IMPLIED> +<!ATTLIST list + type (bullets|ordered|glossary) "ordered"> +<!ATTLIST form + method CDATA #FIXED "POST">

+
+ +Attribute-Value Normalization +

Before the value of an attribute is passed to the application +or checked for validity, the +XML processor must normalize it as follows: + +

a character reference is processed by appending the referenced +character to the attribute value

+

an entity reference is processed by recursively processing the +replacement text of the entity

+

a whitespace character (#x20, #xD, #xA, #x9) is processed by +appending #x20 to the normalized value, except that only a single #x20 +is appended for a "#xD#xA" sequence that is part of an external +parsed entity or the literal entity value of an internal parsed +entity

+

other characters are processed by appending them to the normalized +value

+
+

+

If the declared value is not CDATA, then the XML processor must +further process the normalized attribute value by discarding any +leading and trailing space (#x20) characters, and by replacing +sequences of space (#x20) characters by a single space (#x20) +character.

+

+All attributes for which no declaration has been read should be treated +by a non-validating parser as if declared +CDATA. +

+
+
+ +Conditional Sections +

+Conditional sections are portions of the +document type declaration external subset +which are +included in, or excluded from, the logical structure of the DTD based on +the keyword which governs them. + +Conditional Section + +conditionalSect +includeSect +| ignoreSect + + +includeSect +'<![' S? 'INCLUDE' S? '[' + +extSubsetDecl +']]>' + + +ignoreSect +'<![' S? 'IGNORE' S? '[' +ignoreSectContents* +']]>' + + +ignoreSectContents +Ignore +('<![' ignoreSectContents ']]>' +Ignore)* +Ignore +Char* - +(Char* ('<![' | ']]>') +Char*) + + + + +

+

Like the internal and external DTD subsets, a conditional section +may contain one or more complete declarations, +comments, processing instructions, +or nested conditional sections, intermingled with white space. +

+

If the keyword of the +conditional section is INCLUDE, then the contents of the conditional +section are part of the DTD. +If the keyword of the conditional +section is IGNORE, then the contents of the conditional section are +not logically part of the DTD. +Note that for reliable parsing, the contents of even ignored +conditional sections must be read in order to +detect nested conditional sections and ensure that the end of the +outermost (ignored) conditional section is properly detected. +If a conditional section with a +keyword of INCLUDE occurs within a larger conditional +section with a keyword of IGNORE, both the outer and the +inner conditional sections are ignored.

+

If the keyword of the conditional section is a +parameter-entity reference, the parameter entity must be replaced by its +content before the processor decides whether to +include or ignore the conditional section.

+

An example: +<!ENTITY % draft 'INCLUDE' > +<!ENTITY % final 'IGNORE' > + +<![%draft;[ +<!ELEMENT book (comments*, title, body, supplements?)> +]]> +<![%final;[ +<!ELEMENT book (title, body, supplements?)> +]]> + +

+
+ + + + +
+ + + +Physical Structures + +

An XML document may consist +of one or many storage units. These are called +entities; they all have content and are all +(except for the document entity, see below, and +the external DTD subset) +identified by name. + +Each XML document has one entity +called the document entity, which serves +as the starting point for the XML +processor and may contain the whole document.

+

Entities may be either parsed or unparsed. +A parsed entity's +contents are referred to as its +replacement text; +this text is considered an +integral part of the document.

+ +

An +unparsed entity +is a resource whose contents may or may not be +text, and if text, may not be XML. +Each unparsed entity +has an associated notation, identified by name. +Beyond a requirement +that an XML processor make the identifiers for the entity and +notation available to the application, +XML places no constraints on the contents of unparsed entities. +

+

+Parsed entities are invoked by name using entity references; +unparsed entities by name, given in the value of ENTITY +or ENTITIES +attributes.

+

General entities +are entities for use within the document content. +In this specification, general entities are sometimes referred +to with the unqualified term entity when this leads +to no ambiguity. +Parameter entities +are parsed entities for use within the DTD. +These two types of entities use different forms of reference and +are recognized in different contexts. +Furthermore, they occupy different namespaces; a parameter entity and +a general entity with the same name are two distinct entities. +

+ + +Character and Entity References +

+A character reference refers to a specific character in the +ISO/IEC 10646 character set, for example one not directly accessible from +available input devices. + +Character Reference +CharRef +'&#' [0-9]+ ';' +| '&hcro;' [0-9a-fA-F]+ ';' + + + + +Legal Character +

Characters referred to using character references must +match the production for +Char.

+ +If the character reference begins with "&#x", the digits and +letters up to the terminating ; provide a hexadecimal +representation of the character's code point in ISO/IEC 10646. +If it begins just with "&#", the digits up to the terminating +; provide a decimal representation of the character's +code point. + +

+

An entity +reference refers to the content of a named entity. +References to +parsed general entities +use ampersand (&) and semicolon (;) as +delimiters. + +Parameter-entity references use percent-sign (%) and +semicolon +(;) as delimiters. +

+ +Entity Reference +Reference +EntityRef +| CharRef +EntityRef +'&' Name ';' + + + + + +PEReference +'%' Name ';' + + + + + + + +Entity Declared +

In a document without any DTD, a document with only an internal +DTD subset which contains no parameter entity references, or a document with +"standalone='yes'", +the Name given in the entity reference must +match that in an +entity declaration, except that +well-formed documents need not declare +any of the following entities: &magicents;. +The declaration of a parameter entity must precede any reference to it. +Similarly, the declaration of a general entity must precede any +reference to it which appears in a default value in an attribute-list +declaration.

+

Note that if entities are declared in the external subset or in +external parameter entities, a non-validating processor is +not obligated to read +and process their declarations; for such documents, the rule that +an entity must be declared is a well-formedness constraint only +if standalone='yes'.

+
+ +Entity Declared +

In a document with an external subset or external parameter +entities with "standalone='no'", +the Name given in the entity reference must match that in an +entity declaration. +For interoperability, valid documents should declare the entities +&magicents;, in the form +specified in . +The declaration of a parameter entity must precede any reference to it. +Similarly, the declaration of a general entity must precede any +reference to it which appears in a default value in an attribute-list +declaration.

+
+ + +Parsed Entity +

+An entity reference must not contain the name of an unparsed entity. Unparsed entities may be referred +to only in attribute values declared to +be of type ENTITY or ENTITIES. +

+
+ +No Recursion +

+A parsed entity must not contain a recursive reference to itself, +either directly or indirectly. +

+
+ +In DTD +

+Parameter-entity references may only appear in the +DTD. +

+
+

Examples of character and entity references: +Type <key>less-than</key> (&hcro;3C;) to save options. +This document was prepared on &docdate; and +is classified &security-level;.

+

Example of a parameter-entity reference: + + + +%ISOLat2;]]>

+
+ + +Entity Declarations + +

+Entities are declared thus: + +Entity Declaration + +EntityDecl +GEDecl | PEDecl + + +GEDecl +'<!ENTITY' S Name +S EntityDef +S? '>' + +PEDecl +'<!ENTITY' S '%' S +Name S +PEDef S? '>' + + +EntityDef +EntityValue +| (ExternalID +NDataDecl?) + + + +PEDef +EntityValue +| ExternalID + + +The Name identifies the entity in an +entity reference or, in the case of an +unparsed entity, in the value of an ENTITY or ENTITIES +attribute. +If the same entity is declared more than once, the first declaration +encountered is binding; at user option, an XML processor may issue a +warning if entities are declared multiple times. +

+ + +Internal Entities + +

If +the entity definition is an +EntityValue, +the defined entity is called an internal entity. +There is no separate physical +storage object, and the content of the entity is given in the +declaration. +Note that some processing of entity and character references in the +literal entity value may be required to +produce the correct replacement +text: see . +

+

An internal entity is a parsed +entity.

+

Example of an internal entity declaration: +<!ENTITY Pub-Status "This is a pre-release of the + specification.">

+
+ + +External Entities + +

If the entity is not +internal, it is an external +entity, declared as follows: + +External Entity Declaration + +ExternalID +'SYSTEM' S +SystemLiteral +| 'PUBLIC' S +PubidLiteral +S +SystemLiteral + + +NDataDecl +S 'NDATA' S +Name + + +If the NDataDecl is present, this is a +general unparsed +entity; otherwise it is a parsed entity.

+ +Notation Declared +

+The Name must match the declared name of a +notation. +

+
+

The +SystemLiteral +is called the entity's system identifier. It is a URI, +which may be used to retrieve the entity. +Note that the hash mark (#) and fragment identifier +frequently used with URIs are not, formally, part of the URI itself; +an XML processor may signal an error if a fragment identifier is +given as part of a system identifier. +Unless otherwise provided by information outside the scope of this +specification (e.g. a special XML element type defined by a particular +DTD, or a processing instruction defined by a particular application +specification), relative URIs are relative to the location of the +resource within which the entity declaration occurs. +A URI might thus be relative to the +document entity, to the entity +containing the external DTD subset, +or to some other external parameter entity. +

+

An XML processor should handle a non-ASCII character in a URI by +representing the character in UTF-8 as one or more bytes, and then +escaping these bytes with the URI escaping mechanism (i.e., by +converting each byte to %HH, where HH is the hexadecimal notation of the +byte value).

+

+In addition to a system identifier, an external identifier may +include a public identifier. +An XML processor attempting to retrieve the entity's content may use the public +identifier to try to generate an alternative URI. If the processor +is unable to do so, it must use the URI specified in the system +literal. Before a match is attempted, all strings +of white space in the public identifier must be normalized to single space characters (#x20), +and leading and trailing white space must be removed.

+

Examples of external entity declarations: +<!ENTITY open-hatch + SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml"> +<!ENTITY open-hatch + PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN" + "http://www.textuality.com/boilerplate/OpenHatch.xml"> +<!ENTITY hatch-pic + SYSTEM "../grafix/OpenHatch.gif" + NDATA gif >

+
+ +
+ + +Parsed Entities + +The Text Declaration +

External parsed entities may each begin with a text +declaration. + +Text Declaration + +TextDecl +&xmlpio; +VersionInfo? +EncodingDecl +S? &pic; + + + +

+

The text declaration must be provided literally, not +by reference to a parsed entity. +No text declaration may appear at any position other than the beginning of +an external parsed entity.

+
+ +Well-Formed Parsed Entities +

The document entity is well-formed if it matches the production labeled +document. +An external general +parsed entity is well-formed if it matches the production labeled +extParsedEnt. +An external parameter +entity is well-formed if it matches the production labeled +extPE. + +Well-Formed External Parsed Entity +extParsedEnt +TextDecl? +content + +extPE +TextDecl? +extSubsetDecl + + +An internal general parsed entity is well-formed if its replacement text +matches the production labeled +content. +All internal parameter entities are well-formed by definition. +

+

A consequence of well-formedness in entities is that the logical +and physical structures in an XML document are properly nested; no +start-tag, +end-tag, +empty-element tag, +element, +comment, +processing instruction, +character +reference, or +entity reference +can begin in one entity and end in another.

+
+ +Character Encoding in Entities + +

Each external parsed entity in an XML document may use a different +encoding for its characters. All XML processors must be able to read +entities in either UTF-8 or UTF-16. + +

+

Entities encoded in UTF-16 must +begin with the Byte Order Mark described by ISO/IEC 10646 Annex E and +Unicode Appendix B (the ZERO WIDTH NO-BREAK SPACE character, #xFEFF). +This is an encoding signature, not part of either the markup or the +character data of the XML document. +XML processors must be able to use this character to +differentiate between UTF-8 and UTF-16 encoded documents.

+

Although an XML processor is required to read only entities in +the UTF-8 and UTF-16 encodings, it is recognized that other encodings are +used around the world, and it may be desired for XML processors +to read entities that use them. +Parsed entities which are stored in an encoding other than +UTF-8 or UTF-16 must begin with a text +declaration containing an encoding declaration: + +Encoding Declaration +EncodingDecl +S +'encoding' Eq +('"' EncName '"' | +"'" EncName "'" ) + + +EncName +[A-Za-z] ([A-Za-z0-9._] | '-')* +Encoding name contains only Latin characters + + +In the document entity, the encoding +declaration is part of the XML declaration. +The EncName is the name of the encoding used. +

+ +

In an encoding declaration, the values +"UTF-8", +"UTF-16", +"ISO-10646-UCS-2", and +"ISO-10646-UCS-4" should be +used for the various encodings and transformations of Unicode / +ISO/IEC 10646, the values +"ISO-8859-1", +"ISO-8859-2", ... +"ISO-8859-9" should be used for the parts of ISO 8859, and +the values +"ISO-2022-JP", +"Shift_JIS", and +"EUC-JP" +should be used for the various encoded forms of JIS X-0208-1997. XML +processors may recognize other encodings; it is recommended that +character encodings registered (as charsets) +with the Internet Assigned Numbers +Authority , other than those just listed, should be +referred to +using their registered names. +Note that these registered names are defined to be +case-insensitive, so processors wishing to match against them +should do so in a case-insensitive +way.

+

In the absence of information provided by an external +transport protocol (e.g. HTTP or MIME), +it is an error for an entity including +an encoding declaration to be presented to the XML processor +in an encoding other than that named in the declaration, +for an encoding declaration to occur other than at the beginning +of an external entity, or for +an entity which begins with neither a Byte Order Mark nor an encoding +declaration to use an encoding other than UTF-8. +Note that since ASCII +is a subset of UTF-8, ordinary ASCII entities do not strictly need +an encoding declaration.

+ +

It is a fatal error when an XML processor +encounters an entity with an encoding that it is unable to process.

+

Examples of encoding declarations: +<?xml encoding='UTF-8'?> +<?xml encoding='EUC-JP'?>

+
+
+ +XML Processor Treatment of Entities and References +

The table below summarizes the contexts in which character references, +entity references, and invocations of unparsed entities might appear and the +required behavior of an XML processor in +each case. +The labels in the leftmost column describe the recognition context: + + +

as a reference +anywhere after the start-tag and +before the end-tag of an element; corresponds +to the nonterminal content.

+ + + +

as a reference within either the value of an attribute in a +start-tag, or a default +value in an attribute declaration; +corresponds to the nonterminal +AttValue.

+ + +

as a Name, not a reference, appearing either as +the value of an +attribute which has been declared as type ENTITY, or as one of +the space-separated tokens in the value of an attribute which has been +declared as type ENTITIES.

+
+ +

as a reference +within a parameter or internal entity's +literal entity value in +the entity's declaration; corresponds to the nonterminal +EntityValue.

+ +

as a reference within either the internal or external subsets of the +DTD, but outside +of an EntityValue or +AttValue.

+
+

+ + + +Entity Type +Character + + +Parameter +Internal +General +External Parsed +General +Unparsed + + + +Reference +in Content +Not recognized +Included +Included if validating +Forbidden +Included + + +Reference +in Attribute Value +Not recognized +Included in literal +Forbidden +Forbidden +Included + + +Occurs as +Attribute Value +Not recognized +Forbidden +Forbidden +Notify +Not recognized + + +Reference +in EntityValue +Included in literal +Bypassed +Bypassed +Forbidden +Included + + +Reference +in DTD +Included as PE +Forbidden +Forbidden +Forbidden +Forbidden + + + + +Not Recognized +

Outside the DTD, the % character has no +special significance; thus, what would be parameter entity references in the +DTD are not recognized as markup in content. +Similarly, the names of unparsed entities are not recognized except +when they appear in the value of an appropriately declared attribute. +

+
+ +Included +

An entity is +included when its +replacement text is retrieved +and processed, in place of the reference itself, +as though it were part of the document at the location the +reference was recognized. +The replacement text may contain both +character data +and (except for parameter entities) markup, +which must be recognized in +the usual way, except that the replacement text of entities used to escape +markup delimiters (the entities &magicents;) is always treated as +data. (The string "AT&amp;T;" expands to +"AT&T;" and the remaining ampersand is not recognized +as an entity-reference delimiter.) +A character reference is included when the indicated +character is processed in place of the reference itself. +

+
+ +Included If Validating +

When an XML processor recognizes a reference to a parsed entity, in order +to validate +the document, the processor must +include its +replacement text. +If the entity is external, and the processor is not +attempting to validate the XML document, the +processor may, but need not, +include the entity's replacement text. +If a non-validating parser does not include the replacement text, +it must inform the application that it recognized, but did not +read, the entity.

+

This rule is based on the recognition that the automatic inclusion +provided by the SGML and XML entity mechanism, primarily designed +to support modularity in authoring, is not necessarily +appropriate for other applications, in particular document browsing. +Browsers, for example, when encountering an external parsed entity reference, +might choose to provide a visual indication of the entity's +presence and retrieve it for display only on demand. +

+
+ +Forbidden +

The following are forbidden, and constitute +fatal errors: + +

the appearance of a reference to an +unparsed entity. +

+

the appearance of any character or general-entity reference in the +DTD except within an EntityValue or +AttValue.

+

a reference to an external entity in an attribute value.

+
+ +

+
+ +Included in Literal +

When an entity reference appears in an +attribute value, or a parameter entity reference appears in a literal entity +value, its replacement text is +processed in place of the reference itself as though it +were part of the document at the location the reference was recognized, +except that a single or double quote character in the replacement text +is always treated as a normal data character and will not terminate the +literal. +For example, this is well-formed: + +]]> +while this is not: +<!ENTITY EndAttr "27'" > +<element attribute='a-&EndAttr;> +

+ +Notify +

When the name of an unparsed +entity appears as a token in the +value of an attribute of declared type ENTITY or ENTITIES, +a validating processor must inform the +application of the system +and public (if any) +identifiers for both the entity and its associated +notation.

+
+ +Bypassed +

When a general entity reference appears in the +EntityValue in an entity declaration, +it is bypassed and left as is.

+
+ +Included as PE +

Just as with external parsed entities, parameter entities +need only be included if +validating. +When a parameter-entity reference is recognized in the DTD +and included, its +replacement +text is enlarged by the attachment of one leading and one following +space (#x20) character; the intent is to constrain the replacement +text of parameter +entities to contain an integral number of grammatical tokens in the DTD. +

+
+ +
+ +Construction of Internal Entity Replacement Text +

In discussing the treatment +of internal entities, it is +useful to distinguish two forms of the entity's value. +The literal +entity value is the quoted string actually +present in the entity declaration, corresponding to the +non-terminal EntityValue. +The replacement +text is the content of the entity, after +replacement of character references and parameter-entity +references. +

+ +

The literal entity value +as given in an internal entity declaration +(EntityValue) may contain character, +parameter-entity, and general-entity references. +Such references must be contained entirely within the +literal entity value. +The actual replacement text that is +included as described above +must contain the replacement text of any +parameter entities referred to, and must contain the character +referred to, in place of any character references in the +literal entity value; however, +general-entity references must be left as-is, unexpanded. +For example, given the following declarations: + + + +]]> +then the replacement text for the entity "book" is: +La Peste: Albert Camus, +© 1947 Éditions Gallimard. &rights; +The general-entity reference "&rights;" would be expanded +should the reference "&book;" appear in the document's +content or an attribute value.

+

These simple rules may have complex interactions; for a detailed +discussion of a difficult example, see +. +

+ +
+ +Predefined Entities +

Entity and character +references can both be used to escape the left angle bracket, +ampersand, and other delimiters. A set of general entities +(&magicents;) is specified for this purpose. +Numeric character references may also be used; they are +expanded immediately when recognized and must be treated as +character data, so the numeric character references +"&#60;" and "&#38;" may be used to +escape < and & when they occur +in character data.

+

All XML processors must recognize these entities whether they +are declared or not. +For interoperability, +valid XML documents should declare these +entities, like any others, before using them. +If the entities in question are declared, they must be declared +as internal entities whose replacement text is the single +character being escaped or a character reference to +that character, as shown below. + + + + + +]]> +Note that the < and & characters +in the declarations of "lt" and "amp" +are doubly escaped to meet the requirement that entity replacement +be well-formed. +

+
+ + +Notation Declarations + +

Notations identify by +name the format of unparsed +entities, the +format of elements which bear a notation attribute, +or the application to which +a processing instruction is +addressed.

+

+Notation declarations +provide a name for the notation, for use in +entity and attribute-list declarations and in attribute specifications, +and an external identifier for the notation which may allow an XML +processor or its client application to locate a helper application +capable of processing data in the given notation. + +Notation Declarations +NotationDecl +'<!NOTATION' S Name +S +(ExternalID | +PublicID) +S? '>' +PublicID +'PUBLIC' S +PubidLiteral + + +

+

XML processors must provide applications with the name and external +identifier(s) of any notation declared and referred to in an attribute +value, attribute definition, or entity declaration. They may +additionally resolve the external identifier into the +system identifier, +file name, or other information needed to allow the +application to call a processor for data in the notation described. (It +is not an error, however, for XML documents to declare and refer to +notations for which notation-specific applications are not available on +the system where the XML processor or application is running.)

+
+ + + +Document Entity + +

The document +entity serves as the root of the entity +tree and a starting-point for an XML +processor. +This specification does +not specify how the document entity is to be located by an XML +processor; unlike other entities, the document entity has no name and might +well appear on a processor input stream +without any identification at all.

+
+ + +
+ + + +Conformance + + +Validating and Non-Validating Processors +

Conforming XML processors fall into two +classes: validating and non-validating.

+

Validating and non-validating processors alike must report +violations of this specification's well-formedness constraints +in the content of the +document entity and any +other parsed entities that +they read.

+

+Validating processors must report +violations of the constraints expressed by the declarations in the +DTD, and +failures to fulfill the validity constraints given +in this specification. + +To accomplish this, validating XML processors must read and process the entire +DTD and all external parsed entities referenced in the document. +

+

Non-validating processors are required to check only the +document entity, including +the entire internal DTD subset, for well-formedness. + +While they are not required to check the document for validity, +they are required to +process all the declarations they read in the +internal DTD subset and in any parameter entity that they +read, up to the first reference +to a parameter entity that they do not read; that is to +say, they must +use the information in those declarations to +normalize attribute values, +include the replacement text of +internal entities, and supply +default attribute values. + +They must not process +entity declarations or +attribute-list declarations +encountered after a reference to a parameter entity that is not +read, since the entity may have contained overriding declarations. +

+
+ +Using XML Processors +

The behavior of a validating XML processor is highly predictable; it +must read every piece of a document and report all well-formedness and +validity violations. +Less is required of a non-validating processor; it need not read any +part of the document other than the document entity. +This has two effects that may be important to users of XML processors: + +

Certain well-formedness errors, specifically those that require +reading external entities, may not be detected by a non-validating processor. +Examples include the constraints entitled +Entity Declared, +Parsed Entity, and +No Recursion, as well +as some of the cases described as +forbidden in +.

+

The information passed from the processor to the application may +vary, depending on whether the processor reads +parameter and external entities. +For example, a non-validating processor may not +normalize attribute values, +include the replacement text of +internal entities, or supply +default attribute values, +where doing so depends on having read declarations in +external or parameter entities.

+ +

+

For maximum reliability in interoperating between different XML +processors, applications which use non-validating processors should not +rely on any behaviors not required of such processors. +Applications which require facilities such as the use of default +attributes or internal entities which are declared in external +entities should use validating XML processors.

+
+
+ + +Notation + +

The formal grammar of XML is given in this specification using a simple +Extended Backus-Naur Form (EBNF) notation. Each rule in the grammar defines +one symbol, in the form +symbol ::= expression

+

Symbols are written with an initial capital letter if they are +defined by a regular expression, or with an initial lower case letter +otherwise. +Literal strings are quoted. + +

+ +

Within the expression on the right-hand side of a rule, the following +expressions are used to match strings of one or more characters: + + + +

where N is a hexadecimal integer, the +expression matches the character in ISO/IEC 10646 whose canonical +(UCS-4) +code value, when interpreted as an unsigned binary number, has +the value indicated. The number of leading zeros in the +#xN form is insignificant; the number of leading +zeros in the corresponding code value +is governed by the character +encoding in use and is not significant for XML.

+ + + +

matches any character +with a value in the range(s) indicated (inclusive).

+
+ + +

matches any character +with a value outside the +range indicated.

+
+ + +

matches any character +with a value not among the characters given.

+
+ + +

matches a literal string matching +that given inside the double quotes.

+
+ + +

matches a literal string matching +that given inside the single quotes.

+
+ +These symbols may be combined to match more complex patterns as follows, +where A and B represent simple expressions: + + + +

expression is treated as a unit +and may be combined as described in this list.

+
+ + +

matches A or nothing; optional A.

+
+ + +

matches A followed by B.

+
+ + +

matches A or B but not both.

+
+ + +

matches any string that matches A but does not match +B. +

+
+ + +

matches one or more occurrences of A.

+
+ + +

matches zero or more occurrences of A.

+
+ +
+Other notations used in the productions are: + + + +

comment.

+
+ + +

well-formedness constraint; this identifies by name a +constraint on +well-formed documents +associated with a production.

+
+ + +

validity constraint; this identifies by name a constraint on +valid documents associated with +a production.

+
+
+

+ + + + + + + + + +References + +Normative References + + + +(Internet Assigned Numbers Authority) Official Names for +Character Sets, +ed. Keld Simonsen et al. +See ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets. + + + +IETF (Internet Engineering Task Force). +RFC 1766: Tags for the Identification of Languages, +ed. H. Alvestrand. +1995. + + + +(International Organization for Standardization). +ISO 639:1988 (E). +Code for the representation of names of languages. +[Geneva]: International Organization for +Standardization, 1988. + + +(International Organization for Standardization). +ISO 3166-1:1997 (E). +Codes for the representation of names of countries and their subdivisions +— Part 1: Country codes +[Geneva]: International Organization for +Standardization, 1997. + +ISO +(International Organization for Standardization). +ISO/IEC 10646-1993 (E). Information technology — Universal +Multiple-Octet Coded Character Set (UCS) — Part 1: +Architecture and Basic Multilingual Plane. +[Geneva]: International Organization for +Standardization, 1993 (plus amendments AM 1 through AM 7). + + +The Unicode Consortium. +The Unicode Standard, Version 2.0. +Reading, Mass.: Addison-Wesley Developers Press, 1996. + + + + + +Other References + + + +Aho, Alfred V., +Ravi Sethi, and Jeffrey D. Ullman. +Compilers: Principles, Techniques, and Tools. +Reading: Addison-Wesley, 1986, rpt. corr. 1988. + + +Berners-Lee, T., R. Fielding, and L. Masinter. +Uniform Resource Identifiers (URI): Generic Syntax and +Semantics. +1997. +(Work in progress; see updates to RFC1738.) + +Brggemann-Klein, Anne. +Regular Expressions into Finite Automata. +Extended abstract in I. Simon, Hrsg., LATIN 1992, +S. 97-98. Springer-Verlag, Berlin 1992. +Full Version in Theoretical Computer Science 120: 197-213, 1993. + + + +Brggemann-Klein, Anne, +and Derick Wood. +Deterministic Regular Languages. +Universitt Freiburg, Institut fr Informatik, +Bericht 38, Oktober 1991. + + +James Clark. +Comparison of SGML and XML. See +http://www.w3.org/TR/NOTE-sgml-xml-971215. + + +IETF (Internet Engineering Task Force). +RFC 1738: Uniform Resource Locators (URL), +ed. T. Berners-Lee, L. Masinter, M. McCahill. +1994. + + + +IETF (Internet Engineering Task Force). +RFC 1808: Relative Uniform Resource Locators, +ed. R. Fielding. +1995. + + + +IETF (Internet Engineering Task Force). +RFC 2141: URN Syntax, +ed. R. Moats. +1997. + + +ISO +(International Organization for Standardization). +ISO 8879:1986(E). Information processing — Text and Office +Systems — Standard Generalized Markup Language (SGML). First +edition — 1986-10-15. [Geneva]: International Organization for +Standardization, 1986. + + + +ISO +(International Organization for Standardization). +ISO/IEC 10744-1992 (E). Information technology — +Hypermedia/Time-based Structuring Language (HyTime). + +[Geneva]: International Organization for +Standardization, 1992. +Extended Facilities Annexe. +[Geneva]: International Organization for +Standardization, 1996. + + + + + + + + +Character Classes +

Following the characteristics defined in the Unicode standard, +characters are classed as base characters (among others, these +contain the alphabetic characters of the Latin alphabet, without +diacritics), ideographic characters, and combining characters (among +others, this class contains most diacritics); these classes combine +to form the class of letters. Digits and extenders are +also distinguished. + +Characters + +Letter +BaseChar +| Ideographic +BaseChar +[#x0041-#x005A] +| [#x0061-#x007A] +| [#x00C0-#x00D6] +| [#x00D8-#x00F6] +| [#x00F8-#x00FF] +| [#x0100-#x0131] +| [#x0134-#x013E] +| [#x0141-#x0148] +| [#x014A-#x017E] +| [#x0180-#x01C3] +| [#x01CD-#x01F0] +| [#x01F4-#x01F5] +| [#x01FA-#x0217] +| [#x0250-#x02A8] +| [#x02BB-#x02C1] +| #x0386 +| [#x0388-#x038A] +| #x038C +| [#x038E-#x03A1] +| [#x03A3-#x03CE] +| [#x03D0-#x03D6] +| #x03DA +| #x03DC +| #x03DE +| #x03E0 +| [#x03E2-#x03F3] +| [#x0401-#x040C] +| [#x040E-#x044F] +| [#x0451-#x045C] +| [#x045E-#x0481] +| [#x0490-#x04C4] +| [#x04C7-#x04C8] +| [#x04CB-#x04CC] +| [#x04D0-#x04EB] +| [#x04EE-#x04F5] +| [#x04F8-#x04F9] +| [#x0531-#x0556] +| #x0559 +| [#x0561-#x0586] +| [#x05D0-#x05EA] +| [#x05F0-#x05F2] +| [#x0621-#x063A] +| [#x0641-#x064A] +| [#x0671-#x06B7] +| [#x06BA-#x06BE] +| [#x06C0-#x06CE] +| [#x06D0-#x06D3] +| #x06D5 +| [#x06E5-#x06E6] +| [#x0905-#x0939] +| #x093D +| [#x0958-#x0961] +| [#x0985-#x098C] +| [#x098F-#x0990] +| [#x0993-#x09A8] +| [#x09AA-#x09B0] +| #x09B2 +| [#x09B6-#x09B9] +| [#x09DC-#x09DD] +| [#x09DF-#x09E1] +| [#x09F0-#x09F1] +| [#x0A05-#x0A0A] +| [#x0A0F-#x0A10] +| [#x0A13-#x0A28] +| [#x0A2A-#x0A30] +| [#x0A32-#x0A33] +| [#x0A35-#x0A36] +| [#x0A38-#x0A39] +| [#x0A59-#x0A5C] +| #x0A5E +| [#x0A72-#x0A74] +| [#x0A85-#x0A8B] +| #x0A8D +| [#x0A8F-#x0A91] +| [#x0A93-#x0AA8] +| [#x0AAA-#x0AB0] +| [#x0AB2-#x0AB3] +| [#x0AB5-#x0AB9] +| #x0ABD +| #x0AE0 +| [#x0B05-#x0B0C] +| [#x0B0F-#x0B10] +| [#x0B13-#x0B28] +| [#x0B2A-#x0B30] +| [#x0B32-#x0B33] +| [#x0B36-#x0B39] +| #x0B3D +| [#x0B5C-#x0B5D] +| [#x0B5F-#x0B61] +| [#x0B85-#x0B8A] +| [#x0B8E-#x0B90] +| [#x0B92-#x0B95] +| [#x0B99-#x0B9A] +| #x0B9C +| [#x0B9E-#x0B9F] +| [#x0BA3-#x0BA4] +| [#x0BA8-#x0BAA] +| [#x0BAE-#x0BB5] +| [#x0BB7-#x0BB9] +| [#x0C05-#x0C0C] +| [#x0C0E-#x0C10] +| [#x0C12-#x0C28] +| [#x0C2A-#x0C33] +| [#x0C35-#x0C39] +| [#x0C60-#x0C61] +| [#x0C85-#x0C8C] +| [#x0C8E-#x0C90] +| [#x0C92-#x0CA8] +| [#x0CAA-#x0CB3] +| [#x0CB5-#x0CB9] +| #x0CDE +| [#x0CE0-#x0CE1] +| [#x0D05-#x0D0C] +| [#x0D0E-#x0D10] +| [#x0D12-#x0D28] +| [#x0D2A-#x0D39] +| [#x0D60-#x0D61] +| [#x0E01-#x0E2E] +| #x0E30 +| [#x0E32-#x0E33] +| [#x0E40-#x0E45] +| [#x0E81-#x0E82] +| #x0E84 +| [#x0E87-#x0E88] +| #x0E8A +| #x0E8D +| [#x0E94-#x0E97] +| [#x0E99-#x0E9F] +| [#x0EA1-#x0EA3] +| #x0EA5 +| #x0EA7 +| [#x0EAA-#x0EAB] +| [#x0EAD-#x0EAE] +| #x0EB0 +| [#x0EB2-#x0EB3] +| #x0EBD +| [#x0EC0-#x0EC4] +| [#x0F40-#x0F47] +| [#x0F49-#x0F69] +| [#x10A0-#x10C5] +| [#x10D0-#x10F6] +| #x1100 +| [#x1102-#x1103] +| [#x1105-#x1107] +| #x1109 +| [#x110B-#x110C] +| [#x110E-#x1112] +| #x113C +| #x113E +| #x1140 +| #x114C +| #x114E +| #x1150 +| [#x1154-#x1155] +| #x1159 +| [#x115F-#x1161] +| #x1163 +| #x1165 +| #x1167 +| #x1169 +| [#x116D-#x116E] +| [#x1172-#x1173] +| #x1175 +| #x119E +| #x11A8 +| #x11AB +| [#x11AE-#x11AF] +| [#x11B7-#x11B8] +| #x11BA +| [#x11BC-#x11C2] +| #x11EB +| #x11F0 +| #x11F9 +| [#x1E00-#x1E9B] +| [#x1EA0-#x1EF9] +| [#x1F00-#x1F15] +| [#x1F18-#x1F1D] +| [#x1F20-#x1F45] +| [#x1F48-#x1F4D] +| [#x1F50-#x1F57] +| #x1F59 +| #x1F5B +| #x1F5D +| [#x1F5F-#x1F7D] +| [#x1F80-#x1FB4] +| [#x1FB6-#x1FBC] +| #x1FBE +| [#x1FC2-#x1FC4] +| [#x1FC6-#x1FCC] +| [#x1FD0-#x1FD3] +| [#x1FD6-#x1FDB] +| [#x1FE0-#x1FEC] +| [#x1FF2-#x1FF4] +| [#x1FF6-#x1FFC] +| #x2126 +| [#x212A-#x212B] +| #x212E +| [#x2180-#x2182] +| [#x3041-#x3094] +| [#x30A1-#x30FA] +| [#x3105-#x312C] +| [#xAC00-#xD7A3] + +Ideographic +[#x4E00-#x9FA5] +| #x3007 +| [#x3021-#x3029] + +CombiningChar +[#x0300-#x0345] +| [#x0360-#x0361] +| [#x0483-#x0486] +| [#x0591-#x05A1] +| [#x05A3-#x05B9] +| [#x05BB-#x05BD] +| #x05BF +| [#x05C1-#x05C2] +| #x05C4 +| [#x064B-#x0652] +| #x0670 +| [#x06D6-#x06DC] +| [#x06DD-#x06DF] +| [#x06E0-#x06E4] +| [#x06E7-#x06E8] +| [#x06EA-#x06ED] +| [#x0901-#x0903] +| #x093C +| [#x093E-#x094C] +| #x094D +| [#x0951-#x0954] +| [#x0962-#x0963] +| [#x0981-#x0983] +| #x09BC +| #x09BE +| #x09BF +| [#x09C0-#x09C4] +| [#x09C7-#x09C8] +| [#x09CB-#x09CD] +| #x09D7 +| [#x09E2-#x09E3] +| #x0A02 +| #x0A3C +| #x0A3E +| #x0A3F +| [#x0A40-#x0A42] +| [#x0A47-#x0A48] +| [#x0A4B-#x0A4D] +| [#x0A70-#x0A71] +| [#x0A81-#x0A83] +| #x0ABC +| [#x0ABE-#x0AC5] +| [#x0AC7-#x0AC9] +| [#x0ACB-#x0ACD] +| [#x0B01-#x0B03] +| #x0B3C +| [#x0B3E-#x0B43] +| [#x0B47-#x0B48] +| [#x0B4B-#x0B4D] +| [#x0B56-#x0B57] +| [#x0B82-#x0B83] +| [#x0BBE-#x0BC2] +| [#x0BC6-#x0BC8] +| [#x0BCA-#x0BCD] +| #x0BD7 +| [#x0C01-#x0C03] +| [#x0C3E-#x0C44] +| [#x0C46-#x0C48] +| [#x0C4A-#x0C4D] +| [#x0C55-#x0C56] +| [#x0C82-#x0C83] +| [#x0CBE-#x0CC4] +| [#x0CC6-#x0CC8] +| [#x0CCA-#x0CCD] +| [#x0CD5-#x0CD6] +| [#x0D02-#x0D03] +| [#x0D3E-#x0D43] +| [#x0D46-#x0D48] +| [#x0D4A-#x0D4D] +| #x0D57 +| #x0E31 +| [#x0E34-#x0E3A] +| [#x0E47-#x0E4E] +| #x0EB1 +| [#x0EB4-#x0EB9] +| [#x0EBB-#x0EBC] +| [#x0EC8-#x0ECD] +| [#x0F18-#x0F19] +| #x0F35 +| #x0F37 +| #x0F39 +| #x0F3E +| #x0F3F +| [#x0F71-#x0F84] +| [#x0F86-#x0F8B] +| [#x0F90-#x0F95] +| #x0F97 +| [#x0F99-#x0FAD] +| [#x0FB1-#x0FB7] +| #x0FB9 +| [#x20D0-#x20DC] +| #x20E1 +| [#x302A-#x302F] +| #x3099 +| #x309A + +Digit +[#x0030-#x0039] +| [#x0660-#x0669] +| [#x06F0-#x06F9] +| [#x0966-#x096F] +| [#x09E6-#x09EF] +| [#x0A66-#x0A6F] +| [#x0AE6-#x0AEF] +| [#x0B66-#x0B6F] +| [#x0BE7-#x0BEF] +| [#x0C66-#x0C6F] +| [#x0CE6-#x0CEF] +| [#x0D66-#x0D6F] +| [#x0E50-#x0E59] +| [#x0ED0-#x0ED9] +| [#x0F20-#x0F29] + +Extender +#x00B7 +| #x02D0 +| #x02D1 +| #x0387 +| #x0640 +| #x0E46 +| #x0EC6 +| #x3005 +| [#x3031-#x3035] +| [#x309D-#x309E] +| [#x30FC-#x30FE] + + + + +

+

The character classes defined here can be derived from the +Unicode character database as follows: + + +

Name start characters must have one of the categories Ll, Lu, +Lo, Lt, Nl.

+ + +

Name characters other than Name-start characters +must have one of the categories Mc, Me, Mn, Lm, or Nd.

+
+ +

Characters in the compatibility area (i.e. with character code +greater than #xF900 and less than #xFFFE) are not allowed in XML +names.

+
+ +

Characters which have a font or compatibility decomposition (i.e. those +with a "compatibility formatting tag" in field 5 of the database -- +marked by field 5 beginning with a "<") are not allowed.

+
+ +

The following characters are treated as name-start characters +rather than name characters, because the property file classifies +them as Alphabetic: [#x02BB-#x02C1], #x0559, #x06E5, #x06E6.

+
+ +

Characters #x20DD-#x20E0 are excluded (in accordance with +Unicode, section 5.14).

+
+ +

Character #x00B7 is classified as an extender, because the +property list so identifies it.

+
+ +

Character #x0387 is added as a name character, because #x00B7 +is its canonical equivalent.

+
+ +

Characters ':' and '_' are allowed as name-start characters.

+
+ +

Characters '-' and '.' are allowed as name characters.

+
+ +

+
+ +XML and SGML + +

XML is designed to be a subset of SGML, in that every +valid XML document should also be a +conformant SGML document. +For a detailed comparison of the additional restrictions that XML places on +documents beyond those of SGML, see . +

+
+ +Expansion of Entity and Character References +

This appendix contains some examples illustrating the +sequence of entity- and character-reference recognition and +expansion, as specified in .

+

+If the DTD contains the declaration +An ampersand (&#38;) may be escaped +numerically (&#38;#38;) or with a general entity +(&amp;).

" > +]]> +then the XML processor will recognize the character references +when it parses the entity declaration, and resolve them before +storing the following string as the +value of the entity "example": +An ampersand (&) may be escaped +numerically (&#38;) or with a general entity +(&amp;).

+]]>
+A reference in the document to "&example;" +will cause the text to be reparsed, at which time the +start- and end-tags of the "p" element will be recognized +and the three references will be recognized and expanded, +resulting in a "p" element with the following content +(all data, no delimiters or markup): + +

+

A more complex example will illustrate the rules and their +effects fully. In the following example, the line numbers are +solely for reference. + +2 +4 +5 ' > +6 %xx; +7 ]> +8 This sample shows a &tricky; method. +]]> +This produces the following: + +

in line 4, the reference to character 37 is expanded immediately, +and the parameter entity "xx" is stored in the symbol +table with the value "%zz;". Since the replacement text +is not rescanned, the reference to parameter entity "zz" +is not recognized. (And it would be an error if it were, since +"zz" is not yet declared.)

+

in line 5, the character reference "&#60;" is +expanded immediately and the parameter entity "zz" is +stored with the replacement text +"<!ENTITY tricky "error-prone" >", +which is a well-formed entity declaration.

+

in line 6, the reference to "xx" is recognized, +and the replacement text of "xx" (namely +"%zz;") is parsed. The reference to "zz" +is recognized in its turn, and its replacement text +("<!ENTITY tricky "error-prone" >") is parsed. +The general entity "tricky" has now been +declared, with the replacement text "error-prone".

+

+in line 8, the reference to the general entity "tricky" is +recognized, and it is expanded, so the full content of the +"test" element is the self-describing (and ungrammatical) string +This sample shows a error-prone method. +

+ +

+
+ +Deterministic Content Models +

For compatibility, it is +required +that content models in element type declarations be deterministic. +

+ +

SGML +requires deterministic content models (it calls them +"unambiguous"); XML processors built using SGML systems may +flag non-deterministic content models as errors.

+

For example, the content model ((b, c) | (b, d)) is +non-deterministic, because given an initial b the parser +cannot know which b in the model is being matched without +looking ahead to see which element follows the b. +In this case, the two references to +b can be collapsed +into a single reference, making the model read +(b, (c | d)). An initial b now clearly +matches only a single name in the content model. The parser doesn't +need to look ahead to see what follows; either c or +d would be accepted.

+

More formally: a finite state automaton may be constructed from the +content model using the standard algorithms, e.g. algorithm 3.5 +in section 3.9 +of Aho, Sethi, and Ullman . +In many such algorithms, a follow set is constructed for each +position in the regular expression (i.e., each leaf +node in the +syntax tree for the regular expression); +if any position has a follow set in which +more than one following position is +labeled with the same element type name, +then the content model is in error +and may be reported as an error. +

+

Algorithms exist which allow many but not all non-deterministic +content models to be reduced automatically to equivalent deterministic +models; see Brggemann-Klein 1991 .

+
+ +Autodetection of Character Encodings +

The XML encoding declaration functions as an internal label on each +entity, indicating which character encoding is in use. Before an XML +processor can read the internal label, however, it apparently has to +know what character encoding is in use—which is what the internal label +is trying to indicate. In the general case, this is a hopeless +situation. It is not entirely hopeless in XML, however, because XML +limits the general case in two ways: each implementation is assumed +to support only a finite set of character encodings, and the XML +encoding declaration is restricted in position and content in order to +make it feasible to autodetect the character encoding in use in each +entity in normal cases. Also, in many cases other sources of information +are available in addition to the XML data stream itself. +Two cases may be distinguished, +depending on whether the XML entity is presented to the +processor without, or with, any accompanying +(external) information. We consider the first case first. +

+

+Because each XML entity not in UTF-8 or UTF-16 format must +begin with an XML encoding declaration, in which the first characters +must be '<?xml', any conforming processor can detect, +after two to four octets of input, which of the following cases apply. +In reading this list, it may help to know that in UCS-4, '<' is +"#x0000003C" and '?' is "#x0000003F", and the Byte +Order Mark required of UTF-16 data streams is "#xFEFF".

+

+ + +

00 00 00 3C: UCS-4, big-endian machine (1234 order)

+ + +

3C 00 00 00: UCS-4, little-endian machine (4321 order)

+
+ +

00 00 3C 00: UCS-4, unusual octet order (2143)

+
+ +

00 3C 00 00: UCS-4, unusual octet order (3412)

+
+ +

FE FF: UTF-16, big-endian

+
+ +

FF FE: UTF-16, little-endian

+
+ +

00 3C 00 3F: UTF-16, big-endian, no Byte Order Mark +(and thus, strictly speaking, in error)

+
+ +

3C 00 3F 00: UTF-16, little-endian, no Byte Order Mark +(and thus, strictly speaking, in error)

+
+ +

3C 3F 78 6D: UTF-8, ISO 646, ASCII, some part of ISO 8859, +Shift-JIS, EUC, or any other 7-bit, 8-bit, or mixed-width encoding +which ensures that the characters of ASCII have their normal positions, +width, +and values; the actual encoding declaration must be read to +detect which of these applies, but since all of these encodings +use the same bit patterns for the ASCII characters, the encoding +declaration itself may be read reliably +

+
+ +

4C 6F A7 94: EBCDIC (in some flavor; the full +encoding declaration must be read to tell which code page is in +use)

+
+ +

other: UTF-8 without an encoding declaration, or else +the data stream is corrupt, fragmentary, or enclosed in +a wrapper of some kind

+
+ +

+

+This level of autodetection is enough to read the XML encoding +declaration and parse the character-encoding identifier, which is +still necessary to distinguish the individual members of each family +of encodings (e.g. to tell UTF-8 from 8859, and the parts of 8859 +from each other, or to distinguish the specific EBCDIC code page in +use, and so on). +

+

+Because the contents of the encoding declaration are restricted to +ASCII characters, a processor can reliably read the entire encoding +declaration as soon as it has detected which family of encodings is in +use. Since in practice, all widely used character encodings fall into +one of the categories above, the XML encoding declaration allows +reasonably reliable in-band labeling of character encodings, even when +external sources of information at the operating-system or +transport-protocol level are unreliable. +

+

+Once the processor has detected the character encoding in use, it can +act appropriately, whether by invoking a separate input routine for +each case, or by calling the proper conversion function on each +character of input. +

+

+Like any self-labeling system, the XML encoding declaration will not +work if any software changes the entity's character set or encoding +without updating the encoding declaration. Implementors of +character-encoding routines should be careful to ensure the accuracy +of the internal and external information used to label the entity. +

+

The second possible case occurs when the XML entity is accompanied +by encoding information, as in some file systems and some network +protocols. +When multiple sources of information are available, + +their relative +priority and the preferred method of handling conflict should be +specified as part of the higher-level protocol used to deliver XML. +Rules for the relative priority of the internal label and the +MIME-type label in an external header, for example, should be part of the +RFC document defining the text/xml and application/xml MIME types. In +the interests of interoperability, however, the following rules +are recommended. + +

If an XML entity is in a file, the Byte-Order Mark +and encoding-declaration PI are used (if present) to determine the +character encoding. All other heuristics and sources of information +are solely for error recovery. +

+

If an XML entity is delivered with a +MIME type of text/xml, then the charset parameter +on the MIME type determines the +character encoding method; all other heuristics and sources of +information are solely for error recovery. +

+

If an XML entity is delivered +with a +MIME type of application/xml, then the Byte-Order Mark and +encoding-declaration PI are used (if present) to determine the +character encoding. All other heuristics and sources of +information are solely for error recovery. +

+ +These rules apply only in the absence of protocol-level documentation; +in particular, when the MIME types text/xml and application/xml are +defined, the recommendations of the relevant RFC will supersede +these rules. +

+ +
+ + +W3C XML Working Group + +

This specification was prepared and approved for publication by the +W3C XML Working Group (WG). WG approval of this specification does +not necessarily imply that all WG members voted for its approval. +The current and former members of the XML WG are:

+ + +Jon Bosak, SunChair +James ClarkTechnical Lead +Tim Bray, Textuality and NetscapeXML Co-editor +Jean Paoli, MicrosoftXML Co-editor +C. M. Sperberg-McQueen, U. of Ill.XML +Co-editor +Dan Connolly, W3CW3C Liaison +Paula Angerstein, Texcel +Steve DeRose, INSO +Dave Hollander, HP +Eliot Kimber, ISOGEN +Eve Maler, ArborText +Tom Magliery, NCSA +Murray Maloney, Muzmo and Grif +Makoto Murata, Fuji Xerox Information Systems +Joel Nava, Adobe +Conleth O'Connell, Vignette +Peter Sharpe, SoftQuad +John Tigue, DataChannel + + +
+
+
+ diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/samples/minutes.xml b/fastSum/resources/ROUGE/XML-DOM-1.46/samples/minutes.xml new file mode 100644 index 0000000000000000000000000000000000000000..b222e499d4eaaf947838543de03ea6b1f1f53dcf --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/samples/minutes.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + +<議事録> +<題名>取締役会議事録 +<本体> +<前文> +<開催日 年="1999" 月="2" 日="28" 時="11" 分="00" > +平成11年2月28日午前11時00分より +<開催場所>当会社本店会議室において取締役会を開催した。 +<総数 人数="3">取締役総数3名 +<出席者数 人数="3">出席取締役数3名 +<開会宣言> +以上のとおり +<成立要件>取締役全員の出席 +があったので、本取締役会は適法に成立した。よって取締役佐郷幸治は +議長席に着き開会を宣し、直ちに議案の審議に入った。 + + +<議案> +<議題>第1号議案 代表取締役選任の件 +<理由>議長は、代表取締役佐郷幸治が取締役の任期満了により本日付をもって +<退任事由>その資格を喪失し退任 +したので、後任者を選任する必要がある旨を述べ、 + +<選任方法> +その選任方法を議場に諮ったところ出席取締役中より佐郷幸治の再選重任を +望む旨の発言があった。 + +<採決> +議長は、更にその可否を議場に諮ったところ全員これに賛成したので、 +本案は可決確定した。 + +<就任承諾>なお、被選任者は即時就任を承諾した。 +<決定事項> +<役員>代表取締役 +<氏名>佐郷幸治 +<就任種別>重任 + +<閉会宣言> +以上により本日の議案の審議を全て終了し、議長は閉会を宣し、散会した。 +時に +<閉会時間 時="11" 分="30" >午前11時30分 +であった。前記の議事の経過並びに決議の内容を明確にするため本議事録 +を作成し、議長並びに出席取締役これに記名押印する。 + + + +<署名> +<署名日 年="1999" 月="2" 日="28">平成11年2月28日 +<商号>大佐郷商事株式会社 +<議長><役員>代表取締役<氏名>佐郷幸治 +<出席役員><役員>取締役<氏名>佐郷由美 +<出席役員><役員>取締役<氏名>佐郷幸法 + + diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/build_dom.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/build_dom.t new file mode 100644 index 0000000000000000000000000000000000000000..6391c50a7ee045905929db1bc168727fde1f4ecb --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/build_dom.t @@ -0,0 +1,70 @@ +BEGIN {print "1..2\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use XML::Parser::PerlSAX; +use XML::Handler::BuildDOM; +#use XML::Filter::SAXT; +#use XML::Handler::PrintEvents; + +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +#Test 2 + +my $str = < + +]> + + + + + + +END + +my $build_dom = new XML::Handler::BuildDOM; +my $parser = new XML::Parser::PerlSAX (UseAttributeOrder => 1, + Handler => $build_dom); + +# +# This commented code is for debugging. It inserts a PrintEvents handler, +# so you can see what events are coming thru. +# +#my $build_dom = new XML::Handler::BuildDOM; +#my $pr_evt = new XML::Handler::PrintEvents; +#my $saxt = new XML::Filter::SAXT ({ Handler => $pr_evt }, +# { Handler => $build_dom }); +#my $parser = new XML::Parser::PerlSAX (UseAttributeOrder => 1, +# Handler => $saxt); + +my $doc = $parser->parse ($str); + +# It throws an exception with XML::Parser 2.27: +# +# Can't use string ("toString; +$out =~ tr/\012/\n/; +print "out: $out --end\n\nstr: $str --end\n"; +assert_ok ($out eq $str); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_astress.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_astress.t new file mode 100644 index 0000000000000000000000000000000000000000..2bc7a6a0dfed2f7635222c5a46dc4ddf2c312af9 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_astress.t @@ -0,0 +1,77 @@ +# Before `make install' is performed this script should be runnable with +# `make test'. After `make install' it should work as `perl test.pl' + +######################### We start with some black magic to print on failure. + +# Change 1..1 below to 1..last_test_to_print . +# (It may become useful if the test is moved to ./t subdirectory.) + +BEGIN {print "1..4\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use CmpDOM; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +# Replaces the filepath separator if necessary (i.e for Macs and Windows/DOS) +sub filename +{ + my $name = shift; + + if ((defined $^O and + $^O =~ /MSWin32/i || + $^O =~ /Windows_95/i || + $^O =~ /Windows_NT/i) || + (defined $ENV{OS} and + $ENV{OS} =~ /MSWin32/i || + $ENV{OS} =~ /Windows_95/i || + $ENV{OS} =~ /Windows_NT/i)) + { + $name =~ s!/!\\!g; + } + elsif ((defined $^O and $^O =~ /MacOS/i) || + (defined $ENV{OS} and $ENV{OS} =~ /MacOS/i)) + { + $name =~ s!/!:!g; + $name = ":$name"; + } + $name; +} + +######################### End of black magic. + +# Insert your test code below (better if it prints "ok 13" +# (correspondingly "not ok 13") depending on the success of chunk 13 +# of the test code): + +# Test 2 + +my $parser = new XML::DOM::Parser; +unless (assert_ok ($parser)) +{ + exit; +} + +my $doc; +eval { + $doc = $parser->parsefile (filename ('samples/REC-xml-19980210.xml')); +}; +print $@; +assert_ok (not $@); + +my $doc2 = $doc->cloneNode (1); +my $cmp = new CmpDOM; +unless (assert_ok ($doc->equals ($doc2, $cmp))) +{ + print $cmp->context . "\n"; +} diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_attr.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_attr.t new file mode 100644 index 0000000000000000000000000000000000000000..afbea050c2142dfd9a0b99bd3af41fa0d49ab42b --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_attr.t @@ -0,0 +1,117 @@ +BEGIN {print "1..23\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use CheckAncestors; +use CmpDOM; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +#Test 2 + +my $str = < + +]> + + + + + + +END + +my $parser = new XML::DOM::Parser; +my $doc = $parser->parse ($str); +assert_ok (not $@); + +my $out = $doc->toString; +$out =~ tr/\012/\n/; +assert_ok ($out eq $str); + +my $root = $doc->getDocumentElement; +my $bart = $root->getElementsByTagName("person")->item(2); +assert_ok (defined $bart); + +my $lisa = $root->getElementsByTagName("person")->item(3); +assert_ok (defined $lisa); + +my $battr = $bart->getAttributes; +assert_ok ($battr->getLength == 3); + +my $lattr = $lisa->getAttributes; +assert_ok ($lattr->getLength == 3); + +# Use getValues in list context +my @attrList = $lattr->getValues; +assert_ok (@attrList == 3); + +my $hair = $battr->getNamedItem ("hair"); +assert_ok ($hair->getValue eq "yellow"); +assert_ok (not $hair->isSpecified); + +my $hair2 = $bart->removeAttributeNode ($hair); +# we're not returning default attribute nodes +assert_ok (not defined $hair2); + +# check if hair is still defaulted +$hair2 = $battr->getNamedItem ("hair"); +assert_ok ($hair2->getValue eq "yellow"); +assert_ok (not $hair2->isSpecified); + +# replace default hair with pointy hair +$battr->setNamedItem ($doc->createAttribute ("hair", "pointy")); +assert_ok ($bart->getAttribute("hair") eq "pointy"); + +$hair2 = $battr->getNamedItem ("hair"); +assert_ok ($hair2->isSpecified); + +# exception - can't share Attr nodes +eval { + $lisa->setAttributeNode ($hair2); +}; +assert_ok ($@); + +# add it again - it replaces itself +$bart->setAttributeNode ($hair2); +assert_ok ($battr->getLength == 3); + +# (cloned) hair transplant from bart to lisa +$lisa->setAttributeNode ($hair2->cloneNode); +$hair = $lattr->getNamedItem ("hair"); +assert_ok ($hair->isSpecified); +assert_ok ($hair->getValue eq "pointy"); + +my $doc2 = $doc->cloneNode(1); +my $cmp = new CmpDOM; + +# (tjmather) there were problems here until I patched +# XML::Parser::Dom::Element to convert Model arg to string +# from XML::Parser::ContentModel +unless (assert_ok ($doc->equals ($doc2, $cmp))) +{ + # This shouldn't happen + print "Context: ", $cmp->context, "\n"; +} +assert_ok ($hair->getNodeTypeName eq "ATTRIBUTE_NODE"); + +$bart->removeAttribute ("hair"); + +# check if hair is still defaulted +$hair2 = $battr->getNamedItem ("hair"); + +assert_ok ($hair2->getValue eq "yellow"); +assert_ok (not $hair2->isSpecified); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_cdata.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_cdata.t new file mode 100644 index 0000000000000000000000000000000000000000..3f4a47b6c805cde9577f7a76784921f047f56b38 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_cdata.t @@ -0,0 +1,49 @@ +BEGIN {print "1..3\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use CheckAncestors; +use CmpDOM; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +#Test 2 + +my $str = < + + + + + +END + +my $oldStr = < + + + Trenton Literary Review Honorable Mention + + +END + +# Keep CDATASections intact. Without this option set (default), it will convert +# CDATASections to Text nodes. The KeepCDATA option is only supported +# with XML::Parser versions 2.19 and up. +my $parser = new XML::DOM::Parser (KeepCDATA => 1); +my $doc = $parser->parse ($str); +assert_ok (not $@); + +my $out = $doc->toString; +$out =~ tr/\012/\n/; +my $result = ($XML::Parser::VERSION >= 2.19) ? $str : $oldStr; +assert_ok ($out eq $result); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_documenttype.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_documenttype.t new file mode 100644 index 0000000000000000000000000000000000000000..4c6e51183fbaf86609ebe6a29573b3a28229e568 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_documenttype.t @@ -0,0 +1,8 @@ +BEGIN {print "1..1\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +$loaded = 1; +my $xml = new XML::DOM::Document; +$xml->setDoctype($xml->createDocumentType('Sample', 'Sample.dtd')); +print "not " unless $xml->toString eq qq{\n}; +print "ok 1\n"; diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_encode.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_encode.t new file mode 100644 index 0000000000000000000000000000000000000000..71519a4ed248450b5f79af124efa1243571302d3 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_encode.t @@ -0,0 +1,36 @@ +BEGIN {print "1..3\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use CheckAncestors; +use CmpDOM; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +#Test 2 + +my $str = < + +END + +my $expected = < + +END + +my $parser = new XML::DOM::Parser; +my $doc = $parser->parse ($str); +assert_ok (not $@); + +my $out = $doc->toString; +assert_ok ($out eq $expected); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_example.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_example.t new file mode 100644 index 0000000000000000000000000000000000000000..5a9e4a97da52ea5fdc1135d887c786dfefbdbbd0 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_example.t @@ -0,0 +1,61 @@ +BEGIN {print "1..5\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +#Test 2 + +my $str = < + +P001 + +USA + +
HNLLHIWP
+
+
+ +0002 + +USA + +
45 HOLOMOA STREET
+
+
+
+END + +my $parser = new XML::DOM::Parser; +my $doc = $parser->parse ($str); +assert_ok (not $@); + +my $error = 0; +my $ckls = $doc->getElementsByTagName ("CKL"); +assert_ok ($ckls->getLength == 2); +for my $ckl (@$ckls) +{ + my $cklids = $ckl->getElementsByTagName ("CKLID"); + my $cklid = $cklids->[0]->getFirstChild->getData; + $error++ if ($cklid ne "P001" && $cklid ne "0002"); + + my $countries = $ckl->getElementsByTagName ("COUNTRY"); + my $country = $countries->[0]->getFirstChild->getData; + $error++ if ($country ne "USA"); +} +assert_ok ($error == 0); + +# Use getElementsByTagName in list context +my @ckls = $doc->getElementsByTagName ("CKL"); +assert_ok (@ckls == 2); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_extent.dtd b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_extent.dtd new file mode 100644 index 0000000000000000000000000000000000000000..ec5cde33c06f3275c4218b2b118a6702fefe8cd6 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_extent.dtd @@ -0,0 +1 @@ + diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_extent.ent b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_extent.ent new file mode 100644 index 0000000000000000000000000000000000000000..9e33b50ffc2d562f6051e52fd9d4a41d577adda2 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_extent.ent @@ -0,0 +1,2 @@ + + diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_extent.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_extent.t new file mode 100644 index 0000000000000000000000000000000000000000..8975d1944d9f42f2f3c93c9d0cd9a7f0cebf422f --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_extent.t @@ -0,0 +1,50 @@ +BEGIN {print "1..1\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +$loaded = 1; +print "ok 1\n"; + +# this test is temporary disabled because +# i think i have found a bug in expat that +# calls the ExternEnt handler instead of Entity for +# external parameter entities +exit; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +# +my $xml =< + + %globalInfo; + +]> + + +EOF + +# +# Tell XML::Parser to parse the external entities (ParseParamEnt => 1) +# Tell XML::DOM::Parser to 'hide' the contents of the external entities +# so you see '%globalInfo;' when printing. +my $parser = new XML::DOM::Parser( + ParseParamEnt => 1, + ExpandParamEnt => 0, + ErrorContext => 5); + +my $dom = $parser->parse ($xml); +my $domstr = $dom->toString; + +# Compare output with original file +assert_ok ($domstr eq $xml); + +print "$domstr\n$xml\n"; diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_astress.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_astress.t new file mode 100644 index 0000000000000000000000000000000000000000..453e273cfba9bdc840fb261206a7ab89c5c32610 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_astress.t @@ -0,0 +1,61 @@ +BEGIN {print "1..4\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use CmpDOM; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +sub filename +{ + my $name = shift; + + if ((defined $^O and + $^O =~ /MSWin32/i || + $^O =~ /Windows_95/i || + $^O =~ /Windows_NT/i) || + (defined $ENV{OS} and + $ENV{OS} =~ /MSWin32/i || + $ENV{OS} =~ /Windows_95/i || + $ENV{OS} =~ /Windows_NT/i)) + { + $name =~ s!/!\\!g; + } + elsif ((defined $^O and $^O =~ /MacOS/i) || + (defined $ENV{OS} and $ENV{OS} =~ /MacOS/i)) + { + $name =~ s!/!:!g; + $name = ":$name"; + } + $name; +} + +# Test 2 + +my $parser = new XML::DOM::Parser; +unless (assert_ok ($parser)) +{ + exit; +} + +my $doc; +eval { + $doc = $parser->parsefile (filename ('samples/minutes.xml')); +}; +assert_ok (not $@); + +my $doc2 = $doc->cloneNode (1); +my $cmp = new CmpDOM; +unless (assert_ok ($doc->equals ($doc2, $cmp))) +{ + print $cmp->context . "\n"; +} diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_attr.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_attr.t new file mode 100644 index 0000000000000000000000000000000000000000..4ecca2768646e4fbce853322d040cb9640ee2fa8 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_attr.t @@ -0,0 +1,166 @@ +BEGIN {print "1..23\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use CheckAncestors; +use CmpDOM; +use utf8; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +sub charRef2U8{ +my $charRef = shift; +my $u8; +$charRef = pack("H*",sprintf("%x",$charRef)); + for (my $iLen = 0;$charRef ne "";$charRef = substr($charRef,$iLen)){ + if($charRef =~ /^\x00([\x00-\x7F])/){ + $iLen = 2; + $u8 .= $1; + }elsif($charRef =~ /^\x00([\x80-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@", + (ord("\xC0")| + ((ord($1) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }elsif($charRef =~ /^([\x01-\x07])([\x00-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@", + (ord("\xC0")| + ((ord($1) & 7) << 2) | + ((ord($2) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }elsif($charRef =~ /^([\x08-\xD7])([\x00-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@",(ord("\xE0") | ((ord($1) & 240) >> 4))); + $u8 .= pack("v@",(ord("\x80") | + ((ord($1) & 15) << 2) | + ((ord($2) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }elsif($charRef =~ /^([\xD8-\xDB])([\x00-\xFF])([\xDC-\xDF])([\x00-\xFF])/){ + $iLen = 4; + $u8 .= pack("v@",(ord("\xF4") |ord($1) & 3)); + $u8 .= pack("v@",(ord("\x80") |((ord($2) & 252)>> 2))); + $u8 .= pack("v@",(ord("\x80") | + ((ord($2) & 3) << 4) | + ((ord($3) & 3) << 2) | + ((ord($4) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80") | (ord($4) & 63))); + }elsif($charRef =~ /^([\xE0-\xFF])([\x00-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@",(ord("\xE0") | ((ord($1) & 240) >> 4))); + $u8 .= pack("v@",(ord("\x80") | + ((ord($1) & 15) << 2) | + ((ord($2) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }else{ + die "can\'t convert!\n"; + } + } + return $u8; +} + +#Test 2 + +my $str = < + +]> +<シンプソンズ> + <人物 名前="ホーマー" 髪="なし" 性別="男性"/> + <人物 名前="マージ" 髪="青色" 性別="女性"/> + <人物 名前="バート" 性別="まだ気にしない"/> + <人物 名前="リサ" 性別="全然気にしない"/> + +END + +my $parser = new XML::DOM::Parser; +my $doc = $parser->parse ($str); +assert_ok (not $@); + +my $out = $doc->toString; +$out =~ tr/\012/\n/; +$out =~ s/(\&\#(\d+);)/sprintf("%s",charRef2U8($2))/eg; +assert_ok ($out eq $str); + +my $root = $doc->getDocumentElement; +my $bart = $root->getElementsByTagName("人物")->item(2); +assert_ok (defined $bart); + +my $lisa = $root->getElementsByTagName("人物")->item(3); +assert_ok (defined $lisa); + +my $battr = $bart->getAttributes; +assert_ok ($battr->getLength == 3); + +my $lattr = $lisa->getAttributes; +assert_ok ($lattr->getLength == 3); + +# Use getValues in list context +my @attrList = $lattr->getValues; +assert_ok (@attrList == 3); + +my $hair = $battr->getNamedItem ("髪"); +assert_ok ($hair->getValue eq "黄色"); +assert_ok (not $hair->isSpecified); + +my $hair2 = $bart->removeAttributeNode ($hair); +# we're not returning default attribute nodes +assert_ok (not defined $hair2); + +# check if hair is still defaulted +$hair2 = $battr->getNamedItem ("髪"); +assert_ok ($hair2->getValue eq "黄色"); +assert_ok (not $hair2->isSpecified); + +# replace default hair with pointy hair +$battr->setNamedItem ($doc->createAttribute ("髪", "つんつん")); +assert_ok ($bart->getAttribute("髪") eq "つんつん"); + +$hair2 = $battr->getNamedItem ("髪"); +assert_ok ($hair2->isSpecified); + +# exception - can't share Attr nodes +eval { + $lisa->setAttributeNode ($hair2); +}; +assert_ok ($@); + +# add it again - it replaces itself +$bart->setAttributeNode ($hair2); +assert_ok ($battr->getLength == 3); + +# (cloned) hair transplant from bart to lisa +$lisa->setAttributeNode ($hair2->cloneNode); +$hair = $lattr->getNamedItem ("髪"); +assert_ok ($hair->isSpecified); +assert_ok ($hair->getValue eq "つんつん"); + +my $doc2 = $doc->cloneNode(1); +my $cmp = new CmpDOM; +unless (assert_ok ($doc->equals ($doc2, $cmp))) +{ + # This shouldn't happen + print "Context: ", $cmp->context, "\n"; +} + +assert_ok ($hair->getNodeTypeName eq "ATTRIBUTE_NODE"); + +$bart->removeAttribute ("髪"); + +# check if hair is still defaulted +$hair2 = $battr->getNamedItem ("髪"); +assert_ok ($hair2->getValue eq "黄色"); +assert_ok (not $hair2->isSpecified); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_cdata.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_cdata.t new file mode 100644 index 0000000000000000000000000000000000000000..e512fc5c657e40e586ee52bd65321b64811fd9db --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_cdata.t @@ -0,0 +1,50 @@ +BEGIN {print "1..3\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use CheckAncestors; +use CmpDOM; +use utf8; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +#Test 2 + +my $str = < +<テキスト> +<タグ> + + + +END + +my $oldStr = < +<テキスト> +<タグ> + タグの認識対象としたくないテキストデータ + + +END + +# Keep CDATASections intact. Without this option set (default), it will convert +# CDATASections to Text nodes. The KeepCDATA option is only supported +# with XML::Parser versions 2.19 and up. +my $parser = new XML::DOM::Parser (KeepCDATA => 1); +my $doc = $parser->parse ($str); +assert_ok (not $@); + +my $out = $doc->toString; +$out =~ tr/\012/\n/; +my $result = ($XML::Parser::VERSION >= 2.19) ? $str : $oldStr; +assert_ok ($out eq $result); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_example.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_example.t new file mode 100644 index 0000000000000000000000000000000000000000..c02446dbea7ddfd54ad8440572acea69584fcef9 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_example.t @@ -0,0 +1,62 @@ +BEGIN {print "1..5\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use utf8; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +#Test 2 + +my $str = < +<商品> +<商品番号>P001 +<ジャンル> +<生産国>米国 +<国内連絡先> +<住所>隣のアパート + + +<商品> +<商品番号>0002 +<ジャンル> +<生産国>米国 +<国内連絡先> +<住所>横須賀市 光の丘 + + + +END + +my $parser = new XML::DOM::Parser; +my $doc = $parser->parse ($str); +assert_ok (not $@); + +my $error = 0; +my $ckls = $doc->getElementsByTagName ("商品"); +assert_ok ($ckls->getLength == 2); +for my $ckl (@$ckls) +{ + my $cklids = $ckl->getElementsByTagName ("商品番号"); + my $cklid = $cklids->[0]->getFirstChild->getData; + $error++ if ($cklid ne "P001" && $cklid ne "0002"); + + my $countries = $ckl->getElementsByTagName ("生産国"); + my $country = $countries->[0]->getFirstChild->getData; + $error++ if ($country ne "米国"); +} +assert_ok ($error == 0); + +# Use getElementsByTagName in list context +my @ckls = $doc->getElementsByTagName ("商品"); +assert_ok (@ckls == 2); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_minus.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_minus.t new file mode 100644 index 0000000000000000000000000000000000000000..24af66509636ddfb2fc008b87c20ca99aaa15bd0 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_minus.t @@ -0,0 +1,51 @@ +BEGIN {print "1..2\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; + +use utf8; + +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +#Test 2 + +my $str = < + +Hello children + + +Hello Chef + +Whoowhoo whoo + + +Shut up you loser + + +Cartman, you fat ass + + + +END + +# This example has attribute names with "-" (non alphanumerics) +# A previous bug caused attributes with non-alphanumeric names to always +# be interpreted as default attribute values. When printing out the document +# they would not be printed, because default attributes aren't printed. +my $parser = new XML::DOM::Parser; +my $doc = $parser->parse ($str); + +my $out = $doc->toString; +$out =~ tr/\012/\n/; +assert_ok ($out eq $str); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_modify.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_modify.t new file mode 100644 index 0000000000000000000000000000000000000000..a749c422d635aeb3e90b594b0f80634a7b4b914a --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_modify.t @@ -0,0 +1,183 @@ +BEGIN {print "1..16\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use CheckAncestors; +use utf8; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +sub charRef2U8{ +my $charRef = shift; +my $u8; +$charRef = pack("H*",sprintf("%x",$charRef)); + for (my $iLen = 0;$charRef ne "";$charRef = substr($charRef,$iLen)){ + if($charRef =~ /^\x00([\x00-\x7F])/){ + $iLen = 2; + $u8 .= $1; + }elsif($charRef =~ /^\x00([\x80-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@", + (ord("\xC0")| + ((ord($1) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }elsif($charRef =~ /^([\x01-\x07])([\x00-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@", + (ord("\xC0")| + ((ord($1) & 7) << 2) | + ((ord($2) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }elsif($charRef =~ /^([\x08-\xD7])([\x00-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@",(ord("\xE0") | ((ord($1) & 240) >> 4))); + $u8 .= pack("v@",(ord("\x80") | + ((ord($1) & 15) << 2) | + ((ord($2) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }elsif($charRef =~ /^([\xD8-\xDB])([\x00-\xFF])([\xDC-\xDF])([\x00-\xFF])/){ + $iLen = 4; + $u8 .= pack("v@",(ord("\xF4") |ord($1) & 3)); + $u8 .= pack("v@",(ord("\x80") |((ord($2) & 252)>> 2))); + $u8 .= pack("v@",(ord("\x80") | + ((ord($2) & 3) << 4) | + ((ord($3) & 3) << 2) | + ((ord($4) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80") | (ord($4) & 63))); + }elsif($charRef =~ /^([\xE0-\xFF])([\x00-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@",(ord("\xE0") | ((ord($1) & 240) >> 4))); + $u8 .= pack("v@",(ord("\x80") | + ((ord($1) & 15) << 2) | + ((ord($2) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }else{ + die "can\'t convert!\n"; + } + } + return $u8; +} + +#Test 2 + +my $str = < +<シェフ> +おおっす、みんな + +<子供達> +こんちは シェフ +<ケニー> +ウォワォワー + +<カートマン> +だまれ負け犬 + +<カイル> +カートマン、でかけつぅ + + + +END + +my $parser = new XML::DOM::Parser; +my $doc = $parser->parse ($str); + +my $chef = $doc->getElementsByTagName ("シェフ")->item(0); +my $kenny = $doc->getElementsByTagName ("ケニー")->item(0); +my $children = $doc->getElementsByTagName ("子供達")->item(0); + +my $stan = $doc->createElement ("スタン"); +$children->appendChild ($stan); +my $snap1 =$doc->toString; + +my $stanlist = $doc->getElementsByTagName ("スタン"); +assert_ok ($stanlist->getLength == 1); + +$children->appendChild ($stan); +$stanlist = $doc->getElementsByTagName ("スタン"); +assert_ok ($stanlist->getLength == 1); + +my $snap2 = $doc->toString; +assert_ok ($snap1 eq $snap2); + +# can't add Attr node directly to Element +my $attr = $doc->createAttribute ("おい", "てめえ"); +eval { + $kenny->appendChild ($attr); +}; +assert_ok ($@); + +$kenny->appendChild ($stan); +assert_ok ($kenny == $stan->getParentNode); + +# force hierarchy exception +eval { + $stan->appendChild ($kenny); +}; +assert_ok ($@); + +# force hierarchy exception +eval { + $stan->appendChild ($stan); +}; +assert_ok ($@); + +my $frag = $doc->createDocumentFragment; +$frag->appendChild ($stan); +$frag->appendChild ($kenny); +$chef->appendChild ($frag); +assert_ok ($frag->getElementsByTagName ("*")->getLength == 0); +assert_ok (not defined $frag->getParentNode); + +my $kenny2 = $chef->removeChild ($kenny); +assert_ok ($kenny == $kenny2); +assert_ok (!defined $kenny->getParentNode); + +# force exception - can't have 2 element nodes in a document +eval { + $doc->appendChild ($kenny); +}; +assert_ok ($@); + +$doc->getDocumentElement->appendChild ($kenny); +$kenny2 = $doc->getDocumentElement->replaceChild ($stan, $kenny); +assert_ok ($kenny == $kenny2); + +$doc->getDocumentElement->appendChild ($kenny); + +assert_ok (CheckAncestors::doit ($doc)); + +$str = $doc->toString; +$str =~ tr/\012/\n/; +$str =~ s/(\&\#(\d+);)/sprintf("%s",charRef2U8($2))/eg; +my $end = < +<シェフ> +おおっす、みんな + +<子供達> +こんちは シェフ + +<カートマン> +だまれ負け犬 + +<カイル> +カートマン、でかけつぅ + + +<スタン/><ケニー> +ウォワォワー + +END + +assert_ok ($str eq $end); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_print.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_print.t new file mode 100644 index 0000000000000000000000000000000000000000..3ead22ba7f95ad594814f95d100da4ecde712cc3 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_jp_print.t @@ -0,0 +1,104 @@ +BEGIN {print "1..3\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use utf8; +$loaded = 1; +print "ok 1\n"; + +#Test 2 +sub charRef2U8{ +my $charRef = shift; +my $u8; +$charRef = pack("H*",sprintf("%x",$charRef)); + for (my $iLen = 0;$charRef ne "";$charRef = substr($charRef,$iLen)){ + if($charRef =~ /^\x00([\x00-\x7F])/){ + $iLen = 2; + $u8 .= $1; + }elsif($charRef =~ /^\x00([\x80-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@", + (ord("\xC0")| + ((ord($1) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }elsif($charRef =~ /^([\x01-\x07])([\x00-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@", + (ord("\xC0")| + ((ord($1) & 7) << 2) | + ((ord($2) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }elsif($charRef =~ /^([\x08-\xD7])([\x00-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@",(ord("\xE0") | ((ord($1) & 240) >> 4))); + $u8 .= pack("v@",(ord("\x80") | + ((ord($1) & 15) << 2) | + ((ord($2) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }elsif($charRef =~ /^([\xD8-\xDB])([\x00-\xFF])([\xDC-\xDF])([\x00-\xFF])/){ + $iLen = 4; + $u8 .= pack("v@",(ord("\xF4") |ord($1) & 3)); + $u8 .= pack("v@",(ord("\x80") |((ord($2) & 252)>> 2))); + $u8 .= pack("v@",(ord("\x80") | + ((ord($2) & 3) << 4) | + ((ord($3) & 3) << 2) | + ((ord($4) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80") | (ord($4) & 63))); + }elsif($charRef =~ /^([\xE0-\xFF])([\x00-\xFF])/){ + $iLen = 2; + $u8 .= pack("v@",(ord("\xE0") | ((ord($1) & 240) >> 4))); + $u8 .= pack("v@",(ord("\x80") | + ((ord($1) & 15) << 2) | + ((ord($2) & 192) >> 6))); + $u8 .= pack("v@",(ord("\x80")| (ord($2) & 63))); + }else{ + die "can\'t convert!\n"; + } + } + return $u8; +} + +my $str = < + + + + +]> +<文書> + <ビーバス> +おい、バットヘッド! + + <バットヘッド> +なんだい、ビーバス + + <ビーバス> +おまえ屁こいただろ &はっ; + + <バットヘッド> +&はっ; そのとぉり &はっ; + + +END + +my $parser = new XML::DOM::Parser (NoExpand => 1); +my $doc = $parser->parse ($str); +my $out = $doc->toString; +$out =~ tr/\012/\n/; +$out =~ s/(\&\#(\d+);)/sprintf("%s",charRef2U8($2))/eg; + +if ($out ne $str) +{ + print "not "; +} +print "ok 2\n"; + +$str = $doc->getElementsByTagName("バットヘッド")->item(0)->toString; +$str =~ tr/\012/\n/; +$str =~ s/(\&\#(\d+);)/sprintf("%s",charRef2U8($2))/eg; + +if ($str ne "<バットヘッド>\nなんだい、ビーバス\n ") +{ + print "not "; +} +print "ok 3\n"; diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_minus.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_minus.t new file mode 100644 index 0000000000000000000000000000000000000000..4997bad44e22280043346f27e307daf0fb8ee94f --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_minus.t @@ -0,0 +1,48 @@ +BEGIN {print "1..2\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +#Test 2 + +my $str = < + +Hello children + + +Hello Chef + +Whoowhoo whoo + + +Shut up you loser + + +Cartman, you fat ass + + + +END + +# This example has attribute names with "-" (non alphanumerics) +# A previous bug caused attributes with non-alphanumeric names to always +# be interpreted as default attribute values. When printing out the document +# they would not be printed, because default attributes aren't printed. +my $parser = new XML::DOM::Parser; +my $doc = $parser->parse ($str); + +my $out = $doc->toString; +$out =~ tr/\012/\n/; +assert_ok ($out eq $str); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_modify.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_modify.t new file mode 100644 index 0000000000000000000000000000000000000000..ba7447549ead59137a291224fa5299cf0f84b710 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_modify.t @@ -0,0 +1,131 @@ +BEGIN {print "1..16\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +use CheckAncestors; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +#Test 2 + +my $str = < + +Hello children + + +Hello Chef + +Whoowhoo whoo + + +Shut up you loser + + +Cartman, you fat ass + + + +END + +my $parser = new XML::DOM::Parser; +my $doc = $parser->parse ($str); + +my $chef = $doc->getElementsByTagName ("chef")->item(0); +my $kenny = $doc->getElementsByTagName ("kenny")->item(0); +my $children = $doc->getElementsByTagName ("children")->item(0); + +my $stan = $doc->createElement ("stan"); +$children->appendChild ($stan); +my $snap1 =$doc->toString; + +my $stanlist = $doc->getElementsByTagName ("stan"); +assert_ok ($stanlist->getLength == 1); + +$children->appendChild ($stan); +$stanlist = $doc->getElementsByTagName ("stan"); +assert_ok ($stanlist->getLength == 1); + +my $snap2 = $doc->toString; +assert_ok ($snap1 eq $snap2); + +# can't add Attr node directly to Element +my $attr = $doc->createAttribute ("hey", "you"); +eval { + $kenny->appendChild ($attr); +}; +assert_ok ($@); + +$kenny->appendChild ($stan); +assert_ok ($kenny == $stan->getParentNode); + +# force hierarchy exception +eval { + $stan->appendChild ($kenny); +}; +assert_ok ($@); + +# force hierarchy exception +eval { + $stan->appendChild ($stan); +}; +assert_ok ($@); + +my $frag = $doc->createDocumentFragment; +$frag->appendChild ($stan); +$frag->appendChild ($kenny); +$chef->appendChild ($frag); +assert_ok ($frag->getElementsByTagName ("*")->getLength == 0); +assert_ok (not defined $frag->getParentNode); + +my $kenny2 = $chef->removeChild ($kenny); +assert_ok ($kenny == $kenny2); +assert_ok (!defined $kenny->getParentNode); + +# force exception - can't have 2 element nodes in a document +eval { + $doc->appendChild ($kenny); +}; +assert_ok ($@); + +$doc->getDocumentElement->appendChild ($kenny); +$kenny2 = $doc->getDocumentElement->replaceChild ($stan, $kenny); +assert_ok ($kenny == $kenny2); + +$doc->getDocumentElement->appendChild ($kenny); + +assert_ok (CheckAncestors::doit ($doc)); + +$str = $doc->toString; +$str =~ tr/\012/\n/; + +my $end = < + +Hello children + + +Hello Chef + + +Shut up you loser + + +Cartman, you fat ass + + + +Whoowhoo whoo + +END + +assert_ok ($str eq $end); diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_noexpand.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_noexpand.t new file mode 100644 index 0000000000000000000000000000000000000000..12645b185ffc493ae545d1fc9ebfc426eeb29cae --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_noexpand.t @@ -0,0 +1,74 @@ +use strict; +use Test; + +# check the behavior of accessing a text node that contains +# an entity. The value should be the entity name when +# NoExpand => 1. + +my $loaded; +BEGIN { $| = 1; plan tests => 3; } +END { ok(0) unless $loaded; } +require XML::DOM; +$loaded = 1; +ok(1); + + # set up + my $parser = getParser(); + + my $xml_string = < + +]> + + some regular text data + &myEntityWithValue; + +XML + +## TEST ## + +# parse +my $doc = $parser->parse($xml_string); +my $root = $doc->getDocumentElement(); + +my @testNodes = getElementsByTagName($root, 'test1'); + +my $i = 0; +my @expected = ('some regular text data','&myEntityWithValue;'); + +foreach my $testNode (@testNodes) { + # print it out + $testNode->normalize; + foreach my $child ($testNode->getChildNodes) { + ok($child->getData, $expected[$i++]); +# print STDERR "Test1 ==> text child of +# NODE:",$testNode->getAttribute('name')," has value: ", $child->getData, "\n"; + } +} + +exit 0; + +sub getParser { + my ($my_string) = @_; + + my %options = ( + NoExpand => 1, + ParseParamEnt => 0, + ); + + my $parser = new XML::DOM::Parser(%options); +} + +# convience method to return a list rather than nodeList +sub getElementsByTagName { + my ($node, $tag) = @_; + my @list; + my $nodes = $node->getElementsByTagName($tag); + my $numOfNodes= $nodes->getLength(); + for (my $i=0; $i< $numOfNodes; $i++) { + push @list, $nodes->item($i); + } + return @list; +} + diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_print.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_print.t new file mode 100644 index 0000000000000000000000000000000000000000..75169dc752ebea55be1d317ab9a984f6768d14ce --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_print.t @@ -0,0 +1,51 @@ +BEGIN {print "1..3\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +$loaded = 1; +print "ok 1\n"; + +#Test 2 + +my $str = < + + + + +]> + + +Hey Butthead! + + +Yes, Beavis. + + +You farted. &huh; + + +&huh; Yeah &huh; + + +END + +my $parser = new XML::DOM::Parser (NoExpand => 1); +my $doc = $parser->parse ($str); +my $out = $doc->toString; +$out =~ tr/\012/\n/; + +if ($out ne $str) +{ + print "not "; +} +print "ok 2\n"; + +$str = $doc->getElementsByTagName("butthead")->item(0)->toString; +$str =~ tr/\012/\n/; + +if ($str ne "\nYes, Beavis.\n ") +{ + print "not "; +} +print "ok 3\n"; diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_template.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_template.t new file mode 100644 index 0000000000000000000000000000000000000000..5394958b71e7e7f798bec1572bfa5dc95352f385 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_template.t @@ -0,0 +1,19 @@ +BEGIN {print "1..2\n";} +END {print "not ok 1\n" unless $loaded;} +use XML::DOM; +$loaded = 1; +print "ok 1\n"; + +my $test = 1; +sub assert_ok +{ + my $ok = shift; + print "not " unless $ok; + ++$test; + print "ok $test\n"; + $ok; +} + +#Test 2 + +print "ok 2\n"; diff --git a/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_text.t b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_text.t new file mode 100644 index 0000000000000000000000000000000000000000..ac7e25b3e642d614ea1ddc4512fb998e631f804c --- /dev/null +++ b/fastSum/resources/ROUGE/XML-DOM-1.46/t/dom_text.t @@ -0,0 +1,24 @@ +use strict; +use Test; + +my $loaded; +BEGIN { $| = 1; plan tests => 5; } +END { ok(0) unless $loaded; } +require XML::DOM; +$loaded = 1; +ok(1); + +my $str = qq[This is a simple test for XML::DOM::Text.]; + +# test 1 -- check for correct parsing of input string +my $parser = new XML::DOM::Parser; +my $doc = eval { $parser->parse($str); }; +ok((not $@) && defined $doc); + +# test 2 -- check for working splitText function +# eval it because in splitText was a bug which kills perl +my $text = $doc->getDocumentElement()->getFirstChild(); +my $new_node = $text->splitText(10); +ok($text->getNodeValue, 'This is a '); +ok($new_node->getNodeValue, 'simple test for XML::DOM::Text.'); +ok($text->getNextSibling, $new_node); diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44.tar.gz b/fastSum/resources/ROUGE/XML-Parser-2.44.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..7b266f3c9ba395ce7db66dc092ed3f14acf4a406 Binary files /dev/null and b/fastSum/resources/ROUGE/XML-Parser-2.44.tar.gz differ diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Changes b/fastSum/resources/ROUGE/XML-Parser-2.44/Changes new file mode 100644 index 0000000000000000000000000000000000000000..3c949b1895bd6d81476fa25df61695314bea550e --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Changes @@ -0,0 +1,534 @@ +Revision history for Perl extension XML::Parser. + +2.44 2015-01-12 (by Todd Rinaldo) + - RT 99098 - Revert "Add more useful error message on parse to Expat". It breaks + XML::Twig. Calling code will need to do this if it's needed. + - RT 100959 - Add use FileHandle to t/astress.t - Make perl 5.10.0 happy. + +2.43 2014-12-11 (by Todd Rinaldo) + - POD patch to man from Debian via Nicholas Bamber + - POD patch from Debian via gregor herrmann. + - Add more useful error message on parse to Expat + - Fix LWP dependency to be LWP::Useragent + - Bump to 2.43 for overdue release to CPAN. + +2.42_01 2013-07-12 (by Todd Rinaldo) + - Added instructions to README for OSX + - XS changes: stop using SvPV(string, PL_na) + - Fix documentation typos + +2.41 2011-06-01 (by Todd Rinaldo) + - Tests are cleaned. promoting to stable. No changes since 2.40_02 + +2.40_02 2011-05-31 (by Todd Rinaldo) + - TODO some tests which fail in Free BSD due to improper expat CVE patch + http://www.freebsd.org/cgi/query-pr.cgi?pr=157469 + +2.40_01 2011-05-24 (by Todd Rinaldo) + - better installation instructions + - Small spelling patches from Debian package - Thanks Nicholas Bamber + - RT 68399 - Upgrade Devel::CheckLib to 0.93 to make it + perl 5.14 compliant - qw() + - RT 67207 - Stop doing tied on globs - Thanks sprout + - RT 31319 - Fix doc links in POD for XML/Parser.pm + +2.40 2010-09-16 (by Alexandr Ciornii) + - Add windows-1251.enc, ibm866.enc, koi8-r.enc (Russian) + - Add windows-1255.enc (Hebrew) + - Update iso-8859-7.enc (RT#40712) + - Use Devel::CheckLib + - Better description of expat packages + - Better Perl style in both code and docs + +2.36 + - Fix for Carp::Heavy bugs + +2.35 (mostly by Alexandr Ciornii) + - Works in 5.10 (Andreas J. Koenig) + - Added license in Makefile.PL (Alexandr Ciornii) + - Makefile.PL also searches for expat in C:/lib/Expat-2.0.0 (Alexandr Ciornii) + - No longer uses variable named 'namespace' in Expat.xs (Jeff Hunter) + +2.33 + - Fixed Tree style (grantm) + - Fixed some non-utf8 stuff in DTDs (patch in XML::DOM tarball) + +2.32 + - Memory leak fix (Juerd Waalboer). + - Added windows-1252 encoding + - Styles moved to separate .pm files to make loading faster and + ease maintainence + - Don't load IO::Handle unless we really need to + +2.31 Tue Apr 2 13:39:51 EST 2002 + - Ilya Zakharevich and + Dave Mitchell both provided patches to + fix problems module had with 5.8.0 + - Dave Mitchell also made some UTF-8 related fixes to the test suite. +2.30 Thu Oct 5 12:47:36 EDT 2000 + - Get rid of ContentStash global. Not that big a deal looking it up + everytime and gets rid of a potential threading problem. + - Switch to shareable library version of expat from sourceforge + (i.e. no longer include expat source and require that libexpat + be installed) + - Bob Tribit demonstrated a fix for problems + in compiling under perl 5.6.0 with 5.005 threading. + - Matt Sergeant discovered a typo ('IO::Handler' + instead of 'IO::Handle') in Expat.pm that caused IO::Handle objects + to be treated as strings instead of handles. + - Matt Sergeant also provided a patch to allow tied handles to work + properly in calls to parse. + - Eric Bohlman reported a failure when + incremental parsing and external parsing were used together. + Need to give explicit package when calling Do_External_Parse + from externalEntityRef otherwise fails when called through ExpatNB. +2.29 Sun May 21 21:19:45 EDT 2000 + - In expat, notation declaration handler registration wasn't + surviving through external entity references. + - Chase Tingley discovered that text + accumulation in the Stream style wasn't working across processing + instructions and recommended the appropriate fix. + - Jochen Wiedmann , noted that + you couldn't use ExpatNB directly because it wasn't setting + the protective _State_ variable. Now doing this in the + parse_more method of ExpatNB. + - At the suggestion of Grant Hopwood , now + calling the env_proxy method on the LWP::UserAgent in the LWP + external entity handler when it's created to set any proxies + from environment variables. + - Grant McLean, Matt Sergeant (& others I may have missed) noted that + loading the LWP & URI modules slowed startup of the module, even + if the application didn't need it. The default LWP handler is now + dynamicly loaded (along with LWP & URI modules) the first time an + external entity is referenced. Also provided a NoLWP option to + XML::Parser that forces the file based external entity handler. + - Fixed allocation errors in element declaration patches in expat + - The Expat base method now works, even before expat starts parsing. + - Changed the canonical script to take an optional file argument. + - Enno Derksen reported that the attlist handler + was not returning NOTATION type attlist information. + - Michel Rodriguez , noted that the constructor + for XML::Parser objects no longer checked for the existence of + applications installed external entity handlers before installing + the default ones. + - Burkhard Meier sent in a fix for + compiler directives in Expat/Makefile.PL for Win32 machines. + A change in 5.6.0 caused the old conditional to fail. + - Forgot to document changes to the Entity declaration handler: + there is an additional "IsParam" argument that indicates whether + or not the entity is a parameter entity. This information is + no longer passed on in the name. + - Ben Low reported an undefined macro with + version 5.004_04. +2.28 Mon Mar 27 21:21:50 EST 2000 + - Junked local (Expat.xs) declaration parsing and patched expat to + handle XML declarations, element declarations, attlist declarations, + and all entity declarations. By eliminating both shadow buffers and + local declaration parsing in Expat.xs, I've eliminated the two most + common sources of serious bugs in the expat interface. + o thus fixed the segfault and parse position bugs reported by + Ivan Kurmanov + o and the doctype bug reported by Kevin Lund + + o The element declaration handler no longer receives a string, + but an XML::Parser::ContentModel object that represents the + parsed model, but still looks like a string if referred to as + a string. This class is documented in the XML::Parser::Expat + pod under "XML::Parser::ContentModel Methods". + o The doctype declaration handler no longer receives the internal + subset as a string, but in its place a true or undef value + indicating whether or not there is an internal subset. Also, + it's called prior to processing either the internal or external + DTD subset (as suggested by Enno Derksen .) + o There is a new DoctypeFin handler that's called after finishing + parsing all of the DOCTYPE declaration, including any internal + or external DTD declarations. + o One bit of lossage is that recognized_string, original_string, + and default_current no longer work inside declaration handlers. + - Added a handler that gets called after parsing external entities: + ExternEntFin. Suggested by Jeff Horner . + - parsefile, file_ext_ent_handler, & lwp_ext_ent_handler now all + set the base path. This problem has been raised more than once + and I'm not sure to whom credit should be given. + - The file_ext_ent_handler now opens a file handle instead of + reading the entire entity at once. + - Merged patches supplied by Larry Wall to (for perl 5.6 and beyond) + tag generated strings as UTF-8, where appropriate. + - Fixed a bug in xml_escape reported by Jerry Geiger . + It failed when requesting escaping of perl regex meta-characters. + - Laurent Caprani reported a bug in the + Proc handler for the Debug style. + - sent in a patch for the element index + mechanism. I was popping the stack too soon in the endElement fcn. + - Jim Miner sent in a patch to fix a warning in + Expat.pm. + - Kurt Starsinic pointed out that the eval used to check for string + versus IO handle was leaving $@ dirty, thereby foiling higher + level exception handlers + - An expat question by Paul Prescod helped me + see that exeptions in the parse call bypass the Expat release method, + causing memory leaks. + - Mark D. Anderson noted that calling + recognized_string from the Final method caused a dump. There are + a bunch of methods that should not be called after parsing has + finished. These now have protective if statements around them. + - Updated canonical utility to conform to newer version of Canonical + XML working draft. +2.27 Sat Sep 25 18:26:44 EDT 1999 + - Corrected documentation in Parser.pm + - Deal with XML_NS and XML_BYTE_ORDER macros in Expat/Makefile.PL + - Chris Thorman noted that "require 'URI::URL.pm'" + in Parser.pm was in error (should be "require 'URI/URL.pm'") + - Andrew McNaughton noted "use English" and + use of '$&' slowed down regex handling for whole application, so + they were excised from XML::Parser::Expat. + - Work around "modification of read-only value" bug in perl 5.004 + - Enno Derksen reported that the Doctype handler + wasn't being called when ParseParamEnt was set. + - Now using Version 19990728 of expat, with local patches. + - Got rid of shadow buffer + o thus fixed the error reported by Ashley Sanders + + o and removed ExpatNB limitations that Peter Billam + noted. + - Vadim Konovalov had a problem compiling + for multi-threading that was fixed by changing Perl_sv_setsv to + sv_setsv. + - Added new Expat method: skip_until(index) + - Backward incompatible change to method xml_escape: to get former + behavior use $xp->xml_escape($string, '>', ...) + - Added utility, canonical, to samples +2.26 Sun Jul 25 19:06:41 EDT 1999 + - Ken Beesley discovered that + declarations in the external subset are not sent to registered + handlers when there is no internal subset. + - Fixed parse_dtd to work when entity values or attribute defaults + are so large that they might be broken across multiple calls to + the default handler. + - For lwp_ext_ent_handler, use URI::URL instead of URI so that old + 5.004 installations will work with it. +2.25 Fri Jul 23 06:23:43 EDT 1999 + - Now using Version 1990709 of expat. No local patches. + - Numerous people reported a SEGV problem when running t/cdata + on various platforms and versions of perl. The problem was + introduced with the setHandlers change. In some cases an + un-initialized value was being returned. + - Added an additional external entity handler, lwp_ext_ent_handler, + that deals with general URIs. It is installed instead of the + "file only" handler if the LWP package is installed. +2.24 Thu Jul 8 23:05:50 EDT 1999 + - KangChan Lee supplied the + EUC-KR encoding map. + - Enno Derksen forwarded reports by Jon Eisenzopf + and Stefaan Onderbeke + about a core dump using XML::DOM. This was due to a bug in the + prolog parsing part of XML::Parser. + - Loic Dachary discovered that changing G_DISCARD to + G_VOID introduced a small memory leak. Changed G_VOID back to + G_DISCARD. + - As suggested by Ben Holzman , the + setHandlers methods of both Parser and Expat now return lists that + consist of type, handler pairs that correspond to the input, but + the handlers returned are the ones that were in effect prior to + the call. + - Now using Version 19990626 of expat with a local patch (provided + by James Clark.) + - Added option ParseParamEnt. When set to a true value, parameter + entities are parsed and the external DTD is read (unless standalone + set to "Yes" in document). +2.23 Mon Apr 26 21:30:28 EDT 1999 + - Fixed a bug in the ExpatNB class reported by Gabe Beged-Dov + . The ErrorMessage attribute wasn't + being initialized for ExpatNB. This should have been done in + the Expat constructor. + - Applied patch provided by Nathan Kurz to + fix more perl stack manipulation errors in Expat.xs. + - Applied another patch by Nathan to change perl_call_sv flag + from G_DISCARD to G_VOID for callbacks, which helps performance. + - Murata Makoto reported a + problem on Win32 platforms that only showed up when UTF-16 was + being used. The needed call to binmode was added to the parsefile + methods. + - Added documentation for release method that was added in release + 2.20 to Expat pod. (Point raised by ) + - Now using Version 19990425 of expat. No local patches. + - Added specified_attr method and made ineffective the is_defaulted + method. +2.22 Sun Apr 4 11:47:25 EDT 1999 + - Loic Dachary reported a core dump with a small + file with a comment that wasn't properly closed. Fixed in expat + by updating positionPtr properly in final call of XML_Parse. + (Reported to & acknowledged by James Clark.) + - Made more fixes to Expat.xs position calculation. + - Loic Dachary provided patches for fixing a + memory growth problem with large documents. (Garbage collection + wasn't happening frequently enough.) + - As suggested by Gabe Beged-Dov , added + a non-blocking parse mechanism: + - Added parse_start method to XML::Parser, which returns a + XML::Parser::ExpatNB object. + - Added XML::Parser::ExpatNB class, which is a subclass of + Expat and has the additional methods parse_more & parse_done + - Made some performance tweaks as suggested by performance thread + on perl-xml discussion list. [With negligible results] + - Tried to clarify Tree style structure in Parser pod +2.21 Sun Mar 21 17:42:04 EST 1999 + - Warren Vik provided patches for a bug + introduced with the is_defaulted method. It manifested itself + by bogusly reporting duplicate attributes. + - Now using latest expat from ftp://ftp.jclark.com/pub/test/expat.zip, + Version 19990307. (Plus any patches in Expat/expat.patches.) + - As suggested by Tim Bray, added an xml_escape method to + Expat. + - Murray Nesbitt had build problems + on Win32 that were solved by swapping 2 include files in + Expat.xs + - Added following Expat namespace methods: + new_ns_prefixes + expand_ns_prefix + current_ns_prefixes + - Fixed memory handling in recognized_string method to get rid + of "Attempt to free unreferenced scalar" bug. +2.20 Sun Feb 28 15:35:52 EST 1999 + - Fixed miscellaneous bugs in xmlfilter. + - In the default external entity handler, prepend the base only + for relative URLs. + - Chris Nandor provided patches for building + on Macintosh. + - As suggested by Matt Sergeant , + added the finish method to Expat. + - Matt also provided a fix to a bug he discovered in the Streams + style. + - Fixed a parse position bug reported by Enno Derksen + that was affecting both original_string and position_in_context. + - Fixed a gross memory leak reported by David Megginson, + : there was a circular reference to the Expat + object and the internal end handler for context was not freeing + element names after they were removed from the context stack. + - Now using expat Version 19990109 + (Plus any patches in Expat/expat.patches) + - Added is_defaulted method to Expat to tell if an attribute + was defaulted. (Requested by Enno Derksen for XML::DOM.) + - Matt Sergeant reported that + the XML::Parser parse methods weren't propagating array context + to the Final handler. Now they are. + - Fixed more memory leaks (again reported by David Megginson). + The SVs pointing to the handlers weren't being reclaimed when + the callback vector was freed. + - Added the element_index method to Expat. +2.19 Sun Jan 3 11:23:45 EST 1999 + - When the recognized string is long enough, expat uses multiple + calls to reportDefault. Fixed recString handler in Expat.xs to + deal with this properly. + - Added original_string method to Expat. This returns the untranslated + string (i.e. original encoding) that caused current event. + - Alberto Accomazzi sent in more patches + for perl5.005_54 incompatibilities. + - Alberto also fingered a nasty memory bug in Expat.xs that arose + sometimes when you registered a declaration handler but no + default handler. It would give you a "Not a CODE reference" + error in a place that wasn't using any CODE references. + - reported a problem with compiling expat + on a Sun 4 due to non-exsitance of memmove on that OS. Provided + a workaround in Makefile.PL + - Now using expat Version 19981231 from James Clark's test directory. + - Made patch to this version in order to support original_string + (see Expat/expat.patches.) + - Added CdataStart and CdataEnd handlers to expat. +2.18 Sun Dec 27 07:39:23 EST 1998 + - Alberto Accomazzi pointed out that + the DESTROY sub in the new XML::Parser::Encinfo package was + pointing to the wrong package for calling FreeEncoding. + - Tarang Kumar Patel reported + the mis-declaration of an integer as unsigned in the + convert_to_unicode function in Expat.xs. + - Glenn R. Kronschnabl reported a problem + with ExternEnt handlers when using parsefile. Turned out to be + an unmatched ENTER; SAVETMPS pair that screwed up the Perl stack. + - Tom Hughes reported that the fix I put + in for the swith to PL_sv.. names failed with 5.0005_54, since + these became real variables instead of macros. Switched to just + checking the PATCHLEVEL macro. + - Yoshida Masato provided the EUC-JP encodings + (the corresponding XML files are in XML::Encoding 1.01 or later.) + - With the advice of MURATA Makoto , + removed the Shift_JIS encoding and replaced it with 4 variations + he provided. He also provided an explanatory message. + - Added the recognized_string method to Expat, deprecating + default_current. + - Now using expat Version 19981122 from James Clark's test directory + (this fixes another bug with external entity reference handlers) + - Added a default external entity handler that only accesses file: + based URLs. +2.17 Sun Dec 13 17:39:58 EST 1998 + - Replaced uses of malloc, realloc, and free with New, Renew, + and Safefree respectively + - In Expat.pm, fixed methods in_element and within_element to + work correctly with namespaces. + - xmlfilter - Substitute quoted equivalents for special characters + in attribute values. + - position_in_context was off by one line when position was at + the end of line. + - For the context methods in Expat.pm, do the right thing when + the context list is empty. + - Added methods xpcroak and xpcarp to Expat. + - Alberto Accomazzi noted that perl + releases 5.005_5* (the pre 5.006 development versions) won't + accept sv_undef (and related constants) anymore and we have + to switch to PL_sv_... + - Alberto also reported a warning in the newer versions of + IO::Handle about input_record_separator not being treated on + a per-handle basis. + - Fixed bug that Jon Udell reported in + Stream style: Text handler most of the time didn't see proper + context. + - Added XML::Parser::Expat::load_encoding function and support + for external encodings. +2.16 Tue Oct 27 22:27:33 EST 1998 + - Fixed bug reported by Enno Derksen : + Now treats parameter entity declarations correctly. The entity + handler sees the name beginning with '%' if it's a parameter + entity declaration. + - Nigel Hutchison pointed out that stream.t + wasn't portable off Unix systems. Replaced with portable version. + - Fixed bug reported by Enno Derksen : + XML Declaration was firing off both XMLDecl handler *and* Default + handler. + - Added option NoExpand to Expat to turn off expansion of entity + references when a default handler is set. +2.15 Tue Oct 20 14:50:11 EDT 1998 + - In Expat's parse method, account for undefined previous + record separators. + - Simplify a couple of Expat methods. + - Re-ordered Changes entries to put latest changes first. + - In XML::Parser::new, set Handlers if not already set + - New Handler (XMLDecl) for handling XML declarations + - New Handler (Doctype) for handling DOCTYPE declarations + - New Handler (Entity) for handling ENTITY declarations in + the internal subset. + - New Handler (Element) for handling ELEMENT declarations in + the internal subset. + - New Handler (Attlist) for handling ATTLIST declarations in + the internal subset. + - Documented new handlers + - Added t/decl.t to test new handlers +2.14 Sun Oct 11 22:17:15 EDT 1998 + - Always use method calls for streams. + - Use perl's input_record_separator to find delimiter (i.e. each + "line" is an entire XML doc with delimiter appended) + - Deal with line being longer than buffer. +2.13 Thu Oct 8 16:58:39 EDT 1998 + - Fixed a major oops in Expat.xs where I was trying to decrement + a refcnt on an unallocated SV, leading to a segment violation. + (Why did this show up on HPUX but not Linux?) +2.12 Thu Oct 8 00:05:10 EDT 1998 + - Incorporated fix to t/astress.t from (Mike + Fletcher). + - Change to xmlstats from (David + Alan Black) + - Access Handlers_Setters in Expat and Handler_Types in Parser + through object reference (following admonition in perltoot + about class data.) + - Added Stream_Delimiter option to Expat. + - In the parse_stream function in Expat.xs, if we either have a + Stream_Delimiter or if there's no file descriptor, use method + calls instead. For Stream_Delimiter in particular, the function + now uses the getline method so it can check for the delimiter + without consuming stuff past the delimiter from the stream. +2.11 Sun Oct 4 22:15:53 EDT 1998 + - Swapped out local patch for expat and swapped in James Clark's + patch. + - Pass on all Parser attributes (other than those excluded by + Non_Expat_Options) to the instance of Expat created at parse time. + - New method for Expat: generate_ns_name + - Split test.pl into t/*.t and change Makefile.PL so we don't do a + useless descent into Expat subdir for testing. + - Stop the numeric warning for eq_name and namespace method. +2.10 Fri Sep 25 18:36:46 EDT 1998 + - Uses expat Version 19980924 + (with local patch - see Expat/expat/xmlparse/xmlparse.c.diff) + - Use newSVpvn when PERL_VERSION >= 5.005 + - Completed xmlfilter + - Added support for namespace processing: + o Namespaces option to XML::Parser and XML::Parser::Expat + o Two new methods in Expat: + namespace - to return namespace associated with name + eq_name - compare 2 names for equality across namespaces. + - Use expat's new SetDefaultHandlerExpand instead of SetDefaultHandler + so that entity expansion may continue even if the default handler + is set. + - Moved test.pl back up main level and changed to work with XML::Parser + - Added tests for namespaces +2.09 Fri Sep 18 10:33:38 EDT 1998 + - Fixed errors that caused -w to fret in XML::Parser. + - Fixed depth method in XML::Parser::Expat + - There were a few places in Expat.xs where garbage strings may + have been returned due to the expat library giving us zero-length + strings. Fixed by using a local version of newSVpv where length + means length, even when zero. + - The default handler setter in Expat.xs, was inappropriately setting + cbv->dflt_sv when there was a null handler. +2.08 Thu Sep 17 11:47:13 EDT 1998 + - Make XML::Parser higher-level re-usable parser objects. Old object + now becomes XML::Parser::Expat. + - The XML::Parser object now supports the style mechanism very close + to that in the 1.0 version. +2.07 Wed Sep 9 11:03:43 EDT 1998 + - Added some samples (xmlcomments & xmlstats) + - Now requires 5.004 (due to sv_catpvf) + - Changed Makefile.PL to allow automatic manification + - Added a test that reads xml spec (to check buffer boundary errors) +2.06 Tue Sep 1 10:40:41 EDT 1998 + - Fixed the methods current_line, current_byte, and current_column + - Added some tests +2.05 Mon Aug 31 15:29:42 EDT 1998 + - Made Makefile.PL changes suggested by Murray Nesbitt + to support building on Win32 + and for making PPM binaries. + - Added method parse + - Changed parsestring and parsefile to use new parse method + - Deprecated parsestring method + - Improved error handling in the ExternEnt handler +2.04 Wed Aug 26 13:25:01 EDT 1998 + - Uses expat Version 1.0 of August 14, 1998 + - Some document changes + - Changed dist section in Makefile.PL + - Added ExternEnt handler + - Added tests for ExternEnt +2.03 Fri Aug 21 17:19:26 EDT 1998 + - Changed InitEncoding to ProtocolEncoding. Default to none. + Pass null string to expat's ParserCreate when there is no + ProtocolEncoding. + - Fixed bug in parsefile & parsestring where they were referring + to an ErrorContext *method* instead of a field. + - Fixed position_in_context bugs: + -- 'last' in do {} while (); + -- insert newline before pointer when no following newline + in buffer. + - Added some additional tests +2.02 Thu Aug 20 14:05:08 EDT 1998 + - Fixed parsefile problem reported by + "Robert Hanson" , using a modification of + his suggested fix. + - Responded to problem reported by + Bart Schuller + by pre-expanding parts of the XML_UPD macro to avoid confusing + some versions of gcc. + - Changed the constructor to take the option InitEncoding, which + gets passed to the ParserCreate call. When not given, defaults + to UTF-8. + - Added method position_in_context + - Added Constructor option ErrorContext and added reporting of + errors in context. +2.01 Wed Aug 19 11:42:42 EDT 1998 + - Added methods: + default_current, base, current_line, current_column, + current_byte, context + - Added some tests + - parsestring and parsefile now croak if they're re-used + - Filled in some documentation +2.00 Mon Aug 17 12:01:33 EDT 1998 + - repackaged with James Clark's most recent expat + - changed to an API closer to expat +1.00 March 1998 + - Larry Wall's original version diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.bs b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.bs new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.c b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.c new file mode 100644 index 0000000000000000000000000000000000000000..b8cb594b70cb6c2228b1774f348d07c46879901c --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.c @@ -0,0 +1,3023 @@ +/* + * This file was generated automatically by ExtUtils::ParseXS version 3.28 from the + * contents of Expat.xs. Do not edit this file, edit Expat.xs instead. + * + * ANY CHANGES MADE HERE WILL BE LOST! + * + */ + +#line 1 "Expat.xs" +/***************************************************************** +** Expat.xs +** +** Copyright 1998 Larry Wall and Clark Cooper +** All rights reserved. +** +** This program is free software; you can redistribute it and/or +** modify it under the same terms as Perl itself. +** +*/ + +#include + +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#undef convert + +#include "patchlevel.h" +#include "encoding.h" + + +/* Version 5.005_5x (Development version for 5.006) doesn't like sv_... + anymore, but 5.004 doesn't know about PL_sv.. + Don't want to push up required version just for this. */ + +#if PATCHLEVEL < 5 +#define PL_sv_undef sv_undef +#define PL_sv_no sv_no +#define PL_sv_yes sv_yes +#define PL_na na +#endif + +#define BUFSIZE 32768 + +#define NSDELIM '|' + +/* Macro to update handler fields. Used in the various handler setting + XSUBS */ + +#define XMLP_UPD(fld) \ + RETVAL = cbv->fld ? newSVsv(cbv->fld) : &PL_sv_undef;\ + if (cbv->fld) {\ + if (cbv->fld != fld)\ + sv_setsv(cbv->fld, fld);\ + }\ + else\ + cbv->fld = newSVsv(fld) + +/* Macro to push old handler value onto return stack. This is done here + to get around a bug in 5.004 sv_2mortal function. */ + +#define PUSHRET \ + ST(0) = RETVAL;\ + if (RETVAL != &PL_sv_undef && SvREFCNT(RETVAL)) sv_2mortal(RETVAL) + +typedef struct { + SV* self_sv; + XML_Parser p; + + AV* context; + AV* new_prefix_list; + HV *nstab; + AV *nslst; + + unsigned int st_serial; + unsigned int st_serial_stackptr; + unsigned int st_serial_stacksize; + unsigned int * st_serial_stack; + + unsigned int skip_until; + + SV *recstring; + char * delim; + STRLEN delimlen; + + unsigned ns:1; + unsigned no_expand:1; + unsigned parseparam:1; + + /* Callback handlers */ + + SV* start_sv; + SV* end_sv; + SV* char_sv; + SV* proc_sv; + SV* cmnt_sv; + SV* dflt_sv; + + SV* entdcl_sv; + SV* eledcl_sv; + SV* attdcl_sv; + SV* doctyp_sv; + SV* doctypfin_sv; + SV* xmldec_sv; + + SV* unprsd_sv; + SV* notation_sv; + + SV* extent_sv; + SV* extfin_sv; + + SV* startcd_sv; + SV* endcd_sv; +} CallbackVector; + + +static HV* EncodingTable = NULL; + +static XML_Char nsdelim[] = {NSDELIM, '\0'}; + +static char *QuantChar[] = {"", "?", "*", "+"}; + +/* Forward declarations */ + +static void suspend_callbacks(CallbackVector *); +static void resume_callbacks(CallbackVector *); + +#if PATCHLEVEL < 5 && SUBVERSION < 5 + +/* ================================================================ +** This is needed where the length is explicitly given. The expat +** library may sometimes give us zero-length strings. Perl's newSVpv +** interprets a zero length as a directive to do a strlen. This +** function is used when we want to force length to mean length, even +** if zero. +*/ + +static SV * +newSVpvn(char *s, STRLEN len) +{ + register SV *sv; + + sv = newSV(0); + sv_setpvn(sv, s, len); + return sv; +} /* End newSVpvn */ + +#define ERRSV GvSV(errgv) +#endif + +#ifdef SvUTF8_on + +static SV * +newUTF8SVpv(char *s, STRLEN len) { + register SV *sv; + + sv = newSVpv(s, len); + SvUTF8_on(sv); + return sv; +} /* End new UTF8SVpv */ + +static SV * +newUTF8SVpvn(char *s, STRLEN len) { + register SV *sv; + + sv = newSV(0); + sv_setpvn(sv, s, len); + SvUTF8_on(sv); + return sv; +} + +#else /* SvUTF8_on not defined */ + +#define newUTF8SVpv newSVpv +#define newUTF8SVpvn newSVpvn + +#endif + +static void* +mymalloc(size_t size) { +#ifndef LEAKTEST + return safemalloc(size); +#else + return safexmalloc(328,size); +#endif +} + +static void* +myrealloc(void *p, size_t s) { +#ifndef LEAKTEST + return saferealloc(p, s); +#else + return safexrealloc(p, s); +#endif +} + +static void +myfree(void *p) { + Safefree(p); +} + +static XML_Memory_Handling_Suite ms = {mymalloc, myrealloc, myfree}; + +static void +append_error(XML_Parser parser, char * err) +{ + dSP; + CallbackVector * cbv; + SV ** errstr; + + cbv = (CallbackVector*) XML_GetUserData(parser); + errstr = hv_fetch((HV*)SvRV(cbv->self_sv), + "ErrorMessage", 12, 0); + + if (errstr && SvPOK(*errstr)) { + SV ** errctx = hv_fetch((HV*) SvRV(cbv->self_sv), + "ErrorContext", 12, 0); + int dopos = !err && errctx && SvOK(*errctx); + + if (! err) + err = (char *) XML_ErrorString(XML_GetErrorCode(parser)); + + sv_catpvf(*errstr, "\n%s at line %ld, column %ld, byte %ld%s", + err, + (long)XML_GetCurrentLineNumber(parser), + (long)XML_GetCurrentColumnNumber(parser), + (long)XML_GetCurrentByteIndex(parser), + dopos ? ":\n" : ""); + // See https://rt.cpan.org/Ticket/Display.html?id=92030 + // It explains why type conversion is used. + + if (dopos) + { + int count; + + ENTER ; + SAVETMPS ; + PUSHMARK(sp); + XPUSHs(cbv->self_sv); + XPUSHs(*errctx); + PUTBACK ; + + count = perl_call_method("position_in_context", G_SCALAR); + + SPAGAIN ; + + if (count >= 1) { + sv_catsv(*errstr, POPs); + } + + PUTBACK ; + FREETMPS ; + LEAVE ; + } + } +} /* End append_error */ + +static SV * +generate_model(XML_Content *model) { + HV * hash = newHV(); + SV * obj = newRV_noinc((SV *) hash); + + sv_bless(obj, gv_stashpv("XML::Parser::ContentModel", 1)); + + hv_store(hash, "Type", 4, newSViv(model->type), 0); + if (model->quant != XML_CQUANT_NONE) { + hv_store(hash, "Quant", 5, newSVpv(QuantChar[model->quant], 1), 0); + } + + switch(model->type) { + case XML_CTYPE_NAME: + hv_store(hash, "Tag", 3, newUTF8SVpv((char *)model->name, 0), 0); + break; + + case XML_CTYPE_MIXED: + case XML_CTYPE_CHOICE: + case XML_CTYPE_SEQ: + if (model->children && model->numchildren) + { + AV * children = newAV(); + int i; + + for (i = 0; i < model->numchildren; i++) { + av_push(children, generate_model(&model->children[i])); + } + + hv_store(hash, "Children", 8, newRV_noinc((SV *) children), 0); + } + break; + } + + return obj; +} /* End generate_model */ + +static int +parse_stream(XML_Parser parser, SV * ioref) +{ + dSP; + SV * tbuff; + SV * tsiz; + char * linebuff; + STRLEN lblen; + STRLEN br = 0; + int buffsize; + int done = 0; + int ret = 1; + char * msg = NULL; + CallbackVector * cbv; + char *buff = (char *) 0; + + cbv = (CallbackVector*) XML_GetUserData(parser); + + ENTER; + SAVETMPS; + + if (cbv->delim) { + int cnt; + SV * tline; + + PUSHMARK(SP); + XPUSHs(ioref); + PUTBACK ; + + cnt = perl_call_method("getline", G_SCALAR); + + SPAGAIN; + + if (cnt != 1) + croak("getline method call failed"); + + tline = POPs; + + if (! SvOK(tline)) { + lblen = 0; + } + else { + char * chk; + linebuff = SvPV(tline, lblen); + chk = &linebuff[lblen - cbv->delimlen - 1]; + + if (lblen > cbv->delimlen + 1 + && *chk == *cbv->delim + && chk[cbv->delimlen] == '\n' + && strnEQ(++chk, cbv->delim + 1, cbv->delimlen - 1)) + lblen -= cbv->delimlen + 1; + } + + PUTBACK ; + buffsize = lblen; + done = lblen == 0; + } + else { + tbuff = newSV(0); + tsiz = newSViv(BUFSIZE); + buffsize = BUFSIZE; + } + + while (! done) + { + char *buffer = XML_GetBuffer(parser, buffsize); + + if (! buffer) + croak("Ran out of memory for input buffer"); + + SAVETMPS; + + if (cbv->delim) { + Copy(linebuff, buffer, lblen, char); + br = lblen; + done = 1; + } + else { + int cnt; + SV * rdres; + char * tb; + + PUSHMARK(SP); + EXTEND(SP, 3); + PUSHs(ioref); + PUSHs(tbuff); + PUSHs(tsiz); + PUTBACK ; + + cnt = perl_call_method("read", G_SCALAR); + + SPAGAIN ; + + if (cnt != 1) + croak("read method call failed"); + + rdres = POPs; + + if (! SvOK(rdres)) + croak("read error"); + + tb = SvPV(tbuff, br); + if (br > 0) + Copy(tb, buffer, br, char); + else + done = 1; + + PUTBACK ; + } + + ret = XML_ParseBuffer(parser, br, done); + + SPAGAIN; /* resync local SP in case callbacks changed global stack */ + + if (! ret) + break; + + FREETMPS; + } + + if (! ret) + append_error(parser, msg); + + if (! cbv->delim) { + SvREFCNT_dec(tsiz); + SvREFCNT_dec(tbuff); + } + + FREETMPS; + LEAVE; + + return ret; +} /* End parse_stream */ + +static SV * +gen_ns_name(const char * name, HV * ns_table, AV * ns_list) +{ + char *pos = strchr(name, NSDELIM); + SV * ret; + + if (pos && pos > name) + { + SV ** name_ent = hv_fetch(ns_table, (char *) name, + pos - name, TRUE); + ret = newUTF8SVpv(&pos[1], 0); + + if (name_ent) + { + int index; + + if (SvOK(*name_ent)) + { + index = SvIV(*name_ent); + } + else + { + av_push(ns_list, newUTF8SVpv((char *) name, pos - name)); + index = av_len(ns_list); + sv_setiv(*name_ent, (IV) index); + } + + sv_setiv(ret, (IV) index); + SvPOK_on(ret); + } + } + else + ret = newUTF8SVpv((char *) name, 0); + + return ret; +} /* End gen_ns_name */ + +static void +characterData(void *userData, const char *s, int len) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpvn((char*)s,len))); + PUTBACK; + perl_call_sv(cbv->char_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End characterData */ + +static void +startElement(void *userData, const char *name, const char **atts) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + SV ** pcontext; + unsigned do_ns = cbv->ns; + unsigned skipping = 0; + SV ** pnstab; + SV ** pnslst; + SV * elname; + + cbv->st_serial++; + + if (cbv->skip_until) { + skipping = cbv->st_serial < cbv->skip_until; + if (! skipping) { + resume_callbacks(cbv); + cbv->skip_until = 0; + } + } + + if (cbv->st_serial_stackptr >= cbv->st_serial_stacksize) { + unsigned int newsize = cbv->st_serial_stacksize + 512; + + Renew(cbv->st_serial_stack, newsize, unsigned int); + cbv->st_serial_stacksize = newsize; + } + + cbv->st_serial_stack[++cbv->st_serial_stackptr] = cbv->st_serial; + + if (do_ns) + elname = gen_ns_name(name, cbv->nstab, cbv->nslst); + else + elname = newUTF8SVpv((char *)name, 0); + + if (! skipping && SvTRUE(cbv->start_sv)) + { + const char **attlim = atts; + + while (*attlim) + attlim++; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, attlim - atts + 2); + PUSHs(cbv->self_sv); + PUSHs(elname); + while (*atts) + { + SV * attname; + + attname = (do_ns ? gen_ns_name(*atts, cbv->nstab, cbv->nslst) + : newUTF8SVpv((char *) *atts, 0)); + + atts++; + PUSHs(sv_2mortal(attname)); + if (*atts) + PUSHs(sv_2mortal(newUTF8SVpv((char*)*atts++,0))); + } + PUTBACK; + perl_call_sv(cbv->start_sv, G_DISCARD); + + FREETMPS; + LEAVE; + } + + av_push(cbv->context, elname); + + if (cbv->ns) { + av_clear(cbv->new_prefix_list); + } +} /* End startElement */ + +static void +endElement(void *userData, const char *name) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + SV *elname; + + elname = av_pop(cbv->context); + + if (! cbv->st_serial_stackptr) { + croak("endElement: Start tag serial number stack underflow"); + } + + if (! cbv->skip_until && SvTRUE(cbv->end_sv)) + { + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(cbv->self_sv); + PUSHs(elname); + PUTBACK; + perl_call_sv(cbv->end_sv, G_DISCARD); + + FREETMPS; + LEAVE; + } + + cbv->st_serial_stackptr--; + + SvREFCNT_dec(elname); +} /* End endElement */ + +static void +processingInstruction(void *userData, const char *target, const char *data) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 3); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char*)target,0))); + PUSHs(sv_2mortal(newUTF8SVpv((char*)data,0))); + PUTBACK; + perl_call_sv(cbv->proc_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End processingInstruction */ + +static void +commenthandle(void *userData, const char *string) +{ + dSP; + CallbackVector * cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char*) string, 0))); + PUTBACK; + perl_call_sv(cbv->cmnt_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End commenthandler */ + +static void +startCdata(void *userData) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + if (cbv->startcd_sv) { + ENTER; + SAVETMPS; + + PUSHMARK(sp); + XPUSHs(cbv->self_sv); + PUTBACK; + perl_call_sv(cbv->startcd_sv, G_DISCARD); + + FREETMPS; + LEAVE; + } +} /* End startCdata */ + +static void +endCdata(void *userData) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + if (cbv->endcd_sv) { + ENTER; + SAVETMPS; + + PUSHMARK(sp); + XPUSHs(cbv->self_sv); + PUTBACK; + perl_call_sv(cbv->endcd_sv, G_DISCARD); + + FREETMPS; + LEAVE; + } +} /* End endCdata */ + +static void +nsStart(void *userdata, const XML_Char *prefix, const XML_Char *uri){ + dSP; + CallbackVector* cbv = (CallbackVector*) userdata; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 3); + PUSHs(cbv->self_sv); + PUSHs(prefix ? sv_2mortal(newUTF8SVpv((char *)prefix, 0)) : &PL_sv_undef); + PUSHs(uri ? sv_2mortal(newUTF8SVpv((char *)uri, 0)) : &PL_sv_undef); + PUTBACK; + perl_call_method("NamespaceStart", G_DISCARD); + + FREETMPS; + LEAVE; +} /* End nsStart */ + +static void +nsEnd(void *userdata, const XML_Char *prefix) { + dSP; + CallbackVector* cbv = (CallbackVector*) userdata; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(cbv->self_sv); + PUSHs(prefix ? sv_2mortal(newUTF8SVpv((char *)prefix, 0)) : &PL_sv_undef); + PUTBACK; + perl_call_method("NamespaceEnd", G_DISCARD); + + FREETMPS; + LEAVE; +} /* End nsEnd */ + +static void +defaulthandle(void *userData, const char *string, int len) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpvn((char*)string, len))); + PUTBACK; + perl_call_sv(cbv->dflt_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End defaulthandle */ + +static void +elementDecl(void *data, + const char *name, + XML_Content *model) { + dSP; + CallbackVector *cbv = (CallbackVector*) data; + SV *cmod; + + ENTER; + SAVETMPS; + + + cmod = generate_model(model); + + Safefree(model); + PUSHMARK(sp); + EXTEND(sp, 3); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char *)name, 0))); + PUSHs(sv_2mortal(cmod)); + PUTBACK; + perl_call_sv(cbv->eledcl_sv, G_DISCARD); + FREETMPS; + LEAVE; + +} /* End elementDecl */ + +static void +attributeDecl(void *data, + const char * elname, + const char * attname, + const char * att_type, + const char * dflt, + int reqorfix) { + dSP; + CallbackVector *cbv = (CallbackVector*) data; + SV * dfltsv; + + if (dflt) { + dfltsv = newUTF8SVpv("'", 1); + sv_catpv(dfltsv, (char *) dflt); + sv_catpv(dfltsv, "'"); + } + else { + dfltsv = newUTF8SVpv(reqorfix ? "#REQUIRED" : "#IMPLIED", 0); + } + + ENTER; + SAVETMPS; + PUSHMARK(sp); + EXTEND(sp, 5); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char *)elname, 0))); + PUSHs(sv_2mortal(newUTF8SVpv((char *)attname, 0))); + PUSHs(sv_2mortal(newUTF8SVpv((char *)att_type, 0))); + PUSHs(sv_2mortal(dfltsv)); + if (dflt && reqorfix) + XPUSHs(&PL_sv_yes); + PUTBACK; + perl_call_sv(cbv->attdcl_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End attributeDecl */ + +static void +entityDecl(void *data, + const char *name, + int isparam, + const char *value, + int vlen, + const char *base, + const char *sysid, + const char *pubid, + const char *notation) { + dSP; + CallbackVector *cbv = (CallbackVector*) data; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 6); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char*)name, 0))); + PUSHs(value ? sv_2mortal(newUTF8SVpvn((char*)value, vlen)) : &PL_sv_undef); + PUSHs(sysid ? sv_2mortal(newUTF8SVpv((char *)sysid, 0)) : &PL_sv_undef); + PUSHs(pubid ? sv_2mortal(newUTF8SVpv((char *)pubid, 0)) : &PL_sv_undef); + PUSHs(notation ? sv_2mortal(newUTF8SVpv((char *)notation, 0)) : &PL_sv_undef); + if (isparam) + XPUSHs(&PL_sv_yes); + PUTBACK; + perl_call_sv(cbv->entdcl_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End entityDecl */ + +static void +doctypeStart(void *userData, + const char* name, + const char* sysid, + const char* pubid, + int hasinternal) { + dSP; + CallbackVector *cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 5); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char*)name, 0))); + PUSHs(sysid ? sv_2mortal(newUTF8SVpv((char*)sysid, 0)) : &PL_sv_undef); + PUSHs(pubid ? sv_2mortal(newUTF8SVpv((char*)pubid, 0)) : &PL_sv_undef); + PUSHs(hasinternal ? &PL_sv_yes : &PL_sv_no); + PUTBACK; + perl_call_sv(cbv->doctyp_sv, G_DISCARD); + FREETMPS; + LEAVE; +} /* End doctypeStart */ + +static void +doctypeEnd(void *userData) { + dSP; + CallbackVector *cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 1); + PUSHs(cbv->self_sv); + PUTBACK; + perl_call_sv(cbv->doctypfin_sv, G_DISCARD); + FREETMPS; + LEAVE; +} /* End doctypeEnd */ + +static void +xmlDecl(void *userData, + const char *version, + const char *encoding, + int standalone) { + dSP; + CallbackVector *cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 4); + PUSHs(cbv->self_sv); + PUSHs(version ? sv_2mortal(newUTF8SVpv((char *)version, 0)) + : &PL_sv_undef); + PUSHs(encoding ? sv_2mortal(newUTF8SVpv((char *)encoding, 0)) + : &PL_sv_undef); + PUSHs(standalone == -1 ? &PL_sv_undef + : (standalone ? &PL_sv_yes : &PL_sv_no)); + PUTBACK; + perl_call_sv(cbv->xmldec_sv, G_DISCARD); + FREETMPS; + LEAVE; +} /* End xmlDecl */ + +static void +unparsedEntityDecl(void *userData, + const char* entity, + const char* base, + const char* sysid, + const char* pubid, + const char* notation) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 6); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char*) entity, 0))); + PUSHs(base ? sv_2mortal(newUTF8SVpv((char*) base, 0)) : &PL_sv_undef); + PUSHs(sv_2mortal(newUTF8SVpv((char*) sysid, 0))); + PUSHs(pubid ? sv_2mortal(newUTF8SVpv((char*) pubid, 0)) : &PL_sv_undef); + PUSHs(sv_2mortal(newUTF8SVpv((char*) notation, 0))); + PUTBACK; + perl_call_sv(cbv->unprsd_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End unparsedEntityDecl */ + +static void +notationDecl(void *userData, + const char *name, + const char *base, + const char *sysid, + const char *pubid) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + PUSHMARK(sp); + XPUSHs(cbv->self_sv); + XPUSHs(sv_2mortal(newUTF8SVpv((char*) name, 0))); + if (base) + { + XPUSHs(sv_2mortal(newUTF8SVpv((char *) base, 0))); + } + else if (sysid || pubid) + { + XPUSHs(&PL_sv_undef); + } + + if (sysid) + { + XPUSHs(sv_2mortal(newUTF8SVpv((char *) sysid, 0))); + } + else if (pubid) + { + XPUSHs(&PL_sv_undef); + } + + if (pubid) + XPUSHs(sv_2mortal(newUTF8SVpv((char *) pubid, 0))); + + PUTBACK; + perl_call_sv(cbv->notation_sv, G_DISCARD); +} /* End notationDecl */ + +static int +externalEntityRef(XML_Parser parser, + const char* open, + const char* base, + const char* sysid, + const char* pubid) +{ + dSP; +#if defined(USE_THREADS) && PATCHLEVEL==6 + dTHX; +#endif + + int count; + int ret = 0; + int parse_done = 0; + + CallbackVector* cbv = (CallbackVector*) XML_GetUserData(parser); + + if (! cbv->extent_sv) + return 0; + + ENTER ; + SAVETMPS ; + PUSHMARK(sp); + EXTEND(sp, pubid ? 4 : 3); + PUSHs(cbv->self_sv); + PUSHs(base ? sv_2mortal(newUTF8SVpv((char*) base, 0)) : &PL_sv_undef); + PUSHs(sv_2mortal(newSVpv((char*) sysid, 0))); + if (pubid) + PUSHs(sv_2mortal(newUTF8SVpv((char*) pubid, 0))); + PUTBACK ; + count = perl_call_sv(cbv->extent_sv, G_SCALAR); + + SPAGAIN ; + + if (count >= 1) { + SV * result = POPs; + int type; + + if (result && (type = SvTYPE(result)) > 0) { + SV **pval = hv_fetch((HV*) SvRV(cbv->self_sv), "Parser", 6, 0); + + if (! pval || ! SvIOK(*pval)) + append_error(parser, "Can't find parser entry in XML::Parser object"); + else { + XML_Parser entpar; + char *errmsg = (char *) 0; + + entpar = XML_ExternalEntityParserCreate(parser, open, 0); + + XML_SetBase(entpar, XML_GetBase(parser)); + + sv_setiv(*pval, (IV) entpar); + + cbv->p = entpar; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(*pval); + PUSHs(result); + PUTBACK; + count = perl_call_pv("XML::Parser::Expat::Do_External_Parse", + G_SCALAR | G_EVAL); + SPAGAIN; + + if (SvTRUE(ERRSV)) { + char *hold; + STRLEN len; + + POPs; + hold = SvPV(ERRSV, len); + New(326, errmsg, len + 1, char); + if (len) + Copy(hold, errmsg, len, char); + goto Extparse_Cleanup; + } + + if (count > 0) + ret = POPi; + + parse_done = 1; + + Extparse_Cleanup: + cbv->p = parser; + sv_setiv(*pval, (IV) parser); + XML_ParserFree(entpar); + + if (cbv->extfin_sv) { + PUSHMARK(sp); + PUSHs(cbv->self_sv); + PUTBACK; + perl_call_sv(cbv->extfin_sv, G_DISCARD); + SPAGAIN; + } + + if (SvTRUE(ERRSV)) + append_error(parser, SvPV_nolen(ERRSV)); + } + } + } + + if (! ret && ! parse_done) + append_error(parser, "Handler couldn't resolve external entity"); + + PUTBACK ; + FREETMPS ; + LEAVE ; + + return ret; +} /* End externalEntityRef */ + +/*================================================================ +** This is the function that expat calls to convert multi-byte sequences +** for external encodings. Each byte in the sequence is used to index +** into the current map to either set the next map or, in the case of +** the final byte, to get the corresponding Unicode scalar, which is +** returned. +*/ + +static int +convert_to_unicode(void *data, const char *seq) { + Encinfo *enc = (Encinfo *) data; + PrefixMap *curpfx; + int count; + int index = 0; + + for (count = 0; count < 4; count++) { + unsigned char byte = (unsigned char) seq[count]; + unsigned char bndx; + unsigned char bmsk; + int offset; + + curpfx = &enc->prefixes[index]; + offset = ((int) byte) - curpfx->min; + if (offset < 0) + break; + if (offset >= curpfx->len && curpfx->len != 0) + break; + + bndx = byte >> 3; + bmsk = 1 << (byte & 0x7); + + if (curpfx->ispfx[bndx] & bmsk) { + index = enc->bytemap[curpfx->bmap_start + offset]; + } + else if (curpfx->ischar[bndx] & bmsk) { + return enc->bytemap[curpfx->bmap_start + offset]; + } + else + break; + } + + return -1; +} /* End convert_to_unicode */ + +static int +unknownEncoding(void *unused, const char *name, XML_Encoding *info) +{ + SV ** encinfptr; + Encinfo *enc; + int namelen; + int i; + char buff[42]; + + namelen = strlen(name); + if (namelen > 40) + return 0; + + /* Make uppercase */ + for (i = 0; i < namelen; i++) { + char c = name[i]; + if (c >= 'a' && c <= 'z') + c -= 'a' - 'A'; + buff[i] = c; + } + + if (! EncodingTable) { + EncodingTable = perl_get_hv("XML::Parser::Expat::Encoding_Table", FALSE); + if (! EncodingTable) + croak("Can't find XML::Parser::Expat::Encoding_Table"); + } + + encinfptr = hv_fetch(EncodingTable, buff, namelen, 0); + + if (! encinfptr || ! SvOK(*encinfptr)) { + /* Not found, so try to autoload */ + dSP; + int count; + + ENTER; + SAVETMPS; + PUSHMARK(sp); + XPUSHs(sv_2mortal(newSVpvn(buff,namelen))); + PUTBACK; + perl_call_pv("XML::Parser::Expat::load_encoding", G_DISCARD); + + encinfptr = hv_fetch(EncodingTable, buff, namelen, 0); + FREETMPS; + LEAVE; + + if (! encinfptr || ! SvOK(*encinfptr)) + return 0; + } + + if (! sv_derived_from(*encinfptr, "XML::Parser::Encinfo")) + croak("Entry in XML::Parser::Expat::Encoding_Table not an Encinfo object"); + + enc = (Encinfo *) SvIV((SV*)SvRV(*encinfptr)); + Copy(enc->firstmap, info->map, 256, int); + info->release = NULL; + if (enc->prefixes_size) { + info->data = (void *) enc; + info->convert = convert_to_unicode; + } + else { + info->data = NULL; + info->convert = NULL; + } + + return 1; +} /* End unknownEncoding */ + + +static void +recString(void *userData, const char *string, int len) +{ + CallbackVector *cbv = (CallbackVector*) userData; + + if (cbv->recstring) { + sv_catpvn(cbv->recstring, (char *) string, len); + } + else { + cbv->recstring = newUTF8SVpvn((char *) string, len); + } +} /* End recString */ + +static void +suspend_callbacks(CallbackVector *cbv) { + if (SvTRUE(cbv->char_sv)) { + XML_SetCharacterDataHandler(cbv->p, + (XML_CharacterDataHandler) 0); + } + + if (SvTRUE(cbv->proc_sv)) { + XML_SetProcessingInstructionHandler(cbv->p, + (XML_ProcessingInstructionHandler) 0); + } + + if (SvTRUE(cbv->cmnt_sv)) { + XML_SetCommentHandler(cbv->p, + (XML_CommentHandler) 0); + } + + if (SvTRUE(cbv->startcd_sv) + || SvTRUE(cbv->endcd_sv)) { + XML_SetCdataSectionHandler(cbv->p, + (XML_StartCdataSectionHandler) 0, + (XML_EndCdataSectionHandler) 0); + } + + if (SvTRUE(cbv->unprsd_sv)) { + XML_SetUnparsedEntityDeclHandler(cbv->p, + (XML_UnparsedEntityDeclHandler) 0); + } + + if (SvTRUE(cbv->notation_sv)) { + XML_SetNotationDeclHandler(cbv->p, + (XML_NotationDeclHandler) 0); + } + + if (SvTRUE(cbv->extent_sv)) { + XML_SetExternalEntityRefHandler(cbv->p, + (XML_ExternalEntityRefHandler) 0); + } + +} /* End suspend_callbacks */ + +static void +resume_callbacks(CallbackVector *cbv) { + if (SvTRUE(cbv->char_sv)) { + XML_SetCharacterDataHandler(cbv->p, characterData); + } + + if (SvTRUE(cbv->proc_sv)) { + XML_SetProcessingInstructionHandler(cbv->p, processingInstruction); + } + + if (SvTRUE(cbv->cmnt_sv)) { + XML_SetCommentHandler(cbv->p, commenthandle); + } + + if (SvTRUE(cbv->startcd_sv) + || SvTRUE(cbv->endcd_sv)) { + XML_SetCdataSectionHandler(cbv->p, startCdata, endCdata); + } + + if (SvTRUE(cbv->unprsd_sv)) { + XML_SetUnparsedEntityDeclHandler(cbv->p, unparsedEntityDecl); + } + + if (SvTRUE(cbv->notation_sv)) { + XML_SetNotationDeclHandler(cbv->p, notationDecl); + } + + if (SvTRUE(cbv->extent_sv)) { + XML_SetExternalEntityRefHandler(cbv->p, externalEntityRef); + } + +} /* End resume_callbacks */ + + +#line 1282 "Expat.c" +#ifndef PERL_UNUSED_VAR +# define PERL_UNUSED_VAR(var) if (0) var = var +#endif + +#ifndef dVAR +# define dVAR dNOOP +#endif + + +/* This stuff is not part of the API! You have been warned. */ +#ifndef PERL_VERSION_DECIMAL +# define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s) +#endif +#ifndef PERL_DECIMAL_VERSION +# define PERL_DECIMAL_VERSION \ + PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION) +#endif +#ifndef PERL_VERSION_GE +# define PERL_VERSION_GE(r,v,s) \ + (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s)) +#endif +#ifndef PERL_VERSION_LE +# define PERL_VERSION_LE(r,v,s) \ + (PERL_DECIMAL_VERSION <= PERL_VERSION_DECIMAL(r,v,s)) +#endif + +/* XS_INTERNAL is the explicit static-linkage variant of the default + * XS macro. + * + * XS_EXTERNAL is the same as XS_INTERNAL except it does not include + * "STATIC", ie. it exports XSUB symbols. You probably don't want that + * for anything but the BOOT XSUB. + * + * See XSUB.h in core! + */ + + +/* TODO: This might be compatible further back than 5.10.0. */ +#if PERL_VERSION_GE(5, 10, 0) && PERL_VERSION_LE(5, 15, 1) +# undef XS_EXTERNAL +# undef XS_INTERNAL +# if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING) +# define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name) +# define XS_INTERNAL(name) STATIC XSPROTO(name) +# endif +# if defined(__SYMBIAN32__) +# define XS_EXTERNAL(name) EXPORT_C XSPROTO(name) +# define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name) +# endif +# ifndef XS_EXTERNAL +# if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus) +# define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__) +# define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__) +# else +# ifdef __cplusplus +# define XS_EXTERNAL(name) extern "C" XSPROTO(name) +# define XS_INTERNAL(name) static XSPROTO(name) +# else +# define XS_EXTERNAL(name) XSPROTO(name) +# define XS_INTERNAL(name) STATIC XSPROTO(name) +# endif +# endif +# endif +#endif + +/* perl >= 5.10.0 && perl <= 5.15.1 */ + + +/* The XS_EXTERNAL macro is used for functions that must not be static + * like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL + * macro defined, the best we can do is assume XS is the same. + * Dito for XS_INTERNAL. + */ +#ifndef XS_EXTERNAL +# define XS_EXTERNAL(name) XS(name) +#endif +#ifndef XS_INTERNAL +# define XS_INTERNAL(name) XS(name) +#endif + +/* Now, finally, after all this mess, we want an ExtUtils::ParseXS + * internal macro that we're free to redefine for varying linkage due + * to the EXPORT_XSUB_SYMBOLS XS keyword. This is internal, use + * XS_EXTERNAL(name) or XS_INTERNAL(name) in your code if you need to! + */ + +#undef XS_EUPXS +#if defined(PERL_EUPXS_ALWAYS_EXPORT) +# define XS_EUPXS(name) XS_EXTERNAL(name) +#else + /* default to internal */ +# define XS_EUPXS(name) XS_INTERNAL(name) +#endif + +#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE +#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params) + +/* prototype to pass -Wmissing-prototypes */ +STATIC void +S_croak_xs_usage(const CV *const cv, const char *const params); + +STATIC void +S_croak_xs_usage(const CV *const cv, const char *const params) +{ + const GV *const gv = CvGV(cv); + + PERL_ARGS_ASSERT_CROAK_XS_USAGE; + + if (gv) { + const char *const gvname = GvNAME(gv); + const HV *const stash = GvSTASH(gv); + const char *const hvname = stash ? HvNAME(stash) : NULL; + + if (hvname) + Perl_croak_nocontext("Usage: %s::%s(%s)", hvname, gvname, params); + else + Perl_croak_nocontext("Usage: %s(%s)", gvname, params); + } else { + /* Pants. I don't think that it should be possible to get here. */ + Perl_croak_nocontext("Usage: CODE(0x%"UVxf")(%s)", PTR2UV(cv), params); + } +} +#undef PERL_ARGS_ASSERT_CROAK_XS_USAGE + +#define croak_xs_usage S_croak_xs_usage + +#endif + +/* NOTE: the prototype of newXSproto() is different in versions of perls, + * so we define a portable version of newXSproto() + */ +#ifdef newXS_flags +#define newXSproto_portable(name, c_impl, file, proto) newXS_flags(name, c_impl, file, proto, 0) +#else +#define newXSproto_portable(name, c_impl, file, proto) (PL_Sv=(SV*)newXS(name, c_impl, file), sv_setpv(PL_Sv, proto), (CV*)PL_Sv) +#endif /* !defined(newXS_flags) */ + +#if PERL_VERSION_LE(5, 21, 5) +# define newXS_deffile(a,b) Perl_newXS(aTHX_ a,b,file) +#else +# define newXS_deffile(a,b) Perl_newXS_deffile(aTHX_ a,b) +#endif + +#line 1426 "Expat.c" + +XS_EUPXS(XS_XML__Parser__Expat_ParserCreate); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_ParserCreate) +{ + dVAR; dXSARGS; + if (items != 3) + croak_xs_usage(cv, "self_sv, enc_sv, namespaces"); + { + SV * self_sv = ST(0) +; + SV * enc_sv = ST(1) +; + int namespaces = (int)SvIV(ST(2)) +; + XML_Parser RETVAL; + dXSTARG; +#line 1280 "Expat.xs" + { + CallbackVector *cbv; + enum XML_ParamEntityParsing pep = XML_PARAM_ENTITY_PARSING_NEVER; + char *enc = (char *) (SvTRUE(enc_sv) ? SvPV_nolen(enc_sv) : 0); + SV ** spp; + + Newz(320, cbv, 1, CallbackVector); + cbv->self_sv = SvREFCNT_inc(self_sv); + Newz(325, cbv->st_serial_stack, 1024, unsigned int); + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "NoExpand", 8, 0); + if (spp && SvTRUE(*spp)) + cbv->no_expand = 1; + + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "Context", 7, 0); + if (! spp || ! *spp || !SvROK(*spp)) + croak("XML::Parser instance missing Context"); + + cbv->context = (AV*) SvRV(*spp); + + cbv->ns = (unsigned) namespaces; + if (namespaces) + { + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "New_Prefixes", 12, 0); + if (! spp || ! *spp || !SvROK(*spp)) + croak("XML::Parser instance missing New_Prefixes"); + + cbv->new_prefix_list = (AV *) SvRV(*spp); + + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "Namespace_Table", + 15, FALSE); + if (! spp || ! *spp || !SvROK(*spp)) + croak("XML::Parser instance missing Namespace_Table"); + + cbv->nstab = (HV *) SvRV(*spp); + + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "Namespace_List", + 14, FALSE); + if (! spp || ! *spp || !SvROK(*spp)) + croak("XML::Parser instance missing Namespace_List"); + + cbv->nslst = (AV *) SvRV(*spp); + + RETVAL = XML_ParserCreate_MM(enc, &ms, nsdelim); + XML_SetNamespaceDeclHandler(RETVAL,nsStart, nsEnd); + } + else + { + RETVAL = XML_ParserCreate_MM(enc, &ms, NULL); + } + + cbv->p = RETVAL; + XML_SetUserData(RETVAL, (void *) cbv); + XML_SetElementHandler(RETVAL, startElement, endElement); + XML_SetUnknownEncodingHandler(RETVAL, unknownEncoding, 0); + + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "ParseParamEnt", + 13, FALSE); + + if (spp && SvTRUE(*spp)) { + pep = XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE; + cbv->parseparam = 1; + } + + XML_SetParamEntityParsing(RETVAL, pep); + } +#line 1509 "Expat.c" + XSprePUSH; PUSHi(PTR2IV(RETVAL)); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_ParserRelease); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_ParserRelease) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; +#line 1352 "Expat.xs" + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + SvREFCNT_dec(cbv->self_sv); + } +#line 1531 "Expat.c" + } + XSRETURN_EMPTY; +} + + +XS_EUPXS(XS_XML__Parser__Expat_ParserFree); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_ParserFree) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; +#line 1362 "Expat.xs" + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + Safefree(cbv->st_serial_stack); + + + /* Clean up any SVs that we have */ + /* (Note that self_sv must already be taken care of + or we couldn't be here */ + + if (cbv->recstring) + SvREFCNT_dec(cbv->recstring); + + if (cbv->start_sv) + SvREFCNT_dec(cbv->start_sv); + + if (cbv->end_sv) + SvREFCNT_dec(cbv->end_sv); + + if (cbv->char_sv) + SvREFCNT_dec(cbv->char_sv); + + if (cbv->proc_sv) + SvREFCNT_dec(cbv->proc_sv); + + if (cbv->cmnt_sv) + SvREFCNT_dec(cbv->cmnt_sv); + + if (cbv->dflt_sv) + SvREFCNT_dec(cbv->dflt_sv); + + if (cbv->entdcl_sv) + SvREFCNT_dec(cbv->entdcl_sv); + + if (cbv->eledcl_sv) + SvREFCNT_dec(cbv->eledcl_sv); + + if (cbv->attdcl_sv) + SvREFCNT_dec(cbv->attdcl_sv); + + if (cbv->doctyp_sv) + SvREFCNT_dec(cbv->doctyp_sv); + + if (cbv->doctypfin_sv) + SvREFCNT_dec(cbv->doctypfin_sv); + + if (cbv->xmldec_sv) + SvREFCNT_dec(cbv->xmldec_sv); + + if (cbv->unprsd_sv) + SvREFCNT_dec(cbv->unprsd_sv); + + if (cbv->notation_sv) + SvREFCNT_dec(cbv->notation_sv); + + if (cbv->extent_sv) + SvREFCNT_dec(cbv->extent_sv); + + if (cbv->extfin_sv) + SvREFCNT_dec(cbv->extfin_sv); + + if (cbv->startcd_sv) + SvREFCNT_dec(cbv->startcd_sv); + + if (cbv->endcd_sv) + SvREFCNT_dec(cbv->endcd_sv); + + /* ================ */ + + Safefree(cbv); + XML_ParserFree(parser); + } +#line 1619 "Expat.c" + } + XSRETURN_EMPTY; +} + + +XS_EUPXS(XS_XML__Parser__Expat_ParseString); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_ParseString) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * sv = ST(1) +; + int RETVAL; + dXSTARG; +#line 1440 "Expat.xs" + { + CallbackVector * cbv; + STRLEN len; + char *s = SvPV(sv, len); + + cbv = (CallbackVector *) XML_GetUserData(parser); + + + RETVAL = XML_Parse(parser, s, len, 1); + SPAGAIN; /* XML_Parse might have changed stack pointer */ + if (! RETVAL) + append_error(parser, NULL); + } + +#line 1653 "Expat.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_ParseStream); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_ParseStream) +{ + dVAR; dXSARGS; + if (items != 3) + croak_xs_usage(cv, "parser, ioref, delim"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * ioref = ST(1) +; + SV * delim = ST(2) +; + int RETVAL; + dXSTARG; +#line 1463 "Expat.xs" + { + SV **delimsv; + CallbackVector * cbv; + + cbv = (CallbackVector *) XML_GetUserData(parser); + if (SvOK(delim)) { + cbv->delim = SvPV(delim, cbv->delimlen); + } + else { + cbv->delim = (char *) 0; + } + + RETVAL = parse_stream(parser, ioref); + SPAGAIN; /* parse_stream might have changed stack pointer */ + } + +#line 1692 "Expat.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_ParsePartial); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_ParsePartial) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * sv = ST(1) +; + int RETVAL; + dXSTARG; +#line 1487 "Expat.xs" + { + STRLEN len; + char *s = SvPV(sv, len); + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + RETVAL = XML_Parse(parser, s, len, 0); + if (! RETVAL) + append_error(parser, NULL); + } + +#line 1723 "Expat.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_ParseDone); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_ParseDone) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + int RETVAL; + dXSTARG; +#line 1505 "Expat.xs" + { + RETVAL = XML_Parse(parser, "", 0, 1); + if (! RETVAL) + append_error(parser, NULL); + } + +#line 1748 "Expat.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetStartElementHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetStartElementHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, start_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * start_sv = ST(1) +; + SV * RETVAL; +#line 1519 "Expat.xs" + { + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + XMLP_UPD(start_sv); + PUSHRET; + } +#line 1773 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetEndElementHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetEndElementHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, end_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * end_sv = ST(1) +; + SV * RETVAL; +#line 1530 "Expat.xs" + { + CallbackVector *cbv = (CallbackVector*) XML_GetUserData(parser); + XMLP_UPD(end_sv); + PUSHRET; + } +#line 1797 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetCharacterDataHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetCharacterDataHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, char_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * char_sv = ST(1) +; + SV * RETVAL; +#line 1541 "Expat.xs" + { + XML_CharacterDataHandler charhndl = (XML_CharacterDataHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(char_sv); + if (SvTRUE(char_sv)) + charhndl = characterData; + + XML_SetCharacterDataHandler(parser, charhndl); + PUSHRET; + } +#line 1827 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetProcessingInstructionHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetProcessingInstructionHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, proc_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * proc_sv = ST(1) +; + SV * RETVAL; +#line 1558 "Expat.xs" + { + XML_ProcessingInstructionHandler prochndl = + (XML_ProcessingInstructionHandler) 0; + CallbackVector* cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(proc_sv); + if (SvTRUE(proc_sv)) + prochndl = processingInstruction; + + XML_SetProcessingInstructionHandler(parser, prochndl); + PUSHRET; + } +#line 1858 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetCommentHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetCommentHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, cmnt_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * cmnt_sv = ST(1) +; + SV * RETVAL; +#line 1576 "Expat.xs" + { + XML_CommentHandler cmnthndl = (XML_CommentHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(cmnt_sv); + if (SvTRUE(cmnt_sv)) + cmnthndl = commenthandle; + + XML_SetCommentHandler(parser, cmnthndl); + PUSHRET; + } +#line 1888 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetDefaultHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetDefaultHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, dflt_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * dflt_sv = ST(1) +; + SV * RETVAL; +#line 1593 "Expat.xs" + { + XML_DefaultHandler dflthndl = (XML_DefaultHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(dflt_sv); + if (SvTRUE(dflt_sv)) + dflthndl = defaulthandle; + + if (cbv->no_expand) + XML_SetDefaultHandler(parser, dflthndl); + else + XML_SetDefaultHandlerExpand(parser, dflthndl); + + PUSHRET; + } +#line 1922 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetUnparsedEntityDeclHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetUnparsedEntityDeclHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, unprsd_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * unprsd_sv = ST(1) +; + SV * RETVAL; +#line 1614 "Expat.xs" + { + XML_UnparsedEntityDeclHandler unprsdhndl = + (XML_UnparsedEntityDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(unprsd_sv); + if (SvTRUE(unprsd_sv)) + unprsdhndl = unparsedEntityDecl; + + XML_SetUnparsedEntityDeclHandler(parser, unprsdhndl); + PUSHRET; + } +#line 1953 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetNotationDeclHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetNotationDeclHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, notation_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * notation_sv = ST(1) +; + SV * RETVAL; +#line 1632 "Expat.xs" + { + XML_NotationDeclHandler nothndlr = (XML_NotationDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(notation_sv); + if (SvTRUE(notation_sv)) + nothndlr = notationDecl; + + XML_SetNotationDeclHandler(parser, nothndlr); + PUSHRET; + } +#line 1983 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetExternalEntityRefHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetExternalEntityRefHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, extent_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * extent_sv = ST(1) +; + SV * RETVAL; +#line 1649 "Expat.xs" + { + XML_ExternalEntityRefHandler exthndlr = + (XML_ExternalEntityRefHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(extent_sv); + if (SvTRUE(extent_sv)) + exthndlr = externalEntityRef; + + XML_SetExternalEntityRefHandler(parser, exthndlr); + PUSHRET; + } +#line 2014 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetExtEntFinishHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetExtEntFinishHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, extfin_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * extfin_sv = ST(1) +; + SV * RETVAL; +#line 1667 "Expat.xs" + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + /* There is no corresponding handler for this in expat. This is + called from the externalEntityRef function above after parsing + the external entity. */ + + XMLP_UPD(extfin_sv); + PUSHRET; + } +#line 2043 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetEntityDeclHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetEntityDeclHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, entdcl_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * entdcl_sv = ST(1) +; + SV * RETVAL; +#line 1684 "Expat.xs" + { + XML_EntityDeclHandler enthndlr = + (XML_EntityDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(entdcl_sv); + if (SvTRUE(entdcl_sv)) + enthndlr = entityDecl; + + XML_SetEntityDeclHandler(parser, enthndlr); + PUSHRET; + } +#line 2074 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetElementDeclHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetElementDeclHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, eledcl_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * eledcl_sv = ST(1) +; + SV * RETVAL; +#line 1702 "Expat.xs" + { + XML_ElementDeclHandler eldeclhndlr = + (XML_ElementDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(eledcl_sv); + if (SvTRUE(eledcl_sv)) + eldeclhndlr = elementDecl; + + XML_SetElementDeclHandler(parser, eldeclhndlr); + PUSHRET; + } +#line 2105 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetAttListDeclHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetAttListDeclHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, attdcl_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * attdcl_sv = ST(1) +; + SV * RETVAL; +#line 1720 "Expat.xs" + { + XML_AttlistDeclHandler attdeclhndlr = + (XML_AttlistDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(attdcl_sv); + if (SvTRUE(attdcl_sv)) + attdeclhndlr = attributeDecl; + + XML_SetAttlistDeclHandler(parser, attdeclhndlr); + PUSHRET; + } +#line 2136 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetDoctypeHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetDoctypeHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, doctyp_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * doctyp_sv = ST(1) +; + SV * RETVAL; +#line 1738 "Expat.xs" + { + XML_StartDoctypeDeclHandler dtsthndlr = + (XML_StartDoctypeDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + int set = 0; + + XMLP_UPD(doctyp_sv); + if (SvTRUE(doctyp_sv)) + dtsthndlr = doctypeStart; + + XML_SetStartDoctypeDeclHandler(parser, dtsthndlr); + PUSHRET; + } +#line 2168 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetEndDoctypeHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetEndDoctypeHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, doctypfin_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * doctypfin_sv = ST(1) +; + SV * RETVAL; +#line 1757 "Expat.xs" + { + XML_EndDoctypeDeclHandler dtendhndlr = + (XML_EndDoctypeDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(doctypfin_sv); + if (SvTRUE(doctypfin_sv)) + dtendhndlr = doctypeEnd; + + XML_SetEndDoctypeDeclHandler(parser, dtendhndlr); + PUSHRET; + } +#line 2199 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetXMLDeclHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetXMLDeclHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, xmldec_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * xmldec_sv = ST(1) +; + SV * RETVAL; +#line 1776 "Expat.xs" + { + XML_XmlDeclHandler xmldechndlr = + (XML_XmlDeclHandler) 0; + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + XMLP_UPD(xmldec_sv); + if (SvTRUE(xmldec_sv)) + xmldechndlr = xmlDecl; + + XML_SetXmlDeclHandler(parser, xmldechndlr); + PUSHRET; + } +#line 2230 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetBase); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetBase) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, base"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * base = ST(1) +; +#line 1795 "Expat.xs" + { + char * b; + + if (! SvOK(base)) { + b = (char *) 0; + } + else { + b = SvPV_nolen(base); + } + + XML_SetBase(parser, b); + } +#line 2260 "Expat.c" + } + XSRETURN_EMPTY; +} + + +XS_EUPXS(XS_XML__Parser__Expat_GetBase); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_GetBase) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * RETVAL; +#line 1813 "Expat.xs" + { + const char *ret = XML_GetBase(parser); + if (ret) { + ST(0) = sv_newmortal(); + sv_setpv(ST(0), ret); + } + else { + ST(0) = &PL_sv_undef; + } + } +#line 2287 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_PositionContext); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_PositionContext) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, lines"); + PERL_UNUSED_VAR(ax); /* -Wall */ + SP -= items; + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + int lines = (int)SvIV(ST(1)) +; +#line 1829 "Expat.xs" + int parsepos; + int size; + const char *pos = XML_GetInputContext(parser, &parsepos, &size); + const char *markbeg; + const char *limit; + const char *markend; + int length, relpos; + int cnt; + +#line 2316 "Expat.c" +#line 1839 "Expat.xs" + if (! pos) + return; + + for (markbeg = &pos[parsepos], cnt = 0; markbeg >= pos; markbeg--) + { + if (*markbeg == '\n') + { + cnt++; + if (cnt > lines) + break; + } + } + + markbeg++; + + relpos = 0; + limit = &pos[size]; + for (markend = &pos[parsepos + 1], cnt = 0; + markend < limit; + markend++) + { + if (*markend == '\n') + { + if (cnt == 0) + relpos = (markend - markbeg) + 1; + cnt++; + if (cnt > lines) + { + markend++; + break; + } + } + } + + length = markend - markbeg; + if (relpos == 0) + relpos = length; + + EXTEND(sp, 2); + PUSHs(sv_2mortal(newSVpvn((char *) markbeg, length))); + PUSHs(sv_2mortal(newSViv(relpos))); +#line 2359 "Expat.c" + PUTBACK; + return; + } +} + + +XS_EUPXS(XS_XML__Parser__Expat_GenerateNSName); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_GenerateNSName) +{ + dVAR; dXSARGS; + if (items != 4) + croak_xs_usage(cv, "name, xml_namespace, table, list"); + { + SV * name = ST(0) +; + SV * xml_namespace = ST(1) +; + SV * table = ST(2) +; + SV * list = ST(3) +; + SV * RETVAL; +#line 1888 "Expat.xs" + { + STRLEN nmlen, nslen; + char * nmstr; + char * nsstr; + char * buff; + char * bp; + char * blim; + + nmstr = SvPV(name, nmlen); + nsstr = SvPV(xml_namespace, nslen); + + /* Form a namespace-name string that looks like expat's */ + New(321, buff, nmlen + nslen + 2, char); + bp = buff; + blim = bp + nslen; + while (bp < blim) + *bp++ = *nsstr++; + *bp++ = NSDELIM; + blim = bp + nmlen; + while (bp < blim) + *bp++ = *nmstr++; + *bp = '\0'; + + RETVAL = gen_ns_name(buff, (HV *) SvRV(table), (AV *) SvRV(list)); + Safefree(buff); + } +#line 2409 "Expat.c" + RETVAL = sv_2mortal(RETVAL); + ST(0) = RETVAL; + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_DefaultCurrent); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_DefaultCurrent) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; +#line 1921 "Expat.xs" + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + XML_DefaultCurrent(parser); + } +#line 2432 "Expat.c" + } + XSRETURN_EMPTY; +} + + +XS_EUPXS(XS_XML__Parser__Expat_RecognizedString); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_RecognizedString) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * RETVAL; +#line 1931 "Expat.xs" + { + XML_DefaultHandler dflthndl = (XML_DefaultHandler) 0; + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + if (cbv->dflt_sv) { + dflthndl = defaulthandle; + } + + if (cbv->recstring) { + sv_setpvn(cbv->recstring, "", 0); + } + + if (cbv->no_expand) + XML_SetDefaultHandler(parser, recString); + else + XML_SetDefaultHandlerExpand(parser, recString); + + XML_DefaultCurrent(parser); + + if (cbv->no_expand) + XML_SetDefaultHandler(parser, dflthndl); + else + XML_SetDefaultHandlerExpand(parser, dflthndl); + + RETVAL = newSVsv(cbv->recstring); + } +#line 2475 "Expat.c" + RETVAL = sv_2mortal(RETVAL); + ST(0) = RETVAL; + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_GetErrorCode); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_GetErrorCode) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + int RETVAL; + dXSTARG; + + RETVAL = XML_GetErrorCode(parser); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_GetCurrentLineNumber); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_GetCurrentLineNumber) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + int RETVAL; + dXSTARG; + + RETVAL = XML_GetCurrentLineNumber(parser); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_GetCurrentColumnNumber); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_GetCurrentColumnNumber) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + int RETVAL; + dXSTARG; + + RETVAL = XML_GetCurrentColumnNumber(parser); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_GetCurrentByteIndex); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_GetCurrentByteIndex) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + long RETVAL; + dXSTARG; + + RETVAL = XML_GetCurrentByteIndex(parser); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_GetSpecifiedAttributeCount); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_GetSpecifiedAttributeCount) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + int RETVAL; + dXSTARG; + + RETVAL = XML_GetSpecifiedAttributeCount(parser); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_ErrorString); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_ErrorString) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "code"); + { + int code = (int)SvIV(ST(0)) +; + char * RETVAL; + dXSTARG; +#line 1985 "Expat.xs" + const char *ret = XML_ErrorString(code); + ST(0) = sv_newmortal(); + sv_setpv((SV*)ST(0), ret); +#line 2593 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_LoadEncoding); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_LoadEncoding) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "data, size"); + { + char * data = (char *)SvPV_nolen(ST(0)) +; + int size = (int)SvIV(ST(1)) +; + SV * RETVAL; +#line 1994 "Expat.xs" + { + Encmap_Header *emh = (Encmap_Header *) data; + unsigned pfxsize, bmsize; + + if (size < sizeof(Encmap_Header) + || ntohl(emh->magic) != ENCMAP_MAGIC) { + RETVAL = &PL_sv_undef; + } + else { + Encinfo *entry; + SV *sv; + PrefixMap *pfx; + unsigned short *bm; + int namelen; + int i; + + pfxsize = ntohs(emh->pfsize); + bmsize = ntohs(emh->bmsize); + + if (size != (sizeof(Encmap_Header) + + pfxsize * sizeof(PrefixMap) + + bmsize * sizeof(unsigned short))) { + RETVAL = &PL_sv_undef; + } + else { + /* Convert to uppercase and get name length */ + + for (i = 0; i < sizeof(emh->name); i++) { + char c = emh->name[i]; + + if (c == (char) 0) + break; + + if (c >= 'a' && c <= 'z') + emh->name[i] -= 'a' - 'A'; + } + namelen = i; + + RETVAL = newSVpvn(emh->name, namelen); + + New(322, entry, 1, Encinfo); + entry->prefixes_size = pfxsize; + entry->bytemap_size = bmsize; + for (i = 0; i < 256; i++) { + entry->firstmap[i] = ntohl(emh->map[i]); + } + + pfx = (PrefixMap *) &data[sizeof(Encmap_Header)]; + bm = (unsigned short *) (((char *) pfx) + + sizeof(PrefixMap) * pfxsize); + + New(323, entry->prefixes, pfxsize, PrefixMap); + New(324, entry->bytemap, bmsize, unsigned short); + + for (i = 0; i < pfxsize; i++, pfx++) { + PrefixMap *dest = &entry->prefixes[i]; + + dest->min = pfx->min; + dest->len = pfx->len; + dest->bmap_start = ntohs(pfx->bmap_start); + Copy(pfx->ispfx, dest->ispfx, + sizeof(pfx->ispfx) + sizeof(pfx->ischar), unsigned char); + } + + for (i = 0; i < bmsize; i++) + entry->bytemap[i] = ntohs(bm[i]); + + sv = newSViv(0); + sv_setref_pv(sv, "XML::Parser::Encinfo", (void *) entry); + + if (! EncodingTable) { + EncodingTable + = perl_get_hv("XML::Parser::Expat::Encoding_Table", + FALSE); + if (! EncodingTable) + croak("Can't find XML::Parser::Expat::Encoding_Table"); + } + + hv_store(EncodingTable, emh->name, namelen, sv, 0); + } + } + } +#line 2694 "Expat.c" + RETVAL = sv_2mortal(RETVAL); + ST(0) = RETVAL; + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_FreeEncoding); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_FreeEncoding) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "enc"); + { + Encinfo * enc; + + if (sv_derived_from(ST(0), "XML::Parser::Encinfo")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + enc = (Encinfo *) tmp; + } + else + croak("enc is not of type XML::Parser::Encinfo") +; +#line 2083 "Expat.xs" + Safefree(enc->bytemap); + Safefree(enc->prefixes); + Safefree(enc); +#line 2722 "Expat.c" + } + XSRETURN_EMPTY; +} + + +XS_EUPXS(XS_XML__Parser__Expat_OriginalString); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_OriginalString) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * RETVAL; +#line 2091 "Expat.xs" + { + int parsepos, size; + const char *buff = XML_GetInputContext(parser, &parsepos, &size); + if (buff) { + RETVAL = newSVpvn((char *) &buff[parsepos], + XML_GetCurrentByteCount(parser)); + } + else { + RETVAL = newSVpv("", 0); + } + } +#line 2750 "Expat.c" + RETVAL = sv_2mortal(RETVAL); + ST(0) = RETVAL; + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetStartCdataHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetStartCdataHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, startcd_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * startcd_sv = ST(1) +; + SV * RETVAL; +#line 2110 "Expat.xs" + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + XML_StartCdataSectionHandler scdhndl = + (XML_StartCdataSectionHandler) 0; + + XMLP_UPD(startcd_sv); + if (SvTRUE(startcd_sv)) + scdhndl = startCdata; + + XML_SetStartCdataSectionHandler(parser, scdhndl); + PUSHRET; + } +#line 2783 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SetEndCdataHandler); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SetEndCdataHandler) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, endcd_sv"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * endcd_sv = ST(1) +; + SV * RETVAL; +#line 2128 "Expat.xs" + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + XML_EndCdataSectionHandler ecdhndl = + (XML_EndCdataSectionHandler) 0; + + XMLP_UPD(endcd_sv); + if (SvTRUE(endcd_sv)) + ecdhndl = endCdata; + + XML_SetEndCdataSectionHandler(parser, ecdhndl); + PUSHRET; + } +#line 2814 "Expat.c" + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_UnsetAllHandlers); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_UnsetAllHandlers) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; +#line 2145 "Expat.xs" + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + suspend_callbacks(cbv); + if (cbv->ns) { + XML_SetNamespaceDeclHandler(cbv->p, + (XML_StartNamespaceDeclHandler) 0, + (XML_EndNamespaceDeclHandler) 0); + } + + XML_SetElementHandler(parser, + (XML_StartElementHandler) 0, + (XML_EndElementHandler) 0); + + XML_SetUnknownEncodingHandler(parser, + (XML_UnknownEncodingHandler) 0, + (void *) 0); + } +#line 2848 "Expat.c" + } + XSRETURN_EMPTY; +} + + +XS_EUPXS(XS_XML__Parser__Expat_ElementIndex); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_ElementIndex) +{ + dVAR; dXSARGS; + if (items != 1) + croak_xs_usage(cv, "parser"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + int RETVAL; + dXSTARG; +#line 2168 "Expat.xs" + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + RETVAL = cbv->st_serial_stack[cbv->st_serial_stackptr]; + } +#line 2870 "Expat.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + + +XS_EUPXS(XS_XML__Parser__Expat_SkipUntil); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_SkipUntil) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, index"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + unsigned int index = (unsigned int)SvUV(ST(1)) +; +#line 2180 "Expat.xs" + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + if (index <= cbv->st_serial) + return; + cbv->skip_until = index; + suspend_callbacks(cbv); + } +#line 2896 "Expat.c" + } + XSRETURN_EMPTY; +} + + +XS_EUPXS(XS_XML__Parser__Expat_Do_External_Parse); /* prototype to pass -Wmissing-prototypes */ +XS_EUPXS(XS_XML__Parser__Expat_Do_External_Parse) +{ + dVAR; dXSARGS; + if (items != 2) + croak_xs_usage(cv, "parser, result"); + { + XML_Parser parser = INT2PTR(XML_Parser,SvIV(ST(0))) +; + SV * result = ST(1) +; + int RETVAL; + dXSTARG; +#line 2193 "Expat.xs" + { + int type; + + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + if (SvROK(result) && SvOBJECT(SvRV(result))) { + RETVAL = parse_stream(parser, result); + } + else if (isGV(result)) { + RETVAL = parse_stream(parser, + sv_2mortal(newRV((SV*) GvIOp(result)))); + } + else if (SvPOK(result)) { + STRLEN eslen; + int pret; + char *entstr = SvPV(result, eslen); + + RETVAL = XML_Parse(parser, entstr, eslen, 1); + } + } +#line 2936 "Expat.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#ifdef __cplusplus +extern "C" +#endif +XS_EXTERNAL(boot_XML__Parser__Expat); /* prototype to pass -Wmissing-prototypes */ +XS_EXTERNAL(boot_XML__Parser__Expat) +{ +#if PERL_VERSION_LE(5, 21, 5) + dVAR; dXSARGS; +#else + dVAR; dXSBOOTARGSXSAPIVERCHK; +#endif +#if (PERL_REVISION == 5 && PERL_VERSION < 9) + char* file = __FILE__; +#else + const char* file = __FILE__; +#endif + + PERL_UNUSED_VAR(file); + + PERL_UNUSED_VAR(cv); /* -W */ + PERL_UNUSED_VAR(items); /* -W */ +#if PERL_VERSION_LE(5, 21, 5) + XS_VERSION_BOOTCHECK; +# ifdef XS_APIVERSION_BOOTCHECK + XS_APIVERSION_BOOTCHECK; +# endif +#endif + + newXS_deffile("XML::Parser::Expat::ParserCreate", XS_XML__Parser__Expat_ParserCreate); + newXS_deffile("XML::Parser::Expat::ParserRelease", XS_XML__Parser__Expat_ParserRelease); + newXS_deffile("XML::Parser::Expat::ParserFree", XS_XML__Parser__Expat_ParserFree); + newXS_deffile("XML::Parser::Expat::ParseString", XS_XML__Parser__Expat_ParseString); + newXS_deffile("XML::Parser::Expat::ParseStream", XS_XML__Parser__Expat_ParseStream); + newXS_deffile("XML::Parser::Expat::ParsePartial", XS_XML__Parser__Expat_ParsePartial); + newXS_deffile("XML::Parser::Expat::ParseDone", XS_XML__Parser__Expat_ParseDone); + newXS_deffile("XML::Parser::Expat::SetStartElementHandler", XS_XML__Parser__Expat_SetStartElementHandler); + newXS_deffile("XML::Parser::Expat::SetEndElementHandler", XS_XML__Parser__Expat_SetEndElementHandler); + newXS_deffile("XML::Parser::Expat::SetCharacterDataHandler", XS_XML__Parser__Expat_SetCharacterDataHandler); + newXS_deffile("XML::Parser::Expat::SetProcessingInstructionHandler", XS_XML__Parser__Expat_SetProcessingInstructionHandler); + newXS_deffile("XML::Parser::Expat::SetCommentHandler", XS_XML__Parser__Expat_SetCommentHandler); + newXS_deffile("XML::Parser::Expat::SetDefaultHandler", XS_XML__Parser__Expat_SetDefaultHandler); + newXS_deffile("XML::Parser::Expat::SetUnparsedEntityDeclHandler", XS_XML__Parser__Expat_SetUnparsedEntityDeclHandler); + newXS_deffile("XML::Parser::Expat::SetNotationDeclHandler", XS_XML__Parser__Expat_SetNotationDeclHandler); + newXS_deffile("XML::Parser::Expat::SetExternalEntityRefHandler", XS_XML__Parser__Expat_SetExternalEntityRefHandler); + newXS_deffile("XML::Parser::Expat::SetExtEntFinishHandler", XS_XML__Parser__Expat_SetExtEntFinishHandler); + newXS_deffile("XML::Parser::Expat::SetEntityDeclHandler", XS_XML__Parser__Expat_SetEntityDeclHandler); + newXS_deffile("XML::Parser::Expat::SetElementDeclHandler", XS_XML__Parser__Expat_SetElementDeclHandler); + newXS_deffile("XML::Parser::Expat::SetAttListDeclHandler", XS_XML__Parser__Expat_SetAttListDeclHandler); + newXS_deffile("XML::Parser::Expat::SetDoctypeHandler", XS_XML__Parser__Expat_SetDoctypeHandler); + newXS_deffile("XML::Parser::Expat::SetEndDoctypeHandler", XS_XML__Parser__Expat_SetEndDoctypeHandler); + newXS_deffile("XML::Parser::Expat::SetXMLDeclHandler", XS_XML__Parser__Expat_SetXMLDeclHandler); + newXS_deffile("XML::Parser::Expat::SetBase", XS_XML__Parser__Expat_SetBase); + newXS_deffile("XML::Parser::Expat::GetBase", XS_XML__Parser__Expat_GetBase); + newXS_deffile("XML::Parser::Expat::PositionContext", XS_XML__Parser__Expat_PositionContext); + newXS_deffile("XML::Parser::Expat::GenerateNSName", XS_XML__Parser__Expat_GenerateNSName); + newXS_deffile("XML::Parser::Expat::DefaultCurrent", XS_XML__Parser__Expat_DefaultCurrent); + newXS_deffile("XML::Parser::Expat::RecognizedString", XS_XML__Parser__Expat_RecognizedString); + newXS_deffile("XML::Parser::Expat::GetErrorCode", XS_XML__Parser__Expat_GetErrorCode); + newXS_deffile("XML::Parser::Expat::GetCurrentLineNumber", XS_XML__Parser__Expat_GetCurrentLineNumber); + newXS_deffile("XML::Parser::Expat::GetCurrentColumnNumber", XS_XML__Parser__Expat_GetCurrentColumnNumber); + newXS_deffile("XML::Parser::Expat::GetCurrentByteIndex", XS_XML__Parser__Expat_GetCurrentByteIndex); + newXS_deffile("XML::Parser::Expat::GetSpecifiedAttributeCount", XS_XML__Parser__Expat_GetSpecifiedAttributeCount); + newXS_deffile("XML::Parser::Expat::ErrorString", XS_XML__Parser__Expat_ErrorString); + newXS_deffile("XML::Parser::Expat::LoadEncoding", XS_XML__Parser__Expat_LoadEncoding); + newXS_deffile("XML::Parser::Expat::FreeEncoding", XS_XML__Parser__Expat_FreeEncoding); + newXS_deffile("XML::Parser::Expat::OriginalString", XS_XML__Parser__Expat_OriginalString); + newXS_deffile("XML::Parser::Expat::SetStartCdataHandler", XS_XML__Parser__Expat_SetStartCdataHandler); + newXS_deffile("XML::Parser::Expat::SetEndCdataHandler", XS_XML__Parser__Expat_SetEndCdataHandler); + newXS_deffile("XML::Parser::Expat::UnsetAllHandlers", XS_XML__Parser__Expat_UnsetAllHandlers); + newXS_deffile("XML::Parser::Expat::ElementIndex", XS_XML__Parser__Expat_ElementIndex); + newXS_deffile("XML::Parser::Expat::SkipUntil", XS_XML__Parser__Expat_SkipUntil); + newXS_deffile("XML::Parser::Expat::Do_External_Parse", XS_XML__Parser__Expat_Do_External_Parse); +#if PERL_VERSION_LE(5, 21, 5) +# if PERL_VERSION_GE(5, 9, 0) + if (PL_unitcheckav) + call_list(PL_scopestack_ix, PL_unitcheckav); +# endif + XSRETURN_YES; +#else + Perl_xs_boot_epilog(aTHX_ ax); +#endif +} + diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.o b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.o new file mode 100644 index 0000000000000000000000000000000000000000..e3fea5654da470684c9a547a800214d8552cfe5b Binary files /dev/null and b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.o differ diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.pm b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.pm new file mode 100644 index 0000000000000000000000000000000000000000..b73709ce4fecd97f42c582fd309356baad04c4e4 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.pm @@ -0,0 +1,1238 @@ +package XML::Parser::Expat; + +require 5.004; + +use strict; +use vars qw($VERSION @ISA %Handler_Setters %Encoding_Table @Encoding_Path + $have_File_Spec); +use Carp; + +require DynaLoader; + +@ISA = qw(DynaLoader); +$VERSION = "2.44"; + +$have_File_Spec = $INC{'File/Spec.pm'} || do 'File/Spec.pm'; + +%Encoding_Table = (); +if ($have_File_Spec) { + @Encoding_Path = (grep(-d $_, + map(File::Spec->catdir($_, qw(XML Parser Encodings)), + @INC)), + File::Spec->curdir); +} +else { + @Encoding_Path = (grep(-d $_, map($_ . '/XML/Parser/Encodings', @INC)), '.'); +} + + +bootstrap XML::Parser::Expat $VERSION; + +%Handler_Setters = ( + Start => \&SetStartElementHandler, + End => \&SetEndElementHandler, + Char => \&SetCharacterDataHandler, + Proc => \&SetProcessingInstructionHandler, + Comment => \&SetCommentHandler, + CdataStart => \&SetStartCdataHandler, + CdataEnd => \&SetEndCdataHandler, + Default => \&SetDefaultHandler, + Unparsed => \&SetUnparsedEntityDeclHandler, + Notation => \&SetNotationDeclHandler, + ExternEnt => \&SetExternalEntityRefHandler, + ExternEntFin => \&SetExtEntFinishHandler, + Entity => \&SetEntityDeclHandler, + Element => \&SetElementDeclHandler, + Attlist => \&SetAttListDeclHandler, + Doctype => \&SetDoctypeHandler, + DoctypeFin => \&SetEndDoctypeHandler, + XMLDecl => \&SetXMLDeclHandler + ); + +sub new { + my ($class, %args) = @_; + my $self = bless \%args, $_[0]; + $args{_State_} = 0; + $args{Context} = []; + $args{Namespaces} ||= 0; + $args{ErrorMessage} ||= ''; + if ($args{Namespaces}) { + $args{Namespace_Table} = {}; + $args{Namespace_List} = [undef]; + $args{Prefix_Table} = {}; + $args{New_Prefixes} = []; + } + $args{_Setters} = \%Handler_Setters; + $args{Parser} = ParserCreate($self, $args{ProtocolEncoding}, + $args{Namespaces}); + $self; +} + +sub load_encoding { + my ($file) = @_; + + $file =~ s!([^/]+)$!\L$1\E!; + $file .= '.enc' unless $file =~ /\.enc$/; + unless ($file =~ m!^/!) { + foreach (@Encoding_Path) { + my $tmp = ($have_File_Spec + ? File::Spec->catfile($_, $file) + : "$_/$file"); + if (-e $tmp) { + $file = $tmp; + last; + } + } + } + + local(*ENC); + open(ENC, $file) or croak("Couldn't open encmap $file:\n$!\n"); + binmode(ENC); + my $data; + my $br = sysread(ENC, $data, -s $file); + croak("Trouble reading $file:\n$!\n") + unless defined($br); + close(ENC); + + my $name = LoadEncoding($data, $br); + croak("$file isn't an encmap file") + unless defined($name); + + $name; +} # End load_encoding + +sub setHandlers { + my ($self, @handler_pairs) = @_; + + croak("Uneven number of arguments to setHandlers method") + if (int(@handler_pairs) & 1); + + my @ret; + + while (@handler_pairs) { + my $type = shift @handler_pairs; + my $handler = shift @handler_pairs; + croak "Handler for $type not a Code ref" + unless (! defined($handler) or ! $handler or ref($handler) eq 'CODE'); + + my $hndl = $self->{_Setters}->{$type}; + + unless (defined($hndl)) { + my @types = sort keys %{$self->{_Setters}}; + croak("Unknown Expat handler type: $type\n Valid types: @types"); + } + + my $old = &$hndl($self->{Parser}, $handler); + push (@ret, $type, $old); + } + + return @ret; +} + +sub xpcroak + { + my ($self, $message) = @_; + + my $eclines = $self->{ErrorContext}; + my $line = GetCurrentLineNumber($_[0]->{Parser}); + $message .= " at line $line"; + $message .= ":\n" . $self->position_in_context($eclines) + if defined($eclines); + croak $message; +} + +sub xpcarp { + my ($self, $message) = @_; + + my $eclines = $self->{ErrorContext}; + my $line = GetCurrentLineNumber($_[0]->{Parser}); + $message .= " at line $line"; + $message .= ":\n" . $self->position_in_context($eclines) + if defined($eclines); + carp $message; +} + +sub default_current { + my $self = shift; + if ($self->{_State_} == 1) { + return DefaultCurrent($self->{Parser}); + } +} + +sub recognized_string { + my $self = shift; + if ($self->{_State_} == 1) { + return RecognizedString($self->{Parser}); + } +} + +sub original_string { + my $self = shift; + if ($self->{_State_} == 1) { + return OriginalString($self->{Parser}); + } +} + +sub current_line { + my $self = shift; + if ($self->{_State_} == 1) { + return GetCurrentLineNumber($self->{Parser}); + } +} + +sub current_column { + my $self = shift; + if ($self->{_State_} == 1) { + return GetCurrentColumnNumber($self->{Parser}); + } +} + +sub current_byte { + my $self = shift; + if ($self->{_State_} == 1) { + return GetCurrentByteIndex($self->{Parser}); + } +} + +sub base { + my ($self, $newbase) = @_; + my $p = $self->{Parser}; + my $oldbase = GetBase($p); + SetBase($p, $newbase) if @_ > 1; + return $oldbase; +} + +sub context { + my $ctx = $_[0]->{Context}; + @$ctx; +} + +sub current_element { + my ($self) = @_; + @{$self->{Context}} ? $self->{Context}->[-1] : undef; +} + +sub in_element { + my ($self, $element) = @_; + @{$self->{Context}} ? $self->eq_name($self->{Context}->[-1], $element) + : undef; +} + +sub within_element { + my ($self, $element) = @_; + my $cnt = 0; + foreach (@{$self->{Context}}) { + $cnt++ if $self->eq_name($_, $element); + } + return $cnt; +} + +sub depth { + my ($self) = @_; + int(@{$self->{Context}}); +} + +sub element_index { + my ($self) = @_; + + if ($self->{_State_} == 1) { + return ElementIndex($self->{Parser}); + } +} + +################ +# Namespace methods + +sub namespace { + my ($self, $name) = @_; + local($^W) = 0; + $self->{Namespace_List}->[int($name)]; +} + +sub eq_name { + my ($self, $nm1, $nm2) = @_; + local($^W) = 0; + + int($nm1) == int($nm2) and $nm1 eq $nm2; +} + +sub generate_ns_name { + my ($self, $name, $namespace) = @_; + + $namespace ? + GenerateNSName($name, $namespace, $self->{Namespace_Table}, + $self->{Namespace_List}) + : $name; +} + +sub new_ns_prefixes { + my ($self) = @_; + if ($self->{Namespaces}) { + return @{$self->{New_Prefixes}}; + } + return (); +} + +sub expand_ns_prefix { + my ($self, $prefix) = @_; + + if ($self->{Namespaces}) { + my $stack = $self->{Prefix_Table}->{$prefix}; + return (defined($stack) and @$stack) ? $stack->[-1] : undef; + } + + return undef; +} + +sub current_ns_prefixes { + my ($self) = @_; + + if ($self->{Namespaces}) { + my %set = %{$self->{Prefix_Table}}; + + if (exists $set{'#default'} and not defined($set{'#default'}->[-1])) { + delete $set{'#default'}; + } + + return keys %set; + } + + return (); +} + + +################################################################ +# Namespace declaration handlers +# + +sub NamespaceStart { + my ($self, $prefix, $uri) = @_; + + $prefix = '#default' unless defined $prefix; + my $stack = $self->{Prefix_Table}->{$prefix}; + + if (defined $stack) { + push(@$stack, $uri); + } + else { + $self->{Prefix_Table}->{$prefix} = [$uri]; + } + + # The New_Prefixes list gets emptied at end of startElement function + # in Expat.xs + + push(@{$self->{New_Prefixes}}, $prefix); +} + +sub NamespaceEnd { + my ($self, $prefix) = @_; + + $prefix = '#default' unless defined $prefix; + + my $stack = $self->{Prefix_Table}->{$prefix}; + if (@$stack > 1) { + pop(@$stack); + } + else { + delete $self->{Prefix_Table}->{$prefix}; + } +} + +################ + +sub specified_attr { + my $self = shift; + + if ($self->{_State_} == 1) { + return GetSpecifiedAttributeCount($self->{Parser}); + } +} + +sub finish { + my ($self) = @_; + if ($self->{_State_} == 1) { + my $parser = $self->{Parser}; + UnsetAllHandlers($parser); + } +} + +sub position_in_context { + my ($self, $lines) = @_; + if ($self->{_State_} == 1) { + my $parser = $self->{Parser}; + my ($string, $linepos) = PositionContext($parser, $lines); + + return '' unless defined($string); + + my $col = GetCurrentColumnNumber($parser); + my $ptr = ('=' x ($col - 1)) . '^' . "\n"; + my $ret; + my $dosplit = $linepos < length($string); + + $string .= "\n" unless $string =~ /\n$/; + + if ($dosplit) { + $ret = substr($string, 0, $linepos) . $ptr + . substr($string, $linepos); + } else { + $ret = $string . $ptr; + } + + return $ret; + } +} + +sub xml_escape { + my $self = shift; + my $text = shift; + + study $text; + $text =~ s/\&/\&/g; + $text =~ s/ 1; + + if ($_ eq '>') { + $text =~ s/>/\>/g; + } + elsif ($_ eq '"') { + $text =~ s/\"/\"/; + } + elsif ($_ eq "'") { + $text =~ s/\'/\'/; + } + else { + my $rep = '&#' . sprintf('x%X', ord($_)) . ';'; + if (/\W/) { + my $ptrn = "\\$_"; + $text =~ s/$ptrn/$rep/g; + } + else { + $text =~ s/$_/$rep/g; + } + } + } + $text; +} + +sub skip_until { + my $self = shift; + if ($self->{_State_} <= 1) { + SkipUntil($self->{Parser}, $_[0]); + } +} + +sub release { + my $self = shift; + ParserRelease($self->{Parser}); +} + +sub DESTROY { + my $self = shift; + ParserFree($self->{Parser}); +} + +sub parse { + my $self = shift; + my $arg = shift; + croak "Parse already in progress (Expat)" if $self->{_State_}; + $self->{_State_} = 1; + my $parser = $self->{Parser}; + my $ioref; + my $result = 0; + + if (defined $arg) { + local *@; + if (ref($arg) and UNIVERSAL::isa($arg, 'IO::Handle')) { + $ioref = $arg; + } elsif ($] < 5.008 and defined tied($arg)) { + require IO::Handle; + $ioref = $arg; + } + else { + require IO::Handle; + eval { + no strict 'refs'; + $ioref = *{$arg}{IO} if defined *{$arg}; + }; + if (ref($ioref) eq 'FileHandle') { + #for perl 5.10.x and possibly earlier, see t/file_open_scalar.t + require FileHandle; + } + } + } + + if (defined($ioref)) { + my $delim = $self->{Stream_Delimiter}; + my $prev_rs; + my $ioclass = ref $ioref; + $ioclass = "IO::Handle" if !length $ioclass; + + $prev_rs = $ioclass->input_record_separator("\n$delim\n") + if defined($delim); + + $result = ParseStream($parser, $ioref, $delim); + + $ioclass->input_record_separator($prev_rs) + if defined($delim); + } else { + $result = ParseString($parser, $arg); + } + + $self->{_State_} = 2; + $result or croak $self->{ErrorMessage}; +} + +sub parsestring { + my $self = shift; + $self->parse(@_); +} + +sub parsefile { + my $self = shift; + croak "Parser has already been used" if $self->{_State_}; + local(*FILE); + open(FILE, $_[0]) or croak "Couldn't open $_[0]:\n$!"; + binmode(FILE); + my $ret = $self->parse(*FILE); + close(FILE); + $ret; +} + +################################################################ +package #hide from PAUSE + XML::Parser::ContentModel; +use overload '""' => \&asString, 'eq' => \&thiseq; + +sub EMPTY () {1} +sub ANY () {2} +sub MIXED () {3} +sub NAME () {4} +sub CHOICE () {5} +sub SEQ () {6} + + +sub isempty { + return $_[0]->{Type} == EMPTY; +} + +sub isany { + return $_[0]->{Type} == ANY; +} + +sub ismixed { + return $_[0]->{Type} == MIXED; +} + +sub isname { + return $_[0]->{Type} == NAME; +} + +sub name { + return $_[0]->{Tag}; +} + +sub ischoice { + return $_[0]->{Type} == CHOICE; +} + +sub isseq { + return $_[0]->{Type} == SEQ; +} + +sub quant { + return $_[0]->{Quant}; +} + +sub children { + my $children = $_[0]->{Children}; + if (defined $children) { + return @$children; + } + return undef; +} + +sub asString { + my ($self) = @_; + my $ret; + + if ($self->{Type} == NAME) { + $ret = $self->{Tag}; + } + elsif ($self->{Type} == EMPTY) { + return "EMPTY"; + } + elsif ($self->{Type} == ANY) { + return "ANY"; + } + elsif ($self->{Type} == MIXED) { + $ret = '(#PCDATA'; + foreach (@{$self->{Children}}) { + $ret .= '|' . $_; + } + $ret .= ')'; + } + else { + my $sep = $self->{Type} == CHOICE ? '|' : ','; + $ret = '(' . join($sep, map { $_->asString } @{$self->{Children}}) . ')'; + } + + $ret .= $self->{Quant} if $self->{Quant}; + return $ret; +} + +sub thiseq { + my $self = shift; + + return $self->asString eq $_[0]; +} + +################################################################ +package #hide from PAUSE + XML::Parser::ExpatNB; + +use vars qw(@ISA); +use Carp; + +@ISA = qw(XML::Parser::Expat); + +sub parse { + my $self = shift; + my $class = ref($self); + croak "parse method not supported in $class"; +} + +sub parsestring { + my $self = shift; + my $class = ref($self); + croak "parsestring method not supported in $class"; +} + +sub parsefile { + my $self = shift; + my $class = ref($self); + croak "parsefile method not supported in $class"; +} + +sub parse_more { + my ($self, $data) = @_; + + $self->{_State_} = 1; + my $ret = XML::Parser::Expat::ParsePartial($self->{Parser}, $data); + + croak $self->{ErrorMessage} unless $ret; +} + +sub parse_done { + my $self = shift; + + my $ret = XML::Parser::Expat::ParseDone($self->{Parser}); + unless ($ret) { + my $msg = $self->{ErrorMessage}; + $self->release; + croak $msg; + } + + $self->{_State_} = 2; + + my $result = $ret; + my @result = (); + my $final = $self->{FinalHandler}; + if (defined $final) { + if (wantarray) { + @result = &$final($self); + } + else { + $result = &$final($self); + } + } + + $self->release; + + return unless defined wantarray; + return wantarray ? @result : $result; +} + +################################################################ + +package #hide from PAUSE + XML::Parser::Encinfo; + +sub DESTROY { + my $self = shift; + XML::Parser::Expat::FreeEncoding($self); +} + +1; + +__END__ + +=head1 NAME + +XML::Parser::Expat - Lowlevel access to James Clark's expat XML parser + +=head1 SYNOPSIS + + use XML::Parser::Expat; + + $parser = XML::Parser::Expat->new; + $parser->setHandlers('Start' => \&sh, + 'End' => \&eh, + 'Char' => \&ch); + open(FOO, '<', 'info.xml') or die "Couldn't open"; + $parser->parse(*FOO); + close(FOO); + # $parser->parse(' here we go '); + + sub sh + { + my ($p, $el, %atts) = @_; + $p->setHandlers('Char' => \&spec) + if ($el eq 'special'); + ... + } + + sub eh + { + my ($p, $el) = @_; + $p->setHandlers('Char' => \&ch) # Special elements won't contain + if ($el eq 'special'); # other special elements + ... + } + +=head1 DESCRIPTION + +This module provides an interface to James Clark's XML parser, expat. As in +expat, a single instance of the parser can only parse one document. Calls +to parsestring after the first for a given instance will die. + +Expat (and XML::Parser::Expat) are event based. As the parser recognizes +parts of the document (say the start or end of an XML element), then any +handlers registered for that type of an event are called with suitable +parameters. + +=head1 METHODS + +=over 4 + +=item new + +This is a class method, the constructor for XML::Parser::Expat. Options are +passed as keyword value pairs. The recognized options are: + +=over 4 + +=item * ProtocolEncoding + +The protocol encoding name. The default is none. The expat built-in +encodings are: C, C, C, and C. +Other encodings may be used if they have encoding maps in one of the +directories in the @Encoding_Path list. Setting the protocol encoding +overrides any encoding in the XML declaration. + +=item * Namespaces + +When this option is given with a true value, then the parser does namespace +processing. By default, namespace processing is turned off. When it is +turned on, the parser consumes I attributes and strips off prefixes +from element and attributes names where those prefixes have a defined +namespace. A name's namespace can be found using the L<"namespace"> method +and two names can be checked for absolute equality with the L<"eq_name"> +method. + +=item * NoExpand + +Normally, the parser will try to expand references to entities defined in +the internal subset. If this option is set to a true value, and a default +handler is also set, then the default handler will be called when an +entity reference is seen in text. This has no effect if a default handler +has not been registered, and it has no effect on the expansion of entity +references inside attribute values. + +=item * Stream_Delimiter + +This option takes a string value. When this string is found alone on a line +while parsing from a stream, then the parse is ended as if it saw an end of +file. The intended use is with a stream of xml documents in a MIME multipart +format. The string should not contain a trailing newline. + +=item * ErrorContext + +When this option is defined, errors are reported in context. The value +of ErrorContext should be the number of lines to show on either side of +the line in which the error occurred. + +=item * ParseParamEnt + +Unless standalone is set to "yes" in the XML declaration, setting this to +a true value allows the external DTD to be read, and parameter entities +to be parsed and expanded. + +=item * Base + +The base to use for relative pathnames or URLs. This can also be done by +using the base method. + +=back + +=item setHandlers(TYPE, HANDLER [, TYPE, HANDLER [...]]) + +This method registers handlers for the various events. If no handlers are +registered, then a call to parsestring or parsefile will only determine if +the corresponding XML document is well formed (by returning without error.) +This may be called from within a handler, after the parse has started. + +Setting a handler to something that evaluates to false unsets that +handler. + +This method returns a list of type, handler pairs corresponding to the +input. The handlers returned are the ones that were in effect before the +call to setHandlers. + +The recognized events and the parameters passed to the corresponding +handlers are: + +=over 4 + +=item * Start (Parser, Element [, Attr, Val [,...]]) + +This event is generated when an XML start tag is recognized. Parser is +an XML::Parser::Expat instance. Element is the name of the XML element that +is opened with the start tag. The Attr & Val pairs are generated for each +attribute in the start tag. + +=item * End (Parser, Element) + +This event is generated when an XML end tag is recognized. Note that +an XML empty tag () generates both a start and an end event. + +There is always a lower level start and end handler installed that wrap +the corresponding callbacks. This is to handle the context mechanism. +A consequence of this is that the default handler (see below) will not +see a start tag or end tag unless the default_current method is called. + +=item * Char (Parser, String) + +This event is generated when non-markup is recognized. The non-markup +sequence of characters is in String. A single non-markup sequence of +characters may generate multiple calls to this handler. Whatever the +encoding of the string in the original document, this is given to the +handler in UTF-8. + +=item * Proc (Parser, Target, Data) + +This event is generated when a processing instruction is recognized. + +=item * Comment (Parser, String) + +This event is generated when a comment is recognized. + +=item * CdataStart (Parser) + +This is called at the start of a CDATA section. + +=item * CdataEnd (Parser) + +This is called at the end of a CDATA section. + +=item * Default (Parser, String) + +This is called for any characters that don't have a registered handler. +This includes both characters that are part of markup for which no +events are generated (markup declarations) and characters that +could generate events, but for which no handler has been registered. + +Whatever the encoding in the original document, the string is returned to +the handler in UTF-8. + +=item * Unparsed (Parser, Entity, Base, Sysid, Pubid, Notation) + +This is called for a declaration of an unparsed entity. Entity is the name +of the entity. Base is the base to be used for resolving a relative URI. +Sysid is the system id. Pubid is the public id. Notation is the notation +name. Base and Pubid may be undefined. + +=item * Notation (Parser, Notation, Base, Sysid, Pubid) + +This is called for a declaration of notation. Notation is the notation name. +Base is the base to be used for resolving a relative URI. Sysid is the system +id. Pubid is the public id. Base, Sysid, and Pubid may all be undefined. + +=item * ExternEnt (Parser, Base, Sysid, Pubid) + +This is called when an external entity is referenced. Base is the base to be +used for resolving a relative URI. Sysid is the system id. Pubid is the public +id. Base, and Pubid may be undefined. + +This handler should either return a string, which represents the contents of +the external entity, or return an open filehandle that can be read to obtain +the contents of the external entity, or return undef, which indicates the +external entity couldn't be found and will generate a parse error. + +If an open filehandle is returned, it must be returned as either a glob +(*FOO) or as a reference to a glob (e.g. an instance of IO::Handle). + +=item * ExternEntFin (Parser) + +This is called after an external entity has been parsed. It allows +applications to perform cleanup on actions performed in the above +ExternEnt handler. + +=item * Entity (Parser, Name, Val, Sysid, Pubid, Ndata, IsParam) + +This is called when an entity is declared. For internal entities, the Val +parameter will contain the value and the remaining three parameters will +be undefined. For external entities, the Val parameter +will be undefined, the Sysid parameter will have the system id, the Pubid +parameter will have the public id if it was provided (it will be undefined +otherwise), the Ndata parameter will contain the notation for unparsed +entities. If this is a parameter entity declaration, then the IsParam +parameter is true. + +Note that this handler and the Unparsed handler above overlap. If both are +set, then this handler will not be called for unparsed entities. + +=item * Element (Parser, Name, Model) + +The element handler is called when an element declaration is found. Name is +the element name, and Model is the content model as an +XML::Parser::ContentModel object. See L<"XML::Parser::ContentModel Methods"> +for methods available for this class. + +=item * Attlist (Parser, Elname, Attname, Type, Default, Fixed) + +This handler is called for each attribute in an ATTLIST declaration. +So an ATTLIST declaration that has multiple attributes +will generate multiple calls to this handler. The Elname parameter is the +name of the element with which the attribute is being associated. The Attname +parameter is the name of the attribute. Type is the attribute type, given as +a string. Default is the default value, which will either be "#REQUIRED", +"#IMPLIED" or a quoted string (i.e. the returned string will begin and end +with a quote character). If Fixed is true, then this is a fixed attribute. + +=item * Doctype (Parser, Name, Sysid, Pubid, Internal) + +This handler is called for DOCTYPE declarations. Name is the document type +name. Sysid is the system id of the document type, if it was provided, +otherwise it's undefined. Pubid is the public id of the document type, +which will be undefined if no public id was given. Internal will be +true or false, indicating whether or not the doctype declaration contains +an internal subset. + +=item * DoctypeFin (Parser) + +This handler is called after parsing of the DOCTYPE declaration has finished, +including any internal or external DTD declarations. + +=item * XMLDecl (Parser, Version, Encoding, Standalone) + +This handler is called for XML declarations. Version is a string containing +the version. Encoding is either undefined or contains an encoding string. +Standalone is either undefined, or true or false. Undefined indicates +that no standalone parameter was given in the XML declaration. True or +false indicates "yes" or "no" respectively. + +=back + +=item namespace(name) + +Return the URI of the namespace that the name belongs to. If the name doesn't +belong to any namespace, an undef is returned. This is only valid on names +received through the Start or End handlers from a single document, or through +a call to the generate_ns_name method. In other words, don't use names +generated from one instance of XML::Parser::Expat with other instances. + +=item eq_name(name1, name2) + +Return true if name1 and name2 are identical (i.e. same name and from +the same namespace.) This is only meaningful if both names were obtained +through the Start or End handlers from a single document, or through +a call to the generate_ns_name method. + +=item generate_ns_name(name, namespace) + +Return a name, associated with a given namespace, good for using with the +above 2 methods. The namespace argument should be the namespace URI, not +a prefix. + +=item new_ns_prefixes + +When called from a start tag handler, returns namespace prefixes declared +with this start tag. If called elsewhere (or if there were no namespace +prefixes declared), it returns an empty list. Setting of the default +namespace is indicated with '#default' as a prefix. + +=item expand_ns_prefix(prefix) + +Return the uri to which the given prefix is currently bound. Returns +undef if the prefix isn't currently bound. Use '#default' to find the +current binding of the default namespace (if any). + +=item current_ns_prefixes + +Return a list of currently bound namespace prefixes. The order of the +the prefixes in the list has no meaning. If the default namespace is +currently bound, '#default' appears in the list. + +=item recognized_string + +Returns the string from the document that was recognized in order to call +the current handler. For instance, when called from a start handler, it +will give us the start-tag string. The string is encoded in UTF-8. +This method doesn't return a meaningful string inside declaration handlers. + +=item original_string + +Returns the verbatim string from the document that was recognized in +order to call the current handler. The string is in the original document +encoding. This method doesn't return a meaningful string inside declaration +handlers. + +=item default_current + +When called from a handler, causes the sequence of characters that generated +the corresponding event to be sent to the default handler (if one is +registered). Use of this method is deprecated in favor the recognized_string +method, which you can use without installing a default handler. This +method doesn't deliver a meaningful string to the default handler when +called from inside declaration handlers. + +=item xpcroak(message) + +Concatenate onto the given message the current line number within the +XML document plus the message implied by ErrorContext. Then croak with +the formed message. + +=item xpcarp(message) + +Concatenate onto the given message the current line number within the +XML document plus the message implied by ErrorContext. Then carp with +the formed message. + +=item current_line + +Returns the line number of the current position of the parse. + +=item current_column + +Returns the column number of the current position of the parse. + +=item current_byte + +Returns the current position of the parse. + +=item base([NEWBASE]); + +Returns the current value of the base for resolving relative URIs. If +NEWBASE is supplied, changes the base to that value. + +=item context + +Returns a list of element names that represent open elements, with the +last one being the innermost. Inside start and end tag handlers, this +will be the tag of the parent element. + +=item current_element + +Returns the name of the innermost currently opened element. Inside +start or end handlers, returns the parent of the element associated +with those tags. + +=item in_element(NAME) + +Returns true if NAME is equal to the name of the innermost currently opened +element. If namespace processing is being used and you want to check +against a name that may be in a namespace, then use the generate_ns_name +method to create the NAME argument. + +=item within_element(NAME) + +Returns the number of times the given name appears in the context list. +If namespace processing is being used and you want to check +against a name that may be in a namespace, then use the generate_ns_name +method to create the NAME argument. + +=item depth + +Returns the size of the context list. + +=item element_index + +Returns an integer that is the depth-first visit order of the current +element. This will be zero outside of the root element. For example, +this will return 1 when called from the start handler for the root element +start tag. + +=item skip_until(INDEX) + +INDEX is an integer that represents an element index. When this method +is called, all handlers are suspended until the start tag for an element +that has an index number equal to INDEX is seen. If a start handler has +been set, then this is the first tag that the start handler will see +after skip_until has been called. + + +=item position_in_context(LINES) + +Returns a string that shows the current parse position. LINES should be +an integer >= 0 that represents the number of lines on either side of the +current parse line to place into the returned string. + +=item xml_escape(TEXT [, CHAR [, CHAR ...]]) + +Returns TEXT with markup characters turned into character entities. Any +additional characters provided as arguments are also turned into character +references where found in TEXT. + +=item parse (SOURCE) + +The SOURCE parameter should either be a string containing the whole XML +document, or it should be an open IO::Handle. Only a single document +may be parsed for a given instance of XML::Parser::Expat, so this will croak +if it's been called previously for this instance. + +=item parsestring(XML_DOC_STRING) + +Parses the given string as an XML document. Only a single document may be +parsed for a given instance of XML::Parser::Expat, so this will die if either +parsestring or parsefile has been called for this instance previously. + +This method is deprecated in favor of the parse method. + +=item parsefile(FILENAME) + +Parses the XML document in the given file. Will die if parsestring or +parsefile has been called previously for this instance. + +=item is_defaulted(ATTNAME) + +NO LONGER WORKS. To find out if an attribute is defaulted please use +the specified_attr method. + +=item specified_attr + +When the start handler receives lists of attributes and values, the +non-defaulted (i.e. explicitly specified) attributes occur in the list +first. This method returns the number of specified items in the list. +So if this number is equal to the length of the list, there were no +defaulted values. Otherwise the number points to the index of the +first defaulted attribute name. + +=item finish + +Unsets all handlers (including internal ones that set context), but expat +continues parsing to the end of the document or until it finds an error. +It should finish up a lot faster than with the handlers set. + +=item release + +There are data structures used by XML::Parser::Expat that have circular +references. This means that these structures will never be garbage +collected unless these references are explicitly broken. Calling this +method breaks those references (and makes the instance unusable.) + +Normally, higher level calls handle this for you, but if you are using +XML::Parser::Expat directly, then it's your responsibility to call it. + +=back + +=head2 XML::Parser::ContentModel Methods + +The element declaration handlers are passed objects of this class as the +content model of the element declaration. They also represent content +particles, components of a content model. + +When referred to as a string, these objects are automagicly converted to a +string representation of the model (or content particle). + +=over 4 + +=item isempty + +This method returns true if the object is "EMPTY", false otherwise. + +=item isany + +This method returns true if the object is "ANY", false otherwise. + +=item ismixed + +This method returns true if the object is "(#PCDATA)" or "(#PCDATA|...)*", +false otherwise. + +=item isname + +This method returns if the object is an element name. + +=item ischoice + +This method returns true if the object is a choice of content particles. + + +=item isseq + +This method returns true if the object is a sequence of content particles. + +=item quant + +This method returns undef or a string representing the quantifier +('?', '*', '+') associated with the model or particle. + +=item children + +This method returns undef or (for mixed, choice, and sequence types) +an array of component content particles. There will always be at least +one component for choices and sequences, but for a mixed content model +of pure PCDATA, "(#PCDATA)", then an undef is returned. + +=back + +=head2 XML::Parser::ExpatNB Methods + +The class XML::Parser::ExpatNB is a subclass of XML::Parser::Expat used +for non-blocking access to the expat library. It does not support the parse, +parsestring, or parsefile methods, but it does have these additional methods: + +=over 4 + +=item parse_more(DATA) + +Feed expat more text to munch on. + +=item parse_done + +Tell expat that it's gotten the whole document. + +=back + +=head1 FUNCTIONS + +=over 4 + +=item XML::Parser::Expat::load_encoding(ENCODING) + +Load an external encoding. ENCODING is either the name of an encoding or +the name of a file. The basename is converted to lowercase and a '.enc' +extension is appended unless there's one already there. Then, unless +it's an absolute pathname (i.e. begins with '/'), the first file by that +name discovered in the @Encoding_Path path list is used. + +The encoding in the file is loaded and kept in the %Encoding_Table +table. Earlier encodings of the same name are replaced. + +This function is automatically called by expat when it encounters an encoding +it doesn't know about. Expat shouldn't call this twice for the same +encoding name. The only reason users should use this function is to +explicitly load an encoding not contained in the @Encoding_Path list. + +=back + +=head1 AUTHORS + +Larry Wall > wrote version 1.0. + +Clark Cooper > picked up support, changed the API +for this version (2.x), provided documentation, and added some standard +package features. + +=cut diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.xs b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.xs new file mode 100644 index 0000000000000000000000000000000000000000..2688dbf221e8a90839c48cfb849cb9b150421ab3 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Expat.xs @@ -0,0 +1,2216 @@ +/***************************************************************** +** Expat.xs +** +** Copyright 1998 Larry Wall and Clark Cooper +** All rights reserved. +** +** This program is free software; you can redistribute it and/or +** modify it under the same terms as Perl itself. +** +*/ + +#include + +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#undef convert + +#include "patchlevel.h" +#include "encoding.h" + + +/* Version 5.005_5x (Development version for 5.006) doesn't like sv_... + anymore, but 5.004 doesn't know about PL_sv.. + Don't want to push up required version just for this. */ + +#if PATCHLEVEL < 5 +#define PL_sv_undef sv_undef +#define PL_sv_no sv_no +#define PL_sv_yes sv_yes +#define PL_na na +#endif + +#define BUFSIZE 32768 + +#define NSDELIM '|' + +/* Macro to update handler fields. Used in the various handler setting + XSUBS */ + +#define XMLP_UPD(fld) \ + RETVAL = cbv->fld ? newSVsv(cbv->fld) : &PL_sv_undef;\ + if (cbv->fld) {\ + if (cbv->fld != fld)\ + sv_setsv(cbv->fld, fld);\ + }\ + else\ + cbv->fld = newSVsv(fld) + +/* Macro to push old handler value onto return stack. This is done here + to get around a bug in 5.004 sv_2mortal function. */ + +#define PUSHRET \ + ST(0) = RETVAL;\ + if (RETVAL != &PL_sv_undef && SvREFCNT(RETVAL)) sv_2mortal(RETVAL) + +typedef struct { + SV* self_sv; + XML_Parser p; + + AV* context; + AV* new_prefix_list; + HV *nstab; + AV *nslst; + + unsigned int st_serial; + unsigned int st_serial_stackptr; + unsigned int st_serial_stacksize; + unsigned int * st_serial_stack; + + unsigned int skip_until; + + SV *recstring; + char * delim; + STRLEN delimlen; + + unsigned ns:1; + unsigned no_expand:1; + unsigned parseparam:1; + + /* Callback handlers */ + + SV* start_sv; + SV* end_sv; + SV* char_sv; + SV* proc_sv; + SV* cmnt_sv; + SV* dflt_sv; + + SV* entdcl_sv; + SV* eledcl_sv; + SV* attdcl_sv; + SV* doctyp_sv; + SV* doctypfin_sv; + SV* xmldec_sv; + + SV* unprsd_sv; + SV* notation_sv; + + SV* extent_sv; + SV* extfin_sv; + + SV* startcd_sv; + SV* endcd_sv; +} CallbackVector; + + +static HV* EncodingTable = NULL; + +static XML_Char nsdelim[] = {NSDELIM, '\0'}; + +static char *QuantChar[] = {"", "?", "*", "+"}; + +/* Forward declarations */ + +static void suspend_callbacks(CallbackVector *); +static void resume_callbacks(CallbackVector *); + +#if PATCHLEVEL < 5 && SUBVERSION < 5 + +/* ================================================================ +** This is needed where the length is explicitly given. The expat +** library may sometimes give us zero-length strings. Perl's newSVpv +** interprets a zero length as a directive to do a strlen. This +** function is used when we want to force length to mean length, even +** if zero. +*/ + +static SV * +newSVpvn(char *s, STRLEN len) +{ + register SV *sv; + + sv = newSV(0); + sv_setpvn(sv, s, len); + return sv; +} /* End newSVpvn */ + +#define ERRSV GvSV(errgv) +#endif + +#ifdef SvUTF8_on + +static SV * +newUTF8SVpv(char *s, STRLEN len) { + register SV *sv; + + sv = newSVpv(s, len); + SvUTF8_on(sv); + return sv; +} /* End new UTF8SVpv */ + +static SV * +newUTF8SVpvn(char *s, STRLEN len) { + register SV *sv; + + sv = newSV(0); + sv_setpvn(sv, s, len); + SvUTF8_on(sv); + return sv; +} + +#else /* SvUTF8_on not defined */ + +#define newUTF8SVpv newSVpv +#define newUTF8SVpvn newSVpvn + +#endif + +static void* +mymalloc(size_t size) { +#ifndef LEAKTEST + return safemalloc(size); +#else + return safexmalloc(328,size); +#endif +} + +static void* +myrealloc(void *p, size_t s) { +#ifndef LEAKTEST + return saferealloc(p, s); +#else + return safexrealloc(p, s); +#endif +} + +static void +myfree(void *p) { + Safefree(p); +} + +static XML_Memory_Handling_Suite ms = {mymalloc, myrealloc, myfree}; + +static void +append_error(XML_Parser parser, char * err) +{ + dSP; + CallbackVector * cbv; + SV ** errstr; + + cbv = (CallbackVector*) XML_GetUserData(parser); + errstr = hv_fetch((HV*)SvRV(cbv->self_sv), + "ErrorMessage", 12, 0); + + if (errstr && SvPOK(*errstr)) { + SV ** errctx = hv_fetch((HV*) SvRV(cbv->self_sv), + "ErrorContext", 12, 0); + int dopos = !err && errctx && SvOK(*errctx); + + if (! err) + err = (char *) XML_ErrorString(XML_GetErrorCode(parser)); + + sv_catpvf(*errstr, "\n%s at line %ld, column %ld, byte %ld%s", + err, + (long)XML_GetCurrentLineNumber(parser), + (long)XML_GetCurrentColumnNumber(parser), + (long)XML_GetCurrentByteIndex(parser), + dopos ? ":\n" : ""); + // See https://rt.cpan.org/Ticket/Display.html?id=92030 + // It explains why type conversion is used. + + if (dopos) + { + int count; + + ENTER ; + SAVETMPS ; + PUSHMARK(sp); + XPUSHs(cbv->self_sv); + XPUSHs(*errctx); + PUTBACK ; + + count = perl_call_method("position_in_context", G_SCALAR); + + SPAGAIN ; + + if (count >= 1) { + sv_catsv(*errstr, POPs); + } + + PUTBACK ; + FREETMPS ; + LEAVE ; + } + } +} /* End append_error */ + +static SV * +generate_model(XML_Content *model) { + HV * hash = newHV(); + SV * obj = newRV_noinc((SV *) hash); + + sv_bless(obj, gv_stashpv("XML::Parser::ContentModel", 1)); + + hv_store(hash, "Type", 4, newSViv(model->type), 0); + if (model->quant != XML_CQUANT_NONE) { + hv_store(hash, "Quant", 5, newSVpv(QuantChar[model->quant], 1), 0); + } + + switch(model->type) { + case XML_CTYPE_NAME: + hv_store(hash, "Tag", 3, newUTF8SVpv((char *)model->name, 0), 0); + break; + + case XML_CTYPE_MIXED: + case XML_CTYPE_CHOICE: + case XML_CTYPE_SEQ: + if (model->children && model->numchildren) + { + AV * children = newAV(); + int i; + + for (i = 0; i < model->numchildren; i++) { + av_push(children, generate_model(&model->children[i])); + } + + hv_store(hash, "Children", 8, newRV_noinc((SV *) children), 0); + } + break; + } + + return obj; +} /* End generate_model */ + +static int +parse_stream(XML_Parser parser, SV * ioref) +{ + dSP; + SV * tbuff; + SV * tsiz; + char * linebuff; + STRLEN lblen; + STRLEN br = 0; + int buffsize; + int done = 0; + int ret = 1; + char * msg = NULL; + CallbackVector * cbv; + char *buff = (char *) 0; + + cbv = (CallbackVector*) XML_GetUserData(parser); + + ENTER; + SAVETMPS; + + if (cbv->delim) { + int cnt; + SV * tline; + + PUSHMARK(SP); + XPUSHs(ioref); + PUTBACK ; + + cnt = perl_call_method("getline", G_SCALAR); + + SPAGAIN; + + if (cnt != 1) + croak("getline method call failed"); + + tline = POPs; + + if (! SvOK(tline)) { + lblen = 0; + } + else { + char * chk; + linebuff = SvPV(tline, lblen); + chk = &linebuff[lblen - cbv->delimlen - 1]; + + if (lblen > cbv->delimlen + 1 + && *chk == *cbv->delim + && chk[cbv->delimlen] == '\n' + && strnEQ(++chk, cbv->delim + 1, cbv->delimlen - 1)) + lblen -= cbv->delimlen + 1; + } + + PUTBACK ; + buffsize = lblen; + done = lblen == 0; + } + else { + tbuff = newSV(0); + tsiz = newSViv(BUFSIZE); + buffsize = BUFSIZE; + } + + while (! done) + { + char *buffer = XML_GetBuffer(parser, buffsize); + + if (! buffer) + croak("Ran out of memory for input buffer"); + + SAVETMPS; + + if (cbv->delim) { + Copy(linebuff, buffer, lblen, char); + br = lblen; + done = 1; + } + else { + int cnt; + SV * rdres; + char * tb; + + PUSHMARK(SP); + EXTEND(SP, 3); + PUSHs(ioref); + PUSHs(tbuff); + PUSHs(tsiz); + PUTBACK ; + + cnt = perl_call_method("read", G_SCALAR); + + SPAGAIN ; + + if (cnt != 1) + croak("read method call failed"); + + rdres = POPs; + + if (! SvOK(rdres)) + croak("read error"); + + tb = SvPV(tbuff, br); + if (br > 0) + Copy(tb, buffer, br, char); + else + done = 1; + + PUTBACK ; + } + + ret = XML_ParseBuffer(parser, br, done); + + SPAGAIN; /* resync local SP in case callbacks changed global stack */ + + if (! ret) + break; + + FREETMPS; + } + + if (! ret) + append_error(parser, msg); + + if (! cbv->delim) { + SvREFCNT_dec(tsiz); + SvREFCNT_dec(tbuff); + } + + FREETMPS; + LEAVE; + + return ret; +} /* End parse_stream */ + +static SV * +gen_ns_name(const char * name, HV * ns_table, AV * ns_list) +{ + char *pos = strchr(name, NSDELIM); + SV * ret; + + if (pos && pos > name) + { + SV ** name_ent = hv_fetch(ns_table, (char *) name, + pos - name, TRUE); + ret = newUTF8SVpv(&pos[1], 0); + + if (name_ent) + { + int index; + + if (SvOK(*name_ent)) + { + index = SvIV(*name_ent); + } + else + { + av_push(ns_list, newUTF8SVpv((char *) name, pos - name)); + index = av_len(ns_list); + sv_setiv(*name_ent, (IV) index); + } + + sv_setiv(ret, (IV) index); + SvPOK_on(ret); + } + } + else + ret = newUTF8SVpv((char *) name, 0); + + return ret; +} /* End gen_ns_name */ + +static void +characterData(void *userData, const char *s, int len) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpvn((char*)s,len))); + PUTBACK; + perl_call_sv(cbv->char_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End characterData */ + +static void +startElement(void *userData, const char *name, const char **atts) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + SV ** pcontext; + unsigned do_ns = cbv->ns; + unsigned skipping = 0; + SV ** pnstab; + SV ** pnslst; + SV * elname; + + cbv->st_serial++; + + if (cbv->skip_until) { + skipping = cbv->st_serial < cbv->skip_until; + if (! skipping) { + resume_callbacks(cbv); + cbv->skip_until = 0; + } + } + + if (cbv->st_serial_stackptr >= cbv->st_serial_stacksize) { + unsigned int newsize = cbv->st_serial_stacksize + 512; + + Renew(cbv->st_serial_stack, newsize, unsigned int); + cbv->st_serial_stacksize = newsize; + } + + cbv->st_serial_stack[++cbv->st_serial_stackptr] = cbv->st_serial; + + if (do_ns) + elname = gen_ns_name(name, cbv->nstab, cbv->nslst); + else + elname = newUTF8SVpv((char *)name, 0); + + if (! skipping && SvTRUE(cbv->start_sv)) + { + const char **attlim = atts; + + while (*attlim) + attlim++; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, attlim - atts + 2); + PUSHs(cbv->self_sv); + PUSHs(elname); + while (*atts) + { + SV * attname; + + attname = (do_ns ? gen_ns_name(*atts, cbv->nstab, cbv->nslst) + : newUTF8SVpv((char *) *atts, 0)); + + atts++; + PUSHs(sv_2mortal(attname)); + if (*atts) + PUSHs(sv_2mortal(newUTF8SVpv((char*)*atts++,0))); + } + PUTBACK; + perl_call_sv(cbv->start_sv, G_DISCARD); + + FREETMPS; + LEAVE; + } + + av_push(cbv->context, elname); + + if (cbv->ns) { + av_clear(cbv->new_prefix_list); + } +} /* End startElement */ + +static void +endElement(void *userData, const char *name) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + SV *elname; + + elname = av_pop(cbv->context); + + if (! cbv->st_serial_stackptr) { + croak("endElement: Start tag serial number stack underflow"); + } + + if (! cbv->skip_until && SvTRUE(cbv->end_sv)) + { + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(cbv->self_sv); + PUSHs(elname); + PUTBACK; + perl_call_sv(cbv->end_sv, G_DISCARD); + + FREETMPS; + LEAVE; + } + + cbv->st_serial_stackptr--; + + SvREFCNT_dec(elname); +} /* End endElement */ + +static void +processingInstruction(void *userData, const char *target, const char *data) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 3); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char*)target,0))); + PUSHs(sv_2mortal(newUTF8SVpv((char*)data,0))); + PUTBACK; + perl_call_sv(cbv->proc_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End processingInstruction */ + +static void +commenthandle(void *userData, const char *string) +{ + dSP; + CallbackVector * cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char*) string, 0))); + PUTBACK; + perl_call_sv(cbv->cmnt_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End commenthandler */ + +static void +startCdata(void *userData) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + if (cbv->startcd_sv) { + ENTER; + SAVETMPS; + + PUSHMARK(sp); + XPUSHs(cbv->self_sv); + PUTBACK; + perl_call_sv(cbv->startcd_sv, G_DISCARD); + + FREETMPS; + LEAVE; + } +} /* End startCdata */ + +static void +endCdata(void *userData) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + if (cbv->endcd_sv) { + ENTER; + SAVETMPS; + + PUSHMARK(sp); + XPUSHs(cbv->self_sv); + PUTBACK; + perl_call_sv(cbv->endcd_sv, G_DISCARD); + + FREETMPS; + LEAVE; + } +} /* End endCdata */ + +static void +nsStart(void *userdata, const XML_Char *prefix, const XML_Char *uri){ + dSP; + CallbackVector* cbv = (CallbackVector*) userdata; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 3); + PUSHs(cbv->self_sv); + PUSHs(prefix ? sv_2mortal(newUTF8SVpv((char *)prefix, 0)) : &PL_sv_undef); + PUSHs(uri ? sv_2mortal(newUTF8SVpv((char *)uri, 0)) : &PL_sv_undef); + PUTBACK; + perl_call_method("NamespaceStart", G_DISCARD); + + FREETMPS; + LEAVE; +} /* End nsStart */ + +static void +nsEnd(void *userdata, const XML_Char *prefix) { + dSP; + CallbackVector* cbv = (CallbackVector*) userdata; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(cbv->self_sv); + PUSHs(prefix ? sv_2mortal(newUTF8SVpv((char *)prefix, 0)) : &PL_sv_undef); + PUTBACK; + perl_call_method("NamespaceEnd", G_DISCARD); + + FREETMPS; + LEAVE; +} /* End nsEnd */ + +static void +defaulthandle(void *userData, const char *string, int len) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpvn((char*)string, len))); + PUTBACK; + perl_call_sv(cbv->dflt_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End defaulthandle */ + +static void +elementDecl(void *data, + const char *name, + XML_Content *model) { + dSP; + CallbackVector *cbv = (CallbackVector*) data; + SV *cmod; + + ENTER; + SAVETMPS; + + + cmod = generate_model(model); + + Safefree(model); + PUSHMARK(sp); + EXTEND(sp, 3); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char *)name, 0))); + PUSHs(sv_2mortal(cmod)); + PUTBACK; + perl_call_sv(cbv->eledcl_sv, G_DISCARD); + FREETMPS; + LEAVE; + +} /* End elementDecl */ + +static void +attributeDecl(void *data, + const char * elname, + const char * attname, + const char * att_type, + const char * dflt, + int reqorfix) { + dSP; + CallbackVector *cbv = (CallbackVector*) data; + SV * dfltsv; + + if (dflt) { + dfltsv = newUTF8SVpv("'", 1); + sv_catpv(dfltsv, (char *) dflt); + sv_catpv(dfltsv, "'"); + } + else { + dfltsv = newUTF8SVpv(reqorfix ? "#REQUIRED" : "#IMPLIED", 0); + } + + ENTER; + SAVETMPS; + PUSHMARK(sp); + EXTEND(sp, 5); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char *)elname, 0))); + PUSHs(sv_2mortal(newUTF8SVpv((char *)attname, 0))); + PUSHs(sv_2mortal(newUTF8SVpv((char *)att_type, 0))); + PUSHs(sv_2mortal(dfltsv)); + if (dflt && reqorfix) + XPUSHs(&PL_sv_yes); + PUTBACK; + perl_call_sv(cbv->attdcl_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End attributeDecl */ + +static void +entityDecl(void *data, + const char *name, + int isparam, + const char *value, + int vlen, + const char *base, + const char *sysid, + const char *pubid, + const char *notation) { + dSP; + CallbackVector *cbv = (CallbackVector*) data; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 6); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char*)name, 0))); + PUSHs(value ? sv_2mortal(newUTF8SVpvn((char*)value, vlen)) : &PL_sv_undef); + PUSHs(sysid ? sv_2mortal(newUTF8SVpv((char *)sysid, 0)) : &PL_sv_undef); + PUSHs(pubid ? sv_2mortal(newUTF8SVpv((char *)pubid, 0)) : &PL_sv_undef); + PUSHs(notation ? sv_2mortal(newUTF8SVpv((char *)notation, 0)) : &PL_sv_undef); + if (isparam) + XPUSHs(&PL_sv_yes); + PUTBACK; + perl_call_sv(cbv->entdcl_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End entityDecl */ + +static void +doctypeStart(void *userData, + const char* name, + const char* sysid, + const char* pubid, + int hasinternal) { + dSP; + CallbackVector *cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 5); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char*)name, 0))); + PUSHs(sysid ? sv_2mortal(newUTF8SVpv((char*)sysid, 0)) : &PL_sv_undef); + PUSHs(pubid ? sv_2mortal(newUTF8SVpv((char*)pubid, 0)) : &PL_sv_undef); + PUSHs(hasinternal ? &PL_sv_yes : &PL_sv_no); + PUTBACK; + perl_call_sv(cbv->doctyp_sv, G_DISCARD); + FREETMPS; + LEAVE; +} /* End doctypeStart */ + +static void +doctypeEnd(void *userData) { + dSP; + CallbackVector *cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 1); + PUSHs(cbv->self_sv); + PUTBACK; + perl_call_sv(cbv->doctypfin_sv, G_DISCARD); + FREETMPS; + LEAVE; +} /* End doctypeEnd */ + +static void +xmlDecl(void *userData, + const char *version, + const char *encoding, + int standalone) { + dSP; + CallbackVector *cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 4); + PUSHs(cbv->self_sv); + PUSHs(version ? sv_2mortal(newUTF8SVpv((char *)version, 0)) + : &PL_sv_undef); + PUSHs(encoding ? sv_2mortal(newUTF8SVpv((char *)encoding, 0)) + : &PL_sv_undef); + PUSHs(standalone == -1 ? &PL_sv_undef + : (standalone ? &PL_sv_yes : &PL_sv_no)); + PUTBACK; + perl_call_sv(cbv->xmldec_sv, G_DISCARD); + FREETMPS; + LEAVE; +} /* End xmlDecl */ + +static void +unparsedEntityDecl(void *userData, + const char* entity, + const char* base, + const char* sysid, + const char* pubid, + const char* notation) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + ENTER; + SAVETMPS; + + PUSHMARK(sp); + EXTEND(sp, 6); + PUSHs(cbv->self_sv); + PUSHs(sv_2mortal(newUTF8SVpv((char*) entity, 0))); + PUSHs(base ? sv_2mortal(newUTF8SVpv((char*) base, 0)) : &PL_sv_undef); + PUSHs(sv_2mortal(newUTF8SVpv((char*) sysid, 0))); + PUSHs(pubid ? sv_2mortal(newUTF8SVpv((char*) pubid, 0)) : &PL_sv_undef); + PUSHs(sv_2mortal(newUTF8SVpv((char*) notation, 0))); + PUTBACK; + perl_call_sv(cbv->unprsd_sv, G_DISCARD); + + FREETMPS; + LEAVE; +} /* End unparsedEntityDecl */ + +static void +notationDecl(void *userData, + const char *name, + const char *base, + const char *sysid, + const char *pubid) +{ + dSP; + CallbackVector* cbv = (CallbackVector*) userData; + + PUSHMARK(sp); + XPUSHs(cbv->self_sv); + XPUSHs(sv_2mortal(newUTF8SVpv((char*) name, 0))); + if (base) + { + XPUSHs(sv_2mortal(newUTF8SVpv((char *) base, 0))); + } + else if (sysid || pubid) + { + XPUSHs(&PL_sv_undef); + } + + if (sysid) + { + XPUSHs(sv_2mortal(newUTF8SVpv((char *) sysid, 0))); + } + else if (pubid) + { + XPUSHs(&PL_sv_undef); + } + + if (pubid) + XPUSHs(sv_2mortal(newUTF8SVpv((char *) pubid, 0))); + + PUTBACK; + perl_call_sv(cbv->notation_sv, G_DISCARD); +} /* End notationDecl */ + +static int +externalEntityRef(XML_Parser parser, + const char* open, + const char* base, + const char* sysid, + const char* pubid) +{ + dSP; +#if defined(USE_THREADS) && PATCHLEVEL==6 + dTHX; +#endif + + int count; + int ret = 0; + int parse_done = 0; + + CallbackVector* cbv = (CallbackVector*) XML_GetUserData(parser); + + if (! cbv->extent_sv) + return 0; + + ENTER ; + SAVETMPS ; + PUSHMARK(sp); + EXTEND(sp, pubid ? 4 : 3); + PUSHs(cbv->self_sv); + PUSHs(base ? sv_2mortal(newUTF8SVpv((char*) base, 0)) : &PL_sv_undef); + PUSHs(sv_2mortal(newSVpv((char*) sysid, 0))); + if (pubid) + PUSHs(sv_2mortal(newUTF8SVpv((char*) pubid, 0))); + PUTBACK ; + count = perl_call_sv(cbv->extent_sv, G_SCALAR); + + SPAGAIN ; + + if (count >= 1) { + SV * result = POPs; + int type; + + if (result && (type = SvTYPE(result)) > 0) { + SV **pval = hv_fetch((HV*) SvRV(cbv->self_sv), "Parser", 6, 0); + + if (! pval || ! SvIOK(*pval)) + append_error(parser, "Can't find parser entry in XML::Parser object"); + else { + XML_Parser entpar; + char *errmsg = (char *) 0; + + entpar = XML_ExternalEntityParserCreate(parser, open, 0); + + XML_SetBase(entpar, XML_GetBase(parser)); + + sv_setiv(*pval, (IV) entpar); + + cbv->p = entpar; + + PUSHMARK(sp); + EXTEND(sp, 2); + PUSHs(*pval); + PUSHs(result); + PUTBACK; + count = perl_call_pv("XML::Parser::Expat::Do_External_Parse", + G_SCALAR | G_EVAL); + SPAGAIN; + + if (SvTRUE(ERRSV)) { + char *hold; + STRLEN len; + + POPs; + hold = SvPV(ERRSV, len); + New(326, errmsg, len + 1, char); + if (len) + Copy(hold, errmsg, len, char); + goto Extparse_Cleanup; + } + + if (count > 0) + ret = POPi; + + parse_done = 1; + + Extparse_Cleanup: + cbv->p = parser; + sv_setiv(*pval, (IV) parser); + XML_ParserFree(entpar); + + if (cbv->extfin_sv) { + PUSHMARK(sp); + PUSHs(cbv->self_sv); + PUTBACK; + perl_call_sv(cbv->extfin_sv, G_DISCARD); + SPAGAIN; + } + + if (SvTRUE(ERRSV)) + append_error(parser, SvPV_nolen(ERRSV)); + } + } + } + + if (! ret && ! parse_done) + append_error(parser, "Handler couldn't resolve external entity"); + + PUTBACK ; + FREETMPS ; + LEAVE ; + + return ret; +} /* End externalEntityRef */ + +/*================================================================ +** This is the function that expat calls to convert multi-byte sequences +** for external encodings. Each byte in the sequence is used to index +** into the current map to either set the next map or, in the case of +** the final byte, to get the corresponding Unicode scalar, which is +** returned. +*/ + +static int +convert_to_unicode(void *data, const char *seq) { + Encinfo *enc = (Encinfo *) data; + PrefixMap *curpfx; + int count; + int index = 0; + + for (count = 0; count < 4; count++) { + unsigned char byte = (unsigned char) seq[count]; + unsigned char bndx; + unsigned char bmsk; + int offset; + + curpfx = &enc->prefixes[index]; + offset = ((int) byte) - curpfx->min; + if (offset < 0) + break; + if (offset >= curpfx->len && curpfx->len != 0) + break; + + bndx = byte >> 3; + bmsk = 1 << (byte & 0x7); + + if (curpfx->ispfx[bndx] & bmsk) { + index = enc->bytemap[curpfx->bmap_start + offset]; + } + else if (curpfx->ischar[bndx] & bmsk) { + return enc->bytemap[curpfx->bmap_start + offset]; + } + else + break; + } + + return -1; +} /* End convert_to_unicode */ + +static int +unknownEncoding(void *unused, const char *name, XML_Encoding *info) +{ + SV ** encinfptr; + Encinfo *enc; + int namelen; + int i; + char buff[42]; + + namelen = strlen(name); + if (namelen > 40) + return 0; + + /* Make uppercase */ + for (i = 0; i < namelen; i++) { + char c = name[i]; + if (c >= 'a' && c <= 'z') + c -= 'a' - 'A'; + buff[i] = c; + } + + if (! EncodingTable) { + EncodingTable = perl_get_hv("XML::Parser::Expat::Encoding_Table", FALSE); + if (! EncodingTable) + croak("Can't find XML::Parser::Expat::Encoding_Table"); + } + + encinfptr = hv_fetch(EncodingTable, buff, namelen, 0); + + if (! encinfptr || ! SvOK(*encinfptr)) { + /* Not found, so try to autoload */ + dSP; + int count; + + ENTER; + SAVETMPS; + PUSHMARK(sp); + XPUSHs(sv_2mortal(newSVpvn(buff,namelen))); + PUTBACK; + perl_call_pv("XML::Parser::Expat::load_encoding", G_DISCARD); + + encinfptr = hv_fetch(EncodingTable, buff, namelen, 0); + FREETMPS; + LEAVE; + + if (! encinfptr || ! SvOK(*encinfptr)) + return 0; + } + + if (! sv_derived_from(*encinfptr, "XML::Parser::Encinfo")) + croak("Entry in XML::Parser::Expat::Encoding_Table not an Encinfo object"); + + enc = (Encinfo *) SvIV((SV*)SvRV(*encinfptr)); + Copy(enc->firstmap, info->map, 256, int); + info->release = NULL; + if (enc->prefixes_size) { + info->data = (void *) enc; + info->convert = convert_to_unicode; + } + else { + info->data = NULL; + info->convert = NULL; + } + + return 1; +} /* End unknownEncoding */ + + +static void +recString(void *userData, const char *string, int len) +{ + CallbackVector *cbv = (CallbackVector*) userData; + + if (cbv->recstring) { + sv_catpvn(cbv->recstring, (char *) string, len); + } + else { + cbv->recstring = newUTF8SVpvn((char *) string, len); + } +} /* End recString */ + +static void +suspend_callbacks(CallbackVector *cbv) { + if (SvTRUE(cbv->char_sv)) { + XML_SetCharacterDataHandler(cbv->p, + (XML_CharacterDataHandler) 0); + } + + if (SvTRUE(cbv->proc_sv)) { + XML_SetProcessingInstructionHandler(cbv->p, + (XML_ProcessingInstructionHandler) 0); + } + + if (SvTRUE(cbv->cmnt_sv)) { + XML_SetCommentHandler(cbv->p, + (XML_CommentHandler) 0); + } + + if (SvTRUE(cbv->startcd_sv) + || SvTRUE(cbv->endcd_sv)) { + XML_SetCdataSectionHandler(cbv->p, + (XML_StartCdataSectionHandler) 0, + (XML_EndCdataSectionHandler) 0); + } + + if (SvTRUE(cbv->unprsd_sv)) { + XML_SetUnparsedEntityDeclHandler(cbv->p, + (XML_UnparsedEntityDeclHandler) 0); + } + + if (SvTRUE(cbv->notation_sv)) { + XML_SetNotationDeclHandler(cbv->p, + (XML_NotationDeclHandler) 0); + } + + if (SvTRUE(cbv->extent_sv)) { + XML_SetExternalEntityRefHandler(cbv->p, + (XML_ExternalEntityRefHandler) 0); + } + +} /* End suspend_callbacks */ + +static void +resume_callbacks(CallbackVector *cbv) { + if (SvTRUE(cbv->char_sv)) { + XML_SetCharacterDataHandler(cbv->p, characterData); + } + + if (SvTRUE(cbv->proc_sv)) { + XML_SetProcessingInstructionHandler(cbv->p, processingInstruction); + } + + if (SvTRUE(cbv->cmnt_sv)) { + XML_SetCommentHandler(cbv->p, commenthandle); + } + + if (SvTRUE(cbv->startcd_sv) + || SvTRUE(cbv->endcd_sv)) { + XML_SetCdataSectionHandler(cbv->p, startCdata, endCdata); + } + + if (SvTRUE(cbv->unprsd_sv)) { + XML_SetUnparsedEntityDeclHandler(cbv->p, unparsedEntityDecl); + } + + if (SvTRUE(cbv->notation_sv)) { + XML_SetNotationDeclHandler(cbv->p, notationDecl); + } + + if (SvTRUE(cbv->extent_sv)) { + XML_SetExternalEntityRefHandler(cbv->p, externalEntityRef); + } + +} /* End resume_callbacks */ + + +MODULE = XML::Parser::Expat PACKAGE = XML::Parser::Expat PREFIX = XML_ + +XML_Parser +XML_ParserCreate(self_sv, enc_sv, namespaces) + SV * self_sv + SV * enc_sv + int namespaces + CODE: + { + CallbackVector *cbv; + enum XML_ParamEntityParsing pep = XML_PARAM_ENTITY_PARSING_NEVER; + char *enc = (char *) (SvTRUE(enc_sv) ? SvPV_nolen(enc_sv) : 0); + SV ** spp; + + Newz(320, cbv, 1, CallbackVector); + cbv->self_sv = SvREFCNT_inc(self_sv); + Newz(325, cbv->st_serial_stack, 1024, unsigned int); + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "NoExpand", 8, 0); + if (spp && SvTRUE(*spp)) + cbv->no_expand = 1; + + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "Context", 7, 0); + if (! spp || ! *spp || !SvROK(*spp)) + croak("XML::Parser instance missing Context"); + + cbv->context = (AV*) SvRV(*spp); + + cbv->ns = (unsigned) namespaces; + if (namespaces) + { + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "New_Prefixes", 12, 0); + if (! spp || ! *spp || !SvROK(*spp)) + croak("XML::Parser instance missing New_Prefixes"); + + cbv->new_prefix_list = (AV *) SvRV(*spp); + + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "Namespace_Table", + 15, FALSE); + if (! spp || ! *spp || !SvROK(*spp)) + croak("XML::Parser instance missing Namespace_Table"); + + cbv->nstab = (HV *) SvRV(*spp); + + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "Namespace_List", + 14, FALSE); + if (! spp || ! *spp || !SvROK(*spp)) + croak("XML::Parser instance missing Namespace_List"); + + cbv->nslst = (AV *) SvRV(*spp); + + RETVAL = XML_ParserCreate_MM(enc, &ms, nsdelim); + XML_SetNamespaceDeclHandler(RETVAL,nsStart, nsEnd); + } + else + { + RETVAL = XML_ParserCreate_MM(enc, &ms, NULL); + } + + cbv->p = RETVAL; + XML_SetUserData(RETVAL, (void *) cbv); + XML_SetElementHandler(RETVAL, startElement, endElement); + XML_SetUnknownEncodingHandler(RETVAL, unknownEncoding, 0); + + spp = hv_fetch((HV*)SvRV(cbv->self_sv), "ParseParamEnt", + 13, FALSE); + + if (spp && SvTRUE(*spp)) { + pep = XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE; + cbv->parseparam = 1; + } + + XML_SetParamEntityParsing(RETVAL, pep); + } + OUTPUT: + RETVAL + +void +XML_ParserRelease(parser) + XML_Parser parser + CODE: + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + SvREFCNT_dec(cbv->self_sv); + } + +void +XML_ParserFree(parser) + XML_Parser parser + CODE: + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + Safefree(cbv->st_serial_stack); + + + /* Clean up any SVs that we have */ + /* (Note that self_sv must already be taken care of + or we couldn't be here */ + + if (cbv->recstring) + SvREFCNT_dec(cbv->recstring); + + if (cbv->start_sv) + SvREFCNT_dec(cbv->start_sv); + + if (cbv->end_sv) + SvREFCNT_dec(cbv->end_sv); + + if (cbv->char_sv) + SvREFCNT_dec(cbv->char_sv); + + if (cbv->proc_sv) + SvREFCNT_dec(cbv->proc_sv); + + if (cbv->cmnt_sv) + SvREFCNT_dec(cbv->cmnt_sv); + + if (cbv->dflt_sv) + SvREFCNT_dec(cbv->dflt_sv); + + if (cbv->entdcl_sv) + SvREFCNT_dec(cbv->entdcl_sv); + + if (cbv->eledcl_sv) + SvREFCNT_dec(cbv->eledcl_sv); + + if (cbv->attdcl_sv) + SvREFCNT_dec(cbv->attdcl_sv); + + if (cbv->doctyp_sv) + SvREFCNT_dec(cbv->doctyp_sv); + + if (cbv->doctypfin_sv) + SvREFCNT_dec(cbv->doctypfin_sv); + + if (cbv->xmldec_sv) + SvREFCNT_dec(cbv->xmldec_sv); + + if (cbv->unprsd_sv) + SvREFCNT_dec(cbv->unprsd_sv); + + if (cbv->notation_sv) + SvREFCNT_dec(cbv->notation_sv); + + if (cbv->extent_sv) + SvREFCNT_dec(cbv->extent_sv); + + if (cbv->extfin_sv) + SvREFCNT_dec(cbv->extfin_sv); + + if (cbv->startcd_sv) + SvREFCNT_dec(cbv->startcd_sv); + + if (cbv->endcd_sv) + SvREFCNT_dec(cbv->endcd_sv); + + /* ================ */ + + Safefree(cbv); + XML_ParserFree(parser); + } + +int +XML_ParseString(parser, sv) + XML_Parser parser + SV * sv + CODE: + { + CallbackVector * cbv; + STRLEN len; + char *s = SvPV(sv, len); + + cbv = (CallbackVector *) XML_GetUserData(parser); + + + RETVAL = XML_Parse(parser, s, len, 1); + SPAGAIN; /* XML_Parse might have changed stack pointer */ + if (! RETVAL) + append_error(parser, NULL); + } + + OUTPUT: + RETVAL + +int +XML_ParseStream(parser, ioref, delim) + XML_Parser parser + SV * ioref + SV * delim + CODE: + { + SV **delimsv; + CallbackVector * cbv; + + cbv = (CallbackVector *) XML_GetUserData(parser); + if (SvOK(delim)) { + cbv->delim = SvPV(delim, cbv->delimlen); + } + else { + cbv->delim = (char *) 0; + } + + RETVAL = parse_stream(parser, ioref); + SPAGAIN; /* parse_stream might have changed stack pointer */ + } + + OUTPUT: + RETVAL + +int +XML_ParsePartial(parser, sv) + XML_Parser parser + SV * sv + CODE: + { + STRLEN len; + char *s = SvPV(sv, len); + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + RETVAL = XML_Parse(parser, s, len, 0); + if (! RETVAL) + append_error(parser, NULL); + } + + OUTPUT: + RETVAL + + +int +XML_ParseDone(parser) + XML_Parser parser + CODE: + { + RETVAL = XML_Parse(parser, "", 0, 1); + if (! RETVAL) + append_error(parser, NULL); + } + + OUTPUT: + RETVAL + +SV * +XML_SetStartElementHandler(parser, start_sv) + XML_Parser parser + SV * start_sv + CODE: + { + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + XMLP_UPD(start_sv); + PUSHRET; + } + +SV * +XML_SetEndElementHandler(parser, end_sv) + XML_Parser parser + SV * end_sv + CODE: + { + CallbackVector *cbv = (CallbackVector*) XML_GetUserData(parser); + XMLP_UPD(end_sv); + PUSHRET; + } + +SV * +XML_SetCharacterDataHandler(parser, char_sv) + XML_Parser parser + SV * char_sv + CODE: + { + XML_CharacterDataHandler charhndl = (XML_CharacterDataHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(char_sv); + if (SvTRUE(char_sv)) + charhndl = characterData; + + XML_SetCharacterDataHandler(parser, charhndl); + PUSHRET; + } + +SV * +XML_SetProcessingInstructionHandler(parser, proc_sv) + XML_Parser parser + SV * proc_sv + CODE: + { + XML_ProcessingInstructionHandler prochndl = + (XML_ProcessingInstructionHandler) 0; + CallbackVector* cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(proc_sv); + if (SvTRUE(proc_sv)) + prochndl = processingInstruction; + + XML_SetProcessingInstructionHandler(parser, prochndl); + PUSHRET; + } + +SV * +XML_SetCommentHandler(parser, cmnt_sv) + XML_Parser parser + SV * cmnt_sv + CODE: + { + XML_CommentHandler cmnthndl = (XML_CommentHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(cmnt_sv); + if (SvTRUE(cmnt_sv)) + cmnthndl = commenthandle; + + XML_SetCommentHandler(parser, cmnthndl); + PUSHRET; + } + +SV * +XML_SetDefaultHandler(parser, dflt_sv) + XML_Parser parser + SV * dflt_sv + CODE: + { + XML_DefaultHandler dflthndl = (XML_DefaultHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(dflt_sv); + if (SvTRUE(dflt_sv)) + dflthndl = defaulthandle; + + if (cbv->no_expand) + XML_SetDefaultHandler(parser, dflthndl); + else + XML_SetDefaultHandlerExpand(parser, dflthndl); + + PUSHRET; + } + +SV * +XML_SetUnparsedEntityDeclHandler(parser, unprsd_sv) + XML_Parser parser + SV * unprsd_sv + CODE: + { + XML_UnparsedEntityDeclHandler unprsdhndl = + (XML_UnparsedEntityDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(unprsd_sv); + if (SvTRUE(unprsd_sv)) + unprsdhndl = unparsedEntityDecl; + + XML_SetUnparsedEntityDeclHandler(parser, unprsdhndl); + PUSHRET; + } + +SV * +XML_SetNotationDeclHandler(parser, notation_sv) + XML_Parser parser + SV * notation_sv + CODE: + { + XML_NotationDeclHandler nothndlr = (XML_NotationDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(notation_sv); + if (SvTRUE(notation_sv)) + nothndlr = notationDecl; + + XML_SetNotationDeclHandler(parser, nothndlr); + PUSHRET; + } + +SV * +XML_SetExternalEntityRefHandler(parser, extent_sv) + XML_Parser parser + SV * extent_sv + CODE: + { + XML_ExternalEntityRefHandler exthndlr = + (XML_ExternalEntityRefHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(extent_sv); + if (SvTRUE(extent_sv)) + exthndlr = externalEntityRef; + + XML_SetExternalEntityRefHandler(parser, exthndlr); + PUSHRET; + } + +SV * +XML_SetExtEntFinishHandler(parser, extfin_sv) + XML_Parser parser + SV * extfin_sv + CODE: + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + /* There is no corresponding handler for this in expat. This is + called from the externalEntityRef function above after parsing + the external entity. */ + + XMLP_UPD(extfin_sv); + PUSHRET; + } + + +SV * +XML_SetEntityDeclHandler(parser, entdcl_sv) + XML_Parser parser + SV * entdcl_sv + CODE: + { + XML_EntityDeclHandler enthndlr = + (XML_EntityDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(entdcl_sv); + if (SvTRUE(entdcl_sv)) + enthndlr = entityDecl; + + XML_SetEntityDeclHandler(parser, enthndlr); + PUSHRET; + } + +SV * +XML_SetElementDeclHandler(parser, eledcl_sv) + XML_Parser parser + SV * eledcl_sv + CODE: + { + XML_ElementDeclHandler eldeclhndlr = + (XML_ElementDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(eledcl_sv); + if (SvTRUE(eledcl_sv)) + eldeclhndlr = elementDecl; + + XML_SetElementDeclHandler(parser, eldeclhndlr); + PUSHRET; + } + +SV * +XML_SetAttListDeclHandler(parser, attdcl_sv) + XML_Parser parser + SV * attdcl_sv + CODE: + { + XML_AttlistDeclHandler attdeclhndlr = + (XML_AttlistDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(attdcl_sv); + if (SvTRUE(attdcl_sv)) + attdeclhndlr = attributeDecl; + + XML_SetAttlistDeclHandler(parser, attdeclhndlr); + PUSHRET; + } + +SV * +XML_SetDoctypeHandler(parser, doctyp_sv) + XML_Parser parser + SV * doctyp_sv + CODE: + { + XML_StartDoctypeDeclHandler dtsthndlr = + (XML_StartDoctypeDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + int set = 0; + + XMLP_UPD(doctyp_sv); + if (SvTRUE(doctyp_sv)) + dtsthndlr = doctypeStart; + + XML_SetStartDoctypeDeclHandler(parser, dtsthndlr); + PUSHRET; + } + +SV * +XML_SetEndDoctypeHandler(parser, doctypfin_sv) + XML_Parser parser + SV * doctypfin_sv + CODE: + { + XML_EndDoctypeDeclHandler dtendhndlr = + (XML_EndDoctypeDeclHandler) 0; + CallbackVector * cbv = (CallbackVector*) XML_GetUserData(parser); + + XMLP_UPD(doctypfin_sv); + if (SvTRUE(doctypfin_sv)) + dtendhndlr = doctypeEnd; + + XML_SetEndDoctypeDeclHandler(parser, dtendhndlr); + PUSHRET; + } + + +SV * +XML_SetXMLDeclHandler(parser, xmldec_sv) + XML_Parser parser + SV * xmldec_sv + CODE: + { + XML_XmlDeclHandler xmldechndlr = + (XML_XmlDeclHandler) 0; + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + XMLP_UPD(xmldec_sv); + if (SvTRUE(xmldec_sv)) + xmldechndlr = xmlDecl; + + XML_SetXmlDeclHandler(parser, xmldechndlr); + PUSHRET; + } + + +void +XML_SetBase(parser, base) + XML_Parser parser + SV * base + CODE: + { + char * b; + + if (! SvOK(base)) { + b = (char *) 0; + } + else { + b = SvPV_nolen(base); + } + + XML_SetBase(parser, b); + } + + +SV * +XML_GetBase(parser) + XML_Parser parser + CODE: + { + const char *ret = XML_GetBase(parser); + if (ret) { + ST(0) = sv_newmortal(); + sv_setpv(ST(0), ret); + } + else { + ST(0) = &PL_sv_undef; + } + } + +void +XML_PositionContext(parser, lines) + XML_Parser parser + int lines + PREINIT: + int parsepos; + int size; + const char *pos = XML_GetInputContext(parser, &parsepos, &size); + const char *markbeg; + const char *limit; + const char *markend; + int length, relpos; + int cnt; + + PPCODE: + if (! pos) + return; + + for (markbeg = &pos[parsepos], cnt = 0; markbeg >= pos; markbeg--) + { + if (*markbeg == '\n') + { + cnt++; + if (cnt > lines) + break; + } + } + + markbeg++; + + relpos = 0; + limit = &pos[size]; + for (markend = &pos[parsepos + 1], cnt = 0; + markend < limit; + markend++) + { + if (*markend == '\n') + { + if (cnt == 0) + relpos = (markend - markbeg) + 1; + cnt++; + if (cnt > lines) + { + markend++; + break; + } + } + } + + length = markend - markbeg; + if (relpos == 0) + relpos = length; + + EXTEND(sp, 2); + PUSHs(sv_2mortal(newSVpvn((char *) markbeg, length))); + PUSHs(sv_2mortal(newSViv(relpos))); + +SV * +GenerateNSName(name, xml_namespace, table, list) + SV * name + SV * xml_namespace + SV * table + SV * list + CODE: + { + STRLEN nmlen, nslen; + char * nmstr; + char * nsstr; + char * buff; + char * bp; + char * blim; + + nmstr = SvPV(name, nmlen); + nsstr = SvPV(xml_namespace, nslen); + + /* Form a namespace-name string that looks like expat's */ + New(321, buff, nmlen + nslen + 2, char); + bp = buff; + blim = bp + nslen; + while (bp < blim) + *bp++ = *nsstr++; + *bp++ = NSDELIM; + blim = bp + nmlen; + while (bp < blim) + *bp++ = *nmstr++; + *bp = '\0'; + + RETVAL = gen_ns_name(buff, (HV *) SvRV(table), (AV *) SvRV(list)); + Safefree(buff); + } + OUTPUT: + RETVAL + +void +XML_DefaultCurrent(parser) + XML_Parser parser + CODE: + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + XML_DefaultCurrent(parser); + } + +SV * +XML_RecognizedString(parser) + XML_Parser parser + CODE: + { + XML_DefaultHandler dflthndl = (XML_DefaultHandler) 0; + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + if (cbv->dflt_sv) { + dflthndl = defaulthandle; + } + + if (cbv->recstring) { + sv_setpvn(cbv->recstring, "", 0); + } + + if (cbv->no_expand) + XML_SetDefaultHandler(parser, recString); + else + XML_SetDefaultHandlerExpand(parser, recString); + + XML_DefaultCurrent(parser); + + if (cbv->no_expand) + XML_SetDefaultHandler(parser, dflthndl); + else + XML_SetDefaultHandlerExpand(parser, dflthndl); + + RETVAL = newSVsv(cbv->recstring); + } + OUTPUT: + RETVAL + +int +XML_GetErrorCode(parser) + XML_Parser parser + +int +XML_GetCurrentLineNumber(parser) + XML_Parser parser + + +int +XML_GetCurrentColumnNumber(parser) + XML_Parser parser + +long +XML_GetCurrentByteIndex(parser) + XML_Parser parser + +int +XML_GetSpecifiedAttributeCount(parser) + XML_Parser parser + +char * +XML_ErrorString(code) + int code + CODE: + const char *ret = XML_ErrorString(code); + ST(0) = sv_newmortal(); + sv_setpv((SV*)ST(0), ret); + +SV * +XML_LoadEncoding(data, size) + char * data + int size + CODE: + { + Encmap_Header *emh = (Encmap_Header *) data; + unsigned pfxsize, bmsize; + + if (size < sizeof(Encmap_Header) + || ntohl(emh->magic) != ENCMAP_MAGIC) { + RETVAL = &PL_sv_undef; + } + else { + Encinfo *entry; + SV *sv; + PrefixMap *pfx; + unsigned short *bm; + int namelen; + int i; + + pfxsize = ntohs(emh->pfsize); + bmsize = ntohs(emh->bmsize); + + if (size != (sizeof(Encmap_Header) + + pfxsize * sizeof(PrefixMap) + + bmsize * sizeof(unsigned short))) { + RETVAL = &PL_sv_undef; + } + else { + /* Convert to uppercase and get name length */ + + for (i = 0; i < sizeof(emh->name); i++) { + char c = emh->name[i]; + + if (c == (char) 0) + break; + + if (c >= 'a' && c <= 'z') + emh->name[i] -= 'a' - 'A'; + } + namelen = i; + + RETVAL = newSVpvn(emh->name, namelen); + + New(322, entry, 1, Encinfo); + entry->prefixes_size = pfxsize; + entry->bytemap_size = bmsize; + for (i = 0; i < 256; i++) { + entry->firstmap[i] = ntohl(emh->map[i]); + } + + pfx = (PrefixMap *) &data[sizeof(Encmap_Header)]; + bm = (unsigned short *) (((char *) pfx) + + sizeof(PrefixMap) * pfxsize); + + New(323, entry->prefixes, pfxsize, PrefixMap); + New(324, entry->bytemap, bmsize, unsigned short); + + for (i = 0; i < pfxsize; i++, pfx++) { + PrefixMap *dest = &entry->prefixes[i]; + + dest->min = pfx->min; + dest->len = pfx->len; + dest->bmap_start = ntohs(pfx->bmap_start); + Copy(pfx->ispfx, dest->ispfx, + sizeof(pfx->ispfx) + sizeof(pfx->ischar), unsigned char); + } + + for (i = 0; i < bmsize; i++) + entry->bytemap[i] = ntohs(bm[i]); + + sv = newSViv(0); + sv_setref_pv(sv, "XML::Parser::Encinfo", (void *) entry); + + if (! EncodingTable) { + EncodingTable + = perl_get_hv("XML::Parser::Expat::Encoding_Table", + FALSE); + if (! EncodingTable) + croak("Can't find XML::Parser::Expat::Encoding_Table"); + } + + hv_store(EncodingTable, emh->name, namelen, sv, 0); + } + } + } + OUTPUT: + RETVAL + +void +XML_FreeEncoding(enc) + Encinfo * enc + CODE: + Safefree(enc->bytemap); + Safefree(enc->prefixes); + Safefree(enc); + +SV * +XML_OriginalString(parser) + XML_Parser parser + CODE: + { + int parsepos, size; + const char *buff = XML_GetInputContext(parser, &parsepos, &size); + if (buff) { + RETVAL = newSVpvn((char *) &buff[parsepos], + XML_GetCurrentByteCount(parser)); + } + else { + RETVAL = newSVpv("", 0); + } + } + OUTPUT: + RETVAL + +SV * +XML_SetStartCdataHandler(parser, startcd_sv) + XML_Parser parser + SV * startcd_sv + CODE: + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + XML_StartCdataSectionHandler scdhndl = + (XML_StartCdataSectionHandler) 0; + + XMLP_UPD(startcd_sv); + if (SvTRUE(startcd_sv)) + scdhndl = startCdata; + + XML_SetStartCdataSectionHandler(parser, scdhndl); + PUSHRET; + } + +SV * +XML_SetEndCdataHandler(parser, endcd_sv) + XML_Parser parser + SV * endcd_sv + CODE: + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + XML_EndCdataSectionHandler ecdhndl = + (XML_EndCdataSectionHandler) 0; + + XMLP_UPD(endcd_sv); + if (SvTRUE(endcd_sv)) + ecdhndl = endCdata; + + XML_SetEndCdataSectionHandler(parser, ecdhndl); + PUSHRET; + } + +void +XML_UnsetAllHandlers(parser) + XML_Parser parser + CODE: + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + suspend_callbacks(cbv); + if (cbv->ns) { + XML_SetNamespaceDeclHandler(cbv->p, + (XML_StartNamespaceDeclHandler) 0, + (XML_EndNamespaceDeclHandler) 0); + } + + XML_SetElementHandler(parser, + (XML_StartElementHandler) 0, + (XML_EndElementHandler) 0); + + XML_SetUnknownEncodingHandler(parser, + (XML_UnknownEncodingHandler) 0, + (void *) 0); + } + +int +XML_ElementIndex(parser) + XML_Parser parser + CODE: + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + RETVAL = cbv->st_serial_stack[cbv->st_serial_stackptr]; + } + OUTPUT: + RETVAL + +void +XML_SkipUntil(parser, index) + XML_Parser parser + unsigned int index + CODE: + { + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + if (index <= cbv->st_serial) + return; + cbv->skip_until = index; + suspend_callbacks(cbv); + } + +int +XML_Do_External_Parse(parser, result) + XML_Parser parser + SV * result + CODE: + { + int type; + + CallbackVector * cbv = (CallbackVector *) XML_GetUserData(parser); + + if (SvROK(result) && SvOBJECT(SvRV(result))) { + RETVAL = parse_stream(parser, result); + } + else if (isGV(result)) { + RETVAL = parse_stream(parser, + sv_2mortal(newRV((SV*) GvIOp(result)))); + } + else if (SvPOK(result)) { + STRLEN eslen; + int pret; + char *entstr = SvPV(result, eslen); + + RETVAL = XML_Parse(parser, entstr, eslen, 1); + } + } + OUTPUT: + RETVAL + + diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/MYMETA.json b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/MYMETA.json new file mode 100644 index 0000000000000000000000000000000000000000..8ca18a56b051abd55ff847cda80811fcc97b1056 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/MYMETA.json @@ -0,0 +1,39 @@ +{ + "abstract" : "Lowlevel access to James Clark's expat XML parser", + "author" : [ + "Matt Sergeant (matt@sergeant.org)" + ], + "dynamic_config" : 0, + "generated_by" : "ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001", + "license" : [ + "unknown" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "XML-Parser-Expat", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "runtime" : { + "requires" : {} + } + }, + "release_status" : "stable", + "version" : "2.44" +} diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/MYMETA.yml b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/MYMETA.yml new file mode 100644 index 0000000000000000000000000000000000000000..3d399807d9d327f315741d5c1e86b7c39bb0b181 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/MYMETA.yml @@ -0,0 +1,21 @@ +--- +abstract: "Lowlevel access to James Clark's expat XML parser" +author: + - 'Matt Sergeant (matt@sergeant.org)' +build_requires: + ExtUtils::MakeMaker: '0' +configure_requires: + ExtUtils::MakeMaker: '0' +dynamic_config: 0 +generated_by: 'ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001' +license: unknown +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: XML-Parser-Expat +no_index: + directory: + - t + - inc +requires: {} +version: '2.44' diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Makefile b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..39cc80edf2a1d5d59007c214b1cd9b1cb194d8bc --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Makefile @@ -0,0 +1,832 @@ +# This Makefile is for the XML::Parser::Expat extension to perl. +# +# It was generated automatically by MakeMaker version +# 7.0401 (Revision: 70401) from the contents of +# Makefile.PL. Don't edit this file, edit Makefile.PL instead. +# +# ANY CHANGES MADE HERE WILL BE LOST! +# +# MakeMaker ARGV: () +# + +# MakeMaker Parameters: + +# ABSTRACT => q[Lowlevel access to James Clark's expat XML parser] +# AUTHOR => [q[Matt Sergeant (matt@sergeant.org)]] +# BUILD_REQUIRES => { } +# C => [q[Expat.c]] +# CONFIGURE_REQUIRES => { } +# LIBS => q[-L-lexpat -lexpat] +# NAME => q[XML::Parser::Expat] +# PREREQ_PM => { } +# TEST_REQUIRES => { } +# VERSION_FROM => q[Expat.pm] +# XSPROTOARG => q[-noprototypes] + +# --- MakeMaker post_initialize section: + + +# --- MakeMaker const_config section: + +# These definitions are from config.sh (via /usr/lib/x86_64-linux-gnu/perl/5.22/Config.pm). +# They may have been overridden via Makefile.PL or on the command line. +AR = ar +CC = x86_64-linux-gnu-gcc +CCCDLFLAGS = -fPIC +CCDLFLAGS = -Wl,-E +DLEXT = so +DLSRC = dl_dlopen.xs +EXE_EXT = +FULL_AR = /usr/bin/ar +LD = x86_64-linux-gnu-gcc +LDDLFLAGS = -shared -L/usr/local/lib -fstack-protector-strong +LDFLAGS = -fstack-protector-strong -L/usr/local/lib +LIBC = libc-2.23.so +LIB_EXT = .a +OBJ_EXT = .o +OSNAME = linux +OSVERS = 3.16.0 +RANLIB = : +SITELIBEXP = /usr/local/share/perl/5.22.1 +SITEARCHEXP = /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 +SO = so +VENDORARCHEXP = /usr/lib/x86_64-linux-gnu/perl5/5.22 +VENDORLIBEXP = /usr/share/perl5 + + +# --- MakeMaker constants section: +AR_STATIC_ARGS = cr +DIRFILESEP = / +DFSEP = $(DIRFILESEP) +NAME = XML::Parser::Expat +NAME_SYM = XML_Parser_Expat +VERSION = 2.44 +VERSION_MACRO = VERSION +VERSION_SYM = 2_44 +DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\" +XS_VERSION = 2.44 +XS_VERSION_MACRO = XS_VERSION +XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\" +INST_ARCHLIB = ../blib/arch +INST_SCRIPT = ../blib/script +INST_BIN = ../blib/bin +INST_LIB = ../blib/lib +INST_MAN1DIR = ../blib/man1 +INST_MAN3DIR = ../blib/man3 +MAN1EXT = 1p +MAN3EXT = 3pm +INSTALLDIRS = site +DESTDIR = +PREFIX = $(SITEPREFIX) +PERLPREFIX = /usr +SITEPREFIX = /usr/local +VENDORPREFIX = /usr +INSTALLPRIVLIB = /usr/share/perl/5.22 +DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB) +INSTALLSITELIB = /usr/local/share/perl/5.22.1 +DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB) +INSTALLVENDORLIB = /usr/share/perl5 +DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB) +INSTALLARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.22 +DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB) +INSTALLSITEARCH = /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 +DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH) +INSTALLVENDORARCH = /usr/lib/x86_64-linux-gnu/perl5/5.22 +DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH) +INSTALLBIN = /usr/bin +DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN) +INSTALLSITEBIN = /usr/local/bin +DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN) +INSTALLVENDORBIN = /usr/bin +DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN) +INSTALLSCRIPT = /usr/bin +DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT) +INSTALLSITESCRIPT = /usr/local/bin +DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT) +INSTALLVENDORSCRIPT = /usr/bin +DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT) +INSTALLMAN1DIR = /usr/share/man/man1 +DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR) +INSTALLSITEMAN1DIR = /usr/local/man/man1 +DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR) +INSTALLVENDORMAN1DIR = /usr/share/man/man1 +DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR) +INSTALLMAN3DIR = /usr/share/man/man3 +DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR) +INSTALLSITEMAN3DIR = /usr/local/man/man3 +DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR) +INSTALLVENDORMAN3DIR = /usr/share/man/man3 +DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR) +PERL_LIB = /usr/share/perl/5.22 +PERL_ARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.22 +PERL_ARCHLIBDEP = /usr/lib/x86_64-linux-gnu/perl/5.22 +LIBPERL_A = libperl.a +FIRST_MAKEFILE = Makefile +MAKEFILE_OLD = Makefile.old +MAKE_APERL_FILE = Makefile.aperl +PERLMAINCC = $(CC) +PERL_INC = /usr/lib/x86_64-linux-gnu/perl/5.22/CORE +PERL_INCDEP = /usr/lib/x86_64-linux-gnu/perl/5.22/CORE +PERL = "/usr/bin/perl" +FULLPERL = "/usr/bin/perl" +ABSPERL = $(PERL) +PERLRUN = $(PERL) +FULLPERLRUN = $(FULLPERL) +ABSPERLRUN = $(ABSPERL) +PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +PERL_CORE = 0 +PERM_DIR = 755 +PERM_RW = 644 +PERM_RWX = 755 + +MAKEMAKER = /usr/share/perl/5.22/ExtUtils/MakeMaker.pm +MM_VERSION = 7.0401 +MM_REVISION = 70401 + +# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle). +# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle) +# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar) +# DLBASE = Basename part of dynamic library. May be just equal BASEEXT. +MAKE = make +FULLEXT = XML/Parser/Expat +BASEEXT = Expat +PARENT_NAME = XML::Parser +DLBASE = $(BASEEXT) +VERSION_FROM = Expat.pm +OBJECT = $(BASEEXT)$(OBJ_EXT) +LDFROM = $(OBJECT) +LINKTYPE = dynamic +BOOTDEP = + +# Handy lists of source code files: +XS_FILES = Expat.xs +C_FILES = Expat.c +O_FILES = Expat.o +H_FILES = encoding.h +MAN1PODS = +MAN3PODS = Expat.pm + +# Where is the Config information that we are using/depend on +CONFIGDEP = $(PERL_ARCHLIBDEP)$(DFSEP)Config.pm $(PERL_INCDEP)$(DFSEP)config.h + +# Where to build things +INST_LIBDIR = $(INST_LIB)/XML/Parser +INST_ARCHLIBDIR = $(INST_ARCHLIB)/XML/Parser + +INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT) +INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT) + +INST_STATIC = $(INST_ARCHAUTODIR)/$(BASEEXT)$(LIB_EXT) +INST_DYNAMIC = $(INST_ARCHAUTODIR)/$(DLBASE).$(DLEXT) +INST_BOOT = $(INST_ARCHAUTODIR)/$(BASEEXT).bs + +# Extra linker info +EXPORT_LIST = +PERL_ARCHIVE = +PERL_ARCHIVEDEP = +PERL_ARCHIVE_AFTER = + + +TO_INST_PM = Expat.pm + +PM_TO_BLIB = Expat.pm \ + $(INST_LIB)/XML/Parser/Expat.pm + + +# --- MakeMaker platform_constants section: +MM_Unix_VERSION = 7.0401 +PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc + + +# --- MakeMaker tool_autosplit section: +# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto +AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$$$ARGV[0], $$$$ARGV[1], 0, 1, 1)' -- + + + +# --- MakeMaker tool_xsubpp section: + +XSUBPPDIR = /usr/share/perl/5.22.1/ExtUtils +XSUBPP = "$(XSUBPPDIR)$(DFSEP)xsubpp" +XSUBPPRUN = $(PERLRUN) $(XSUBPP) +XSPROTOARG = -noprototypes +XSUBPPDEPS = /usr/share/perl/5.22/ExtUtils/typemap typemap /usr/share/perl/5.22.1/ExtUtils$(DFSEP)xsubpp +XSUBPPARGS = -typemap "/usr/share/perl/5.22/ExtUtils/typemap" -typemap "typemap" +XSUBPP_EXTRA_ARGS = + + +# --- MakeMaker tools_other section: +SHELL = /bin/sh +CHMOD = chmod +CP = cp +MV = mv +NOOP = $(TRUE) +NOECHO = @ +RM_F = rm -f +RM_RF = rm -rf +TEST_F = test -f +TOUCH = touch +UMASK_NULL = umask 0 +DEV_NULL = > /dev/null 2>&1 +MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' -- +EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' -- +FALSE = false +TRUE = true +ECHO = echo +ECHO_N = echo -n +UNINST = 0 +VERBINST = 0 +MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' -- +DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' -- +UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' -- +WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' -- +MACROSTART = +MACROEND = +USEMAKEFILE = -f +FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' -- +CP_NONEMPTY = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'cp_nonempty' -- + + +# --- MakeMaker makemakerdflt section: +makemakerdflt : all + $(NOECHO) $(NOOP) + + +# --- MakeMaker dist section skipped. + +# --- MakeMaker macro section: + + +# --- MakeMaker depend section: + + +# --- MakeMaker cflags section: + +CCFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +OPTIMIZE = -O2 -g +PERLTYPE = +MPOLLUTE = + + +# --- MakeMaker const_loadlibs section: + +# XML::Parser::Expat might depend on some other libraries: +# See ExtUtils::Liblist for details +# +EXTRALIBS = -lexpat +LDLOADLIBS = -lexpat +BSLOADLIBS = + + +# --- MakeMaker const_cccmd section: +CCCMD = $(CC) -c $(PASTHRU_INC) $(INC) \ + $(CCFLAGS) $(OPTIMIZE) \ + $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \ + $(XS_DEFINE_VERSION) + +# --- MakeMaker post_constants section: + + +# --- MakeMaker pasthru section: + +PASTHRU = LIBPERL_A="$(LIBPERL_A)"\ + LINKTYPE="$(LINKTYPE)"\ + OPTIMIZE="$(OPTIMIZE)"\ + LD="$(LD)"\ + PREFIX="$(PREFIX)" + + +# --- MakeMaker special_targets section: +.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT) + +.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir + + + +# --- MakeMaker c_o section: + +.c.i: + x86_64-linux-gnu-gcc -E -c $(PASTHRU_INC) $(INC) \ + $(CCFLAGS) $(OPTIMIZE) \ + $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \ + $(XS_DEFINE_VERSION) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c > $*.i + +.c.s: + $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + +.c$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + +.cpp$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cpp + +.cxx$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cxx + +.cc$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cc + +.C$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.C + + +# --- MakeMaker xs_c section: + +.xs.c: + $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $(XSUBPP_EXTRA_ARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c + + +# --- MakeMaker xs_o section: + +.xs$(OBJ_EXT): + $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + + +# --- MakeMaker top_targets section: +all :: pure_all manifypods + $(NOECHO) $(NOOP) + + +pure_all :: config pm_to_blib subdirs linkext + $(NOECHO) $(NOOP) + +subdirs :: $(MYEXTLIB) + $(NOECHO) $(NOOP) + +config :: $(FIRST_MAKEFILE) blibdirs + $(NOECHO) $(NOOP) + +$(O_FILES): $(H_FILES) + +help : + perldoc ExtUtils::MakeMaker + + +# --- MakeMaker blibdirs section: +blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists + $(NOECHO) $(NOOP) + +# Backwards compat with 6.18 through 6.25 +blibdirs.ts : blibdirs + $(NOECHO) $(NOOP) + +$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_LIBDIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR) + $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists + +$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHLIB) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB) + $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists + +$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_AUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR) + $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists + +$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR) + $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists + +$(INST_BIN)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_BIN) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN) + $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists + +$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_SCRIPT) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT) + $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists + +$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN1DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR) + $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists + +$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN3DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR) + $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists + + + +# --- MakeMaker linkext section: + +linkext :: $(LINKTYPE) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dlsyms section: + + +# --- MakeMaker dynamic_bs section: +BOOTSTRAP = $(BASEEXT).bs + +# As Mkbootstrap might not write a file (if none is required) +# we use touch to prevent make continually trying to remake it. +# The DynaLoader only reads a non-empty file. +$(BOOTSTRAP) : $(FIRST_MAKEFILE) $(BOOTDEP) $(INST_ARCHAUTODIR)$(DFSEP).exists + $(NOECHO) $(ECHO) "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))" + $(NOECHO) $(PERLRUN) \ + "-MExtUtils::Mkbootstrap" \ + -e "Mkbootstrap('$(BASEEXT)','$(BSLOADLIBS)');" + $(NOECHO) $(TOUCH) "$@" + $(CHMOD) $(PERM_RW) "$@" + + +# --- MakeMaker dynamic section: + +dynamic :: $(FIRST_MAKEFILE) $(BOOTSTRAP) $(INST_DYNAMIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dynamic_lib section: + +# This section creates the dynamically loadable $(INST_DYNAMIC) +# from $(OBJECT) and possibly $(MYEXTLIB). +ARMAYBE = : +OTHERLDFLAGS = +INST_DYNAMIC_DEP = +INST_DYNAMIC_FIX = + +$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP) + $(RM_F) $@ + $(LD) $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) -o $@ $(MYEXTLIB) \ + $(PERL_ARCHIVE) $(LDLOADLIBS) $(PERL_ARCHIVE_AFTER) $(EXPORT_LIST) \ + $(INST_DYNAMIC_FIX) + $(CHMOD) $(PERM_RWX) $@ + $(NOECHO) $(RM_RF) $(BOOTSTRAP) + - $(CP_NONEMPTY) $(BOOTSTRAP) $(INST_BOOT) $(PERM_RW) + + +# --- MakeMaker static section: + +## $(INST_PM) has been moved to the all: target. +## It remains here for awhile to allow for old usage: "make static" +static :: $(FIRST_MAKEFILE) $(INST_STATIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker static_lib section: + +$(INST_STATIC) : $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists + $(RM_RF) $@ + $(FULL_AR) $(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@ + $(CHMOD) $(PERM_RWX) $@ + $(NOECHO) $(ECHO) "$(EXTRALIBS)" > "$(INST_ARCHAUTODIR)/extralibs.ld" + + +# --- MakeMaker manifypods section: + +POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--" +POD2MAN = $(POD2MAN_EXE) + + +manifypods : pure_all \ + Expat.pm + $(NOECHO) $(POD2MAN) --section=$(MAN3EXT) --perm_rw=$(PERM_RW) -u \ + Expat.pm $(INST_MAN3DIR)/XML::Parser::Expat.$(MAN3EXT) + + + + +# --- MakeMaker processPL section: + + +# --- MakeMaker installbin section: + + +# --- MakeMaker subdirs section: + +# none + +# --- MakeMaker clean_subdirs section: +clean_subdirs : + $(NOECHO) $(NOOP) + + +# --- MakeMaker clean section: + +# Delete temporary files but do not touch installed files. We don't delete +# the Makefile here so a later make realclean still has a makefile to use. + +clean :: clean_subdirs + - $(RM_F) \ + $(BASEEXT).bso $(BASEEXT).def \ + $(BASEEXT).exp $(BASEEXT).x \ + $(BOOTSTRAP) $(INST_ARCHAUTODIR)/extralibs.all \ + $(INST_ARCHAUTODIR)/extralibs.ld $(MAKE_APERL_FILE) \ + *$(LIB_EXT) *$(OBJ_EXT) \ + *perl.core Expat.c \ + MYMETA.json MYMETA.yml \ + blibdirs.ts core \ + core.*perl.*.? core.[0-9] \ + core.[0-9][0-9] core.[0-9][0-9][0-9] \ + core.[0-9][0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9][0-9] \ + lib$(BASEEXT).def mon.out \ + perl perl$(EXE_EXT) \ + perl.exe perlmain.c \ + pm_to_blib pm_to_blib.ts \ + so_locations tmon.out + - $(RM_RF) \ + blib + $(NOECHO) $(RM_F) $(MAKEFILE_OLD) + - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL) + + +# --- MakeMaker realclean_subdirs section: +realclean_subdirs : + $(NOECHO) $(NOOP) + + +# --- MakeMaker realclean section: +# Delete temporary files (via clean) and also delete dist files +realclean purge :: clean realclean_subdirs + - $(RM_F) \ + $(MAKEFILE_OLD) $(OBJECT) \ + $(FIRST_MAKEFILE) + - $(RM_RF) \ + $(DISTVNAME) + + +# --- MakeMaker metafile section: +metafile : create_distdir + $(NOECHO) $(ECHO) Generating META.yml + $(NOECHO) $(ECHO) '---' > META_new.yml + $(NOECHO) $(ECHO) 'abstract: "Lowlevel access to James Clark'\''s expat XML parser"' >> META_new.yml + $(NOECHO) $(ECHO) 'author:' >> META_new.yml + $(NOECHO) $(ECHO) ' - '\''Matt Sergeant (matt@sergeant.org)'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'dynamic_config: 1' >> META_new.yml + $(NOECHO) $(ECHO) 'generated_by: '\''ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'license: unknown' >> META_new.yml + $(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml + $(NOECHO) $(ECHO) ' url: http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml + $(NOECHO) $(ECHO) ' version: '\''1.4'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'name: XML-Parser-Expat' >> META_new.yml + $(NOECHO) $(ECHO) 'no_index:' >> META_new.yml + $(NOECHO) $(ECHO) ' directory:' >> META_new.yml + $(NOECHO) $(ECHO) ' - t' >> META_new.yml + $(NOECHO) $(ECHO) ' - inc' >> META_new.yml + $(NOECHO) $(ECHO) 'requires: {}' >> META_new.yml + $(NOECHO) $(ECHO) 'version: '\''2.44'\''' >> META_new.yml + -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml + $(NOECHO) $(ECHO) Generating META.json + $(NOECHO) $(ECHO) '{' > META_new.json + $(NOECHO) $(ECHO) ' "abstract" : "Lowlevel access to James Clark'\''s expat XML parser",' >> META_new.json + $(NOECHO) $(ECHO) ' "author" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "Matt Sergeant (matt@sergeant.org)"' >> META_new.json + $(NOECHO) $(ECHO) ' ],' >> META_new.json + $(NOECHO) $(ECHO) ' "dynamic_config" : 1,' >> META_new.json + $(NOECHO) $(ECHO) ' "generated_by" : "ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001",' >> META_new.json + $(NOECHO) $(ECHO) ' "license" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "unknown"' >> META_new.json + $(NOECHO) $(ECHO) ' ],' >> META_new.json + $(NOECHO) $(ECHO) ' "meta-spec" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",' >> META_new.json + $(NOECHO) $(ECHO) ' "version" : "2"' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "name" : "XML-Parser-Expat",' >> META_new.json + $(NOECHO) $(ECHO) ' "no_index" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "directory" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "t",' >> META_new.json + $(NOECHO) $(ECHO) ' "inc"' >> META_new.json + $(NOECHO) $(ECHO) ' ]' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "prereqs" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "build" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "ExtUtils::MakeMaker" : "0"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "configure" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "ExtUtils::MakeMaker" : "0"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "runtime" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {}' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "release_status" : "stable",' >> META_new.json + $(NOECHO) $(ECHO) ' "version" : "2.44"' >> META_new.json + $(NOECHO) $(ECHO) '}' >> META_new.json + -$(NOECHO) $(MV) META_new.json $(DISTVNAME)/META.json + + +# --- MakeMaker signature section: +signature : + cpansign -s + + +# --- MakeMaker dist_basics section skipped. + +# --- MakeMaker dist_core section skipped. + +# --- MakeMaker distdir section skipped. + +# --- MakeMaker dist_test section skipped. + +# --- MakeMaker dist_ci section skipped. + +# --- MakeMaker distmeta section: +distmeta : create_distdir metafile + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -e q{META.yml};' \ + -e 'eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) }' \ + -e ' or print "Could not add META.yml to MANIFEST: $$$${'\''@'\''}\n"' -- + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -f q{META.json};' \ + -e 'eval { maniadd({q{META.json} => q{Module JSON meta-data (added by MakeMaker)}}) }' \ + -e ' or print "Could not add META.json to MANIFEST: $$$${'\''@'\''}\n"' -- + + + +# --- MakeMaker distsignature section: +distsignature : create_distdir + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) }' \ + -e ' or print "Could not add SIGNATURE to MANIFEST: $$$${'\''@'\''}\n"' -- + $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE + cd $(DISTVNAME) && cpansign -s + + + +# --- MakeMaker install section skipped. + +# --- MakeMaker force section: +# Phony target to force checking subdirectories. +FORCE : + $(NOECHO) $(NOOP) + + +# --- MakeMaker perldepend section: +PERL_HDRS = \ + $(PERL_INCDEP)/EXTERN.h \ + $(PERL_INCDEP)/INTERN.h \ + $(PERL_INCDEP)/XSUB.h \ + $(PERL_INCDEP)/av.h \ + $(PERL_INCDEP)/bitcount.h \ + $(PERL_INCDEP)/charclass_invlists.h \ + $(PERL_INCDEP)/config.h \ + $(PERL_INCDEP)/cop.h \ + $(PERL_INCDEP)/cv.h \ + $(PERL_INCDEP)/dosish.h \ + $(PERL_INCDEP)/ebcdic_tables.h \ + $(PERL_INCDEP)/embed.h \ + $(PERL_INCDEP)/embedvar.h \ + $(PERL_INCDEP)/fakesdio.h \ + $(PERL_INCDEP)/feature.h \ + $(PERL_INCDEP)/form.h \ + $(PERL_INCDEP)/git_version.h \ + $(PERL_INCDEP)/gv.h \ + $(PERL_INCDEP)/handy.h \ + $(PERL_INCDEP)/hv.h \ + $(PERL_INCDEP)/hv_func.h \ + $(PERL_INCDEP)/inline.h \ + $(PERL_INCDEP)/intrpvar.h \ + $(PERL_INCDEP)/iperlsys.h \ + $(PERL_INCDEP)/keywords.h \ + $(PERL_INCDEP)/l1_char_class_tab.h \ + $(PERL_INCDEP)/malloc_ctl.h \ + $(PERL_INCDEP)/metaconfig.h \ + $(PERL_INCDEP)/mg.h \ + $(PERL_INCDEP)/mg_data.h \ + $(PERL_INCDEP)/mg_raw.h \ + $(PERL_INCDEP)/mg_vtable.h \ + $(PERL_INCDEP)/mydtrace.h \ + $(PERL_INCDEP)/nostdio.h \ + $(PERL_INCDEP)/op.h \ + $(PERL_INCDEP)/op_reg_common.h \ + $(PERL_INCDEP)/opcode.h \ + $(PERL_INCDEP)/opnames.h \ + $(PERL_INCDEP)/overload.h \ + $(PERL_INCDEP)/pad.h \ + $(PERL_INCDEP)/parser.h \ + $(PERL_INCDEP)/patchlevel-debian.h \ + $(PERL_INCDEP)/patchlevel.h \ + $(PERL_INCDEP)/perl.h \ + $(PERL_INCDEP)/perlapi.h \ + $(PERL_INCDEP)/perlio.h \ + $(PERL_INCDEP)/perliol.h \ + $(PERL_INCDEP)/perlsdio.h \ + $(PERL_INCDEP)/perlvars.h \ + $(PERL_INCDEP)/perly.h \ + $(PERL_INCDEP)/pp.h \ + $(PERL_INCDEP)/pp_proto.h \ + $(PERL_INCDEP)/proto.h \ + $(PERL_INCDEP)/reentr.h \ + $(PERL_INCDEP)/regcharclass.h \ + $(PERL_INCDEP)/regcomp.h \ + $(PERL_INCDEP)/regexp.h \ + $(PERL_INCDEP)/regnodes.h \ + $(PERL_INCDEP)/scope.h \ + $(PERL_INCDEP)/sv.h \ + $(PERL_INCDEP)/thread.h \ + $(PERL_INCDEP)/time64.h \ + $(PERL_INCDEP)/time64_config.h \ + $(PERL_INCDEP)/uconfig.h \ + $(PERL_INCDEP)/unicode_constants.h \ + $(PERL_INCDEP)/unixish.h \ + $(PERL_INCDEP)/utf8.h \ + $(PERL_INCDEP)/utfebcdic.h \ + $(PERL_INCDEP)/util.h \ + $(PERL_INCDEP)/uudmap.h \ + $(PERL_INCDEP)/vutil.h \ + $(PERL_INCDEP)/warnings.h + +$(OBJECT) : $(PERL_HDRS) + +Expat.c : $(XSUBPPDEPS) + + +# --- MakeMaker makefile section: + +$(OBJECT) : $(FIRST_MAKEFILE) + +# We take a very conservative approach here, but it's worth it. +# We move Makefile to Makefile.old here to avoid gnu make looping. +$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP) + $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?" + $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..." + -$(NOECHO) $(RM_F) $(MAKEFILE_OLD) + -$(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) + - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL) + $(PERLRUN) Makefile.PL + $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <==" + $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <==" + $(FALSE) + + + +# --- MakeMaker staticmake section: + +# --- MakeMaker makeaperl section --- +MAP_TARGET = ../perl +FULLPERL = "/usr/bin/perl" + + +# --- MakeMaker test section: + +TEST_VERBOSE=0 +TEST_TYPE=test_$(LINKTYPE) +TEST_FILE = test.pl +TEST_FILES = +TESTDB_SW = -d + +testdb :: testdb_$(LINKTYPE) + +test :: $(TEST_TYPE) subdirs-test + +subdirs-test :: + $(NOECHO) $(NOOP) + + $(NOECHO) $(ECHO) 'No tests defined for $(NAME) extension.' + +test_dynamic :: pure_all + +testdb_dynamic :: pure_all + PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) + +test_ : test_dynamic + +test_static :: pure_all $(MAP_TARGET) + +testdb_static :: pure_all $(MAP_TARGET) + PERL_DL_NONLAZY=1 ./$(MAP_TARGET) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) + + + +# --- MakeMaker ppd section: +# Creates a PPD (Perl Package Description) for a binary distribution. +ppd : + $(NOECHO) $(ECHO) '' > $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' Lowlevel access to James Clark'\''s expat XML parser' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' Matt Sergeant (matt@sergeant.org)' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) '' >> $(DISTNAME).ppd + + +# --- MakeMaker pm_to_blib section: + +pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM) + $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \ + Expat.pm $(INST_LIB)/XML/Parser/Expat.pm + $(NOECHO) $(TOUCH) pm_to_blib + + +# --- MakeMaker selfdocument section: + + +# --- MakeMaker postamble section: + + +# End. diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Makefile.PL b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Makefile.PL new file mode 100644 index 0000000000000000000000000000000000000000..6d5111c527a8bb008c4f74d89e824906d8d3e8b7 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/Makefile.PL @@ -0,0 +1,29 @@ +use ExtUtils::MakeMaker; +use Config; +use English; + +my $libs = "-lexpat"; +my @extras = (); + +push(@extras, INC => "-I$expat_incpath") if $expat_incpath; + +$libs = "-L$expat_libpath $libs" if $expat_libpath; + +push(@extras, CAPI => 'TRUE') + if (($PERL_VERSION >= 5.005) and ($OSNAME eq 'MSWin32') + and ($Config{archname} =~ /-object\b/i)); + +push(@extras, + ABSTRACT => "Lowlevel access to James Clark's expat XML parser", + AUTHOR => 'Matt Sergeant (matt@sergeant.org)') + if ($ExtUtils::MakeMaker::VERSION >= 5.4301); + +WriteMakefile( + NAME => 'XML::Parser::Expat', + C => ['Expat.c'], + LIBS => $libs, + XSPROTOARG => '-noprototypes', + VERSION_FROM => 'Expat.pm', + @extras +); + diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/encoding.h b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/encoding.h new file mode 100644 index 0000000000000000000000000000000000000000..4e0374b06bba9fc54f213405b53441b1fc8a27e4 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/encoding.h @@ -0,0 +1,91 @@ +/***************************************************************** +** encoding.h +** +** Copyright 1998 Clark Cooper +** All rights reserved. +** +** This program is free software; you can redistribute it and/or +** modify it under the same terms as Perl itself. +*/ + +#ifndef ENCODING_H +#define ENCODING_H 1 + +#define ENCMAP_MAGIC 0xfeebface + +typedef struct prefixmap { + unsigned char min; + unsigned char len; /* 0 => 256 */ + unsigned short bmap_start; + unsigned char ispfx[32]; + unsigned char ischar[32]; +} PrefixMap; + +typedef struct encinf +{ + unsigned short prefixes_size; + unsigned short bytemap_size; + int firstmap[256]; + PrefixMap *prefixes; + unsigned short *bytemap; +} Encinfo; + +typedef struct encmaphdr +{ + unsigned int magic; + char name[40]; + unsigned short pfsize; + unsigned short bmsize; + int map[256]; +} Encmap_Header; + +/*================================================================ +** Structure of Encoding map binary encoding +** +** Note that all shorts and ints are in network order, +** so when packing or unpacking with perl, use 'n' and 'N' respectively. +** In C, use the htonl family of functions. +** +** The basic structure is: +** +** _______________________ +** |Header (including map expat needs for 1st byte) +** |PrefixMap * pfsize +** | This section isn't included for single-byte encodings. +** | For multiple byte encodings, when a byte represents a prefix +** | then it indexes into this vector instead of mapping to a +** | Unicode character. The PrefixMap type is declared above. The +** | ispfx and ischar fields are bitvectors indicating whether +** | the byte being mapped is a prefix or character respectively. +** | If neither is set, then the character is not mapped to Unicode. +** | +** | The min field is the 1st byte mapped for this prefix; the +** | len field is the number of bytes mapped; and bmap_start is +** | the starting index of the map for this prefix in the overall +** | map (next section). +** |unsigned short * bmsize +** | This section also is omitted for single-byte encodings. +** | Each short is either a Unicode scalar or an index into the +** | PrefixMap vector. +** +** The header for these files is declared above as the Encmap_Header type. +** The magic field is a magic number which should match the ENCMAP_MAGIC +** macro above. The next 40 bytes stores IANA registered name for the +** encoding. The pfsize field holds the number of PrefixMaps, which should +** be zero for single byte encodings. The bmsize field holds the number of +** shorts used for the overall map. +** +** The map field contains either the Unicode scalar encoded by the 1st byte +** or -n where n is the number of bytes that such a 1st byte implies (Expat +** requires that the number of bytes to encode a character is indicated by +** the 1st byte) or -1 if the byte doesn't map to any Unicode character. +** +** If the encoding is a multiple byte encoding, then there will be PrefixMap +** and character map sections. The 1st PrefixMap (index 0), covers a range +** of bytes that includes all 1st byte prefixes. +** +** Look at convert_to_unicode in Expat.xs to see how this data structure +** is used. +*/ + +#endif /* ndef ENCODING_H */ diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/pm_to_blib b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/pm_to_blib new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/typemap b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/typemap new file mode 100644 index 0000000000000000000000000000000000000000..47d7dc540a162e78cf3afcbab5e3c4d3dba723c6 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Expat/typemap @@ -0,0 +1,24 @@ +# +##### XML::Parser::Expat typemap +# + +XML_Parser T_PTR +Encinfo * T_ENCOBJ + +################################################################ +INPUT +T_ENCOBJ + if (sv_derived_from($arg, \"XML::Parser::Encinfo\")) { + IV tmp = SvIV((SV*)SvRV($arg)); + $var = ($type) tmp; + } + else + croak(\"$var is not of type XML::Parser::Encinfo\") +################################################################ +OUTPUT +T_ENCOBJ + if ($var) { + sv_setref_pv($arg, \"XML::Parser::Encinfo\", (void*)$var); + } + else + $arg = &PL_sv_undef; diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/MANIFEST b/fastSum/resources/ROUGE/XML-Parser-2.44/MANIFEST new file mode 100644 index 0000000000000000000000000000000000000000..eb62f2d56f1ed81e42a0c03475e283e76ac39f78 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/MANIFEST @@ -0,0 +1,67 @@ +inc/Devel/CheckLib.pm +Changes Change log +Expat/Expat.pm XML::Parser::Expat module +Expat/Expat.xs Extension library +Expat/Makefile.PL perl MakeMaker script for XML::Parser::Expat +Expat/encoding.h Header file; describes *.enc structure +Expat/typemap XS typemap +MANIFEST This file +Makefile.PL perl MakeMaker script for XML::Parser +Parser.pm XML::Parser module +Parser/LWPExternEnt.pl LWP based external entity handler +Parser/Encodings/Japanese_Encodings.msg Message about Japanese encodings. +Parser/Encodings/README Info about encoding maps +Parser/Encodings/big5.enc Big5 binary encoding map +Parser/Encodings/euc-kr.enc EUC-KR binary encoding map +Parser/Encodings/iso-8859-2.enc ISO-8859-2 binary encoding map +Parser/Encodings/iso-8859-3.enc ISO-8859-3 binary encoding map +Parser/Encodings/iso-8859-4.enc ISO-8859-4 binary encoding map +Parser/Encodings/iso-8859-5.enc ISO-8859-5 binary encoding map +Parser/Encodings/iso-8859-7.enc ISO-8859-7 binary encoding map +Parser/Encodings/iso-8859-8.enc ISO-8859-8 binary encoding map +Parser/Encodings/iso-8859-9.enc ISO-8859-9 binary encoding map +Parser/Encodings/windows-1250.enc cp1250-WinLatin2 binary encoding map +Parser/Encodings/windows-1251.enc cp1251-Russian binary encoding map +Parser/Encodings/windows-1252.enc cp1252-WinLatin1 binary encoding map +Parser/Encodings/windows-1255.enc hebrew +Parser/Encodings/x-euc-jp-jisx0221.enc X-euc-jp-jisx0221 encoding map +Parser/Encodings/x-euc-jp-unicode.enc X-euc-jp-unicde encoding map +Parser/Encodings/x-sjis-cp932.enc x-sjis-cp932 encoding map +Parser/Encodings/x-sjis-jdk117.enc x-sjis-jdk117 encoding map +Parser/Encodings/x-sjis-jisx0221.enc x-sjis-jisx0221 encoding map +Parser/Encodings/x-sjis-unicode.enc x-sjis-unicode encoding map +Parser/Encodings/ibm866.enc +Parser/Encodings/koi8-r.enc +Parser/Style/Debug.pm Debug style parser +Parser/Style/Objects.pm Objects style parser +Parser/Style/Stream.pm Stream style parser +Parser/Style/Subs.pm Subs style parser +Parser/Style/Tree.pm Tree style parser +README Short explanation +samples/canonical A utility to generate canonical XML +samples/canontst.xml An xml document to demonstrate canonical +samples/ctest.dtd An external DTD used by canontst.xml +samples/REC-xml-19980210.xml The XML spec in xml form +samples/xmlcomments A utility to extract comments +samples/xmlfilter A utility to filter elements +samples/xmlstats A utility to report on element statistics +t/astress.t Test script +t/cdata.t Test script +t/decl.t Test script +t/defaulted.t Test script +t/encoding.t Test script +t/external_ent.t Test script +t/file.t Test script +t/file_open_scalar.t Test script +t/finish.t Test script +t/ext.ent External entity for parament.t test +t/ext2.ent External entity for parament.t test +t/foo.dtd External DTD for parament.t test +t/namespaces.t Test script +t/parament.t Test script +t/partial.t Test script +t/skip.t Test script +t/stream.t Test script +t/styles.t Test script +META.yml Module YAML meta-data (added by MakeMaker) +META.json Module JSON meta-data (added by MakeMaker) diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/META.json b/fastSum/resources/ROUGE/XML-Parser-2.44/META.json new file mode 100644 index 0000000000000000000000000000000000000000..297fbea74857d0da4e68cdce635a50a47c930759 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/META.json @@ -0,0 +1,47 @@ +{ + "abstract" : "A perl module for parsing XML documents", + "author" : [ + "Clark Cooper (coopercc@netheaven.com)" + ], + "dynamic_config" : 1, + "generated_by" : "ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter version 2.143240", + "license" : [ + "perl_5" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "XML-Parser", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "Test::More" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "runtime" : { + "requires" : { + "LWP::UserAgent" : "0", + "perl" : "5.00405" + } + } + }, + "release_status" : "stable", + "resources" : { + "repository" : { + "url" : "http://github.com/toddr/XML-Parser" + } + }, + "version" : "2.44" +} diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/META.yml b/fastSum/resources/ROUGE/XML-Parser-2.44/META.yml new file mode 100644 index 0000000000000000000000000000000000000000..3453330aaded859eb42df52698674fcf272033c9 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/META.yml @@ -0,0 +1,25 @@ +--- +abstract: 'A perl module for parsing XML documents' +author: + - 'Clark Cooper (coopercc@netheaven.com)' +build_requires: + Test::More: '0' +configure_requires: + ExtUtils::MakeMaker: '0' +dynamic_config: 1 +generated_by: 'ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter version 2.143240' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: XML-Parser +no_index: + directory: + - t + - inc +requires: + LWP::UserAgent: '0' + perl: '5.00405' +resources: + repository: http://github.com/toddr/XML-Parser +version: '2.44' diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/MYMETA.json b/fastSum/resources/ROUGE/XML-Parser-2.44/MYMETA.json new file mode 100644 index 0000000000000000000000000000000000000000..c453aaede055d58126bd8a282be2190c3588bb3d --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/MYMETA.json @@ -0,0 +1,47 @@ +{ + "abstract" : "A perl module for parsing XML documents", + "author" : [ + "Clark Cooper (coopercc@netheaven.com)" + ], + "dynamic_config" : 0, + "generated_by" : "ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter version 2.143240, CPAN::Meta::Converter version 2.150001", + "license" : [ + "perl_5" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "XML-Parser", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "Test::More" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "runtime" : { + "requires" : { + "LWP::UserAgent" : "0", + "perl" : "5.00405" + } + } + }, + "release_status" : "stable", + "resources" : { + "repository" : { + "url" : "http://github.com/toddr/XML-Parser" + } + }, + "version" : "2.44" +} diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/MYMETA.yml b/fastSum/resources/ROUGE/XML-Parser-2.44/MYMETA.yml new file mode 100644 index 0000000000000000000000000000000000000000..f5846a1189dec2727cbda5e08457fc404f32c9d3 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/MYMETA.yml @@ -0,0 +1,25 @@ +--- +abstract: 'A perl module for parsing XML documents' +author: + - 'Clark Cooper (coopercc@netheaven.com)' +build_requires: + Test::More: '0' +configure_requires: + ExtUtils::MakeMaker: '0' +dynamic_config: 0 +generated_by: 'ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter version 2.143240, CPAN::Meta::Converter version 2.150001' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: XML-Parser +no_index: + directory: + - t + - inc +requires: + LWP::UserAgent: '0' + perl: '5.00405' +resources: + repository: http://github.com/toddr/XML-Parser +version: '2.44' diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Makefile b/fastSum/resources/ROUGE/XML-Parser-2.44/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..3fcaa8e4840a9a53581307ff6a855ea71c4bed84 --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Makefile @@ -0,0 +1,1058 @@ +# This Makefile is for the XML::Parser extension to perl. +# +# It was generated automatically by MakeMaker version +# 7.0401 (Revision: 70401) from the contents of +# Makefile.PL. Don't edit this file, edit Makefile.PL instead. +# +# ANY CHANGES MADE HERE WILL BE LOST! +# +# MakeMaker ARGV: () +# + +# MakeMaker Parameters: + +# ABSTRACT_FROM => q[Parser.pm] +# AUTHOR => [q[Clark Cooper (coopercc@netheaven.com)]] +# BUILD_REQUIRES => { Test::More=>q[0] } +# CONFIGURE_REQUIRES => { } +# DIR => [q[Expat]] +# LICENSE => q[perl] +# META_MERGE => { resources=>{ repository=>q[http://github.com/toddr/XML-Parser] } } +# MIN_PERL_VERSION => q[5.00405] +# NAME => q[XML::Parser] +# PREREQ_PM => { LWP::UserAgent=>q[0], Test::More=>q[0] } +# TEST_REQUIRES => { } +# VERSION_FROM => q[Parser.pm] +# dist => { COMPRESS=>q[gzip], SUFFIX=>q[.gz] } + +# --- MakeMaker post_initialize section: + + +# --- MakeMaker const_config section: + +# These definitions are from config.sh (via /usr/lib/x86_64-linux-gnu/perl/5.22/Config.pm). +# They may have been overridden via Makefile.PL or on the command line. +AR = ar +CC = x86_64-linux-gnu-gcc +CCCDLFLAGS = -fPIC +CCDLFLAGS = -Wl,-E +DLEXT = so +DLSRC = dl_dlopen.xs +EXE_EXT = +FULL_AR = /usr/bin/ar +LD = x86_64-linux-gnu-gcc +LDDLFLAGS = -shared -L/usr/local/lib -fstack-protector-strong +LDFLAGS = -fstack-protector-strong -L/usr/local/lib +LIBC = libc-2.23.so +LIB_EXT = .a +OBJ_EXT = .o +OSNAME = linux +OSVERS = 3.16.0 +RANLIB = : +SITELIBEXP = /usr/local/share/perl/5.22.1 +SITEARCHEXP = /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 +SO = so +VENDORARCHEXP = /usr/lib/x86_64-linux-gnu/perl5/5.22 +VENDORLIBEXP = /usr/share/perl5 + + +# --- MakeMaker constants section: +AR_STATIC_ARGS = cr +DIRFILESEP = / +DFSEP = $(DIRFILESEP) +NAME = XML::Parser +NAME_SYM = XML_Parser +VERSION = 2.44 +VERSION_MACRO = VERSION +VERSION_SYM = 2_44 +DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\" +XS_VERSION = 2.44 +XS_VERSION_MACRO = XS_VERSION +XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\" +INST_ARCHLIB = blib/arch +INST_SCRIPT = blib/script +INST_BIN = blib/bin +INST_LIB = blib/lib +INST_MAN1DIR = blib/man1 +INST_MAN3DIR = blib/man3 +MAN1EXT = 1p +MAN3EXT = 3pm +INSTALLDIRS = site +DESTDIR = +PREFIX = $(SITEPREFIX) +PERLPREFIX = /usr +SITEPREFIX = /usr/local +VENDORPREFIX = /usr +INSTALLPRIVLIB = /usr/share/perl/5.22 +DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB) +INSTALLSITELIB = /usr/local/share/perl/5.22.1 +DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB) +INSTALLVENDORLIB = /usr/share/perl5 +DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB) +INSTALLARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.22 +DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB) +INSTALLSITEARCH = /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 +DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH) +INSTALLVENDORARCH = /usr/lib/x86_64-linux-gnu/perl5/5.22 +DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH) +INSTALLBIN = /usr/bin +DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN) +INSTALLSITEBIN = /usr/local/bin +DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN) +INSTALLVENDORBIN = /usr/bin +DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN) +INSTALLSCRIPT = /usr/bin +DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT) +INSTALLSITESCRIPT = /usr/local/bin +DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT) +INSTALLVENDORSCRIPT = /usr/bin +DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT) +INSTALLMAN1DIR = /usr/share/man/man1 +DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR) +INSTALLSITEMAN1DIR = /usr/local/man/man1 +DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR) +INSTALLVENDORMAN1DIR = /usr/share/man/man1 +DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR) +INSTALLMAN3DIR = /usr/share/man/man3 +DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR) +INSTALLSITEMAN3DIR = /usr/local/man/man3 +DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR) +INSTALLVENDORMAN3DIR = /usr/share/man/man3 +DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR) +PERL_LIB = /usr/share/perl/5.22 +PERL_ARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.22 +PERL_ARCHLIBDEP = /usr/lib/x86_64-linux-gnu/perl/5.22 +LIBPERL_A = libperl.a +FIRST_MAKEFILE = Makefile +MAKEFILE_OLD = Makefile.old +MAKE_APERL_FILE = Makefile.aperl +PERLMAINCC = $(CC) +PERL_INC = /usr/lib/x86_64-linux-gnu/perl/5.22/CORE +PERL_INCDEP = /usr/lib/x86_64-linux-gnu/perl/5.22/CORE +PERL = "/usr/bin/perl" +FULLPERL = "/usr/bin/perl" +ABSPERL = $(PERL) +PERLRUN = $(PERL) +FULLPERLRUN = $(FULLPERL) +ABSPERLRUN = $(ABSPERL) +PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +PERL_CORE = 0 +PERM_DIR = 755 +PERM_RW = 644 +PERM_RWX = 755 + +MAKEMAKER = /usr/share/perl/5.22/ExtUtils/MakeMaker.pm +MM_VERSION = 7.0401 +MM_REVISION = 70401 + +# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle). +# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle) +# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar) +# DLBASE = Basename part of dynamic library. May be just equal BASEEXT. +MAKE = make +FULLEXT = XML/Parser +BASEEXT = Parser +PARENT_NAME = XML +DLBASE = $(BASEEXT) +VERSION_FROM = Parser.pm +OBJECT = +LDFROM = $(OBJECT) +LINKTYPE = dynamic +BOOTDEP = + +# Handy lists of source code files: +XS_FILES = +C_FILES = +O_FILES = +H_FILES = +MAN1PODS = +MAN3PODS = Parser.pm \ + Parser/Style/Debug.pm \ + Parser/Style/Objects.pm \ + Parser/Style/Stream.pm \ + Parser/Style/Subs.pm \ + Parser/Style/Tree.pm + +# Where is the Config information that we are using/depend on +CONFIGDEP = $(PERL_ARCHLIBDEP)$(DFSEP)Config.pm $(PERL_INCDEP)$(DFSEP)config.h + +# Where to build things +INST_LIBDIR = $(INST_LIB)/XML +INST_ARCHLIBDIR = $(INST_ARCHLIB)/XML + +INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT) +INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT) + +INST_STATIC = +INST_DYNAMIC = +INST_BOOT = + +# Extra linker info +EXPORT_LIST = +PERL_ARCHIVE = +PERL_ARCHIVEDEP = +PERL_ARCHIVE_AFTER = + + +TO_INST_PM = Parser.pm \ + Parser/Encodings/Japanese_Encodings.msg \ + Parser/Encodings/README \ + Parser/Encodings/big5.enc \ + Parser/Encodings/euc-kr.enc \ + Parser/Encodings/ibm866.enc \ + Parser/Encodings/iso-8859-2.enc \ + Parser/Encodings/iso-8859-3.enc \ + Parser/Encodings/iso-8859-4.enc \ + Parser/Encodings/iso-8859-5.enc \ + Parser/Encodings/iso-8859-7.enc \ + Parser/Encodings/iso-8859-8.enc \ + Parser/Encodings/iso-8859-9.enc \ + Parser/Encodings/koi8-r.enc \ + Parser/Encodings/windows-1250.enc \ + Parser/Encodings/windows-1251.enc \ + Parser/Encodings/windows-1252.enc \ + Parser/Encodings/windows-1255.enc \ + Parser/Encodings/x-euc-jp-jisx0221.enc \ + Parser/Encodings/x-euc-jp-unicode.enc \ + Parser/Encodings/x-sjis-cp932.enc \ + Parser/Encodings/x-sjis-jdk117.enc \ + Parser/Encodings/x-sjis-jisx0221.enc \ + Parser/Encodings/x-sjis-unicode.enc \ + Parser/LWPExternEnt.pl \ + Parser/Style/Debug.pm \ + Parser/Style/Objects.pm \ + Parser/Style/Stream.pm \ + Parser/Style/Subs.pm \ + Parser/Style/Tree.pm + +PM_TO_BLIB = Parser.pm \ + $(INST_LIB)/XML/Parser.pm \ + Parser/Encodings/Japanese_Encodings.msg \ + $(INST_LIB)/XML/Parser/Encodings/Japanese_Encodings.msg \ + Parser/Encodings/README \ + $(INST_LIB)/XML/Parser/Encodings/README \ + Parser/Encodings/big5.enc \ + $(INST_LIB)/XML/Parser/Encodings/big5.enc \ + Parser/Encodings/euc-kr.enc \ + $(INST_LIB)/XML/Parser/Encodings/euc-kr.enc \ + Parser/Encodings/ibm866.enc \ + $(INST_LIB)/XML/Parser/Encodings/ibm866.enc \ + Parser/Encodings/iso-8859-2.enc \ + $(INST_LIB)/XML/Parser/Encodings/iso-8859-2.enc \ + Parser/Encodings/iso-8859-3.enc \ + $(INST_LIB)/XML/Parser/Encodings/iso-8859-3.enc \ + Parser/Encodings/iso-8859-4.enc \ + $(INST_LIB)/XML/Parser/Encodings/iso-8859-4.enc \ + Parser/Encodings/iso-8859-5.enc \ + $(INST_LIB)/XML/Parser/Encodings/iso-8859-5.enc \ + Parser/Encodings/iso-8859-7.enc \ + $(INST_LIB)/XML/Parser/Encodings/iso-8859-7.enc \ + Parser/Encodings/iso-8859-8.enc \ + $(INST_LIB)/XML/Parser/Encodings/iso-8859-8.enc \ + Parser/Encodings/iso-8859-9.enc \ + $(INST_LIB)/XML/Parser/Encodings/iso-8859-9.enc \ + Parser/Encodings/koi8-r.enc \ + $(INST_LIB)/XML/Parser/Encodings/koi8-r.enc \ + Parser/Encodings/windows-1250.enc \ + $(INST_LIB)/XML/Parser/Encodings/windows-1250.enc \ + Parser/Encodings/windows-1251.enc \ + $(INST_LIB)/XML/Parser/Encodings/windows-1251.enc \ + Parser/Encodings/windows-1252.enc \ + $(INST_LIB)/XML/Parser/Encodings/windows-1252.enc \ + Parser/Encodings/windows-1255.enc \ + $(INST_LIB)/XML/Parser/Encodings/windows-1255.enc \ + Parser/Encodings/x-euc-jp-jisx0221.enc \ + $(INST_LIB)/XML/Parser/Encodings/x-euc-jp-jisx0221.enc \ + Parser/Encodings/x-euc-jp-unicode.enc \ + $(INST_LIB)/XML/Parser/Encodings/x-euc-jp-unicode.enc \ + Parser/Encodings/x-sjis-cp932.enc \ + $(INST_LIB)/XML/Parser/Encodings/x-sjis-cp932.enc \ + Parser/Encodings/x-sjis-jdk117.enc \ + $(INST_LIB)/XML/Parser/Encodings/x-sjis-jdk117.enc \ + Parser/Encodings/x-sjis-jisx0221.enc \ + $(INST_LIB)/XML/Parser/Encodings/x-sjis-jisx0221.enc \ + Parser/Encodings/x-sjis-unicode.enc \ + $(INST_LIB)/XML/Parser/Encodings/x-sjis-unicode.enc \ + Parser/LWPExternEnt.pl \ + $(INST_LIB)/XML/Parser/LWPExternEnt.pl \ + Parser/Style/Debug.pm \ + $(INST_LIB)/XML/Parser/Style/Debug.pm \ + Parser/Style/Objects.pm \ + $(INST_LIB)/XML/Parser/Style/Objects.pm \ + Parser/Style/Stream.pm \ + $(INST_LIB)/XML/Parser/Style/Stream.pm \ + Parser/Style/Subs.pm \ + $(INST_LIB)/XML/Parser/Style/Subs.pm \ + Parser/Style/Tree.pm \ + $(INST_LIB)/XML/Parser/Style/Tree.pm + + +# --- MakeMaker platform_constants section: +MM_Unix_VERSION = 7.0401 +PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc + + +# --- MakeMaker tool_autosplit section: +# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto +AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$$$ARGV[0], $$$$ARGV[1], 0, 1, 1)' -- + + + +# --- MakeMaker tool_xsubpp section: + +XSUBPPDIR = /usr/share/perl/5.22/ExtUtils +XSUBPP = "$(XSUBPPDIR)$(DFSEP)xsubpp" +XSUBPPRUN = $(PERLRUN) $(XSUBPP) +XSPROTOARG = +XSUBPPDEPS = /usr/share/perl/5.22/ExtUtils/typemap /usr/share/perl/5.22/ExtUtils$(DFSEP)xsubpp +XSUBPPARGS = -typemap "/usr/share/perl/5.22/ExtUtils/typemap" +XSUBPP_EXTRA_ARGS = + + +# --- MakeMaker tools_other section: +SHELL = /bin/sh +CHMOD = chmod +CP = cp +MV = mv +NOOP = $(TRUE) +NOECHO = @ +RM_F = rm -f +RM_RF = rm -rf +TEST_F = test -f +TOUCH = touch +UMASK_NULL = umask 0 +DEV_NULL = > /dev/null 2>&1 +MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' -- +EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' -- +FALSE = false +TRUE = true +ECHO = echo +ECHO_N = echo -n +UNINST = 0 +VERBINST = 0 +MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' -- +DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' -- +UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' -- +WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' -- +MACROSTART = +MACROEND = +USEMAKEFILE = -f +FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' -- +CP_NONEMPTY = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'cp_nonempty' -- + + +# --- MakeMaker makemakerdflt section: +makemakerdflt : all + $(NOECHO) $(NOOP) + + +# --- MakeMaker dist section: +TAR = tar +TARFLAGS = cvf +ZIP = zip +ZIPFLAGS = -r +COMPRESS = gzip +SUFFIX = .gz +SHAR = shar +PREOP = $(NOECHO) $(NOOP) +POSTOP = $(NOECHO) $(NOOP) +TO_UNIX = $(NOECHO) $(NOOP) +CI = ci -u +RCS_LABEL = rcs -Nv$(VERSION_SYM): -q +DIST_CP = best +DIST_DEFAULT = tardist +DISTNAME = XML-Parser +DISTVNAME = XML-Parser-2.44 + + +# --- MakeMaker macro section: + + +# --- MakeMaker depend section: + + +# --- MakeMaker cflags section: + +CCFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +OPTIMIZE = -O2 -g +PERLTYPE = +MPOLLUTE = + + +# --- MakeMaker const_loadlibs section: + +# XML::Parser might depend on some other libraries: +# See ExtUtils::Liblist for details +# + + +# --- MakeMaker const_cccmd section: +CCCMD = $(CC) -c $(PASTHRU_INC) $(INC) \ + $(CCFLAGS) $(OPTIMIZE) \ + $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \ + $(XS_DEFINE_VERSION) + +# --- MakeMaker post_constants section: + + +# --- MakeMaker pasthru section: + +PASTHRU = LIBPERL_A="$(LIBPERL_A)"\ + LINKTYPE="$(LINKTYPE)"\ + OPTIMIZE="$(OPTIMIZE)"\ + LD="$(LD)"\ + PREFIX="$(PREFIX)" + + +# --- MakeMaker special_targets section: +.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT) + +.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir + + + +# --- MakeMaker c_o section: + +.c.i: + x86_64-linux-gnu-gcc -E -c $(PASTHRU_INC) $(INC) \ + $(CCFLAGS) $(OPTIMIZE) \ + $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \ + $(XS_DEFINE_VERSION) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c > $*.i + +.c.s: + $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + +.c$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + +.cpp$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cpp + +.cxx$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cxx + +.cc$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cc + +.C$(OBJ_EXT): + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.C + + +# --- MakeMaker xs_c section: + +.xs.c: + $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $(XSUBPP_EXTRA_ARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c + + +# --- MakeMaker xs_o section: + +.xs$(OBJ_EXT): + $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + + +# --- MakeMaker top_targets section: +all :: pure_all manifypods + $(NOECHO) $(NOOP) + + +pure_all :: config pm_to_blib subdirs linkext + $(NOECHO) $(NOOP) + +subdirs :: $(MYEXTLIB) + $(NOECHO) $(NOOP) + +config :: $(FIRST_MAKEFILE) blibdirs + $(NOECHO) $(NOOP) + +help : + perldoc ExtUtils::MakeMaker + + +# --- MakeMaker blibdirs section: +blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists + $(NOECHO) $(NOOP) + +# Backwards compat with 6.18 through 6.25 +blibdirs.ts : blibdirs + $(NOECHO) $(NOOP) + +$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_LIBDIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR) + $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists + +$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHLIB) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB) + $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists + +$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_AUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR) + $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists + +$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR) + $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists + +$(INST_BIN)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_BIN) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN) + $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists + +$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_SCRIPT) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT) + $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists + +$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN1DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR) + $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists + +$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN3DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR) + $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists + + + +# --- MakeMaker linkext section: + +linkext :: $(LINKTYPE) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dlsyms section: + + +# --- MakeMaker dynamic_bs section: + +BOOTSTRAP = + + +# --- MakeMaker dynamic section: + +dynamic :: $(FIRST_MAKEFILE) $(BOOTSTRAP) $(INST_DYNAMIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dynamic_lib section: + + +# --- MakeMaker static section: + +## $(INST_PM) has been moved to the all: target. +## It remains here for awhile to allow for old usage: "make static" +static :: $(FIRST_MAKEFILE) $(INST_STATIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker static_lib section: + + +# --- MakeMaker manifypods section: + +POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--" +POD2MAN = $(POD2MAN_EXE) + + +manifypods : pure_all \ + Parser.pm \ + Parser/Style/Debug.pm \ + Parser/Style/Objects.pm \ + Parser/Style/Stream.pm \ + Parser/Style/Subs.pm \ + Parser/Style/Tree.pm + $(NOECHO) $(POD2MAN) --section=$(MAN3EXT) --perm_rw=$(PERM_RW) -u \ + Parser.pm $(INST_MAN3DIR)/XML::Parser.$(MAN3EXT) \ + Parser/Style/Debug.pm $(INST_MAN3DIR)/XML::Parser::Style::Debug.$(MAN3EXT) \ + Parser/Style/Objects.pm $(INST_MAN3DIR)/XML::Parser::Style::Objects.$(MAN3EXT) \ + Parser/Style/Stream.pm $(INST_MAN3DIR)/XML::Parser::Style::Stream.$(MAN3EXT) \ + Parser/Style/Subs.pm $(INST_MAN3DIR)/XML::Parser::Style::Subs.$(MAN3EXT) \ + Parser/Style/Tree.pm $(INST_MAN3DIR)/XML::Parser::Style::Tree.$(MAN3EXT) + + + + +# --- MakeMaker processPL section: + + +# --- MakeMaker installbin section: + + +# --- MakeMaker subdirs section: + +# The default clean, realclean and test targets in this Makefile +# have automatically been given entries for each subdir. + + +subdirs :: + $(NOECHO) cd Expat && $(MAKE) $(USEMAKEFILE) $(FIRST_MAKEFILE) all $(PASTHRU) + + +# --- MakeMaker clean_subdirs section: +clean_subdirs : + $(ABSPERLRUN) -e 'exit 0 unless chdir '\''Expat'\''; system '\''$(MAKE) clean'\'' if -f '\''$(FIRST_MAKEFILE)'\'';' -- + + +# --- MakeMaker clean section: + +# Delete temporary files but do not touch installed files. We don't delete +# the Makefile here so a later make realclean still has a makefile to use. + +clean :: clean_subdirs + - $(RM_F) \ + $(BASEEXT).bso $(BASEEXT).def \ + $(BASEEXT).exp $(BASEEXT).x \ + $(BOOTSTRAP) $(INST_ARCHAUTODIR)/extralibs.all \ + $(INST_ARCHAUTODIR)/extralibs.ld $(MAKE_APERL_FILE) \ + *$(LIB_EXT) *$(OBJ_EXT) \ + *perl.core MYMETA.json \ + MYMETA.yml blibdirs.ts \ + core core.*perl.*.? \ + core.[0-9] core.[0-9][0-9] \ + core.[0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9] \ + core.[0-9][0-9][0-9][0-9][0-9] lib$(BASEEXT).def \ + mon.out perl \ + perl$(EXE_EXT) perl.exe \ + perlmain.c pm_to_blib \ + pm_to_blib.ts so_locations \ + tmon.out + - $(RM_RF) \ + blib + $(NOECHO) $(RM_F) $(MAKEFILE_OLD) + - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL) + + +# --- MakeMaker realclean_subdirs section: +realclean_subdirs : + - $(ABSPERLRUN) -e 'chdir '\''Expat'\''; system '\''$(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) realclean'\'' if -f '\''$(MAKEFILE_OLD)'\'';' -- + - $(ABSPERLRUN) -e 'chdir '\''Expat'\''; system '\''$(MAKE) $(USEMAKEFILE) $(FIRST_MAKEFILE) realclean'\'' if -f '\''$(FIRST_MAKEFILE)'\'';' -- + + +# --- MakeMaker realclean section: +# Delete temporary files (via clean) and also delete dist files +realclean purge :: clean realclean_subdirs + - $(RM_F) \ + $(FIRST_MAKEFILE) $(MAKEFILE_OLD) + - $(RM_RF) \ + $(DISTVNAME) + + +# --- MakeMaker metafile section: +metafile : create_distdir + $(NOECHO) $(ECHO) Generating META.yml + $(NOECHO) $(ECHO) '---' > META_new.yml + $(NOECHO) $(ECHO) 'abstract: '\''A perl module for parsing XML documents'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'author:' >> META_new.yml + $(NOECHO) $(ECHO) ' - '\''Clark Cooper (coopercc@netheaven.com)'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' Test::More: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'dynamic_config: 1' >> META_new.yml + $(NOECHO) $(ECHO) 'generated_by: '\''ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'license: perl' >> META_new.yml + $(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml + $(NOECHO) $(ECHO) ' url: http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml + $(NOECHO) $(ECHO) ' version: '\''1.4'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'name: XML-Parser' >> META_new.yml + $(NOECHO) $(ECHO) 'no_index:' >> META_new.yml + $(NOECHO) $(ECHO) ' directory:' >> META_new.yml + $(NOECHO) $(ECHO) ' - t' >> META_new.yml + $(NOECHO) $(ECHO) ' - inc' >> META_new.yml + $(NOECHO) $(ECHO) 'requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' LWP::UserAgent: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) ' perl: '\''5.00405'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'resources:' >> META_new.yml + $(NOECHO) $(ECHO) ' repository: http://github.com/toddr/XML-Parser' >> META_new.yml + $(NOECHO) $(ECHO) 'version: '\''2.44'\''' >> META_new.yml + -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml + $(NOECHO) $(ECHO) Generating META.json + $(NOECHO) $(ECHO) '{' > META_new.json + $(NOECHO) $(ECHO) ' "abstract" : "A perl module for parsing XML documents",' >> META_new.json + $(NOECHO) $(ECHO) ' "author" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "Clark Cooper (coopercc@netheaven.com)"' >> META_new.json + $(NOECHO) $(ECHO) ' ],' >> META_new.json + $(NOECHO) $(ECHO) ' "dynamic_config" : 1,' >> META_new.json + $(NOECHO) $(ECHO) ' "generated_by" : "ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001",' >> META_new.json + $(NOECHO) $(ECHO) ' "license" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "perl_5"' >> META_new.json + $(NOECHO) $(ECHO) ' ],' >> META_new.json + $(NOECHO) $(ECHO) ' "meta-spec" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",' >> META_new.json + $(NOECHO) $(ECHO) ' "version" : "2"' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "name" : "XML-Parser",' >> META_new.json + $(NOECHO) $(ECHO) ' "no_index" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "directory" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "t",' >> META_new.json + $(NOECHO) $(ECHO) ' "inc"' >> META_new.json + $(NOECHO) $(ECHO) ' ]' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "prereqs" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "build" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "Test::More" : "0"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "configure" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "ExtUtils::MakeMaker" : "0"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "runtime" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "LWP::UserAgent" : "0",' >> META_new.json + $(NOECHO) $(ECHO) ' "perl" : "5.00405"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "release_status" : "stable",' >> META_new.json + $(NOECHO) $(ECHO) ' "resources" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "repository" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "url" : "http://github.com/toddr/XML-Parser"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "version" : "2.44"' >> META_new.json + $(NOECHO) $(ECHO) '}' >> META_new.json + -$(NOECHO) $(MV) META_new.json $(DISTVNAME)/META.json + + +# --- MakeMaker signature section: +signature : + cpansign -s + + +# --- MakeMaker dist_basics section: +distclean :: realclean distcheck + $(NOECHO) $(NOOP) + +distcheck : + $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck + +skipcheck : + $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck + +manifest : + $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest + +veryclean : realclean + $(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old + + + +# --- MakeMaker dist_core section: + +dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE) + $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \ + -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' -- + +tardist : $(DISTVNAME).tar$(SUFFIX) + $(NOECHO) $(NOOP) + +uutardist : $(DISTVNAME).tar$(SUFFIX) + uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)_uu' + +$(DISTVNAME).tar$(SUFFIX) : distdir + $(PREOP) + $(TO_UNIX) + $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME) + $(RM_RF) $(DISTVNAME) + $(COMPRESS) $(DISTVNAME).tar + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)' + $(POSTOP) + +zipdist : $(DISTVNAME).zip + $(NOECHO) $(NOOP) + +$(DISTVNAME).zip : distdir + $(PREOP) + $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME) + $(RM_RF) $(DISTVNAME) + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).zip' + $(POSTOP) + +shdist : distdir + $(PREOP) + $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar + $(RM_RF) $(DISTVNAME) + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).shar' + $(POSTOP) + + +# --- MakeMaker distdir section: +create_distdir : + $(RM_RF) $(DISTVNAME) + $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \ + -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');" + +distdir : create_distdir distmeta + $(NOECHO) $(NOOP) + + + +# --- MakeMaker dist_test section: +disttest : distdir + cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL + cd $(DISTVNAME) && $(MAKE) $(PASTHRU) + cd $(DISTVNAME) && $(MAKE) test $(PASTHRU) + + + +# --- MakeMaker dist_ci section: + +ci : + $(PERLRUN) "-MExtUtils::Manifest=maniread" \ + -e "@all = keys %{ maniread() };" \ + -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \ + -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});" + + +# --- MakeMaker distmeta section: +distmeta : create_distdir metafile + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -e q{META.yml};' \ + -e 'eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) }' \ + -e ' or print "Could not add META.yml to MANIFEST: $$$${'\''@'\''}\n"' -- + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -f q{META.json};' \ + -e 'eval { maniadd({q{META.json} => q{Module JSON meta-data (added by MakeMaker)}}) }' \ + -e ' or print "Could not add META.json to MANIFEST: $$$${'\''@'\''}\n"' -- + + + +# --- MakeMaker distsignature section: +distsignature : create_distdir + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) }' \ + -e ' or print "Could not add SIGNATURE to MANIFEST: $$$${'\''@'\''}\n"' -- + $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE + cd $(DISTVNAME) && cpansign -s + + + +# --- MakeMaker install section: + +install :: pure_install doc_install + $(NOECHO) $(NOOP) + +install_perl :: pure_perl_install doc_perl_install + $(NOECHO) $(NOOP) + +install_site :: pure_site_install doc_site_install + $(NOECHO) $(NOOP) + +install_vendor :: pure_vendor_install doc_vendor_install + $(NOECHO) $(NOOP) + +pure_install :: pure_$(INSTALLDIRS)_install + $(NOECHO) $(NOOP) + +doc_install :: doc_$(INSTALLDIRS)_install + $(NOECHO) $(NOOP) + +pure__install : pure_site_install + $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site + +doc__install : doc_site_install + $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site + +pure_perl_install :: all + $(NOECHO) umask 022; $(MOD_INSTALL) \ + "$(INST_LIB)" "$(DESTINSTALLPRIVLIB)" \ + "$(INST_ARCHLIB)" "$(DESTINSTALLARCHLIB)" \ + "$(INST_BIN)" "$(DESTINSTALLBIN)" \ + "$(INST_SCRIPT)" "$(DESTINSTALLSCRIPT)" \ + "$(INST_MAN1DIR)" "$(DESTINSTALLMAN1DIR)" \ + "$(INST_MAN3DIR)" "$(DESTINSTALLMAN3DIR)" + $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ + "$(SITEARCHEXP)/auto/$(FULLEXT)" + + +pure_site_install :: all + $(NOECHO) umask 02; $(MOD_INSTALL) \ + read "$(SITEARCHEXP)/auto/$(FULLEXT)/.packlist" \ + write "$(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist" \ + "$(INST_LIB)" "$(DESTINSTALLSITELIB)" \ + "$(INST_ARCHLIB)" "$(DESTINSTALLSITEARCH)" \ + "$(INST_BIN)" "$(DESTINSTALLSITEBIN)" \ + "$(INST_SCRIPT)" "$(DESTINSTALLSITESCRIPT)" \ + "$(INST_MAN1DIR)" "$(DESTINSTALLSITEMAN1DIR)" \ + "$(INST_MAN3DIR)" "$(DESTINSTALLSITEMAN3DIR)" + $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ + "$(PERL_ARCHLIB)/auto/$(FULLEXT)" + +pure_vendor_install :: all + $(NOECHO) umask 022; $(MOD_INSTALL) \ + "$(INST_LIB)" "$(DESTINSTALLVENDORLIB)" \ + "$(INST_ARCHLIB)" "$(DESTINSTALLVENDORARCH)" \ + "$(INST_BIN)" "$(DESTINSTALLVENDORBIN)" \ + "$(INST_SCRIPT)" "$(DESTINSTALLVENDORSCRIPT)" \ + "$(INST_MAN1DIR)" "$(DESTINSTALLVENDORMAN1DIR)" \ + "$(INST_MAN3DIR)" "$(DESTINSTALLVENDORMAN3DIR)" + + +doc_perl_install :: all + +doc_site_install :: all + $(NOECHO) $(ECHO) Appending installation info to "$(DESTINSTALLSITEARCH)/perllocal.pod" + -$(NOECHO) umask 02; $(MKPATH) "$(DESTINSTALLSITEARCH)" + -$(NOECHO) umask 02; $(DOC_INSTALL) \ + "Module" "$(NAME)" \ + "installed into" $(INSTALLSITELIB) \ + LINKTYPE "$(LINKTYPE)" \ + VERSION "$(VERSION)" \ + EXE_FILES "$(EXE_FILES)" \ + >> "$(DESTINSTALLSITEARCH)/perllocal.pod" + +doc_vendor_install :: all + + +uninstall :: uninstall_from_$(INSTALLDIRS)dirs + $(NOECHO) $(NOOP) + +uninstall_from_perldirs :: + +uninstall_from_sitedirs :: + $(NOECHO) $(UNINSTALL) "$(SITEARCHEXP)/auto/$(FULLEXT)/.packlist" + +uninstall_from_vendordirs :: + + +# --- MakeMaker force section: +# Phony target to force checking subdirectories. +FORCE : + $(NOECHO) $(NOOP) + + +# --- MakeMaker perldepend section: + + +# --- MakeMaker makefile section: +# We take a very conservative approach here, but it's worth it. +# We move Makefile to Makefile.old here to avoid gnu make looping. +$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP) + $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?" + $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..." + -$(NOECHO) $(RM_F) $(MAKEFILE_OLD) + -$(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) + - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL) + $(PERLRUN) Makefile.PL + $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <==" + $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <==" + $(FALSE) + + + +# --- MakeMaker staticmake section: + +# --- MakeMaker makeaperl section --- +MAP_TARGET = perl +FULLPERL = "/usr/bin/perl" + +$(MAP_TARGET) :: static $(MAKE_APERL_FILE) + $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@ + +$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib + $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET) + $(NOECHO) $(PERLRUNINST) \ + Makefile.PL DIR="Expat" \ + MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \ + MAKEAPERL=1 NORECURS=1 CCCDLFLAGS= + + +# --- MakeMaker test section: + +TEST_VERBOSE=0 +TEST_TYPE=test_$(LINKTYPE) +TEST_FILE = test.pl +TEST_FILES = t/*.t +TESTDB_SW = -d + +testdb :: testdb_$(LINKTYPE) + +test :: $(TEST_TYPE) subdirs-test + +subdirs-test :: + $(NOECHO) $(NOOP) + + +test_dynamic :: pure_all + PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES) + +testdb_dynamic :: pure_all + PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) + +test_ : test_dynamic + +test_static :: pure_all $(MAP_TARGET) + PERL_DL_NONLAZY=1 ./$(MAP_TARGET) "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES) + +testdb_static :: pure_all $(MAP_TARGET) + PERL_DL_NONLAZY=1 ./$(MAP_TARGET) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) + + + +# --- MakeMaker ppd section: +# Creates a PPD (Perl Package Description) for a binary distribution. +ppd : + $(NOECHO) $(ECHO) '' > $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' A perl module for parsing XML documents' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' Clark Cooper (coopercc@netheaven.com)' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) '' >> $(DISTNAME).ppd + + +# --- MakeMaker pm_to_blib section: + +pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM) + $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \ + Parser.pm $(INST_LIB)/XML/Parser.pm \ + Parser/Encodings/Japanese_Encodings.msg $(INST_LIB)/XML/Parser/Encodings/Japanese_Encodings.msg \ + Parser/Encodings/README $(INST_LIB)/XML/Parser/Encodings/README \ + Parser/Encodings/big5.enc $(INST_LIB)/XML/Parser/Encodings/big5.enc \ + Parser/Encodings/euc-kr.enc $(INST_LIB)/XML/Parser/Encodings/euc-kr.enc \ + Parser/Encodings/ibm866.enc $(INST_LIB)/XML/Parser/Encodings/ibm866.enc \ + Parser/Encodings/iso-8859-2.enc $(INST_LIB)/XML/Parser/Encodings/iso-8859-2.enc \ + Parser/Encodings/iso-8859-3.enc $(INST_LIB)/XML/Parser/Encodings/iso-8859-3.enc \ + Parser/Encodings/iso-8859-4.enc $(INST_LIB)/XML/Parser/Encodings/iso-8859-4.enc \ + Parser/Encodings/iso-8859-5.enc $(INST_LIB)/XML/Parser/Encodings/iso-8859-5.enc \ + Parser/Encodings/iso-8859-7.enc $(INST_LIB)/XML/Parser/Encodings/iso-8859-7.enc \ + Parser/Encodings/iso-8859-8.enc $(INST_LIB)/XML/Parser/Encodings/iso-8859-8.enc \ + Parser/Encodings/iso-8859-9.enc $(INST_LIB)/XML/Parser/Encodings/iso-8859-9.enc \ + Parser/Encodings/koi8-r.enc $(INST_LIB)/XML/Parser/Encodings/koi8-r.enc \ + Parser/Encodings/windows-1250.enc $(INST_LIB)/XML/Parser/Encodings/windows-1250.enc \ + Parser/Encodings/windows-1251.enc $(INST_LIB)/XML/Parser/Encodings/windows-1251.enc \ + Parser/Encodings/windows-1252.enc $(INST_LIB)/XML/Parser/Encodings/windows-1252.enc \ + Parser/Encodings/windows-1255.enc $(INST_LIB)/XML/Parser/Encodings/windows-1255.enc \ + Parser/Encodings/x-euc-jp-jisx0221.enc $(INST_LIB)/XML/Parser/Encodings/x-euc-jp-jisx0221.enc \ + Parser/Encodings/x-euc-jp-unicode.enc $(INST_LIB)/XML/Parser/Encodings/x-euc-jp-unicode.enc \ + Parser/Encodings/x-sjis-cp932.enc $(INST_LIB)/XML/Parser/Encodings/x-sjis-cp932.enc \ + Parser/Encodings/x-sjis-jdk117.enc $(INST_LIB)/XML/Parser/Encodings/x-sjis-jdk117.enc \ + Parser/Encodings/x-sjis-jisx0221.enc $(INST_LIB)/XML/Parser/Encodings/x-sjis-jisx0221.enc \ + Parser/Encodings/x-sjis-unicode.enc $(INST_LIB)/XML/Parser/Encodings/x-sjis-unicode.enc \ + Parser/LWPExternEnt.pl $(INST_LIB)/XML/Parser/LWPExternEnt.pl \ + Parser/Style/Debug.pm $(INST_LIB)/XML/Parser/Style/Debug.pm \ + Parser/Style/Objects.pm $(INST_LIB)/XML/Parser/Style/Objects.pm \ + Parser/Style/Stream.pm $(INST_LIB)/XML/Parser/Style/Stream.pm \ + Parser/Style/Subs.pm $(INST_LIB)/XML/Parser/Style/Subs.pm \ + Parser/Style/Tree.pm $(INST_LIB)/XML/Parser/Style/Tree.pm + $(NOECHO) $(TOUCH) pm_to_blib + + +# --- MakeMaker selfdocument section: + + +# --- MakeMaker postamble section: + + +# End. diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Makefile.PL b/fastSum/resources/ROUGE/XML-Parser-2.44/Makefile.PL new file mode 100644 index 0000000000000000000000000000000000000000..10417eaeb21ea59e894c438c219a1191c3d16d6b --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Makefile.PL @@ -0,0 +1,201 @@ +use 5.004005; #Devel::CheckLib +use ExtUtils::MakeMaker; +use lib qw(inc); +use Devel::CheckLib; + +use Config; + +$expat_libpath = ''; +$expat_incpath = ''; + +my @replacement_args; + +foreach (@ARGV) { + if (/^EXPAT(LIB|INC)PATH=(.+)/) { + if ($1 eq 'LIB') { + $expat_libpath = $2; + } + else { + $expat_incpath = $2; + } + #push(@replacement_args, "$1=$2"); + } + else { + push(@replacement_args, $_); + } +} + +@ARGV = @replacement_args; + +unless ( + check_lib( # fill in what you prompted the user for here + lib => [qw(expat)], + header => ['expat.h'], + incpath => $expat_incpath, + ($expat_libpath? + (libpath => $expat_libpath):()), + )) { + warn <<'Expat_Not_Installed;'; + +Expat must be installed prior to building XML::Parser and I can't find +it in the standard library directories. Install 'expat-devel' (or +'libexpat1-dev') package with your OS package manager. See 'README'. + +Or you can download expat from: + +http://sourceforge.net/projects/expat/ + +If expat is installed, but in a non-standard directory, then use the +following options to Makefile.PL: + + EXPATLIBPATH=... To set the directory in which to find libexpat + + EXPATINCPATH=... To set the directory in which to find expat.h + +For example: + + perl Makefile.PL EXPATLIBPATH=/home/me/lib EXPATINCPATH=/home/me/include + +Note that if you build against a shareable library in a non-standard location +you may (on some platforms) also have to set your LD_LIBRARY_PATH environment +variable at run time for perl to find the library. + +Expat_Not_Installed; + #exit; +} + +if (not $expat_libpath and $] >= 5.006001 and $^O ne 'MSWin32') { + require ExtUtils::Liblist; # Buggy before this + ($expat_libpath) = ExtUtils::Liblist->ext('-lexpat'); +} + +=for cmt + +unless ($expat_libpath) { + # Test for existence of libexpat + my $found = 0; + foreach (split(/\s+/, $Config{libpth})) { + if (-f "$_/libexpat." . $Config{so}) { + $expat_libpath=$_; + $found = 1; + last; + } + } + + if (!$found and $^O eq 'MSWin32') { + if (-f 'C:/lib/Expat-2.0.0/Libs/libexpat.dll') { + $expat_libpath = 'C:/lib/Expat-2.0.0/Libs'; + $expat_incpath = 'C:/lib/Expat-2.0.0/Source/lib'; + $found = 1; + } + + } + if ($found) { + print "libexpat found in $expat_libpath\n"; + } + + unless ($found) { + warn <<'Expat_Not_Installed;'; + +Expat must be installed prior to building XML::Parser and I can't find +it in the standard library directories. Install 'expat-devel' (or +'libexpat1-dev') package with your OS package manager. + +Or you can download expat from: + +http://sourceforge.net/projects/expat/ + +If expat is installed, but in a non-standard directory, then use the +following options to Makefile.PL: + + EXPATLIBPATH=... To set the directory in which to find libexpat + + EXPATINCPATH=... To set the directory in which to find expat.h + +For example: + + perl Makefile.PL EXPATLIBPATH=/home/me/lib EXPATINCPATH=/home/me/include + +Note that if you build against a shareable library in a non-standard location +you may (on some platforms) also have to set your LD_LIBRARY_PATH environment +variable at run time for perl to find the library. + +Expat_Not_Installed; + exit 0; + } +} +=cut + +# Don't try to descend into Expat directory for testing + +sub MY::test +{ + my $self = shift; + + my $hold = delete $self->{DIR}; + my $ret = $self->MM::test(@_); + $self->{DIR} = $hold if defined($hold); + $ret; +} + +my @extras = (); + +push(@extras, + CAPI => 'TRUE') + if ($PERL_VERSION >= 5.005 and $OSNAME eq 'MSWin32' + and $Config{archname} =~ /-object\b/i); + +WriteMakefile1( + ABSTRACT_FROM => 'Parser.pm', + AUTHOR => 'Clark Cooper (coopercc@netheaven.com)', + LICENSE => 'perl', + MIN_PERL_VERSION => '5.00405', + META_MERGE => { + resources => { + repository => 'http://github.com/toddr/XML-Parser', + }, + }, + BUILD_REQUIRES => { + 'Test::More' => 0, + }, + + NAME => 'XML::Parser', + DIR => [qw(Expat)], + dist => {COMPRESS => 'gzip', SUFFIX => '.gz'}, + VERSION_FROM => 'Parser.pm', + PREREQ_PM => { + 'LWP::UserAgent' => 0, #for tests + }, + $^O =~/win/i ? ( + dist => { + TAR => 'ptar', + TARFLAGS => '-c -C -f', + }, + ) : (), + @extras +); + + +sub WriteMakefile1 { #Written by Alexandr Ciornii, version 0.21. Added by eumm-upgrade. + my %params=@_; + my $eumm_version=$ExtUtils::MakeMaker::VERSION; + $eumm_version=eval $eumm_version; + die "EXTRA_META is deprecated" if exists $params{EXTRA_META}; + die "License not specified" if not exists $params{LICENSE}; + if ($params{BUILD_REQUIRES} and $eumm_version < 6.5503) { + #EUMM 6.5502 has problems with BUILD_REQUIRES + $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{BUILD_REQUIRES}} }; + delete $params{BUILD_REQUIRES}; + } + delete $params{CONFIGURE_REQUIRES} if $eumm_version < 6.52; + delete $params{MIN_PERL_VERSION} if $eumm_version < 6.48; + delete $params{META_MERGE} if $eumm_version < 6.46; + delete $params{META_ADD} if $eumm_version < 6.46; + delete $params{LICENSE} if $eumm_version < 6.31; + delete $params{AUTHOR} if $] < 5.005; + delete $params{ABSTRACT_FROM} if $] < 5.005; + delete $params{BINARY_LOCATION} if $] < 5.005; + + WriteMakefile(%params); +} + diff --git a/fastSum/resources/ROUGE/XML-Parser-2.44/Parser.pm b/fastSum/resources/ROUGE/XML-Parser-2.44/Parser.pm new file mode 100644 index 0000000000000000000000000000000000000000..e2a2850588fbba9f663f0279d0fe30d0ababc9ee --- /dev/null +++ b/fastSum/resources/ROUGE/XML-Parser-2.44/Parser.pm @@ -0,0 +1,840 @@ +# XML::Parser +# +# Copyright (c) 1998-2000 Larry Wall and Clark Cooper +# All rights reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. + +package XML::Parser; + +use strict; + +use vars qw($VERSION $LWP_load_failed); + +use Carp; + +BEGIN { + require XML::Parser::Expat; + $VERSION = '2.44'; + die "Parser.pm and Expat.pm versions don't match" + unless $VERSION eq $XML::Parser::Expat::VERSION; +} + +$LWP_load_failed = 0; + +sub new { + my ($class, %args) = @_; + my $style = $args{Style}; + + my $nonexopt = $args{Non_Expat_Options} ||= {}; + + $nonexopt->{Style} = 1; + $nonexopt->{Non_Expat_Options} = 1; + $nonexopt->{Handlers} = 1; + $nonexopt->{_HNDL_TYPES} = 1; + $nonexopt->{NoLWP} = 1; + + $args{_HNDL_TYPES} = {%XML::Parser::Expat::Handler_Setters}; + $args{_HNDL_TYPES}->{Init} = 1; + $args{_HNDL_TYPES}->{Final} = 1; + + $args{Handlers} ||= {}; + my $handlers = $args{Handlers}; + + if (defined($style)) { + my $stylepkg = $style; + + if ($stylepkg !~ /::/) { + $stylepkg = "\u$style"; + + eval { + my $fullpkg = 'XML::Parser::Style::' . $stylepkg; + my $stylefile = $fullpkg; + $stylefile =~ s/::/\//g; + require "$stylefile.pm"; + $stylepkg = $fullpkg; + }; + if ($@) { + # fallback to old behaviour + $stylepkg = 'XML::Parser::' . $stylepkg; + } + } + + my $htype; + foreach $htype (keys %{$args{_HNDL_TYPES}}) { + # Handlers explicitly given override + # handlers from the Style package + unless (defined($handlers->{$htype})) { + + # A handler in the style package must either have + # exactly the right case as the type name or a + # completely lower case version of it. + + my $hname = "${stylepkg}::$htype"; + if (defined(&$hname)) { + $handlers->{$htype} = \&$hname; + next; + } + + $hname = "${stylepkg}::\L$htype"; + if (defined(&$hname)) { + $handlers->{$htype} = \&$hname; + next; + } + } + } + } + + unless (defined($handlers->{ExternEnt}) + or defined ($handlers->{ExternEntFin})) { + + if ($args{NoLWP} or $LWP_load_failed) { + $handlers->{ExternEnt} = \&file_ext_ent_handler; + $handlers->{ExternEntFin} = \&file_ext_ent_cleanup; + } + else { + # The following just bootstraps the real LWP external entity + # handler + + $handlers->{ExternEnt} = \&initial_ext_ent_handler; + + # No cleanup function available until LWPExternEnt.pl loaded + } + } + + $args{Pkg} ||= caller; + bless \%args, $class; +} # End of new + +sub setHandlers { + my ($self, @handler_pairs) = @_; + + croak("Uneven number of arguments to setHandlers method") + if (int(@handler_pairs) & 1); + + my @ret; + while (@handler_pairs) { + my $type = shift @handler_pairs; + my $handler = shift @handler_pairs; + unless (defined($self->{_HNDL_TYPES}->{$type})) { + my @types = sort keys %{$self->{_HNDL_TYPES}}; + + croak("Unknown Parser handler type: $type\n Valid types: @types"); + } + push(@ret, $type, $self->{Handlers}->{$type}); + $self->{Handlers}->{$type} = $handler; + } + + return @ret; +} + +sub parse_start { + my $self = shift; + my @expat_options = (); + + my ($key, $val); + while (($key, $val) = each %{$self}) { + push (@expat_options, $key, $val) + unless exists $self->{Non_Expat_Options}->{$key}; + } + + my %handlers = %{$self->{Handlers}}; + my $init = delete $handlers{Init}; + my $final = delete $handlers{Final}; + + my $expatnb = XML::Parser::ExpatNB->new(@expat_options, @_); + $expatnb->setHandlers(%handlers); + + &$init($expatnb) + if defined($init); + + $expatnb->{_State_} = 1; + + $expatnb->{FinalHandler} = $final + if defined($final); + + return $expatnb; +} + +sub parse { + my $self = shift; + my $arg = shift; + my @expat_options = (); + my ($key, $val); + while (($key, $val) = each %{$self}) { + push(@expat_options, $key, $val) + unless exists $self->{Non_Expat_Options}->{$key}; + } + + my $expat = XML::Parser::Expat->new(@expat_options, @_); + my %handlers = %{$self->{Handlers}}; + my $init = delete $handlers{Init}; + my $final = delete $handlers{Final}; + + $expat->setHandlers(%handlers); + + if ($self->{Base}) { + $expat->base($self->{Base}); + } + + &$init($expat) + if defined($init); + + my @result = (); + my $result; + eval { + $result = $expat->parse($arg); + }; + my $err = $@; + if ($err) { + $expat->release; + die $err; + } + + if ($result and defined($final)) { + if (wantarray) { + @result = &$final($expat); + } + else { + $result = &$final($expat); + } + } + + $expat->release; + + return unless defined wantarray; + return wantarray ? @result : $result; +} + +sub parsestring { + my $self = shift; + $self->parse(@_); +} + +sub parsefile { + my $self = shift; + my $file = shift; + local(*FILE); + open(FILE, $file) or croak "Couldn't open $file:\n$!"; + binmode(FILE); + my @ret; + my $ret; + + $self->{Base} = $file; + + if (wantarray) { + eval { + @ret = $self->parse(*FILE, @_); + }; + } + else { + eval { + $ret = $self->parse(*FILE, @_); + }; + } + my $err = $@; + close(FILE); + die $err if $err; + + return unless defined wantarray; + return wantarray ? @ret : $ret; +} + +sub initial_ext_ent_handler { + # This just bootstraps in the real lwp_ext_ent_handler which + # also loads the URI and LWP modules. + + unless ($LWP_load_failed) { + local($^W) = 0; + + my $stat = + eval { + require('XML/Parser/LWPExternEnt.pl'); + }; + + if ($stat) { + $_[0]->setHandlers(ExternEnt => \&lwp_ext_ent_handler, + ExternEntFin => \&lwp_ext_ent_cleanup); + + goto &lwp_ext_ent_handler; + } + + # Failed to load lwp handler, act as if NoLWP + + $LWP_load_failed = 1; + + my $cmsg = "Couldn't load LWP based external entity handler\n"; + $cmsg .= "Switching to file-based external entity handler\n"; + $cmsg .= " (To avoid this message, use NoLWP option to XML::Parser)\n"; + warn($cmsg); + } + + $_[0]->setHandlers(ExternEnt => \&file_ext_ent_handler, + ExternEntFin => \&file_ext_ent_cleanup); + goto &file_ext_ent_handler; + +} + +sub file_ext_ent_handler { + my ($xp, $base, $path) = @_; + + # Prepend base only for relative paths + + if (defined($base) + and not ($path =~ m!^(?:[\\/]|\w+:)!)) + { + my $newpath = $base; + $newpath =~ s![^\\/:]*$!$path!; + $path = $newpath; + } + + if ($path =~ /^\s*[|>+]/ + or $path =~ /\|\s*$/) { + $xp->{ErrorMessage} + .= "System ID ($path) contains Perl IO control characters"; + return undef; + } + + require IO::File; + my $fh = IO::File->new($path); + unless (defined $fh) { + $xp->{ErrorMessage} + .= "Failed to open $path:\n$!"; + return undef; + } + + $xp->{_BaseStack} ||= []; + $xp->{_FhStack} ||= []; + + push(@{$xp->{_BaseStack}}, $base); + push(@{$xp->{_FhStack}}, $fh); + + $xp->base($path); + + return $fh; +} + +sub file_ext_ent_cleanup { + my ($xp) = @_; + + my $fh = pop(@{$xp->{_FhStack}}); + $fh->close; + + my $base = pop(@{$xp->{_BaseStack}}); + $xp->base($base); +} + +1; + +__END__ + +=head1 NAME + +XML::Parser - A perl module for parsing XML documents + +=head1 SYNOPSIS + + use XML::Parser; + + $p1 = XML::Parser->new(Style => 'Debug'); + $p1->parsefile('REC-xml-19980210.xml'); + $p1->parse('Hello World'); + + # Alternative + $p2 = XML::Parser->new(Handlers => {Start => \&handle_start, + End => \&handle_end, + Char => \&handle_char}); + $p2->parse($socket); + + # Another alternative + $p3 = XML::Parser->new(ErrorContext => 2); + + $p3->setHandlers(Char => \&text, + Default => \&other); + + open(FOO, 'xmlgenerator |'); + $p3->parse(*FOO, ProtocolEncoding => 'ISO-8859-1'); + close(FOO); + + $p3->parsefile('junk.xml', ErrorContext => 3); + +=begin man +.ds PI + +=end man + +=head1 DESCRIPTION + +This module provides ways to parse XML documents. It is built on top of +L, which is a lower level interface to James Clark's +expat library. Each call to one of the parsing methods creates a new +instance of XML::Parser::Expat which is then used to parse the document. +Expat options may be provided when the XML::Parser object is created. +These options are then passed on to the Expat object on each parse call. +They can also be given as extra arguments to the parse methods, in which +case they override options given at XML::Parser creation time. + +The behavior of the parser is controlled either by C> and/or +C> options, or by L method. These all provide +mechanisms for XML::Parser to set the handlers needed by XML::Parser::Expat. +If neither C