PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+CjwhLS1OZXdQYWdlLS0+CjxIVE1MPgo8SEVBRD4KPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyBvbiBGcmkgQXVnIDIyIDAzOjQ0OjEwIEVEVCAyMDAzIC0tPgo8VElUTEU+CkFjdGlvbiAoQXBhY2hlIFN0cnV0cyBBUEkgRG9jdW1lbnRhdGlvbikKPC9USVRMRT4KPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb24sQWN0aW9uIGNsYXNzIj4KPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgo8L0hFQUQ+CjxTQ1JJUFQ+CmZ1bmN0aW9uIGFzZCgpCnsKcGFyZW50LmRvY3VtZW50LnRpdGxlPSJBY3Rpb24gKEFwYWNoZSBTdHJ1dHMgQVBJIERvY3VtZW50YXRpb24pIjsKfQo8L1NDUklQVD4KPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0iYXNkKCk7Ij4KCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4KPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPgo8VFI+CjxURCBDT0xTUEFOPTMgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+CiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9BY3Rpb24uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8L1RSPgo8L1RBQkxFPgo8L1REPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KPC9FTT4KPC9URD4KPC9UUj4KCjxUUj4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KJm5ic3A7UFJFViBDTEFTUyZuYnNwOwombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3IuaHRtbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7CiZuYnNwOzxBIEhSRUY9IkFjdGlvbi5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7CjxTQ1JJUFQ+CiAgPCEtLQogIGlmKHdpbmRvdz09dG9wKSB7CiAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCIgVEFSR0VUPSIiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKICB9CiAgLy8tLT4KPC9TQ1JJUFQ+CjxOT1NDUklQVD4KPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiIFRBUkdFVD0iIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+CjwvTk9TQ1JJUFQ+CjwvRk9OVD48L1REPgo8L1RSPgo8VFI+CjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+CiAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4KCjxIUj4KPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgo8SDI+CjxGT05UIFNJWkU9Ii0xIj4Kb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uPC9GT05UPgo8QlI+CkNsYXNzIEFjdGlvbjwvSDI+CjxQUkU+CmphdmEubGFuZy5PYmplY3QKICB8CiAgKy0tPEI+b3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbjwvQj4KPC9QUkU+CjxETD4KPERUPjxCPkRpcmVjdCBLbm93biBTdWJjbGFzc2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3RpbGVzL2FjdGlvbnMvRGVmaW5pdGlvbkRpc3BhdGNoZXJBY3Rpb24uaHRtbCI+RGVmaW5pdGlvbkRpc3BhdGNoZXJBY3Rpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0Rpc3BhdGNoQWN0aW9uLmh0bWwiPkRpc3BhdGNoQWN0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9Gb3J3YXJkQWN0aW9uLmh0bWwiPkZvcndhcmRBY3Rpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0luY2x1ZGVBY3Rpb24uaHRtbCI+SW5jbHVkZUFjdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3RpbGVzL2FjdGlvbnMvTm9PcEFjdGlvbi5odG1sIj5Ob09wQWN0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdGlsZXMvYWN0aW9ucy9SZWxvYWREZWZpbml0aW9uc0FjdGlvbi5odG1sIj5SZWxvYWREZWZpbml0aW9uc0FjdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvU3dpdGNoQWN0aW9uLmh0bWwiPlN3aXRjaEFjdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3RpbGVzL2FjdGlvbnMvVGlsZXNBY3Rpb24uaHRtbCI+VGlsZXNBY3Rpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy90aWxlcy9hY3Rpb25zL1ZpZXdEZWZpbml0aW9uc0FjdGlvbi5odG1sIj5WaWV3RGVmaW5pdGlvbnNBY3Rpb248L0E+PC9ERD4KPC9ETD4KPEhSPgo8REw+CjxEVD5wdWJsaWMgY2xhc3MgPEI+QWN0aW9uPC9CPjxEVD5leHRlbmRzIGphdmEubGFuZy5PYmplY3Q8L0RMPgoKPFA+CkFuIDxzdHJvbmc+QWN0aW9uPC9zdHJvbmc+IGlzIGFuIGFkYXB0ZXIgYmV0d2VlbiB0aGUgY29udGVudHMgb2YgYW4gaW5jb21pbmcKIEhUVFAgcmVxdWVzdCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYnVzaW5lc3MgbG9naWMgdGhhdCBzaG91bGQgYmUgZXhlY3V0ZWQgdG8KIHByb2Nlc3MgdGhpcyByZXF1ZXN0LiAgVGhlIGNvbnRyb2xsZXIgKEFjdGlvblNlcnZsZXQpIHdpbGwgc2VsZWN0IGFuCiBhcHByb3ByaWF0ZSBBY3Rpb24gZm9yIGVhY2ggcmVxdWVzdCwgY3JlYXRlIGFuIGluc3RhbmNlIChpZiBuZWNlc3NhcnkpLAogYW5kIGNhbGwgdGhlIDxjb2RlPnBlcmZvcm08L2NvZGU+IG1ldGhvZC48L3A+CgogPHA+QWN0aW9ucyBtdXN0IGJlIHByb2dyYW1tZWQgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIsIGJlY2F1c2UgdGhlCiBjb250cm9sbGVyIHdpbGwgc2hhcmUgdGhlIHNhbWUgaW5zdGFuY2UgZm9yIG11bHRpcGxlIHNpbXVsdGFuZW91cwogcmVxdWVzdHMuICBUaGlzIG1lYW5zIHlvdSBzaG91bGQgZGVzaWduIHdpdGggdGhlIGZvbGxvd2luZyBpdGVtcyBpbiBtaW5kOgogPC9wPgogPHVsPgogPGxpPkluc3RhbmNlIGFuZCBzdGF0aWMgdmFyaWFibGVzIE1VU1QgTk9UIGJlIHVzZWQgdG8gc3RvcmUgaW5mb3JtYXRpb24KICAgICByZWxhdGVkIHRvIHRoZSBzdGF0ZSBvZiBhIHBhcnRpY3VsYXIgcmVxdWVzdC4gIFRoZXkgTUFZIGJlIHVzZWQgdG8KICAgICBzaGFyZSBnbG9iYWwgcmVzb3VyY2VzIGFjcm9zcyByZXF1ZXN0cyBmb3IgdGhlIHNhbWUgYWN0aW9uLjwvbGk+CiA8bGk+QWNjZXNzIHRvIG90aGVyIHJlc291cmNlcyAoSmF2YUJlYW5zLCBzZXNzaW9uIHZhcmlhYmxlcywgZXRjLikgTVVTVAogICAgIGJlIHN5bmNocm9uaXplZCBpZiB0aG9zZSByZXNvdXJjZXMgcmVxdWlyZSBwcm90ZWN0aW9uLiAgKEdlbmVyYWxseSwKICAgICBob3dldmVyLCByZXNvdXJjZSBjbGFzc2VzIHNob3VsZCBiZSBkZXNpZ25lZCB0byBwcm92aWRlIHRoZWlyIG93bgogICAgIHByb3RlY3Rpb24gd2hlcmUgbmVjZXNzYXJ5LjwvbGk+CiA8L3VsPgoKIDxwPldoZW4gYW4gPGNvZGU+QWN0aW9uPC9jb2RlPiBpbnN0YW5jZSBpcyBmaXJzdCBjcmVhdGVkLCB0aGUgY29udHJvbGxlcgogc2VydmxldCB3aWxsIGNhbGwgPGNvZGU+c2V0U2VydmxldCgpPC9jb2RlPiB3aXRoIGEgbm9uLW51bGwgYXJndW1lbnQgdG8KIGlkZW50aWZ5IHRoZSBjb250cm9sbGVyIHNlcnZsZXQgaW5zdGFuY2UgdG8gd2hpY2ggdGhpcyBBY3Rpb24gaXMgYXR0YWNoZWQuCiBXaGVuIHRoZSBjb250cm9sbGVyIHNlcnZsZXQgaXMgdG8gYmUgc2h1dCBkb3duIChvciByZXN0YXJ0ZWQpLCB0aGUKIDxjb2RlPnNldFNlcnZsZXQoKTwvY29kZT4gbWV0aG9kIHdpbGwgYmUgY2FsbGVkIHdpdGggYSA8Y29kZT5udWxsPC9jb2RlPgogYXJndW1lbnQsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNsZWFuIHVwIGFueSBhbGxvY2F0ZWQgcmVzb3VyY2VzIGluIHVzZQogYnkgdGhpcyBBY3Rpb24uPC9wPgo8UD4KCjxQPgo8REw+CjxEVD48Qj5WZXJzaW9uOjwvQj48L0RUPgogIDxERD4kUmV2aXNpb246IDEuMSAkICREYXRlJDwvREQ+CjxEVD48Qj5BdXRob3I6PC9CPjwvRFQ+CiAgPEREPkNyYWlnIFIuIE1jQ2xhbmFoYW4sIERhdmlkIEdyYWhhbTwvREQ+CjwvREw+CjxIUj4KCjxQPgo8IS0tID09PT09PT09IE5FU1RFRCBDTEFTUyBTVU1NQVJZID09PT09PT09IC0tPgoKCjwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KCjxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPgo8Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI0FDVElPTl9TRVJWTEVUX0tFWSI+QUNUSU9OX1NFUlZMRVRfS0VZPC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSBHbG9iYWxzLkFDVElPTl9TRVJWTEVUX0tFWSBpbnN0ZWFkLjwvST48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI0FQUExJQ0FUSU9OX0tFWSI+QVBQTElDQVRJT05fS0VZPC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL0dsb2JhbHMuaHRtbCNNT0RVTEVfS0VZIj48Q09ERT5HbG9iYWxzLk1PRFVMRV9LRVk8L0NPREU+PC9BPjwvST48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI0RBVEFfU09VUkNFX0tFWSI+REFUQV9TT1VSQ0VfS0VZPC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL0dsb2JhbHMuaHRtbCNEQVRBX1NPVVJDRV9LRVkiPjxDT0RFPkdsb2JhbHMuREFUQV9TT1VSQ0VfS0VZPC9DT0RFPjwvQT48L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkIHN0YXRpYyZuYnNwO2phdmEudXRpbC5Mb2NhbGU8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjZGVmYXVsdExvY2FsZSI+ZGVmYXVsdExvY2FsZTwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgc3lzdGVtIGRlZmF1bHQgTG9jYWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjRVJST1JfS0VZIj5FUlJPUl9LRVk8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+UmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvR2xvYmFscy5odG1sI0VSUk9SX0tFWSI+PENPREU+R2xvYmFscy5FUlJPUl9LRVk8L0NPREU+PC9BPjwvST48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI0VYQ0VQVElPTl9LRVkiPkVYQ0VQVElPTl9LRVk8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+UmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvR2xvYmFscy5odG1sI0VYQ0VQVElPTl9LRVkiPjxDT0RFPkdsb2JhbHMuRVhDRVBUSU9OX0tFWTwvQ09ERT48L0E+PC9JPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjRk9STV9CRUFOU19LRVkiPkZPUk1fQkVBTlNfS0VZPC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlJlcGxhY2VkIGJ5IGNvbGxlY3Rpb24gaW4gTW9kdWxlQ29uZmlnPC9JPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjRk9SV0FSRFNfS0VZIj5GT1JXQVJEU19LRVk8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+UmVwbGFjZWQgYnkgY29sbGVjdGlvbiBpbiBNb2R1bGVDb25maWcuPC9JPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjTE9DQUxFX0tFWSI+TE9DQUxFX0tFWTwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5SZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9HbG9iYWxzLmh0bWwjTE9DQUxFX0tFWSI+PENPREU+R2xvYmFscy5MT0NBTEVfS0VZPC9DT0RFPjwvQT48L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNNQVBQSU5HX0tFWSI+TUFQUElOR19LRVk8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+UmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvR2xvYmFscy5odG1sI01BUFBJTkdfS0VZIj48Q09ERT5HbG9iYWxzLk1BUFBJTkdfS0VZPC9DT0RFPjwvQT48L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNNQVBQSU5HU19LRVkiPk1BUFBJTkdTX0tFWTwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5SZXBsYWNlZCBieSBjb2xsZWN0aW9uIGluIE1vZHVsZUNvbmZpZzwvST48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI01FU1NBR0VfS0VZIj5NRVNTQUdFX0tFWTwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5SZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9HbG9iYWxzLmh0bWwjTUVTU0FHRV9LRVkiPjxDT0RFPkdsb2JhbHMuTUVTU0FHRV9LRVk8L0NPREU+PC9BPjwvST48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI01FU1NBR0VTX0tFWSI+TUVTU0FHRVNfS0VZPC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSBHbG9iYWxzLk1FU1NBR0VTX0tFWSBpbnN0ZWFkLjwvST48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI01VTFRJUEFSVF9LRVkiPk1VTFRJUEFSVF9LRVk8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIEdsb2JhbHMuTVVMVElQQVJUX0tFWSBpbnN0ZWFkLjwvST48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI1BMVUdfSU5TX0tFWSI+UExVR19JTlNfS0VZPC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL0dsb2JhbHMuaHRtbCNQTFVHX0lOU19LRVkiPjxDT0RFPkdsb2JhbHMuUExVR19JTlNfS0VZPC9DT0RFPjwvQT48L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNSRVFVRVNUX1BST0NFU1NPUl9LRVkiPlJFUVVFU1RfUFJPQ0VTU09SX0tFWTwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2UgR2xvYmFscy5SRVFVRVNUX1BST0NFU1NPUl9LRVkgaW5zdGVhZC48L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI3NlcnZsZXQiPnNlcnZsZXQ8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGNvbnRyb2xsZXIgc2VydmxldCB0byB3aGljaCB3ZSBhcmUgYXR0YWNoZWQuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNTRVJWTEVUX0tFWSI+U0VSVkxFVF9LRVk8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIEdsb2JhbHMuU0VSVkxFVF9LRVkgaW5zdGVhZC48L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJpdmF0ZSBzdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Rva2VuUHJvY2Vzc29yLmh0bWwiPlRva2VuUHJvY2Vzc29yPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCN0b2tlbiI+dG9rZW48L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QW4gaW5zdGFuY2Ugb2YgVG9rZW5Qcm9jZXNzb3IgdG8gdXNlIGZvciB0b2tlbiBmdW5jdGlvbmFsaXR5LjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjVFJBTlNBQ1RJT05fVE9LRU5fS0VZIj5UUkFOU0FDVElPTl9UT0tFTl9LRVk8L0E+PC9CPjwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIEdsb2JhbHMuVFJBTlNBQ1RJT05fVE9LRU5fS0VZIGluc3RlYWQuPC9JPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CiZuYnNwOwo8IS0tID09PT09PT09IENPTlNUUlVDVE9SIFNVTU1BUlkgPT09PT09PT0gLS0+Cgo8QSBOQU1FPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4KPEI+Q29uc3RydWN0b3IgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjQWN0aW9uKCkiPkFjdGlvbjwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+CjwvVFI+CjwvVEFCTEU+CiZuYnNwOwo8IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Cgo8QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+CjxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sIj5BY3Rpb25Gb3J3YXJkPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNleGVjdXRlKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9ybSwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj5leGVjdXRlPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4mbmJzcDttYXBwaW5nLAogICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtLmh0bWwiPkFjdGlvbkZvcm08L0E+Jm5ic3A7Zm9ybSwKICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCwKICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSZuYnNwO3Jlc3BvbnNlKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UHJvY2VzcyB0aGUgc3BlY2lmaWVkIEhUVFAgcmVxdWVzdCwgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBIVFRQCiByZXNwb25zZSAob3IgZm9yd2FyZCB0byBhbm90aGVyIHdlYiBjb21wb25lbnQgdGhhdCB3aWxsIGNyZWF0ZSBpdCksCiB3aXRoIHByb3Zpc2lvbiBmb3IgaGFuZGxpbmcgZXhjZXB0aW9ucyB0aHJvd24gYnkgdGhlIGJ1c2luZXNzIGxvZ2ljLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkLmh0bWwiPkFjdGlvbkZvcndhcmQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI2V4ZWN1dGUob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3JtLCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXNwb25zZSkiPmV4ZWN1dGU8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPiZuYnNwO21hcHBpbmcsCiAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm0uaHRtbCI+QWN0aW9uRm9ybTwvQT4mbmJzcDtmb3JtLAogICAgICAgIGphdmF4LnNlcnZsZXQuU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0LAogICAgICAgIGphdmF4LnNlcnZsZXQuU2VydmxldFJlc3BvbnNlJm5ic3A7cmVzcG9uc2UpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtQcm9jZXNzIHRoZSBzcGVjaWZpZWQgbm9uLUhUVFAgcmVxdWVzdCwgYW5kIGNyZWF0ZSB0aGUKIGNvcnJlc3BvbmRpbmcgbm9uLUhUVFAgcmVzcG9uc2UgKG9yIGZvcndhcmQgdG8gYW5vdGhlciB3ZWIKIGNvbXBvbmVudCB0aGF0IHdpbGwgY3JlYXRlIGl0KSwgd2l0aCBwcm92aXNpb24gZm9yIGhhbmRsaW5nCiBleGNlcHRpb25zIHRocm93biBieSB0aGUgYnVzaW5lc3MgbG9naWMuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjZ2VuZXJhdGVUb2tlbihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+Z2VuZXJhdGVUb2tlbjwvQT48L0I+KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0KTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7R2VuZXJhdGUgYSBuZXcgdHJhbnNhY3Rpb24gdG9rZW4sIHRvIGJlIHVzZWQgZm9yIGVuZm9yY2luZyBhIHNpbmdsZQogcmVxdWVzdCBmb3IgYSBwYXJ0aWN1bGFyIHRyYW5zYWN0aW9uLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDtqYXZheC5zcWwuRGF0YVNvdXJjZTwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNnZXREYXRhU291cmNlKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj5nZXREYXRhU291cmNlPC9BPjwvQj4oamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIGRlZmF1bHQgZGF0YSBzb3VyY2UgZm9yIHRoZSBjdXJyZW50IG1vZHVsZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcm90ZWN0ZWQgJm5ic3A7amF2YXguc3FsLkRhdGFTb3VyY2U8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjZ2V0RGF0YVNvdXJjZShqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0RGF0YVNvdXJjZTwvQT48L0I+KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0LAogICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtrZXkpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIHNwZWNpZmllZCBkYXRhIHNvdXJjZSBmb3IgdGhlIGN1cnJlbnQgbW9kdWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDtqYXZhLnV0aWwuTG9jYWxlPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI2dldExvY2FsZShqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+Z2V0TG9jYWxlPC9BPjwvQj4oamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIHVzZXIncyBjdXJyZW50bHkgc2VsZWN0ZWQgTG9jYWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjZ2V0UmVzb3VyY2VzKCkiPmdldFJlc291cmNlczwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlRoaXMgbWV0aG9kIGNhbiBvbmx5IHJldHVybiB0aGUgcmVzb3VyY2VzIGZvciB0aGUgZGVmYXVsdAogIG1vZHVsZS4gIFVzZSBnZXRSZXNvdXJjZXMoSHR0cFNlcnZsZXRSZXF1ZXN0KSB0byBnZXQgdGhlCiAgcmVzb3VyY2VzIGZvciB0aGUgY3VycmVudCBtb2R1bGUuPC9JPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjZ2V0UmVzb3VyY2VzKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj5nZXRSZXNvdXJjZXM8L0E+PC9CPihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgZGVmYXVsdCBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhlIGN1cnJlbnQgbW9kdWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjZ2V0UmVzb3VyY2VzKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmEubGFuZy5TdHJpbmcpIj5nZXRSZXNvdXJjZXM8L0E+PC9CPihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCwKICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtrZXkpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIHNwZWNpZmllZCBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhlIGN1cnJlbnQgbW9kdWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI2dldFNlcnZsZXQoKSI+Z2V0U2VydmxldDwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgY29udHJvbGxlciBzZXJ2bGV0IGluc3RhbmNlIHRvIHdoaWNoIHdlIGFyZSBhdHRhY2hlZC48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcm90ZWN0ZWQgJm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNpc0NhbmNlbGxlZChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+aXNDYW5jZWxsZWQ8L0E+PC9CPihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGN1cnJlbnQgZm9ybSdzIGNhbmNlbCBidXR0b24gd2FzCiBwcmVzc2VkLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI2lzVG9rZW5WYWxpZChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+aXNUb2tlblZhbGlkPC9BPjwvQj4oamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlcmUgaXMgYSB0cmFuc2FjdGlvbiB0b2tlbiBzdG9yZWQgaW4KIHRoZSB1c2VyJ3MgY3VycmVudCBzZXNzaW9uLCBhbmQgdGhlIHZhbHVlIHN1Ym1pdHRlZCBhcyBhIHJlcXVlc3QKIHBhcmFtZXRlciB3aXRoIHRoaXMgYWN0aW9uIG1hdGNoZXMgaXQuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjaXNUb2tlblZhbGlkKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGJvb2xlYW4pIj5pc1Rva2VuVmFsaWQ8L0E+PC9CPihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCwKICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDtyZXNldCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGVyZSBpcyBhIHRyYW5zYWN0aW9uIHRva2VuIHN0b3JlZCBpbgogdGhlIHVzZXIncyBjdXJyZW50IHNlc3Npb24sIGFuZCB0aGUgdmFsdWUgc3VibWl0dGVkIGFzIGEgcmVxdWVzdAogcGFyYW1ldGVyIHdpdGggdGhpcyBhY3Rpb24gbWF0Y2hlcyBpdC48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sIj5BY3Rpb25Gb3J3YXJkPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNwZXJmb3JtKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9ybSwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj5wZXJmb3JtPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4mbmJzcDttYXBwaW5nLAogICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtLmh0bWwiPkFjdGlvbkZvcm08L0E+Jm5ic3A7Zm9ybSwKICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCwKICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSZuYnNwO3Jlc3BvbnNlKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIHRoZSA8Y29kZT5leGVjdXRlKCk8L2NvZGU+IG1ldGhvZCBpbnN0ZWFkPC9JPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkLmh0bWwiPkFjdGlvbkZvcndhcmQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI3BlcmZvcm0ob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3JtLCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXNwb25zZSkiPnBlcmZvcm08L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPiZuYnNwO21hcHBpbmcsCiAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm0uaHRtbCI+QWN0aW9uRm9ybTwvQT4mbmJzcDtmb3JtLAogICAgICAgIGphdmF4LnNlcnZsZXQuU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0LAogICAgICAgIGphdmF4LnNlcnZsZXQuU2VydmxldFJlc3BvbnNlJm5ic3A7cmVzcG9uc2UpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2UgdGhlIDxjb2RlPmV4ZWN1dGUoKTwvY29kZT4gbWV0aG9kIGluc3RlYWQ8L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjcmVzZXRUb2tlbihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+cmVzZXRUb2tlbjwvQT48L0I+KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0KTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVzZXQgdGhlIHNhdmVkIHRyYW5zYWN0aW9uIHRva2VuIGluIHRoZSB1c2VyJ3Mgc2Vzc2lvbi48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcm90ZWN0ZWQgJm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNzYXZlRXJyb3JzKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMpIj5zYXZlRXJyb3JzPC9BPjwvQj4oamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QsCiAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2F2ZSB0aGUgc3BlY2lmaWVkIGVycm9yIG1lc3NhZ2VzIGtleXMgaW50byB0aGUgYXBwcm9wcmlhdGUgcmVxdWVzdAogYXR0cmlidXRlIGZvciB1c2UgYnkgdGhlICZsdDtodG1sOmVycm9ycyZndDsgdGFnLCBpZiBhbnkgbWVzc2FnZXMKIGFyZSByZXF1aXJlZC48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcm90ZWN0ZWQgJm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNzYXZlTWVzc2FnZXMoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1lc3NhZ2VzKSI+c2F2ZU1lc3NhZ2VzPC9BPjwvQj4oamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QsCiAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWVzc2FnZXMuaHRtbCI+QWN0aW9uTWVzc2FnZXM8L0E+Jm5ic3A7bWVzc2FnZXMpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTYXZlIHRoZSBzcGVjaWZpZWQgbWVzc2FnZXMga2V5cyBpbnRvIHRoZSBhcHByb3ByaWF0ZSByZXF1ZXN0CiBhdHRyaWJ1dGUgZm9yIHVzZSBieSB0aGUgJmx0O2h0bWw6bWVzc2FnZXMmZ3Q7IHRhZyAoaWYKIG1lc3NhZ2VzPSJ0cnVlIiBpcyBzZXQpLCBpZiBhbnkgbWVzc2FnZXMgYXJlIHJlcXVpcmVkLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI3NhdmVUb2tlbihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+c2F2ZVRva2VuPC9BPjwvQj4oamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTYXZlIGEgbmV3IHRyYW5zYWN0aW9uIHRva2VuIGluIHRoZSB1c2VyJ3MgY3VycmVudCBzZXNzaW9uLCBjcmVhdGluZwogYSBuZXcgc2Vzc2lvbiBpZiBuZWNlc3NhcnkuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjc2V0TG9jYWxlKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmEudXRpbC5Mb2NhbGUpIj5zZXRMb2NhbGU8L0E+PC9CPihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCwKICAgICAgICAgIGphdmEudXRpbC5Mb2NhbGUmbmJzcDtsb2NhbGUpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXQgdGhlIHVzZXIncyBjdXJyZW50bHkgc2VsZWN0ZWQgTG9jYWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjc2V0U2VydmxldChvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uU2VydmxldCkiPnNldFNlcnZsZXQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPiZuYnNwO3NlcnZsZXQpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXQgdGhlIGNvbnRyb2xsZXIgc2VydmxldCBpbnN0YW5jZSB0byB3aGljaCB3ZSBhcmUgYXR0YWNoZWQgKGlmCiA8Y29kZT5zZXJ2bGV0PC9jb2RlPiBpcyBub24tbnVsbCksIG9yIHJlbGVhc2UgYW55IGFsbG9jYXRlZCByZXNvdXJjZXMKIChpZiA8Y29kZT5zZXJ2bGV0PC9jb2RlPiBpcyBudWxsKS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcm90ZWN0ZWQgJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCN0b0hleChieXRlW10pIj50b0hleDwvQT48L0I+KGJ5dGVbXSZuYnNwO2J1ZmZlcik8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIHJlbGVhc2UgYWZ0ZXIgU3RydXRzIDEuMS48L0k+PC9URD4KPC9UUj4KPC9UQUJMRT4KJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgo8VEQ+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQ+PENPREU+Y2xvbmUsIGVxdWFscywgZmluYWxpemUsIGdldENsYXNzLCBoYXNoQ29kZSwgbm90aWZ5LCBub3RpZnlBbGwsIHRvU3RyaW5nLCB3YWl0LCB3YWl0LCB3YWl0PC9DT0RFPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CiZuYnNwOwo8UD4KCjwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KCjxBIE5BTUU9ImZpZWxkX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+CjxCPkZpZWxkIERldGFpbDwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KCjxBIE5BTUU9IkFDVElPTl9TRVJWTEVUX0tFWSI+PCEtLSAtLT48L0E+PEgzPgpBQ1RJT05fU0VSVkxFVF9LRVk8L0gzPgo8UFJFPgpwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+QUNUSU9OX1NFUlZMRVRfS0VZPC9CPjwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2UgR2xvYmFscy5BQ1RJT05fU0VSVkxFVF9LRVkgaW5zdGVhZC48L0k+CjxQPgo8REQ+VGhlIGNvbnRleHQgYXR0cmlidXRlcyBrZXkgdW5kZXIgd2hpY2ggb3VyIDxjb2RlPkFjdGlvblNlcnZsZXQ8L2NvZGU+CiBpbnN0YW5jZSB3aWxsIGJlIHN0b3JlZC4KPFA+CjxETD4KPERUPjxCPlNpbmNlOjwvQj48L0RUPgogIDxERD5TdHJ1dHMgMS4xPC9ERD4KPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbi5BQ1RJT05fU0VSVkxFVF9LRVkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJBUFBMSUNBVElPTl9LRVkiPjwhLS0gLS0+PC9BPjxIMz4KQVBQTElDQVRJT05fS0VZPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPkFQUExJQ0FUSU9OX0tFWTwvQj48L1BSRT4KPERMPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+UmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvR2xvYmFscy5odG1sI01PRFVMRV9LRVkiPjxDT0RFPkdsb2JhbHMuTU9EVUxFX0tFWTwvQ09ERT48L0E+PC9JPgo8UD4KPEREPjxwPlRoZSBiYXNlIG9mIHRoZSBjb250ZXh0IGF0dHJpYnV0ZXMga2V5IHVuZGVyIHdoaWNoIG91cgogPGNvZGU+TW9kdWxlQ29uZmlnPC9jb2RlPiBkYXRhIHN0cnVjdHVyZSB3aWxsIGJlIHN0b3JlZC4gIFRoaXMKIHdpbGwgYmUgc3VmZml4ZWQgd2l0aCB0aGUgYWN0dWFsIG1vZHVsZSBwcmVmaXggKGluY2x1ZGluZyB0aGUKIGxlYWRpbmcgIi8iIGNoYXJhY3RlcikgdG8gZm9ybSB0aGUgYWN0dWFsIGF0dHJpYnV0ZXMga2V5LjwvcD4KCiA8cD5Gb3IgZWFjaCByZXF1ZXN0IHByb2Nlc3NlZCBieSB0aGUgY29udHJvbGxlciBzZXJ2bGV0LCB0aGUKIDxjb2RlPk1vZHVsZUNvbmZpZzwvY29kZT4gb2JqZWN0IGZvciB0aGUgbW9kdWxlIHNlbGVjdGVkIGJ5CiB0aGUgcmVxdWVzdCBVUkkgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZCB3aWxsIGFsc28gYmUgZXhwb3NlZCB1bmRlcgogdGhpcyBrZXkgYXMgYSByZXF1ZXN0IGF0dHJpYnV0ZS48L3A+CjxQPgo8REw+CjxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KICA8REQ+U3RydXRzIDEuMTwvREQ+CjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb24uQVBQTElDQVRJT05fS0VZIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iREFUQV9TT1VSQ0VfS0VZIj48IS0tIC0tPjwvQT48SDM+CkRBVEFfU09VUkNFX0tFWTwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5EQVRBX1NPVVJDRV9LRVk8L0I+PC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL0dsb2JhbHMuaHRtbCNEQVRBX1NPVVJDRV9LRVkiPjxDT0RFPkdsb2JhbHMuREFUQV9TT1VSQ0VfS0VZPC9DT0RFPjwvQT48L0k+CjxQPgo8REQ+VGhlIGNvbnRleHQgYXR0cmlidXRlcyBrZXkgdW5kZXIgd2hpY2ggb3VyIDxzdHJvbmc+ZGVmYXVsdDwvc3Ryb25nPgogY29uZmlndXJlZCBkYXRhIHNvdXJjZSAod2hpY2ggbXVzdCBpbXBsZW1lbnQKIDxjb2RlPmphdmF4LnNxbC5EYXRhU291cmNlPC9jb2RlPikgaXMgc3RvcmVkLAogaWYgb25lIGlzIGNvbmZpZ3VyZWQgZm9yIHRoaXMgbW9kdWxlLgo8UD4KPERMPgo8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uLkRBVEFfU09VUkNFX0tFWSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+CjwvREw+CjxIUj4KCjxBIE5BTUU9IkVSUk9SX0tFWSI+PCEtLSAtLT48L0E+PEgzPgpFUlJPUl9LRVk8L0gzPgo8UFJFPgpwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+RVJST1JfS0VZPC9CPjwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5SZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9HbG9iYWxzLmh0bWwjRVJST1JfS0VZIj48Q09ERT5HbG9iYWxzLkVSUk9SX0tFWTwvQ09ERT48L0E+PC9JPgo8UD4KPEREPlRoZSByZXF1ZXN0IGF0dHJpYnV0ZXMga2V5IHVuZGVyIHdoaWNoIHlvdXIgYWN0aW9uIHNob3VsZCBzdG9yZSBhbgogPGNvZGU+b3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9yczwvY29kZT4gb2JqZWN0LCBpZiB5b3UKIGFyZSB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBjdXN0b20gdGFnIGxpYnJhcnkgZWxlbWVudHMuCjxQPgo8REw+CjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb24uRVJST1JfS0VZIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iRVhDRVBUSU9OX0tFWSI+PCEtLSAtLT48L0E+PEgzPgpFWENFUFRJT05fS0VZPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPkVYQ0VQVElPTl9LRVk8L0I+PC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL0dsb2JhbHMuaHRtbCNFWENFUFRJT05fS0VZIj48Q09ERT5HbG9iYWxzLkVYQ0VQVElPTl9LRVk8L0NPREU+PC9BPjwvST4KPFA+CjxERD5UaGUgcmVxdWVzdCBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCBTdHJ1dHMgY3VzdG9tIHRhZ3MgbWlnaHQgc3RvcmUgYQogPGNvZGU+VGhyb3dhYmxlPC9jb2RlPiB0aGF0IGNhdXNlZCB0aGVtIHRvIHJlcG9ydCBhIEpzcEV4Y2VwdGlvbiBhdAogcnVudGltZS4gIFRoaXMgdmFsdWUgY2FuIGJlIHVzZWQgb24gYW4gZXJyb3IgcGFnZSB0byBwcm92aWRlIG1vcmUKIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgcmVhbGx5IHdlbnQgd3JvbmcuCjxQPgo8REw+CjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb24uRVhDRVBUSU9OX0tFWSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+CjwvREw+CjxIUj4KCjxBIE5BTUU9IkZPUk1fQkVBTlNfS0VZIj48IS0tIC0tPjwvQT48SDM+CkZPUk1fQkVBTlNfS0VZPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPkZPUk1fQkVBTlNfS0VZPC9CPjwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5SZXBsYWNlZCBieSBjb2xsZWN0aW9uIGluIE1vZHVsZUNvbmZpZzwvST4KPFA+CjxERD5UaGUgY29udGV4dCBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCBvdXIKIDxjb2RlPm9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3JtQmVhbnM8L2NvZGU+IGNvbGxlY3Rpb24KIGlzIG5vcm1hbGx5IHN0b3JlZCwgdW5sZXNzIG92ZXJyaWRkZW4gd2hlbiBpbml0aWFsaXppbmcgb3VyCiBBY3Rpb25TZXJ2bGV0Lgo8UD4KPERMPgo8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uLkZPUk1fQkVBTlNfS0VZIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iRk9SV0FSRFNfS0VZIj48IS0tIC0tPjwvQT48SDM+CkZPUldBUkRTX0tFWTwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5GT1JXQVJEU19LRVk8L0I+PC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlJlcGxhY2VkIGJ5IGNvbGxlY3Rpb24gaW4gTW9kdWxlQ29uZmlnLjwvST4KPFA+CjxERD5UaGUgY29udGV4dCBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCBvdXIKIDxjb2RlPm9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3J3YXJkczwvY29kZT4gY29sbGVjdGlvbgogaXMgbm9ybWFsbHkgc3RvcmVkLCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aGVuIGluaXRpYWxpemluZyBvdXIKIEFjdGlvblNlcnZsZXQuCjxQPgo8REw+CjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb24uRk9SV0FSRFNfS0VZIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iTE9DQUxFX0tFWSI+PCEtLSAtLT48L0E+PEgzPgpMT0NBTEVfS0VZPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPkxPQ0FMRV9LRVk8L0I+PC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL0dsb2JhbHMuaHRtbCNMT0NBTEVfS0VZIj48Q09ERT5HbG9iYWxzLkxPQ0FMRV9LRVk8L0NPREU+PC9BPjwvST4KPFA+CjxERD5UaGUgc2Vzc2lvbiBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCB0aGUgdXNlcidzIHNlbGVjdGVkCiA8Y29kZT5qYXZhLnV0aWwuTG9jYWxlPC9jb2RlPiBpcyBzdG9yZWQsIGlmIGFueS4gIElmIG5vIHN1Y2gKIGF0dHJpYnV0ZSBpcyBmb3VuZCwgdGhlIHN5c3RlbSBkZWZhdWx0IGxvY2FsZQogd2lsbCBiZSB1c2VkIHdoZW4gcmV0cmlldmluZyBpbnRlcm5hdGlvbmFsaXplZCBtZXNzYWdlcy4gIElmIHVzZWQsIHRoaXMKIGF0dHJpYnV0ZSBpcyB0eXBpY2FsbHkgc2V0IGR1cmluZyB1c2VyIGxvZ2luIHByb2Nlc3NpbmcuCjxQPgo8REw+CjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb24uTE9DQUxFX0tFWSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+CjwvREw+CjxIUj4KCjxBIE5BTUU9Ik1BUFBJTkdfS0VZIj48IS0tIC0tPjwvQT48SDM+Ck1BUFBJTkdfS0VZPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPk1BUFBJTkdfS0VZPC9CPjwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5SZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9HbG9iYWxzLmh0bWwjTUFQUElOR19LRVkiPjxDT0RFPkdsb2JhbHMuTUFQUElOR19LRVk8L0NPREU+PC9BPjwvST4KPFA+CjxERD5UaGUgcmVxdWVzdCBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCBvdXIKIDxjb2RlPm9yZy5hcGFjaGUuc3RydXRzLkFjdGlvbk1hcHBpbmc8L2NvZGU+IGluc3RhbmNlCiBpcyBwYXNzZWQuCjxQPgo8REw+CjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb24uTUFQUElOR19LRVkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJNQVBQSU5HU19LRVkiPjwhLS0gLS0+PC9BPjxIMz4KTUFQUElOR1NfS0VZPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPk1BUFBJTkdTX0tFWTwvQj48L1BSRT4KPERMPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+UmVwbGFjZWQgYnkgY29sbGVjdGlvbiBpbiBNb2R1bGVDb25maWc8L0k+CjxQPgo8REQ+VGhlIGNvbnRleHQgYXR0cmlidXRlcyBrZXkgdW5kZXIgd2hpY2ggb3VyCiA8Y29kZT5vcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZ3M8L2NvZGU+IGNvbGxlY3Rpb24KIGlzIG5vcm1hbGx5IHN0b3JlZCwgdW5sZXNzIG92ZXJyaWRkZW4gd2hlbiBpbml0aWFsaXppbmcgb3VyCiBBY3Rpb25TZXJ2bGV0Lgo8UD4KPERMPgo8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uLk1BUFBJTkdTX0tFWSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+CjwvREw+CjxIUj4KCjxBIE5BTUU9Ik1FU1NBR0VfS0VZIj48IS0tIC0tPjwvQT48SDM+Ck1FU1NBR0VfS0VZPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPk1FU1NBR0VfS0VZPC9CPjwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5SZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9HbG9iYWxzLmh0bWwjTUVTU0FHRV9LRVkiPjxDT0RFPkdsb2JhbHMuTUVTU0FHRV9LRVk8L0NPREU+PC9BPjwvST4KPFA+CjxERD5UaGUgcmVxdWVzdCBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCB5b3VyIGFjdGlvbiBzaG91bGQgc3RvcmUgYW4KIDxjb2RlPm9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NZXNzYWdlczwvY29kZT4gb2JqZWN0LCBpZiB5b3UKIGFyZSB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBjdXN0b20gdGFnIGxpYnJhcnkgZWxlbWVudHMuCjxQPgo8REw+CjxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KICA8REQ+U3RydXRzIDEuMTwvREQ+CjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb24uTUVTU0FHRV9LRVkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJNRVNTQUdFU19LRVkiPjwhLS0gLS0+PC9BPjxIMz4KTUVTU0FHRVNfS0VZPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPk1FU1NBR0VTX0tFWTwvQj48L1BSRT4KPERMPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIEdsb2JhbHMuTUVTU0FHRVNfS0VZIGluc3RlYWQuPC9JPgo8UD4KPEREPjxwPlRoZSBiYXNlIG9mIHRoZSBjb250ZXh0IGF0dHJpYnV0ZXMga2V5IHVuZGVyIHdoaWNoIG91cgogbW9kdWxlIDxjb2RlPk1lc3NhZ2VSZXNvdXJjZXM8L2NvZGU+IHdpbGwgYmUgc3RvcmVkLiAgVGhpcwogd2lsbCBiZSBzdWZmaXhlZCB3aXRoIHRoZSBhY3R1YWwgbW9kdWxlIHByZWZpeCAoaW5jbHVkaW5nIHRoZQogbGVhZGluZyAiLyIgY2hhcmFjdGVyKSB0byBmb3JtIHRoZSBhY3R1YWwgcmVzb3VyY2VzIGtleS48L3A+CgogPHA+Rm9yIGVhY2ggcmVxdWVzdCBwcm9jZXNzZWQgYnkgdGhlIGNvbnRyb2xsZXIgc2VydmxldCwgdGhlCiA8Y29kZT5NZXNzYWdlUmVzb3VyY2VzPC9jb2RlPiBvYmplY3QgZm9yIHRoZSBtb2R1bGUgc2VsZWN0ZWQgYnkKIHRoZSByZXF1ZXN0IFVSSSBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkIHdpbGwgYWxzbyBiZSBleHBvc2VkIHVuZGVyCiB0aGlzIGtleSBhcyBhIHJlcXVlc3QgYXR0cmlidXRlLjwvcD4KPFA+CjxETD4KPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbi5NRVNTQUdFU19LRVkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJNVUxUSVBBUlRfS0VZIj48IS0tIC0tPjwvQT48SDM+Ck1VTFRJUEFSVF9LRVk8L0gzPgo8UFJFPgpwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+TVVMVElQQVJUX0tFWTwvQj48L1BSRT4KPERMPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIEdsb2JhbHMuTVVMVElQQVJUX0tFWSBpbnN0ZWFkLjwvST4KPFA+CjxERD5UaGUgcmVxdWVzdCBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCBvdXIgbXVsdGlwYXJ0IGNsYXNzIGlzIHN0b3JlZC4KPFA+CjxETD4KPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbi5NVUxUSVBBUlRfS0VZIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iUExVR19JTlNfS0VZIj48IS0tIC0tPjwvQT48SDM+ClBMVUdfSU5TX0tFWTwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5QTFVHX0lOU19LRVk8L0I+PC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL0dsb2JhbHMuaHRtbCNQTFVHX0lOU19LRVkiPjxDT0RFPkdsb2JhbHMuUExVR19JTlNfS0VZPC9DT0RFPjwvQT48L0k+CjxQPgo8REQ+PHA+VGhlIGJhc2Ugb2YgdGhlIGNvbnRleHQgYXR0cmlidXRlcyBrZXkgdW5kZXIgd2hpY2ggYW4gYXJyYXkgb2YKIDxjb2RlPlBsdWdJbjwvY29kZT4gaW5zdGFuY2VzIHdpbGwgYmUgc3RvcmVkLiAgVGhpcwogd2lsbCBiZSBzdWZmaXhlZCB3aXRoIHRoZSBhY3R1YWwgbW9kdWxlIHByZWZpeCAoaW5jbHVkaW5nIHRoZQogbGVhZGluZyAiLyIgY2hhcmFjdGVyKSB0byBmb3JtIHRoZSBhY3R1YWwgYXR0cmlidXRlcyBrZXkuPC9wPgo8UD4KPERMPgo8RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CiAgPEREPlN0cnV0cyAxLjE8L0REPgo8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uLlBMVUdfSU5TX0tFWSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+CjwvREw+CjxIUj4KCjxBIE5BTUU9IlJFUVVFU1RfUFJPQ0VTU09SX0tFWSI+PCEtLSAtLT48L0E+PEgzPgpSRVFVRVNUX1BST0NFU1NPUl9LRVk8L0gzPgo8UFJFPgpwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+UkVRVUVTVF9QUk9DRVNTT1JfS0VZPC9CPjwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2UgR2xvYmFscy5SRVFVRVNUX1BST0NFU1NPUl9LRVkgaW5zdGVhZC48L0k+CjxQPgo8REQ+PHA+VGhlIGJhc2Ugb2YgdGhlIGNvbnRleHQgYXR0cmlidXRlcyBrZXkgdW5kZXIgd2hpY2ggb3VyCiA8Y29kZT5SZXF1ZXN0UHJvY2Vzc29yPC9jb2RlPiBpbnN0YW5jZSB3aWxsIGJlIHN0b3JlZC4gIFRoaXMKIHdpbGwgYmUgc3VmZml4ZWQgd2l0aCB0aGUgYWN0dWFsIG1vZHVsZSBwcmVmaXggKGluY2x1ZGluZyB0aGUKIGxlYWRpbmcgIi8iIGNoYXJhY3RlcikgdG8gZm9ybSB0aGUgYWN0dWFsIGF0dHJpYnV0ZXMga2V5LjwvcD4KPFA+CjxETD4KPERUPjxCPlNpbmNlOjwvQj48L0RUPgogIDxERD5TdHJ1dHMgMS4xPC9ERD4KPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbi5SRVFVRVNUX1BST0NFU1NPUl9LRVkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJTRVJWTEVUX0tFWSI+PCEtLSAtLT48L0E+PEgzPgpTRVJWTEVUX0tFWTwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5TRVJWTEVUX0tFWTwvQj48L1BSRT4KPERMPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIEdsb2JhbHMuU0VSVkxFVF9LRVkgaW5zdGVhZC48L0k+CjxQPgo8REQ+VGhlIGNvbnRleHQgYXR0cmlidXRlcyBrZXkgdW5kZXIgd2hpY2ggd2Ugc3RvcmUgdGhlIG1hcHBpbmcgZGVmaW5lZAogZm9yIG91ciBjb250cm9sbGVyIHNlcmxldCwgd2hpY2ggd2lsbCBiZSBlaXRoZXIgYSBwYXRoLW1hcHBlZCBwYXR0ZXJuCiAoPGNvZGU+L2FjdGlvbi8qPC9jb2RlPikgb3IgYW4gZXh0ZW5zaW9uIG1hcHBlZCBwYXR0ZXJuCiAoPGNvZGU+Ki5kbzwvY29kZT4pLgo8UD4KPERMPgo8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uLlNFUlZMRVRfS0VZIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iVFJBTlNBQ1RJT05fVE9LRU5fS0VZIj48IS0tIC0tPjwvQT48SDM+ClRSQU5TQUNUSU9OX1RPS0VOX0tFWTwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5UUkFOU0FDVElPTl9UT0tFTl9LRVk8L0I+PC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSBHbG9iYWxzLlRSQU5TQUNUSU9OX1RPS0VOX0tFWSBpbnN0ZWFkLjwvST4KPFA+CjxERD5UaGUgc2Vzc2lvbiBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCBvdXIgdHJhbnNhY3Rpb24gdG9rZW4gaXMKIHN0b3JlZCwgaWYgaXQgaXMgdXNlZC4KPFA+CjxETD4KPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbi5UUkFOU0FDVElPTl9UT0tFTl9LRVkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJ0b2tlbiI+PCEtLSAtLT48L0E+PEgzPgp0b2tlbjwvSDM+CjxQUkU+CnByaXZhdGUgc3RhdGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvVG9rZW5Qcm9jZXNzb3IuaHRtbCI+VG9rZW5Qcm9jZXNzb3I8L0E+IDxCPnRva2VuPC9CPjwvUFJFPgo8REw+CjxERD5BbiBpbnN0YW5jZSBvZiBUb2tlblByb2Nlc3NvciB0byB1c2UgZm9yIHRva2VuIGZ1bmN0aW9uYWxpdHkuCjxQPgo8REw+CjwvREw+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImRlZmF1bHRMb2NhbGUiPjwhLS0gLS0+PC9BPjxIMz4KZGVmYXVsdExvY2FsZTwvSDM+CjxQUkU+CnByb3RlY3RlZCBzdGF0aWMgamF2YS51dGlsLkxvY2FsZSA8Qj5kZWZhdWx0TG9jYWxlPC9CPjwvUFJFPgo8REw+CjxERD5UaGUgc3lzdGVtIGRlZmF1bHQgTG9jYWxlLgo8UD4KPERMPgo8L0RMPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJzZXJ2bGV0Ij48IS0tIC0tPjwvQT48SDM+CnNlcnZsZXQ8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4gPEI+c2VydmxldDwvQj48L1BSRT4KPERMPgo8REQ+VGhlIGNvbnRyb2xsZXIgc2VydmxldCB0byB3aGljaCB3ZSBhcmUgYXR0YWNoZWQuCjxQPgo8REw+CjwvREw+CjwvREw+Cgo8IS0tID09PT09PT09PSBDT05TVFJVQ1RPUiBERVRBSUwgPT09PT09PT0gLS0+Cgo8QSBOQU1FPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPgo8Qj5Db25zdHJ1Y3RvciBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+Cgo8QSBOQU1FPSJBY3Rpb24oKSI+PCEtLSAtLT48L0E+PEgzPgpBY3Rpb248L0gzPgo8UFJFPgpwdWJsaWMgPEI+QWN0aW9uPC9CPigpPC9QUkU+CjxETD4KPC9ETD4KCjwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KCjxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPgo8Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1REPgo8L1RSPgo8L1RBQkxFPgoKPEEgTkFNRT0iZ2V0U2VydmxldCgpIj48IS0tIC0tPjwvQT48SDM+CmdldFNlcnZsZXQ8L0gzPgo8UFJFPgpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4gPEI+Z2V0U2VydmxldDwvQj4oKTwvUFJFPgo8REw+CjxERD5SZXR1cm4gdGhlIGNvbnRyb2xsZXIgc2VydmxldCBpbnN0YW5jZSB0byB3aGljaCB3ZSBhcmUgYXR0YWNoZWQuCjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJzZXRTZXJ2bGV0KG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25TZXJ2bGV0KSI+PCEtLSAtLT48L0E+PEgzPgpzZXRTZXJ2bGV0PC9IMz4KPFBSRT4KcHVibGljIHZvaWQgPEI+c2V0U2VydmxldDwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4mbmJzcDtzZXJ2bGV0KTwvUFJFPgo8REw+CjxERD5TZXQgdGhlIGNvbnRyb2xsZXIgc2VydmxldCBpbnN0YW5jZSB0byB3aGljaCB3ZSBhcmUgYXR0YWNoZWQgKGlmCiA8Y29kZT5zZXJ2bGV0PC9jb2RlPiBpcyBub24tbnVsbCksIG9yIHJlbGVhc2UgYW55IGFsbG9jYXRlZCByZXNvdXJjZXMKIChpZiA8Y29kZT5zZXJ2bGV0PC9jb2RlPiBpcyBudWxsKS4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+c2VydmxldDwvQ09ERT4gLSBUaGUgbmV3IGNvbnRyb2xsZXIgc2VydmxldCwgaWYgYW55PC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iZXhlY3V0ZShvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZywgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm0sIGphdmF4LnNlcnZsZXQuU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuU2VydmxldFJlc3BvbnNlKSI+PCEtLSAtLT48L0E+PEgzPgpleGVjdXRlPC9IMz4KPFBSRT4KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkLmh0bWwiPkFjdGlvbkZvcndhcmQ8L0E+IDxCPmV4ZWN1dGU8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+Jm5ic3A7bWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sIj5BY3Rpb25Gb3JtPC9BPiZuYnNwO2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5TZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5TZXJ2bGV0UmVzcG9uc2UmbmJzcDtyZXNwb25zZSkKICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uPC9QUkU+CjxETD4KPEREPlByb2Nlc3MgdGhlIHNwZWNpZmllZCBub24tSFRUUCByZXF1ZXN0LCBhbmQgY3JlYXRlIHRoZQogY29ycmVzcG9uZGluZyBub24tSFRUUCByZXNwb25zZSAob3IgZm9yd2FyZCB0byBhbm90aGVyIHdlYgogY29tcG9uZW50IHRoYXQgd2lsbCBjcmVhdGUgaXQpLCB3aXRoIHByb3Zpc2lvbiBmb3IgaGFuZGxpbmcKIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHRoZSBidXNpbmVzcyBsb2dpYy4KIFJldHVybiBhbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sIj48Q09ERT5BY3Rpb25Gb3J3YXJkPC9DT0RFPjwvQT4gaW5zdGFuY2UgZGVzY3JpYmluZyB3aGVyZSBhbmQgaG93CiBjb250cm9sIHNob3VsZCBiZSBmb3J3YXJkZWQsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZSByZXNwb25zZSBoYXMKIGFscmVhZHkgYmVlbiBjb21wbGV0ZWQuCiA8cD4KIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGF0dGVtcHRzIHRvIGZvcndhcmQgdG8gdGhlIEhUVFAKIHZlcnNpb24gb2YgdGhpcyBtZXRob2QuCjxQPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm1hcHBpbmc8L0NPREU+IC0gVGhlIEFjdGlvbk1hcHBpbmcgdXNlZCB0byBzZWxlY3QgdGhpcyBpbnN0YW5jZTxERD48Q09ERT5mb3JtPC9DT0RFPiAtIFRoZSBvcHRpb25hbCBBY3Rpb25Gb3JtIGJlYW4gZm9yIHRoaXMgcmVxdWVzdCAoaWYgYW55KTxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIFRoZSBub24tSFRUUCByZXF1ZXN0IHdlIGFyZSBwcm9jZXNzaW5nPEREPjxDT0RFPnJlc3BvbnNlPC9DT0RFPiAtIFRoZSBub24tSFRUUCByZXNwb25zZSB3ZSBhcmUgY3JlYXRpbmcKPERUPjxCPlRocm93czo8L0I+CjxERD48Q09ERT5qYXZhLmxhbmcuRXhjZXB0aW9uPC9DT0RFPiAtIGlmIHRoZSBhcHBsaWNhdGlvbiBidXNpbmVzcyBsb2dpYyB0aHJvd3MKICBhbiBleGNlcHRpb248RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CiAgPEREPlN0cnV0cyAxLjE8L0REPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJleGVjdXRlKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9ybSwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj48IS0tIC0tPjwvQT48SDM+CmV4ZWN1dGU8L0gzPgo8UFJFPgpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCI+QWN0aW9uRm9yd2FyZDwvQT4gPEI+ZXhlY3V0ZTwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4mbmJzcDttYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtLmh0bWwiPkFjdGlvbkZvcm08L0E+Jm5ic3A7Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSZuYnNwO3Jlc3BvbnNlKQogICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb248L1BSRT4KPERMPgo8REQ+UHJvY2VzcyB0aGUgc3BlY2lmaWVkIEhUVFAgcmVxdWVzdCwgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBIVFRQCiByZXNwb25zZSAob3IgZm9yd2FyZCB0byBhbm90aGVyIHdlYiBjb21wb25lbnQgdGhhdCB3aWxsIGNyZWF0ZSBpdCksCiB3aXRoIHByb3Zpc2lvbiBmb3IgaGFuZGxpbmcgZXhjZXB0aW9ucyB0aHJvd24gYnkgdGhlIGJ1c2luZXNzIGxvZ2ljLgogUmV0dXJuIGFuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkLmh0bWwiPjxDT0RFPkFjdGlvbkZvcndhcmQ8L0NPREU+PC9BPiBpbnN0YW5jZSBkZXNjcmliaW5nIHdoZXJlIGFuZCBob3cKIGNvbnRyb2wgc2hvdWxkIGJlIGZvcndhcmRlZCwgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlIHJlc3BvbnNlCiBoYXMgYWxyZWFkeSBiZWVuIGNvbXBsZXRlZC4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bWFwcGluZzwvQ09ERT4gLSBUaGUgQWN0aW9uTWFwcGluZyB1c2VkIHRvIHNlbGVjdCB0aGlzIGluc3RhbmNlPEREPjxDT0RFPmZvcm08L0NPREU+IC0gVGhlIG9wdGlvbmFsIEFjdGlvbkZvcm0gYmVhbiBmb3IgdGhpcyByZXF1ZXN0IChpZiBhbnkpPEREPjxDT0RFPnJlcXVlc3Q8L0NPREU+IC0gVGhlIEhUVFAgcmVxdWVzdCB3ZSBhcmUgcHJvY2Vzc2luZzxERD48Q09ERT5yZXNwb25zZTwvQ09ERT4gLSBUaGUgSFRUUCByZXNwb25zZSB3ZSBhcmUgY3JlYXRpbmcKPERUPjxCPlRocm93czo8L0I+CjxERD48Q09ERT5qYXZhLmxhbmcuRXhjZXB0aW9uPC9DT0RFPiAtIGlmIHRoZSBhcHBsaWNhdGlvbiBidXNpbmVzcyBsb2dpYyB0aHJvd3MKICBhbiBleGNlcHRpb248RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CiAgPEREPlN0cnV0cyAxLjE8L0REPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJwZXJmb3JtKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9ybSwgamF2YXguc2VydmxldC5TZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5TZXJ2bGV0UmVzcG9uc2UpIj48IS0tIC0tPjwvQT48SDM+CnBlcmZvcm08L0gzPgo8UFJFPgpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCI+QWN0aW9uRm9yd2FyZDwvQT4gPEI+cGVyZm9ybTwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4mbmJzcDttYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtLmh0bWwiPkFjdGlvbkZvcm08L0E+Jm5ic3A7Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXNwb25zZSZuYnNwO3Jlc3BvbnNlKQogICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIGphdmEuaW8uSU9FeGNlcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5TZXJ2bGV0RXhjZXB0aW9uPC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSB0aGUgPGNvZGU+ZXhlY3V0ZSgpPC9jb2RlPiBtZXRob2QgaW5zdGVhZDwvST4KPFA+CjxERD5Qcm9jZXNzIHRoZSBzcGVjaWZpZWQgbm9uLUhUVFAgcmVxdWVzdCwgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZwogbm9uLUhUVFAgcmVzcG9uc2UgKG9yIGZvcndhcmQgdG8gYW5vdGhlciB3ZWIgY29tcG9uZW50IHRoYXQgd2lsbCBjcmVhdGUKIGl0KS4gIFJldHVybiBhbiA8Y29kZT5BY3Rpb25Gb3J3YXJkPC9jb2RlPiBpbnN0YW5jZSBkZXNjcmliaW5nIHdoZXJlCiBhbmQgaG93IGNvbnRyb2wgc2hvdWxkIGJlIGZvcndhcmRlZCwgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlCiByZXNwb25zZSBoYXMgYWxyZWFkeSBiZWVuIGNvbXBsZXRlZC4KIDxwPgogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gYXR0ZW1wdHMgdG8gZm9yd2FyZCB0byB0aGUgSFRUUCB2ZXJzaW9uIG9mCiB0aGlzIG1ldGhvZC4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bWFwcGluZzwvQ09ERT4gLSBUaGUgQWN0aW9uTWFwcGluZyB1c2VkIHRvIHNlbGVjdCB0aGlzIGluc3RhbmNlPEREPjxDT0RFPmZvcm08L0NPREU+IC0gVGhlIG9wdGlvbmFsIEFjdGlvbkZvcm0gYmVhbiBmb3IgdGhpcyByZXF1ZXN0IChpZiBhbnkpPEREPjxDT0RFPnJlcXVlc3Q8L0NPREU+IC0gVGhlIG5vbi1IVFRQIHJlcXVlc3Qgd2UgYXJlIHByb2Nlc3Npbmc8REQ+PENPREU+cmVzcG9uc2U8L0NPREU+IC0gVGhlIG5vbi1IVFRQIHJlc3BvbnNlIHdlIGFyZSBjcmVhdGluZwo8RFQ+PEI+VGhyb3dzOjwvQj4KPEREPjxDT0RFPmphdmEuaW8uSU9FeGNlcHRpb248L0NPREU+IC0gaWYgYW4gaW5wdXQvb3V0cHV0IGVycm9yIG9jY3Vycwo8REQ+PENPREU+amF2YXguc2VydmxldC5TZXJ2bGV0RXhjZXB0aW9uPC9DT0RFPiAtIGlmIGEgc2VydmxldCBleGNlcHRpb24gb2NjdXJzPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0icGVyZm9ybShvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZywgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm0sIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PCEtLSAtLT48L0E+PEgzPgpwZXJmb3JtPC9IMz4KPFBSRT4KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkLmh0bWwiPkFjdGlvbkZvcndhcmQ8L0E+IDxCPnBlcmZvcm08L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+Jm5ic3A7bWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sIj5BY3Rpb25Gb3JtPC9BPiZuYnNwO2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UmbmJzcDtyZXNwb25zZSkKICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBqYXZhLmlvLklPRXhjZXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmF4LnNlcnZsZXQuU2VydmxldEV4Y2VwdGlvbjwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2UgdGhlIDxjb2RlPmV4ZWN1dGUoKTwvY29kZT4gbWV0aG9kIGluc3RlYWQ8L0k+CjxQPgo8REQ+UHJvY2VzcyB0aGUgc3BlY2lmaWVkIEhUVFAgcmVxdWVzdCwgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBIVFRQCiByZXNwb25zZSAob3IgZm9yd2FyZCB0byBhbm90aGVyIHdlYiBjb21wb25lbnQgdGhhdCB3aWxsIGNyZWF0ZSBpdCkuCiBSZXR1cm4gYW4gPGNvZGU+QWN0aW9uRm9yd2FyZDwvY29kZT4gaW5zdGFuY2UgZGVzY3JpYmluZyB3aGVyZSBhbmQgaG93CiBjb250cm9sIHNob3VsZCBiZSBmb3J3YXJkZWQsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZSByZXNwb25zZSBoYXMKIGFscmVhZHkgYmVlbiBjb21wbGV0ZWQuCjxQPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm1hcHBpbmc8L0NPREU+IC0gVGhlIEFjdGlvbk1hcHBpbmcgdXNlZCB0byBzZWxlY3QgdGhpcyBpbnN0YW5jZTxERD48Q09ERT5mb3JtPC9DT0RFPiAtIFRoZSBvcHRpb25hbCBBY3Rpb25Gb3JtIGJlYW4gZm9yIHRoaXMgcmVxdWVzdCAoaWYgYW55KTxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIFRoZSBIVFRQIHJlcXVlc3Qgd2UgYXJlIHByb2Nlc3Npbmc8REQ+PENPREU+cmVzcG9uc2U8L0NPREU+IC0gVGhlIEhUVFAgcmVzcG9uc2Ugd2UgYXJlIGNyZWF0aW5nCjxEVD48Qj5UaHJvd3M6PC9CPgo8REQ+PENPREU+amF2YS5pby5JT0V4Y2VwdGlvbjwvQ09ERT4gLSBpZiBhbiBpbnB1dC9vdXRwdXQgZXJyb3Igb2NjdXJzCjxERD48Q09ERT5qYXZheC5zZXJ2bGV0LlNlcnZsZXRFeGNlcHRpb248L0NPREU+IC0gaWYgYSBzZXJ2bGV0IGV4Y2VwdGlvbiBvY2N1cnM8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJnZW5lcmF0ZVRva2VuKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48IS0tIC0tPjwvQT48SDM+CmdlbmVyYXRlVG9rZW48L0gzPgo8UFJFPgpwcm90ZWN0ZWQgamF2YS5sYW5nLlN0cmluZyA8Qj5nZW5lcmF0ZVRva2VuPC9CPihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L1BSRT4KPERMPgo8REQ+R2VuZXJhdGUgYSBuZXcgdHJhbnNhY3Rpb24gdG9rZW4sIHRvIGJlIHVzZWQgZm9yIGVuZm9yY2luZyBhIHNpbmdsZQogcmVxdWVzdCBmb3IgYSBwYXJ0aWN1bGFyIHRyYW5zYWN0aW9uLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIFRoZSByZXF1ZXN0IHdlIGFyZSBwcm9jZXNzaW5nPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iZ2V0RGF0YVNvdXJjZShqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PCEtLSAtLT48L0E+PEgzPgpnZXREYXRhU291cmNlPC9IMz4KPFBSRT4KcHJvdGVjdGVkIGphdmF4LnNxbC5EYXRhU291cmNlIDxCPmdldERhdGFTb3VyY2U8L0I+KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0KTwvUFJFPgo8REw+CjxERD5SZXR1cm4gdGhlIGRlZmF1bHQgZGF0YSBzb3VyY2UgZm9yIHRoZSBjdXJyZW50IG1vZHVsZS4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cmVxdWVzdDwvQ09ERT4gLSBUaGUgc2VydmxldCByZXF1ZXN0IHdlIGFyZSBwcm9jZXNzaW5nPERUPjxCPlNpbmNlOjwvQj48L0RUPgogIDxERD5TdHJ1dHMgMS4xPC9ERD4KPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iZ2V0RGF0YVNvdXJjZShqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgpnZXREYXRhU291cmNlPC9IMz4KPFBSRT4KcHJvdGVjdGVkIGphdmF4LnNxbC5EYXRhU291cmNlIDxCPmdldERhdGFTb3VyY2U8L0I+KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7a2V5KTwvUFJFPgo8REw+CjxERD5SZXR1cm4gdGhlIHNwZWNpZmllZCBkYXRhIHNvdXJjZSBmb3IgdGhlIGN1cnJlbnQgbW9kdWxlLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIFRoZSBzZXJ2bGV0IHJlcXVlc3Qgd2UgYXJlIHByb2Nlc3Npbmc8REQ+PENPREU+a2V5PC9DT0RFPiAtIFRoZSBrZXkgc3BlY2lmaWVkIGluIHRoZQogIDxjb2RlPiZsdDttZXNzYWdlLXJlc291cmNlcyZndDs8L2NvZGU+IGVsZW1lbnQgZm9yIHRoZQogIHJlcXVlc3RlZCBidW5kbGU8RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CiAgPEREPlN0cnV0cyAxLjE8L0REPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJnZXRMb2NhbGUoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjwhLS0gLS0+PC9BPjxIMz4KZ2V0TG9jYWxlPC9IMz4KPFBSRT4KcHJvdGVjdGVkIGphdmEudXRpbC5Mb2NhbGUgPEI+Z2V0TG9jYWxlPC9CPihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L1BSRT4KPERMPgo8REQ+UmV0dXJuIHRoZSB1c2VyJ3MgY3VycmVudGx5IHNlbGVjdGVkIExvY2FsZS4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cmVxdWVzdDwvQ09ERT4gLSBUaGUgcmVxdWVzdCB3ZSBhcmUgcHJvY2Vzc2luZzwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImdldFJlc291cmNlcygpIj48IS0tIC0tPjwvQT48SDM+CmdldFJlc291cmNlczwvSDM+CjxQUkU+CnByb3RlY3RlZCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4gPEI+Z2V0UmVzb3VyY2VzPC9CPigpPC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlRoaXMgbWV0aG9kIGNhbiBvbmx5IHJldHVybiB0aGUgcmVzb3VyY2VzIGZvciB0aGUgZGVmYXVsdAogIG1vZHVsZS4gIFVzZSBnZXRSZXNvdXJjZXMoSHR0cFNlcnZsZXRSZXF1ZXN0KSB0byBnZXQgdGhlCiAgcmVzb3VyY2VzIGZvciB0aGUgY3VycmVudCBtb2R1bGUuPC9JPgo8UD4KPEREPlJldHVybiB0aGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoZSBkZWZhdWx0IG1vZHVsZS4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImdldFJlc291cmNlcyhqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PCEtLSAtLT48L0E+PEgzPgpnZXRSZXNvdXJjZXM8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXM8L0E+IDxCPmdldFJlc291cmNlczwvQj4oamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9QUkU+CjxETD4KPEREPlJldHVybiB0aGUgZGVmYXVsdCBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhlIGN1cnJlbnQgbW9kdWxlLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIFRoZSBzZXJ2bGV0IHJlcXVlc3Qgd2UgYXJlIHByb2Nlc3Npbmc8RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CiAgPEREPlN0cnV0cyAxLjE8L0REPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJnZXRSZXNvdXJjZXMoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KZ2V0UmVzb3VyY2VzPC9IMz4KPFBSRT4KcHJvdGVjdGVkIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzPC9BPiA8Qj5nZXRSZXNvdXJjZXM8L0I+KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2tleSk8L1BSRT4KPERMPgo8REQ+UmV0dXJuIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoZSBjdXJyZW50IG1vZHVsZS4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cmVxdWVzdDwvQ09ERT4gLSBUaGUgc2VydmxldCByZXF1ZXN0IHdlIGFyZSBwcm9jZXNzaW5nPEREPjxDT0RFPmtleTwvQ09ERT4gLSBUaGUga2V5IHNwZWNpZmllZCBpbiB0aGUKICA8Y29kZT4mbHQ7bWVzc2FnZS1yZXNvdXJjZXMmZ3Q7PC9jb2RlPiBlbGVtZW50IGZvciB0aGUKICByZXF1ZXN0ZWQgYnVuZGxlPERUPjxCPlNpbmNlOjwvQj48L0RUPgogIDxERD5TdHJ1dHMgMS4xPC9ERD4KPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iaXNDYW5jZWxsZWQoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjwhLS0gLS0+PC9BPjxIMz4KaXNDYW5jZWxsZWQ8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgYm9vbGVhbiA8Qj5pc0NhbmNlbGxlZDwvQj4oamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9QUkU+CjxETD4KPEREPjxwPlJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGN1cnJlbnQgZm9ybSdzIGNhbmNlbCBidXR0b24gd2FzCiBwcmVzc2VkLiAgVGhpcyBtZXRob2Qgd2lsbCBjaGVjayBpZiB0aGUgPGNvZGU+R2xvYmFscy5DQU5DRUxfS0VZPC9jb2RlPgogcmVxdWVzdCBhdHRyaWJ1dGUgaGFzIGJlZW4gc2V0LCB3aGljaCBub3JtYWxseSBvY2N1cnMgaWYgdGhlIGNhbmNlbAogYnV0dG9uIGdlbmVyYXRlZCBieSA8c3Ryb25nPkNhbmNlbFRhZzwvc3Ryb25nPiB3YXMgcHJlc3NlZCBieSB0aGUgdXNlcgogaW4gdGhlIGN1cnJlbnQgcmVxdWVzdC4gIElmIDxjb2RlPnRydWU8L2NvZGU+LCB2YWxpZGF0aW9uIHBlcmZvcm1lZAogYnkgYW4gPHN0cm9uZz5BY3Rpb25Gb3JtPC9zdHJvbmc+J3MgPGNvZGU+dmFsaWRhdGUoKTwvY29kZT4gbWV0aG9kCiB3aWxsIGhhdmUgYmVlbiBza2lwcGVkIGJ5IHRoZSBjb250cm9sbGVyIHNlcnZsZXQuPC9wPgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIFRoZSBzZXJ2bGV0IHJlcXVlc3Qgd2UgYXJlIHByb2Nlc3Npbmc8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DYW5jZWxUYWcuaHRtbCI+PENPREU+Q2FuY2VsVGFnPC9DT0RFPjwvQT48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJpc1Rva2VuVmFsaWQoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjwhLS0gLS0+PC9BPjxIMz4KaXNUb2tlblZhbGlkPC9IMz4KPFBSRT4KcHJvdGVjdGVkIGJvb2xlYW4gPEI+aXNUb2tlblZhbGlkPC9CPihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L1BSRT4KPERMPgo8REQ+UmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZXJlIGlzIGEgdHJhbnNhY3Rpb24gdG9rZW4gc3RvcmVkIGluCiB0aGUgdXNlcidzIGN1cnJlbnQgc2Vzc2lvbiwgYW5kIHRoZSB2YWx1ZSBzdWJtaXR0ZWQgYXMgYSByZXF1ZXN0CiBwYXJhbWV0ZXIgd2l0aCB0aGlzIGFjdGlvbiBtYXRjaGVzIGl0LiAgUmV0dXJucyA8Y29kZT5mYWxzZTwvY29kZT4KIHVuZGVyIGFueSBvZiB0aGUgZm9sbG93aW5nIGNpcmN1bXN0YW5jZXM6CiA8dWw+CiA8bGk+Tm8gc2Vzc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0PC9saT4KIDxsaT5ObyB0cmFuc2FjdGlvbiB0b2tlbiBzYXZlZCBpbiB0aGUgc2Vzc2lvbjwvbGk+CiA8bGk+Tm8gdHJhbnNhY3Rpb24gdG9rZW4gaW5jbHVkZWQgYXMgYSByZXF1ZXN0IHBhcmFtZXRlcjwvbGk+CiA8bGk+VGhlIGluY2x1ZGVkIHRyYW5zYWN0aW9uIHRva2VuIHZhbHVlIGRvZXMgbm90IG1hdGNoIHRoZQogICAgIHRyYW5zYWN0aW9uIHRva2VuIGluIHRoZSB1c2VyJ3Mgc2Vzc2lvbjwvbGk+CiA8L3VsPgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIFRoZSBzZXJ2bGV0IHJlcXVlc3Qgd2UgYXJlIHByb2Nlc3Npbmc8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJpc1Rva2VuVmFsaWQoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4KaXNUb2tlblZhbGlkPC9IMz4KPFBSRT4KcHJvdGVjdGVkIGJvb2xlYW4gPEI+aXNUb2tlblZhbGlkPC9CPihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDtyZXNldCk8L1BSRT4KPERMPgo8REQ+UmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZXJlIGlzIGEgdHJhbnNhY3Rpb24gdG9rZW4gc3RvcmVkIGluCiB0aGUgdXNlcidzIGN1cnJlbnQgc2Vzc2lvbiwgYW5kIHRoZSB2YWx1ZSBzdWJtaXR0ZWQgYXMgYSByZXF1ZXN0CiBwYXJhbWV0ZXIgd2l0aCB0aGlzIGFjdGlvbiBtYXRjaGVzIGl0LiAgUmV0dXJucyA8Y29kZT5mYWxzZTwvY29kZT4KIDx1bD4KIDxsaT5ObyBzZXNzaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3Q8L2xpPgogPGxpPk5vIHRyYW5zYWN0aW9uIHRva2VuIHNhdmVkIGluIHRoZSBzZXNzaW9uPC9saT4KIDxsaT5ObyB0cmFuc2FjdGlvbiB0b2tlbiBpbmNsdWRlZCBhcyBhIHJlcXVlc3QgcGFyYW1ldGVyPC9saT4KIDxsaT5UaGUgaW5jbHVkZWQgdHJhbnNhY3Rpb24gdG9rZW4gdmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlCiAgICAgdHJhbnNhY3Rpb24gdG9rZW4gaW4gdGhlIHVzZXIncyBzZXNzaW9uPC9saT4KIDwvdWw+CjxQPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnJlcXVlc3Q8L0NPREU+IC0gVGhlIHNlcnZsZXQgcmVxdWVzdCB3ZSBhcmUgcHJvY2Vzc2luZzxERD48Q09ERT5yZXNldDwvQ09ERT4gLSBTaG91bGQgd2UgcmVzZXQgdGhlIHRva2VuIGFmdGVyIGNoZWNraW5nIGl0PzwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InJlc2V0VG9rZW4oamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjwhLS0gLS0+PC9BPjxIMz4KcmVzZXRUb2tlbjwvSDM+CjxQUkU+CnByb3RlY3RlZCB2b2lkIDxCPnJlc2V0VG9rZW48L0I+KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0KTwvUFJFPgo8REw+CjxERD5SZXNldCB0aGUgc2F2ZWQgdHJhbnNhY3Rpb24gdG9rZW4gaW4gdGhlIHVzZXIncyBzZXNzaW9uLiAgVGhpcwogaW5kaWNhdGVzIHRoYXQgdHJhbnNhY3Rpb25hbCB0b2tlbiBjaGVja2luZyB3aWxsIG5vdCBiZSBuZWVkZWQKIG9uIHRoZSBuZXh0IHJlcXVlc3QgdGhhdCBpcyBzdWJtaXR0ZWQuCjxQPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnJlcXVlc3Q8L0NPREU+IC0gVGhlIHNlcnZsZXQgcmVxdWVzdCB3ZSBhcmUgcHJvY2Vzc2luZzwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InNhdmVFcnJvcnMoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycykiPjwhLS0gLS0+PC9BPjxIMz4Kc2F2ZUVycm9yczwvSDM+CjxQUkU+CnByb3RlY3RlZCB2b2lkIDxCPnNhdmVFcnJvcnM8L0I+KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPiZuYnNwO2Vycm9ycyk8L1BSRT4KPERMPgo8REQ+U2F2ZSB0aGUgc3BlY2lmaWVkIGVycm9yIG1lc3NhZ2VzIGtleXMgaW50byB0aGUgYXBwcm9wcmlhdGUgcmVxdWVzdAogYXR0cmlidXRlIGZvciB1c2UgYnkgdGhlICZsdDtodG1sOmVycm9ycyZndDsgdGFnLCBpZiBhbnkgbWVzc2FnZXMKIGFyZSByZXF1aXJlZC4gIE90aGVyd2lzZSwgZW5zdXJlIHRoYXQgdGhlIHJlcXVlc3QgYXR0cmlidXRlIGlzIG5vdAogY3JlYXRlZC4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cmVxdWVzdDwvQ09ERT4gLSBUaGUgc2VydmxldCByZXF1ZXN0IHdlIGFyZSBwcm9jZXNzaW5nPEREPjxDT0RFPmVycm9yczwvQ09ERT4gLSBFcnJvciBtZXNzYWdlcyBvYmplY3Q8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJzYXZlTWVzc2FnZXMoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1lc3NhZ2VzKSI+PCEtLSAtLT48L0E+PEgzPgpzYXZlTWVzc2FnZXM8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgdm9pZCA8Qj5zYXZlTWVzc2FnZXM8L0I+KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1lc3NhZ2VzLmh0bWwiPkFjdGlvbk1lc3NhZ2VzPC9BPiZuYnNwO21lc3NhZ2VzKTwvUFJFPgo8REw+CjxERD5TYXZlIHRoZSBzcGVjaWZpZWQgbWVzc2FnZXMga2V5cyBpbnRvIHRoZSBhcHByb3ByaWF0ZSByZXF1ZXN0CiBhdHRyaWJ1dGUgZm9yIHVzZSBieSB0aGUgJmx0O2h0bWw6bWVzc2FnZXMmZ3Q7IHRhZyAoaWYKIG1lc3NhZ2VzPSJ0cnVlIiBpcyBzZXQpLCBpZiBhbnkgbWVzc2FnZXMgYXJlIHJlcXVpcmVkLiAgT3RoZXJ3aXNlLAogZW5zdXJlIHRoYXQgdGhlIHJlcXVlc3QgYXR0cmlidXRlIGlzIG5vdCBjcmVhdGVkLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIFRoZSBzZXJ2bGV0IHJlcXVlc3Qgd2UgYXJlIHByb2Nlc3Npbmc8REQ+PENPREU+bWVzc2FnZXM8L0NPREU+IC0gTWVzc2FnZXMgb2JqZWN0PERUPjxCPlNpbmNlOjwvQj48L0RUPgogIDxERD5TdHJ1dHMgMS4xPC9ERD4KPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0ic2F2ZVRva2VuKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48IS0tIC0tPjwvQT48SDM+CnNhdmVUb2tlbjwvSDM+CjxQUkU+CnByb3RlY3RlZCB2b2lkIDxCPnNhdmVUb2tlbjwvQj4oamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9QUkU+CjxETD4KPEREPlNhdmUgYSBuZXcgdHJhbnNhY3Rpb24gdG9rZW4gaW4gdGhlIHVzZXIncyBjdXJyZW50IHNlc3Npb24sIGNyZWF0aW5nCiBhIG5ldyBzZXNzaW9uIGlmIG5lY2Vzc2FyeS4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cmVxdWVzdDwvQ09ERT4gLSBUaGUgc2VydmxldCByZXF1ZXN0IHdlIGFyZSBwcm9jZXNzaW5nPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0ic2V0TG9jYWxlKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmEudXRpbC5Mb2NhbGUpIj48IS0tIC0tPjwvQT48SDM+CnNldExvY2FsZTwvSDM+CjxQUkU+CnByb3RlY3RlZCB2b2lkIDxCPnNldExvY2FsZTwvQj4oamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuTG9jYWxlJm5ic3A7bG9jYWxlKTwvUFJFPgo8REw+CjxERD5TZXQgdGhlIHVzZXIncyBjdXJyZW50bHkgc2VsZWN0ZWQgTG9jYWxlLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIFRoZSByZXF1ZXN0IHdlIGFyZSBwcm9jZXNzaW5nPEREPjxDT0RFPmxvY2FsZTwvQ09ERT4gLSBUaGUgdXNlcidzIHNlbGVjdGVkIExvY2FsZSB0byBiZSBzZXQsIG9yIG51bGwKICB0byBzZWxlY3QgdGhlIHNlcnZlcidzIGRlZmF1bHQgTG9jYWxlPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0idG9IZXgoYnl0ZVtdKSI+PCEtLSAtLT48L0E+PEgzPgp0b0hleDwvSDM+CjxQUkU+CnByb3RlY3RlZCBqYXZhLmxhbmcuU3RyaW5nIDxCPnRvSGV4PC9CPihieXRlW10mbmJzcDtidWZmZXIpPC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIHJlbGVhc2UgYWZ0ZXIgU3RydXRzIDEuMS48L0k+CjxQPgo8REQ+Q29udmVydCBhIGJ5dGUgYXJyYXkgdG8gYSBTdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzIGFuZCByZXR1cm4gaXQuCjxQPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJ1ZmZlcjwvQ09ERT4gLSBUaGUgYnl0ZSBhcnJheSB0byBiZSBjb252ZXJ0ZWQ8L0RMPgo8L0REPgo8L0RMPgo8IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+CjxIUj4KCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPgo8VFI+CjxURCBDT0xTUEFOPTMgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+CiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9BY3Rpb24uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8L1RSPgo8L1RBQkxFPgo8L1REPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KPC9FTT4KPC9URD4KPC9UUj4KCjxUUj4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KJm5ic3A7UFJFViBDTEFTUyZuYnNwOwombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3IuaHRtbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7CiZuYnNwOzxBIEhSRUY9IkFjdGlvbi5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7CjxTQ1JJUFQ+CiAgPCEtLQogIGlmKHdpbmRvdz09dG9wKSB7CiAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCIgVEFSR0VUPSIiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKICB9CiAgLy8tLT4KPC9TQ1JJUFQ+CjxOT1NDUklQVD4KPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiIFRBUkdFVD0iIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+CjwvTk9TQ1JJUFQ+CjwvRk9OVD48L1REPgo8L1RSPgo8VFI+CjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+CiAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4KCjxIUj4KQ29weXJpZ2h0IKkgMjAwMC0yMDAzIC0gQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KPC9CT0RZPgo8L0hUTUw+Cg==