PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPg0KPCEtLU5ld1BhZ2UtLT4NCjxIVE1MPg0KPEhFQUQ+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFRodSBOb3YgMjIgMTc6MTI6NTggRVNUIDIwMDcgLS0+DQo8VElUTEU+DQpYYWxhbi1KYXZhIDIuNy4xOiBDbGFzcyAgTm9kZVNldA0KPC9USVRMRT4NCjxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4NCjwvSEVBRD4NCjxCT0RZIEJHQ09MT1I9IndoaXRlIj4NCg0KPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPg0KPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPg0KPFRSPg0KPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPg0KPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+DQogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL05vZGVTZXQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDwvVFI+DQo8L1RBQkxFPg0KPC9URD4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPg0KPC9FTT4NCjwvVEQ+DQo8L1RSPg0KDQo8VFI+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0RFRNLmh0bWwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiAgPEEgSFJFRj0iLi4vLi4vLi4vaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7DQombmJzcDs8QSBIUkVGPSJOb2RlU2V0Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFI+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPg0KDQo8SFI+DQo8IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+DQo8SDI+DQo8Rk9OVCBTSVpFPSItMSI+DQpvcmcuYXBhY2hlLnhwYXRoPC9GT05UPg0KPEJSPg0KQ2xhc3MgIE5vZGVTZXQ8L0gyPg0KPFBSRT4NCmphdmEubGFuZy5PYmplY3QNCiAgfA0KICArLS08Qj5vcmcuYXBhY2hlLnhwYXRoLk5vZGVTZXQ8L0I+DQo8L1BSRT4NCjxIUj4NCjxETD4NCjxEVD5wdWJsaWMgY2xhc3MgPEI+Tm9kZVNldDwvQj48RFQ+ZXh0ZW5kcyBqYXZhLmxhbmcuT2JqZWN0PERUPmltcGxlbWVudHMgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS90cmF2ZXJzYWwvTm9kZUl0ZXJhdG9yLmh0bWwiPk5vZGVJdGVyYXRvcjwvQT4sIGphdmEubGFuZy5DbG9uZWFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvYXhlcy9Db250ZXh0Tm9kZUxpc3QuaHRtbCI+Q29udGV4dE5vZGVMaXN0PC9BPjwvREw+DQoNCjxQPg0KPHA+VGhlIE5vZGVTZXQgY2xhc3MgY2FuIGFjdCBhcyBlaXRoZXIgYSBOb2RlVmVjdG9yLAogTm9kZUxpc3QsIG9yIE5vZGVJdGVyYXRvci4gIEhvd2V2ZXIsIGluIG9yZGVyIGZvciBpdCB0bwogYWN0IGFzIGEgTm9kZVZlY3RvciBvciBOb2RlTGlzdCwgaXQncyByZXF1aXJlZCB0aGF0CiBzZXRTaG91bGRDYWNoZU5vZGVzKHRydWUpIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGZpcnN0CiBuZXh0Tm9kZSgpIGlzIGNhbGxlZCwgaW4gb3JkZXIgdGhhdCBub2RlcyBjYW4gYmUgYWRkZWQKIGFzIHRoZXkgYXJlIGZldGNoZWQuICBEZXJpdmVkIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnQgaXRlcmF0b3JzCiBtdXN0IG92ZXJyaWRlIHJ1blRvKGludCBpbmRleCksIGluIG9yZGVyIHRoYXQgdGhleSBtYXkKIHJ1biB0aGUgaXRlcmF0aW9uIHRvIHRoZSBnaXZlbiBpbmRleC4gPC9wPgogCiA8cD5Ob3RlIHRoYXQgd2UgZGlyZWN0bHkgaW1wbGVtZW50IHRoZSBET00ncyBOb2RlSXRlcmF0b3IKIGludGVyZmFjZS4gV2UgZG8gbm90IGVtdWxhdGUgYWxsIHRoZSBiZWhhdmlvciBvZiB0aGUKIHN0YW5kYXJkIE5vZGVJdGVyYXRvci4gSW4gcGFydGljdWxhciwgd2UgZG8gbm90IGd1YXJhbnRlZQogdG8gcHJlc2VudCBhICJsaXZlIHZpZXciIG9mIHRoZSBkb2N1bWVudCAuLi4gYnV0IGluIFhTTFQsCiB0aGUgc291cmNlIGRvY3VtZW50IHNob3VsZCBuZXZlciBiZSBtdXRhdGVkLCBzbyB0aGlzIHNob3VsZAogbmV2ZXIgYmUgYW4gaXNzdWUuPC9wPgogCiA8cD5UaG91Z2h0OiBTaG91bGQgTm9kZVNldCByZWFsbHkgaW1wbGVtZW50IE5vZGVMaXN0IGFuZCBOb2RlSXRlcmF0b3IsCiBvciBzaG91bGQgdGhlcmUgYmUgc3BlY2lmaWMgc3ViY2xhc3NlcyBvZiBpdCB3aGljaCBkbyBzbz8gVGhlCiBhZHZhbnRhZ2Ugb2YgZG9pbmcgaXQgYWxsIGhlcmUgaXMgdGhhdCBhbGwgTm9kZVNldHMgd2lsbCByZXNwb25kCiB0byB0aGUgc2FtZSBjYWxsczsgdGhlIGRpc2FkdmFudGFnZSBpcyB0aGF0IHNvbWUgb2YgdGhlbSBtYXkgcmV0dXJuCiBsZXNzLXRoYW4tZW5saWdodGVuaW5nIHJlc3VsdHMgd2hlbiB5b3UgZG8gc28uPC9wPg0KPFA+DQo8REw+DQo8RFQ+PEI+VXNhZ2U6PC9CPjxERD48aT48Zm9udCBzaXplPSItMSIgY29sb3I9IiMwMEZGMDAiPiAqKkZvciBhZHZhbmNlZCB1c2Ugb25seSoqPC9mb250PjwvaT48L0REPgo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPFA+DQo8IS0tID09PT09PT09IElOTkVSIENMQVNTIFNVTU1BUlkgPT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4NCg0KPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4NCjxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjTm9kZVNldCgpIj5Ob2RlU2V0PC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q3JlYXRlIGFuIGVtcHR5IG5vZGVsaXN0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjTm9kZVNldChpbnQpIj5Ob2RlU2V0PC9BPjwvQj4oaW50Jm5ic3A7YmxvY2tzaXplKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q3JlYXRlIGFuIGVtcHR5LCB1c2luZyB0aGUgZ2l2ZW4gYmxvY2sgc2l6ZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI05vZGVTZXQob3JnLnczYy5kb20uTm9kZSkiPk5vZGVTZXQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7bm9kZSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NyZWF0ZSBhIE5vZGVTZXQgd2hpY2ggY29udGFpbnMgdGhlIGdpdmVuIE5vZGUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNOb2RlU2V0KG9yZy53M2MuZG9tLnRyYXZlcnNhbC5Ob2RlSXRlcmF0b3IpIj5Ob2RlU2V0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sIj5Ob2RlSXRlcmF0b3I8L0E+Jm5ic3A7bmkpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDcmVhdGUgYSBOb2RlU2V0LCBhbmQgY29weSB0aGUgbWVtYmVycyBvZiB0aGUKIGdpdmVuIE5vZGVJdGVyYXRvciBpbnRvIGl0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjTm9kZVNldChvcmcudzNjLmRvbS5Ob2RlTGlzdCkiPk5vZGVTZXQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4mbmJzcDtub2RlbGlzdCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NyZWF0ZSBhIE5vZGVTZXQsIGFuZCBjb3B5IHRoZSBtZW1iZXJzIG9mIHRoZQogZ2l2ZW4gbm9kZWxpc3QgaW50byBpdC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI05vZGVTZXQob3JnLmFwYWNoZS54cGF0aC5Ob2RlU2V0KSI+Tm9kZVNldDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sIj5Ob2RlU2V0PC9BPiZuYnNwO25vZGVsaXN0KTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q3JlYXRlIGEgTm9kZVNldCwgYW5kIGNvcHkgdGhlIG1lbWJlcnMgb2YgdGhlCiBnaXZlbiBOb2RlU2V0IGludG8gaXQuPC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KJm5ic3A7DQo8IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+DQoNCjxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPg0KPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI2FkZEVsZW1lbnQob3JnLnczYy5kb20uTm9kZSkiPmFkZEVsZW1lbnQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBcHBlbmQgYSBOb2RlIG9udG8gdGhlIHZlY3Rvci48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNhZGROb2RlKG9yZy53M2MuZG9tLk5vZGUpIj5hZGROb2RlPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiZuYnNwO24pPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGQgYSBub2RlIHRvIHRoZSBOb2RlU2V0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjYWRkTm9kZUluRG9jT3JkZXIob3JnLnczYy5kb20uTm9kZSwgYm9vbGVhbiwgb3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj5hZGROb2RlSW5Eb2NPcmRlcjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4mbmJzcDtub2RlLAogICAgICAgICAgICAgICAgICBib29sZWFuJm5ic3A7dGVzdCwKICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3N1cHBvcnQpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGQgdGhlIG5vZGUgaW50byBhIHZlY3RvciBvZiBub2RlcyB3aGVyZSBpdCBzaG91bGQgb2NjdXIgaW4KIGRvY3VtZW50IG9yZGVyLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjYWRkTm9kZUluRG9jT3JkZXIob3JnLnczYy5kb20uTm9kZSwgb3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj5hZGROb2RlSW5Eb2NPcmRlcjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4mbmJzcDtub2RlLAogICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7c3VwcG9ydCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0FkZCB0aGUgbm9kZSBpbnRvIGEgdmVjdG9yIG9mIG5vZGVzIHdoZXJlIGl0IHNob3VsZCBvY2N1ciBpbgogZG9jdW1lbnQgb3JkZXIuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjYWRkTm9kZXMob3JnLnczYy5kb20udHJhdmVyc2FsLk5vZGVJdGVyYXRvcikiPmFkZE5vZGVzPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sIj5Ob2RlSXRlcmF0b3I8L0E+Jm5ic3A7aXRlcmF0b3IpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb3B5IE5vZGVMaXN0IG1lbWJlcnMgaW50byB0aGlzIG5vZGVsaXN0LCBhZGRpbmcgaW4KIGRvY3VtZW50IG9yZGVyLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI2FkZE5vZGVzKG9yZy53M2MuZG9tLk5vZGVMaXN0KSI+YWRkTm9kZXM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT4mbmJzcDtub2RlbGlzdCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvcHkgTm9kZUxpc3QgbWVtYmVycyBpbnRvIHRoaXMgbm9kZWxpc3QsIGFkZGluZyBpbgogZG9jdW1lbnQgb3JkZXIuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjYWRkTm9kZXMob3JnLmFwYWNoZS54cGF0aC5Ob2RlU2V0KSI+YWRkTm9kZXM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCI+Tm9kZVNldDwvQT4mbmJzcDtucyk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvcHkgTm9kZUxpc3QgbWVtYmVycyBpbnRvIHRoaXMgbm9kZWxpc3QsIGFkZGluZyBpbgogZG9jdW1lbnQgb3JkZXIuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjYWRkTm9kZXNJbkRvY09yZGVyKG9yZy53M2MuZG9tLnRyYXZlcnNhbC5Ob2RlSXRlcmF0b3IsIG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+YWRkTm9kZXNJbkRvY09yZGVyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sIj5Ob2RlSXRlcmF0b3I8L0E+Jm5ic3A7aXRlcmF0b3IsCiAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7c3VwcG9ydCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvcHkgTm9kZUxpc3QgbWVtYmVycyBpbnRvIHRoaXMgbm9kZWxpc3QsIGFkZGluZyBpbgogZG9jdW1lbnQgb3JkZXIuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjYWRkTm9kZXNJbkRvY09yZGVyKG9yZy53M2MuZG9tLk5vZGVMaXN0LCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPmFkZE5vZGVzSW5Eb2NPcmRlcjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPiZuYnNwO25vZGVsaXN0LAogICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3N1cHBvcnQpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb3B5IE5vZGVMaXN0IG1lbWJlcnMgaW50byB0aGlzIG5vZGVsaXN0LCBhZGRpbmcgaW4KIGRvY3VtZW50IG9yZGVyLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI2FwcGVuZE5vZGVzKG9yZy5hcGFjaGUueHBhdGguTm9kZVNldCkiPmFwcGVuZE5vZGVzPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwiPk5vZGVTZXQ8L0E+Jm5ic3A7bm9kZXMpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBcHBlbmQgdGhlIG5vZGVzIHRvIHRoZSBsaXN0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuT2JqZWN0PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI2Nsb25lKCkiPmNsb25lPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7R2V0IGEgY2xvbmVkIExvY1BhdGhJdGVyYXRvci48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sIj5Ob2RlSXRlcmF0b3I8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI2Nsb25lV2l0aFJlc2V0KCkiPmNsb25lV2l0aFJlc2V0PC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7R2V0IGEgY2xvbmVkIEl0ZXJhdG9yLCBhbmQgcmVzZXQgaXRzIHN0YXRlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlCiBpdGVyYXRpb24uPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjY29udGFpbnMob3JnLnczYy5kb20uTm9kZSkiPmNvbnRhaW5zPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiZuYnNwO3MpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUZWxsIGlmIHRoZSB0YWJsZSBjb250YWlucyB0aGUgZ2l2ZW4gbm9kZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNkZXRhY2goKSI+ZGV0YWNoPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RGV0YWNoZXMgdGhlIGl0ZXJhdG9yIGZyb20gdGhlIHNldCB3aGljaCBpdCBpdGVyYXRlZCBvdmVyLCByZWxlYXNpbmcKIGFueSBjb21wdXRhdGlvbmFsIHJlc291cmNlcyBhbmQgcGxhY2luZyB0aGUgaXRlcmF0b3IgaW4gdGhlIElOVkFMSUQKIHN0YXRlLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI2VsZW1lbnRBdChpbnQpIj5lbGVtZW50QXQ8L0E+PC9CPihpbnQmbmJzcDtpKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7R2V0IHRoZSBudGggZWxlbWVudC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNnZXRDdXJyZW50Tm9kZSgpIj5nZXRDdXJyZW50Tm9kZTwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgbGFzdCBmZXRjaGVkIG5vZGUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNnZXRDdXJyZW50UG9zKCkiPmdldEN1cnJlbnRQb3M8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24sIHdoaWNoIGlzIG9uZSBsZXNzIHRoYW4KIHRoZSBuZXh0IG5leHROb2RlKCkgY2FsbCB3aWxsIHJldHJpZXZlLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI2dldEV4cGFuZEVudGl0eVJlZmVyZW5jZXMoKSI+Z2V0RXhwYW5kRW50aXR5UmVmZXJlbmNlczwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSB2YWx1ZSBvZiB0aGlzIGZsYWcgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjaGlsZHJlbiBvZiBlbnRpdHkKIHJlZmVyZW5jZSBub2RlcyBhcmUgdmlzaWJsZSB0byB0aGUgaXRlcmF0b3IuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL3RyYXZlcnNhbC9Ob2RlRmlsdGVyLmh0bWwiPk5vZGVGaWx0ZXI8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI2dldEZpbHRlcigpIj5nZXRGaWx0ZXI8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmlsdGVyIG9iamVjdCB1c2VkIHRvIHNjcmVlbiBub2Rlcy48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI2dldExhc3QoKSI+Z2V0TGFzdDwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjZ2V0TGVuZ3RoKCkiPmdldExlbmd0aDwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygbm9kZXMgaW4gdGhlIGxpc3QuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjZ2V0Um9vdCgpIj5nZXRSb290PC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjZ2V0U2hvdWxkQ2FjaGVOb2RlcygpIj5nZXRTaG91bGRDYWNoZU5vZGVzPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7R2V0IHdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYSBjYWNoZWQgbm9kZSBzZXQuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNnZXRXaGF0VG9TaG93KCkiPmdldFdoYXRUb1Nob3c8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIGF0dHJpYnV0ZSBkZXRlcm1pbmVzIHdoaWNoIG5vZGUgdHlwZXMgYXJlIHByZXNlbnRlZCB2aWEgdGhlCiBpdGVyYXRvci48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI2luZGV4T2Yob3JnLnczYy5kb20uTm9kZSkiPmluZGV4T2Y8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7ZWxlbSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NlYXJjaGVzIGZvciB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIHRoZSBnaXZlbiBhcmd1bWVudCwKIGJlZ2lubmluZyB0aGUgc2VhcmNoIGF0IGluZGV4LCBhbmQgdGVzdGluZyBmb3IgZXF1YWxpdHkKIHVzaW5nIHRoZSBlcXVhbHMgbWV0aG9kLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjaW5kZXhPZihvcmcudzNjLmRvbS5Ob2RlLCBpbnQpIj5pbmRleE9mPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiZuYnNwO2VsZW0sCiAgICAgICAgaW50Jm5ic3A7aW5kZXgpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZWFyY2hlcyBmb3IgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiB0aGUgZ2l2ZW4gYXJndW1lbnQsCiBiZWdpbm5pbmcgdGhlIHNlYXJjaCBhdCBpbmRleCwgYW5kIHRlc3RpbmcgZm9yIGVxdWFsaXR5CiB1c2luZyB0aGUgZXF1YWxzIG1ldGhvZC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNpbnNlcnRFbGVtZW50QXQob3JnLnczYy5kb20uTm9kZSwgaW50KSI+aW5zZXJ0RWxlbWVudEF0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiZuYnNwO3ZhbHVlLAogICAgICAgICAgICAgICAgaW50Jm5ic3A7YXQpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtJbnNlcnRzIHRoZSBzcGVjaWZpZWQgbm9kZSBpbiB0aGlzIHZlY3RvciBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI2luc2VydE5vZGUob3JnLnczYy5kb20uTm9kZSwgaW50KSI+aW5zZXJ0Tm9kZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4mbmJzcDtuLAogICAgICAgICAgIGludCZuYnNwO3Bvcyk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0luc2VydCBhIG5vZGUgYXQgYSBnaXZlbiBwb3NpdGlvbi48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNpc0ZyZXNoKCkiPmlzRnJlc2g8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUZWxscyBpZiB0aGlzIE5vZGVTZXQgaXMgImZyZXNoIiwgaW4gb3RoZXIgd29yZHMsIGlmCiB0aGUgZmlyc3QgbmV4dE5vZGUoKSB0aGF0IGlzIGNhbGxlZCB3aWxsIHJldHVybiB0aGUKIGZpcnN0IG5vZGUgaW4gdGhlIHNldC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNpdGVtKGludCkiPml0ZW08L0E+PC9CPihpbnQmbmJzcDtpbmRleCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIDxjb2RlPmluZGV4PC9jb2RlPnRoIGl0ZW0gaW4gdGhlIGNvbGxlY3Rpb24uPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjbmV4dE5vZGUoKSI+bmV4dE5vZGU8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBuZXh0IG5vZGUgaW4gdGhlIHNldCBhbmQgYWR2YW5jZXMgdGhlIHBvc2l0aW9uIG9mIHRoZQogaXRlcmF0b3IgaW4gdGhlIHNldC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNwZWVwT3JOdWxsKCkiPnBlZXBPck51bGw8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIG5vZGUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgd2l0aG91dCBwb3BwaW5nIHRoZSBzdGFjay48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNwZWVwVGFpbCgpIj5wZWVwVGFpbDwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgbm9kZSBhdCB0aGUgdGFpbCBvZiB0aGUgdmVjdG9yIHdpdGhvdXQgcG9wcGluZwogU3BlY2lhbCBwdXJwb3NlIG1ldGhvZCBmb3IgVHJhbnNmb3JtZXJJbXBsLCBwdXNoRWxlbVRlbXBsYXRlRWxlbWVudC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNwZWVwVGFpbFN1YjEoKSI+cGVlcFRhaWxTdWIxPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJuIHRoZSBub2RlIG9uZSBwb3NpdGlvbiBmcm9tIHRoZSB0YWlsIHdpdGhvdXQgcG9wcGluZy48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNwb3AoKSI+cG9wPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UG9wIGEgbm9kZSBmcm9tIHRoZSB0YWlsIG9mIHRoZSB2ZWN0b3IgYW5kIHJldHVybiB0aGUgcmVzdWx0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI3BvcEFuZFRvcCgpIj5wb3BBbmRUb3A8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtQb3AgYSBub2RlIGZyb20gdGhlIHRhaWwgb2YgdGhlIHZlY3RvciBhbmQgcmV0dXJuIHRoZQogdG9wIG9mIHRoZSBzdGFjayBhZnRlciB0aGUgcG9wLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI3BvcFBhaXIoKSI+cG9wUGFpcjwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1BvcCBhIHBhaXIgb2Ygbm9kZXMgZnJvbSB0aGUgdGFpbCBvZiB0aGUgc3RhY2suPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjcG9wUXVpY2soKSI+cG9wUXVpY2s8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtQb3AgYSBub2RlIGZyb20gdGhlIHRhaWwgb2YgdGhlIHZlY3Rvci48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNwcmV2aW91c05vZGUoKSI+cHJldmlvdXNOb2RlPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcHJldmlvdXMgbm9kZSBpbiB0aGUgc2V0IGFuZCBtb3ZlcyB0aGUgcG9zaXRpb24gb2YgdGhlCiBpdGVyYXRvciBiYWNrd2FyZHMgaW4gdGhlIHNldC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNwdXNoKG9yZy53M2MuZG9tLk5vZGUpIj5wdXNoPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiZuYnNwO3ZhbHVlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QXBwZW5kIGEgTm9kZSBvbnRvIHRoZSB2ZWN0b3IuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjcHVzaFBhaXIob3JnLnczYy5kb20uTm9kZSwgb3JnLnczYy5kb20uTm9kZSkiPnB1c2hQYWlyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiZuYnNwO3YxLAogICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7djIpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtQdXNoIGEgcGFpciBvZiBub2RlcyBpbnRvIHRoZSBzdGFjay48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNyZW1vdmVBbGxFbGVtZW50cygpIj5yZW1vdmVBbGxFbGVtZW50czwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0luc2VydHMgdGhlIHNwZWNpZmllZCBub2RlIGluIHRoaXMgdmVjdG9yIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjcmVtb3ZlRWxlbWVudChvcmcudzNjLmRvbS5Ob2RlKSI+cmVtb3ZlRWxlbWVudDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4mbmJzcDtzKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVtb3ZlcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgYXJndW1lbnQgZnJvbSB0aGlzIHZlY3Rvci48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNyZW1vdmVFbGVtZW50QXQoaW50KSI+cmVtb3ZlRWxlbWVudEF0PC9BPjwvQj4oaW50Jm5ic3A7aSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0RlbGV0ZXMgdGhlIGNvbXBvbmVudCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI3JlbW92ZU5vZGUob3JnLnczYy5kb20uTm9kZSkiPnJlbW92ZU5vZGU8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7bik8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlbW92ZSBhIG5vZGUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjcmVzZXQoKSI+cmVzZXQ8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXNldCB0aGUgaXRlcmF0b3IuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjcnVuVG8oaW50KSI+cnVuVG88L0E+PC9CPihpbnQmbmJzcDtpbmRleCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0lmIGFuIGluZGV4IGlzIHJlcXVlc3RlZCwgTm9kZVNldCB3aWxsIGNhbGwgdGhpcyBtZXRob2QKIHRvIHJ1biB0aGUgaXRlcmF0b3IgdG8gdGhlIGluZGV4LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI3NldEN1cnJlbnRQb3MoaW50KSI+c2V0Q3VycmVudFBvczwvQT48L0I+KGludCZuYnNwO2kpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIG5vZGUgc2V0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI3NldEVsZW1lbnRBdChvcmcudzNjLmRvbS5Ob2RlLCBpbnQpIj5zZXRFbGVtZW50QXQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7bm9kZSwKICAgICAgICAgICAgIGludCZuYnNwO2luZGV4KTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgY29tcG9uZW50IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggb2YgdGhpcyB2ZWN0b3IgdG8gYmUgdGhlCiBzcGVjaWZpZWQgb2JqZWN0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI3NldExhc3QoaW50KSI+c2V0TGFzdDwvQT48L0I+KGludCZuYnNwO2xhc3QpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNzZXRTaG91bGRDYWNoZU5vZGVzKGJvb2xlYW4pIj5zZXRTaG91bGRDYWNoZU5vZGVzPC9BPjwvQj4oYm9vbGVhbiZuYnNwO2IpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtJZiBzZXRTaG91bGRDYWNoZU5vZGVzKHRydWUpIGlzIGNhbGxlZCwgdGhlbiBub2RlcyB3aWxsCiBiZSBjYWNoZWQuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwjc2V0VGFpbChvcmcudzNjLmRvbS5Ob2RlKSI+c2V0VGFpbDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4mbmJzcDtuKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0IHRoZSB0YWlsIG9mIHRoZSBzdGFjayB0byB0aGUgZ2l2ZW4gbm9kZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCNzZXRUYWlsU3ViMShvcmcudzNjLmRvbS5Ob2RlKSI+c2V0VGFpbFN1YjE8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7bik8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldCB0aGUgZ2l2ZW4gbm9kZSBvbmUgcG9zaXRpb24gZnJvbSB0aGUgdGFpbC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sI3NpemUoKSI+c2l6ZTwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgbGVuZ3RoIG9mIHRoZSBsaXN0LjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+DQo8VEQ+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQ+PENPREU+ZXF1YWxzLCANCmdldENsYXNzLCANCmhhc2hDb2RlLCANCm5vdGlmeSwgDQpub3RpZnlBbGwsIA0KdG9TdHJpbmcsIA0Kd2FpdCwgDQp3YWl0LCANCndhaXQ8L0NPREU+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KJm5ic3A7DQo8UD4NCg0KPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4NCg0KPEEgTkFNRT0iY29uc3RydWN0b3JfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPg0KPEI+Q29uc3RydWN0b3IgRGV0YWlsPC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQoNCjxBIE5BTUU9Ik5vZGVTZXQoKSI+PCEtLSAtLT48L0E+PEgzPg0KTm9kZVNldDwvSDM+DQo8UFJFPg0KcHVibGljIDxCPk5vZGVTZXQ8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5DcmVhdGUgYW4gZW1wdHkgbm9kZWxpc3QuPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iTm9kZVNldChpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpOb2RlU2V0PC9IMz4NCjxQUkU+DQpwdWJsaWMgPEI+Tm9kZVNldDwvQj4oaW50Jm5ic3A7YmxvY2tzaXplKTwvUFJFPg0KPERMPg0KPEREPkNyZWF0ZSBhbiBlbXB0eSwgdXNpbmcgdGhlIGdpdmVuIGJsb2NrIHNpemUuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YmxvY2tzaXplPC9DT0RFPiAtIFNpemUgb2YgYmxvY2tzIHRvIGFsbG9jYXRlPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJOb2RlU2V0KG9yZy53M2MuZG9tLk5vZGVMaXN0KSI+PCEtLSAtLT48L0E+PEgzPg0KTm9kZVNldDwvSDM+DQo8UFJFPg0KcHVibGljIDxCPk5vZGVTZXQ8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwiPk5vZGVMaXN0PC9BPiZuYnNwO25vZGVsaXN0KTwvUFJFPg0KPERMPg0KPEREPkNyZWF0ZSBhIE5vZGVTZXQsIGFuZCBjb3B5IHRoZSBtZW1iZXJzIG9mIHRoZQogZ2l2ZW4gbm9kZWxpc3QgaW50byBpdC48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ub2RlbGlzdDwvQ09ERT4gLSBMaXN0IG9mIE5vZGVzIHRvIGJlIG1hZGUgbWVtYmVycyBvZiB0aGUgbmV3IHNldC48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9Ik5vZGVTZXQob3JnLmFwYWNoZS54cGF0aC5Ob2RlU2V0KSI+PCEtLSAtLT48L0E+PEgzPg0KTm9kZVNldDwvSDM+DQo8UFJFPg0KcHVibGljIDxCPk5vZGVTZXQ8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sIj5Ob2RlU2V0PC9BPiZuYnNwO25vZGVsaXN0KTwvUFJFPg0KPERMPg0KPEREPkNyZWF0ZSBhIE5vZGVTZXQsIGFuZCBjb3B5IHRoZSBtZW1iZXJzIG9mIHRoZQogZ2l2ZW4gTm9kZVNldCBpbnRvIGl0LjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm5vZGVsaXN0PC9DT0RFPiAtIFNldCBvZiBOb2RlcyB0byBiZSBtYWRlIG1lbWJlcnMgb2YgdGhlIG5ldyBzZXQuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJOb2RlU2V0KG9yZy53M2MuZG9tLnRyYXZlcnNhbC5Ob2RlSXRlcmF0b3IpIj48IS0tIC0tPjwvQT48SDM+DQpOb2RlU2V0PC9IMz4NCjxQUkU+DQpwdWJsaWMgPEI+Tm9kZVNldDwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sIj5Ob2RlSXRlcmF0b3I8L0E+Jm5ic3A7bmkpPC9QUkU+DQo8REw+DQo8REQ+Q3JlYXRlIGEgTm9kZVNldCwgYW5kIGNvcHkgdGhlIG1lbWJlcnMgb2YgdGhlCiBnaXZlbiBOb2RlSXRlcmF0b3IgaW50byBpdC48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5uaTwvQ09ERT4gLSBJdGVyYXRvciB3aGljaCB5aWVsZHMgTm9kZXMgdG8gYmUgbWFkZSBtZW1iZXJzIG9mIHRoZSBuZXcgc2V0LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iTm9kZVNldChvcmcudzNjLmRvbS5Ob2RlKSI+PCEtLSAtLT48L0E+PEgzPg0KTm9kZVNldDwvSDM+DQo8UFJFPg0KcHVibGljIDxCPk5vZGVTZXQ8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4mbmJzcDtub2RlKTwvUFJFPg0KPERMPg0KPEREPkNyZWF0ZSBhIE5vZGVTZXQgd2hpY2ggY29udGFpbnMgdGhlIGdpdmVuIE5vZGUuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bm9kZTwvQ09ERT4gLSBTaW5nbGUgbm9kZSB0byBiZSBhZGRlZCB0byB0aGUgbmV3IHNldC48L0RMPg0KPC9ERD4NCjwvREw+DQoNCjwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0xPjxGT05UIFNJWkU9IisyIj4NCjxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCg0KPEEgTkFNRT0iZ2V0Um9vdCgpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRSb290PC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiA8Qj5nZXRSb290PC9CPigpPC9QUkU+DQo8REw+DQo8REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS90cmF2ZXJzYWwvTm9kZUl0ZXJhdG9yLmh0bWwjZ2V0Um9vdCgpIj5nZXRSb290PC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sIj5Ob2RlSXRlcmF0b3I8L0E+PERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgcm9vdCBub2RlIG9mIHRoZSBJdGVyYXRvciwgYXMgc3BlY2lmaWVkIHdoZW4gaXQgd2FzIGNyZWF0ZWQuCiBGb3Igbm9uLUl0ZXJhdG9yIE5vZGVTZXRzLCB0aGlzIHdpbGwgYmUgbnVsbC48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImNsb25lV2l0aFJlc2V0KCkiPjwhLS0gLS0+PC9BPjxIMz4NCmNsb25lV2l0aFJlc2V0PC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sIj5Ob2RlSXRlcmF0b3I8L0E+IDxCPmNsb25lV2l0aFJlc2V0PC9CPigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uPC9QUkU+DQo8REw+DQo8REQ+R2V0IGEgY2xvbmVkIEl0ZXJhdG9yLCBhbmQgcmVzZXQgaXRzIHN0YXRlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlCiBpdGVyYXRpb24uPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9heGVzL0NvbnRleHROb2RlTGlzdC5odG1sI2Nsb25lV2l0aFJlc2V0KCkiPmNsb25lV2l0aFJlc2V0PC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9heGVzL0NvbnRleHROb2RlTGlzdC5odG1sIj5Db250ZXh0Tm9kZUxpc3Q8L0E+PERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBOb2RlU2V0IG9mIHRoZSBzYW1lIHR5cGUsIGhhdmluZyB0aGUgc2FtZSBzdGF0ZS4uLgogZXhjZXB0IHRoYXQgdGhlIHJlc2V0KCkgb3BlcmF0aW9uIGhhcyBiZWVuIGNhbGxlZC48RFQ+PEI+VGhyb3dzOjwvQj48REQ+amF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIC0gaWYgdGhpcyBzdWJjbGFzcyBvZiBOb2RlU2V0CiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjbG9uZSgpIG9wZXJhdGlvbi48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InJlc2V0KCkiPjwhLS0gLS0+PC9BPjxIMz4NCnJlc2V0PC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5yZXNldDwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlJlc2V0IHRoZSBpdGVyYXRvci4gTWF5IGhhdmUgbm8gZWZmZWN0IG9uIG5vbi1pdGVyYXRvciBOb2Rlc2V0cy48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvQ29udGV4dE5vZGVMaXN0Lmh0bWwjcmVzZXQoKSI+cmVzZXQ8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvQ29udGV4dE5vZGVMaXN0Lmh0bWwiPkNvbnRleHROb2RlTGlzdDwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImdldFdoYXRUb1Nob3coKSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0V2hhdFRvU2hvdzwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5nZXRXaGF0VG9TaG93PC9CPigpPC9QUkU+DQo8REw+DQo8REQ+VGhpcyBhdHRyaWJ1dGUgZGV0ZXJtaW5lcyB3aGljaCBub2RlIHR5cGVzIGFyZSBwcmVzZW50ZWQgdmlhIHRoZQogaXRlcmF0b3IuIFRoZSBhdmFpbGFibGUgc2V0IG9mIGNvbnN0YW50cyBpcyBkZWZpbmVkIGluIHRoZQogPGNvZGU+Tm9kZUZpbHRlcjwvY29kZT4gaW50ZXJmYWNlLiBGb3IgTm9kZVNldHMsIHRoZSBtYXNrIGhhcyBiZWVuCiBoYXJkY29kZWQgdG8gc2hvdyBhbGwgbm9kZXMgZXhjZXB0IEVudGl0eVJlZmVyZW5jZSBub2Rlcywgd2hpY2ggaGF2ZQogbm8gZXF1aXZhbGVudCBpbiB0aGUgWFBhdGggZGF0YSBtb2RlbC48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS90cmF2ZXJzYWwvTm9kZUl0ZXJhdG9yLmh0bWwjZ2V0V2hhdFRvU2hvdygpIj5nZXRXaGF0VG9TaG93PC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sIj5Ob2RlSXRlcmF0b3I8L0E+PERUPjxCPlJldHVybnM6PC9CPjxERD5pbnRlZ2VyIHVzZWQgYXMgYSBiaXQtYXJyYXksIGNvbnRhaW5pbmcgZmxhZ3MgZGVmaW5lZCBpbgogdGhlIERPTSdzIE5vZGVGaWx0ZXIgY2xhc3MuIFRoZSB2YWx1ZSB3aWxsIGJlIAogPGNvZGU+U0hPV19BTEwgJiB+U0hPV19FTlRJVFlfUkVGRVJFTkNFPC9jb2RlPiwgbWVhbmluZyB0aGF0CiBvbmx5IGVudGl0eSByZWZlcmVuY2VzIGFyZSBzdXBwcmVzc2VkLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0RmlsdGVyKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmdldEZpbHRlcjwvSDM+DQo8UFJFPg0KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL3RyYXZlcnNhbC9Ob2RlRmlsdGVyLmh0bWwiPk5vZGVGaWx0ZXI8L0E+IDxCPmdldEZpbHRlcjwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlRoZSBmaWx0ZXIgb2JqZWN0IHVzZWQgdG8gc2NyZWVuIG5vZGVzLiBGaWx0ZXJzIGFyZSBhcHBsaWVkIHRvCiBmdXJ0aGVyIHJlZHVjZSAoYW5kIHJlc3RydWN0dXJlKSB0aGUgTm9kZUl0ZXJhdG9yJ3MgdmlldyBvZiB0aGUKIGRvY3VtZW50LiBJbiBvdXIgY2FzZSwgd2Ugd2lsbCBiZSB1c2luZyBoYXJkY29kZWQgZmlsdGVycyBidWlsdAogaW50byBvdXIgaXRlcmF0b3JzLi4uIGJ1dCBnZXRGaWx0ZXIoKSBpcyBwYXJ0IG9mIHRoZSBET00ncyAKIE5vZGVJdGVyYXRvciBpbnRlcmZhY2UsIHNvIHdlIGhhdmUgdG8gc3VwcG9ydCBpdC48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS90cmF2ZXJzYWwvTm9kZUl0ZXJhdG9yLmh0bWwjZ2V0RmlsdGVyKCkiPmdldEZpbHRlcjwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL3RyYXZlcnNhbC9Ob2RlSXRlcmF0b3IuaHRtbCI+Tm9kZUl0ZXJhdG9yPC9BPjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+bnVsbCwgd2hpY2ggaXMgc2xpZ2h0bHkgbWlzbGVhZGluZy4gVHJ1ZSwgdGhlcmUgaXMgbm8KIHVzZXItd3JpdHRlbiBmaWx0ZXIgb2JqZWN0LCBidXQgaW4gZmFjdCB3ZSBhcmUgZG9pbmcgc29tZSB2ZXJ5CiBzb3BoaXN0aWNhdGVkIGN1c3RvbSBmaWx0ZXJpbmcuIEEgRE9NIHB1cmlzdCBtaWdodCBzdWdnZXN0CiByZXR1cm5pbmcgYSBwbGFjZWhvbGRlciBvYmplY3QganVzdCB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgaXMKIG5vdCBnb2luZyB0byByZXR1cm4gYWxsIG5vZGVzIHNlbGVjdGVkIGJ5IHdoYXRUb1Nob3cuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRFeHBhbmRFbnRpdHlSZWZlcmVuY2VzKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmdldEV4cGFuZEVudGl0eVJlZmVyZW5jZXM8L0gzPg0KPFBSRT4NCnB1YmxpYyBib29sZWFuIDxCPmdldEV4cGFuZEVudGl0eVJlZmVyZW5jZXM8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5UaGUgdmFsdWUgb2YgdGhpcyBmbGFnIGRldGVybWluZXMgd2hldGhlciB0aGUgY2hpbGRyZW4gb2YgZW50aXR5CiByZWZlcmVuY2Ugbm9kZXMgYXJlIHZpc2libGUgdG8gdGhlIGl0ZXJhdG9yLiBJZiBmYWxzZSwgdGhleSB3aWxsIGJlCiBza2lwcGVkIG92ZXIuCiA8YnI+IFRvIHByb2R1Y2UgYSB2aWV3IG9mIHRoZSBkb2N1bWVudCB0aGF0IGhhcyBlbnRpdHkgcmVmZXJlbmNlcwogZXhwYW5kZWQgYW5kIGRvZXMgbm90IGV4cG9zZSB0aGUgZW50aXR5IHJlZmVyZW5jZSBub2RlIGl0c2VsZiwgdXNlIHRoZQogd2hhdFRvU2hvdyBmbGFncyB0byBoaWRlIHRoZSBlbnRpdHkgcmVmZXJlbmNlIG5vZGUgYW5kIHNldAogZXhwYW5kRW50aXR5UmVmZXJlbmNlcyB0byB0cnVlIHdoZW4gY3JlYXRpbmcgdGhlIGl0ZXJhdG9yLiBUbyBwcm9kdWNlCiBhIHZpZXcgb2YgdGhlIGRvY3VtZW50IHRoYXQgaGFzIGVudGl0eSByZWZlcmVuY2Ugbm9kZXMgYnV0IG5vIGVudGl0eQogZXhwYW5zaW9uLCB1c2UgdGhlIHdoYXRUb1Nob3cgZmxhZ3MgdG8gc2hvdyB0aGUgZW50aXR5IHJlZmVyZW5jZSBub2RlCiBhbmQgc2V0IGV4cGFuZEVudGl0eVJlZmVyZW5jZXMgdG8gZmFsc2UuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sI2dldEV4cGFuZEVudGl0eVJlZmVyZW5jZXMoKSI+Z2V0RXhwYW5kRW50aXR5UmVmZXJlbmNlczwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL3RyYXZlcnNhbC9Ob2RlSXRlcmF0b3IuaHRtbCI+Tm9kZUl0ZXJhdG9yPC9BPjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dHJ1ZSBmb3IgYWxsIGl0ZXJhdG9ycyBiYXNlZCBvbiBOb2RlU2V0LCBtZWFuaW5nIHRoYXQgdGhlCiBjb250ZW50cyBvZiBFbnRpdHlSZWZyZW5jZSBub2RlcyBtYXkgYmUgcmV0dXJuZWQgKHRob3VnaCB3aGF0VG9TaG93CiBzYXlzIHRoYXQgdGhlIEVudGl0eVJlZmVyZW5jZXMgdGhlbXNlbHZlcyBhcmUgbm90IHNob3duLik8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9Im5leHROb2RlKCkiPjwhLS0gLS0+PC9BPjxIMz4NCm5leHROb2RlPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiA8Qj5uZXh0Tm9kZTwvQj4oKQogICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9ET01FeGNlcHRpb24uaHRtbCI+RE9NRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPlJldHVybnMgdGhlIG5leHQgbm9kZSBpbiB0aGUgc2V0IGFuZCBhZHZhbmNlcyB0aGUgcG9zaXRpb24gb2YgdGhlCiBpdGVyYXRvciBpbiB0aGUgc2V0LiBBZnRlciBhIE5vZGVJdGVyYXRvciBpcyBjcmVhdGVkLCB0aGUgZmlyc3QgY2FsbAogdG8gbmV4dE5vZGUoKSByZXR1cm5zIHRoZSBmaXJzdCBub2RlIGluIHRoZSBzZXQuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sI25leHROb2RlKCkiPm5leHROb2RlPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sIj5Ob2RlSXRlcmF0b3I8L0E+PERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgbmV4dCA8Y29kZT5Ob2RlPC9jb2RlPiBpbiB0aGUgc2V0IGJlaW5nIGl0ZXJhdGVkIG92ZXIsIG9yCiAgIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZXJlIGFyZSBubyBtb3JlIG1lbWJlcnMgaW4gdGhhdCBzZXQuPERUPjxCPlRocm93czo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL0RPTUV4Y2VwdGlvbi5odG1sIj5ET01FeGNlcHRpb248L0E+IC0gSU5WQUxJRF9TVEFURV9FUlI6IFJhaXNlZCBpZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgYWZ0ZXIgdGhlCiAgIDxjb2RlPmRldGFjaDwvY29kZT4gbWV0aG9kIHdhcyBpbnZva2VkLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0icHJldmlvdXNOb2RlKCkiPjwhLS0gLS0+PC9BPjxIMz4NCnByZXZpb3VzTm9kZTwvSDM+DQo8UFJFPg0KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4gPEI+cHJldmlvdXNOb2RlPC9CPigpCiAgICAgICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9ET01FeGNlcHRpb24uaHRtbCI+RE9NRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPlJldHVybnMgdGhlIHByZXZpb3VzIG5vZGUgaW4gdGhlIHNldCBhbmQgbW92ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZQogaXRlcmF0b3IgYmFja3dhcmRzIGluIHRoZSBzZXQuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vdHJhdmVyc2FsL05vZGVJdGVyYXRvci5odG1sI3ByZXZpb3VzTm9kZSgpIj5wcmV2aW91c05vZGU8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS90cmF2ZXJzYWwvTm9kZUl0ZXJhdG9yLmh0bWwiPk5vZGVJdGVyYXRvcjwvQT48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSBwcmV2aW91cyA8Y29kZT5Ob2RlPC9jb2RlPiBpbiB0aGUgc2V0IGJlaW5nIGl0ZXJhdGVkIG92ZXIsCiAgIG9yPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlcmUgYXJlIG5vIG1vcmUgbWVtYmVycyBpbiB0aGF0IHNldC48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vRE9NRXhjZXB0aW9uLmh0bWwiPkRPTUV4Y2VwdGlvbjwvQT4gLSBJTlZBTElEX1NUQVRFX0VSUjogUmFpc2VkIGlmIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBhZnRlciB0aGUKICAgPGNvZGU+ZGV0YWNoPC9jb2RlPiBtZXRob2Qgd2FzIGludm9rZWQuPEREPmphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIC0gdGhyb3duIGlmIHRoaXMgTm9kZVNldCBpcyBub3Qgb2YgCiBhIGNhY2hlZCB0eXBlLCBhbmQgaGVuY2UgZG9lc24ndCBrbm93IHdoYXQgdGhlIHByZXZpb3VzIG5vZGUgd2FzLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZGV0YWNoKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmRldGFjaDwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+ZGV0YWNoPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+RGV0YWNoZXMgdGhlIGl0ZXJhdG9yIGZyb20gdGhlIHNldCB3aGljaCBpdCBpdGVyYXRlZCBvdmVyLCByZWxlYXNpbmcKIGFueSBjb21wdXRhdGlvbmFsIHJlc291cmNlcyBhbmQgcGxhY2luZyB0aGUgaXRlcmF0b3IgaW4gdGhlIElOVkFMSUQKIHN0YXRlLiBBZnRlcjxjb2RlPmRldGFjaDwvY29kZT4gaGFzIGJlZW4gaW52b2tlZCwgY2FsbHMgdG8KIDxjb2RlPm5leHROb2RlPC9jb2RlPiBvcjxjb2RlPnByZXZpb3VzTm9kZTwvY29kZT4gd2lsbCByYWlzZSB0aGUKIGV4Y2VwdGlvbiBJTlZBTElEX1NUQVRFX0VSUi4KIDxwPgogVGhpcyBvcGVyYXRpb24gaXMgYSBuby1vcCBpbiBOb2RlU2V0LCBhbmQgd2lsbCBub3QgY2F1c2UgCiBJTlZBTElEX1NUQVRFX0VSUiB0byBiZSByYWlzZWQgYnkgbGF0ZXIgb3BlcmF0aW9ucy4KIDwvcD48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS90cmF2ZXJzYWwvTm9kZUl0ZXJhdG9yLmh0bWwjZGV0YWNoKCkiPmRldGFjaDwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL3RyYXZlcnNhbC9Ob2RlSXRlcmF0b3IuaHRtbCI+Tm9kZUl0ZXJhdG9yPC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iaXNGcmVzaCgpIj48IS0tIC0tPjwvQT48SDM+DQppc0ZyZXNoPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5pc0ZyZXNoPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+VGVsbHMgaWYgdGhpcyBOb2RlU2V0IGlzICJmcmVzaCIsIGluIG90aGVyIHdvcmRzLCBpZgogdGhlIGZpcnN0IG5leHROb2RlKCkgdGhhdCBpcyBjYWxsZWQgd2lsbCByZXR1cm4gdGhlCiBmaXJzdCBub2RlIGluIHRoZSBzZXQuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9heGVzL0NvbnRleHROb2RlTGlzdC5odG1sI2lzRnJlc2goKSI+aXNGcmVzaDwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvYXhlcy9Db250ZXh0Tm9kZUxpc3QuaHRtbCI+Q29udGV4dE5vZGVMaXN0PC9BPjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dHJ1ZSBpZiBuZXh0Tm9kZSgpIHdvdWxkIHJldHVybiB0aGUgZmlyc3Qgbm9kZSBpbiB0aGUgc2V0LAogZmFsc2UgaWYgaXQgd291bGQgcmV0dXJuIGEgbGF0ZXIgb25lLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0icnVuVG8oaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KcnVuVG88L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPnJ1blRvPC9CPihpbnQmbmJzcDtpbmRleCk8L1BSRT4NCjxETD4NCjxERD5JZiBhbiBpbmRleCBpcyByZXF1ZXN0ZWQsIE5vZGVTZXQgd2lsbCBjYWxsIHRoaXMgbWV0aG9kCiB0byBydW4gdGhlIGl0ZXJhdG9yIHRvIHRoZSBpbmRleC4gIEJ5IGRlZmF1bHQgdGhpcyBzZXRzCiBtX25leHQgdG8gdGhlIGluZGV4LiAgSWYgdGhlIGluZGV4IGFyZ3VtZW50IGlzIC0xLCB0aGlzCiBzaWduYWxzIHRoYXQgdGhlIGl0ZXJhdG9yIHNob3VsZCBiZSBydW4gdG8gdGhlIGVuZC48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvQ29udGV4dE5vZGVMaXN0Lmh0bWwjcnVuVG8oaW50KSI+cnVuVG88L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvQ29udGV4dE5vZGVMaXN0Lmh0bWwiPkNvbnRleHROb2RlTGlzdDwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmluZGV4PC9DT0RFPiAtIFBvc2l0aW9uIHRvIGFkdmFuY2UgKG9yIHJldHJlYXQpIHRvLCB3aXRoCiAwIHJlcXVlc3RpbmcgdGhlIHJlc2V0ICgiZnJlc2giKSBwb3NpdGlvbiBhbmQgLTEgKG9yIGluZGVlZAogYW55IG91dC1vZi1ib3VuZHMgdmFsdWUpIHJlcXVlc3RpbmcgdGhlIGZpbmFsIHBvc2l0aW9uLjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAtIHRocm93biBpZiB0aGlzIE5vZGVTZXQgaXMgbm90CiBvbmUgb2YgdGhlIHR5cGVzIHdoaWNoIHN1cHBvcnRzIGluZGV4aW5nL2NvdW50aW5nLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iaXRlbShpbnQpIj48IS0tIC0tPjwvQT48SDM+DQppdGVtPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiA8Qj5pdGVtPC9CPihpbnQmbmJzcDtpbmRleCk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm5zIHRoZSA8Y29kZT5pbmRleDwvY29kZT50aCBpdGVtIGluIHRoZSBjb2xsZWN0aW9uLiBJZgogPGNvZGU+aW5kZXg8L2NvZGU+IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIG5vZGVzIGluCiB0aGUgbGlzdCwgdGhpcyByZXR1cm5zIDxjb2RlPm51bGw8L2NvZGU+LgogCiBUT0RPOiBXaGF0IGhhcHBlbnMgaWYgaW5kZXggaXMgb3V0IG9mIHJhbmdlPzxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGVMaXN0Lmh0bWwjaXRlbShpbnQpIj5pdGVtPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+PERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pbmRleDwvQ09ERT4gLSBJbmRleCBpbnRvIHRoZSBjb2xsZWN0aW9uLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIG5vZGUgYXQgdGhlIDxjb2RlPmluZGV4PC9jb2RlPnRoIHBvc2l0aW9uIGluIHRoZQogICA8Y29kZT5Ob2RlTGlzdDwvY29kZT4sIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoYXQgaXMgbm90IGEgdmFsaWQKICAgaW5kZXguPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRMZW5ndGgoKSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0TGVuZ3RoPC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmdldExlbmd0aDwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlRoZSBudW1iZXIgb2Ygbm9kZXMgaW4gdGhlIGxpc3QuIFRoZSByYW5nZSBvZiB2YWxpZCBjaGlsZCBub2RlIGluZGljZXMgaXMKIDAgdG8gPGNvZGU+bGVuZ3RoLTE8L2NvZGU+IGluY2x1c2l2ZS4gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzCiBmaW5kaW5nIGFsbCB0aGUgbWF0Y2hpbmcgbm9kZXMsIHdoaWNoIG1heSBkZWZlYXQgYXR0ZW1wdHMgdG8gZGVmZXIKIHRoYXQgd29yay48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sI2dldExlbmd0aCgpIj5nZXRMZW5ndGg8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlTGlzdC5odG1sIj5Ob2RlTGlzdDwvQT48RFQ+PEI+UmV0dXJuczo8L0I+PEREPmludGVnZXIgaW5kaWNhdGluZyBob3cgbWFueSBub2RlcyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhpcyBsaXN0LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iYWRkTm9kZShvcmcudzNjLmRvbS5Ob2RlKSI+PCEtLSAtLT48L0E+PEgzPg0KYWRkTm9kZTwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+YWRkTm9kZTwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiZuYnNwO24pPC9QUkU+DQo8REw+DQo8REQ+QWRkIGEgbm9kZSB0byB0aGUgTm9kZVNldC4gTm90IGFsbCB0eXBlcyBvZiBOb2RlU2V0cyBzdXBwb3J0IHRoaXMKIG9wZXJhdGlvbjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm48L0NPREU+IC0gTm9kZSB0byBiZSBhZGRlZDxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAtIHRocm93biBpZiB0aGlzIE5vZGVTZXQgaXMgbm90IG9mIAogYSBtdXRhYmxlIHR5cGUuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJpbnNlcnROb2RlKG9yZy53M2MuZG9tLk5vZGUsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCmluc2VydE5vZGU8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPmluc2VydE5vZGU8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4mbmJzcDtuLAogICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO3Bvcyk8L1BSRT4NCjxETD4NCjxERD5JbnNlcnQgYSBub2RlIGF0IGEgZ2l2ZW4gcG9zaXRpb24uPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bjwvQ09ERT4gLSBOb2RlIHRvIGJlIGFkZGVkPEREPjxDT0RFPnBvczwvQ09ERT4gLSBPZmZzZXQgYXQgd2hpY2ggdGhlIG5vZGUgaXMgdG8gYmUgaW5zZXJ0ZWQsCiB3aXRoIDAgYmVpbmcgdGhlIGZpcnN0IHBvc2l0aW9uLjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAtIHRocm93biBpZiB0aGlzIE5vZGVTZXQgaXMgbm90IG9mIAogYSBtdXRhYmxlIHR5cGUuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJyZW1vdmVOb2RlKG9yZy53M2MuZG9tLk5vZGUpIj48IS0tIC0tPjwvQT48SDM+DQpyZW1vdmVOb2RlPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5yZW1vdmVOb2RlPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7bik8L1BSRT4NCjxETD4NCjxERD5SZW1vdmUgYSBub2RlLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm48L0NPREU+IC0gTm9kZSB0byBiZSBhZGRlZDxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAtIHRocm93biBpZiB0aGlzIE5vZGVTZXQgaXMgbm90IG9mIAogYSBtdXRhYmxlIHR5cGUuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJhZGROb2RlcyhvcmcudzNjLmRvbS5Ob2RlTGlzdCkiPjwhLS0gLS0+PC9BPjxIMz4NCmFkZE5vZGVzPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5hZGROb2RlczwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+Jm5ic3A7bm9kZWxpc3QpPC9QUkU+DQo8REw+DQo8REQ+Q29weSBOb2RlTGlzdCBtZW1iZXJzIGludG8gdGhpcyBub2RlbGlzdCwgYWRkaW5nIGluCiBkb2N1bWVudCBvcmRlci4gIElmIGEgbm9kZSBpcyBudWxsLCBkb24ndCBhZGQgaXQuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bm9kZWxpc3Q8L0NPREU+IC0gTGlzdCBvZiBub2RlcyB3aGljaCBzaG91bGQgbm93IGJlIHJlZmVyZW5jZWQgYnkKIHRoaXMgTm9kZVNldC48RFQ+PEI+VGhyb3dzOjwvQj48REQ+amF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gLSB0aHJvd24gaWYgdGhpcyBOb2RlU2V0IGlzIG5vdCBvZiAKIGEgbXV0YWJsZSB0eXBlLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iYWRkTm9kZXMob3JnLmFwYWNoZS54cGF0aC5Ob2RlU2V0KSI+PCEtLSAtLT48L0E+PEgzPg0KYWRkTm9kZXM8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPmFkZE5vZGVzPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCI+Tm9kZVNldDwvQT4mbmJzcDtucyk8L1BSRT4NCjxETD4NCjxERD48cD5Db3B5IE5vZGVMaXN0IG1lbWJlcnMgaW50byB0aGlzIG5vZGVsaXN0LCBhZGRpbmcgaW4KIGRvY3VtZW50IG9yZGVyLiAgT25seSBnZW51aW5lIG5vZGUgcmVmZXJlbmNlcyB3aWxsIGJlIGNvcGllZDsKIG51bGxzIGFwcGVhcmluZyBpbiB0aGUgc291cmNlIE5vZGVTZXQgd2lsbAogbm90IGJlIGFkZGVkIHRvIHRoaXMgb25lLiA8L3A+CiAKIDxwPiBJbiBjYXNlIHlvdSdyZSB3b25kZXJpbmcgd2h5IHRoaXMgZnVuY3Rpb24gaXMgbmVlZGVkOiBOb2RlU2V0CiBpbXBsZW1lbnRzIGJvdGggTm9kZUl0ZXJhdG9yIGFuZCBOb2RlTGlzdC4gSWYgdGhpcyBtZXRob2QgaXNuJ3QKIHByb3ZpZGVkLCBKYXZhIGNhbid0IGRlY2lkZSB3aGljaCBvZiB0aG9zZSB0byB1c2Ugd2hlbiBhZGROb2RlcygpCiBpcyBpbnZva2VkLiBQcm92aWRpbmcgdGhlIG1vcmUtZXhwbGljaXQgbWF0Y2ggYXZvaWRzIHRoYXQKIGFtYmlndWl0eS4pPC9wPjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm5zPC9DT0RFPiAtIE5vZGVTZXQgd2hvc2UgbWVtYmVycyBzaG91bGQgYmUgbWVyZ2VkIGludG8gdGhpcyBOb2RlU2V0LjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAtIHRocm93biBpZiB0aGlzIE5vZGVTZXQgaXMgbm90IG9mIAogYSBtdXRhYmxlIHR5cGUuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJhZGROb2RlcyhvcmcudzNjLmRvbS50cmF2ZXJzYWwuTm9kZUl0ZXJhdG9yKSI+PCEtLSAtLT48L0E+PEgzPg0KYWRkTm9kZXM8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPmFkZE5vZGVzPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS90cmF2ZXJzYWwvTm9kZUl0ZXJhdG9yLmh0bWwiPk5vZGVJdGVyYXRvcjwvQT4mbmJzcDtpdGVyYXRvcik8L1BSRT4NCjxETD4NCjxERD5Db3B5IE5vZGVMaXN0IG1lbWJlcnMgaW50byB0aGlzIG5vZGVsaXN0LCBhZGRpbmcgaW4KIGRvY3VtZW50IG9yZGVyLiAgTnVsbCByZWZlcmVuY2VzIGFyZSBub3QgYWRkZWQuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aXRlcmF0b3I8L0NPREU+IC0gTm9kZUl0ZXJhdG9yIHdoaWNoIHlpZWxkcyB0aGUgbm9kZXMgdG8gYmUgYWRkZWQuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIC0gdGhyb3duIGlmIHRoaXMgTm9kZVNldCBpcyBub3Qgb2YgCiBhIG11dGFibGUgdHlwZS48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImFkZE5vZGVzSW5Eb2NPcmRlcihvcmcudzNjLmRvbS5Ob2RlTGlzdCwgb3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj48IS0tIC0tPjwvQT48SDM+DQphZGROb2Rlc0luRG9jT3JkZXI8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPmFkZE5vZGVzSW5Eb2NPcmRlcjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZUxpc3QuaHRtbCI+Tm9kZUxpc3Q8L0E+Jm5ic3A7bm9kZWxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7c3VwcG9ydCk8L1BSRT4NCjxETD4NCjxERD5Db3B5IE5vZGVMaXN0IG1lbWJlcnMgaW50byB0aGlzIG5vZGVsaXN0LCBhZGRpbmcgaW4KIGRvY3VtZW50IG9yZGVyLiAgSWYgYSBub2RlIGlzIG51bGwsIGRvbid0IGFkZCBpdC48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ub2RlbGlzdDwvQ09ERT4gLSBMaXN0IG9mIG5vZGVzIHRvIGJlIGFkZGVkPEREPjxDT0RFPnN1cHBvcnQ8L0NPREU+IC0gVGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dC48RFQ+PEI+VGhyb3dzOjwvQj48REQ+amF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gLSB0aHJvd24gaWYgdGhpcyBOb2RlU2V0IGlzIG5vdCBvZiAKIGEgbXV0YWJsZSB0eXBlLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iYWRkTm9kZXNJbkRvY09yZGVyKG9yZy53M2MuZG9tLnRyYXZlcnNhbC5Ob2RlSXRlcmF0b3IsIG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+PCEtLSAtLT48L0E+PEgzPg0KYWRkTm9kZXNJbkRvY09yZGVyPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5hZGROb2Rlc0luRG9jT3JkZXI8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL3RyYXZlcnNhbC9Ob2RlSXRlcmF0b3IuaHRtbCI+Tm9kZUl0ZXJhdG9yPC9BPiZuYnNwO2l0ZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3N1cHBvcnQpPC9QUkU+DQo8REw+DQo8REQ+Q29weSBOb2RlTGlzdCBtZW1iZXJzIGludG8gdGhpcyBub2RlbGlzdCwgYWRkaW5nIGluCiBkb2N1bWVudCBvcmRlci4gIElmIGEgbm9kZSBpcyBudWxsLCBkb24ndCBhZGQgaXQuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aXRlcmF0b3I8L0NPREU+IC0gTm9kZUl0ZXJhdG9yIHdoaWNoIHlpZWxkcyB0aGUgbm9kZXMgdG8gYmUgYWRkZWQuPEREPjxDT0RFPnN1cHBvcnQ8L0NPREU+IC0gVGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dC48RFQ+PEI+VGhyb3dzOjwvQj48REQ+amF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gLSB0aHJvd24gaWYgdGhpcyBOb2RlU2V0IGlzIG5vdCBvZiAKIGEgbXV0YWJsZSB0eXBlLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iYWRkTm9kZUluRG9jT3JkZXIob3JnLnczYy5kb20uTm9kZSwgYm9vbGVhbiwgb3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj48IS0tIC0tPjwvQT48SDM+DQphZGROb2RlSW5Eb2NPcmRlcjwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5hZGROb2RlSW5Eb2NPcmRlcjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiZuYnNwO25vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiZuYnNwO3Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3N1cHBvcnQpPC9QUkU+DQo8REw+DQo8REQ+QWRkIHRoZSBub2RlIGludG8gYSB2ZWN0b3Igb2Ygbm9kZXMgd2hlcmUgaXQgc2hvdWxkIG9jY3VyIGluCiBkb2N1bWVudCBvcmRlci48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ub2RlPC9DT0RFPiAtIFRoZSBub2RlIHRvIGJlIGFkZGVkLjxERD48Q09ERT50ZXN0PC9DT0RFPiAtIHRydWUgaWYgd2Ugc2hvdWxkIHRlc3QgZm9yIGRvYyBvcmRlcjxERD48Q09ERT5zdXBwb3J0PC9DT0RFPiAtIFRoZSBYUGF0aCBydW50aW1lIGNvbnRleHQuPERUPjxCPlJldHVybnM6PC9CPjxERD5pbnNlcnRJbmRleC48RFQ+PEI+VGhyb3dzOjwvQj48REQ+amF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gLSB0aHJvd24gaWYgdGhpcyBOb2RlU2V0IGlzIG5vdCBvZiAKIGEgbXV0YWJsZSB0eXBlLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iYWRkTm9kZUluRG9jT3JkZXIob3JnLnczYy5kb20uTm9kZSwgb3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj48IS0tIC0tPjwvQT48SDM+DQphZGROb2RlSW5Eb2NPcmRlcjwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5hZGROb2RlSW5Eb2NPcmRlcjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiZuYnNwO25vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3N1cHBvcnQpPC9QUkU+DQo8REw+DQo8REQ+QWRkIHRoZSBub2RlIGludG8gYSB2ZWN0b3Igb2Ygbm9kZXMgd2hlcmUgaXQgc2hvdWxkIG9jY3VyIGluCiBkb2N1bWVudCBvcmRlci48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ub2RlPC9DT0RFPiAtIFRoZSBub2RlIHRvIGJlIGFkZGVkLjxERD48Q09ERT5zdXBwb3J0PC9DT0RFPiAtIFRoZSBYUGF0aCBydW50aW1lIGNvbnRleHQuPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgaW5kZXggd2hlcmUgaXQgd2FzIGluc2VydGVkLjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAtIHRocm93biBpZiB0aGlzIE5vZGVTZXQgaXMgbm90IG9mIAogYSBtdXRhYmxlIHR5cGUuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRDdXJyZW50UG9zKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmdldEN1cnJlbnRQb3M8L0gzPg0KPFBSRT4NCnB1YmxpYyBpbnQgPEI+Z2V0Q3VycmVudFBvczwvQj4oKTwvUFJFPg0KPERMPg0KPEREPkdldCB0aGUgY3VycmVudCBwb3NpdGlvbiwgd2hpY2ggaXMgb25lIGxlc3MgdGhhbgogdGhlIG5leHQgbmV4dE5vZGUoKSBjYWxsIHdpbGwgcmV0cmlldmUuICBpLmUuIGlmCiB5b3UgY2FsbCBnZXRDdXJyZW50UG9zKCkgYW5kIHRoZSByZXR1cm4gaXMgMCwgdGhlIG5leHQKIGZldGNoIHdpbGwgdGFrZSBwbGFjZSBhdCBpbmRleCAxLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvYXhlcy9Db250ZXh0Tm9kZUxpc3QuaHRtbCNnZXRDdXJyZW50UG9zKCkiPmdldEN1cnJlbnRQb3M8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvQ29udGV4dE5vZGVMaXN0Lmh0bWwiPkNvbnRleHROb2RlTGlzdDwvQT48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSB0aGUgY3VycmVudCBwb3NpdGlvbiBpbmRleC48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InNldEN1cnJlbnRQb3MoaW50KSI+PCEtLSAtLT48L0E+PEgzPg0Kc2V0Q3VycmVudFBvczwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+c2V0Q3VycmVudFBvczwvQj4oaW50Jm5ic3A7aSk8L1BSRT4NCjxETD4NCjxERD5TZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIG5vZGUgc2V0LjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvYXhlcy9Db250ZXh0Tm9kZUxpc3QuaHRtbCNzZXRDdXJyZW50UG9zKGludCkiPnNldEN1cnJlbnRQb3M8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvQ29udGV4dE5vZGVMaXN0Lmh0bWwiPkNvbnRleHROb2RlTGlzdDwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmk8L0NPREU+IC0gTXVzdCBiZSBhIHZhbGlkIGluZGV4LjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAtIHRocm93biBpZiB0aGlzIE5vZGVTZXQgaXMgbm90IG9mIAogYSBjYWNoZWQgdHlwZSwgYW5kIHRodXMgZG9lc24ndCBwZXJtaXQgaW5kZXhlZCBhY2Nlc3MuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRDdXJyZW50Tm9kZSgpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRDdXJyZW50Tm9kZTwvSDM+DQo8UFJFPg0KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4gPEI+Z2V0Q3VycmVudE5vZGU8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm4gdGhlIGxhc3QgZmV0Y2hlZCBub2RlLiAgTmVlZGVkIHRvIHN1cHBvcnQgdGhlIFVuaW9uUGF0aEl0ZXJhdG9yLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvYXhlcy9Db250ZXh0Tm9kZUxpc3QuaHRtbCNnZXRDdXJyZW50Tm9kZSgpIj5nZXRDdXJyZW50Tm9kZTwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvYXhlcy9Db250ZXh0Tm9kZUxpc3QuaHRtbCI+Q29udGV4dE5vZGVMaXN0PC9BPjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIGxhc3QgZmV0Y2hlZCBub2RlLjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAtIHRocm93biBpZiB0aGlzIE5vZGVTZXQgaXMgbm90IG9mIAogYSBjYWNoZWQgdHlwZSwgYW5kIHRodXMgZG9lc24ndCBwZXJtaXQgaW5kZXhlZCBhY2Nlc3MuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRTaG91bGRDYWNoZU5vZGVzKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmdldFNob3VsZENhY2hlTm9kZXM8L0gzPg0KPFBSRT4NCnB1YmxpYyBib29sZWFuIDxCPmdldFNob3VsZENhY2hlTm9kZXM8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5HZXQgd2hldGhlciBvciBub3QgdGhpcyBpcyBhIGNhY2hlZCBub2RlIHNldC48REQ+PERMPg0KPERUPjxCPlJldHVybnM6PC9CPjxERD5UcnVlIGlmIHRoaXMgbGlzdCBpcyBjYWNoZWQuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzZXRTaG91bGRDYWNoZU5vZGVzKGJvb2xlYW4pIj48IS0tIC0tPjwvQT48SDM+DQpzZXRTaG91bGRDYWNoZU5vZGVzPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5zZXRTaG91bGRDYWNoZU5vZGVzPC9CPihib29sZWFuJm5ic3A7Yik8L1BSRT4NCjxETD4NCjxERD5JZiBzZXRTaG91bGRDYWNoZU5vZGVzKHRydWUpIGlzIGNhbGxlZCwgdGhlbiBub2RlcyB3aWxsCiBiZSBjYWNoZWQuICBUaGV5IGFyZSBub3QgY2FjaGVkIGJ5IGRlZmF1bHQuIFRoaXMgc3dpdGNoIG11c3QKIGJlIHNldCBiZWZvcmUgdGhlIGZpcnN0IGNhbGwgdG8gbmV4dE5vZGUgaXMgbWFkZSwgdG8gZW5zdXJlCiB0aGF0IGFsbCBub2RlcyBhcmUgY2FjaGVkLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvYXhlcy9Db250ZXh0Tm9kZUxpc3QuaHRtbCNzZXRTaG91bGRDYWNoZU5vZGVzKGJvb2xlYW4pIj5zZXRTaG91bGRDYWNoZU5vZGVzPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9heGVzL0NvbnRleHROb2RlTGlzdC5odG1sIj5Db250ZXh0Tm9kZUxpc3Q8L0E+PERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5iPC9DT0RFPiAtIHRydWUgaWYgdGhpcyBub2RlIHNldCBzaG91bGQgYmUgY2FjaGVkLjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAtIHRocm93biBpZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8KIHJlcXVlc3QgY2FjaGluZyBhZnRlciB3ZSd2ZSBhbHJlYWR5IGJlZ3VuIHN0ZXBwaW5nIHRocm91Z2ggdGhlCiBub2RlcyBpbiB0aGlzIHNldC48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImdldExhc3QoKSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0TGFzdDwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5nZXRMYXN0PC9CPigpPC9QUkU+DQo8REw+DQo8REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvQ29udGV4dE5vZGVMaXN0Lmh0bWwjZ2V0TGFzdCgpIj5nZXRMYXN0PC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9heGVzL0NvbnRleHROb2RlTGlzdC5odG1sIj5Db250ZXh0Tm9kZUxpc3Q8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzZXRMYXN0KGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCnNldExhc3Q8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPnNldExhc3Q8L0I+KGludCZuYnNwO2xhc3QpPC9QUkU+DQo8REw+DQo8REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvQ29udGV4dE5vZGVMaXN0Lmh0bWwjc2V0TGFzdChpbnQpIj5zZXRMYXN0PC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9heGVzL0NvbnRleHROb2RlTGlzdC5odG1sIj5Db250ZXh0Tm9kZUxpc3Q8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJjbG9uZSgpIj48IS0tIC0tPjwvQT48SDM+DQpjbG9uZTwvSDM+DQo8UFJFPg0KcHVibGljIGphdmEubGFuZy5PYmplY3QgPEI+Y2xvbmU8L0I+KCkKICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uPC9QUkU+DQo8REw+DQo8REQ+R2V0IGEgY2xvbmVkIExvY1BhdGhJdGVyYXRvci48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvQ29udGV4dE5vZGVMaXN0Lmh0bWwjY2xvbmUoKSI+Y2xvbmU8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2F4ZXMvQ29udGV4dE5vZGVMaXN0Lmh0bWwiPkNvbnRleHROb2RlTGlzdDwvQT48RFQ+PEI+UmV0dXJuczo8L0I+PEREPkEgY2xvbmUgb2YgdGhpczxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gLSAmbmJzcDs8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InNpemUoKSI+PCEtLSAtLT48L0E+PEgzPg0Kc2l6ZTwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5zaXplPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSBsZW5ndGggb2YgdGhlIGxpc3QuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9heGVzL0NvbnRleHROb2RlTGlzdC5odG1sI3NpemUoKSI+c2l6ZTwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvYXhlcy9Db250ZXh0Tm9kZUxpc3QuaHRtbCI+Q29udGV4dE5vZGVMaXN0PC9BPjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+TnVtYmVyIG9mIG5vZGVzIGluIHRoaXMgTm9kZVZlY3RvcjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iYWRkRWxlbWVudChvcmcudzNjLmRvbS5Ob2RlKSI+PCEtLSAtLT48L0E+PEgzPg0KYWRkRWxlbWVudDwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+YWRkRWxlbWVudDwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiZuYnNwO3ZhbHVlKTwvUFJFPg0KPERMPg0KPEREPkFwcGVuZCBhIE5vZGUgb250byB0aGUgdmVjdG9yLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIE5vZGUgdG8gYWRkIHRvIHRoZSB2ZWN0b3I8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InB1c2gob3JnLnczYy5kb20uTm9kZSkiPjwhLS0gLS0+PC9BPjxIMz4NCnB1c2g8L0gzPg0KPFBSRT4NCnB1YmxpYyBmaW5hbCB2b2lkIDxCPnB1c2g8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4mbmJzcDt2YWx1ZSk8L1BSRT4NCjxETD4NCjxERD5BcHBlbmQgYSBOb2RlIG9udG8gdGhlIHZlY3Rvci48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSBOb2RlIHRvIGFkZCB0byB0aGUgdmVjdG9yPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJwb3AoKSI+PCEtLSAtLT48L0E+PEgzPg0KcG9wPC9IMz4NCjxQUkU+DQpwdWJsaWMgZmluYWwgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiA8Qj5wb3A8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5Qb3AgYSBub2RlIGZyb20gdGhlIHRhaWwgb2YgdGhlIHZlY3RvciBhbmQgcmV0dXJuIHRoZSByZXN1bHQuPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG5vZGUgYXQgdGhlIHRhaWwgb2YgdGhlIHZlY3RvcjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0icG9wQW5kVG9wKCkiPjwhLS0gLS0+PC9BPjxIMz4NCnBvcEFuZFRvcDwvSDM+DQo8UFJFPg0KcHVibGljIGZpbmFsIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4gPEI+cG9wQW5kVG9wPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+UG9wIGEgbm9kZSBmcm9tIHRoZSB0YWlsIG9mIHRoZSB2ZWN0b3IgYW5kIHJldHVybiB0aGUKIHRvcCBvZiB0aGUgc3RhY2sgYWZ0ZXIgdGhlIHBvcC48REQ+PERMPg0KPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgdG9wIG9mIHRoZSBzdGFjayBhZnRlciBpdCdzIGJlZW4gcG9wcGVkPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJwb3BRdWljaygpIj48IS0tIC0tPjwvQT48SDM+DQpwb3BRdWljazwvSDM+DQo8UFJFPg0KcHVibGljIGZpbmFsIHZvaWQgPEI+cG9wUXVpY2s8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5Qb3AgYSBub2RlIGZyb20gdGhlIHRhaWwgb2YgdGhlIHZlY3Rvci48REQ+PERMPg0KPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJwZWVwT3JOdWxsKCkiPjwhLS0gLS0+PC9BPjxIMz4NCnBlZXBPck51bGw8L0gzPg0KPFBSRT4NCnB1YmxpYyBmaW5hbCA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+IDxCPnBlZXBPck51bGw8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm4gdGhlIG5vZGUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgd2l0aG91dCBwb3BwaW5nIHRoZSBzdGFjay4KIFNwZWNpYWwgcHVycG9zZSBtZXRob2QgZm9yIFRyYW5zZm9ybWVySW1wbCwgcHVzaEVsZW1UZW1wbGF0ZUVsZW1lbnQuCiBQZXJmb3JtYW5jZSBjcml0aWNhbC48REQ+PERMPg0KPERUPjxCPlJldHVybnM6PC9CPjxERD5Ob2RlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIG9yIG51bGwgaWYgc3RhY2sgaXMgZW1wdHkuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJwdXNoUGFpcihvcmcudzNjLmRvbS5Ob2RlLCBvcmcudzNjLmRvbS5Ob2RlKSI+PCEtLSAtLT48L0E+PEgzPg0KcHVzaFBhaXI8L0gzPg0KPFBSRT4NCnB1YmxpYyBmaW5hbCB2b2lkIDxCPnB1c2hQYWlyPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7djEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4mbmJzcDt2Mik8L1BSRT4NCjxETD4NCjxERD5QdXNoIGEgcGFpciBvZiBub2RlcyBpbnRvIHRoZSBzdGFjay4gIAogU3BlY2lhbCBwdXJwb3NlIG1ldGhvZCBmb3IgVHJhbnNmb3JtZXJJbXBsLCBwdXNoRWxlbVRlbXBsYXRlRWxlbWVudC4KIFBlcmZvcm1hbmNlIGNyaXRpY2FsLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnYxPC9DT0RFPiAtIEZpcnN0IG5vZGUgdG8gYWRkIHRvIHZlY3RvcjxERD48Q09ERT52MjwvQ09ERT4gLSBTZWNvbmQgbm9kZSB0byBhZGQgdG8gdmVjdG9yPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJwb3BQYWlyKCkiPjwhLS0gLS0+PC9BPjxIMz4NCnBvcFBhaXI8L0gzPg0KPFBSRT4NCnB1YmxpYyBmaW5hbCB2b2lkIDxCPnBvcFBhaXI8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5Qb3AgYSBwYWlyIG9mIG5vZGVzIGZyb20gdGhlIHRhaWwgb2YgdGhlIHN0YWNrLiAKIFNwZWNpYWwgcHVycG9zZSBtZXRob2QgZm9yIFRyYW5zZm9ybWVySW1wbCwgcHVzaEVsZW1UZW1wbGF0ZUVsZW1lbnQuCiBQZXJmb3JtYW5jZSBjcml0aWNhbC48REQ+PERMPg0KPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzZXRUYWlsKG9yZy53M2MuZG9tLk5vZGUpIj48IS0tIC0tPjwvQT48SDM+DQpzZXRUYWlsPC9IMz4NCjxQUkU+DQpwdWJsaWMgZmluYWwgdm9pZCA8Qj5zZXRUYWlsPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7bik8L1BSRT4NCjxETD4NCjxERD5TZXQgdGhlIHRhaWwgb2YgdGhlIHN0YWNrIHRvIHRoZSBnaXZlbiBub2RlLgogU3BlY2lhbCBwdXJwb3NlIG1ldGhvZCBmb3IgVHJhbnNmb3JtZXJJbXBsLCBwdXNoRWxlbVRlbXBsYXRlRWxlbWVudC4KIFBlcmZvcm1hbmNlIGNyaXRpY2FsLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm48L0NPREU+IC0gTm9kZSB0byBzZXQgYXQgdGhlIHRhaWwgb2YgdmVjdG9yPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzZXRUYWlsU3ViMShvcmcudzNjLmRvbS5Ob2RlKSI+PCEtLSAtLT48L0E+PEgzPg0Kc2V0VGFpbFN1YjE8L0gzPg0KPFBSRT4NCnB1YmxpYyBmaW5hbCB2b2lkIDxCPnNldFRhaWxTdWIxPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7bik8L1BSRT4NCjxETD4NCjxERD5TZXQgdGhlIGdpdmVuIG5vZGUgb25lIHBvc2l0aW9uIGZyb20gdGhlIHRhaWwuCiBTcGVjaWFsIHB1cnBvc2UgbWV0aG9kIGZvciBUcmFuc2Zvcm1lckltcGwsIHB1c2hFbGVtVGVtcGxhdGVFbGVtZW50LgogUGVyZm9ybWFuY2UgY3JpdGljYWwuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bjwvQ09ERT4gLSBOb2RlIHRvIHNldDwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0icGVlcFRhaWwoKSI+PCEtLSAtLT48L0E+PEgzPg0KcGVlcFRhaWw8L0gzPg0KPFBSRT4NCnB1YmxpYyBmaW5hbCA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+IDxCPnBlZXBUYWlsPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+UmV0dXJuIHRoZSBub2RlIGF0IHRoZSB0YWlsIG9mIHRoZSB2ZWN0b3Igd2l0aG91dCBwb3BwaW5nCiBTcGVjaWFsIHB1cnBvc2UgbWV0aG9kIGZvciBUcmFuc2Zvcm1lckltcGwsIHB1c2hFbGVtVGVtcGxhdGVFbGVtZW50LgogUGVyZm9ybWFuY2UgY3JpdGljYWwuPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+Tm9kZSBhdCB0aGUgdGFpbCBvZiB0aGUgdmVjdG9yPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJwZWVwVGFpbFN1YjEoKSI+PCEtLSAtLT48L0E+PEgzPg0KcGVlcFRhaWxTdWIxPC9IMz4NCjxQUkU+DQpwdWJsaWMgZmluYWwgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiA8Qj5wZWVwVGFpbFN1YjE8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm4gdGhlIG5vZGUgb25lIHBvc2l0aW9uIGZyb20gdGhlIHRhaWwgd2l0aG91dCBwb3BwaW5nLgogU3BlY2lhbCBwdXJwb3NlIG1ldGhvZCBmb3IgVHJhbnNmb3JtZXJJbXBsLCBwdXNoRWxlbVRlbXBsYXRlRWxlbWVudC4KIFBlcmZvcm1hbmNlIGNyaXRpY2FsLjxERD48REw+DQo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPk5vZGUgb25lIGF3YXkgZnJvbSB0aGUgdGFpbDwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iaW5zZXJ0RWxlbWVudEF0KG9yZy53M2MuZG9tLk5vZGUsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCmluc2VydEVsZW1lbnRBdDwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+aW5zZXJ0RWxlbWVudEF0PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7dmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDthdCk8L1BSRT4NCjxETD4NCjxERD5JbnNlcnRzIHRoZSBzcGVjaWZpZWQgbm9kZSBpbiB0aGlzIHZlY3RvciBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgogRWFjaCBjb21wb25lbnQgaW4gdGhpcyB2ZWN0b3Igd2l0aCBhbiBpbmRleCBncmVhdGVyIG9yIGVxdWFsIHRvCiB0aGUgc3BlY2lmaWVkIGluZGV4IGlzIHNoaWZ0ZWQgdXB3YXJkIHRvIGhhdmUgYW4gaW5kZXggb25lIGdyZWF0ZXIKIHRoYW4gdGhlIHZhbHVlIGl0IGhhZCBwcmV2aW91c2x5LjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIE5vZGUgdG8gaW5zZXJ0PEREPjxDT0RFPmF0PC9DT0RFPiAtIFBvc2l0aW9uIHdoZXJlIHRvIGluc2VydDwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iYXBwZW5kTm9kZXMob3JnLmFwYWNoZS54cGF0aC5Ob2RlU2V0KSI+PCEtLSAtLT48L0E+PEgzPg0KYXBwZW5kTm9kZXM8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPmFwcGVuZE5vZGVzPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL05vZGVTZXQuaHRtbCI+Tm9kZVNldDwvQT4mbmJzcDtub2Rlcyk8L1BSRT4NCjxETD4NCjxERD5BcHBlbmQgdGhlIG5vZGVzIHRvIHRoZSBsaXN0LjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm5vZGVzPC9DT0RFPiAtIE5vZGVWZWN0b3IgdG8gYXBwZW5kIHRvIHRoaXMgbGlzdDwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0icmVtb3ZlQWxsRWxlbWVudHMoKSI+PCEtLSAtLT48L0E+PEgzPg0KcmVtb3ZlQWxsRWxlbWVudHM8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPnJlbW92ZUFsbEVsZW1lbnRzPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+SW5zZXJ0cyB0aGUgc3BlY2lmaWVkIG5vZGUgaW4gdGhpcyB2ZWN0b3IgYXQgdGhlIHNwZWNpZmllZCBpbmRleC4KIEVhY2ggY29tcG9uZW50IGluIHRoaXMgdmVjdG9yIHdpdGggYW4gaW5kZXggZ3JlYXRlciBvciBlcXVhbCB0bwogdGhlIHNwZWNpZmllZCBpbmRleCBpcyBzaGlmdGVkIHVwd2FyZCB0byBoYXZlIGFuIGluZGV4IG9uZSBncmVhdGVyCiB0aGFuIHRoZSB2YWx1ZSBpdCBoYWQgcHJldmlvdXNseS48REQ+PERMPg0KPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJyZW1vdmVFbGVtZW50KG9yZy53M2MuZG9tLk5vZGUpIj48IS0tIC0tPjwvQT48SDM+DQpyZW1vdmVFbGVtZW50PC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5yZW1vdmVFbGVtZW50PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7cyk8L1BSRT4NCjxETD4NCjxERD5SZW1vdmVzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBhcmd1bWVudCBmcm9tIHRoaXMgdmVjdG9yLgogSWYgdGhlIG9iamVjdCBpcyBmb3VuZCBpbiB0aGlzIHZlY3RvciwgZWFjaCBjb21wb25lbnQgaW4gdGhlIHZlY3Rvcgogd2l0aCBhbiBpbmRleCBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBvYmplY3QncyBpbmRleCBpcyBzaGlmdGVkCiBkb3dud2FyZCB0byBoYXZlIGFuIGluZGV4IG9uZSBzbWFsbGVyIHRoYW4gdGhlIHZhbHVlIGl0IGhhZAogcHJldmlvdXNseS48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zPC9DT0RFPiAtIE5vZGUgdG8gcmVtb3ZlIGZyb20gdGhlIGxpc3Q8RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRydWUgaWYgdGhlIG5vZGUgd2FzIHN1Y2Nlc3NmdWxseSByZW1vdmVkPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJyZW1vdmVFbGVtZW50QXQoaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KcmVtb3ZlRWxlbWVudEF0PC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5yZW1vdmVFbGVtZW50QXQ8L0I+KGludCZuYnNwO2kpPC9QUkU+DQo8REw+DQo8REQ+RGVsZXRlcyB0aGUgY29tcG9uZW50IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguIEVhY2ggY29tcG9uZW50IGluCiB0aGlzIHZlY3RvciB3aXRoIGFuIGluZGV4IGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIHNwZWNpZmllZAogaW5kZXggaXMgc2hpZnRlZCBkb3dud2FyZCB0byBoYXZlIGFuIGluZGV4IG9uZSBzbWFsbGVyIHRoYW4KIHRoZSB2YWx1ZSBpdCBoYWQgcHJldmlvdXNseS48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pPC9DT0RFPiAtIEluZGV4IG9mIG5vZGUgdG8gcmVtb3ZlPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzZXRFbGVtZW50QXQob3JnLnczYy5kb20uTm9kZSwgaW50KSI+PCEtLSAtLT48L0E+PEgzPg0Kc2V0RWxlbWVudEF0PC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5zZXRFbGVtZW50QXQ8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4mbmJzcDtub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7aW5kZXgpPC9QUkU+DQo8REw+DQo8REQ+U2V0cyB0aGUgY29tcG9uZW50IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggb2YgdGhpcyB2ZWN0b3IgdG8gYmUgdGhlCiBzcGVjaWZpZWQgb2JqZWN0LiBUaGUgcHJldmlvdXMgY29tcG9uZW50IGF0IHRoYXQgcG9zaXRpb24gaXMgZGlzY2FyZGVkLgoKIFRoZSBpbmRleCBtdXN0IGJlIGEgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAgYW5kIGxlc3MKIHRoYW4gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgdmVjdG9yLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm5vZGU8L0NPREU+IC0gTm9kZSB0byBzZXQ8REQ+PENPREU+aW5kZXg8L0NPREU+IC0gSW5kZXggb2Ygd2hlcmUgdG8gc2V0IHRoZSBub2RlPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJlbGVtZW50QXQoaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KZWxlbWVudEF0PC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiA8Qj5lbGVtZW50QXQ8L0I+KGludCZuYnNwO2kpPC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSBudGggZWxlbWVudC48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pPC9DT0RFPiAtIEluZGV4IG9mIG5vZGUgdG8gZ2V0PERUPjxCPlJldHVybnM6PC9CPjxERD5Ob2RlIGF0IHNwZWNpZmllZCBpbmRleDwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iY29udGFpbnMob3JnLnczYy5kb20uTm9kZSkiPjwhLS0gLS0+PC9BPjxIMz4NCmNvbnRhaW5zPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5jb250YWluczwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL3czYy9kb20vTm9kZS5odG1sIj5Ob2RlPC9BPiZuYnNwO3MpPC9QUkU+DQo8REw+DQo8REQ+VGVsbCBpZiB0aGUgdGFibGUgY29udGFpbnMgdGhlIGdpdmVuIG5vZGUuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+czwvQ09ERT4gLSBOb2RlIHRvIGxvb2sgZm9yPERUPjxCPlJldHVybnM6PC9CPjxERD5UcnVlIGlmIHRoZSBnaXZlbiBub2RlIHdhcyBmb3VuZC48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImluZGV4T2Yob3JnLnczYy5kb20uTm9kZSwgaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KaW5kZXhPZjwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5pbmRleE9mPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvdzNjL2RvbS9Ob2RlLmh0bWwiPk5vZGU8L0E+Jm5ic3A7ZWxlbSwKICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2luZGV4KTwvUFJFPg0KPERMPg0KPEREPlNlYXJjaGVzIGZvciB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIHRoZSBnaXZlbiBhcmd1bWVudCwKIGJlZ2lubmluZyB0aGUgc2VhcmNoIGF0IGluZGV4LCBhbmQgdGVzdGluZyBmb3IgZXF1YWxpdHkKIHVzaW5nIHRoZSBlcXVhbHMgbWV0aG9kLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmVsZW08L0NPREU+IC0gTm9kZSB0byBsb29rIGZvcjxERD48Q09ERT5pbmRleDwvQ09ERT4gLSBJbmRleCBvZiB3aGVyZSB0byBzdGFydCB0aGUgc2VhcmNoPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIG9iamVjdAogYXJndW1lbnQgaW4gdGhpcyB2ZWN0b3IgYXQgcG9zaXRpb24gaW5kZXggb3IgbGF0ZXIgaW4gdGhlCiB2ZWN0b3I7IHJldHVybnMgLTEgaWYgdGhlIG9iamVjdCBpcyBub3QgZm91bmQuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJpbmRleE9mKG9yZy53M2MuZG9tLk5vZGUpIj48IS0tIC0tPjwvQT48SDM+DQppbmRleE9mPC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmluZGV4T2Y8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy93M2MvZG9tL05vZGUuaHRtbCI+Tm9kZTwvQT4mbmJzcDtlbGVtKTwvUFJFPg0KPERMPg0KPEREPlNlYXJjaGVzIGZvciB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIHRoZSBnaXZlbiBhcmd1bWVudCwKIGJlZ2lubmluZyB0aGUgc2VhcmNoIGF0IGluZGV4LCBhbmQgdGVzdGluZyBmb3IgZXF1YWxpdHkKIHVzaW5nIHRoZSBlcXVhbHMgbWV0aG9kLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmVsZW08L0NPREU+IC0gTm9kZSB0byBsb29rIGZvcjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBvYmplY3QKIGFyZ3VtZW50IGluIHRoaXMgdmVjdG9yIGF0IHBvc2l0aW9uIGluZGV4IG9yIGxhdGVyIGluIHRoZQogdmVjdG9yOyByZXR1cm5zIC0xIGlmIHRoZSBvYmplY3QgaXMgbm90IGZvdW5kLjwvREw+DQo8L0REPg0KPC9ETD4NCjwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4NCjxIUj4NCg0KPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPg0KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPg0KPFRSPg0KPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPg0KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+DQogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL05vZGVTZXQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDwvVFI+DQo8L1RBQkxFPg0KPC9URD4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPg0KPC9FTT4NCjwvVEQ+DQo8L1RSPg0KDQo8VFI+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0RFRNLmh0bWwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiAgPEEgSFJFRj0iLi4vLi4vLi4vaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7DQombmJzcDs8QSBIUkVGPSJOb2RlU2V0Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFI+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPg0KDQo8SFI+DQpDb3B5cmlnaHQgqSAyMDA2IEFwYWNoZSBYTUwgUHJvamVjdC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCjwvQk9EWT4NCjwvSFRNTD4NCg==