PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPg0KPCEtLU5ld1BhZ2UtLT4NCjxIVE1MPg0KPEhFQUQ+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFRodSBOb3YgMjIgMTc6MTI6NTMgRVNUIDIwMDcgLS0+DQo8VElUTEU+DQpYYWxhbi1KYXZhIDIuNy4xOiBDbGFzcyAgRXh0ZW5zaW9uSGFuZGxlckV4c2x0RnVuY3Rpb24NCjwvVElUTEU+DQo8TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+DQo8L0hFQUQ+DQo8Qk9EWSBCR0NPTE9SPSJ3aGl0ZSI+DQoNCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4NCjxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4NCjxUUj4NCjxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4NCjxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPg0KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9FeHRlbnNpb25IYW5kbGVyRXhzbHRGdW5jdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPC9UUj4NCjwvVEFCTEU+DQo8L1REPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+DQo8L0VNPg0KPC9URD4NCjwvVFI+DQoNCjxUUj4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2V4dGVuc2lvbnMvRXh0ZW5zaW9uSGFuZGxlci5odG1sIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsNCiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHRlbnNpb25IYW5kbGVyR2VuZXJhbC5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iRXh0ZW5zaW9uSGFuZGxlckV4c2x0RnVuY3Rpb24uaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjxUUj4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQogIFNVTU1BUlk6ICZuYnNwO0lOTkVSJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPg0KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4NCkRFVEFJTDogJm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQo8IS0tID09PT09PT09PT09IEVORCBPRiBOQVZCQVIgPT09PT09PT09PT0gLS0+DQoNCjxIUj4NCjwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4NCjxIMj4NCjxGT05UIFNJWkU9Ii0xIj4NCm9yZy5hcGFjaGUueGFsYW4uZXh0ZW5zaW9uczwvRk9OVD4NCjxCUj4NCkNsYXNzICBFeHRlbnNpb25IYW5kbGVyRXhzbHRGdW5jdGlvbjwvSDI+DQo8UFJFPg0KamF2YS5sYW5nLk9iamVjdA0KICB8DQogICstLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHRlbnNpb25IYW5kbGVyLmh0bWwiPm9yZy5hcGFjaGUueGFsYW4uZXh0ZW5zaW9ucy5FeHRlbnNpb25IYW5kbGVyPC9BPg0KICAgICAgICB8DQogICAgICAgICstLTxCPm9yZy5hcGFjaGUueGFsYW4uZXh0ZW5zaW9ucy5FeHRlbnNpb25IYW5kbGVyRXhzbHRGdW5jdGlvbjwvQj4NCjwvUFJFPg0KPEhSPg0KPERMPg0KPERUPnB1YmxpYyBjbGFzcyA8Qj5FeHRlbnNpb25IYW5kbGVyRXhzbHRGdW5jdGlvbjwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2V4dGVuc2lvbnMvRXh0ZW5zaW9uSGFuZGxlci5odG1sIj5FeHRlbnNpb25IYW5kbGVyPC9BPjwvREw+DQoNCjxQPg0KRXhlY3V0ZSBFWFNMVCBmdW5jdGlvbnMsIGRldGVybWluZSB0aGUgYXZhaWxhYmlsaXR5IG9mIEVYU0xUIGZ1bmN0aW9ucywgYW5kIHRoZQogYXZhaWxhYmlsaXR5IG9mIGFuIEVYU0xUIHJlc3VsdCBlbGVtZW50Lg0KPFA+DQo8SFI+DQoNCjxQPg0KPCEtLSA9PT09PT09PSBJTk5FUiBDTEFTUyBTVU1NQVJZID09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4NCg0KDQo8IS0tID09PT09PT09IENPTlNUUlVDVE9SIFNVTU1BUlkgPT09PT09PT0gLS0+DQoNCjxBIE5BTUU9ImNvbnN0cnVjdG9yX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPg0KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+DQo8Qj5Db25zdHJ1Y3RvciBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHRlbnNpb25IYW5kbGVyRXhzbHRGdW5jdGlvbi5odG1sI0V4dGVuc2lvbkhhbmRsZXJFeHNsdEZ1bmN0aW9uKGphdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUueGFsYW4udGVtcGxhdGVzLlN0eWxlc2hlZXRSb290KSI+RXh0ZW5zaW9uSGFuZGxlckV4c2x0RnVuY3Rpb248L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL1N0eWxlc2hlZXRSb290Lmh0bWwiPlN0eWxlc2hlZXRSb290PC9BPiZuYnNwO3N0eWxlc2hlZXQpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb25zdHJ1Y3RvciBjYWxsZWQgZnJvbSBFbGVtRXhzbHRGdW5jdGlvbiBydW50aW1lSW5pdCgpLjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOw0KPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4NCjxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7amF2YS5sYW5nLk9iamVjdDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2V4dGVuc2lvbnMvRXh0ZW5zaW9uSGFuZGxlckV4c2x0RnVuY3Rpb24uaHRtbCNjYWxsRnVuY3Rpb24ob3JnLmFwYWNoZS54cGF0aC5mdW5jdGlvbnMuRnVuY0V4dEZ1bmN0aW9uLCBqYXZhLnV0aWwuVmVjdG9yLCBvcmcuYXBhY2hlLnhhbGFuLmV4dGVuc2lvbnMuRXhwcmVzc2lvbkNvbnRleHQpIj5jYWxsRnVuY3Rpb248L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2Z1bmN0aW9ucy9GdW5jRXh0RnVuY3Rpb24uaHRtbCI+RnVuY0V4dEZ1bmN0aW9uPC9BPiZuYnNwO2V4dEZ1bmN0aW9uLAogICAgICAgICAgICAgamF2YS51dGlsLlZlY3RvciZuYnNwO2FyZ3MsCiAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2V4dGVuc2lvbnMvRXhwcmVzc2lvbkNvbnRleHQuaHRtbCI+RXhwcmVzc2lvbkNvbnRleHQ8L0E+Jm5ic3A7ZXhwckNvbnRleHQpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtFeGVjdXRlIHRoZSBFWFNMVCBmdW5jdGlvbiBhbmQgcmV0dXJuIHRoZSByZXN1bHQgdmFsdWUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2phdmEubGFuZy5PYmplY3Q8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9leHRlbnNpb25zL0V4dGVuc2lvbkhhbmRsZXJFeHNsdEZ1bmN0aW9uLmh0bWwjY2FsbEZ1bmN0aW9uKGphdmEubGFuZy5TdHJpbmcsIGphdmEudXRpbC5WZWN0b3IsIGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUueGFsYW4uZXh0ZW5zaW9ucy5FeHByZXNzaW9uQ29udGV4dCkiPmNhbGxGdW5jdGlvbjwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtmdW5jTmFtZSwKICAgICAgICAgICAgIGphdmEudXRpbC5WZWN0b3ImbmJzcDthcmdzLAogICAgICAgICAgICAgamF2YS5sYW5nLk9iamVjdCZuYnNwO21ldGhvZEtleSwKICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHByZXNzaW9uQ29udGV4dC5odG1sIj5FeHByZXNzaW9uQ29udGV4dDwvQT4mbmJzcDtleHByQ29udGV4dCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0V4ZWN1dGUgdGhlIEVYU0xUIGZ1bmN0aW9uIGFuZCByZXR1cm4gdGhlIHJlc3VsdCB2YWx1ZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvRWxlbUV4c2x0RnVuY3Rpb24uaHRtbCI+RWxlbUV4c2x0RnVuY3Rpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHRlbnNpb25IYW5kbGVyRXhzbHRGdW5jdGlvbi5odG1sI2dldEZ1bmN0aW9uKGphdmEubGFuZy5TdHJpbmcpIj5nZXRGdW5jdGlvbjwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtmdW5jTmFtZSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgRWxlbUV4c2x0RnVuY3Rpb24gZWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhlIAogZnVuY3Rpb24uPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9leHRlbnNpb25zL0V4dGVuc2lvbkhhbmRsZXJFeHNsdEZ1bmN0aW9uLmh0bWwjaXNFbGVtZW50QXZhaWxhYmxlKGphdmEubGFuZy5TdHJpbmcpIj5pc0VsZW1lbnRBdmFpbGFibGU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZWxlbU5hbWUpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtJZiBhbiBlbGVtZW50LWF2YWlsYWJsZSgpIGNhbGwgYXBwbGllcyB0byBhbiBFWFNMVCByZXN1bHQgZWxlbWVudCB3aXRoaW4gCiBhbiBFWFNMVCBmdW5jdGlvbiBlbGVtZW50LCByZXR1cm4gdHJ1ZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2V4dGVuc2lvbnMvRXh0ZW5zaW9uSGFuZGxlckV4c2x0RnVuY3Rpb24uaHRtbCNpc0Z1bmN0aW9uQXZhaWxhYmxlKGphdmEubGFuZy5TdHJpbmcpIj5pc0Z1bmN0aW9uQXZhaWxhYmxlPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2Z1bmNOYW1lKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RG9lcyB0aGUgRVhTTFQgZnVuY3Rpb24gZXhpc3Q/PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9leHRlbnNpb25zL0V4dGVuc2lvbkhhbmRsZXJFeHNsdEZ1bmN0aW9uLmh0bWwjcHJvY2Vzc0VsZW1lbnQoamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS54YWxhbi50ZW1wbGF0ZXMuRWxlbVRlbXBsYXRlRWxlbWVudCwgb3JnLmFwYWNoZS54YWxhbi50cmFuc2Zvcm1lci5UcmFuc2Zvcm1lckltcGwsIG9yZy5hcGFjaGUueGFsYW4udGVtcGxhdGVzLlN0eWxlc2hlZXQsIGphdmEubGFuZy5PYmplY3QpIj5wcm9jZXNzRWxlbWVudDwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtsb2NhbFBhcnQsCiAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0VsZW1UZW1wbGF0ZUVsZW1lbnQuaHRtbCI+RWxlbVRlbXBsYXRlRWxlbWVudDwvQT4mbmJzcDtlbGVtZW50LAogICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL3RyYW5zZm9ybWVyL1RyYW5zZm9ybWVySW1wbC5odG1sIj5UcmFuc2Zvcm1lckltcGw8L0E+Jm5ic3A7dHJhbnNmb3JtZXIsCiAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL1N0eWxlc2hlZXQuaHRtbCI+U3R5bGVzaGVldDwvQT4mbmJzcDtzdHlsZXNoZWV0VHJlZSwKICAgICAgICAgICAgICAgamF2YS5sYW5nLk9iamVjdCZuYnNwO21ldGhvZEtleSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlcXVpcmVkIGJ5IEV4dGVuc2lvbkhhbmRsZXIgKGFuIGFic3RyYWN0IG1ldGhvZCkuPC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4NCjxURD48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzIGphdmEubGFuZy5PYmplY3Q8L0I+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURD48Q09ERT5lcXVhbHMsIA0KZ2V0Q2xhc3MsIA0KaGFzaENvZGUsIA0Kbm90aWZ5LCANCm5vdGlmeUFsbCwgDQp0b1N0cmluZywgDQp3YWl0LCANCndhaXQsIA0Kd2FpdDwvQ09ERT48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQombmJzcDsNCjxQPg0KDQo8IS0tID09PT09PT09PT09PSBGSUVMRCBERVRBSUwgPT09PT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPg0KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+DQo8Qj5Db25zdHJ1Y3RvciBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCg0KPEEgTkFNRT0iRXh0ZW5zaW9uSGFuZGxlckV4c2x0RnVuY3Rpb24oamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS54YWxhbi50ZW1wbGF0ZXMuU3R5bGVzaGVldFJvb3QpIj48IS0tIC0tPjwvQT48SDM+DQpFeHRlbnNpb25IYW5kbGVyRXhzbHRGdW5jdGlvbjwvSDM+DQo8UFJFPg0KcHVibGljIDxCPkV4dGVuc2lvbkhhbmRsZXJFeHNsdEZ1bmN0aW9uPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL3RlbXBsYXRlcy9TdHlsZXNoZWV0Um9vdC5odG1sIj5TdHlsZXNoZWV0Um9vdDwvQT4mbmJzcDtzdHlsZXNoZWV0KTwvUFJFPg0KPERMPg0KPEREPkNvbnN0cnVjdG9yIGNhbGxlZCBmcm9tIEVsZW1FeHNsdEZ1bmN0aW9uIHJ1bnRpbWVJbml0KCkuPC9ETD4NCg0KPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPg0KPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KDQo8QSBOQU1FPSJwcm9jZXNzRWxlbWVudChqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLnhhbGFuLnRlbXBsYXRlcy5FbGVtVGVtcGxhdGVFbGVtZW50LCBvcmcuYXBhY2hlLnhhbGFuLnRyYW5zZm9ybWVyLlRyYW5zZm9ybWVySW1wbCwgb3JnLmFwYWNoZS54YWxhbi50ZW1wbGF0ZXMuU3R5bGVzaGVldCwgamF2YS5sYW5nLk9iamVjdCkiPjwhLS0gLS0+PC9BPjxIMz4NCnByb2Nlc3NFbGVtZW50PC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5wcm9jZXNzRWxlbWVudDwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2xvY2FsUGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvRWxlbVRlbXBsYXRlRWxlbWVudC5odG1sIj5FbGVtVGVtcGxhdGVFbGVtZW50PC9BPiZuYnNwO2VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdHJhbnNmb3JtZXIvVHJhbnNmb3JtZXJJbXBsLmh0bWwiPlRyYW5zZm9ybWVySW1wbDwvQT4mbmJzcDt0cmFuc2Zvcm1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvU3R5bGVzaGVldC5odG1sIj5TdHlsZXNoZWV0PC9BPiZuYnNwO3N0eWxlc2hlZXRUcmVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7bWV0aG9kS2V5KQogICAgICAgICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5pby5JT0V4Y2VwdGlvbjwvUFJFPg0KPERMPg0KPEREPlJlcXVpcmVkIGJ5IEV4dGVuc2lvbkhhbmRsZXIgKGFuIGFic3RyYWN0IG1ldGhvZCkuIE5vLW9wLjxERD48REw+DQo8RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9leHRlbnNpb25zL0V4dGVuc2lvbkhhbmRsZXIuaHRtbCNwcm9jZXNzRWxlbWVudChqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLnhhbGFuLnRlbXBsYXRlcy5FbGVtVGVtcGxhdGVFbGVtZW50LCBvcmcuYXBhY2hlLnhhbGFuLnRyYW5zZm9ybWVyLlRyYW5zZm9ybWVySW1wbCwgb3JnLmFwYWNoZS54YWxhbi50ZW1wbGF0ZXMuU3R5bGVzaGVldCwgamF2YS5sYW5nLk9iamVjdCkiPnByb2Nlc3NFbGVtZW50PC9BPiBpbiBjbGFzcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2V4dGVuc2lvbnMvRXh0ZW5zaW9uSGFuZGxlci5odG1sIj5FeHRlbnNpb25IYW5kbGVyPC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0RnVuY3Rpb24oamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmdldEZ1bmN0aW9uPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvRWxlbUV4c2x0RnVuY3Rpb24uaHRtbCI+RWxlbUV4c2x0RnVuY3Rpb248L0E+IDxCPmdldEZ1bmN0aW9uPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZnVuY05hbWUpPC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSBFbGVtRXhzbHRGdW5jdGlvbiBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgCiBmdW5jdGlvbi48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5mdW5jTmFtZTwvQ09ERT4gLSBMb2NhbCBuYW1lIG9mIHRoZSBmdW5jdGlvbi48RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBFbGVtRXhzbHRGdW5jdGlvbiBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aAogdGhlIGZ1bmN0aW9uLCBudWxsIGlmIG5vbmUgZXhpc3RzLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iaXNGdW5jdGlvbkF2YWlsYWJsZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPg0KaXNGdW5jdGlvbkF2YWlsYWJsZTwvSDM+DQo8UFJFPg0KcHVibGljIGJvb2xlYW4gPEI+aXNGdW5jdGlvbkF2YWlsYWJsZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2Z1bmNOYW1lKTwvUFJFPg0KPERMPg0KPEREPkRvZXMgdGhlIEVYU0xUIGZ1bmN0aW9uIGV4aXN0PzxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmZ1bmNOYW1lPC9DT0RFPiAtIExvY2FsIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dHJ1ZSBpZiB0aGUgZnVuY3Rpb24gZXhpc3RzLjxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2V4dGVuc2lvbnMvRXh0ZW5zaW9uSGFuZGxlci5odG1sI2lzRnVuY3Rpb25BdmFpbGFibGUoamF2YS5sYW5nLlN0cmluZykiPmlzRnVuY3Rpb25BdmFpbGFibGU8L0E+IGluIGNsYXNzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHRlbnNpb25IYW5kbGVyLmh0bWwiPkV4dGVuc2lvbkhhbmRsZXI8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJpc0VsZW1lbnRBdmFpbGFibGUoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmlzRWxlbWVudEF2YWlsYWJsZTwvSDM+DQo8UFJFPg0KcHVibGljIGJvb2xlYW4gPEI+aXNFbGVtZW50QXZhaWxhYmxlPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZWxlbU5hbWUpPC9QUkU+DQo8REw+DQo8REQ+SWYgYW4gZWxlbWVudC1hdmFpbGFibGUoKSBjYWxsIGFwcGxpZXMgdG8gYW4gRVhTTFQgcmVzdWx0IGVsZW1lbnQgd2l0aGluIAogYW4gRVhTTFQgZnVuY3Rpb24gZWxlbWVudCwgcmV0dXJuIHRydWUuCgogTm90ZTogVGhlIEVYU0xUIGZ1bmN0aW9uIGVsZW1lbnQgaXMgYSB0ZW1wbGF0ZS1sZXZlbCBlbGVtZW50LCBhbmQgCiBlbGVtZW50LWF2YWlsYWJsZSgpIHJldHVybnMgZmFsc2UgZm9yIGl0LjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmVsZW1OYW1lPC9DT0RFPiAtIG5hbWUgb2YgdGhlIGVsZW1lbnQuPERUPjxCPlJldHVybnM6PC9CPjxERD50cnVlIGlmIHRoZSBmdW5jdGlvbiBpcyBhdmFpbGFibGUuPERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHRlbnNpb25IYW5kbGVyLmh0bWwjaXNFbGVtZW50QXZhaWxhYmxlKGphdmEubGFuZy5TdHJpbmcpIj5pc0VsZW1lbnRBdmFpbGFibGU8L0E+IGluIGNsYXNzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHRlbnNpb25IYW5kbGVyLmh0bWwiPkV4dGVuc2lvbkhhbmRsZXI8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJjYWxsRnVuY3Rpb24oamF2YS5sYW5nLlN0cmluZywgamF2YS51dGlsLlZlY3RvciwgamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS54YWxhbi5leHRlbnNpb25zLkV4cHJlc3Npb25Db250ZXh0KSI+PCEtLSAtLT48L0E+PEgzPg0KY2FsbEZ1bmN0aW9uPC9IMz4NCjxQUkU+DQpwdWJsaWMgamF2YS5sYW5nLk9iamVjdCA8Qj5jYWxsRnVuY3Rpb248L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtmdW5jTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC5WZWN0b3ImbmJzcDthcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLk9iamVjdCZuYnNwO21ldGhvZEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHByZXNzaW9uQ29udGV4dC5odG1sIj5FeHByZXNzaW9uQ29udGV4dDwvQT4mbmJzcDtleHByQ29udGV4dCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2phdmF4L3htbC90cmFuc2Zvcm0vVHJhbnNmb3JtZXJFeGNlcHRpb24uaHRtbCI+VHJhbnNmb3JtZXJFeGNlcHRpb248L0E+PC9QUkU+DQo8REw+DQo8REQ+RXhlY3V0ZSB0aGUgRVhTTFQgZnVuY3Rpb24gYW5kIHJldHVybiB0aGUgcmVzdWx0IHZhbHVlLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmZ1bmNOYW1lPC9DT0RFPiAtIE5hbWUgb2YgdGhlIEVYU0xUIGZ1bmN0aW9uLjxERD48Q09ERT5hcmdzPC9DT0RFPiAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuPEREPjxDT0RFPm1ldGhvZEtleTwvQ09ERT4gLSBOb3QgdXNlZC48REQ+PENPREU+ZXhwckNvbnRleHQ8L0NPREU+IC0gVXNlZCB0byBnZXQgdGhlIFhQYXRoQ29udGV4dC48RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGV2YWx1YXRpb24uPERUPjxCPlRocm93czo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2phdmF4L3htbC90cmFuc2Zvcm0vVHJhbnNmb3JtZXJFeGNlcHRpb24uaHRtbCI+VHJhbnNmb3JtZXJFeGNlcHRpb248L0E+IC0gJm5ic3A7PERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHRlbnNpb25IYW5kbGVyLmh0bWwjY2FsbEZ1bmN0aW9uKGphdmEubGFuZy5TdHJpbmcsIGphdmEudXRpbC5WZWN0b3IsIGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUueGFsYW4uZXh0ZW5zaW9ucy5FeHByZXNzaW9uQ29udGV4dCkiPmNhbGxGdW5jdGlvbjwvQT4gaW4gY2xhc3MgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9leHRlbnNpb25zL0V4dGVuc2lvbkhhbmRsZXIuaHRtbCI+RXh0ZW5zaW9uSGFuZGxlcjwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImNhbGxGdW5jdGlvbihvcmcuYXBhY2hlLnhwYXRoLmZ1bmN0aW9ucy5GdW5jRXh0RnVuY3Rpb24sIGphdmEudXRpbC5WZWN0b3IsIG9yZy5hcGFjaGUueGFsYW4uZXh0ZW5zaW9ucy5FeHByZXNzaW9uQ29udGV4dCkiPjwhLS0gLS0+PC9BPjxIMz4NCmNhbGxGdW5jdGlvbjwvSDM+DQo8UFJFPg0KcHVibGljIGphdmEubGFuZy5PYmplY3QgPEI+Y2FsbEZ1bmN0aW9uPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL2Z1bmN0aW9ucy9GdW5jRXh0RnVuY3Rpb24uaHRtbCI+RnVuY0V4dEZ1bmN0aW9uPC9BPiZuYnNwO2V4dEZ1bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLlZlY3RvciZuYnNwO2FyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2V4dGVuc2lvbnMvRXhwcmVzc2lvbkNvbnRleHQuaHRtbCI+RXhwcmVzc2lvbkNvbnRleHQ8L0E+Jm5ic3A7ZXhwckNvbnRleHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPkV4ZWN1dGUgdGhlIEVYU0xUIGZ1bmN0aW9uIGFuZCByZXR1cm4gdGhlIHJlc3VsdCB2YWx1ZS48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5leHRGdW5jdGlvbjwvQ09ERT4gLSBUaGUgWFBhdGggZXh0ZW5zaW9uIGZ1bmN0aW9uPEREPjxDT0RFPmFyZ3M8L0NPREU+IC0gVGhlIGFyZ3VtZW50cyBvZiB0aGUgZnVuY3Rpb24gY2FsbC48REQ+PENPREU+ZXhwckNvbnRleHQ8L0NPREU+IC0gVGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBleHByZXNzaW9uIGlzIGJlaW5nIGV4ZWN1dGVkLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gZXZhbHVhdGlvbi48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9leHRlbnNpb25zL0V4dGVuc2lvbkhhbmRsZXIuaHRtbCNjYWxsRnVuY3Rpb24ob3JnLmFwYWNoZS54cGF0aC5mdW5jdGlvbnMuRnVuY0V4dEZ1bmN0aW9uLCBqYXZhLnV0aWwuVmVjdG9yLCBvcmcuYXBhY2hlLnhhbGFuLmV4dGVuc2lvbnMuRXhwcmVzc2lvbkNvbnRleHQpIj5jYWxsRnVuY3Rpb248L0E+IGluIGNsYXNzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vZXh0ZW5zaW9ucy9FeHRlbnNpb25IYW5kbGVyLmh0bWwiPkV4dGVuc2lvbkhhbmRsZXI8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPg0KPEhSPg0KDQo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+DQo8QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+DQo8VFI+DQo8VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+DQo8QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4NCiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvRXh0ZW5zaW9uSGFuZGxlckV4c2x0RnVuY3Rpb24uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDwvVFI+DQo8L1RBQkxFPg0KPC9URD4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPg0KPC9FTT4NCjwvVEQ+DQo8L1RSPg0KDQo8VFI+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9leHRlbnNpb25zL0V4dGVuc2lvbkhhbmRsZXIuaHRtbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7DQombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL2V4dGVuc2lvbnMvRXh0ZW5zaW9uSGFuZGxlckdlbmVyYWwuaHRtbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsNCiZuYnNwOzxBIEhSRUY9IkV4dGVuc2lvbkhhbmRsZXJFeHNsdEZ1bmN0aW9uLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFI+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPg0KDQo8SFI+DQpDb3B5cmlnaHQgqSAyMDA2IEFwYWNoZSBYTUwgUHJvamVjdC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCjwvQk9EWT4NCjwvSFRNTD4NCg==