RE: Suggestion needed for a case of Lucene Migration with TokenStream
"Saha, Rajib" <[email protected]> Mon, 28 Apr 2025 10:43:12 +0000
| Newsgroups | gmane.comp.jakarta.lucene.user |
|---|---|
| Message-ID | <DB9PR02MB8371DD04D07D1ADFD060DC4390812@DB9PR02MB8371.eurprd02.prod.outlook.com> |
SGkgVXdlLA0KDQpUaGFuayB5b3UgZm9yIHlvdXIgZGV0YWlsZWQgaW5wdXQgYW5kIHZhbHVhYmxl IGFkdmljZS4gSSBmdWxseSB1bmRlcnN0YW5kIGFuZCBhZ3JlZSB0aGF0IHVwZ3JhZGluZyBmcm9t IHN1Y2ggYW4gb2xkIHZlcnNpb24gb2YgTHVjZW5lIGludm9sdmVzIG11Y2ggbW9yZSB0aGFuIGp1 c3QgcmVzb2x2aW5nIGNvbXBpbGF0aW9uIGlzc3Vlcy4NCkJhc2VkIG9uIHRoZSBsYXRlc3QgTHVj ZW5lIHZlcnNpb24sIHdlIGhhdmUgcmVkZXNpZ25lZCBvdXIgcGxhdGZvcm0gYWNjb3JkaW5nbHkg Z29pbmcgdGhyb3VnaCB0aGUgTHVjZW5lIEFQSXMgdXNlZCBhbmQgcmVwbGFjaW5nIGFjY29yZGlu Z2x5IHRvIGxhdGVzdC4NCg0KV2l0aCB0aGVzZSBjaGFuZ2VzLCBGcmVzaCBjb250ZW50IGluZGV4 aW5nIGlzIHdvcmtpbmcgZmluZS4gU2VhcmNoIHJlc3VsdHMgYXJlIGFsc28gY29taW5nIGFzIGV4 cGVjdGVkLg0KR3JlYXRseSBhcHByZWNpYXRlIHlvdXIgZXhwZXJ0IGd1aWRhbmNlLCB0byBoZWxw IHRvIGJyaW5naW5nIHRpbGwgdGhpcyBwb2ludC4NCg0KQnV0IHNhbWUgY29udGVudCBvbiByZWJ1 aWxkaW5nIHRoZSBpbmRleCBpcyBub3Qgd29ya2luZy4NCkkgYW0gZGVidWdnaW5nIHRoaXMgcGFy dCBub3cuDQoNCkRvIHlvdSBoYXZlIGFueSBzdWdnZXN0aW9uIG9uIHRoZSBwcm9ibGVtID8NCg0K UmVnYXJkcw0KUmFqaWINCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFV3ZSBT Y2hpbmRsZXIgPHV3ZUB0aGV0YXBoaS5kZT4NClNlbnQ6IDI1IEFwcmlsIDIwMjUgMTg6MTkNClRv OiBqYXZhLXVzZXJAbHVjZW5lLmFwYWNoZS5vcmcNClN1YmplY3Q6IFJlOiBTdWdnZXN0aW9uIG5l ZWRlZCBmb3IgYSBjYXNlIG9mIEx1Y2VuZSBNaWdyYXRpb24gd2l0aCBUb2tlblN0cmVhbQ0KDQpI aSwNCg0KSSdkIGxpa2UgdG8gbWVudGlvbiB0aGUgZm9sbG93aW5nOiBZb3UgYXJlIHRyeWluZyB0 byB1cGdyYWRlIEx1Y2VuZSBmcm9tDQphIHJlYWxseSBhbmNpZW50IHZlcnNpb24uIE9mIGNvdXJz ZSwgYmFzaWMgY29uY2VwdHMgYXJlIHN0aWxsIHRoZSBzYW1lLA0KYnV0IHRoZSBzZXJhY2ggZW5n aW5lIGFuZCBpdHMgQVBJcyBoYXZlIGNoYW5nZWQgZHJhbWF0aWNhbGx5LCBzbyBqdXN0DQp0cnlp bmcgdG8gImNvbXBpbGUgY29kZSBhbmQgZml4IHJhbmRvbSBzdHVmZiB1bnRpbCBpdCBjb21waWxl cyIgd2lsbCBub3QNCmJyaW5nIHlvdSB0byBhIHdvcmtpbmcgcHJvZHVjdC4gT24gdG9wLCBpdCBt YXkgbWFrZSB0aGUgcHJvZHVjdCB3b3JzZQ0KdGhhbiBiZWZvcmUgdGhlIHVwZGF0ZS4NCg0KVG8g ZG8gdGhlIHVwZ3JhZGUgY29ycmVjdGx5LCBpdCBpcyByZWNvbW1lbmRlZCB0byBoYXZlIHNvbWVi b2R5DQphdmFpbGFibGUgKGlkZWFsbHkgdGhlIHBlcnNvbiB3aG8gd3JvdGUgdGhlIGNvZGUgb3Jp Z2luYWxseSkgYW5kIHRoZW4gZ28NCnRob3VnaCBpdCBsaW5lLWJ5IGxpbmUgYW5kIHJld3JpdGUg aXQuIEkgYW0gZXhwbGljaXRlbHkgbWVudGlvbmluZw0KInJld3JpdGUiIGJlY2F1c2UgdGhhdCdz IHdoYXQgeW91IHNob3VsZCBkbyEgSWYgeW91IGRvbid0IGhhdmUgYSBwZXJzb24NCnRoYXQgdW5k ZXJ0c3RhbmRzIEx1Y2VuZSBlbm91Z2gsIEknZCBzdWdnZXN0IHRvIGdldCBoZWxwIGZyb20gb3V0 c2lkZS4NCllvdSBuZWVkIHRvIHVuZGVyc3RhbmQgZXZlcnkgbGluZSBvZiBjb2RlIHdoZW4gcmV3 cml0aW5nIGl0LiBJbiBhZGRpdGlvbg0KdGhlcmUgYXJlIG1hbnkgbmV3IGZlYXR1cmVzIHRoYXQg bWFrZSBhbGwgdGhhdCBzZXBjaWFsIGNhc2VzIGxpa2UNClBheUxvYWRzIG9uIFRva2Vuc3RyZWFt cyBvYnNvbGV0ZS4gSSdkIG5vdCByZWNvbW1lbmQgdG8gdXNlIHNvbWV0aGluZw0KcGF5bG9hZHMg b24gdGVybXMgbm93YWRheXMuDQoNClV3ZQ0KDQpBbSAyNC4wNC4yMDI1IHVtIDEyOjI5IHNjaHJp ZWIgTWlraGFpbCBLaGx1ZG5ldjoNCj4gUmlnaHQuIFRleHRGaWVsZC5UWVBFX05PVF9TVE9SRUQg c2hvdWxkIGJlIHVzZWQgdGhlbi4NCj4NCj4gT24gVGh1LCBBcHIgMjQsIDIwMjUgYXQgMTA6Mzfi gK9BTSBTYWhhLCBSYWppYiA8cmFqaWIuc2FoYUBzYXAuY29tLmludmFsaWQ+DQo+IHdyb3RlOg0K Pg0KPj4gVGhhbmtzIE1pa2hhaWwgZm9yIHRoZSBzdWdnZXN0aW9uLg0KPj4gTm93IHRoZSBwcmV2 aW91cyBleGNlcHRpb24gaGFzIGdvbmUuIEJ1dCBhIG5ldyBleGNlcHRpb24gaGFzIGNvbWUgZnJv bQ0KPj4gRmllbGQuamF2YS4NCj4+IEhlcmUgYmVsb3cgYXJlIHRoZSBleGNlcHRpb24gZGV0YWls cy4NCj4+ID09PT09PT09DQo+PiBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uOiBU b2tlblN0cmVhbSBmaWVsZHMgY2Fubm90IGJlIHN0b3JlZA0KPj4gICAgICAgICAgYXQgb3JnLmFw YWNoZS5sdWNlbmUuZG9jdW1lbnQuRmllbGQuPGluaXQ+KEZpZWxkLmphdmE6MTU1KQ0KPj4gPT09 PT09PT09DQo+Pg0KPj4gQ2FuIHlvdSBwbGVhc2Ugc3VnZ2VzdCBoZXJlIHRvbz8NCj4+DQo+PiBS ZWdhcmRzDQo+PiBSYWppYg0KPj4NCj4+DQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K Pj4gRnJvbTogTWlraGFpbCBLaGx1ZG5ldiA8bWtobEBhcGFjaGUub3JnPg0KPj4gU2VudDogMjQg QXByaWwgMjAyNSAxMjoxMA0KPj4gVG86IGphdmEtdXNlckBsdWNlbmUuYXBhY2hlLm9yZw0KPj4g U3ViamVjdDogUmU6IFN1Z2dlc3Rpb24gbmVlZGVkIGZvciBhIGNhc2Ugb2YgTHVjZW5lIE1pZ3Jh dGlvbiB3aXRoDQo+PiBUb2tlblN0cmVhbQ0KPj4NCj4+IEhpDQo+PiBVc2UgVGV4dEZpZWxkLlRZ UEVfU1RPUkVEIGFzIHRoZSB0aGlyZCBhcmd1bWVudCBpbiBuZXcgRmllbGQoKQ0KPj4gc2VlDQo+ Pg0KPj4gaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS9sdWNlbmUtc29sci9ibG9iL2UyN2Y0NGUz ZDc4ZGZjZWMyMzBjOTdlMGExMjQwZTM3NTFkYWVmZjkvbHVjZW5lL2NvcmUvc3JjL2phdmEvb3Jn L2FwYWNoZS9sdWNlbmUvZG9jdW1lbnQvVGV4dEZpZWxkLmphdmEjTDM1QzMzLUwzNUM0NA0KPj4N Cj4+DQo+PiBPbiBUaHUsIEFwciAyNCwgMjAyNSBhdCA4OjM34oCvQU0gU2FoYSwgUmFqaWIgPHJh amliLnNhaGFAc2FwLmNvbS5pbnZhbGlkPg0KPj4gd3JvdGU6DQo+Pg0KPj4+IEhpIEV4cGVydHMs DQo+Pj4NCj4+PiBXZSBhcmUgbWlncmF0aW5nIEx1Y2VuZSBmcm9tIDIuNC4xIHRvIDguMTEuMi4N Cj4+Pg0KPj4+IER1cmluZyBNaWdyYXRpb24gZm9yIGEgcGFydCBvZiBjb2RlLCB3ZSBhcmUgZ2V0 dGluZyBiZWxvdyBleGNlcHRpb24gaW4NCj4+PiA4LjExLjIgYmFzZWQgY2hhbmdlcyBmcm9tIFJl ZCBsaW5lIGNvbG9yZWQuDQo+Pj4gPT09PT09PT09PT09PQ0KPj4+IGphdmEubGFuZy5JbGxlZ2Fs QXJndW1lbnRFeGNlcHRpb246IFRva2VuU3RyZWFtIGZpZWxkcyBtdXN0IGJlIGluZGV4ZWQNCj4+ IGFuZA0KPj4+IHRva2VuaXplZA0KPj4+IGF0IG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50LkZp ZWxkLjxpbml0PihGaWVsZC5qYXZhOjE1MikNCj4+Pg0KPj4+IEkgdGllZCBmZXcgb3B0aW9ucy4g QnV0LCBjb3VsZCBub3QgYWJsZSB0byByZXNvbHZlIHRoZSBlcnJvci4gQmVpaXcNCj4+PiBDYW4g c29tZWJvZHkgb2YgeW91IHBsZWFzZSBoZWxwIG1lIHRvIGlkZW50aWZ5LCB3aGVyZSBpdCBpcyBn b2luZyBhcw0KPj4gd3Jvbmc/DQo+Pj4gV2UgaGFkIGNvZGUgYmFzZWQgb24gMi40LjEgYXMgbGlr ZSBiZWxvdzoNCj4+PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPj4+IElu dCBjdXJyZW50VmFsPA0KPj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2Rl ZnM9Y3VycmVudFZhbCZwcm9qZWN0PTIwMjVfUlRNPiA9DQo+Pj4gLy9zb21lIHZhbHVlDQo+Pj4g UGF5bG9hZFRva2VuU3RyZWFtPA0KPj4+DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9z b3VyY2Uvcz9kZWZzPVBheWxvYWRUb2tlblN0cmVhbSZwcm9qZWN0PTIwMjVfUlRNDQo+Pj4gdG9r ZW5TdHJlYW08DQo+Pj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/cmVmcz10 b2tlblN0cmVhbSZwcm9qZWN0PTIwMjVfUlRNPiA9DQo+Pj4gbmV3IFBheWxvYWRUb2tlblN0cmVh bTwNCj4+Pg0KPj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1QYXls b2FkVG9rZW5TdHJlYW0mcHJvamVjdD0yMDI1X1JUTQ0KPj4+PiAoKTsNCj4+PiB0b2tlblN0cmVh bTwNCj4+Pg0KPj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3hyZWYvMjAyNV9S VE0vcGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2phdmEvc2VydmljZXBs dWdpbnMvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9sdWNlbmUv aW5kZXgvZW5naW5lL0x1Y2VuZUluZGV4RW5naW5lLmphdmEjdG9rZW5TdHJlYW0NCj4+Pj4gLnNl dFBheWxvYWQ8DQo+Pj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1z ZXRQYXlsb2FkJnByb2plY3Q9MjAyNV9SVE0NCj4+Pj4gKGN1cnJlbnRWYWw8DQo+Pj4gaHR0cDov LzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1jdXJyZW50VmFsJnByb2plY3Q9MjAy NV9SVE0+KTsNCj4+PiBsdWNGaWVsZDwNCj4+Pg0KPj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgw ODAvc291cmNlL3hyZWYvMjAyNV9SVE0vcGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJh bWV3b3JrL2phdmEvc2VydmljZXBsdWdpbnMvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3Bs YXRmb3JtL3NlYXJjaC9sdWNlbmUvaW5kZXgvZW5naW5lL0x1Y2VuZUluZGV4RW5naW5lLmphdmEj bHVjRmllbGQNCj4+PiA9IG5ldyBGaWVsZDwNCj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4 MC9zb3VyY2Uvcz9kZWZzPUZpZWxkJnByb2plY3Q9MjAyNV9SVE0+KGNvbmZpZzwNCj4+PiBodHRw Oi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPWNvbmZpZyZwcm9qZWN0PTIwMjVf UlRNDQo+Pj4+IC5wYXlsb2FkVWlkPA0KPj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3Nv dXJjZS9zP2RlZnM9cGF5bG9hZFVpZCZwcm9qZWN0PTIwMjVfUlRNDQo+Pj4+ICgpLm5hbWU8aHR0 cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1uYW1lJnByb2plY3Q9MjAyNV9S VE0NCj4+PiAsDQo+Pj4gdG9rZW5TdHJlYW08DQo+Pj4NCj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEw MTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZh L2ZyYW1ld29yay9qYXZhL3NlcnZpY2VwbHVnaW5zL3NyYy9jb20vc2FwL2J1c2luZXNzb2JqZWN0 cy9wbGF0Zm9ybS9zZWFyY2gvbHVjZW5lL2luZGV4L2VuZ2luZS9MdWNlbmVJbmRleEVuZ2luZS5q YXZhI3Rva2VuU3RyZWFtDQo+Pj4+ICk7DQo+Pj4gZG9jPGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4 MDgwL3NvdXJjZS9zP2RlZnM9ZG9jJnByb2plY3Q9MjAyNV9SVE0+LmFkZDwNCj4+PiBodHRwOi8v MTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPWFkZCZwcm9qZWN0PTIwMjVfUlRNPihs dWNGaWVsZDwNCj4+Pg0KPj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3hyZWYv MjAyNV9SVE0vcGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2phdmEvc2Vy dmljZXBsdWdpbnMvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9s dWNlbmUvaW5kZXgvZW5naW5lL0x1Y2VuZUluZGV4RW5naW5lLmphdmEjbHVjRmllbGQNCj4+Pj4g KTsNCj4+PiAuLi4uLi4NCj4+PiBwdWJsaWMgY2xhc3MgUGF5bG9hZFRva2VuU3RyZWFtPA0KPj4+ DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9yZWZzPVBheWxvYWRUb2tl blN0cmVhbSZwcm9qZWN0PTIwMjVfUlRNDQo+Pj4gZXh0ZW5kcyBUb2tlblN0cmVhbTwNCj4+PiBo dHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPVRva2VuU3RyZWFtJnByb2pl Y3Q9MjAyNV9SVE0+ew0KPj4+IHB1YmxpYyBzdGF0aWMgU3RyaW5nPA0KPj4+IGh0dHA6Ly8xMC4y MzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9U3RyaW5nJnByb2plY3Q9MjAyNV9SVE0+DQo+ Pj4gVUlEX1BBWUxPQURfU1RBUlRfVkFMPA0KPj4+DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6 ODA4MC9zb3VyY2Uvcz9yZWZzPVVJRF9QQVlMT0FEX1NUQVJUX1ZBTCZwcm9qZWN0PTIwMjVfUlRN DQo+Pj4gPSAiX1VJRF8iOw0KPj4+ICAgICAgICAgICAgICAgIHByaXZhdGUgVG9rZW48DQo+Pj4g aHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1Ub2tlbiZwcm9qZWN0PTIw MjVfUlRNPiB0b2tlbjwNCj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9y ZWZzPXRva2VuJnByb2plY3Q9MjAyNV9SVE0+ID0gbmV3DQo+Pj4gVG9rZW48aHR0cDovLzEwLjIz OC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1Ub2tlbiZwcm9qZWN0PTIwMjVfUlRNDQo+Pj4+ IChVSURfUEFZTE9BRF9TVEFSVF9WQUw8DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9z b3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdv cmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9z ZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjVUlEX1BBWUxPQURfU1RBUlRfVkFMDQo+ Pj4+ICwwLDApOw0KPj4+ICAgICAgICAgICAgICAgIHByaXZhdGUgYnl0ZVtdIGJ1ZmZlcjwNCj4+ PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9yZWZzPWJ1ZmZlciZwcm9qZWN0 PTIwMjVfUlRNPiA9IG5ldw0KPj4+IGJ5dGVbNF07DQo+Pj4gICAgICAgICAgICAgICAgcHJpdmF0 ZSBib29sZWFuIHJldHVyblRva2VuPA0KPj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3Nv dXJjZS9zP3JlZnM9cmV0dXJuVG9rZW4mcHJvamVjdD0yMDI1X1JUTT4gPQ0KPj4+IGZhbHNlOw0K Pj4+DQo+Pj4gICAgICAgICAgICAgICAgcHVibGljIHZvaWQgc2V0UGF5bG9hZDwNCj4+PiBodHRw Oi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9yZWZzPXNldFBheWxvYWQmcHJvamVjdD0y MDI1X1JUTQ0KPj4+IChpbnQNCj4+PiB1aWQ8aHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291 cmNlL3M/cmVmcz11aWQmcHJvamVjdD0yMDI1X1JUTT4pew0KPj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ1ZmZlcjwNCj4+Pg0KPj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAv c291cmNlL3hyZWYvMjAyNV9SVE0vcGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3 b3JrL2phdmEvc2RrL3NyYy9jb20vc2FwL2J1c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gv c2RrL2luZGV4L1BheWxvYWRUb2tlblN0cmVhbS5qYXZhI2J1ZmZlcg0KPj4+IFswXQ0KPj4+ID0g KGJ5dGUpdWlkPA0KPj4+DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJl Zi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9z ZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgv UGF5bG9hZFRva2VuU3RyZWFtLmphdmEjdWlkDQo+Pj4+IDsNCj4+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBidWZmZXI8DQo+Pj4NCj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgw L3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1l d29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNo L3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNidWZmZXINCj4+PiBbMV0NCj4+PiA9 IChieXRlKSh1aWQ8DQo+Pj4NCj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94 cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZh L3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRl eC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSN1aWQNCj4+Pj4+PiA4KTsNCj4+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBidWZmZXI8DQo+Pj4NCj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEw MTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZh L2ZyYW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0v c2VhcmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNidWZmZXINCj4+PiBbMl0N Cj4+PiA9IChieXRlKSh1aWQ8DQo+Pj4NCj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3Nv dXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29y ay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nk ay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSN1aWQNCj4+Pj4+PiAxNik7DQo+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPA0KPj4+DQo+PiBodHRwOi8vMTAuMjM4 LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFy Y2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3Bs YXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjYnVmZmVyDQo+ Pj4gWzNdDQo+Pj4gPSAoYnl0ZSkodWlkPA0KPj4+DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6 ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9m cmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3Nl YXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjdWlkDQo+Pj4+Pj4gMjQpOw0K Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuPA0KPj4+DQo+PiBodHRwOi8v MTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNl cy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmpl Y3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjdG9r ZW4NCj4+Pj4gLnNldFBheWxvYWQ8DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3Vy Y2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsv amF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsv aW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjc2V0UGF5bG9hZA0KPj4+IChuZXcNCj4+PiBQ YXlsb2FkPA0KPj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1QYXls b2FkJnByb2plY3Q9MjAyNV9SVE0NCj4+Pj4gKGJ1ZmZlcjwNCj4+IGh0dHA6Ly8xMC4yMzguMjM2 LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5q YXZhL2ZyYW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZv cm0vc2VhcmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNidWZmZXINCj4+Pj4g KSk7DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVG9rZW4gPSB0cnVl Ow0KPj4+ICAgICAgICAgICAgICAgIH0NCj4+PiAgICAgICAgICAgICAgICBwdWJsaWMgVG9rZW48 DQo+Pj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1Ub2tlbiZwcm9q ZWN0PTIwMjVfUlRNPiBuZXh0PA0KPj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJj ZS9zP3JlZnM9bmV4dCZwcm9qZWN0PTIwMjVfUlRNPigpIHRocm93cw0KPj4+IElPRXhjZXB0aW9u PA0KPj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9SU9FeGNlcHRp b24mcHJvamVjdD0yMDI1X1JUTT57DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgKHJldHVyblRva2VuPA0KPj4+DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3Vy Y2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsv amF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsv aW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjcmV0dXJuVG9rZW4NCj4+PiApew0KPj4+IHJl dHVyblRva2VuPA0KPj4+DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJl Zi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9z ZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgv UGF5bG9hZFRva2VuU3RyZWFtLmphdmEjcmV0dXJuVG9rZW4NCj4+PiA9IGZhbHNlOyByZXR1cm4g dG9rZW48DQo+Pj4NCj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIw MjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9z cmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXls b2FkVG9rZW5TdHJlYW0uamF2YSN0b2tlbg0KPj4+IDsNCj4+PiB9DQo+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZWxzZSB7IHJldHVybiBudWxsPA0KPj4+IGh0dHA6Ly8xMC4yMzgu MjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9bnVsbCZwcm9qZWN0PTIwMjVfUlRNPjsgfQ0KPj4+ DQo+Pj4gICAgICAgICAgICAgICAgfQ0KPj4+IH0NCj4+Pg0KPj4+DQo+Pj4gV2UgaGF2ZSBtYWRl IGNvZGUgYmFzZWQgb24gOC4xMS4yIGFzIGxpa2UgYmVsb3c6DQo+Pj4gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+Pj4gUGF5bG9hZFRva2VuU3RyZWFtIHRva2Vu U3RyZWFtID0gbmV3IFBheWxvYWRUb2tlblN0cmVhbSgpOw0KPj4+IHRva2VuU3RyZWFtLnNldFBh eWxvYWQoY3VycmVudFZhbCk7DQo+Pj4gRmllbGRUeXBlIGZpZWxkVHlwZSA9IG5ldyBGaWVsZFR5 cGUoKTsNCj4+PiBsdWNGaWVsZCA9IG5ldyBGaWVsZChjb25maWcucGF5bG9hZFVpZCgpLm5hbWUs IHRva2VuU3RyZWFtLCBmaWVsZFR5cGUpOw0KPj4+IGRvYy5hZGQobHVjRmllbGQpOw0KPj4+IC0t LS0NCj4+PiBwdWJsaWMgY2xhc3MgUGF5bG9hZFRva2VuU3RyZWFtPA0KPj4+DQo+PiBodHRwOi8v MTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9yZWZzPVBheWxvYWRUb2tlblN0cmVhbSZwcm9q ZWN0PTIwMjVfUlRNDQo+Pj4gZXh0ZW5kcyBUb2tlblN0cmVhbTwNCj4+PiBodHRwOi8vMTAuMjM4 LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPVRva2VuU3RyZWFtJnByb2plY3Q9MjAyNV9SVE0+ ew0KPj4+IHB1YmxpYyBzdGF0aWMgU3RyaW5nPA0KPj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4 MDgwL3NvdXJjZS9zP2RlZnM9U3RyaW5nJnByb2plY3Q9MjAyNV9SVE0+DQo+Pj4gVUlEX1BBWUxP QURfU1RBUlRfVkFMPA0KPj4+DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uv cz9yZWZzPVVJRF9QQVlMT0FEX1NUQVJUX1ZBTCZwcm9qZWN0PTIwMjVfUlRNDQo+Pj4gPSAiX1VJ RF8iOw0KPj4+IHByaXZhdGUgYnl0ZVtdIGJ1ZmZlcjwNCj4+PiBodHRwOi8vMTAuMjM4LjIzNi4x MDE6ODA4MC9zb3VyY2Uvcz9yZWZzPWJ1ZmZlciZwcm9qZWN0PTIwMjVfUlRNPiA9IG5ldw0KPj4+ IGJ5dGVbNF07DQo+Pj4gICAgICAgICAgICAgICAgcHJpdmF0ZSBib29sZWFuIHJldHVyblRva2Vu PA0KPj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP3JlZnM9cmV0dXJuVG9r ZW4mcHJvamVjdD0yMDI1X1JUTT4gPQ0KPj4+IGZhbHNlOw0KPj4+DQo+Pj4gICAgICAgICAgICAg ICAgcHVibGljIHZvaWQgc2V0UGF5bG9hZDwNCj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4 MC9zb3VyY2Uvcz9yZWZzPXNldFBheWxvYWQmcHJvamVjdD0yMDI1X1JUTQ0KPj4+IChpbnQNCj4+ PiB1aWQ8aHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/cmVmcz11aWQmcHJvamVj dD0yMDI1X1JUTT4pew0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcjwN Cj4+Pg0KPj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3hyZWYvMjAyNV9SVE0v cGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2phdmEvc2RrL3NyYy9jb20v c2FwL2J1c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gvc2RrL2luZGV4L1BheWxvYWRUb2tl blN0cmVhbS5qYXZhI2J1ZmZlcg0KPj4+IFswXQ0KPj4+ID0gKGJ5dGUpdWlkPA0KPj4+DQo+PiBo dHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5z ZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5l c3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmph dmEjdWlkDQo+Pj4+IDsNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI8 DQo+Pj4NCj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRN L3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9zcmMvY29t L3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXlsb2FkVG9r ZW5TdHJlYW0uamF2YSNidWZmZXINCj4+PiBbMV0NCj4+PiA9IChieXRlKSh1aWQ8DQo+Pj4NCj4+ IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3Jt LnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNp bmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0u amF2YSN1aWQNCj4+Pj4+PiA4KTsNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi dWZmZXI8DQo+Pj4NCj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIw MjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9z cmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXls b2FkVG9rZW5TdHJlYW0uamF2YSNidWZmZXINCj4+PiBbMl0NCj4+PiA9IChieXRlKSh1aWQ8DQo+ Pj4NCj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3Bs YXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3Nh cC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5T dHJlYW0uamF2YSN1aWQNCj4+Pj4+PiAxNik7DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnVmZmVyPA0KPj4+DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uv eHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2 YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5k ZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjYnVmZmVyDQo+Pj4gWzNdDQo+Pj4gPSAoYnl0ZSko dWlkPA0KPj4+DQo+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1 X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3Jj L2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9h ZFRva2VuU3RyZWFtLmphdmEjdWlkDQo+Pj4+Pj4gMjQpOw0KPj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBheWxvYWRBdHRyaWJ1dGVJbXBsIGF0dHJpYnV0ZUltcGwgPSBuZXcNCj4+ PiBQYXlsb2FkQXR0cmlidXRlSW1wbChuZXcgQnl0ZXNSZWYoYnVmZmVyKSk7DQo+Pj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJbXBsKGF0dHJpYnV0ZUltcGwpOw0K Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblRva2VuID0gdHJ1ZTsNCj4+ PiAgICAgICAgICAgICAgICB9DQo+Pj4gICAgICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gaW5j cmVtZW50VG9rZW4oKSB0aHJvd3MgSU9FeGNlcHRpb24gew0KPj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChyZXR1cm5Ub2tlbil7DQo+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5Ub2tlbiA9IGZhbHNlOw0KPj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQo+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVsc2Ugew0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOw0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N Cj4+PiAgICAgICAgICAgICAgICB9DQo+Pj4gfQ0KPj4+DQo+Pj4gUmVnYXJkcw0KPj4+IFJhamli DQo+Pj4NCj4+Pg0KPj4gLS0NCj4+IFNpbmNlcmVseSB5b3Vycw0KPj4gTWlraGFpbCBLaGx1ZG5l dg0KPj4NCj4NCi0tDQpVd2UgU2NoaW5kbGVyDQpBY2h0ZXJkaWVrIDE5LCBELTI4MzU3IEJyZW1l bg0KaHR0cHM6Ly93d3cudGhldGFwaGkuZGUvDQplTWFpbDogdXdlQHRoZXRhcGhpLmRlDQoNCg0K LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQpUbyB1bnN1YnNjcmliZSwgZS1tYWlsOiBqYXZhLXVzZXItdW5zdWJzY3Jp YmVAbHVjZW5lLmFwYWNoZS5vcmcNCkZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBlLW1haWw6IGph dmEtdXNlci1oZWxwQGx1Y2VuZS5hcGFjaGUub3JnDQoNCg== DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IGphdmEtdXNlci11 bnN1YnNjcmliZUBsdWNlbmUuYXBhY2hlLm9yZw0KRm9yIGFkZGl0aW9uYWwgY29tbWFuZHMs IGUtbWFpbDogamF2YS11c2VyLWhlbHBAbHVjZW5lLmFwYWNoZS5vcmcNCg0K