# Name: smd_query v0.12 # Type: Client side plugin # Generic database access via SQL # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6OToic21kX3F1ZXJ5IjtzOjY6ImF1dGhvciI7czoxMToiU3Rl ZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29uLmNv bS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjEyIjtzOjExOiJkZXNjcmlwdGlvbiI7czozMToi R2VuZXJpYyBkYXRhYmFzZSBhY2Nlc3MgdmlhIFNRTCI7czo0OiJjb2RlIjtzOjM0MjI6ImZ1 bmN0aW9uIHNtZF9xdWVyeSgkYXR0cywgJHRoaW5nPScnKSB7DQoJZXh0cmFjdChsQXR0cyhh cnJheSgNCgkJJ2NvbHVtbicgPT4gJycsDQoJCSd0YWJsZScgPT4gJycsDQoJCSd3aGVyZScg PT4gJycsDQoJCSdxdWVyeScgPT4gJycsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2NvbHNmb3Jt JyA9PiAnJywNCgkJJ3NpbGVudCcgPT4gJzAnLA0KCQknY291bnQnID0+ICd1cCcsDQoJCSdi cmVhaycJPT4gJycsDQoJCSd3cmFwdGFnJyAgPT4gJycsDQoJCSdsYWJlbCcJPT4gJycsDQoJ CSdsYWJlbHRhZycgPT4gJycsDQoJCSdjbGFzcycJICAgPT4gJycsDQoJCSdkZWJ1ZycgPT4g JzAnLA0KCSksJGF0dHMpKTsNCgkvLyBHcmFiIHRoZSBmb3JtIG9yIGVtYmVkZGVkICR0aGlu Zw0KCSR0aGluZyA9ICgkdGhpbmcpID8gJHRoaW5nIDogZmV0Y2hfZm9ybSgkZm9ybSk7DQov LwkkdGhpbmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6IGZldGNoX2Zvcm0oJGZvcm0p Ow0KCSRjb2xzZm9ybSA9IChlbXB0eSgkY29sc2Zvcm0pKSA/ICcnIDogZmV0Y2hfZm9ybSgk Y29sc2Zvcm0pOw0KDQoJJHJzID0gYXJyYXkoKTsNCgkkb3V0ID0gYXJyYXkoKTsNCgkkY29s b3V0ID0gYXJyYXkoKTsNCg0KCS8vIHF1ZXJ5IG92ZXJyaWRlcyBjb2x1bW4vdGFibGUvd2hl cmUNCglpZiAoJHF1ZXJ5KSB7DQoJCSRxdWVyeSA9IHNtZF9xdWVyeV9wYXJzZSgkcXVlcnkp Ow0KCQkkcnMgPSAoJHNpbGVudCkgPyBAZ2V0Um93cygkcXVlcnksICRkZWJ1ZykgOiBnZXRS b3dzKCRxdWVyeSwgJGRlYnVnKTsNCgl9IGVsc2Ugew0KCQlpZiAoJGNvbHVtbiAmJiAkdGFi bGUpIHsNCgkJCSRjb2x1bW4gPSBzbWRfcXVlcnlfcGFyc2UoJGNvbHVtbik7DQoJCQkkdGFi bGUgPSBzbWRfcXVlcnlfcGFyc2UoJHRhYmxlKTsNCgkJCSR3aGVyZSA9IHNtZF9xdWVyeV9w YXJzZSgkd2hlcmUpOw0KCQkJJHdoZXJlID0gKCR3aGVyZSkgPyAkd2hlcmUgOiAiMT0xIjsN CgkJCSRycyA9ICgkc2lsZW50KSA/IEBzYWZlX3Jvd3MoJGNvbHVtbiwgJHRhYmxlLCAkd2hl cmUsICRkZWJ1ZykgOiBzYWZlX3Jvd3MoJGNvbHVtbiwgJHRhYmxlLCAkd2hlcmUsICRkZWJ1 Zyk7DQoJCX0gZWxzZSB7DQoJCQl0cmlnZ2VyX2Vycm9yKCJZb3UgbXVzdCBzcGVjaWZ5IGF0 IGxlYXN0IDEgJ2NvbHVtbicgYW5kIGEgJ3RhYmxlJy4iKTsNCgkJfQ0KCX0NCg0KCSRudW1y b3dzID0gY291bnQoJHJzKTsNCgkkdHJ1ZVBhcnQgPSBFdmFsRWxzZSgkdGhpbmcsIDEpOw0K DQoJaWYgKCRycykgew0KCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJZWNobyAiKysgUVVFUlkg UkVTVUxUIFNFVCArKyI7DQoJCQlkbXAoY291bnQoJHJzKS4gIiBST1dTIik7DQoJCQlkbXAo JHJzKTsNCgkJfQ0KCQkkcmVwbGFjZW1lbnRzID0gYXJyYXkoKTsNCgkJJGNvbHJlcGxhY2Vt ZW50cyA9IGFycmF5KCk7DQoJCSRxcnlfcm93Y250ID0gKCRjb3VudD09InVwIikgPyAwIDog JG51bXJvd3MtMTsNCgkJZm9yZWFjaCAoJHJzIGFzICRyb3cpIHsNCgkJCWZvcmVhY2ggKCRy b3cgYXMgJGNvbGlkID0+ICR2YWwpIHsNCgkJCQlpZiAoJHFyeV9yb3djbnQgPT0gMCAmJiAk Y29sc2Zvcm0pIHsNCgkJCQkJJGNvbHJlcGxhY2VtZW50c1sneycuJGNvbGlkLid9J10gPSAk Y29saWQ7DQoJCQkJfQ0KCQkJCS8vIENvbnN0cnVjdCB0aGUgcmVwbGFjZW1lbnQgYXJyYXkN CgkJCQkkcmVwbGFjZW1lbnRzWyd7Jy4kY29saWQuJ30nXSA9ICR2YWw7DQoJCQl9DQoJCQkk cmVwbGFjZW1lbnRzWyd7c21kX3Jvd3N9J10gPSAkbnVtcm93czsNCgkJCSRyZXBsYWNlbWVu dHNbJ3tzbWRfdGhpc2luZGV4fSddID0gJHFyeV9yb3djbnQ7DQoJCQkkcmVwbGFjZW1lbnRz Wyd7c21kX3RoaXNyb3d9J10gPSAkcXJ5X3Jvd2NudCArIDE7DQoJCQlpZiAoJGRlYnVnID4g MCkgew0KCQkJCWVjaG8gIisrIFJFUExBQ0VNRU5UUyArKyI7DQoJCQkJZG1wKCRyZXBsYWNl bWVudHMpOw0KCQkJfQ0KCQkJJG91dFtdID0gcGFyc2Uoc3RydHIoJHRydWVQYXJ0LCAkcmVw bGFjZW1lbnRzKSk7DQoJCQkkcXJ5X3Jvd2NudCA9ICgkY291bnQ9PSJ1cCIpID8gJHFyeV9y b3djbnQrMSA6ICRxcnlfcm93Y250LTE7DQoJCX0NCg0KCQlpZiAoJG91dCkgew0KCQkJaWYg KCRjb2xyZXBsYWNlbWVudHMpIHsNCgkJCQkkY29sb3V0W10gPSBwYXJzZShzdHJ0cigkY29s c2Zvcm0sICRjb2xyZXBsYWNlbWVudHMpKTsNCgkJCX0NCgkJCXJldHVybiBkb0xhYmVsKCRs YWJlbCwgJGxhYmVsdGFnKS5kb1dyYXAoYXJyYXlfbWVyZ2UoJGNvbG91dCwkb3V0KSwgJHdy YXB0YWcsICRicmVhaywgJGNsYXNzKTsNCgkJfQ0KCX0gZWxzZSB7DQoJCXJldHVybiBwYXJz ZShFdmFsRWxzZSgkdGhpbmcsIDApKTsNCgl9DQoJcmV0dXJuICcnOw0KfQ0KDQovLyBSZXR1 cm5zIGEgc3RyaW5nIHdpdGggYW55ID8gdmFyaWFibGVzIHJlcGxhY2VkIHdpdGggdGhlaXIg Z2xvYmFscyBmcm9tICRwcmV0ZXh0IG9yICR0aGlzYXJ0aWNsZQ0KZnVuY3Rpb24gc21kX3F1 ZXJ5X3BhcnNlKCRpdGVtKSB7DQoJZ2xvYmFsICRwcmV0ZXh0LCAkdGhpc2FydGljbGUsICR0 aGlzZmlsZSwgJHRoaXNsaW5rOw0KCSRpdGVtID0gaHRtbF9lbnRpdHlfZGVjb2RlKCRpdGVt KTsNCgkkbW9kUkUgPSAnLyhcPykoW0EtWmEtejAtOV9cLSBdKykvJzsNCgkkbnVtTW9kcyA9 IHByZWdfbWF0Y2hfYWxsKCRtb2RSRSwgJGl0ZW0sICRtb2RzKTsNCg0KCWZvciAoJG1vZEN0 ciA9IDA7ICRtb2RDdHIgPCAkbnVtTW9kczsgJG1vZEN0cisrKSB7DQoJCSRtb2RDaGFyID0g JG1vZHNbMV1bJG1vZEN0cl07DQoJCSRtb2RJdGVtID0gdHJpbSgkbW9kc1syXVskbW9kQ3Ry XSk7DQoJCSRsb3dpdGVtID0gc3RydG9sb3dlcigkbW9kSXRlbSk7DQoJCWlmIChpc3NldCgk dGhpc2ZpbGVbJGxvd2l0ZW1dKSkgew0KCQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hh ci4kbW9kSXRlbSwgJHRoaXNmaWxlWyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQl9IGVsc2UgaWYg KGlzc2V0KCR0aGlzbGlua1skbG93aXRlbV0pKSB7DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNl KCRtb2RDaGFyLiRtb2RJdGVtLCAkdGhpc2xpbmtbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCX0g ZWxzZSBpZiAoYXJyYXlfa2V5X2V4aXN0cygkbG93aXRlbSwgJHByZXRleHQpKSB7DQoJCQkk aXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkcHJldGV4dFskbG93aXRl bV0sICRpdGVtKTsNCgkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2FydGljbGVbJGxvd2l0ZW1d KSkgew0KCQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHRoaXNh cnRpY2xlWyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQl9IGVsc2Ugew0KCQkJJGl0ZW0gPSBzdHJf cmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJG1vZEl0ZW0sICRpdGVtKTsNCgkJfQ0KCX0N CglyZXR1cm4gJGl0ZW07DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo0OiJoZWxwIjtzOjEz NTExOiIJPHA+PGRpdiBpZD0ic21kX2hlbHAiPjwvcD4KCgk8aDE+c21kX3F1ZXJ5PC9oMT4K Cgk8cD5UaGUgbGF6aWVzdCB0YWcgZXZlciEgQWxsb3dzIHlvdSB0byBtYWtlIGFkLWhvYyBx dWVyaWVzIHRvIHRoZSBkYXRhYmFzZSBhbmQgcHJvY2VzcyB0aGUgcmVzdWx0cywgcm93IGJ5 IHJvdywgaW4gYSBmb3JtIG9yIGNvbnRhaW5lci48L3A+CgoJPGgyPkZlYXR1cmVzPC9oMj4K Cgk8dWw+CgkJPGxpPlN1cHBvcnRzIHNpbXBsZSBxdWVyaWVzIHdpdGggYSByZWR1Y2VkIHN5 bnRheCAoPHNwYW4gY2xhc3M9ImNhcHMiPlNFTEVDVDwvc3Bhbj4gY29scyA8c3BhbiBjbGFz cz0iY2FwcyI+RlJPTTwvc3Bhbj4gdGFibGUgPHNwYW4gY2xhc3M9ImNhcHMiPldIRVJFPC9z cGFuPiBjbGF1c2UpIG9yIHlvdXIgb3duIGN1c3RvbSBxdWVyaWVzPC9saT4KCQk8bGk+RWFj aCByb3cgY2FuIGJlIHBhc3NlZCB0byBhIGZvcm0gKG9yIHRoZSBwbHVnaW4gY2FuIGJlIHVz ZWQgYXMgYSBjb250YWluZXIgdGFnIHdpdGggb3Igd2l0aG91dCB0eHA6ZWxzZSkgdG8gZGlz cGxheSB0aGUgcmVzdWx0czwvbGk+CgkJPGxpPkNvbHVtbiBoZWFkaW5ncyBtYXkgYmUgb3V0 cHV0IHVzaW5nIGEgc2Vjb25kIGZvcm08L2xpPgoJCTxsaT5NYXkgZGVzdHJveSB5b3VyIGRh dGFiYXNlIGlmIHVzZWQgd3JvbmdseS4gQmFja3VwLCBiYWNrdXAgYmFja3VwJiM4MjMwOzwv bGk+Cgk8L3VsPgoKCTxoMj5BdXRob3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVm ZGF3c29uLmNvbS9jb21tZW50Rm9ybSI+U3RlZiBEYXdzb248L2E+PC9wPgoKCTxoMj5JbnN0 YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdp biBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMv OTc2L3NtZF9xdWVyeSI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0 dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBj b2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7 IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRo ZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/ aWQ9MjcyNzkiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQg b24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPlVu aW5zdGFsbCBieSBzaW1wbHkgZGVsZXRpbmcgdGhlIHBsdWdpbiBmcm9tIHRoZSBBZG1pbi0m Z3Q7UGx1Z2lucyBwYW5lLjwvcD4KCgk8aDI+VXNhZ2U8L2gyPgoKCTxwPlVzZSB0aGUgdGFn IGluIGFueSBwYWdlLCBmb3JtIG9yIGFydGljbGUgY29udGV4dCB0byBncmFiIHN0dWZmIGZy b20gdGhlIGRhdGFiYXNlLjwvcD4KCgk8aDMgY2xhc3M9InRhZyI+c21kX3F1ZXJ5PC9oMz4K Cgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPk9wZXJhdGVzIGluIHR3byBtb2Rlczogc2ltcGxl IG1vZGUganVzdCBhbGxvd3MgPGNvZGU+U0VMRUNUIHN0dWZmIEZST00gdGFibGUgV0hFUkUg Y2xhdXNlPC9jb2RlPi4gQnkgdXNpbmcgdGhlIDxjb2RlPnF1ZXJ5PC9jb2RlPiBhdHRyaWJ1 dGUgeW91IHN3aXRjaCB0aGUgcGx1Z2luIHRvIGNvbXBsZXggbW9kZSBhbmQgeW91IGNhbiBk ZXNpZ24geW91ciBvd24gcXVlcnkuIEl0IGNhbiBpbmNsdWRlIDxzcGFuIGNsYXNzPSJjYXBz Ij5DT1VOVDwvc3Bhbj4gKCopLCBqb2lucywgYW55dGhpbmc7IHBlcmhhcHMgZXZlbiA8c3Bh biBjbGFzcz0iY2FwcyI+SU5TRVJUPC9zcGFuPiBhbmQgPHNwYW4gY2xhc3M9ImNhcHMiPlVQ REFURTwvc3Bhbj4gKD8pIGFsdGhvdWdoIGl0JiM4MjE3O3MgdW50ZXN0ZWQgYW5kIGxpYWJs ZSB0byBmbG9vZGluZy48L3A+CgoJPGg0IGNsYXNzPSJhdHRzICIgaWQ9ImF0dHJpYnV0ZXMi PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG4iPmNvbHVtbjwvc3Bhbj4gOiAoc2ltcGxlIG1vZGUpIGNvbW1hLXNlcGFyYXRlZCBs aXN0IG9mIGNvbHVtbnMgdG8gcmV0cmlldmUgZnJvbSB0aGUgZGF0YWJhc2U8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRuIj50YWJsZTwvc3Bhbj4gOiAoc2ltcGxlIG1vZGUpIG5hbWUg b2YgdGhlIHRhYmxlIHRvIHJldHJpZXZlIHRoZSBjb2x1bW5zIGZyb20gKHllcywgbm9uLTxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhYmxlcyBhcmUgYWxzbyBzdXBwb3J0ZWQg aWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgZGF0YWJhc2UgOi0pPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0biI+d2hlcmU8L3NwYW4+IDogKHNpbXBsZSBtb2RlKSBhbnkgZXh0cmEgY2xh dXNlIHlvdSB3aXNoIHRvIHNwZWNpZnkuIERlZmF1bHRzIHRvICYjODIyMDt0aGUgd2hvbGUg ZGFybiB0YWJsZSYjODIyMTs8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj5xdWVyeTwv c3Bhbj4gOiAoY29tcGxleCBtb2RlKSBhbnkgcXVlcnkgeW91IGxpa2UgY2FuIGJlIHVzZWQg aGVyZS4gT3ZlcnJpZGVzIDxjb2RlPmNvbHVtbjwvY29kZT4sIDxjb2RlPnRhYmxlPC9jb2Rl PiBhbmQgPGNvZGU+d2hlcmU8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+ Zm9ybTwvc3Bhbj4gOiB0aGUgZm9ybSB0byB1c2UgdG8gcGFyc2UgZWFjaCByZXR1cm5lZCBy b3cuIFNlZSA8YSBocmVmPSIjcmVwbGFjZW1lbnRzIj5yZXBsYWNlbWVudHM8L2E+LiBJZiBu b3Qgc3BlY2lmaWVkLCB0aGUgcGx1Z2luIHdpbGwgdXNlIGFueXRoaW5nIGJlZm9yZSBpdHMg Y2xvc2luZyB0YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj5jb2xzZm9ybTwvc3Bh bj4gOiBzZWNvbmQgZm9ybSB0byBwYXJzZSBhbnkgaGVhZGVyIHJvdyBjb250YWluaW5nIGNv bHVtbiBuYW1lcyAob2YgbGltaXRlZCB1c2UpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 biI+c2lsZW50PC9zcGFuPiA6IGlmIHlvdXIgcXVlcnkgY29udGFpbnMgYW4gZXJyb3IgKHdy b25nIGNvbHVtbiBuYW1lIG9yIHNvbWUgbWFsZm9ybWVkIGlucHV0KSwgdGhlIHBsdWdpbiB3 aWxsIGlzc3VlIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZXJyb3IgbWVzc2Fn ZS4gVXNpbmcgPGNvZGU+c2lsZW50PSZxdW90OzEmcXVvdDs8L2NvZGU+IHdpbGwgaGlkZSB0 aGlzIGVycm9yIG1lc3NhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj5jb3VudDwv c3Bhbj4gOiBDYW4gYmUgZWl0aGVyICYjODIyMDt1cCYjODIyMTsgKHRoZSBkZWZhdWx0KSBv ciAmIzgyMjA7ZG93biYjODIyMTsuIFNlZSA8YSBocmVmPSIjcmVwbGFjZW1lbnRzIj57c21k X3RoaXNyb3d9PC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPmxhYmVsPC9zcGFu PiA6IGxhYmVsIHRvIGRpc3BsYXkgYWJvdmUgdGhlIGVudGlyZSBvdXRwdXQ8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRuIj5sYWJlbHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcg dG8gc3Vycm91bmQgdGhlIGxhYmVsIHdpdGguIFNwZWNpZnkgaXQgd2l0aG91dCBhbmdsZSBi cmFja2V0cyAoZS5nLiA8Y29kZT5sYWJlbHRhZz0mcXVvdDtoMyZxdW90OzwvY29kZT4pPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRN TCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSBvdXRwdXQgKGUuZy4gPGNvZGU+d3JhcHRh Zz0mcXVvdDt0YWJsZSZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 biI+YnJlYWs8L3NwYW4+IDogZWFjaCByb3cgd2lsbCBiZSB3cmFwcGVkIHdpdGggdGhpcyB0 YWcgKGUuZy4gPGNvZGU+YnJlYWs9JnF1b3Q7dHImcXVvdDs8L2NvZGU+KTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG4iPmNsYXNzPC9zcGFuPiA6IDxzcGFuIGNsYXNzPSJjYXBzIj5D U1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8gZWFjaCByb3c8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRuIj5kZWJ1Zzwvc3Bhbj4gOiBzZXQgdG8gMSB0byBzaG93IHNvbWUg ZGVidWcgb3V0cHV0OyB1c2UgMiB0byBzaG93IGEgYml0IG1vcmUgZGV0YWlsPC9saT4KCTwv dWw+CgoJPHA+VGhlIGF0dHJpYnV0ZXMgPGNvZGU+cXVlcnk8L2NvZGU+LCA8Y29kZT5jb2x1 bW48L2NvZGU+LCA8Y29kZT50YWJsZTwvY29kZT4gYW5kIDxjb2RlPndoZXJlPC9jb2RlPiBj YW4gY29udGFpbiByZXBsYWNlbWVudHMgdGhlbXNlbHZlcyB0byByZWFkIHZhbHVlcyBmcm9t IHRoZSBjdXJyZW50IGFydGljbGUuIFNwZWNpZnkgdGhlIHZhcmlhYmxlIG5hbWUgd2l0aCBh IDxjb2RlPj88L2NvZGU+IGluIGZyb250IG9mIGl0IChlLmcuIDxjb2RlPnF1ZXJ5PSZxdW90 O1NFTEVDVCAqIEZST00gdHhwX2ltYWdlIFdIRVJFIGNhdGVnb3J5PSYjMzk7P2NhdGVnb3J5 MSYjMzk7IE9SIGNhdGVnb3J5PSYjMzk7P2NhdGVnb3J5MiYjMzk7PC9jb2RlPikgd291bGQg c2hvdyBpbWFnZXMgdGhhdCBoYWQgdGhlaXIgY2F0ZWdvcnkgc2V0IHRvIG9uZSBvZiB0aGUg YXJ0aWNsZSYjODIxNztzIGNhdGVnb3JpZXMuPC9wPgoKCTxoNCBjbGFzcz0iYXR0cyAiIGlk PSJyZXBsYWNlbWVudHMiPlJlcGxhY2VtZW50IHRhZ3M8L2g0PgoKCTxwPkluIHlvdXIgb3V0 cHV0IGZvcm0geW91IG1heSBzcGVjaWZ5IGFueSBjb2x1bW4gbmFtZSBzdXJyb3VuZGVkIHdp dGggPGNvZGU+e308L2NvZGU+IGNoYXJhY3RlcnMgdG8gZGlzcGxheSB0aGF0IGZpZWxkLiBT byBpZiB5b3VyIHF1ZXJ5IHdhcyA8Y29kZT5TRUxFQ1QgaWQsIG5hbWUsIGNhdGVnb3J5IEZS T00gdHhwX2ltYWdlIFdIRVJFIGV4dD0mcXVvdDsuanBnJnF1b3Q7PC9jb2RlPiB5b3Ugd291 bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHJlcGxhY2VtZW50cyBhdmFpbGFibGU6PC9wPgoKCTx1 bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+e2lkfTwvc3Bhbj4gOiB0aGUgaW1hZ2UgSUQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj57bmFtZX08L3NwYW4+IDogdGhlIGltYWdl IGZpbGVuYW1lPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+e2NhdGVnb3J5fTwvc3Bh bj4gOiB0aGUgaW1hZ2UgY2F0ZWdvcnk8L2xpPgoJPC91bD4KCgk8cD5KdXN0IHB1dCB0aG9z ZSBuYW1lcyBpbnRvIHlvdXIgPGNvZGU+Zm9ybTwvY29kZT4gYW1vbmcgb3RoZXIgbm9ybWFs IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBvciA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiB0YWdzLCBhbmQgdGhlIHJlbGV2YW50IHZhbHVlIGZyb20gdGhhdCByb3cg d2lsbCBiZSBkaXNwbGF5ZWQuIFRoZSByZXBsYWNlbWVudHMgaG9ub3VyIGFueSA8Y29kZT5B UzwvY29kZT4gZWxlbWVudCB5b3UgbWF5IGVtcGxveS48L3A+CgoJPHA+SW4gYWRkaXRpb24s IHRoZXJlIGFyZSB0aHJlZSByZXBsYWNlbWVudHMgYWRkZWQgdG8gZWFjaCByb3c6PC9wPgoK CTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+e3NtZF9yb3dzfTwvc3Bhbj4gOiB0aGUg dG90YWwgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHJlc3VsdCBzZXQ8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRuIj57c21kX3RoaXNyb3d9PC9zcGFuPiA6IHRoZSBjdXJyZW50IHJvdyBu dW1iZXI8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj57c21kX3RoaXNpbmRleH08L3Nw YW4+IDogdGhlIGN1cnJlbnQgcm93IG51bWJlciAoemVyby1iYXNlZCk8L2xpPgoJPC91bD4K Cgk8cD5UaGVzZSBhcmUgdXNlZnVsIGZvciB0YWJsZXMgdG8gc2hvdyByb3cgbnVtYmVycyBi dXQgY2FuIGFsc28gYmUgdXNlZCBmb3IgcGFnaW5hdGlvbiBvciBjYW4gYmUgdGVzdGVkIHdp dGggc21kX2lmIHRvIHRha2UgYWN0aW9uIGZyb20gd2l0aGluIHlvdXIgZm9ybS4gPGNvZGU+ e3NtZF90aGlzcm93fTwvY29kZT4gYW5kIDxjb2RlPntzbWRfdGhpc2luZGV4fTwvY29kZT4g Y291bnQgdXAgb3IgZG93biBkZXBlbmRpbmcgb24gdGhlIDxjb2RlPmNvdW50PC9jb2RlPiBh dHRyaWJ1dGUuPC9wPgoKCTxoMiBpZD0iZXhhbXBsZXMiPkV4YW1wbGVzPC9oMj4KCgk8aDMg aWQ9ImVnMSI+RXhhbXBsZSAxPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDt0eHA6c21kX3F1ZXJ5IGNvbHVtbj0mcXVvdDsqJnF1b3Q7CiAgICAg dGFibGU9JnF1b3Q7dHhwX2ltYWdlJnF1b3Q7CiAgICAgd2hlcmU9JnF1b3Q7Y2F0ZWdvcnk9 JiMzOTttYW1tYWwmIzM5OyBPUiBjYXRlZ29yeT0mIzM5O2JpcmQmIzM5OyZxdW90OwogICAg IGZvcm09JnF1b3Q7ZGJvdXQmcXVvdDsgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0m cXVvdDtsaSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2l0aCBmb3JtIDxjb2Rl PmRib3V0PC9jb2RlPiBjb250YWluaW5nOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9JnF1b3Q7L2ltYWdlcy97aWR9e2V4dH0mcXVv dDsgLyZndDsmbHQ7dHhwOnRodW1ibmFpbCBuYW1lPSZxdW90O3tuYW1lfSZxdW90OyAvJmd0 OyZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldpbGwgcmVuZGVyIGFuIHVub3JkZXJl ZCBsaXN0IG9mIHRodW1ibmFpbHMgd2l0aCBsaW5rcyB0byB0aGUgZnVsbHNpemUgaW1hZ2Ug aWYgdGhlIGNhdGVnb3J5IGlzIGVpdGhlciA8Y29kZT5tYW1tYWw8L2NvZGU+IG9yIDxjb2Rl PmJpcmQ8L2NvZGU+LjwvcD4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyPC9oMz4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3F1ZXJ5IHF1 ZXJ5PSZxdW90O1NFTEVDVCBESVNUSU5DVAogICAgIHR4Yy5uYW1lIEZST00gdHhwX2NhdGVn b3J5IEFTIHR4YywgdGV4dHBhdHRlcm4gQVMgdHhwCiAgICAgV0hFUkUgdHlwZT0mIzM5O2Fy dGljbGUmIzM5OyBBTkQgcGFyZW50PSYjMzk7YW5pbWFscyYjMzk7CiAgICAgQU5EICh0eGMu bmFtZSA9IHR4cC5jYXRlZ29yeTEgT1IgdHhjLm5hbWUgPSB0eHAuY2F0ZWdvcnkyKQogICAg IGZvcm09JnF1b3Q7ZGJvdXQmcXVvdDsgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0m cXVvdDtsaSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2l0aCBmb3JtIDxjb2Rl PmRib3V0PC9jb2RlPiBjb250YWluaW5nOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6Y2F0ZWdvcnkgbmFtZT0mcXVvdDt7bmFtZX0mcXVv dDsgbGluaz0mcXVvdDsxJnF1b3Q7IHRpdGxlPSZxdW90OzEmcXVvdDsgLyZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPldpbGwgcmVuZGVyIGEgbGlzdCBvZiBsaW5rYWJsZSBjYXRlZ29yeSBu YW1lcyB0aGF0IGNvbnRhaW4gYXJ0aWNsZXMgd2l0aCBjYXRlZ29yaWVzIHRoYXQgaGF2ZSB0 aGUgZ2l2ZW4gcGFyZW50LiBJZiBhIGNhdGVnb3J5IGlzIHVudXNlZCBpdCB3aWxsIG5vdCBi ZSBsaXN0ZWQuPC9wPgoKCTxoMyBpZD0iZWczIj5FeGFtcGxlIDM8L2gzPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfcXVlcnkgcXVlcnk9 JnF1b3Q7U0VMRUNUIERJU1RJTkNUCiAgICAgdHhjLm5hbWUsIENPVU5UKCopIEFTIGNvdW50 IEZST00gdHhwX2NhdGVnb3J5IEFTIHR4YywKICAgICB0ZXh0cGF0dGVybiBBUyB0eHAKICAg ICBXSEVSRSB0eXBlPSYjMzk7YXJ0aWNsZSYjMzk7IEFORCBwYXJlbnQ9JiMzOTs/Y3VzdG9t MyYjMzk7CiAgICAgQU5EICh0eGMubmFtZSA9IHR4cC5jYXRlZ29yeTEgT1IgdHhjLm5hbWUg PSB0eHAuY2F0ZWdvcnkyKQogICAgIEdST1VQIEJZIHR4Yy5uYW1lJnF1b3Q7CiAgICAgZm9y bT0mcXVvdDtkYm91dCZxdW90OyB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7IGJyZWFrPSZxdW90 O2xpJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaXRoIGZvcm0gPGNvZGU+ZGJv dXQ8L2NvZGU+IGNvbnRhaW5pbmc6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpjYXRlZ29yeSBuYW1lPSZxdW90O3tuYW1lfSZxdW90OyBs aW5rPSZxdW90OzEmcXVvdDsgdGl0bGU9JnF1b3Q7MSZxdW90OyAvJmd0OyAoe2NvdW50fSkK PC9jb2RlPjwvcHJlPgoKCTxwPldpbGwgcmVhZCB0aGUgcGFyZW50IGl0ZW0gZnJvbSB0aGUg PGNvZGU+Y3VzdG9tMzwvY29kZT4gZmllbGQgYW5kIHJlbmRlciBhIHNpbWlsYXIgbGlzdCB0 byBFeGFtcGxlIDIgYnV0IHdpdGggdGhlIGFydGljbGUgY291bnRzIGFkZGVkIGluIHBhcmVu dGhlc2VzIGFmdGVyd2FyZHMuPC9wPgoKCTxoMyBpZD0iZWc0Ij5FeGFtcGxlIDQ8L2gzPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfcXVl cnkgY29sdW1uPSZxdW90OyomcXVvdDsgdGFibGU9JnF1b3Q7dHhwX2ZpbGUmcXVvdDsKICAg ICB3aGVyZT0mcXVvdDsoY2F0ZWdvcnk9JiMzOTs/Y2F0ZWdvcnkxJiMzOTsgT1IgY2F0ZWdv cnk9JiMzOTs/Y2F0ZWdvcnkyJiMzOTspCiAgICAgQU5EIHN0YXR1cz00IE9SREVSIEJZIGRv d25sb2FkcyBkZXNjIExJTUlUIDEwJnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDt0YWJsZSZx dW90OyBicmVhaz0mcXVvdDt0ciZxdW90OwogICAgIGxhYmVsPSZxdW90O01vc3QgcG9wdWxh ciBkb3dubG9hZHMmcXVvdDsgbGFiZWx0YWc9JnF1b3Q7aDMmcXVvdDsmZ3Q7CiAgJmx0O3Rk Jmd0OyZsdDt0eHA6ZmlsZV9kb3dubG9hZF9saW5rIGlkPSZxdW90O3tpZH0mcXVvdDsmZ3Q7 e2ZpbGVuYW1lfSZsdDsvdHhwOmZpbGVfZG93bmxvYWRfbGluayZndDsmbHQ7L3RkJmd0Owog ICZsdDt0ZCZndDt7ZGVzY3JpcHRpb259Jmx0Oy90ZCZndDsKICAmbHQ7dGQmZ3Q7ZG93bmxv YWRzOiB7ZG93bmxvYWRzfSZsdDsvdGQmZ3Q7CiZsdDt0eHA6ZWxzZSZndDsKICAmbHQ7cCZn dDtObyByZWNlbnQgZG93bmxvYWRzLCBzb3JyeSZsdDsvcCZndDsKJmx0Oy90eHA6c21kX3F1 ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhpcyBvbmUgdXNlcyB0aGUgcGx1Z2luIGFz IGEgY29udGFpbmVyIHRhZyBpbnN0ZWFkIG9mIGEgZm9ybSBhbmQgdGFidWxhdGVzIHRoZSB0 b3AgMTAgZG93bmxvYWRzIChzdGF0dXM9bGl2ZSkgdGhhdCBoYXZlIGEgY2F0ZWdvcnkgbWF0 Y2hpbmcgZWl0aGVyIG9mIHRoZSBjdXJyZW50IGFydGljbGUmIzgyMTc7cyBjYXRlZ29yaWVz LCB3aXRoIG1vc3QgcG9wdWxhciBsaXN0ZWQgZmlyc3QuIElmIHRoZXJlIGFyZSBubyBkb3du bG9hZHMsIHRoZSA8Y29kZT4mbHQ7dHhwOmVsc2UgLyZndDs8L2NvZGU+IHBvcnRpb24gZGlz cGxheXMgYSBtZXNzYWdlLjwvcD4KCgk8aDMgaWQ9ImVnNSI+RXhhbXBsZSA1PC9oMz4KCgk8 cD5WZXJ5IGludGVyZXN0aW5nIHVzZSBjYXNlIGhlcmUuIFB1dCB0aGlzIGluIHRoZSBwbGFp bmxpbmtzIGZvcm06PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O3R4cDpsaW5rZGVzY3RpdGxlIC8mZ3Q7CiZsdDt0eHA6c21kX3F1ZXJ5IHF1ZXJ5 PSZxdW90O1NFTEVDVCBESVNUSU5DVAogICAgIHR4cC5pZCwgdHhwLnRpdGxlIEZST00gdGV4 dHBhdHRlcm4gQVMgdHhwCiAgICAgV0hFUkUgKHR4cC5rZXl3b3JkcyBMSUtFICYjMzk7JSw/ Y2F0ZWdvcnklLCYjMzk7CiAgICAgT1IgdHhwLmtleXdvcmRzIExJS0UgJiMzOTslP2NhdGVn b3J5JSwmIzM5OwogICAgIE9SIHR4cC5rZXl3b3JkcyBMSUtFICYjMzk7JSw/Y2F0ZWdvcnkl JiMzOTspCiAgICAgR1JPVVAgQlkgdHhwLnRpdGxlJnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVv dDt1bCZxdW90OyBicmVhaz0mcXVvdDtsaSZxdW90OyZndDsKICAmbHQ7dHhwOnBlcm1saW5r IGlkPSZxdW90O3tpZH0mcXVvdDsmZ3Q7e3RpdGxlfSZsdDsvdHhwOnBlcm1saW5rJmd0Owom bHQ7L3R4cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaGVuIHlvdSBleGVj dXRlIDxjb2RlPiZsdDt0eHA6bGlua2xpc3QgLyZndDs8L2NvZGU+IGZyb20gYSBwYWdlIHlv dSB3aWxsIGdldCBhIGxpc3Qgb2YgbGlua3MgYXMgdXN1YWwsIGJ1dCB1bmRlciBlYWNoIG9u ZSB5b3Ugd2lsbCBzZWUgYSBoeXBlcmxpbmtlZCBsaXN0IG9mIGFydGljbGVzIHRoYXQgYXJl IHJlbGF0ZWQgKGJ5IGtleXdvcmQpIHRvIHRoZSBjYXRlZ29yeSBvZiB0aGUgbGluay48L3A+ CgoJPHA+VGhlIHJlYXNvbiBpdCBpcyBjb21wYXJlZCB0aHJlZSB0aW1lcyBpcyBiZWNhdXNl IGFydGljbGUga2V5d29yZHMgYXJlIHN0b3JlZCBsaWtlIHRoaXMgaW4gdGhlIGRhdGFiYXNl OjwvcD4KCgk8cD48Y29kZT5nb3Zlcm5tZW50LGNvbnNwaXJhY3ksaWQsY2FyZCxkYXRhLGJp b21ldHJpYyxiYWQsaWRlYTwvY29kZT48L3A+CgoJPHA+SWYgZWFjaCBjYXRlZ29yeSB3b3Jk IHdhcyBjb21wYXJlZCBvbmx5IG9uY2Ugd2l0aG91dCBjb21tYXMgKGkuZS4gPGNvZGU+dHhw LmtleXdvcmRzIExJS0UgJiMzOTslP2NhdGVnb3J5JSYjMzk7PC9jb2RlPikgdGhlbiBhIGxp bmsgd2l0aCBjYXRlZ29yeSA8Y29kZT5waXJhY3k8L2NvZGU+IHdvdWxkIGNhdXNlIGFueSBh cnRpY2xlIGNvbnRhaW5pbmcga2V5d29yZCA8Y29kZT5jb25zcGlyYWN5PC9jb2RlPiB0byBi ZSBpbmNsdWRlZC4gRXNzZW50aWFsbHksIGJ5IGNvbXBhcmluZyB0aGUgY2F0ZWdvcnkgZWl0 aGVyIHN1cnJvdW5kZWQgYnkgY29tbWFzLCB3aXRoIGEgY29tbWEgYWZ0ZXIgaXQsIG9yIHdp dGggYSBjb21tYSBiZWZvcmUgaXQsIHRoZSBzZWFyY2ggaXMgcmVzdHJpY3RlZCB0byBvbmx5 IG1hdGNoIHdob2xlIHdvcmRzLjwvcD4KCgk8aDMgaWQ9ImVnNiI+RXhhbXBsZSA2PC9oMz4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3F1 ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCAqCiAgICAgRlJPTSB0eHBfZmlsZSBXSEVSRSBkb3du bG9hZHMgJmFtcDtndDs9IDQyJnF1b3Q7Jmd0OwogICZsdDt0eHA6ZmlsZV9kb3dubG9hZF9s aW5rIGlkPSZxdW90O3tpZH0mcXVvdDsmZ3Q7CiAgICAge2ZpbGVuYW1lfQogICZsdDsvdHhw OmZpbGVfZG93bmxvYWRfbGluayZndDsKJmx0Oy90eHA6c21kX3F1ZXJ5Jmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+U2hvd3MgbGlua3MgdG8gYWxsIGRvd25sb2FkcyB3aGVyZSB0aGUgZG93 bmxvYWQgY291bnQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDQyLiBOb3RlIHRoYXQg dW5kZXIgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gNC4wLjYgYW5kIGJlbG93IHlv dSBtdXN0IHVzZSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGVudGl0eSBu YW1lcyBmb3IgPGNvZGU+JmFtcDtndDs8L2NvZGU+IGFuZCA8Y29kZT4mYW1wO2x0OzwvY29k ZT4gb3IgdGhlIHBhcnNlciBnZXRzIGNvbmZ1c2VkLjwvcD4KCgk8cD5RdWVyeS10YXN0aWMg Oi0pPC9wPgoKCTxoMiBjbGFzcz0iY2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2gyPgoKCTx1bD4K CQk8bGk+MjIgTWF5IDA4IHwgdjAuMSB8IEluaXRpYWwgcmVsZWFzZTwvbGk+CgkJPGxpPjIz IE1heSAwOCB8IHYwLjExIHwgQWxsb3dlZCBtYXRocyBpbiBxdWVyaWVzICh1c2UgaHRtbCBl bnRpdGllcyBpbiBUWFA0LjAuNikgYW5kIGZpeGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5XSEVS RTwvc3Bhbj4gY2xhdXNlIHRvIGRlZmF1bHQgdG8gMT0xIGlmIG5vbmUgc3VwcGxpZWQgKGJv dGggdGhhbmtzIGptKSA7IGFkZGVkIG1vcmUgZGV0YWlsZWQgZmlsZSBhbmQgbGluayBzdXBw b3J0PC9saT4KCQk8bGk+MTQgSnVsIDA4IHwgdjAuMTIgfCBBZGRlZCA8Y29kZT50eHA6ZWxz ZTwvY29kZT4gc3VwcG9ydCBpbiBjb250YWluZXIgKHRoYW5rcyBqYWtvYikgOyBhZGRlZCA8 Y29kZT5zaWxlbnQ8L2NvZGU+IGFuZCA8Y29kZT5jb3VudDwvY29kZT4gYXR0cmlidXRlcywg YW5kIHRoZSByZXBsYWNlbWVudCB0YWdzIDxjb2RlPntzbWRfcm93c30ge3NtZF90aGlzcm93 fSB7c21kX3RoaXNpbmRleH08L2NvZGU+PC9saT4KCTwvdWw+CgoJPHA+PC9kaXY+PC9wPgo8 IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5cGU9InRleHQvY3Nz Ij4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS40NSA7fQojc21kX2hlbHAgY29kZSB7IGZv bnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVy LCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29k ZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsg YmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHgg MTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxw IGE6dmlzaXRlZCB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRl ci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hl bHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVj b3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmct Ym90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdl b3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNz bWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzox MHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsg fQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzY5MzsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBz YW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQt dHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQojc21k X2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1z cGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNh c2U7IH0KI3NtZF9oZWxwIC5hdG4geyBmb250LXdlaWdodDpib2xkOyB9CiNzbWRfaGVscCAu bWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21k X2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90 dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlk ICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBl OnNxdWFyZTsgfQojc21kX2hlbHAgbGkgeyBtYXJnaW4tbGVmdDozNXB4OyB9CiNzbWRfaGVs cCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tIC0tLSBFTkQgUExV R0lOIENTUyAtLS0gLS0+CiI7czozOiJtZDUiO3M6MzI6IjRmNDVhYWYyMjVkY2Y1MTQ2ZTli YmNlOTQ5NmJjZDc3Ijt9