# Name: smd_query v0.21 # Type: Client side plugin # Generic database access via SQL # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjk6InNtZF9xdWVyeSI7czo2OiJhdXRob3IiO3M6MTE6IlN0 ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nvbi5j b20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC4yMSI7czoxMToiZGVzY3JpcHRpb24iO3M6MzE6 IkdlbmVyaWMgZGF0YWJhc2UgYWNjZXNzIHZpYSBTUUwiO3M6NDoiY29kZSI7czo1NTQwOiJm dW5jdGlvbiBzbWRfcXVlcnkoJGF0dHMsICR0aGluZz0nJykgew0KCWV4dHJhY3QobEF0dHMo YXJyYXkoDQoJCSdjb2x1bW4nID0+ICcnLA0KCQkndGFibGUnID0+ICcnLA0KCQknd2hlcmUn ID0+ICcnLA0KCQkncXVlcnknID0+ICcnLA0KCQknZm9ybScgPT4gJycsDQoJCSdjb2xzZm9y bScgPT4gJycsDQoJCSd1cmxmaWx0ZXInID0+ICcnLA0KCQkndXJscmVwbGFjZScgPT4gJycs DQoJCSdkZWZhdWx0cycgPT4gJycsDQoJCSdkZWxpbScgPT4gJywnLA0KCQkncGFyYW1kZWxp bScgPT4gJzonLA0KCQknc2lsZW50JyA9PiAnMCcsDQoJCSdjb3VudCcgPT4gJ3VwJywNCgkJ J2JyZWFrJyA9PiAnJywNCgkJJ3dyYXB0YWcnID0+ICcnLA0KCQknbGFiZWwnID0+ICcnLA0K CQknbGFiZWx0YWcnID0+ICcnLA0KCQknY2xhc3MnID0+ICcnLA0KCQknZGVidWcnID0+ICcw JywNCgkpLCRhdHRzKSk7DQoNCgkvLyBHcmFiIHRoZSBmb3JtIG9yIGVtYmVkZGVkICR0aGlu Zw0KCSR0aGluZyA9ICgkdGhpbmcpID8gJHRoaW5nIDogZmV0Y2hfZm9ybSgkZm9ybSk7DQoJ JGNvbHNmb3JtID0gKGVtcHR5KCRjb2xzZm9ybSkpID8gJycgOiBmZXRjaF9mb3JtKCRjb2xz Zm9ybSk7DQoNCgkkdXJsZmlsdGVyID0gKCFlbXB0eSgkdXJsZmlsdGVyKSkgPyBkb19saXN0 KCR1cmxmaWx0ZXIsICRkZWxpbSkgOiAnJzsNCgkkdXJscmVwbGFjZSA9ICghZW1wdHkoJHVy bHJlcGxhY2UpKSA/IGRvX2xpc3QoJHVybHJlcGxhY2UsICRkZWxpbSkgOiAnJzsNCglpZiAo JGRlYnVnID4gMCkgew0KCQllY2hvICIrKyBVUkwgRklMVEVSUyArKyI7DQoJCWRtcCgkdXJs ZmlsdGVyKTsNCgkJZG1wKCR1cmxyZXBsYWNlKTsNCgl9DQoNCgkvLyBQcm9jZXNzIGFueSBk ZWZhdWx0cw0KCSRkZWZhdWx0cyA9IGRvX2xpc3QoJGRlZmF1bHRzLCAkZGVsaW0pOw0KCSRk Zmx0cyA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJGRlZmF1bHRzIGFzICRpdGVtKSB7DQoJCSRp dGVtID0gZG9fbGlzdCgkaXRlbSwgJHBhcmFtZGVsaW0pOw0KCQlpZiAoJGl0ZW1bMF0gPT0g JycpIGNvbnRpbnVlOw0KCQlpZiAoY291bnQoJGl0ZW0pID09IDIpIHsNCgkJCSRkZmx0c1sk aXRlbVswXV0gPSBzbWRfcXVlcnlfcGFyc2UoJGl0ZW1bMV0pOw0KCQl9DQoJfQ0KDQoJaWYg KCRkZWJ1ZyA+IDApIHsNCgkJZWNobyAiKysgREVGQVVMVFMgKysiOw0KCQlkbXAoJGRmbHRz KTsNCgl9DQoNCgkkcnMgPSBhcnJheSgpOw0KCSRvdXQgPSBhcnJheSgpOw0KCSRjb2xvdXQg PSBhcnJheSgpOw0KDQoJLy8gcXVlcnkgb3ZlcnJpZGVzIGNvbHVtbi90YWJsZS93aGVyZQ0K CWlmICgkcXVlcnkpIHsNCgkJJHF1ZXJ5ID0gc21kX3F1ZXJ5X3BhcnNlKCRxdWVyeSwgJGRm bHRzLCAkdXJsZmlsdGVyLCAkdXJscmVwbGFjZSk7DQoJCSRycyA9ICgkc2lsZW50KSA/IEBn ZXRSb3dzKCRxdWVyeSwgJGRlYnVnKSA6IGdldFJvd3MoJHF1ZXJ5LCAkZGVidWcpOw0KCX0g ZWxzZSB7DQoJCWlmICgkY29sdW1uICYmICR0YWJsZSkgew0KCQkJLy8gVE9ETzogUGVyaGFw cyBkb1NsYXNoKCkgdGhlc2U/DQoJCQkkY29sdW1uID0gc21kX3F1ZXJ5X3BhcnNlKCRjb2x1 bW4sICRkZmx0cywgJHVybGZpbHRlciwgJHVybHJlcGxhY2UpOw0KCQkJJHRhYmxlID0gc21k X3F1ZXJ5X3BhcnNlKCR0YWJsZSwgJGRmbHRzLCAkdXJsZmlsdGVyLCAkdXJscmVwbGFjZSk7 DQoJCQkkd2hlcmUgPSBzbWRfcXVlcnlfcGFyc2UoJHdoZXJlLCAkZGZsdHMsICR1cmxmaWx0 ZXIsICR1cmxyZXBsYWNlKTsNCgkJCSR3aGVyZSA9ICgkd2hlcmUpID8gJHdoZXJlIDogIjE9 MSI7DQoJCQkkcnMgPSAoJHNpbGVudCkgPyBAc2FmZV9yb3dzKCRjb2x1bW4sICR0YWJsZSwg JHdoZXJlLCAkZGVidWcpIDogc2FmZV9yb3dzKCRjb2x1bW4sICR0YWJsZSwgJHdoZXJlLCAk ZGVidWcpOw0KCQl9IGVsc2Ugew0KCQkJdHJpZ2dlcl9lcnJvcigiWW91IG11c3Qgc3BlY2lm eSBhdCBsZWFzdCAxICdjb2x1bW4nIGFuZCBhICd0YWJsZScuIik7DQoJCX0NCgl9DQoNCgkk bnVtcm93cyA9IGNvdW50KCRycyk7DQoJJHRydWVQYXJ0ID0gRXZhbEVsc2UoJHRoaW5nLCAx KTsNCg0KCWlmICgkcnMpIHsNCgkJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJCWVjaG8gIisrIFFV RVJZIFJFU1VMVCBTRVQgKysiOw0KCQkJZG1wKGNvdW50KCRycykuICIgUk9XUyIpOw0KCQkJ ZG1wKCRycyk7DQoJCX0NCgkJJHJlcGxhY2VtZW50cyA9IGFycmF5KCk7DQoJCSRjb2xyZXBs YWNlbWVudHMgPSBhcnJheSgpOw0KCQkkcXJ5X3Jvd2NudCA9ICgkY291bnQ9PSJ1cCIpID8g MCA6ICRudW1yb3dzLTE7DQoJCWZvcmVhY2ggKCRycyBhcyAkcm93KSB7DQoJCQlmb3JlYWNo ICgkcm93IGFzICRjb2xpZCA9PiAkdmFsKSB7DQoJCQkJaWYgKCRxcnlfcm93Y250ID09IDAg JiYgJGNvbHNmb3JtKSB7DQoJCQkJCSRjb2xyZXBsYWNlbWVudHNbJ3snLiRjb2xpZC4nfSdd ID0gJGNvbGlkOw0KCQkJCX0NCgkJCQkvLyBDb25zdHJ1Y3QgdGhlIHJlcGxhY2VtZW50IGFy cmF5DQoJCQkJJHJlcGxhY2VtZW50c1sneycuJGNvbGlkLid9J10gPSAkdmFsOw0KCQkJfQ0K CQkJJHJlcGxhY2VtZW50c1sne3NtZF9yb3dzfSddID0gJG51bXJvd3M7DQoJCQkkcmVwbGFj ZW1lbnRzWyd7c21kX3RoaXNpbmRleH0nXSA9ICRxcnlfcm93Y250Ow0KCQkJJHJlcGxhY2Vt ZW50c1sne3NtZF90aGlzcm93fSddID0gJHFyeV9yb3djbnQgKyAxOw0KCQkJaWYgKCRkZWJ1 ZyA+IDApIHsNCgkJCQllY2hvICIrKyBSRVBMQUNFTUVOVFMgKysiOw0KCQkJCWRtcCgkcmVw bGFjZW1lbnRzKTsNCgkJCX0NCgkJCSRvdXRbXSA9IHBhcnNlKHN0cnRyKCR0cnVlUGFydCwg JHJlcGxhY2VtZW50cykpOw0KCQkJJHFyeV9yb3djbnQgPSAoJGNvdW50PT0idXAiKSA/ICRx cnlfcm93Y250KzEgOiAkcXJ5X3Jvd2NudC0xOw0KCQl9DQoNCgkJaWYgKCRvdXQpIHsNCgkJ CWlmICgkY29scmVwbGFjZW1lbnRzKSB7DQoJCQkJJGNvbG91dFtdID0gcGFyc2Uoc3RydHIo JGNvbHNmb3JtLCAkY29scmVwbGFjZW1lbnRzKSk7DQoJCQl9DQoJCQlyZXR1cm4gZG9MYWJl bCgkbGFiZWwsICRsYWJlbHRhZykuZG9XcmFwKGFycmF5X21lcmdlKCRjb2xvdXQsJG91dCks ICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcyk7DQoJCX0NCgl9IGVsc2Ugew0KCQlyZXR1cm4g cGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAwKSk7DQoJfQ0KCXJldHVybiAnJzsNCn0NCg0KLy8g UmV0dXJucyBhIHN0cmluZyB3aXRoIGFueSA/IHZhcmlhYmxlcyByZXBsYWNlZCB3aXRoIHRo ZWlyIGdsb2JhbHMNCi8vIFVSTCBWYXJpYWJsZXMgYXJlIG9wdGlvbmFsbHkgcnVuIHRocm91 Z2ggcHJlZ19yZXBsYWNlKCkgdG8gc2FuaXRpemUgdGhlbS4NCi8vICAkcGF0IGlzIGFuIGFy cmF5IG9mIHJlZ2V4IHNlYXJjaCBwYXR0ZXJucw0KLy8gICRyZXAgaXMgYW4gYXJyYXkgb2Yg cmVnZXggc2VhcmNoIHJlcGFsY2VtZW50cyAoZGVmYXVsdCA9ICcnLCBpLmUuIHJlbW92ZSB3 aGF0ZXZlciBtYXRjaGVzKQ0KZnVuY3Rpb24gc21kX3F1ZXJ5X3BhcnNlKCRpdGVtLCAkZGZs dHM9YXJyYXkoJycpLCAkcGF0PWFycmF5KCcnKSwgJHJlcD1hcnJheSgnJykpIHsNCglnbG9i YWwgJHByZXRleHQsICR0aGlzYXJ0aWNsZSwgJHRoaXNpbWFnZSwgJHRoaXNmaWxlLCAkdGhp c2xpbmssICR2YXJpYWJsZTsNCg0KCSRpdGVtID0gaHRtbF9lbnRpdHlfZGVjb2RlKCRpdGVt KTsNCgkkbW9kUkUgPSAnLyhcPykoW0EtWmEtejAtOV9cLSBdKykvJzsNCgkkbnVtTW9kcyA9 IHByZWdfbWF0Y2hfYWxsKCRtb2RSRSwgJGl0ZW0sICRtb2RzKTsNCg0KCWZvciAoJG1vZEN0 ciA9IDA7ICRtb2RDdHIgPCAkbnVtTW9kczsgJG1vZEN0cisrKSB7DQoJCSRtb2RDaGFyID0g JG1vZHNbMV1bJG1vZEN0cl07DQoJCSRtb2RJdGVtID0gdHJpbSgkbW9kc1syXVskbW9kQ3Ry XSk7DQoJCSRsb3dpdGVtID0gc3RydG9sb3dlcigkbW9kSXRlbSk7DQoJCSR1cmx2YXIgPSAk c3ZydmFyID0gJyc7DQoNCgkJaWYgKGdwcygkbG93aXRlbSkgIT0gJycpIHsNCgkJCSR1cmx2 YXIgPSBkb1NsYXNoKGdwcygkbG93aXRlbSkpOw0KCQkJaWYgKCR1cmx2YXIgJiYgJHBhdCkg ew0KCQkJCSR1cmx2YXIgPSBwcmVnX3JlcGxhY2UoJHBhdCwgJHJlcCwgJHVybHZhcik7DQoJ CQl9DQoJCX0NCgkJaWYgKHNlcnZlclNldCgkbW9kSXRlbSkgIT0gJycpIHsNCgkJCSRzdnJ2 YXIgPSBkb1NsYXNoKHNlcnZlclNldCgkbW9kSXRlbSkpOw0KCQkJaWYgKCRzdnJ2YXIgJiYg JHBhdCkgew0KCQkJCSRzdnJ2YXIgPSBwcmVnX3JlcGxhY2UoJHBhdCwgJHJlcCwgJHN2cnZh cik7DQoJCQl9DQoJCX0NCg0KCQlpZiAoaXNzZXQoJHZhcmlhYmxlWyRsb3dpdGVtXSkpIHsN CgkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICR2YXJpYWJsZVsk bG93aXRlbV0sICRpdGVtKTsNCgkJfSBlbHNlIGlmICgkc3ZydmFyICE9ICcnKSB7DQoJCQkk aXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkc3ZydmFyLCAkaXRlbSk7 DQoJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNpbWFnZVskbG93aXRlbV0pICYmICFlbXB0eSgk dGhpc2ltYWdlWyRsb3dpdGVtXSkpIHsNCgkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENo YXIuJG1vZEl0ZW0sICR0aGlzaW1hZ2VbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCX0gZWxzZSBp ZiAoaXNzZXQoJHRoaXNmaWxlWyRsb3dpdGVtXSkgJiYgIWVtcHR5KCR0aGlzZmlsZVskbG93 aXRlbV0pKSB7DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAk dGhpc2ZpbGVbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNs aW5rWyRsb3dpdGVtXSkgJiYgIWVtcHR5KCR0aGlzbGlua1skbG93aXRlbV0pKSB7DQoJCQkk aXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkdGhpc2xpbmtbJGxvd2l0 ZW1dLCAkaXRlbSk7DQoJCX0gZWxzZSBpZiAoYXJyYXlfa2V5X2V4aXN0cygkbG93aXRlbSwg JHByZXRleHQpICYmICFlbXB0eSgkcHJldGV4dFskbG93aXRlbV0pKSB7DQoJCQkkaXRlbSA9 IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkcHJldGV4dFskbG93aXRlbV0sICRp dGVtKTsNCgkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2FydGljbGVbJGxvd2l0ZW1dKSAmJiAh ZW1wdHkoJHRoaXNhcnRpY2xlWyRsb3dpdGVtXSkpIHsNCgkJCSRpdGVtID0gc3RyX3JlcGxh Y2UoJG1vZENoYXIuJG1vZEl0ZW0sICR0aGlzYXJ0aWNsZVskbG93aXRlbV0sICRpdGVtKTsN CgkJfSBlbHNlIGlmICgkdXJsdmFyICE9ICcnKSB7DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNl KCRtb2RDaGFyLiRtb2RJdGVtLCAkdXJsdmFyLCAkaXRlbSk7DQoJCX0gZWxzZSBpZiAoaXNz ZXQoJGRmbHRzWyRsb3dpdGVtXSkpIHsNCgkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENo YXIuJG1vZEl0ZW0sICRkZmx0c1skbG93aXRlbV0sICRpdGVtKTsNCgkJfSBlbHNlIHsNCgkJ CSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICRtb2RJdGVtLCAkaXRl bSk7DQoJCX0NCgl9DQoJcmV0dXJuICRpdGVtOw0KfSI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6 NToib3JkZXIiO3M6MToiNSI7czo0OiJoZWxwIjtzOjI0NTQzOiIJPHA+PGRpdiBpZD0ic21k X2hlbHAiPjwvcD4KCgk8aDE+c21kX3F1ZXJ5PC9oMT4KCgk8cD5UaGUgbGF6aWVzdCB0YWcg ZXZlciEgQWxsb3dzIHlvdSB0byBtYWtlIGFkLWhvYyBxdWVyaWVzIHRvIHRoZSBkYXRhYmFz ZSBhbmQgcHJvY2VzcyB0aGUgcmVzdWx0cywgcm93IGJ5IHJvdywgaW4gYSBmb3JtIG9yIGNv bnRhaW5lci48L3A+CgoJPGgyPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPlN1cHBvcnRz IHNpbXBsZSBxdWVyaWVzIHdpdGggYSByZWR1Y2VkIHN5bnRheCAoPHNwYW4gY2xhc3M9ImNh cHMiPlNFTEVDVDwvc3Bhbj4gY29scyA8c3BhbiBjbGFzcz0iY2FwcyI+RlJPTTwvc3Bhbj4g dGFibGUgPHNwYW4gY2xhc3M9ImNhcHMiPldIRVJFPC9zcGFuPiBjbGF1c2UpIG9yIHlvdXIg b3duIGN1c3RvbSBxdWVyaWVzPC9saT4KCQk8bGk+UmVhZCBpbmZvcm1hdGlvbiBmcm9tIGFu eSBwYXJ0IG9mIHRoZSBjdXJyZW50IGFydGljbGUsIGltYWdlIChwbGFubmVkKSwgZmlsZSwg bGluaywgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4gb3IgPHNwYW4gY2xh c3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluZS4gSWYgYW55IGZpZWxkcyBhcmUgbWlzc2luZyB5 b3UgY2FuIHNwZWNpZnkgYSBkZWZhdWx0IHZhbHVlPC9saT4KCQk8bGk+T3B0aW9uYWxseSBm aWx0ZXIgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGlucHV0IHVzaW5nIHJl Z3VsYXIgZXhwcmVzc2lvbnMsIGZvciBzYWZldHk8L2xpPgoJCTxsaT5FYWNoIHJvdyBjYW4g YmUgcGFzc2VkIHRvIGEgZm9ybSAob3IgdGhlIHBsdWdpbiBjYW4gYmUgdXNlZCBhcyBhIGNv bnRhaW5lciB0YWcgd2l0aCBvciB3aXRob3V0IDxjb2RlPiZsdDt0eHA6ZWxzZSAvJmd0Ozwv Y29kZT4pIHRvIGRpc3BsYXkgdGhlIHJlc3VsdHM8L2xpPgoJCTxsaT5Db2x1bW4gaGVhZGlu Z3MgbWF5IGJlIG91dHB1dCB1c2luZyBhIHNlY29uZCBmb3JtPC9saT4KCQk8bGk+TWF5IGRl c3Ryb3kgeW91ciBkYXRhYmFzZSBpZiB1c2VkIHdyb25nbHkuIEJhY2t1cCwgYmFja3VwIGJh Y2t1cCYjODIzMDs8L2xpPgoJPC91bD4KCgk8aDI+QXV0aG9yPC9oMj4KCgk8cD48YSBocmVm PSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVudEZvcm0iPlN0ZWYgRGF3c29uPC9hPjwv cD4KCgk8aDI+SW5zdGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwPkRvd25s b2FkIHRoZSBwbHVnaW4gZnJvbSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJu Lm9yZy9wbHVnaW5zLzk3Ni9zbWRfcXVlcnkiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRo ZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+ LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1 Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92 aWV3dG9waWMucGhwP2lkPTI3Mjc5Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8g b3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2lu LjwvcD4KCgk8cD5Vbmluc3RhbGwgYnkgc2ltcGx5IGRlbGV0aW5nIHRoZSBwbHVnaW4gZnJv bSB0aGUgQWRtaW4tJmd0O1BsdWdpbnMgcGFuZS48L3A+CgoJPGgyPlVzYWdlPC9oMj4KCgk8 cD5Vc2UgdGhlIHRhZyBpbiBhbnkgcGFnZSwgZm9ybSwgYXJ0aWNsZSwgZmlsZSwgbGluaywg ZXRjIGNvbnRleHQgdG8gZ3JhYiBzdHVmZiBmcm9tIHRoZSBkYXRhYmFzZS48L3A+CgoJPGgz IGNsYXNzPSJ0YWciPnNtZF9xdWVyeTwvaDM+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5P cGVyYXRlcyBpbiB0d28gbW9kZXM6IHNpbXBsZSBtb2RlIGp1c3QgYWxsb3dzIDxjb2RlPlNF TEVDVCBzdHVmZiBGUk9NIHRhYmxlIFdIRVJFIGNsYXVzZTwvY29kZT4uIEJ5IHVzaW5nIHRo ZSA8Y29kZT5xdWVyeTwvY29kZT4gYXR0cmlidXRlIHlvdSBzd2l0Y2ggdGhlIHBsdWdpbiB0 byBjb21wbGV4IG1vZGUgYW5kIHlvdSBjYW4gZGVzaWduIHlvdXIgb3duIHF1ZXJ5LiBJdCBj YW4gaW5jbHVkZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q09VTlQ8L3NwYW4+ICgqKSwgam9pbnMs IGFueXRoaW5nOyBwZXJoYXBzIGV2ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPklOU0VSVDwvc3Bh bj4gYW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5VUERBVEU8L3NwYW4+ICg/KSBhbHRob3VnaCBp dCYjODIxNztzIHVudGVzdGVkIGFuZCBsaWFibGUgdG8gZmxvb2RpbmcuPC9wPgoKCTxoNCBj bGFzcz0iYXR0cyAiIGlkPSJhdHRyaWJ1dGVzIj5BdHRyaWJ1dGVzPC9oND4KCgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj5jb2x1bW48L3NwYW4+IDogKHNp bXBsZSBtb2RlKSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb2x1bW5zIHRvIHJldHJpZXZl IGZyb20gdGhlIGRhdGFiYXNlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+dGFibGU8 L3NwYW4+IDogKHNpbXBsZSBtb2RlKSBuYW1lIG9mIHRoZSB0YWJsZSB0byByZXRyaWV2ZSB0 aGUgY29sdW1ucyBmcm9tICh5ZXMsIG5vbi08c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiB0YWJsZXMgYXJlIGFsc28gc3VwcG9ydGVkIGlmIHRoZXkgYXJlIGluIHRoZSBzYW1lIGRh dGFiYXNlIDotKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPndoZXJlPC9zcGFuPiA6 IChzaW1wbGUgbW9kZSkgYW55IGV4dHJhIGNsYXVzZSB5b3Ugd2lzaCB0byBzcGVjaWZ5LiBE ZWZhdWx0cyB0byAmIzgyMjA7dGhlIHdob2xlIGRhcm4gdGFibGUmIzgyMjE7PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0biI+cXVlcnk8L3NwYW4+IDogKGNvbXBsZXggbW9kZSkgYW55 IHF1ZXJ5IHlvdSBsaWtlIGNhbiBiZSB1c2VkIGhlcmUuIE92ZXJyaWRlcyA8Y29kZT5jb2x1 bW48L2NvZGU+LCA8Y29kZT50YWJsZTwvY29kZT4gYW5kIDxjb2RlPndoZXJlPC9jb2RlPjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPmZvcm08L3NwYW4+IDogdGhlIGZvcm0gdG8g dXNlIHRvIHBhcnNlIGVhY2ggcmV0dXJuZWQgcm93LiBTZWUgPGEgaHJlZj0iI3JlcGxhY2Vt ZW50cyI+cmVwbGFjZW1lbnRzPC9hPi4gSWYgbm90IHNwZWNpZmllZCwgdGhlIHBsdWdpbiB3 aWxsIHVzZSBhbnl0aGluZyBjb250YWluZWQgYmV0d2VlbiBpdHMgb3BlbmluZyBhbmQgY2xv c2luZyB0YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj5jb2xzZm9ybTwvc3Bhbj4g OiBzZWNvbmQgZm9ybSB0byBwYXJzZSBhbnkgaGVhZGVyIHJvdyBjb250YWluaW5nIGNvbHVt biBuYW1lcyAob2YgbGltaXRlZCB1c2UpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+ dXJsZmlsdGVyPC9zcGFuPiA6IGZpbHRlciA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiBpbnB1dCB3aXRoIHRoaXMgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zIChlYWNoIHNl cGFyYXRlZCBieSA8Y29kZT5kZWxpbTwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0biI+dXJscmVwbGFjZTwvc3Bhbj4gOiByZXBsYWNlIGVhY2ggZmlsdGVyZWQgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gZWxlbWVudCBsaXN0ZWQgaW4gPGNvZGU+dXJsZmls dGVyPC9jb2RlPiB3aXRoIHRoaXMgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zIChlYWNo IHNlcGFyYXRlZCBieSA8Y29kZT5kZWxpbTwvY29kZT4pLiBJZiBub3QgdXNlZCwgYW55dGhp bmcgbWF0Y2hpbmcgPGNvZGU+dXJsZmlsdGVyPC9jb2RlPiB3aWxsIGJlIHJlbW92ZWQgZnJv bSBhbnkgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGVzLiBTZWUgPGEg aHJlZj0iI2ZpbHRlcmluZyI+RmlsdGVyaW5nIGFuZCBpbmplY3Rpb248L2E+PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0biI+ZGVmYXVsdHM8L3NwYW4+IDogY29tbWEgc2VwYXJhdGVk IGxpc3Qgb2YgdmFsdWVzIHRvIHVzZSBpbiB0aGUgZXZlbnQgc29tZSBmaWVsZCB5b3Ugc3Bl Y2lmaWVkIGRvZXNuJiM4MjE3O3QgZXhpc3QuIEVhY2ggZGVmYXVsdCBzaG91bGQgYmUgZ2l2 ZW4gYXMgPGNvZGU+bmFtZTogdmFsdWU8L2NvZGU+ICh0aGUgPGNvZGU+OjwvY29kZT4gaXMg Y29uZmlndXJhYmxlIHZpYSB0aGUgPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4gYXR0cmlidXRl KS4gRm9yIGV4YW1wbGUgPGNvZGU+ZGVmYXVsdHM9JnF1b3Q7aWQ6IDEsIG15X2NhdDogbWFt bWFscywgdXNlcl9zZWM6ID9kZWZzZWMmcXVvdDs8L2NvZGU+IHdvdWxkIG1lYW4gdGhhdCBp ZiB0aGUgPGNvZGU+aWQ8L2NvZGU+IGZpZWxkIHdhcyBibGFuaywgdGhlIG51bWJlciAxIHdv dWxkIGJlIHVzZWQ7IGlmIHRoZSB2YXJpYWJsZSA8Y29kZT5teV9jYXQ8L2NvZGU+IHdhcyBl bXB0eSwgdGhlIHdvcmQgPGNvZGU+bWFtbWFsczwvY29kZT4gd291bGQgYmUgdXNlZDsgYW5k IGlmIHRoZSA8Y29kZT51c2VyX3NlYzwvY29kZT4gdmFyaWFibGUgd2FzIGVtcHR5LCB1c2Ug dGhlIGRlZmF1bHQgdmFsdWUgYXMgZm91bmQgaW4gdGhlIHZhcmlhYmxlIDxjb2RlPmRlZnNl YzwvY29kZT4gKHdoaWNoIGNvdWxkIGhhdmUgYmVlbiBzZXQgdmlhIGEgPGNvZGU+Jmx0O3R4 cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4gZWFybGllciBpbiB0aGUgcGFnZSk8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRuIj5kZWxpbTwvc3Bhbj4gOiB0aGUgZGVsaW1pdGVyIHRvIHVz ZSBiZXR3ZWVuIHBhdHRlcm5zIGluIDxjb2RlPnVybGZpbHRlcjwvY29kZT4gYW5kIDxjb2Rl PnVybHJlcGxhY2U8L2NvZGU+LiBEZWZhdWx0OiBjb21tYSAoPGNvZGU+LDwvY29kZT4pPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+cGFyYW1kZWxpbTwvc3Bhbj4gOiB0aGUgZGVs aW1pdGVyIHRvIHVzZSBiZXR3ZWVuIG5hbWUtdmFsdWUgcGFpcnMgaW4gPGNvZGU+ZGVmYXVs dHM8L2NvZGU+LiBEZWZhdWx0OiBjb2xvbiAoPGNvZGU+OjwvY29kZT4pPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0biI+c2lsZW50PC9zcGFuPiA6IGlmIHlvdXIgcXVlcnkgY29udGFp bnMgYW4gZXJyb3IgKHdyb25nIGNvbHVtbiBuYW1lIG9yIHNvbWUgbWFsZm9ybWVkIGlucHV0 KSwgdGhlIHBsdWdpbiB3aWxsIGlzc3VlIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gZXJyb3IgbWVzc2FnZS4gVXNpbmcgPGNvZGU+c2lsZW50PSZxdW90OzEmcXVvdDs8L2Nv ZGU+IHdpbGwgYXR0ZW1wdCB0byBoaWRlIHRoaXMgZXJyb3IgbWVzc2FnZTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG4iPmNvdW50PC9zcGFuPiA6IENhbiBiZSBlaXRoZXIgJiM4MjIw O3VwJiM4MjIxOyAodGhlIGRlZmF1bHQpIG9yICYjODIyMDtkb3duJiM4MjIxOy4gU2VlIDxh IGhyZWY9IiNyZXBsYWNlbWVudHMiPntzbWRfdGhpc3Jvd308L2E+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0biI+bGFiZWw8L3NwYW4+IDogbGFiZWwgdG8gZGlzcGxheSBhYm92ZSB0 aGUgZW50aXJlIG91dHB1dDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPmxhYmVsdGFn PC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCB0aGUgbGFiZWwgd2l0aC4g U3BlY2lmeSBpdCB3aXRob3V0IGFuZ2xlIGJyYWNrZXRzIChlLmcuIDxjb2RlPmxhYmVsdGFn PSZxdW90O2gzJnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj53 cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCB0aGUgZW50aXJl IG91dHB1dCAoZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O3RhYmxlJnF1b3Q7PC9jb2RlPik8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj5icmVhazwvc3Bhbj4gOiBlYWNoIHJvdyB3 aWxsIGJlIHdyYXBwZWQgd2l0aCB0aGlzIHRhZyAoZS5nLiA8Y29kZT5icmVhaz0mcXVvdDt0 ciZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+Y2xhc3M8L3Nw YW4+IDogPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0byBhcHBs eSB0byBlYWNoIHJvdzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPmRlYnVnPC9zcGFu PiA6IHNldCB0byAxIHRvIHNob3cgc29tZSBkZWJ1ZyBvdXRwdXQ7IHVzZSAyIHRvIHNob3cg YSBiaXQgbW9yZSBkZXRhaWw8L2xpPgoJPC91bD4KCgk8cD5UaGUgYXR0cmlidXRlcyA8Y29k ZT5xdWVyeTwvY29kZT4sIDxjb2RlPmNvbHVtbjwvY29kZT4sIDxjb2RlPnRhYmxlPC9jb2Rl PiBhbmQgPGNvZGU+d2hlcmU8L2NvZGU+IGNhbiBjb250YWluIHJlcGxhY2VtZW50cyB0aGVt c2VsdmVzIHRvIHJlYWQgdmFsdWVzIGZyb20gdGhlIGN1cnJlbnQgYXJ0aWNsZS4gU3BlY2lm eSB0aGUgZmllbGQgbmFtZSB3aXRoIGEgPGNvZGU+PzwvY29kZT4gaW4gZnJvbnQgb2YgaXQg KGUuZy4gPGNvZGU+cXVlcnk9JnF1b3Q7U0VMRUNUICogRlJPTSB0eHBfaW1hZ2UgV0hFUkUg Y2F0ZWdvcnk9JiMzOTs/Y2F0ZWdvcnkxJiMzOTsgT1IgY2F0ZWdvcnk9JiMzOTs/Y2F0ZWdv cnkyJiMzOTs8L2NvZGU+KSB3b3VsZCBzaG93IGltYWdlcyB0aGF0IGhhZCB0aGVpciBjYXRl Z29yeSBzZXQgdG8gb25lIG9mIHRoZSBhcnRpY2xlJiM4MjE3O3MgY2F0ZWdvcmllcy48L3A+ CgoJPHA+VGhlICYjODIxNjs/JiM4MjE3OyBmaWVsZHMgY2FuIGJlIGFueSBpdGVtIGZyb20g dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHVuaXZlcnNlLCBpbmNsdWRpbmcg YW55dGhpbmcgc2V0IGluIGEgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4g b3Igc29tZSB1c2VyLWlucHV0IG9uIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiBhZGRyZXNzIGJhci4gRmllbGRzIGFyZSBwcm9jZXNzZWQgaW4gdGhlIGZvbGxvd2luZyBv cmRlcjsgYXMgc29vbiBhcyBhIG1hdGNoaW5nIGVudHJ5IGlzIGZvdW5kLCB0aGUgcmVzdCBh cmUgbm90IGNoZWNrZWQ6PC9wPgoKCTxwPjxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8 L2NvZGU+IC0mZ3Q7IDxjb2RlPiRfU0VSVkVSPC9jb2RlPiB2YXIgLSZndDsgaW1hZ2UgLSZn dDsgZmlsZSAtJmd0OyBsaW5rIC0mZ3Q7IGdsb2JhbCBhcnRpY2xlIC0mZ3Q7IGN1cnJlbnQg YXJ0aWNsZSAtJmd0OyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXIgLSZndDsg ZGVmYXVsdCB2YWx1ZSAtJmd0OyB2ZXJiYXRpbSAod2l0aG91dCAmIzgyMTY7PyYjODIxNzsp PC9wPgoKCTxwPlRoaXMgaGllcmFyY2h5IGFsbG93cyBzb21lIGRlZ3JlZSBvZiBzYWZldHk6 IHNpbmNlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHZhcmlhYmxlcyBhcmUgdWx0 aW1hdGVseSBzZXQgYnkgeW91LCB0aGV5IGFyZSBjaGVja2VkIGZpcnN0LCB0aGVuIGdyYWR1 YWxseSBsZXNzIHNwZWNpZmljIHN0dWZmIGlzIGNoZWNrZWQgdW50aWwgPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGVzIGFyZSBjb25zaWRlcmVkIGF0IHRoZSBib3R0 b20gb2YgdGhlIGZvb2QgY2hhaW4uPC9wPgoKCTxoMiBjbGFzcz0iYXR0cyAiIGlkPSJyZXBs YWNlbWVudHMiPlJlcGxhY2VtZW50IHRhZ3M8L2gyPgoKCTxwPkluIHlvdXIgb3V0cHV0IGZv cm0geW91IG1heSBzcGVjaWZ5IGFueSBjb2x1bW4gbmFtZSBzdXJyb3VuZGVkIHdpdGggPGNv ZGU+e308L2NvZGU+IGNoYXJhY3RlcnMgdG8gZGlzcGxheSB0aGF0IGZpZWxkLiBTbyBpZiB5 b3VyIHF1ZXJ5IHdhcyA8Y29kZT5TRUxFQ1QgaWQsIG5hbWUsIGNhdGVnb3J5IEZST00gdHhw X2ltYWdlIFdIRVJFIGV4dD0mcXVvdDsuanBnJnF1b3Q7PC9jb2RlPiB5b3Ugd291bGQgaGF2 ZSB0aGUgZm9sbG93aW5nIHJlcGxhY2VtZW50cyBhdmFpbGFibGU6PC9wPgoKCTx1bD4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0biI+e2lkfTwvc3Bhbj4gOiB0aGUgaW1hZ2UgSUQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRuIj57bmFtZX08L3NwYW4+IDogdGhlIGltYWdlIGZpbGVu YW1lPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+e2NhdGVnb3J5fTwvc3Bhbj4gOiB0 aGUgaW1hZ2UgY2F0ZWdvcnk8L2xpPgoJPC91bD4KCgk8cD5KdXN0IHB1dCB0aG9zZSBuYW1l cyBpbnRvIHlvdXIgPGNvZGU+Zm9ybTwvY29kZT4gYW1vbmcgb3RoZXIgbm9ybWFsIDxzcGFu IGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBvciA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9z cGFuPiB0YWdzLCBhbmQgdGhlIHJlbGV2YW50IHZhbHVlIGZyb20gdGhhdCByb3cgd2lsbCBi ZSBkaXNwbGF5ZWQuIFRoZSByZXBsYWNlbWVudHMgaG9ub3VyIGFueSA8Y29kZT5BUzwvY29k ZT4gc3RhdGVtZW50IHlvdSBtYXkgZW1wbG95IHRvIHJlbmFtZSB0aGVtLjwvcD4KCgk8cD5J biBhZGRpdGlvbiwgdGhlcmUgYXJlIHRocmVlIHJlcGxhY2VtZW50cyBhZGRlZCB0byBlYWNo IHJvdzo8L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj57c21kX3Jvd3N9PC9z cGFuPiA6IHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyBpbiB0aGUgcmVzdWx0IHNldDwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPntzbWRfdGhpc3Jvd308L3NwYW4+IDogdGhlIGN1 cnJlbnQgcm93IG51bWJlcjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPntzbWRfdGhp c2luZGV4fTwvc3Bhbj4gOiB0aGUgY3VycmVudCByb3cgbnVtYmVyICh6ZXJvLWJhc2VkKTwv bGk+Cgk8L3VsPgoKCTxwPlRoZXNlIGFyZSB1c2VmdWwgZm9yIHRhYmxlcyB0byBzaG93IHJv dyBudW1iZXJzLCBidXQgY2FuIGFsc28gYmUgdXNlZCBmb3IgcGFnaW5hdGlvbiBvciBjYW4g YmUgdGVzdGVkIHdpdGggc21kX2lmIHRvIHRha2UgYWN0aW9uIGZyb20gd2l0aGluIHlvdXIg Zm9ybS4gPGNvZGU+e3NtZF90aGlzcm93fTwvY29kZT4gYW5kIDxjb2RlPntzbWRfdGhpc2lu ZGV4fTwvY29kZT4gY291bnQgdXAgb3IgZG93biBkZXBlbmRpbmcgb24gdGhlIDxjb2RlPmNv dW50PC9jb2RlPiBhdHRyaWJ1dGUuPC9wPgoKCTxoMiBpZD0iZmlsdGVyaW5nIj5GaWx0ZXJp bmcgYW5kIGluamVjdGlvbjwvaDI+CgoJPHA+QWZ0ZXIgZ3JlYXQgZGVsaWJlcmF0aW9uLCBh Y2Nlc3MgdG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUgaGFzIGJl ZW4gZ3JhbnRlZCBzbyB5b3UgbWF5IGVtcGxveSB1c2VyLWVudGVyZWQgZGF0YSBpbiB5b3Vy IHF1ZXJpZXMsIGFsbG93aW5nIGNvbXBsZXRlIGZsZXhpYmlsaXR5IGZvciB5b3VyIHVzZXIg YmFzZS4gSG93ZXZlciwgYXMgUGV0ZXIgUGFya2VyJiM4MjE3O3MgY29uc2NpZW5jZSBtaWdo dCBzYXk6PC9wPgoKCTxibG9ja3F1b3RlPgoJCTxwPldpdGggZ3JlYXQgcG93ZXIgY29tZXMg Z3JlYXQgcmVzcG9uc2liaWxpdHk8L3A+Cgk8L2Jsb2NrcXVvdGU+CgoJPHA+Tm90IGV2ZXJ5 Ym9keSBvdXQgdGhlcmUgaXMgdHJ1c3R3b3J0aHkgc28gaGVlZCB0aGlzIHdhcm5pbmc6IDxz dHJvbmc+QXNzdW1lIDxzcGFuIGNsYXNzPSJjYXBzIj5BTEw8L3NwYW4+IHVzZXIgaW5wdXQg aXMgdGFpbnRlZCBieSBkZWZhdWx0PC9zdHJvbmc+LiBDaGVjayBldmVyeXRoaW5nLiBJZiB5 b3Ugd2FudCB0byBrbm93IG1vcmUgYWJvdXQgd2hhdCBwZW9wbGUgY2FuIGRvIHdpdGggYWNj ZXNzIHRvIG9uZSBzaW1wbGUgcG9ydGlvbiBvZiB5b3VyIDxzcGFuIGNsYXNzPSJjYXBzIj5T UUw8L3NwYW4+IHF1ZXJ5LCBHb29nbGUgZm9yICYjODIxNjs8c3BhbiBjbGFzcz0iY2FwcyI+ U1FMPC9zcGFuPiBpbmplY3Rpb24mIzgyMTc7LjwvcD4KCgk8cD5Gb3IgdGhvc2Ugc3RpbGwg cmVhZGluZywgdGhlIGdvb2QgbmV3cyBpcyB0aGF0IHRoZSBwbHVnaW4gZG9lcyBldmVyeXRo aW5nIGl0IGNhbiB0byBwcmUtZmlsdGVyIHN0dWZmIG9uIHRoZSA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPiBsaW5lIGJlZm9yZSBpdCBnZXRzIHRvIHRoZSBxdWVyeS4gVGhpcyBz aG91bGQgbWFrZSB5b3VyIHVzZXIgaW5wdXQgc2FmZSBlbm91Z2gsIGJ1dCBmb3IgdGhlIHBh cmFub2lkIChvciBzZW5zaWJsZSkgdGhlcmUgYXJlIHR3byBhdHRyaWJ1dGVzIHlvdSBjYW4g dXNlIHRvIGNsYW1wIGRvd24gYWxsb3dhYmxlIHVzZXIgaW5wdXQuIElmIHlvdSBrbm93IGFu eXRoaW5nIGFib3V0IDxhIGhyZWY9Imh0dHA6Ly93d3cucmVndWxhci1leHByZXNzaW9ucy5p bmZvL3F1aWNrc3RhcnQuaHRtbCI+cmVndWxhciBleHByZXNzaW9uczwvYT4gb3IgYXJlIGZh bWlsaWFyIHdpdGggdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IGZ1bmN0aW9u IDxhIGhyZWY9Imh0dHA6Ly91azIucGhwLm5ldC9wcmVnX3JlcGxhY2UiPnByZWdfcmVwbGFj ZSgpPC9hPiB0aGVuIHlvdSYjODIxNztsbCBiZSByaWdodCBhdCBob21lIGJlY2F1c2UsIHB1 dCBzaW1wbHksIHlvdSBjYW4gb3B0aW9uYWxseSBwYXNzIGV2ZXJ5IDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIHRocm91Z2ggaXQgdG8gcmVtb3ZlIHN0dWZmIHlv dSBkb24mIzgyMTc7dCB3YW50LjwvcD4KCgk8aDMgaWQ9InVybGZpbHRlciI+dXJsZmlsdGVy PC9oMz4KCgk8cD5UaGlzIHRha2VzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgKGF0IGxlYXN0 IGJ5IGRlZmF1bHQ7IG92ZXJyaWRlIHRoZSBjb21tYSB3aXRoIHRoZSA8Y29kZT5kZWxpbTwv Y29kZT4gYXR0cmlidXRlIGlmIHlvdSBuZWVkIHRvIHVzZSBjb21tYXMgaW4geW91ciBmaWx0 ZXIgc3RyaW5ncykgb2YgY29tcGxldGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm5zIHRo YXQgeW91IHdpc2ggdG8gc2VhcmNoIGZvciwgaW4gZXZlcnkgPHNwYW4gY2xhc3M9ImNhcHMi PlVSTDwvc3Bhbj4gdmFyaWFibGUuIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudGVkIHRvIGVu c3VyZSB0aGF0IHlvdXIgdXNlcnMgb25seSBlbnRlcmVkIGRpZ2l0cyB5b3UgY291bGQgc3Bl Y2lmeSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PnVybGZpbHRlcj0mcXVvdDsvW15cZF0rLyZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+QnJp ZWZseSwgdGhlIHN0YXJ0aW5nIGFuZCB0cmFpbGluZyA8Y29kZT4vPC9jb2RlPiBtYXJrcyBk ZWxpbWl0IGEgcmVndWxhciBleHByZXNzaW9uICYjODIxMjsgdGhleSBtdXN0IGFsd2F5cyBi ZSBwcmVzZW50LiBUaGUgc3F1YXJlIGJyYWNrZXRzIGRlbm90ZSBhIGdyb3VwIG9mIGNoYXJh Y3RlcnMsIHRoZSBjaXJjdW1mbGV4IG5lZ2F0ZXMgdGhlIGdyb3VwLCB0aGUgPGNvZGU+XGQ8 L2NvZGU+IG1lYW5zICYjODIyMDthbnkgZGlnaXQmIzgyMjE7IGFuZCB0aGUgPGNvZGU+Kzwv Y29kZT4gc3BlY2lmaWVzIHRoYXQgeW91IHdhbnQgaXQgdG8gY2hlY2sgZm9yIG9uZSBvciBt b3JlIG9mIHRoZSBwcmVjZWRpbmcgdGhpbmdzLiBJbiBvdGhlciB3b3JkcywgbG9vayBmb3Ig YW55dGhpbmcgaW4gdGhlIGlucHV0IHRoYXQgaXMgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gb25l IG9yIG1vcmUgZGlnaXRzLiBUaGF0IHdvdWxkIG1hdGNoIGFueSBsZXR0ZXJzLCBxdW90ZXMs IHNwZWNpYWwgY2hhcmFjdGVycywgYW55dGhpbmcgYXQgYWxsIHRoYXQgd2FzbiYjODIxNzt0 IGEgemVybyB0byBuaW5lLjwvcD4KCgk8cD5Zb3UgY2FuIHNwZWNpZnkgbW9yZSB0aGFuIG9u ZSBmaWx0ZXIgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPnVybGZpbHRlcj0mcXVvdDsvXGQvLCAvXHMvJnF1b3Q7CjwvY29kZT48L3By ZT4KCgk8cD5UaGF0IHdvdWxkIGxvb2sgZm9yIGFueSBzaW5nbGUgZGlnaXQgYW5kIGFueSBz aW5nbGUgc3BhY2UgY2hhcmFjdGVyLiBUaGF0JiM4MjE3O3MgYSBzaW1wbGUgZXhhbXBsZSBh bmQgeW91IGNvdWxkIGRvIGl0IGFsbCBpbiBvbmUgcmVnZXgsIGJ1dCBzcGxpdHRpbmcgdGhl bSB1cCBjYW4gaGVscCB5b3UgZmlsdGVyIHN0dWZmIGJldHRlciAoc2VlIDxhIGhyZWY9IiN1 cmxyZXBsYWNlIj51cmxyZXBsYWNlPC9hPiBmb3IgYW4gZXhhbXBsZSkuPC9wPgoKCTxwPkJ5 IGRlZmF1bHQsIGlmIHlvdSBqdXN0IHNwZWNpZnkgPGNvZGU+dXJsZmlsdGVyPC9jb2RlPiB3 aXRob3V0IDxjb2RlPnVybHJlcGxhY2U8L2NvZGU+LCBhbnl0aGluZyB0aGF0IG1hdGNoZXMg eW91ciBmaWx0ZXIgcGF0dGVybnMgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIHVzZXIgaW5w dXQuPC9wPgoKCTxoMyBpZD0idXJscmVwbGFjZSI+dXJscmVwbGFjZTwvaDM+CgoJPHA+VGhl IG90aGVyIGhhbGYgb2YgdGhlIGZpbHRlcmluZyBqaWdzYXcgYWxsb3dzIHlvdSB0byBub3Qg anVzdCByZW1vdmUgYW55dGhpbmcgdGhhdCBtYXRjaGVzLCBidXQgYWN0dWFsbHkgcmVwbGFj ZSBpdCB3aXRoIHNvbWV0aGluZyBlbHNlLiBTcGVjaWZ5IGEgZml4ZWQgc3RyaW5nLCBhIGxp c3Qgb2YgZml4ZWQgc3RyaW5ncyBvciBtb3JlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IHBhdHRlcm5zIHRvIHJlcGxhY2Ugd2hhdGV2ZXIgbWF0Y2hlcyB5b3VyIDxjb2RlPnVy bGZpbHRlcjwvY29kZT4uIFVzaW5nIHRoZSBmaXJzdCBmaWx0ZXIgZXhhbXBsZSBmcm9tIGFi b3ZlLCB5b3UgY291bGQgcmVwbGFjZSBhbnl0aGluZyB0aGF0IGlzIG5vdCBhIGRpZ2l0IHdp dGggYSBoeXBoZW4gYnkgc3BlY2lmeWluZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj51cmxyZXBsYWNlPSZxdW90Oy0mcXVvdDsKPC9jb2RlPjwvcHJl PgoKCTxwPlNvIGlmIHlvdSBhbGxvd2VkIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gdmFyaWFibGUgY2FsbGVkIDxjb2RlPmRpZ2l0czwvY29kZT4gYW5kIGEgc2l0ZSB2aXNp dG9yIGVudGVyZWQgPGNvZGU+P2RpZ2l0cz1aYXBob2QgNCBUcmlsbGlhbjwvY29kZT4sIHlv dXIgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgd291bGQgYmVjb21l OiA8Y29kZT4tLS0tLS0tNC0tLS0tLS0tPC9jb2RlPi4gTm90IG11Y2ggdXNlLCBidXQgaGV5 LCBpdCYjODIxNztzIGFuIGV4YW1wbGUhPC9wPgoKCTxwPkFzIHdpdGggPGNvZGU+dXJsZmls dGVyPC9jb2RlPiB5b3UgY2FuIHNwZWNpZnkgbW9yZSB0aGFuIG9uZSByZXBsYWNlbWVudCBh bmQgdGhleSB3aWxsIHBhaXIgdXAgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIGZpbHRlci4g SW4gb3RoZXIgd29yZHMsIGlmIHlvdSB0YWtlIHRoZSBzZWNvbmQgZmlsdGVyIGFib3ZlICg8 Y29kZT51cmxmaWx0ZXI9JnF1b3Q7L1xkLywgL1xzLyZxdW90OzwvY29kZT4pIGFuZCB1c2Vk IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+dXJs cmVwbGFjZT0mcXVvdDssIC0mcXVvdDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZW4gYW55IGRp Z2l0IGluIHlvdXIgdXNlciBpbnB1dCB3b3VsZCBiZSByZW1vdmVkICh0aGVyZSBpcyBub3Ro aW5nIGJlZm9yZSB0aGUgY29tbWEpIGFuZCBhbnkgc3BhY2UgY2hhcmFjdGVyIHdvdWxkIGJl IHJlcGxhY2VkIHdpdGggYSBoeXBoZW4uPC9wPgoKCTxwPklmIGF0IGFueSB0aW1lIGEgZmll bGQgZ2l2ZXMgYW4gZW1wdHkgcmVzdWx0IChpLmUuIGl0IHRvdGFsbHkgZmFpbHMgYW55IDxj b2RlPnVybGZpbHRlcjwvY29kZT4gdGVzdHMgb3Igc2ltcGx5IHJldHVybnMgbm90aGluZyBi ZWNhdXNlIGl0IGhhcyBub3QgYmVlbiBzZXQpLCBhbnkgPGNvZGU+ZGVmYXVsdHM8L2NvZGU+ IGFzc2lnbmVkIHRvIHRoYXQgdmFyaWFibGUgd2lsbCBiZSB1c2VkIGluc3RlYWQuIElmIHRo ZXJlIGFyZSBubyBkZWZhdWx0cywgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIGl0c2VsZiAo bWludXMgaXRzIDxjb2RlPj88L2NvZGU+KSB3aWxsIGJlIHVzZWQuPC9wPgoKCTxwPldpdGgg dGhlc2UgdHdvIGZpbHRlcnMgYXQgeW91ciBkaXNwb3NhbCBhbmQgdGhlIGFiaWxpdHkgdG8g c3BlY2lmeSBkZWZhdWx0IHZhbHVlcyBmb3IgdXNlciB2YXJpYWJsZXMsIHlvdSBjYW4gbWFr ZSB5b3VyIHF1ZXJpZXMgbXVjaCBzYWZlciB0byB0aGUgb3V0c2lkZSB3b3JsZCBhbmQgc3Rh cnQgdXNpbmcgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGZvcm1zIHRvIGdhdGhl ciBpbnB1dCBmcm9tIHVzZXJzIHRoYXQgY2FuIHRoZW4gYmUgcGx1Z2dlZCBpbnRvIHF1ZXJp ZXMsIGZhaXJseSBzYWZlIGluIHRoZSBrbm93bGVkZ2UgdGhhdCB5b3VyIGRhdGFiYXNlIGlz IG5vdCBnb2luZyB0byBpbXBsb2RlLjwvcD4KCgk8cD5CdXQgcGxlYXNlIHJlbWVtYmVyOjwv cD4KCgk8YmxvY2txdW90ZT4KCQk8cD48c3Ryb25nPkFsbDwvc3Ryb25nPiB1c2VyIGlucHV0 IGlzIHRhaW50ZWQgYnkgZGVmYXVsdDogY2hlY2sgZXZlcnl0aGluZy48L3A+Cgk8L2Jsb2Nr cXVvdGU+CgoJPGgyIGlkPSJleGFtcGxlcyI+RXhhbXBsZXM8L2gyPgoKCTxoMyBpZD0iZWcx Ij5FeGFtcGxlIDE8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O3R4cDpzbWRfcXVlcnkgY29sdW1uPSZxdW90OyomcXVvdDsKICAgICB0YWJsZT0m cXVvdDt0eHBfaW1hZ2UmcXVvdDsKICAgICB3aGVyZT0mcXVvdDtjYXRlZ29yeT0mIzM5O21h bW1hbCYjMzk7IE9SIGNhdGVnb3J5PSYjMzk7YmlyZCYjMzk7JnF1b3Q7CiAgICAgZm9ybT0m cXVvdDtkYm91dCZxdW90OyB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xp JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaXRoIGZvcm0gPGNvZGU+ZGJvdXQ8 L2NvZGU+IGNvbnRhaW5pbmc6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O2EgaHJlZj0mcXVvdDsvaW1hZ2VzL3tpZH17ZXh0fSZxdW90OyAvJmd0 OyZsdDt0eHA6dGh1bWJuYWlsIG5hbWU9JnF1b3Q7e25hbWV9JnF1b3Q7IC8mZ3Q7Jmx0Oy9h Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2lsbCByZW5kZXIgYW4gdW5vcmRlcmVkIGxpc3Qg b2YgdGh1bWJuYWlscyB3aXRoIGxpbmtzIHRvIHRoZSBmdWxsc2l6ZSBpbWFnZSBpZiB0aGUg Y2F0ZWdvcnkgaXMgZWl0aGVyIDxjb2RlPm1hbW1hbDwvY29kZT4gb3IgPGNvZGU+YmlyZDwv Y29kZT4uPC9wPgoKCTxoMyBpZD0iZWcyIj5FeGFtcGxlIDI8L2gzPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfcXVlcnkgcXVlcnk9JnF1 b3Q7U0VMRUNUIERJU1RJTkNUCiAgICAgdHhjLm5hbWUgRlJPTSB0eHBfY2F0ZWdvcnkgQVMg dHhjLCB0ZXh0cGF0dGVybiBBUyB0eHAKICAgICBXSEVSRSB0eXBlPSYjMzk7YXJ0aWNsZSYj Mzk7IEFORCBwYXJlbnQ9JiMzOTthbmltYWxzJiMzOTsKICAgICBBTkQgKHR4Yy5uYW1lID0g dHhwLmNhdGVnb3J5MSBPUiB0eGMubmFtZSA9IHR4cC5jYXRlZ29yeTIpCiAgICAgZm9ybT0m cXVvdDtkYm91dCZxdW90OyB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xp JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaXRoIGZvcm0gPGNvZGU+ZGJvdXQ8 L2NvZGU+IGNvbnRhaW5pbmc6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3R4cDpjYXRlZ29yeSBuYW1lPSZxdW90O3tuYW1lfSZxdW90OyBsaW5r PSZxdW90OzEmcXVvdDsgdGl0bGU9JnF1b3Q7MSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+V2lsbCByZW5kZXIgYSBsaXN0IG9mIGxpbmthYmxlIGNhdGVnb3J5IG5hbWVzIHRo YXQgY29udGFpbiBhcnRpY2xlcyB3aXRoIGNhdGVnb3JpZXMgdGhhdCBoYXZlIHRoZSBnaXZl biBwYXJlbnQuIElmIGEgY2F0ZWdvcnkgaXMgdW51c2VkIGl0IHdpbGwgbm90IGJlIGxpc3Rl ZC48L3A+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUgMzwvaDM+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBxdWVyeT0mcXVvdDtT RUxFQ1QgRElTVElOQ1QKICAgICB0eGMubmFtZSwgQ09VTlQoKikgQVMgY291bnQgRlJPTSB0 eHBfY2F0ZWdvcnkgQVMgdHhjLAogICAgIHRleHRwYXR0ZXJuIEFTIHR4cAogICAgIFdIRVJF IHR5cGU9JiMzOTthcnRpY2xlJiMzOTsgQU5EIHBhcmVudD0mIzM5Oz9jdXN0b20zJiMzOTsK ICAgICBBTkQgKHR4Yy5uYW1lID0gdHhwLmNhdGVnb3J5MSBPUiB0eGMubmFtZSA9IHR4cC5j YXRlZ29yeTIpCiAgICAgR1JPVVAgQlkgdHhjLm5hbWUmcXVvdDsKICAgICBmb3JtPSZxdW90 O2Rib3V0JnF1b3Q7IHdyYXB0YWc9JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVv dDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldpdGggZm9ybSA8Y29kZT5kYm91dDwvY29k ZT4gY29udGFpbmluZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj4mbHQ7dHhwOmNhdGVnb3J5IG5hbWU9JnF1b3Q7e25hbWV9JnF1b3Q7IGxpbms9JnF1 b3Q7MSZxdW90OyB0aXRsZT0mcXVvdDsxJnF1b3Q7IC8mZ3Q7ICh7Y291bnR9KQo8L2NvZGU+ PC9wcmU+CgoJPHA+V2lsbCByZWFkIHRoZSBwYXJlbnQgaXRlbSBmcm9tIHRoZSA8Y29kZT5j dXN0b20zPC9jb2RlPiBmaWVsZCBhbmQgcmVuZGVyIGEgc2ltaWxhciBsaXN0IHRvIEV4YW1w bGUgMiBidXQgd2l0aCB0aGUgYXJ0aWNsZSBjb3VudHMgYWRkZWQgaW4gcGFyZW50aGVzZXMg YWZ0ZXJ3YXJkcy48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDwvaDM+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBjb2x1 bW49JnF1b3Q7KiZxdW90OyB0YWJsZT0mcXVvdDt0eHBfZmlsZSZxdW90OwogICAgIHdoZXJl PSZxdW90OyhjYXRlZ29yeT0mIzM5Oz9jYXRlZ29yeTEmIzM5OyBPUiBjYXRlZ29yeT0mIzM5 Oz9jYXRlZ29yeTImIzM5OykKICAgICBBTkQgc3RhdHVzPTQgT1JERVIgQlkgZG93bmxvYWRz IGRlc2MgTElNSVQgMTAmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90O3RhYmxlJnF1b3Q7IGJy ZWFrPSZxdW90O3RyJnF1b3Q7CiAgICAgbGFiZWw9JnF1b3Q7TW9zdCBwb3B1bGFyIGRvd25s b2FkcyZxdW90OyBsYWJlbHRhZz0mcXVvdDtoMyZxdW90OyZndDsKICAmbHQ7dGQmZ3Q7Jmx0 O3R4cDpmaWxlX2Rvd25sb2FkX2xpbmsgaWQ9JnF1b3Q7e2lkfSZxdW90OyZndDt7ZmlsZW5h bWV9Jmx0Oy90eHA6ZmlsZV9kb3dubG9hZF9saW5rJmd0OyZsdDsvdGQmZ3Q7CiAgJmx0O3Rk Jmd0O3tkZXNjcmlwdGlvbn0mbHQ7L3RkJmd0OwogICZsdDt0ZCZndDtkb3dubG9hZHM6IHtk b3dubG9hZHN9Jmx0Oy90ZCZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAgJmx0O3AmZ3Q7Tm8g cmVjZW50IGRvd25sb2Fkcywgc29ycnkmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9xdWVyeSZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoaXMgb25lIHVzZXMgdGhlIHBsdWdpbiBhcyBhIGNv bnRhaW5lciB0YWcgaW5zdGVhZCBvZiBhIGZvcm0gYW5kIHRhYnVsYXRlcyB0aGUgdG9wIDEw IGRvd25sb2FkcyAoc3RhdHVzPWxpdmUpIHRoYXQgaGF2ZSBhIGNhdGVnb3J5IG1hdGNoaW5n IGVpdGhlciBvZiB0aGUgY3VycmVudCBhcnRpY2xlJiM4MjE3O3MgY2F0ZWdvcmllcywgd2l0 aCBtb3N0IHBvcHVsYXIgbGlzdGVkIGZpcnN0LiBJZiB0aGVyZSBhcmUgbm8gZG93bmxvYWRz LCB0aGUgPGNvZGU+Jmx0O3R4cDplbHNlIC8mZ3Q7PC9jb2RlPiBwb3J0aW9uIGRpc3BsYXlz IGEgbWVzc2FnZS48L3A+CgoJPGgzIGlkPSJlZzUiPkV4YW1wbGUgNTwvaDM+CgoJPHA+VmVy eSBpbnRlcmVzdGluZyB1c2UgY2FzZSBoZXJlLiBQdXQgdGhpcyBpbiB0aGUgcGxhaW5saW5r cyBmb3JtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDt0eHA6bGlua2Rlc2N0aXRsZSAvJmd0OwombHQ7dHhwOnNtZF9xdWVyeSBxdWVyeT0mcXVv dDtTRUxFQ1QgRElTVElOQ1QKICAgICB0eHAuaWQsIHR4cC50aXRsZSBGUk9NIHRleHRwYXR0 ZXJuIEFTIHR4cAogICAgIFdIRVJFICh0eHAua2V5d29yZHMgTElLRSAmIzM5OyUsP2NhdGVn b3J5JSwmIzM5OwogICAgIE9SIHR4cC5rZXl3b3JkcyBMSUtFICYjMzk7JT9jYXRlZ29yeSUs JiMzOTsKICAgICBPUiB0eHAua2V5d29yZHMgTElLRSAmIzM5OyUsP2NhdGVnb3J5JSYjMzk7 KQogICAgIEdST1VQIEJZIHR4cC50aXRsZSZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7dWwm cXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsmZ3Q7CiAgJmx0O3R4cDpwZXJtbGluayBpZD0m cXVvdDt7aWR9JnF1b3Q7Jmd0O3t0aXRsZX0mbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0Oy90 eHA6c21kX3F1ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2hlbiB5b3UgZXhlY3V0ZSA8 Y29kZT4mbHQ7dHhwOmxpbmtsaXN0IC8mZ3Q7PC9jb2RlPiBmcm9tIGEgcGFnZSB5b3Ugd2ls bCBnZXQgYSBsaXN0IG9mIGxpbmtzIGFzIHVzdWFsLCBidXQgdW5kZXIgZWFjaCBvbmUgeW91 IHdpbGwgc2VlIGEgaHlwZXJsaW5rZWQgbGlzdCBvZiBhcnRpY2xlcyB0aGF0IGFyZSByZWxh dGVkIChieSBrZXl3b3JkKSB0byB0aGUgY2F0ZWdvcnkgb2YgdGhlIGxpbmsuPC9wPgoKCTxw PlRoZSByZWFzb24gaXQgaXMgY29tcGFyZWQgdGhyZWUgdGltZXMgaXMgYmVjYXVzZSBhcnRp Y2xlIGtleXdvcmRzIGFyZSBzdG9yZWQgbGlrZSB0aGlzIGluIHRoZSBkYXRhYmFzZTo8L3A+ CgoJPHA+PGNvZGU+Z292ZXJubWVudCxjb25zcGlyYWN5LGlkLGNhcmQsZGF0YSxiaW9tZXRy aWMsYmFkLGlkZWE8L2NvZGU+PC9wPgoKCTxwPklmIGVhY2ggY2F0ZWdvcnkgd29yZCB3YXMg Y29tcGFyZWQgb25seSBvbmNlIHdpdGhvdXQgY29tbWFzIChpLmUuIDxjb2RlPnR4cC5rZXl3 b3JkcyBMSUtFICYjMzk7JT9jYXRlZ29yeSUmIzM5OzwvY29kZT4pIHRoZW4gYSBsaW5rIHdp dGggY2F0ZWdvcnkgPGNvZGU+cGlyYWN5PC9jb2RlPiB3b3VsZCBjYXVzZSBhbnkgYXJ0aWNs ZSBjb250YWluaW5nIGtleXdvcmQgPGNvZGU+Y29uc3BpcmFjeTwvY29kZT4gdG8gYmUgaW5j bHVkZWQuIEVzc2VudGlhbGx5LCBieSBjb21wYXJpbmcgdGhlIGNhdGVnb3J5IGVpdGhlciBz dXJyb3VuZGVkIGJ5IGNvbW1hcywgd2l0aCBhIGNvbW1hIGFmdGVyIGl0LCBvciB3aXRoIGEg Y29tbWEgYmVmb3JlIGl0LCB0aGUgc2VhcmNoIGlzIHJlc3RyaWN0ZWQgdG8gb25seSBtYXRj aCB3aG9sZSB3b3Jkcy48L3A+CgoJPGgzIGlkPSJlZzYiPkV4YW1wbGUgNjwvaDM+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBx dWVyeT0mcXVvdDtTRUxFQ1QgKgogICAgIEZST00gdHhwX2ZpbGUgV0hFUkUgZG93bmxvYWRz ICZhbXA7Z3Q7PSA0MiZxdW90OyZndDsKICAmbHQ7dHhwOmZpbGVfZG93bmxvYWRfbGluayBp ZD0mcXVvdDt7aWR9JnF1b3Q7Jmd0OwogICAgIHtmaWxlbmFtZX0KICAmbHQ7L3R4cDpmaWxl X2Rvd25sb2FkX2xpbmsmZ3Q7CiZsdDsvdHhwOnNtZF9xdWVyeSZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPlNob3dzIGxpbmtzIHRvIGFsbCBkb3dubG9hZHMgd2hlcmUgdGhlIGRvd25sb2Fk IGNvdW50IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byA0Mi4gTm90ZSB0aGF0IHVuZGVy IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IDQuMC42IGFuZCBiZWxvdyB5b3UgbXVz dCB1c2UgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBlbnRpdHkgbmFtZXMg Zm9yIDxjb2RlPiZhbXA7Z3Q7PC9jb2RlPiBhbmQgPGNvZGU+JmFtcDtsdDs8L2NvZGU+IG9y IHRoZSBwYXJzZXIgZ2V0cyBjb25mdXNlZC48L3A+CgoJPGgzIGlkPSJlZzciPkV4YW1wbGUg NzwvaDM+CgoJPHA+KGEgYmFkIHF1ZXJ5KTwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6dmFyaWFibGUgbmFtZT0mcXVvdDtjdXRvZmYmcXVv dDsKICAgICB2YWx1ZT0mcXVvdDs0MiZxdW90OyAvJmd0OwombHQ7dHhwOnNtZF9xdWVyeSBx dWVyeT0mcXVvdDtTRUxFQ1QgVGl0bGUKICAgICBGUk9NIHRleHRwYXR0ZXJuCiAgICAgV0hF UkUgaWQgJmx0OyAmIzM5Oz91c2VyY3V0JiMzOTsmcXVvdDsKICAgICBkZWZhdWx0cz0mcXVv dDt1c2VyY3V0OiA/Y3V0b2ZmJnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0O3tU aXRsZX0mbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0Oy90eHA6c21kX3F1ZXJ5Jmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+U2hvd3MgaHlwZXJsaW5rcyB0byBvbmx5IHRob3NlIGFydGljbGVz IHdpdGggYW4gSUQgYmVsb3cgdGhlIG51bWJlciBnaXZlbiBieSB0aGUgdXNlciBvbiB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluZS4gSWYgdGhlIHZhbHVlIGlzIG5v dCBzdXBwbGllZCwgdGhlIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNh cHMiPlRYUDwvc3Bhbj4gdmFyaWFibGUgaXMgdXNlZCBpbnN0ZWFkICg0MiBpbiB0aGlzIGNh c2UpLjwvcD4KCgk8cD48c3Ryb25nPjxzcGFuIGNsYXNzPSJjYXBzIj5OT1RFPC9zcGFuPjwv c3Ryb25nPjogdmFsaWRhdGlvbiBpcyBub3QgcGVyZm9ybWVkIGFuZCB5b3UgY2Fubm90IGd1 YXJhbnRlZSB0aGF0IHRoZSA8Y29kZT51c2VyY3V0PC9jb2RlPiB2YXJpYWJsZSBpcyBnb2lu ZyB0byBiZSBudW1lcmljLiBZb3Ugc2hvdWxkIG5vdCB1c2UgdGhpcyBxdWVyeSBvbiBhIHBy b2R1Y3Rpb24gc2l0ZSB1bmxlc3MgeW91IGFkZCBhIDxjb2RlPnVybGZpbHRlcjwvY29kZT4g dG8gcmVtb3ZlIGFueSBub24tbnVtZXJpYyBjaGFyYWN0ZXJzIChzZWUgbmV4dCBleGFtcGxl IGZvciBhIGJldHRlciBxdWVyeSkuPC9wPgoKCTxoMyBpZD0iZWc4Ij5FeGFtcGxlIDg8L2gz PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRf cXVlcnkgcXVlcnk9JnF1b3Q7U0VMRUNUIFRpdGxlCiAgICAgRlJPTSB0ZXh0cGF0dGVybgog ICAgIFdIRVJFIHN0YXR1cyA9ICYjMzk7P3VzZXJfc3RhdHVzJiMzOTsmcXVvdDsKICAgICB1 cmxmaWx0ZXI9JnF1b3Q7L1teMS01XS8mcXVvdDsKICAgICBkZWZhdWx0cz0mcXVvdDt1c2Vy X3N0YXR1czogNCZxdW90OyZndDsKICAgJmx0O3R4cDpwZXJtbGluayZndDt7VGl0bGV9Jmx0 Oy90eHA6cGVybWxpbmsmZ3Q7CiZsdDsvdHhwOnNtZF9xdWVyeSZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPlB1bGxzIGFsbCBhcnRpY2xlcyBvdXQgb2YgdGhlIGRhdGFiYXNlIHRoYXQgbWF0 Y2ggdGhlIGdpdmVuIHN0YXR1cy4gVGhpcyBpcyBhIG1vcmUgcm9idXN0IHF1ZXJ5IHRoYW4g RXhhbXBsZSA3IGJlY2F1c2UgaXQgY2hlY2tzIGlmIHRoZSA8Y29kZT51c2VyX3N0YXR1czwv Y29kZT4gZmllbGQgaXMgMSwgMiwgMywgNCwgb3IgNSAodGhlIHJlZ2V4IHNwZWNpZmllcyB0 byByZW1vdmUgZXZlcnl0aGluZyBmcm9tIHRoZSB1c2VyX3N0YXR1cyB2YXJpYWJsZSB0aGF0 IGlzIG5vdCBpbiB0aGUgcmFuZ2UgMS01KS4gSWYgdGhpcyBjb25kaXRpb24gaXMgbm90IG1l dCAmIzgyMTI7IGUuZy4gdGhlIHVzZXIgc3BlY2lmaWVzIDxjb2RlPnVzZXJfc3RhdHVzPTY8 L2NvZGU+IG9yIDxjb2RlPnVzZXJfc3RhdHVzPSZxdW90O2FiYyZxdW90OzwvY29kZT4gJiM4 MjEyOyB0aGVuIHVzZXJfc3RhdHVzIHdpbGwgYmUgc2V0IHRvIDxjb2RlPjQ8L2NvZGU+LiBO b3RlIHRoYXQgdXNpbmcgPGNvZGU+dXNlcl9zdGF0dXM9JnF1b3Q7WmFwaG9kIDQgVHJpbGxp YW4mcXVvdDs8L2NvZGU+IG9uIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBh ZGRyZXNzIGJhciB3aWxsIGFjdHVhbGx5IHBhc3MgdGhlIHRlc3QgYmVjYXVzZSBhbGwgY2hh cmFjdGVycyBvdGhlciB0aGFuIHRoZSBudW1iZXIgJiM4MjE2OzQmIzgyMTc7IHdpbGwgYmUg cmVtb3ZlZC48L3A+CgoJPHA+WW91IGNvdWxkIHVzZSBhIDxjb2RlPiZsdDt0eHA6dmFyaWFi bGUgLyZndDs8L2NvZGU+IGlmIHlvdSB3aXNoIGFuZCBzZXQgYWxsIHlvdXIgZGVmYXVsdHMg aW4gYSBzcGVjaWFsIGZvcm0sIHJlYWR5IHRvIHVzZSB0aHJvdWdob3V0IHlvdXIgcGFnZS4g SW4gdGhhdCBjYXNlICYjODIxMjsgaWYgeW91IGhhZCBjcmVhdGVkIGEgdmFyaWFibGUgY2Fs bGVkIDxjb2RlPmRmbHRfc3RhdDwvY29kZT4gJiM4MjEyOyB5b3UgbWlnaHQgcHJlZmVyIHRv IHVzZSA8Y29kZT5kZWZhdWx0cz0mcXVvdDt1c2VyX3N0YXR1czogP2RmbHRfc3RhdCZxdW90 OzwvY29kZT4uPC9wPgoKCTxwPlF1ZXJ5LXRhc3RpYyA6LSk8L3A+CgoJPGgyIGNsYXNzPSJj aGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4yMiBNYXkgMDggfCAwLjEg fCBJbml0aWFsIHJlbGVhc2U8L2xpPgoJCTxsaT4yMyBNYXkgMDggfCAwLjExIHwgQWxsb3dl ZCBtYXRocyBpbiBxdWVyaWVzICh1c2UgaHRtbCBlbnRpdGllcyBpbiBUWFA0LjAuNikgYW5k IGZpeGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5XSEVSRTwvc3Bhbj4gY2xhdXNlIHRvIGRlZmF1 bHQgdG8gMT0xIGlmIG5vbmUgc3VwcGxpZWQgKGJvdGggdGhhbmtzIGptKSA7IGFkZGVkIG1v cmUgZGV0YWlsZWQgZmlsZSBhbmQgbGluayBzdXBwb3J0PC9saT4KCQk8bGk+MTQgSnVsIDA4 IHwgMC4xMiB8IEFkZGVkIDxjb2RlPnR4cDplbHNlPC9jb2RlPiBzdXBwb3J0IGluIGNvbnRh aW5lciAodGhhbmtzIGpha29iKSA7IGFkZGVkIDxjb2RlPnNpbGVudDwvY29kZT4gYW5kIDxj b2RlPmNvdW50PC9jb2RlPiBhdHRyaWJ1dGVzLCBhbmQgdGhlIHJlcGxhY2VtZW50IHRhZ3Mg PGNvZGU+e3NtZF9yb3dzfSB7c21kX3RoaXNyb3d9IHtzbWRfdGhpc2luZGV4fTwvY29kZT48 L2xpPgoJCTxsaT4yMyBOb3YgMDggfCAwLjIgfCBBZGRlZCA8Y29kZT4mbHQ7dHhwOnZhcmlh YmxlIC8mZ3Q7PC9jb2RlPiBzdXBwb3J0IDsgZW5hYmxlZCA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiB2YXJpYWJsZSBzdXBwb3J0IDsgYWRkZWQgPGNvZGU+dXJsZmlsdGVyPC9j b2RlPiwgPGNvZGU+dXJscmVwbGFjZTwvY29kZT4sIDxjb2RlPmRlbGltPC9jb2RlPiwgPGNv ZGU+cGFyYW1kZWxpbTwvY29kZT4gYW5kIDxjb2RlPmRlZmF1bHRzPC9jb2RlPiBhdHRyaWJ1 dGVzPC9saT4KCQk8bGk+MTcgTWFyIDA5IHwgMC4yMSB8IEFkZGVkIDxjb2RlPiRfU0VSVkVS PC9jb2RlPiB2YXIgc3VwcG9ydDwvbGk+Cgk8L3VsPgoKCTxwPjwvZGl2PjwvcD4KPCEtLSAt LS0gQkVHSU4gUExVR0lOIENTUyAtLS0gLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNz bWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNDUgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdl aWdodDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9u b3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxv Y2sgeyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tn cm91bmQtY29sb3I6ICNmMGU2OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHgg MjBweDsgcGFkZGluZzoxMHB4OyB9CiNzbWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZp c2l0ZWQgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90 dG9tOiAxcHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6 aG92ZXIsICNzbWRfaGVscCBhOmFjdGl2ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRp b246IG5vbmU7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRv bToxcHg7fQojc21kX2hlbHAgaDEgeyBjb2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lh LCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hl bHAgaDIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAw IDA7IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3Nt ZF9oZWxwIGgzIHsgY29sb3I6ICM2OTM7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1z ZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5z Zm9ybTogdXBwZXJjYXNlOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30KI3NtZF9oZWxw IGg0IHsgZm9udDogYm9sZCAxMXB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2lu ZzogMXB4OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9 CiNzbWRfaGVscCAuYXRuIHsgZm9udC13ZWlnaHQ6Ym9sZDsgfQojc21kX2hlbHAgLm1hbmQg eyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxw IHRhYmxlIHt3aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbTox ZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5 OyBwYWRkaW5nOi41ZW0gMDt9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVh cmU7IH0KI3NtZF9oZWxwIGxpIHsgbWFyZ2luLWxlZnQ6MzVweDsgfQojc21kX2hlbHAgLmJy ZWFrIHsgbWFyZ2luLXRvcDo1cHg7IH0KPC9zdHlsZT4KPCEtLSAtLS0gRU5EIFBMVUdJTiBD U1MgLS0tIC0tPgoiO3M6MzoibWQ1IjtzOjMyOiJmYjgwMTg2Zjk4MjJmMDg5N2I4YmIwNWNj ZWI2MjBkNiI7fQ==