Return-Path: X-Original-To: apmail-ctakes-dev-archive@www.apache.org Delivered-To: apmail-ctakes-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 421BD10490 for ; Wed, 17 Jul 2013 21:52:52 +0000 (UTC) Received: (qmail 61182 invoked by uid 500); 17 Jul 2013 21:52:52 -0000 Delivered-To: apmail-ctakes-dev-archive@ctakes.apache.org Received: (qmail 61160 invoked by uid 500); 17 Jul 2013 21:52:52 -0000 Mailing-List: contact dev-help@ctakes.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ctakes.apache.org Delivered-To: mailing list dev@ctakes.apache.org Received: (qmail 61152 invoked by uid 99); 17 Jul 2013 21:52:51 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Jul 2013 21:52:51 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of Pei.Chen@childrens.harvard.edu designates 134.174.13.91 as permitted sender) Received: from [134.174.13.91] (HELO mailsmtp1.childrenshospital.org) (134.174.13.91) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Jul 2013 21:52:44 +0000 Received: from pps.filterd (mailsmtp1.childrenshospital.org [127.0.0.1]) by mailsmtp1.childrenshospital.org (8.14.5/8.14.5) with SMTP id r6HLnYNZ023547 for ; Wed, 17 Jul 2013 17:52:21 -0400 Received: from smtpbdc1.chboston.org (smtpbdc1.chboston.org [10.20.18.104]) by mailsmtp1.childrenshospital.org with ESMTP id 1dn9knu78m-1 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 17 Jul 2013 17:52:21 -0400 Received: from pps.filterd (smtpbdc1.chboston.org [127.0.0.1]) by smtpbdc1.chboston.org (8.14.5/8.14.5) with SMTP id r6HLoo3C032191 for ; Wed, 17 Jul 2013 17:52:21 -0400 Received: from chexhubcasbdc1.chboston.org (internal-bdc-nat-v2260.tch.harvard.edu [10.20.18.4]) by smtpbdc1.chboston.org with ESMTP id 1dn9jcm78v-1 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT) for ; Wed, 17 Jul 2013 17:52:21 -0400 Received: from CHEXMBX1A.CHBOSTON.ORG ([fe80::3c05:8ca9:55a6:f320]) by CHEXHUBCASBDC1.CHBOSTON.ORG ([::1]) with mapi id 14.02.0342.003; Wed, 17 Jul 2013 17:52:21 -0400 From: "Chen, Pei" To: "dev@ctakes.apache.org" Subject: RE: svn commit: r1504269 - /ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/data/analysis/CompareFeatureStructures.java Thread-Topic: svn commit: r1504269 - /ctakes/trunk/ctakes-temporal/src/main/java/org/apache/ctakes/temporal/data/analysis/CompareFeatureStructures.java Thread-Index: AQHOgy0bmoWAJCcW70aLlnINqIW97plpaIMA Date: Wed, 17 Jul 2013 21:52:20 +0000 Message-ID: <924DE05C19409B438EB81DE683A942D91057426E@CHEXMBX1A.CHBOSTON.ORG> References: <20130717203427.4E5942388A29@eris.apache.org> In-Reply-To: <20130717203427.4E5942388A29@eris.apache.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.7.2.182] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.10.8794,1.0.431,0.0.0000 definitions=2013-07-17_09:2013-07-17,2013-07-17,1970-01-01 signatures=0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.10.8794,1.0.431,0.0.0000 definitions=2013-07-17_09:2013-07-17,2013-07-17,1970-01-01 signatures=0 X-Virus-Checked: Checked by ClamAV on apache.org SGF2aW5nIGEgZ2VuZXJhbCBVdGlsIHRvIGNvbXBhcmUgQ0FTIGZlYXR1cmUgc3RydWN0dXJlcyB3 b3VsZCBiZSBzbyB1c2VmdWwgb24gc28gbWFueSBsZXZlbHMuDQpDb3VsZCB3ZSBjcmVhdGUgYSBK aXJhIGZvciB0aGlzIHNvIHRoYXQgaXQgd2lsbCBoZWxwIGZhY2lsaXRhdGUgZGV2IGF3YXJlbmVz cyBvZiB0aGVzZSB1dGlsaXRpZXMgd2hlbiB3ZSBnZW5lcmF0ZSByZWxlYXNlIG5vdGVzPw0KSSd2 ZSBiZWVuIGxvb2tpbmcgZm9yIHNvbWV0aGluZyBsaWtlIHRoaXMgZnJvbSB0aGUgVUlNQSB0b29s cyBmb3IgYSB3aGlsZS4uLg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IHN0ZXZlbmJldGhhcmRAYXBhY2hlLm9yZyBbbWFpbHRvOnN0ZXZlbmJldGhhcmRAYXBhY2hlLm9y Z10NCj4gU2VudDogV2VkbmVzZGF5LCBKdWx5IDE3LCAyMDEzIDQ6MzUgUE0NCj4gVG86IGNvbW1p dHNAY3Rha2VzLmFwYWNoZS5vcmcNCj4gU3ViamVjdDogc3ZuIGNvbW1pdDogcjE1MDQyNjkgLSAv Y3Rha2VzL3RydW5rL2N0YWtlcy0NCj4gdGVtcG9yYWwvc3JjL21haW4vamF2YS9vcmcvYXBhY2hl L2N0YWtlcy90ZW1wb3JhbC9kYXRhL2FuYWx5c2lzL0NvbXBhcg0KPiBlRmVhdHVyZVN0cnVjdHVy ZXMuamF2YQ0KPiANCj4gQXV0aG9yOiBzdGV2ZW5iZXRoYXJkDQo+IERhdGU6IFdlZCBKdWwgMTcg MjA6MzQ6MjYgMjAxMw0KPiBOZXcgUmV2aXNpb246IDE1MDQyNjkNCj4gDQo+IFVSTDogaHR0cDov L3N2bi5hcGFjaGUub3JnL3IxNTA0MjY5DQo+IExvZzoNCj4gQWRkcyBmaXJzdCBkcmFmdCBvZiBj bGFzcyB0byBnZW5lcmF0ZSAiZGlmZnMiIG9mIENBUyBmZWF0dXJlIHN0cnVjdHVyZXMuDQo+IA0K PiBBZGRlZDoNCj4gICAgIGN0YWtlcy90cnVuay9jdGFrZXMtDQo+IHRlbXBvcmFsL3NyYy9tYWlu L2phdmEvb3JnL2FwYWNoZS9jdGFrZXMvdGVtcG9yYWwvZGF0YS9hbmFseXNpcy9Db21wYXINCj4g ZUZlYXR1cmVTdHJ1Y3R1cmVzLmphdmENCj4gDQo+IEFkZGVkOiBjdGFrZXMvdHJ1bmsvY3Rha2Vz LQ0KPiB0ZW1wb3JhbC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvY3Rha2VzL3RlbXBvcmFsL2Rh dGEvYW5hbHlzaXMvQ29tcGFyDQo+IGVGZWF0dXJlU3RydWN0dXJlcy5qYXZhDQo+IFVSTDogaHR0 cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy9jdGFrZXMvdHJ1bmsvY3Rha2VzLQ0KPiB0ZW1wb3Jh bC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvY3Rha2VzL3RlbXBvcmFsL2RhdGEvYW5hbHlzaXMv Q29tcGFyDQo+IGVGZWF0dXJlU3RydWN0dXJlcy5qYXZhP3Jldj0xNTA0MjY5JnZpZXc9YXV0bw0K PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQo+ID09PT09PT09PT09PT09PT09PT09DQo+IC0tLSBjdGFrZXMvdHJ1bmsvY3Rha2VzLQ0K PiB0ZW1wb3JhbC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvY3Rha2VzL3RlbXBvcmFsL2RhdGEv YW5hbHlzaXMvQ29tcGFyDQo+IGVGZWF0dXJlU3RydWN0dXJlcy5qYXZhIChhZGRlZCkNCj4gKysr IGN0YWtlcy90cnVuay9jdGFrZXMtDQo+IHRlbXBvcmFsL3NyYy9tYWluL2phdmEvb3JnL2FwYWNo ZS9jdGFrZXMvdGVtcG9yYQ0KPiArKysgbC9kYXRhL2FuYWx5c2lzL0NvbXBhcmVGZWF0dXJlU3Ry dWN0dXJlcy5qYXZhIFdlZCBKdWwgMTcgMjA6MzQ6MjYNCj4gKysrIDIwMTMNCj4gQEAgLTAsMCAr MSwzMTIgQEANCj4gK3BhY2thZ2Ugb3JnLmFwYWNoZS5jdGFrZXMudGVtcG9yYWwuZGF0YS5hbmFs eXNpczsNCj4gKw0KPiAraW1wb3J0IGphdmEuaW8uRmlsZTsNCj4gK2ltcG9ydCBqYXZhLmlvLkZp bGVJbnB1dFN0cmVhbTsNCj4gK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOw0KPiAraW1wb3J0IGph dmEudXRpbC5JdGVyYXRvcjsNCj4gK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCj4gK2ltcG9ydCBq YXZhLnV0aWwucmVnZXguTWF0Y2hlcjsNCj4gK2ltcG9ydCBqYXZhLnV0aWwucmVnZXguUGF0dGVy bjsNCj4gKw0KPiAraW1wb3J0IGphdmF4LmFubm90YXRpb24uTnVsbGFibGU7DQo+ICsNCj4gK2lt cG9ydCBvcmcuYXBhY2hlLnVpbWEuY2FzLkNBU0V4Y2VwdGlvbjsgaW1wb3J0DQo+ICtvcmcuYXBh Y2hlLnVpbWEuY2FzLkZTSXRlcmF0b3I7IGltcG9ydCBvcmcuYXBhY2hlLnVpbWEuY2FzLkZlYXR1 cmU7DQo+ICtpbXBvcnQgb3JnLmFwYWNoZS51aW1hLmNhcy5GZWF0dXJlU3RydWN0dXJlOw0KPiAr aW1wb3J0IG9yZy5hcGFjaGUudWltYS5jYXMuVHlwZTsNCj4gK2ltcG9ydCBvcmcuYXBhY2hlLnVp bWEuY2FzLmltcGwuWG1pQ2FzRGVzZXJpYWxpemVyOw0KPiAraW1wb3J0IG9yZy5hcGFjaGUudWlt YS5qY2FzLkpDYXM7DQo+ICtpbXBvcnQgb3JnLmFwYWNoZS51aW1hLmpjYXMuY2FzLkZTQXJyYXk7 IGltcG9ydA0KPiArb3JnLmFwYWNoZS51aW1hLmpjYXMuY2FzLk5vbkVtcHR5RlNMaXN0Ow0KPiAr aW1wb3J0IG9yZy5hcGFjaGUudWltYS5qY2FzLnRjYXMuQW5ub3RhdGlvbjsNCj4gK2ltcG9ydCBv cmcudWltYWZpdC5mYWN0b3J5LkpDYXNGYWN0b3J5OyBpbXBvcnQNCj4gK29yZy51aW1hZml0LnV0 aWwuSkNhc1V0aWw7DQo+ICsNCj4gK2ltcG9ydCBjb20uZ29vZ2xlLmNvbW1vbi5iYXNlLkZ1bmN0 aW9uOyBpbXBvcnQNCj4gK2NvbS5nb29nbGUuY29tbW9uLmJhc2UuSm9pbmVyOyBpbXBvcnQNCj4g Y29tLmdvb2dsZS5jb21tb24uYmFzZS5PYmplY3RzOw0KPiAraW1wb3J0IGNvbS5nb29nbGUuY29t bW9uLmNvbGxlY3QuSXRlcmFibGVzOw0KPiAraW1wb3J0IGNvbS5nb29nbGUuY29tbW9uLmNvbGxl Y3QuTGlzdHM7IGltcG9ydA0KPiArY29tLmdvb2dsZS5jb21tb24uY29sbGVjdC5NdWx0aW1hcDsN Cj4gK2ltcG9ydCBjb20uZ29vZ2xlLmNvbW1vbi5jb2xsZWN0Lk9yZGVyaW5nOw0KPiAraW1wb3J0 IGNvbS5nb29nbGUuY29tbW9uLmNvbGxlY3QuVHJlZU11bHRpbWFwOw0KPiAraW1wb3J0IGNvbS5s ZXhpY2Fsc2NvcGUuamV3ZWwuY2xpLkNsaUZhY3Rvcnk7DQo+ICtpbXBvcnQgY29tLmxleGljYWxz Y29wZS5qZXdlbC5jbGkuT3B0aW9uOw0KPiArDQo+ICtwdWJsaWMgY2xhc3MgQ29tcGFyZUZlYXR1 cmVTdHJ1Y3R1cmVzIHsNCj4gKyAgc3RhdGljIGludGVyZmFjZSBPcHRpb25zIHsNCj4gKyAgICBA T3B0aW9uKGxvbmdOYW1lID0gImRpcjEiKQ0KPiArICAgIHB1YmxpYyBGaWxlIGdldERpcmVjdG9y eTEoKTsNCj4gKw0KPiArICAgIEBPcHRpb24obG9uZ05hbWUgPSAiZGlyMiIpDQo+ICsgICAgcHVi bGljIEZpbGUgZ2V0RGlyZWN0b3J5MigpOw0KPiArDQo+ICsgICAgQE9wdGlvbihsb25nTmFtZSA9 ICJyb290cyIsIGRlZmF1bHRWYWx1ZSA9IHsNCj4gKyAgICAgICAgIm9yZy5hcGFjaGUuY3Rha2Vz LnR5cGVzeXN0ZW0udHlwZS50ZXh0c2VtLklkZW50aWZpZWRBbm5vdGF0aW9uIiwNCj4gKyAgICAg ICAgIm9yZy5hcGFjaGUuY3Rha2VzLnR5cGVzeXN0ZW0udHlwZS5yZWxhdGlvbi5SZWxhdGlvbiIg fSkNCj4gKyAgICBwdWJsaWMgTGlzdDxTdHJpbmc+IGdldEFubm90YXRpb25DbGFzc05hbWVzKCk7 ICB9DQo+ICsNCj4gKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhy b3dzIEV4Y2VwdGlvbiB7DQo+ICsgICAgT3B0aW9ucyBvcHRpb25zID0gQ2xpRmFjdG9yeS5wYXJz ZUFyZ3VtZW50cyhPcHRpb25zLmNsYXNzLCBhcmdzKTsNCj4gKyAgICBMaXN0PENsYXNzPD8+PiBh bm5vdGF0aW9uQ2xhc3NlcyA9IExpc3RzLm5ld0FycmF5TGlzdCgpOw0KPiArICAgIGZvciAoU3Ry aW5nIGFubm90YXRpb25DbGFzc05hbWUgOiBvcHRpb25zLmdldEFubm90YXRpb25DbGFzc05hbWVz KCkpIHsNCj4gKyAgICAgIGFubm90YXRpb25DbGFzc2VzLmFkZChDbGFzcy5mb3JOYW1lKGFubm90 YXRpb25DbGFzc05hbWUpKTsNCj4gKyAgICB9DQo+ICsgICAgRmlsZSBkaXIxID0gb3B0aW9ucy5n ZXREaXJlY3RvcnkxKCk7DQo+ICsgICAgRmlsZSBkaXIyID0gb3B0aW9ucy5nZXREaXJlY3Rvcnky KCk7DQo+ICsgICAgaWYgKCFBcnJheXMuZXF1YWxzKGRpcjEubGlzdCgpLCBkaXIyLmxpc3QoKSkp IHsNCj4gKyAgICAgIFN5c3RlbS5lcnIucHJpbnRmKCIlcyBhbmQgJXMgY29udGFpbiBkaWZmZXJl bnQgZmlsZXMiLCBkaXIxLCBkaXIyKTsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgZm9yIChT dHJpbmcgZmlsZU5hbWUgOiBkaXIxLmxpc3QoKSkgew0KPiArICAgICAgICBTeXN0ZW0uZXJyLnBy aW50ZigiPT0gQ2hlY2tpbmcgJXMgPT09XG4iLCBmaWxlTmFtZSk7DQo+ICsgICAgICAgIEpDYXMg akNhczEgPSByZWFkWE1JKG5ldyBGaWxlKGRpcjEsIGZpbGVOYW1lKSk7DQo+ICsgICAgICAgIEpD YXMgakNhczIgPSByZWFkWE1JKG5ldyBGaWxlKGRpcjIsIGZpbGVOYW1lKSk7DQo+ICsgICAgICAg IExpc3Q8U3RyaW5nPiB2aWV3TmFtZXMxID0gZ2V0Vmlld05hbWVzKGpDYXMxKTsNCj4gKyAgICAg ICAgTGlzdDxTdHJpbmc+IHZpZXdOYW1lczIgPSBnZXRWaWV3TmFtZXMoakNhczIpOw0KPiArICAg ICAgICBpZiAoYXJlRXF1YWwoInZpZXctbmFtZXMiLCB2aWV3TmFtZXMxLCB2aWV3TmFtZXMyKSkg ew0KPiArICAgICAgICAgIGZvciAoU3RyaW5nIHZpZXdOYW1lIDogdmlld05hbWVzMSkgew0KPiAr ICAgICAgICAgICAgSkNhcyB2aWV3MSA9IGpDYXMxLmdldFZpZXcodmlld05hbWUpOw0KPiArICAg ICAgICAgICAgSkNhcyB2aWV3MiA9IGpDYXMyLmdldFZpZXcodmlld05hbWUpOw0KPiArICAgICAg ICAgICAgZm9yIChDbGFzczw/PiBhbm5vdGF0aW9uQ2xhc3MgOiBhbm5vdGF0aW9uQ2xhc3Nlcykg ew0KPiArICAgICAgICAgICAgICBNdWx0aW1hcDxUeXBlLCBGZWF0dXJlU3RydWN0dXJlPiBmc01h cDEgPQ0KPiB0b1NvcnRlZE11bHRpbWFwKHZpZXcxLCBhbm5vdGF0aW9uQ2xhc3MpOw0KPiArICAg ICAgICAgICAgICBNdWx0aW1hcDxUeXBlLCBGZWF0dXJlU3RydWN0dXJlPiBmc01hcDIgPQ0KPiB0 b1NvcnRlZE11bHRpbWFwKHZpZXcyLCBhbm5vdGF0aW9uQ2xhc3MpOw0KPiArICAgICAgICAgICAg ICBpZiAoYXJlRXF1YWwoImFubm90YXRpb24tY291bnRzIiwgZnNNYXAxLmtleXMoKSwgZnNNYXAy LmtleXMoKSkpIHsNCj4gKyAgICAgICAgICAgICAgICBmb3IgKFR5cGUgdHlwZSA6IGZzTWFwMS5r ZXlTZXQoKSkgew0KPiArICAgICAgICAgICAgICAgICAgSXRlcmF0b3I8RmVhdHVyZVN0cnVjdHVy ZT4gZnNJdGVyMSA9IGZzTWFwMS5nZXQodHlwZSkuaXRlcmF0b3IoKTsNCj4gKyAgICAgICAgICAg ICAgICAgIEl0ZXJhdG9yPEZlYXR1cmVTdHJ1Y3R1cmU+IGZzSXRlcjIgPSBmc01hcDIuZ2V0KHR5 cGUpLml0ZXJhdG9yKCk7DQo+ICsgICAgICAgICAgICAgICAgICB3aGlsZSAoZnNJdGVyMS5oYXNO ZXh0KCkgJiYgZnNJdGVyMi5oYXNOZXh0KCkpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgRmVh dHVyZVN0cnVjdHVyZSBmczEgPSBmc0l0ZXIxLm5leHQoKTsNCj4gKyAgICAgICAgICAgICAgICAg ICAgRmVhdHVyZVN0cnVjdHVyZSBmczIgPSBmc0l0ZXIyLm5leHQoKTsNCj4gKyAgICAgICAgICAg ICAgICAgICAgRlNEaWZmIGRpZmYgPSBuZXcgRlNEaWZmKGZzMSwgZnMyKTsNCj4gKyAgICAgICAg ICAgICAgICAgICAgaWYgKGRpZmYuaGFzRGlmZmVyZW5jZXMoKSkgew0KPiArICAgICAgICAgICAg ICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbihkaWZmKTsNCj4gKyAgICAgICAgICAgICAgICAg ICAgfQ0KPiArICAgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgIH0NCj4gKyAg ICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICAgIH0NCj4gKyAgICAg ICAgfQ0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKw0KPiArICB9DQo+ICsNCj4gKyAgcHJpdmF0 ZSBzdGF0aWMgSkNhcyByZWFkWE1JKEZpbGUgeG1pRmlsZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQo+ ICsgICAgSkNhcyBqQ2FzID0gSkNhc0ZhY3RvcnkuY3JlYXRlSkNhcygpOw0KPiArICAgIEZpbGVJ bnB1dFN0cmVhbSBpbnB1dFN0cmVhbSA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oeG1pRmlsZSk7DQo+ ICsgICAgdHJ5IHsNCj4gKyAgICAgIFhtaUNhc0Rlc2VyaWFsaXplci5kZXNlcmlhbGl6ZShpbnB1 dFN0cmVhbSwgakNhcy5nZXRDYXMoKSk7DQo+ICsgICAgfSBmaW5hbGx5IHsNCj4gKyAgICAgIGlu cHV0U3RyZWFtLmNsb3NlKCk7DQo+ICsgICAgfQ0KPiArICAgIHJldHVybiBqQ2FzOw0KPiArICB9 DQo+ICsNCj4gKyAgcHJpdmF0ZSBzdGF0aWMgTGlzdDxTdHJpbmc+IGdldFZpZXdOYW1lcyhKQ2Fz IGpDYXMpIHRocm93cyBDQVNFeGNlcHRpb24gew0KPiArICAgIExpc3Q8U3RyaW5nPiBuYW1lcyA9 IExpc3RzLm5ld0FycmF5TGlzdCgpOw0KPiArICAgIEl0ZXJhdG9yPEpDYXM+IHZpZXdzID0gakNh cy5nZXRWaWV3SXRlcmF0b3IoKTsNCj4gKyAgICB3aGlsZSAodmlld3MuaGFzTmV4dCgpKSB7DQo+ ICsgICAgICBuYW1lcy5hZGQodmlld3MubmV4dCgpLmdldFZpZXdOYW1lKCkpOw0KPiArICAgIH0N Cj4gKyAgICByZXR1cm4gbmFtZXM7DQo+ICsgIH0NCj4gKw0KPiArICBwcml2YXRlIHN0YXRpYyBi b29sZWFuIGFyZUVxdWFsKFN0cmluZyBuYW1lLCBPYmplY3QgbzEsIE9iamVjdCBvMikgew0KPiAr ICAgIGJvb2xlYW4gYXJlRXF1YWwgPSBPYmplY3RzLmVxdWFsKG8xLCBvMik7DQo+ICsgICAgaWYg KCFhcmVFcXVhbCkgew0KPiArICAgICAgU3lzdGVtLmVyci5wcmludGYoIkRpZmZlcmVuY2UgaW4g JXM6XG4tJXNcbislc1xuIiwgbmFtZSwgbzEsIG8yKTsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJu IGFyZUVxdWFsOw0KPiArICB9DQo+ICsNCj4gKyAgcHJpdmF0ZSBzdGF0aWMgTXVsdGltYXA8VHlw ZSwgRmVhdHVyZVN0cnVjdHVyZT4gdG9Tb3J0ZWRNdWx0aW1hcCgNCj4gKyAgICAgIEpDYXMgakNh cywNCj4gKyAgICAgIENsYXNzPD8+IGFubm90YXRpb25DbGFzcykgew0KPiArICAgIFR5cGUgdHlw ZSA9IEpDYXNVdGlsLmdldFR5cGUoakNhcywgYW5ub3RhdGlvbkNsYXNzKTsNCj4gKyAgICBGU0l0 ZXJhdG9yPEZlYXR1cmVTdHJ1Y3R1cmU+IGZzSXRlcmF0b3IgPQ0KPiBqQ2FzLmdldEZTSW5kZXhS ZXBvc2l0b3J5KCkuZ2V0QWxsSW5kZXhlZEZTKHR5cGUpOw0KPiArICAgIE11bHRpbWFwPFR5cGUs IEZlYXR1cmVTdHJ1Y3R1cmU+IHJlc3VsdCA9DQo+IFRyZWVNdWx0aW1hcC5jcmVhdGUoQllfTkFN RSwgQllfT0ZGU0VUUyk7DQo+ICsgICAgd2hpbGUgKGZzSXRlcmF0b3IuaGFzTmV4dCgpKSB7DQo+ ICsgICAgICBGZWF0dXJlU3RydWN0dXJlIGZzID0gZnNJdGVyYXRvci5uZXh0KCk7DQo+ICsgICAg ICByZXN1bHQucHV0KGZzLmdldFR5cGUoKSwgZnMpOw0KPiArICAgIH0NCj4gKyAgICByZXR1cm4g cmVzdWx0Ow0KPiArICB9DQo+ICsNCj4gKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgT3JkZXJpbmc8 VHlwZT4gQllfTkFNRSA9DQo+IE9yZGVyaW5nLm5hdHVyYWwoKS5vblJlc3VsdE9mKA0KPiArICAg ICAgbmV3IEZ1bmN0aW9uPFR5cGUsIFN0cmluZz4oKSB7DQo+ICsgICAgICAgIEBPdmVycmlkZQ0K PiArICAgICAgICBwdWJsaWMgU3RyaW5nIGFwcGx5KEBOdWxsYWJsZSBUeXBlIGlucHV0KSB7DQo+ ICsgICAgICAgICAgcmV0dXJuIGlucHV0LmdldE5hbWUoKTsNCj4gKyAgICAgICAgfQ0KPiArICAg ICAgfSk7DQo+ICsNCj4gKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgT3JkZXJpbmc8RmVhdHVyZVN0 cnVjdHVyZT4gQllfT0ZGU0VUUyA9DQo+ICsgICAgICBPcmRlcmluZy5uYXR1cmFsKCkuPEludGVn ZXI+IGxleGljb2dyYXBoaWNhbCgpLm9uUmVzdWx0T2YoDQo+ICsgICAgICAgICAgbmV3IEZ1bmN0 aW9uPEZlYXR1cmVTdHJ1Y3R1cmUsIEl0ZXJhYmxlPEludGVnZXI+PigpIHsNCj4gKyAgICAgICAg ICAgIEBPdmVycmlkZQ0KPiArICAgICAgICAgICAgcHVibGljIEl0ZXJhYmxlPEludGVnZXI+IGFw cGx5KEBOdWxsYWJsZSBGZWF0dXJlU3RydWN0dXJlIGlucHV0KSB7DQo+ICsgICAgICAgICAgICAg IExpc3Q8SW50ZWdlcj4gb2Zmc2V0cyA9IExpc3RzLm5ld0FycmF5TGlzdCgpOw0KPiArICAgICAg ICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkgew0KPiArICAgICAgICAgICAgICAgIGlmIChpbnB1 dCBpbnN0YW5jZW9mIEFubm90YXRpb24pIHsNCj4gKyAgICAgICAgICAgICAgICAgIEFubm90YXRp b24gYW5ub3RhdGlvbiA9IChBbm5vdGF0aW9uKSBpbnB1dDsNCj4gKyAgICAgICAgICAgICAgICAg IG9mZnNldHMuYWRkKGFubm90YXRpb24uZ2V0QmVnaW4oKSk7DQo+ICsgICAgICAgICAgICAgICAg ICBvZmZzZXRzLmFkZChhbm5vdGF0aW9uLmdldEVuZCgpKTsNCj4gKyAgICAgICAgICAgICAgICB9 IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgRlNBcnJheSkgew0KPiArICAgICAgICAgICAgICAg ICAgRlNBcnJheSBmc0FycmF5ID0gKEZTQXJyYXkpIGlucHV0Ow0KPiArICAgICAgICAgICAgICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmc0FycmF5LnNpemUoKTsgKytpKSB7DQo+ICsgICAgICAg ICAgICAgICAgICAgIEl0ZXJhYmxlcy5hZGRBbGwob2Zmc2V0cywgdGhpcy5hcHBseShmc0FycmF5 LmdldChpKSkpOw0KPiArICAgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgIH0g ZWxzZSBpZiAoaW5wdXQgaW5zdGFuY2VvZiBOb25FbXB0eUZTTGlzdCkgew0KPiArICAgICAgICAg ICAgICAgICAgTm9uRW1wdHlGU0xpc3QgZnNMaXN0ID0gKE5vbkVtcHR5RlNMaXN0KSBpbnB1dDsN Cj4gKyAgICAgICAgICAgICAgICAgIEl0ZXJhYmxlcy5hZGRBbGwob2Zmc2V0cywgdGhpcy5hcHBs eShmc0xpc3QuZ2V0SGVhZCgpKSk7DQo+ICsgICAgICAgICAgICAgICAgICBJdGVyYWJsZXMuYWRk QWxsKG9mZnNldHMsIHRoaXMuYXBwbHkoZnNMaXN0LmdldFRhaWwoKSkpOw0KPiArICAgICAgICAg ICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgICBmb3IgKEZlYXR1cmUgZmVhdHVy ZSA6IGlucHV0LmdldFR5cGUoKS5nZXRGZWF0dXJlcygpKSB7DQo+ICsgICAgICAgICAgICAgICAg ICAgIGlmICghZmVhdHVyZS5nZXRSYW5nZSgpLmlzUHJpbWl0aXZlKCkpIHsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICBJdGVyYWJsZXMuYWRkQWxsKG9mZnNldHMsDQo+IHRoaXMuYXBwbHkoaW5w dXQuZ2V0RmVhdHVyZVZhbHVlKGZlYXR1cmUpKSk7DQo+ICsgICAgICAgICAgICAgICAgICAgIH0N Cj4gKyAgICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAg ICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldHM7DQo+ICsgICAgICAgICAg ICB9DQo+ICsgICAgICAgICAgfSk7DQo+ICsNCj4gKyAgcHVibGljIHN0YXRpYyBjbGFzcyBGU0Rp ZmYgew0KPiArICAgIHByaXZhdGUgTGlzdDxGU0RpZmZlcmVuY2U+IGRpZmZlcmVuY2VzOw0KPiAr ICAgIHByaXZhdGUgRmVhdHVyZVN0cnVjdHVyZSByb290MSwgcm9vdDI7DQo+ICsNCj4gKyAgICBw dWJsaWMgRlNEaWZmKEZlYXR1cmVTdHJ1Y3R1cmUgcm9vdDEsIEZlYXR1cmVTdHJ1Y3R1cmUgcm9v dDIpIHsNCj4gKyAgICAgIHRoaXMucm9vdDEgPSByb290MTsNCj4gKyAgICAgIHRoaXMucm9vdDIg PSByb290MjsNCj4gKyAgICAgIHRoaXMuZGlmZmVyZW5jZXMgPSBMaXN0cy5uZXdBcnJheUxpc3Qo KTsNCj4gKyAgICAgIHRoaXMuZmluZERpZmZlcmVuY2VzKA0KPiArICAgICAgICAgIHRoaXMucm9v dDEsDQo+ICsgICAgICAgICAgdGhpcy5yb290MiwNCj4gKyAgICAgICAgICBMaXN0cy48RmVhdHVy ZT4gbmV3QXJyYXlMaXN0KCksDQo+ICsgICAgICAgICAgTGlzdHMuPEZlYXR1cmVTdHJ1Y3R1cmU+ IG5ld0FycmF5TGlzdCgpKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBwdWJsaWMgYm9vbGVhbiBo YXNEaWZmZXJlbmNlcygpIHsNCj4gKyAgICAgIHJldHVybiAhdGhpcy5kaWZmZXJlbmNlcy5pc0Vt cHR5KCk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgQE92ZXJyaWRlDQo+ICsgICAgcHVibGljIFN0 cmluZyB0b1N0cmluZygpIHsNCj4gKyAgICAgIFN0cmluZyBkaWZmOw0KPiArICAgICAgaWYgKCF0 aGlzLmhhc0RpZmZlcmVuY2VzKCkpIHsNCj4gKyAgICAgICAgZGlmZiA9ICIiOw0KPiArICAgICAg fSBlbHNlIHsNCj4gKyAgICAgICAgTGlzdDxTdHJpbmc+IHBhdGhzID0gTGlzdHMubmV3QXJyYXlM aXN0KCk7DQo+ICsgICAgICAgIGZvciAoRlNEaWZmZXJlbmNlIGRpZmZlcmVuY2UgOiB0aGlzLmRp ZmZlcmVuY2VzKSB7DQo+ICsgICAgICAgICAgTGlzdDxTdHJpbmc+IGZlYXR1cmVOYW1lcyA9IExp c3RzLm5ld0FycmF5TGlzdCgpOw0KPiArICAgICAgICAgIGZvciAoRmVhdHVyZSBmZWF0dXJlIDog ZGlmZmVyZW5jZS5nZXRQYXRoKCkpIHsNCj4gKyAgICAgICAgICAgIGZlYXR1cmVOYW1lcy5hZGQo ZmVhdHVyZS5nZXRTaG9ydE5hbWUoKSk7DQo+ICsgICAgICAgICAgfQ0KPiArICAgICAgICAgIHBh dGhzLmFkZChKb2luZXIub24oJy8nKS5qb2luKGZlYXR1cmVOYW1lcykpOw0KPiArICAgICAgICB9 DQo+ICsgICAgICAgIGRpZmYgPSB0aGlzLnJvb3QxLnRvU3RyaW5nKCk7DQo+ICsgICAgICAgIGZv ciAoRlNEaWZmZXJlbmNlIGRpZmZlcmVuY2UgOiB0aGlzLmRpZmZlcmVuY2VzKSB7DQo+ICsgICAg ICAgICAgU3RyaW5nIHZhbHVlMSA9IGRpZmZlcmVuY2UuZ2V0VmFsdWUxKCkudG9TdHJpbmcoKS50 cmltKCk7DQo+ICsgICAgICAgICAgU3RyaW5nIHZhbHVlMiA9IGRpZmZlcmVuY2UuZ2V0VmFsdWUy KCkudG9TdHJpbmcoKS50cmltKCk7DQo+ICsgICAgICAgICAgU3RyaW5nIHZhbHVlMXNwYWNlID0g dmFsdWUxLnJlcGxhY2VBbGwoIlxccysiLCAiXFxcXHMrIik7DQo+ICsgICAgICAgICAgUGF0dGVy biBwYXR0ZXJuID0NCj4gKyAgICAgICAgICAgICAgUGF0dGVybi5jb21waWxlKFN0cmluZy5mb3Jt YXQoIl4oLio/KSglcykiLCB2YWx1ZTFzcGFjZSksDQo+IFBhdHRlcm4uTVVMVElMSU5FKTsNCj4g KyAgICAgICAgICBNYXRjaGVyIG1hdGNoZXIgPSBwYXR0ZXJuLm1hdGNoZXIoZGlmZik7DQo+ICsg ICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsNCj4gKyAg ICAgICAgICB3aGlsZSAobWF0Y2hlci5maW5kKCkpIHsNCj4gKyAgICAgICAgICAgIFN0cmluZyBw cmVmaXggPSBtYXRjaGVyLmdyb3VwKDEpOw0KPiArICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2Vt ZW50Ow0KPiArICAgICAgICAgICAgLy8gZG9uJ3QgcmUtcmVwbGFjZSB0aGluZ3MgdGhhdCBoYXZl IGFscmVhZHkgYmVlbiB0YWtlbiBjYXJlIG9mDQo+ICsgICAgICAgICAgICBpZiAocHJlZml4LnN0 YXJ0c1dpdGgoIi0iKSB8fCBwcmVmaXguc3RhcnRzV2l0aCgiKyIpKSB7DQo+ICsgICAgICAgICAg ICAgIHJlcGxhY2VtZW50ID0gbWF0Y2hlci5ncm91cCgpOw0KPiArICAgICAgICAgICAgfQ0KPiAr ICAgICAgICAgICAgLy8gcmVwbGFjZSB0aGUgY3VycmVudCB0ZXh0IHdpdGggZGlmZi1zdHlsZSAr Ly0gdGV4dA0KPiArICAgICAgICAgICAgZWxzZSB7DQo+ICsgICAgICAgICAgICAgIE1hdGNoZXIg aW5kZW50TWF0Y2hlciA9IFBhdHRlcm4uY29tcGlsZSgiXlxccyoiKS5tYXRjaGVyKHByZWZpeCk7 DQo+ICsgICAgICAgICAgICAgIGluZGVudE1hdGNoZXIuZmluZCgpOw0KPiArICAgICAgICAgICAg ICBTdHJpbmcgaW5kZW50ID0gaW5kZW50TWF0Y2hlci5ncm91cCgpOw0KPiArICAgICAgICAgICAg ICByZXBsYWNlbWVudCA9DQo+ICsgICAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICIlcyVzXG4lcyVzIiwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAiLSIgKyBwcmVmaXgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgdmFsdWUxLnJlcGxh Y2VBbGwoIlxuIiwgIlxuLSIgKyBpbmRlbnQpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICIr IiArIHByZWZpeCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTIucmVwbGFjZUFsbCgi XG4iLCAiXG4rIiArIGluZGVudCkpOw0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAg bWF0Y2hlci5hcHBlbmRSZXBsYWNlbWVudChidWZmZXIsIHJlcGxhY2VtZW50KTsNCj4gKyAgICAg ICAgICB9DQo+ICsgICAgICAgICAgbWF0Y2hlci5hcHBlbmRUYWlsKGJ1ZmZlcik7DQo+ICsgICAg ICAgICAgZGlmZiA9IGJ1ZmZlci50b1N0cmluZygpOw0KPiArICAgICAgICB9DQo+ICsgICAgICAg IGRpZmYgPSBkaWZmLnJlcGxhY2VBbGwoIig/bSleKD8hWystXSkiLCAiICIpOw0KPiArICAgICAg ICBkaWZmID0gU3RyaW5nLmZvcm1hdCgiRGlmZmVyZW5jZSBpbiAlczpcbiVzIiwgcGF0aHMsIGRp ZmYpOw0KPiArICAgICAgfQ0KPiArICAgICAgcmV0dXJuIGRpZmY7DQo+ICsgICAgfQ0KPiArDQo+ ICsgICAgcHJpdmF0ZSB2b2lkIGZpbmREaWZmZXJlbmNlcygNCj4gKyAgICAgICAgRmVhdHVyZVN0 cnVjdHVyZSBmczEsDQo+ICsgICAgICAgIEZlYXR1cmVTdHJ1Y3R1cmUgZnMyLA0KPiArICAgICAg ICBMaXN0PEZlYXR1cmU+IGZlYXR1cmVQYXRoLA0KPiArICAgICAgICBMaXN0PEZlYXR1cmVTdHJ1 Y3R1cmU+IHNlZW4pIHsNCj4gKyAgICAgIGlmICghc2Vlbi5jb250YWlucyhmczEpICYmICFzZWVu LmNvbnRhaW5zKGZzMikpIHsNCj4gKyAgICAgICAgc2Vlbi5hZGQoZnMxKTsNCj4gKyAgICAgICAg c2Vlbi5hZGQoZnMyKTsNCj4gKyAgICAgICAgZm9yIChGZWF0dXJlIGZlYXR1cmUgOiBmczEuZ2V0 VHlwZSgpLmdldEZlYXR1cmVzKCkpIHsNCj4gKyAgICAgICAgICBpZiAoZmVhdHVyZS5nZXROYW1l KCkuZXF1YWxzKCJ1aW1hLmNhcy5Bbm5vdGF0aW9uQmFzZTpzb2ZhIikpIHsNCj4gKyAgICAgICAg ICAgIGNvbnRpbnVlOw0KPiArICAgICAgICAgIH0NCj4gKyAgICAgICAgICBMaXN0PEZlYXR1cmU+ IG5ld1BhdGggPSBMaXN0cy5uZXdBcnJheUxpc3QoZmVhdHVyZVBhdGgpOw0KPiArICAgICAgICAg IG5ld1BhdGguYWRkKGZlYXR1cmUpOw0KPiArICAgICAgICAgIGlmIChmZWF0dXJlLmdldFJhbmdl KCkuaXNQcmltaXRpdmUoKSkgew0KPiArICAgICAgICAgICAgU3RyaW5nIHZhbHVlMSA9IGZzMS5n ZXRGZWF0dXJlVmFsdWVBc1N0cmluZyhmZWF0dXJlKTsNCj4gKyAgICAgICAgICAgIFN0cmluZyB2 YWx1ZTIgPSBmczIuZ2V0RmVhdHVyZVZhbHVlQXNTdHJpbmcoZmVhdHVyZSk7DQo+ICsgICAgICAg ICAgICBpZiAoIU9iamVjdHMuZXF1YWwodmFsdWUxLCB2YWx1ZTIpKSB7DQo+ICsgICAgICAgICAg ICAgIHRoaXMuZGlmZmVyZW5jZXMuYWRkKG5ldyBGU0RpZmZlcmVuY2UobmV3UGF0aCwgdmFsdWUx LCB2YWx1ZTIpKTsNCj4gKyAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICB9IGVsc2Ugew0KPiAr ICAgICAgICAgICAgRmVhdHVyZVN0cnVjdHVyZSB2YWx1ZTEgPSBmczEuZ2V0RmVhdHVyZVZhbHVl KGZlYXR1cmUpOw0KPiArICAgICAgICAgICAgRmVhdHVyZVN0cnVjdHVyZSB2YWx1ZTIgPSBmczIu Z2V0RmVhdHVyZVZhbHVlKGZlYXR1cmUpOw0KPiArICAgICAgICAgICAgaWYgKHZhbHVlMSA9PSBu dWxsDQo+ICsgICAgICAgICAgICAgICAgfHwgdmFsdWUyID09IG51bGwNCj4gKyAgICAgICAgICAg ICAgICB8fA0KPiAhdmFsdWUxLmdldFR5cGUoKS5nZXROYW1lKCkuZXF1YWxzKHZhbHVlMi5nZXRU eXBlKCkuZ2V0TmFtZSgpKSkgew0KPiArICAgICAgICAgICAgICBpZiAoIU9iamVjdHMuZXF1YWwo dmFsdWUxLCB2YWx1ZTIpKSB7DQo+ICsgICAgICAgICAgICAgICAgdGhpcy5kaWZmZXJlbmNlcy5h ZGQobmV3IEZTRGlmZmVyZW5jZShuZXdQYXRoLCB2YWx1ZTEsIHZhbHVlMikpOw0KPiArICAgICAg ICAgICAgICB9DQo+ICsgICAgICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgICB0aGlz LmZpbmREaWZmZXJlbmNlcyh2YWx1ZTEsIHZhbHVlMiwgbmV3UGF0aCwgc2Vlbik7DQo+ICsgICAg ICAgICAgICB9DQo+ICsgICAgICAgICAgfQ0KPiArICAgICAgICB9DQo+ICsgICAgICB9DQo+ICsg ICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgcHVibGljIHN0YXRpYyBjbGFzcyBGU0RpZmZlcmVuY2Ug ew0KPiArDQo+ICsgICAgcHJpdmF0ZSBMaXN0PEZlYXR1cmU+IHBhdGg7DQo+ICsgICAgcHJpdmF0 ZSBPYmplY3QgdmFsdWUxLCB2YWx1ZTI7DQo+ICsNCj4gKyAgICBwdWJsaWMgRlNEaWZmZXJlbmNl KExpc3Q8RmVhdHVyZT4gcGF0aCwgT2JqZWN0IHZhbHVlMSwgT2JqZWN0IHZhbHVlMikgew0KPiAr ICAgICAgdGhpcy5wYXRoID0gcGF0aDsNCj4gKyAgICAgIHRoaXMudmFsdWUxID0gdmFsdWUxOw0K PiArICAgICAgdGhpcy52YWx1ZTIgPSB2YWx1ZTI7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcHVi bGljIExpc3Q8RmVhdHVyZT4gZ2V0UGF0aCgpIHsNCj4gKyAgICAgIHJldHVybiBwYXRoOw0KPiAr ICAgIH0NCj4gKw0KPiArICAgIHB1YmxpYyBPYmplY3QgZ2V0VmFsdWUxKCkgew0KPiArICAgICAg cmV0dXJuIHZhbHVlMTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBwdWJsaWMgT2JqZWN0IGdldFZh bHVlMigpIHsNCj4gKyAgICAgIHJldHVybiB2YWx1ZTI7DQo+ICsgICAgfQ0KPiArICB9DQo+ICt9 DQo+IA0KDQo=