# Name: smd_query v0.2 # 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 b20vIjtzOjc6InZlcnNpb24iO3M6MzoiMC4yIjtzOjExOiJkZXNjcmlwdGlvbiI7czozMToi R2VuZXJpYyBkYXRhYmFzZSBhY2Nlc3MgdmlhIFNRTCI7czo0OiJjb2RlIjtzOjUyNjk6ImZ1 bmN0aW9uIHNtZF9xdWVyeSgkYXR0cywgJHRoaW5nPScnKSB7DQoJZXh0cmFjdChsQXR0cyhh cnJheSgNCgkJJ2NvbHVtbicgPT4gJycsDQoJCSd0YWJsZScgPT4gJycsDQoJCSd3aGVyZScg PT4gJycsDQoJCSdxdWVyeScgPT4gJycsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2NvbHNmb3Jt JyA9PiAnJywNCgkJJ3VybGZpbHRlcicgPT4gJycsDQoJCSd1cmxyZXBsYWNlJyA9PiAnJywN CgkJJ2RlZmF1bHRzJyA9PiAnJywNCgkJJ2RlbGltJyA9PiAnLCcsDQoJCSdwYXJhbWRlbGlt JyA9PiAnOicsDQoJCSdzaWxlbnQnID0+ICcwJywNCgkJJ2NvdW50JyA9PiAndXAnLA0KCQkn YnJlYWsnID0+ICcnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdsYWJlbCcgPT4gJycsDQoJ CSdsYWJlbHRhZycgPT4gJycsDQoJCSdjbGFzcycgPT4gJycsDQoJCSdkZWJ1ZycgPT4gJzAn LA0KCSksJGF0dHMpKTsNCg0KCS8vIEdyYWIgdGhlIGZvcm0gb3IgZW1iZWRkZWQgJHRoaW5n DQoJJHRoaW5nID0gKCR0aGluZykgPyAkdGhpbmcgOiBmZXRjaF9mb3JtKCRmb3JtKTsNCgkk Y29sc2Zvcm0gPSAoZW1wdHkoJGNvbHNmb3JtKSkgPyAnJyA6IGZldGNoX2Zvcm0oJGNvbHNm b3JtKTsNCg0KCSR1cmxmaWx0ZXIgPSAoIWVtcHR5KCR1cmxmaWx0ZXIpKSA/IGRvX2xpc3Qo JHVybGZpbHRlciwgJGRlbGltKSA6ICcnOw0KCSR1cmxyZXBsYWNlID0gKCFlbXB0eSgkdXJs cmVwbGFjZSkpID8gZG9fbGlzdCgkdXJscmVwbGFjZSwgJGRlbGltKSA6ICcnOw0KCWlmICgk ZGVidWcgPiAwKSB7DQoJCWVjaG8gIisrIFVSTCBGSUxURVJTICsrIjsNCgkJZG1wKCR1cmxm aWx0ZXIpOw0KCQlkbXAoJHVybHJlcGxhY2UpOw0KCX0NCg0KCS8vIFByb2Nlc3MgYW55IGRl ZmF1bHRzDQoJJGRlZmF1bHRzID0gZG9fbGlzdCgkZGVmYXVsdHMsICRkZWxpbSk7DQoJJGRm bHRzID0gYXJyYXkoKTsNCglmb3JlYWNoICgkZGVmYXVsdHMgYXMgJGl0ZW0pIHsNCgkJJGl0 ZW0gPSBkb19saXN0KCRpdGVtLCAkcGFyYW1kZWxpbSk7DQoJCWlmICgkaXRlbVswXSA9PSAn JykgY29udGludWU7DQoJCWlmIChjb3VudCgkaXRlbSkgPT0gMikgew0KCQkJJGRmbHRzWyRp dGVtWzBdXSA9IHNtZF9xdWVyeV9wYXJzZSgkaXRlbVsxXSk7DQoJCX0NCgl9DQoNCglpZiAo JGRlYnVnID4gMCkgew0KCQllY2hvICIrKyBERUZBVUxUUyArKyI7DQoJCWRtcCgkZGZsdHMp Ow0KCX0NCg0KCSRycyA9IGFycmF5KCk7DQoJJG91dCA9IGFycmF5KCk7DQoJJGNvbG91dCA9 IGFycmF5KCk7DQoNCgkvLyBxdWVyeSBvdmVycmlkZXMgY29sdW1uL3RhYmxlL3doZXJlDQoJ aWYgKCRxdWVyeSkgew0KCQkkcXVlcnkgPSBzbWRfcXVlcnlfcGFyc2UoJHF1ZXJ5LCAkZGZs dHMsICR1cmxmaWx0ZXIsICR1cmxyZXBsYWNlKTsNCgkJJHJzID0gKCRzaWxlbnQpID8gQGdl dFJvd3MoJHF1ZXJ5LCAkZGVidWcpIDogZ2V0Um93cygkcXVlcnksICRkZWJ1Zyk7DQoJfSBl bHNlIHsNCgkJaWYgKCRjb2x1bW4gJiYgJHRhYmxlKSB7DQoJCQkvLyBUT0RPOiBQZXJoYXBz IGRvU2xhc2goKSB0aGVzZT8NCgkJCSRjb2x1bW4gPSBzbWRfcXVlcnlfcGFyc2UoJGNvbHVt biwgJGRmbHRzLCAkdXJsZmlsdGVyLCAkdXJscmVwbGFjZSk7DQoJCQkkdGFibGUgPSBzbWRf cXVlcnlfcGFyc2UoJHRhYmxlLCAkZGZsdHMsICR1cmxmaWx0ZXIsICR1cmxyZXBsYWNlKTsN CgkJCSR3aGVyZSA9IHNtZF9xdWVyeV9wYXJzZSgkd2hlcmUsICRkZmx0cywgJHVybGZpbHRl ciwgJHVybHJlcGxhY2UpOw0KCQkJJHdoZXJlID0gKCR3aGVyZSkgPyAkd2hlcmUgOiAiMT0x IjsNCgkJCSRycyA9ICgkc2lsZW50KSA/IEBzYWZlX3Jvd3MoJGNvbHVtbiwgJHRhYmxlLCAk d2hlcmUsICRkZWJ1ZykgOiBzYWZlX3Jvd3MoJGNvbHVtbiwgJHRhYmxlLCAkd2hlcmUsICRk ZWJ1Zyk7DQoJCX0gZWxzZSB7DQoJCQl0cmlnZ2VyX2Vycm9yKCJZb3UgbXVzdCBzcGVjaWZ5 IGF0IGxlYXN0IDEgJ2NvbHVtbicgYW5kIGEgJ3RhYmxlJy4iKTsNCgkJfQ0KCX0NCg0KCSRu dW1yb3dzID0gY291bnQoJHJzKTsNCgkkdHJ1ZVBhcnQgPSBFdmFsRWxzZSgkdGhpbmcsIDEp Ow0KDQoJaWYgKCRycykgew0KCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJZWNobyAiKysgUVVF UlkgUkVTVUxUIFNFVCArKyI7DQoJCQlkbXAoY291bnQoJHJzKS4gIiBST1dTIik7DQoJCQlk bXAoJHJzKTsNCgkJfQ0KCQkkcmVwbGFjZW1lbnRzID0gYXJyYXkoKTsNCgkJJGNvbHJlcGxh Y2VtZW50cyA9IGFycmF5KCk7DQoJCSRxcnlfcm93Y250ID0gKCRjb3VudD09InVwIikgPyAw IDogJG51bXJvd3MtMTsNCgkJZm9yZWFjaCAoJHJzIGFzICRyb3cpIHsNCgkJCWZvcmVhY2gg KCRyb3cgYXMgJGNvbGlkID0+ICR2YWwpIHsNCgkJCQlpZiAoJHFyeV9yb3djbnQgPT0gMCAm JiAkY29sc2Zvcm0pIHsNCgkJCQkJJGNvbHJlcGxhY2VtZW50c1sneycuJGNvbGlkLid9J10g PSAkY29saWQ7DQoJCQkJfQ0KCQkJCS8vIENvbnN0cnVjdCB0aGUgcmVwbGFjZW1lbnQgYXJy YXkNCgkJCQkkcmVwbGFjZW1lbnRzWyd7Jy4kY29saWQuJ30nXSA9ICR2YWw7DQoJCQl9DQoJ CQkkcmVwbGFjZW1lbnRzWyd7c21kX3Jvd3N9J10gPSAkbnVtcm93czsNCgkJCSRyZXBsYWNl bWVudHNbJ3tzbWRfdGhpc2luZGV4fSddID0gJHFyeV9yb3djbnQ7DQoJCQkkcmVwbGFjZW1l bnRzWyd7c21kX3RoaXNyb3d9J10gPSAkcXJ5X3Jvd2NudCArIDE7DQoJCQlpZiAoJGRlYnVn ID4gMCkgew0KCQkJCWVjaG8gIisrIFJFUExBQ0VNRU5UUyArKyI7DQoJCQkJZG1wKCRyZXBs YWNlbWVudHMpOw0KCQkJfQ0KCQkJJG91dFtdID0gcGFyc2Uoc3RydHIoJHRydWVQYXJ0LCAk cmVwbGFjZW1lbnRzKSk7DQoJCQkkcXJ5X3Jvd2NudCA9ICgkY291bnQ9PSJ1cCIpID8gJHFy eV9yb3djbnQrMSA6ICRxcnlfcm93Y250LTE7DQoJCX0NCg0KCQlpZiAoJG91dCkgew0KCQkJ aWYgKCRjb2xyZXBsYWNlbWVudHMpIHsNCgkJCQkkY29sb3V0W10gPSBwYXJzZShzdHJ0cigk Y29sc2Zvcm0sICRjb2xyZXBsYWNlbWVudHMpKTsNCgkJCX0NCgkJCXJldHVybiBkb0xhYmVs KCRsYWJlbCwgJGxhYmVsdGFnKS5kb1dyYXAoYXJyYXlfbWVyZ2UoJGNvbG91dCwkb3V0KSwg JHdyYXB0YWcsICRicmVhaywgJGNsYXNzKTsNCgkJfQ0KCX0gZWxzZSB7DQoJCXJldHVybiBw YXJzZShFdmFsRWxzZSgkdGhpbmcsIDApKTsNCgl9DQoJcmV0dXJuICcnOw0KfQ0KDQovLyBS ZXR1cm5zIGEgc3RyaW5nIHdpdGggYW55ID8gdmFyaWFibGVzIHJlcGxhY2VkIHdpdGggdGhl aXIgZ2xvYmFscw0KLy8gVVJMIFZhcmlhYmxlcyBhcmUgb3B0aW9uYWxseSBydW4gdGhyb3Vn aCBwcmVnX3JlcGxhY2UoKSB0byBzYW5pdGl6ZSB0aGVtLg0KLy8gICRwYXQgaXMgYW4gYXJy YXkgb2YgcmVnZXggc2VhcmNoIHBhdHRlcm5zDQovLyAgJHJlcCBpcyBhbiBhcnJheSBvZiBy ZWdleCBzZWFyY2ggcmVwYWxjZW1lbnRzIChkZWZhdWx0ID0gJycsIGkuZS4gcmVtb3ZlIHdo YXRldmVyIG1hdGNoZXMpDQpmdW5jdGlvbiBzbWRfcXVlcnlfcGFyc2UoJGl0ZW0sICRkZmx0 cz1hcnJheSgnJyksICRwYXQ9YXJyYXkoJycpLCAkcmVwPWFycmF5KCcnKSkgew0KCWdsb2Jh bCAkcHJldGV4dCwgJHRoaXNhcnRpY2xlLCAkdGhpc2ltYWdlLCAkdGhpc2ZpbGUsICR0aGlz bGluaywgJHZhcmlhYmxlOw0KDQoJJGl0ZW0gPSBodG1sX2VudGl0eV9kZWNvZGUoJGl0ZW0p Ow0KCSRtb2RSRSA9ICcvKFw/KShbQS1aYS16MC05X1wtIF0rKS8nOw0KCSRudW1Nb2RzID0g cHJlZ19tYXRjaF9hbGwoJG1vZFJFLCAkaXRlbSwgJG1vZHMpOw0KDQoJZm9yICgkbW9kQ3Ry ID0gMDsgJG1vZEN0ciA8ICRudW1Nb2RzOyAkbW9kQ3RyKyspIHsNCgkJJG1vZENoYXIgPSAk bW9kc1sxXVskbW9kQ3RyXTsNCgkJJG1vZEl0ZW0gPSB0cmltKCRtb2RzWzJdWyRtb2RDdHJd KTsNCgkJJGxvd2l0ZW0gPSBzdHJ0b2xvd2VyKCRtb2RJdGVtKTsNCgkJJHVybHZhciA9ICcn Ow0KCQlpZiAoZ3BzKCRsb3dpdGVtKSAhPSAnJykgew0KCQkJJHVybHZhciA9IGRvU2xhc2go Z3BzKCRsb3dpdGVtKSk7DQoJCQlpZiAoJHVybHZhciAmJiAkcGF0KSB7DQoJCQkJJHVybHZh ciA9IHByZWdfcmVwbGFjZSgkcGF0LCAkcmVwLCAkdXJsdmFyKTsNCgkJCX0NCgkJfQ0KDQoJ CWlmIChpc3NldCgkdmFyaWFibGVbJGxvd2l0ZW1dKSkgew0KCQkJJGl0ZW0gPSBzdHJfcmVw bGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHZhcmlhYmxlWyRsb3dpdGVtXSwgJGl0ZW0pOw0K CQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzaW1hZ2VbJGxvd2l0ZW1dKSAmJiAhZW1wdHkoJHRo aXNpbWFnZVskbG93aXRlbV0pKSB7DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFy LiRtb2RJdGVtLCAkdGhpc2ltYWdlWyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQl9IGVsc2UgaWYg KGlzc2V0KCR0aGlzZmlsZVskbG93aXRlbV0pICYmICFlbXB0eSgkdGhpc2ZpbGVbJGxvd2l0 ZW1dKSkgew0KCQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHRo aXNmaWxlWyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzbGlu a1skbG93aXRlbV0pICYmICFlbXB0eSgkdGhpc2xpbmtbJGxvd2l0ZW1dKSkgew0KCQkJJGl0 ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHRoaXNsaW5rWyRsb3dpdGVt XSwgJGl0ZW0pOw0KCQl9IGVsc2UgaWYgKGFycmF5X2tleV9leGlzdHMoJGxvd2l0ZW0sICRw cmV0ZXh0KSAmJiAhZW1wdHkoJHByZXRleHRbJGxvd2l0ZW1dKSkgew0KCQkJJGl0ZW0gPSBz dHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHByZXRleHRbJGxvd2l0ZW1dLCAkaXRl bSk7DQoJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyRsb3dpdGVtXSkgJiYgIWVt cHR5KCR0aGlzYXJ0aWNsZVskbG93aXRlbV0pKSB7DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNl KCRtb2RDaGFyLiRtb2RJdGVtLCAkdGhpc2FydGljbGVbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJ CX0gZWxzZSBpZiAoJHVybHZhciAhPSAnJykgew0KCQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgk bW9kQ2hhci4kbW9kSXRlbSwgJHVybHZhciwgJGl0ZW0pOw0KCQl9IGVsc2UgaWYgKGlzc2V0 KCRkZmx0c1skbG93aXRlbV0pKSB7DQoJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFy LiRtb2RJdGVtLCAkZGZsdHNbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCX0gZWxzZSB7DQoJCQkk aXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkbW9kSXRlbSwgJGl0ZW0p Ow0KCQl9DQoJfQ0KCXJldHVybiAkaXRlbTsNCn0iO3M6NDoidHlwZSI7czoxOiIwIjtzOjU6 Im9yZGVyIjtzOjE6IjUiO3M6NDoiaGVscCI7czoyNDQ0NToiCTxwPjxkaXYgaWQ9InNtZF9o ZWxwIj48L3A+CgoJPGgxPnNtZF9xdWVyeTwvaDE+CgoJPHA+VGhlIGxhemllc3QgdGFnIGV2 ZXIhIEFsbG93cyB5b3UgdG8gbWFrZSBhZC1ob2MgcXVlcmllcyB0byB0aGUgZGF0YWJhc2Ug YW5kIHByb2Nlc3MgdGhlIHJlc3VsdHMsIHJvdyBieSByb3csIGluIGEgZm9ybSBvciBjb250 YWluZXIuPC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5TdXBwb3J0cyBz aW1wbGUgcXVlcmllcyB3aXRoIGEgcmVkdWNlZCBzeW50YXggKDxzcGFuIGNsYXNzPSJjYXBz Ij5TRUxFQ1Q8L3NwYW4+IGNvbHMgPHNwYW4gY2xhc3M9ImNhcHMiPkZST008L3NwYW4+IHRh YmxlIDxzcGFuIGNsYXNzPSJjYXBzIj5XSEVSRTwvc3Bhbj4gY2xhdXNlKSBvciB5b3VyIG93 biBjdXN0b20gcXVlcmllczwvbGk+CgkJPGxpPlJlYWQgaW5mb3JtYXRpb24gZnJvbSBhbnkg cGFydCBvZiB0aGUgY3VycmVudCBhcnRpY2xlLCBpbWFnZSAocGxhbm5lZCksIGZpbGUsIGxp bmssIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+IG9yIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUuIElmIGFueSBmaWVsZHMgYXJlIG1pc3NpbmcgeW91 IGNhbiBzcGVjaWZ5IGEgZGVmYXVsdCB2YWx1ZTwvbGk+CgkJPGxpPk9wdGlvbmFsbHkgZmls dGVyIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBpbnB1dCB1c2luZyByZWd1 bGFyIGV4cHJlc3Npb25zLCBmb3Igc2FmZXR5PC9saT4KCQk8bGk+RWFjaCByb3cgY2FuIGJl IHBhc3NlZCB0byBhIGZvcm0gKG9yIHRoZSBwbHVnaW4gY2FuIGJlIHVzZWQgYXMgYSBjb250 YWluZXIgdGFnIHdpdGggb3Igd2l0aG91dCA8Y29kZT4mbHQ7dHhwOmVsc2UgLyZndDs8L2Nv ZGU+KSB0byBkaXNwbGF5IHRoZSByZXN1bHRzPC9saT4KCQk8bGk+Q29sdW1uIGhlYWRpbmdz IG1heSBiZSBvdXRwdXQgdXNpbmcgYSBzZWNvbmQgZm9ybTwvbGk+CgkJPGxpPk1heSBkZXN0 cm95IHlvdXIgZGF0YWJhc2UgaWYgdXNlZCB3cm9uZ2x5LiBCYWNrdXAsIGJhY2t1cCBiYWNr dXAmIzgyMzA7PC9saT4KCTwvdWw+CgoJPGgyPkF1dGhvcjwvaDI+CgoJPHA+PGEgaHJlZj0i aHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbW1lbnRGb3JtIj5TdGVmIERhd3NvbjwvYT48L3A+ CgoJPGgyPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cD5Eb3dubG9h ZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5v cmcvcGx1Z2lucy85NzYvc21kX3F1ZXJ5Ij50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUg PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPiwg cGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g QWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdp bi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmll d3RvcGljLnBocD9pZD0yNzI3OSI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9y IHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48 L3A+CgoJPHA+VW5pbnN0YWxsIGJ5IHNpbXBseSBkZWxldGluZyB0aGUgcGx1Z2luIGZyb20g dGhlIEFkbWluLSZndDtQbHVnaW5zIHBhbmUuPC9wPgoKCTxoMj5Vc2FnZTwvaDI+CgoJPHA+ VXNlIHRoZSB0YWcgaW4gYW55IHBhZ2UsIGZvcm0sIGFydGljbGUsIGZpbGUsIGxpbmssIGV0 YyBjb250ZXh0IHRvIGdyYWIgc3R1ZmYgZnJvbSB0aGUgZGF0YWJhc2UuPC9wPgoKCTxoMyBj bGFzcz0idGFnIj5zbWRfcXVlcnk8L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+T3Bl cmF0ZXMgaW4gdHdvIG1vZGVzOiBzaW1wbGUgbW9kZSBqdXN0IGFsbG93cyA8Y29kZT5TRUxF Q1Qgc3R1ZmYgRlJPTSB0YWJsZSBXSEVSRSBjbGF1c2U8L2NvZGU+LiBCeSB1c2luZyB0aGUg PGNvZGU+cXVlcnk8L2NvZGU+IGF0dHJpYnV0ZSB5b3Ugc3dpdGNoIHRoZSBwbHVnaW4gdG8g Y29tcGxleCBtb2RlIGFuZCB5b3UgY2FuIGRlc2lnbiB5b3VyIG93biBxdWVyeS4gSXQgY2Fu IGluY2x1ZGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNPVU5UPC9zcGFuPiAoKiksIGpvaW5zLCBh bnl0aGluZzsgcGVyaGFwcyBldmVuIDxzcGFuIGNsYXNzPSJjYXBzIj5JTlNFUlQ8L3NwYW4+ IGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVBEQVRFPC9zcGFuPiAoPykgYWx0aG91Z2ggaXQm IzgyMTc7cyB1bnRlc3RlZCBhbmQgbGlhYmxlIHRvIGZsb29kaW5nLjwvcD4KCgk8aDQgY2xh c3M9ImF0dHMgIiBpZD0iYXR0cmlidXRlcyI+QXR0cmlidXRlczwvaDQ+CgoJPHVsIGNsYXNz PSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+Y29sdW1uPC9zcGFuPiA6IChzaW1w bGUgbW9kZSkgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29sdW1ucyB0byByZXRyaWV2ZSBm cm9tIHRoZSBkYXRhYmFzZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPnRhYmxlPC9z cGFuPiA6IChzaW1wbGUgbW9kZSkgbmFtZSBvZiB0aGUgdGFibGUgdG8gcmV0cmlldmUgdGhl IGNvbHVtbnMgZnJvbSAoeWVzLCBub24tPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g dGFibGVzIGFyZSBhbHNvIHN1cHBvcnRlZCBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBkYXRh YmFzZSA6LSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj53aGVyZTwvc3Bhbj4gOiAo c2ltcGxlIG1vZGUpIGFueSBleHRyYSBjbGF1c2UgeW91IHdpc2ggdG8gc3BlY2lmeS4gRGVm YXVsdHMgdG8gJiM4MjIwO3RoZSB3aG9sZSBkYXJuIHRhYmxlJiM4MjIxOzwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG4iPnF1ZXJ5PC9zcGFuPiA6IChjb21wbGV4IG1vZGUpIGFueSBx dWVyeSB5b3UgbGlrZSBjYW4gYmUgdXNlZCBoZXJlLiBPdmVycmlkZXMgPGNvZGU+Y29sdW1u PC9jb2RlPiwgPGNvZGU+dGFibGU8L2NvZGU+IGFuZCA8Y29kZT53aGVyZTwvY29kZT48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj5mb3JtPC9zcGFuPiA6IHRoZSBmb3JtIHRvIHVz ZSB0byBwYXJzZSBlYWNoIHJldHVybmVkIHJvdy4gU2VlIDxhIGhyZWY9IiNyZXBsYWNlbWVu dHMiPnJlcGxhY2VtZW50czwvYT4uIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBwbHVnaW4gd2ls bCB1c2UgYW55dGhpbmcgY29udGFpbmVkIGJldHdlZW4gaXRzIG9wZW5pbmcgYW5kIGNsb3Np bmcgdGFnPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+Y29sc2Zvcm08L3NwYW4+IDog c2Vjb25kIGZvcm0gdG8gcGFyc2UgYW55IGhlYWRlciByb3cgY29udGFpbmluZyBjb2x1bW4g bmFtZXMgKG9mIGxpbWl0ZWQgdXNlKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPnVy bGZpbHRlcjwvc3Bhbj4gOiBmaWx0ZXIgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4g aW5wdXQgd2l0aCB0aGlzIGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucyAoZWFjaCBzZXBh cmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG4iPnVybHJlcGxhY2U8L3NwYW4+IDogcmVwbGFjZSBlYWNoIGZpbHRlcmVkIDxzcGFuIGNs YXNzPSJjYXBzIj5VUkw8L3NwYW4+IGVsZW1lbnQgbGlzdGVkIGluIDxjb2RlPnVybGZpbHRl cjwvY29kZT4gd2l0aCB0aGlzIGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucyAoZWFjaCBz ZXBhcmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+KS4gSWYgbm90IHVzZWQsIGFueXRoaW5n IG1hdGNoaW5nIDxjb2RlPnVybGZpbHRlcjwvY29kZT4gd2lsbCBiZSByZW1vdmVkIGZyb20g YW55IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlcy4gU2VlIDxhIGhy ZWY9IiNmaWx0ZXJpbmciPkZpbHRlcmluZyBhbmQgaW5qZWN0aW9uPC9hPjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG4iPmRlZmF1bHRzPC9zcGFuPiA6IGNvbW1hIHNlcGFyYXRlZCBs aXN0IG9mIHZhbHVlcyB0byB1c2UgaW4gdGhlIGV2ZW50IHNvbWUgZmllbGQgeW91IHNwZWNp ZmllZCBkb2VzbiYjODIxNzt0IGV4aXN0LiBFYWNoIGRlZmF1bHQgc2hvdWxkIGJlIGdpdmVu IGFzIDxjb2RlPm5hbWU6IHZhbHVlPC9jb2RlPiAodGhlIDxjb2RlPjo8L2NvZGU+IGlzIGNv bmZpZ3VyYWJsZSB2aWEgdGhlIDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+IGF0dHJpYnV0ZSku IEZvciBleGFtcGxlIDxjb2RlPmRlZmF1bHRzPSZxdW90O2lkOiAxLCBteV9jYXQ6IG1hbW1h bHMsIHVzZXJfc2VjOiA/ZGVmc2VjJnF1b3Q7PC9jb2RlPiB3b3VsZCBtZWFuIHRoYXQgaWYg dGhlIDxjb2RlPmlkPC9jb2RlPiBmaWVsZCB3YXMgYmxhbmssIHRoZSBudW1iZXIgMSB3b3Vs ZCBiZSB1c2VkOyBpZiB0aGUgdmFyaWFibGUgPGNvZGU+bXlfY2F0PC9jb2RlPiB3YXMgZW1w dHksIHRoZSB3b3JkIDxjb2RlPm1hbW1hbHM8L2NvZGU+IHdvdWxkIGJlIHVzZWQ7IGFuZCBp ZiB0aGUgPGNvZGU+dXNlcl9zZWM8L2NvZGU+IHZhcmlhYmxlIHdhcyBlbXB0eSwgdXNlIHRo ZSBkZWZhdWx0IHZhbHVlIGFzIGZvdW5kIGluIHRoZSB2YXJpYWJsZSA8Y29kZT5kZWZzZWM8 L2NvZGU+ICh3aGljaCBjb3VsZCBoYXZlIGJlZW4gc2V0IHZpYSBhIDxjb2RlPiZsdDt0eHA6 dmFyaWFibGUgLyZndDs8L2NvZGU+IGVhcmxpZXIgaW4gdGhlIHBhZ2UpPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0biI+ZGVsaW08L3NwYW4+IDogdGhlIGRlbGltaXRlciB0byB1c2Ug YmV0d2VlbiBwYXR0ZXJucyBpbiA8Y29kZT51cmxmaWx0ZXI8L2NvZGU+IGFuZCA8Y29kZT51 cmxyZXBsYWNlPC9jb2RlPi4gRGVmYXVsdDogY29tbWEgKDxjb2RlPiw8L2NvZGU+KTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPnBhcmFtZGVsaW08L3NwYW4+IDogdGhlIGRlbGlt aXRlciB0byB1c2UgYmV0d2VlbiBuYW1lLXZhbHVlIHBhaXJzIGluIDxjb2RlPmRlZmF1bHRz PC9jb2RlPi4gRGVmYXVsdDogY29sb24gKDxjb2RlPjo8L2NvZGU+KTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG4iPnNpbGVudDwvc3Bhbj4gOiBpZiB5b3VyIHF1ZXJ5IGNvbnRhaW5z IGFuIGVycm9yICh3cm9uZyBjb2x1bW4gbmFtZSBvciBzb21lIG1hbGZvcm1lZCBpbnB1dCks IHRoZSBwbHVnaW4gd2lsbCBpc3N1ZSBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+ IGVycm9yIG1lc3NhZ2UuIFVzaW5nIDxjb2RlPnNpbGVudD0mcXVvdDsxJnF1b3Q7PC9jb2Rl PiB3aWxsIGF0dGVtcHQgdG8gaGlkZSB0aGlzIGVycm9yIG1lc3NhZ2U8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRuIj5jb3VudDwvc3Bhbj4gOiBDYW4gYmUgZWl0aGVyICYjODIyMDt1 cCYjODIyMTsgKHRoZSBkZWZhdWx0KSBvciAmIzgyMjA7ZG93biYjODIyMTsuIFNlZSA8YSBo cmVmPSIjcmVwbGFjZW1lbnRzIj57c21kX3RoaXNyb3d9PC9hPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG4iPmxhYmVsPC9zcGFuPiA6IGxhYmVsIHRvIGRpc3BsYXkgYWJvdmUgdGhl IGVudGlyZSBvdXRwdXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj5sYWJlbHRhZzwv c3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgdGhlIGxhYmVsIHdpdGguIFNw ZWNpZnkgaXQgd2l0aG91dCBhbmdsZSBicmFja2V0cyAoZS5nLiA8Y29kZT5sYWJlbHRhZz0m cXVvdDtoMyZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+d3Jh cHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSBv dXRwdXQgKGUuZy4gPGNvZGU+d3JhcHRhZz0mcXVvdDt0YWJsZSZxdW90OzwvY29kZT4pPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+YnJlYWs8L3NwYW4+IDogZWFjaCByb3cgd2ls bCBiZSB3cmFwcGVkIHdpdGggdGhpcyB0YWcgKGUuZy4gPGNvZGU+YnJlYWs9JnF1b3Q7dHIm cXVvdDs8L2NvZGU+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPmNsYXNzPC9zcGFu PiA6IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkg dG8gZWFjaCByb3c8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj5kZWJ1Zzwvc3Bhbj4g OiBzZXQgdG8gMSB0byBzaG93IHNvbWUgZGVidWcgb3V0cHV0OyB1c2UgMiB0byBzaG93IGEg Yml0IG1vcmUgZGV0YWlsPC9saT4KCTwvdWw+CgoJPHA+VGhlIGF0dHJpYnV0ZXMgPGNvZGU+ cXVlcnk8L2NvZGU+LCA8Y29kZT5jb2x1bW48L2NvZGU+LCA8Y29kZT50YWJsZTwvY29kZT4g YW5kIDxjb2RlPndoZXJlPC9jb2RlPiBjYW4gY29udGFpbiByZXBsYWNlbWVudHMgdGhlbXNl bHZlcyB0byByZWFkIHZhbHVlcyBmcm9tIHRoZSBjdXJyZW50IGFydGljbGUuIFNwZWNpZnkg dGhlIGZpZWxkIG5hbWUgd2l0aCBhIDxjb2RlPj88L2NvZGU+IGluIGZyb250IG9mIGl0IChl LmcuIDxjb2RlPnF1ZXJ5PSZxdW90O1NFTEVDVCAqIEZST00gdHhwX2ltYWdlIFdIRVJFIGNh dGVnb3J5PSYjMzk7P2NhdGVnb3J5MSYjMzk7IE9SIGNhdGVnb3J5PSYjMzk7P2NhdGVnb3J5 MiYjMzk7PC9jb2RlPikgd291bGQgc2hvdyBpbWFnZXMgdGhhdCBoYWQgdGhlaXIgY2F0ZWdv cnkgc2V0IHRvIG9uZSBvZiB0aGUgYXJ0aWNsZSYjODIxNztzIGNhdGVnb3JpZXMuPC9wPgoK CTxwPlRoZSAmIzgyMTY7PyYjODIxNzsgZmllbGRzIGNhbiBiZSBhbnkgaXRlbSBmcm9tIHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB1bml2ZXJzZSwgaW5jbHVkaW5nIGFu eXRoaW5nIHNldCBpbiBhIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+IG9y IHNvbWUgdXNlci1pbnB1dCBvbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4g YWRkcmVzcyBiYXIuIEZpZWxkcyBhcmUgcHJvY2Vzc2VkIGluIHRoZSBmb2xsb3dpbmcgb3Jk ZXI7IGFzIHNvb24gYXMgYSBtYXRjaGluZyBlbnRyeSBpcyBmb3VuZCwgdGhlIHJlc3QgYXJl IG5vdCBjaGVja2VkOjwvcD4KCgk8cD48Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9j b2RlPiAtJmd0OyBpbWFnZSAtJmd0OyBmaWxlIC0mZ3Q7IGxpbmsgLSZndDsgZ2xvYmFsIGFy dGljbGUgLSZndDsgY3VycmVudCBhcnRpY2xlIC0mZ3Q7IDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IHZhciAtJmd0OyBkZWZhdWx0IHZhbHVlIC0mZ3Q7IHZlcmJhdGltICh3aXRo b3V0ICYjODIxNjs/JiM4MjE3Oyk8L3A+CgoJPHA+VGhpcyBoaWVyYXJjaHkgYWxsb3dzIHNv bWUgZGVncmVlIG9mIHNhZmV0eTogc2luY2UgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gdmFyaWFibGVzIGFyZSB1bHRpbWF0ZWx5IHNldCBieSB5b3UsIHRoZXkgYXJlIGNoZWNr ZWQgZmlyc3QsIHRoZW4gZ3JhZHVhbGx5IGxlc3Mgc3BlY2lmaWMgc3R1ZmYgaXMgY2hlY2tl ZCB1bnRpbCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZXMgYXJlIGNv bnNpZGVyZWQgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZm9vZCBjaGFpbi48L3A+CgoJPGgyIGNs YXNzPSJhdHRzICIgaWQ9InJlcGxhY2VtZW50cyI+UmVwbGFjZW1lbnQgdGFnczwvaDI+CgoJ PHA+SW4geW91ciBvdXRwdXQgZm9ybSB5b3UgbWF5IHNwZWNpZnkgYW55IGNvbHVtbiBuYW1l IHN1cnJvdW5kZWQgd2l0aCA8Y29kZT57fTwvY29kZT4gY2hhcmFjdGVycyB0byBkaXNwbGF5 IHRoYXQgZmllbGQuIFNvIGlmIHlvdXIgcXVlcnkgd2FzIDxjb2RlPlNFTEVDVCBpZCwgbmFt ZSwgY2F0ZWdvcnkgRlJPTSB0eHBfaW1hZ2UgV0hFUkUgZXh0PSZxdW90Oy5qcGcmcXVvdDs8 L2NvZGU+IHlvdSB3b3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcmVwbGFjZW1lbnRzIGF2YWls YWJsZTo8L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj57aWR9PC9zcGFuPiA6 IHRoZSBpbWFnZSBJRDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG4iPntuYW1lfTwvc3Bh bj4gOiB0aGUgaW1hZ2UgZmlsZW5hbWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRuIj57 Y2F0ZWdvcnl9PC9zcGFuPiA6IHRoZSBpbWFnZSBjYXRlZ29yeTwvbGk+Cgk8L3VsPgoKCTxw Pkp1c3QgcHV0IHRob3NlIG5hbWVzIGludG8geW91ciA8Y29kZT5mb3JtPC9jb2RlPiBhbW9u ZyBvdGhlciBub3JtYWwgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IG9yIDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MsIGFuZCB0aGUgcmVsZXZhbnQgdmFsdWUg ZnJvbSB0aGF0IHJvdyB3aWxsIGJlIGRpc3BsYXllZC4gVGhlIHJlcGxhY2VtZW50cyBob25v dXIgYW55IDxjb2RlPkFTPC9jb2RlPiBzdGF0ZW1lbnQgeW91IG1heSBlbXBsb3kgdG8gcmVu YW1lIHRoZW0uPC9wPgoKCTxwPkluIGFkZGl0aW9uLCB0aGVyZSBhcmUgdGhyZWUgcmVwbGFj ZW1lbnRzIGFkZGVkIHRvIGVhY2ggcm93OjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG4iPntzbWRfcm93c308L3NwYW4+IDogdGhlIHRvdGFsIG51bWJlciBvZiByb3dzIGlu IHRoZSByZXN1bHQgc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0biI+e3NtZF90aGlz cm93fTwvc3Bhbj4gOiB0aGUgY3VycmVudCByb3cgbnVtYmVyPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0biI+e3NtZF90aGlzaW5kZXh9PC9zcGFuPiA6IHRoZSBjdXJyZW50IHJvdyBu dW1iZXIgKHplcm8tYmFzZWQpPC9saT4KCTwvdWw+CgoJPHA+VGhlc2UgYXJlIHVzZWZ1bCBm b3IgdGFibGVzIHRvIHNob3cgcm93IG51bWJlcnMsIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGZv ciBwYWdpbmF0aW9uIG9yIGNhbiBiZSB0ZXN0ZWQgd2l0aCBzbWRfaWYgdG8gdGFrZSBhY3Rp b24gZnJvbSB3aXRoaW4geW91ciBmb3JtLiA8Y29kZT57c21kX3RoaXNyb3d9PC9jb2RlPiBh bmQgPGNvZGU+e3NtZF90aGlzaW5kZXh9PC9jb2RlPiBjb3VudCB1cCBvciBkb3duIGRlcGVu ZGluZyBvbiB0aGUgPGNvZGU+Y291bnQ8L2NvZGU+IGF0dHJpYnV0ZS48L3A+CgoJPGgyIGlk PSJmaWx0ZXJpbmciPkZpbHRlcmluZyBhbmQgaW5qZWN0aW9uPC9oMj4KCgk8cD5BZnRlciBn cmVhdCBkZWxpYmVyYXRpb24sIGFjY2VzcyB0byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4gbGluZSBoYXMgYmVlbiBncmFudGVkIHNvIHlvdSBtYXkgZW1wbG95IHVzZXIt ZW50ZXJlZCBkYXRhIGluIHlvdXIgcXVlcmllcywgYWxsb3dpbmcgY29tcGxldGUgZmxleGli aWxpdHkgZm9yIHlvdXIgdXNlciBiYXNlLiBIb3dldmVyLCBhcyBQZXRlciBQYXJrZXImIzgy MTc7cyBjb25zY2llbmNlIG1pZ2h0IHNheTo8L3A+CgoJPGJsb2NrcXVvdGU+CgkJPHA+V2l0 aCBncmVhdCBwb3dlciBjb21lcyBncmVhdCByZXNwb25zaWJpbGl0eTwvcD4KCTwvYmxvY2tx dW90ZT4KCgk8cD5Ob3QgZXZlcnlib2R5IG91dCB0aGVyZSBpcyB0cnVzdHdvcnRoeSBzbyBo ZWVkIHRoaXMgd2FybmluZzogPHN0cm9uZz5Bc3N1bWUgPHNwYW4gY2xhc3M9ImNhcHMiPkFM TDwvc3Bhbj4gdXNlciBpbnB1dCBpcyB0YWludGVkIGJ5IGRlZmF1bHQ8L3N0cm9uZz4uIENo ZWNrIGV2ZXJ5dGhpbmcuIElmIHlvdSB3YW50IHRvIGtub3cgbW9yZSBhYm91dCB3aGF0IHBl b3BsZSBjYW4gZG8gd2l0aCBhY2Nlc3MgdG8gb25lIHNpbXBsZSBwb3J0aW9uIG9mIHlvdXIg PHNwYW4gY2xhc3M9ImNhcHMiPlNRTDwvc3Bhbj4gcXVlcnksIEdvb2dsZSBmb3IgJiM4MjE2 OzxzcGFuIGNsYXNzPSJjYXBzIj5TUUw8L3NwYW4+IGluamVjdGlvbiYjODIxNzsuPC9wPgoK CTxwPkZvciB0aG9zZSBzdGlsbCByZWFkaW5nLCB0aGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhl IHBsdWdpbiBkb2VzIGV2ZXJ5dGhpbmcgaXQgY2FuIHRvIHByZS1maWx0ZXIgc3R1ZmYgb24g dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUgYmVmb3JlIGl0IGdldHMg dG8gdGhlIHF1ZXJ5LiBUaGlzIHNob3VsZCBtYWtlIHlvdXIgdXNlciBpbnB1dCBzYWZlIGVu b3VnaCwgYnV0IGZvciB0aGUgcGFyYW5vaWQgKG9yIHNlbnNpYmxlKSB0aGVyZSBhcmUgdHdv IGF0dHJpYnV0ZXMgeW91IGNhbiB1c2UgdG8gY2xhbXAgZG93biBhbGxvd2FibGUgdXNlciBp bnB1dC4gSWYgeW91IGtub3cgYW55dGhpbmcgYWJvdXQgPGEgaHJlZj0iaHR0cDovL3d3dy5y ZWd1bGFyLWV4cHJlc3Npb25zLmluZm8vcXVpY2tzdGFydC5odG1sIj5yZWd1bGFyIGV4cHJl c3Npb25zPC9hPiBvciBhcmUgZmFtaWxpYXIgd2l0aCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMi PlBIUDwvc3Bhbj4gZnVuY3Rpb24gPGEgaHJlZj0iaHR0cDovL3VrMi5waHAubmV0L3ByZWdf cmVwbGFjZSI+cHJlZ19yZXBsYWNlKCk8L2E+IHRoZW4geW91JiM4MjE3O2xsIGJlIHJpZ2h0 IGF0IGhvbWUgYmVjYXVzZSwgcHV0IHNpbXBseSwgeW91IGNhbiBvcHRpb25hbGx5IHBhc3Mg ZXZlcnkgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgdGhyb3VnaCBp dCB0byByZW1vdmUgc3R1ZmYgeW91IGRvbiYjODIxNzt0IHdhbnQuPC9wPgoKCTxoMyBpZD0i dXJsZmlsdGVyIj51cmxmaWx0ZXI8L2gzPgoKCTxwPlRoaXMgdGFrZXMgYSBjb21tYS1zZXBh cmF0ZWQgbGlzdCAoYXQgbGVhc3QgYnkgZGVmYXVsdDsgb3ZlcnJpZGUgdGhlIGNvbW1hIHdp dGggdGhlIDxjb2RlPmRlbGltPC9jb2RlPiBhdHRyaWJ1dGUgaWYgeW91IG5lZWQgdG8gdXNl IGNvbW1hcyBpbiB5b3VyIGZpbHRlciBzdHJpbmdzKSBvZiBjb21wbGV0ZSByZWd1bGFyIGV4 cHJlc3Npb24gcGF0dGVybnMgdGhhdCB5b3Ugd2lzaCB0byBzZWFyY2ggZm9yLCBpbiBldmVy eSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZS4gRm9yIGV4YW1wbGUs IGlmIHlvdSB3YW50ZWQgdG8gZW5zdXJlIHRoYXQgeW91ciB1c2VycyBvbmx5IGVudGVyZWQg ZGlnaXRzIHlvdSBjb3VsZCBzcGVjaWZ5IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+dXJsZmlsdGVyPSZxdW90Oy9bXlxkXSsvJnF1b3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5CcmllZmx5LCB0aGUgc3RhcnRpbmcgYW5kIHRyYWlsaW5nIDxj b2RlPi88L2NvZGU+IG1hcmtzIGRlbGltaXQgYSByZWd1bGFyIGV4cHJlc3Npb24gJiM4MjEy OyB0aGV5IG11c3QgYWx3YXlzIGJlIHByZXNlbnQuIFRoZSBzcXVhcmUgYnJhY2tldHMgZGVu b3RlIGEgZ3JvdXAgb2YgY2hhcmFjdGVycywgdGhlIGNpcmN1bWZsZXggbmVnYXRlcyB0aGUg Z3JvdXAsIHRoZSA8Y29kZT5cZDwvY29kZT4gbWVhbnMgJiM4MjIwO2FueSBkaWdpdCYjODIy MTsgYW5kIHRoZSA8Y29kZT4rPC9jb2RlPiBzcGVjaWZpZXMgdGhhdCB5b3Ugd2FudCBpdCB0 byBjaGVjayBmb3Igb25lIG9yIG1vcmUgb2YgdGhlIHByZWNlZGluZyB0aGluZ3MuIEluIG90 aGVyIHdvcmRzLCBsb29rIGZvciBhbnl0aGluZyBpbiB0aGUgaW5wdXQgdGhhdCBpcyA8c3Ry b25nPm5vdDwvc3Ryb25nPiBvbmUgb3IgbW9yZSBkaWdpdHMuIFRoYXQgd291bGQgbWF0Y2gg YW55IGxldHRlcnMsIHF1b3Rlcywgc3BlY2lhbCBjaGFyYWN0ZXJzLCBhbnl0aGluZyBhdCBh bGwgdGhhdCB3YXNuJiM4MjE3O3QgYSB6ZXJvIHRvIG5pbmUuPC9wPgoKCTxwPllvdSBjYW4g c3BlY2lmeSBtb3JlIHRoYW4gb25lIGZpbHRlciBsaWtlIHRoaXM6PC9wPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+dXJsZmlsdGVyPSZxdW90Oy9cZC8sIC9c cy8mcXVvdDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgd291bGQgbG9vayBmb3IgYW55IHNp bmdsZSBkaWdpdCBhbmQgYW55IHNpbmdsZSBzcGFjZSBjaGFyYWN0ZXIuIFRoYXQmIzgyMTc7 cyBhIHNpbXBsZSBleGFtcGxlIGFuZCB5b3UgY291bGQgZG8gaXQgYWxsIGluIG9uZSByZWdl eCwgYnV0IHNwbGl0dGluZyB0aGVtIHVwIGNhbiBoZWxwIHlvdSBmaWx0ZXIgc3R1ZmYgYmV0 dGVyIChzZWUgPGEgaHJlZj0iI3VybHJlcGxhY2UiPnVybHJlcGxhY2U8L2E+IGZvciBhbiBl eGFtcGxlKS48L3A+CgoJPHA+QnkgZGVmYXVsdCwgaWYgeW91IGp1c3Qgc3BlY2lmeSA8Y29k ZT51cmxmaWx0ZXI8L2NvZGU+IHdpdGhvdXQgPGNvZGU+dXJscmVwbGFjZTwvY29kZT4sIGFu eXRoaW5nIHRoYXQgbWF0Y2hlcyB5b3VyIGZpbHRlciBwYXR0ZXJucyB3aWxsIGJlIHJlbW92 ZWQgZnJvbSB0aGUgdXNlciBpbnB1dC48L3A+CgoJPGgzIGlkPSJ1cmxyZXBsYWNlIj51cmxy ZXBsYWNlPC9oMz4KCgk8cD5UaGUgb3RoZXIgaGFsZiBvZiB0aGUgZmlsdGVyaW5nIGppZ3Nh dyBhbGxvd3MgeW91IHRvIG5vdCBqdXN0IHJlbW92ZSBhbnl0aGluZyB0aGF0IG1hdGNoZXMs IGJ1dCBhY3R1YWxseSByZXBsYWNlIGl0IHdpdGggc29tZXRoaW5nIGVsc2UuIFNwZWNpZnkg YSBmaXhlZCBzdHJpbmcsIGEgbGlzdCBvZiBmaXhlZCBzdHJpbmdzIG9yIG1vcmUgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gcGF0dGVybnMgdG8gcmVwbGFjZSB3aGF0ZXZlciBt YXRjaGVzIHlvdXIgPGNvZGU+dXJsZmlsdGVyPC9jb2RlPi4gVXNpbmcgdGhlIGZpcnN0IGZp bHRlciBleGFtcGxlIGZyb20gYWJvdmUsIHlvdSBjb3VsZCByZXBsYWNlIGFueXRoaW5nIHRo YXQgaXMgbm90IGEgZGlnaXQgd2l0aCBhIGh5cGhlbiBieSBzcGVjaWZ5aW5nOjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPnVybHJlcGxhY2U9JnF1b3Q7 LSZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+U28gaWYgeW91IGFsbG93ZWQgYSA8c3BhbiBj bGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSBjYWxsZWQgPGNvZGU+ZGlnaXRzPC9j b2RlPiBhbmQgYSBzaXRlIHZpc2l0b3IgZW50ZXJlZCA8Y29kZT4/ZGlnaXRzPVphcGhvZCA0 IFRyaWxsaWFuPC9jb2RlPiwgeW91ciA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2 YXJpYWJsZSB3b3VsZCBiZWNvbWU6IDxjb2RlPi0tLS0tLS00LS0tLS0tLS08L2NvZGU+LiBO b3QgbXVjaCB1c2UsIGJ1dCBoZXksIGl0JiM4MjE3O3MgYW4gZXhhbXBsZSE8L3A+CgoJPHA+ QXMgd2l0aCA8Y29kZT51cmxmaWx0ZXI8L2NvZGU+IHlvdSBjYW4gc3BlY2lmeSBtb3JlIHRo YW4gb25lIHJlcGxhY2VtZW50IGFuZCB0aGV5IHdpbGwgcGFpciB1cCB3aXRoIHRoZWlyIGNv cnJlc3BvbmRpbmcgZmlsdGVyLiBJbiBvdGhlciB3b3JkcywgaWYgeW91IHRha2UgdGhlIHNl Y29uZCBmaWx0ZXIgYWJvdmUgKDxjb2RlPnVybGZpbHRlcj0mcXVvdDsvXGQvLCAvXHMvJnF1 b3Q7PC9jb2RlPikgYW5kIHVzZWQgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj51cmxyZXBsYWNlPSZxdW90OywgLSZxdW90Owo8L2NvZGU+PC9w cmU+CgoJPHA+VGhlbiBhbnkgZGlnaXQgaW4geW91ciB1c2VyIGlucHV0IHdvdWxkIGJlIHJl bW92ZWQgKHRoZXJlIGlzIG5vdGhpbmcgYmVmb3JlIHRoZSBjb21tYSkgYW5kIGFueSBzcGFj ZSBjaGFyYWN0ZXIgd291bGQgYmUgcmVwbGFjZWQgd2l0aCBhIGh5cGhlbi48L3A+CgoJPHA+ SWYgYXQgYW55IHRpbWUgYSBmaWVsZCBnaXZlcyBhbiBlbXB0eSByZXN1bHQgKGkuZS4gaXQg dG90YWxseSBmYWlscyBhbnkgPGNvZGU+dXJsZmlsdGVyPC9jb2RlPiB0ZXN0cyBvciBzaW1w bHkgcmV0dXJucyBub3RoaW5nIGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIHNldCksIGFueSA8 Y29kZT5kZWZhdWx0czwvY29kZT4gYXNzaWduZWQgdG8gdGhhdCB2YXJpYWJsZSB3aWxsIGJl IHVzZWQgaW5zdGVhZC4gSWYgdGhlcmUgYXJlIG5vIGRlZmF1bHRzLCB0aGUgbmFtZSBvZiB0 aGUgdmFyaWFibGUgaXRzZWxmIChtaW51cyBpdHMgPGNvZGU+PzwvY29kZT4pIHdpbGwgYmUg dXNlZC48L3A+CgoJPHA+V2l0aCB0aGVzZSB0d28gZmlsdGVycyBhdCB5b3VyIGRpc3Bvc2Fs IGFuZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGRlZmF1bHQgdmFsdWVzIGZvciB1c2VyIHZh cmlhYmxlcywgeW91IGNhbiBtYWtlIHlvdXIgcXVlcmllcyBtdWNoIHNhZmVyIHRvIHRoZSBv dXRzaWRlIHdvcmxkIGFuZCBzdGFydCB1c2luZyA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwv c3Bhbj4gZm9ybXMgdG8gZ2F0aGVyIGlucHV0IGZyb20gdXNlcnMgdGhhdCBjYW4gdGhlbiBi ZSBwbHVnZ2VkIGludG8gcXVlcmllcywgZmFpcmx5IHNhZmUgaW4gdGhlIGtub3dsZWRnZSB0 aGF0IHlvdXIgZGF0YWJhc2UgaXMgbm90IGdvaW5nIHRvIGltcGxvZGUuPC9wPgoKCTxwPkJ1 dCBwbGVhc2UgcmVtZW1iZXI6PC9wPgoKCTxibG9ja3F1b3RlPgoJCTxwPjxzdHJvbmc+QWxs PC9zdHJvbmc+IHVzZXIgaW5wdXQgaXMgdGFpbnRlZCBieSBkZWZhdWx0OiBjaGVjayBldmVy eXRoaW5nLjwvcD4KCTwvYmxvY2txdW90ZT4KCgk8aDIgaWQ9ImV4YW1wbGVzIj5FeGFtcGxl czwvaDI+CgoJPGgzIGlkPSJlZzEiPkV4YW1wbGUgMTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBjb2x1bW49JnF1b3Q7 KiZxdW90OwogICAgIHRhYmxlPSZxdW90O3R4cF9pbWFnZSZxdW90OwogICAgIHdoZXJlPSZx dW90O2NhdGVnb3J5PSYjMzk7bWFtbWFsJiMzOTsgT1IgY2F0ZWdvcnk9JiMzOTtiaXJkJiMz OTsmcXVvdDsKICAgICBmb3JtPSZxdW90O2Rib3V0JnF1b3Q7IHdyYXB0YWc9JnF1b3Q7dWwm cXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldp dGggZm9ybSA8Y29kZT5kYm91dDwvY29kZT4gY29udGFpbmluZzo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSBocmVmPSZxdW90Oy9pbWFnZXMv e2lkfXtleHR9JnF1b3Q7IC8mZ3Q7Jmx0O3R4cDp0aHVtYm5haWwgbmFtZT0mcXVvdDt7bmFt ZX0mcXVvdDsgLyZndDsmbHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaWxsIHJlbmRl ciBhbiB1bm9yZGVyZWQgbGlzdCBvZiB0aHVtYm5haWxzIHdpdGggbGlua3MgdG8gdGhlIGZ1 bGxzaXplIGltYWdlIGlmIHRoZSBjYXRlZ29yeSBpcyBlaXRoZXIgPGNvZGU+bWFtbWFsPC9j b2RlPiBvciA8Y29kZT5iaXJkPC9jb2RlPi48L3A+CgoJPGgzIGlkPSJlZzIiPkV4YW1wbGUg MjwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnNtZF9xdWVyeSBxdWVyeT0mcXVvdDtTRUxFQ1QgRElTVElOQ1QKICAgICB0eGMubmFtZSBG Uk9NIHR4cF9jYXRlZ29yeSBBUyB0eGMsIHRleHRwYXR0ZXJuIEFTIHR4cAogICAgIFdIRVJF IHR5cGU9JiMzOTthcnRpY2xlJiMzOTsgQU5EIHBhcmVudD0mIzM5O2FuaW1hbHMmIzM5Owog ICAgIEFORCAodHhjLm5hbWUgPSB0eHAuY2F0ZWdvcnkxIE9SIHR4Yy5uYW1lID0gdHhwLmNh dGVnb3J5MikKICAgICBmb3JtPSZxdW90O2Rib3V0JnF1b3Q7IHdyYXB0YWc9JnF1b3Q7dWwm cXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldp dGggZm9ybSA8Y29kZT5kYm91dDwvY29kZT4gY29udGFpbmluZzo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOmNhdGVnb3J5IG5hbWU9JnF1 b3Q7e25hbWV9JnF1b3Q7IGxpbms9JnF1b3Q7MSZxdW90OyB0aXRsZT0mcXVvdDsxJnF1b3Q7 IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaWxsIHJlbmRlciBhIGxpc3Qgb2YgbGlua2Fi bGUgY2F0ZWdvcnkgbmFtZXMgdGhhdCBjb250YWluIGFydGljbGVzIHdpdGggY2F0ZWdvcmll cyB0aGF0IGhhdmUgdGhlIGdpdmVuIHBhcmVudC4gSWYgYSBjYXRlZ29yeSBpcyB1bnVzZWQg aXQgd2lsbCBub3QgYmUgbGlzdGVkLjwvcD4KCgk8aDMgaWQ9ImVnMyI+RXhhbXBsZSAzPC9o Mz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21k X3F1ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCBESVNUSU5DVAogICAgIHR4Yy5uYW1lLCBDT1VO VCgqKSBBUyBjb3VudCBGUk9NIHR4cF9jYXRlZ29yeSBBUyB0eGMsCiAgICAgdGV4dHBhdHRl cm4gQVMgdHhwCiAgICAgV0hFUkUgdHlwZT0mIzM5O2FydGljbGUmIzM5OyBBTkQgcGFyZW50 PSYjMzk7P2N1c3RvbTMmIzM5OwogICAgIEFORCAodHhjLm5hbWUgPSB0eHAuY2F0ZWdvcnkx IE9SIHR4Yy5uYW1lID0gdHhwLmNhdGVnb3J5MikKICAgICBHUk9VUCBCWSB0eGMubmFtZSZx dW90OwogICAgIGZvcm09JnF1b3Q7ZGJvdXQmcXVvdDsgd3JhcHRhZz0mcXVvdDt1bCZxdW90 OyBicmVhaz0mcXVvdDtsaSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2l0aCBm b3JtIDxjb2RlPmRib3V0PC9jb2RlPiBjb250YWluaW5nOjwvcD4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6Y2F0ZWdvcnkgbmFtZT0mcXVvdDt7 bmFtZX0mcXVvdDsgbGluaz0mcXVvdDsxJnF1b3Q7IHRpdGxlPSZxdW90OzEmcXVvdDsgLyZn dDsgKHtjb3VudH0pCjwvY29kZT48L3ByZT4KCgk8cD5XaWxsIHJlYWQgdGhlIHBhcmVudCBp dGVtIGZyb20gdGhlIDxjb2RlPmN1c3RvbTM8L2NvZGU+IGZpZWxkIGFuZCByZW5kZXIgYSBz aW1pbGFyIGxpc3QgdG8gRXhhbXBsZSAyIGJ1dCB3aXRoIHRoZSBhcnRpY2xlIGNvdW50cyBh ZGRlZCBpbiBwYXJlbnRoZXNlcyBhZnRlcndhcmRzLjwvcD4KCgk8aDMgaWQ9ImVnNCI+RXhh bXBsZSA0PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDt0eHA6c21kX3F1ZXJ5IGNvbHVtbj0mcXVvdDsqJnF1b3Q7IHRhYmxlPSZxdW90O3R4cF9m aWxlJnF1b3Q7CiAgICAgd2hlcmU9JnF1b3Q7KGNhdGVnb3J5PSYjMzk7P2NhdGVnb3J5MSYj Mzk7IE9SIGNhdGVnb3J5PSYjMzk7P2NhdGVnb3J5MiYjMzk7KQogICAgIEFORCBzdGF0dXM9 NCBPUkRFUiBCWSBkb3dubG9hZHMgZGVzYyBMSU1JVCAxMCZxdW90OwogICAgIHdyYXB0YWc9 JnF1b3Q7dGFibGUmcXVvdDsgYnJlYWs9JnF1b3Q7dHImcXVvdDsKICAgICBsYWJlbD0mcXVv dDtNb3N0IHBvcHVsYXIgZG93bmxvYWRzJnF1b3Q7IGxhYmVsdGFnPSZxdW90O2gzJnF1b3Q7 Jmd0OwogICZsdDt0ZCZndDsmbHQ7dHhwOmZpbGVfZG93bmxvYWRfbGluayBpZD0mcXVvdDt7 aWR9JnF1b3Q7Jmd0O3tmaWxlbmFtZX0mbHQ7L3R4cDpmaWxlX2Rvd25sb2FkX2xpbmsmZ3Q7 Jmx0Oy90ZCZndDsKICAmbHQ7dGQmZ3Q7e2Rlc2NyaXB0aW9ufSZsdDsvdGQmZ3Q7CiAgJmx0 O3RkJmd0O2Rvd25sb2Fkczoge2Rvd25sb2Fkc30mbHQ7L3RkJmd0OwombHQ7dHhwOmVsc2Ug LyZndDsKICAmbHQ7cCZndDtObyByZWNlbnQgZG93bmxvYWRzLCBzb3JyeSZsdDsvcCZndDsK Jmx0Oy90eHA6c21kX3F1ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhpcyBvbmUgdXNl cyB0aGUgcGx1Z2luIGFzIGEgY29udGFpbmVyIHRhZyBpbnN0ZWFkIG9mIGEgZm9ybSBhbmQg dGFidWxhdGVzIHRoZSB0b3AgMTAgZG93bmxvYWRzIChzdGF0dXM9bGl2ZSkgdGhhdCBoYXZl IGEgY2F0ZWdvcnkgbWF0Y2hpbmcgZWl0aGVyIG9mIHRoZSBjdXJyZW50IGFydGljbGUmIzgy MTc7cyBjYXRlZ29yaWVzLCB3aXRoIG1vc3QgcG9wdWxhciBsaXN0ZWQgZmlyc3QuIElmIHRo ZXJlIGFyZSBubyBkb3dubG9hZHMsIHRoZSA8Y29kZT4mbHQ7dHhwOmVsc2UgLyZndDs8L2Nv ZGU+IHBvcnRpb24gZGlzcGxheXMgYSBtZXNzYWdlLjwvcD4KCgk8aDMgaWQ9ImVnNSI+RXhh bXBsZSA1PC9oMz4KCgk8cD5WZXJ5IGludGVyZXN0aW5nIHVzZSBjYXNlIGhlcmUuIFB1dCB0 aGlzIGluIHRoZSBwbGFpbmxpbmtzIGZvcm06PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpsaW5rZGVzY3RpdGxlIC8mZ3Q7CiZsdDt0eHA6 c21kX3F1ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCBESVNUSU5DVAogICAgIHR4cC5pZCwgdHhw LnRpdGxlIEZST00gdGV4dHBhdHRlcm4gQVMgdHhwCiAgICAgV0hFUkUgKHR4cC5rZXl3b3Jk cyBMSUtFICYjMzk7JSw/Y2F0ZWdvcnklLCYjMzk7CiAgICAgT1IgdHhwLmtleXdvcmRzIExJ S0UgJiMzOTslP2NhdGVnb3J5JSwmIzM5OwogICAgIE9SIHR4cC5rZXl3b3JkcyBMSUtFICYj Mzk7JSw/Y2F0ZWdvcnklJiMzOTspCiAgICAgR1JPVVAgQlkgdHhwLnRpdGxlJnF1b3Q7CiAg ICAgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0mcXVvdDtsaSZxdW90OyZndDsKICAm bHQ7dHhwOnBlcm1saW5rIGlkPSZxdW90O3tpZH0mcXVvdDsmZ3Q7e3RpdGxlfSZsdDsvdHhw OnBlcm1saW5rJmd0OwombHQ7L3R4cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5XaGVuIHlvdSBleGVjdXRlIDxjb2RlPiZsdDt0eHA6bGlua2xpc3QgLyZndDs8L2NvZGU+ IGZyb20gYSBwYWdlIHlvdSB3aWxsIGdldCBhIGxpc3Qgb2YgbGlua3MgYXMgdXN1YWwsIGJ1 dCB1bmRlciBlYWNoIG9uZSB5b3Ugd2lsbCBzZWUgYSBoeXBlcmxpbmtlZCBsaXN0IG9mIGFy dGljbGVzIHRoYXQgYXJlIHJlbGF0ZWQgKGJ5IGtleXdvcmQpIHRvIHRoZSBjYXRlZ29yeSBv ZiB0aGUgbGluay48L3A+CgoJPHA+VGhlIHJlYXNvbiBpdCBpcyBjb21wYXJlZCB0aHJlZSB0 aW1lcyBpcyBiZWNhdXNlIGFydGljbGUga2V5d29yZHMgYXJlIHN0b3JlZCBsaWtlIHRoaXMg aW4gdGhlIGRhdGFiYXNlOjwvcD4KCgk8cD48Y29kZT5nb3Zlcm5tZW50LGNvbnNwaXJhY3ks aWQsY2FyZCxkYXRhLGJpb21ldHJpYyxiYWQsaWRlYTwvY29kZT48L3A+CgoJPHA+SWYgZWFj aCBjYXRlZ29yeSB3b3JkIHdhcyBjb21wYXJlZCBvbmx5IG9uY2Ugd2l0aG91dCBjb21tYXMg KGkuZS4gPGNvZGU+dHhwLmtleXdvcmRzIExJS0UgJiMzOTslP2NhdGVnb3J5JSYjMzk7PC9j b2RlPikgdGhlbiBhIGxpbmsgd2l0aCBjYXRlZ29yeSA8Y29kZT5waXJhY3k8L2NvZGU+IHdv dWxkIGNhdXNlIGFueSBhcnRpY2xlIGNvbnRhaW5pbmcga2V5d29yZCA8Y29kZT5jb25zcGly YWN5PC9jb2RlPiB0byBiZSBpbmNsdWRlZC4gRXNzZW50aWFsbHksIGJ5IGNvbXBhcmluZyB0 aGUgY2F0ZWdvcnkgZWl0aGVyIHN1cnJvdW5kZWQgYnkgY29tbWFzLCB3aXRoIGEgY29tbWEg YWZ0ZXIgaXQsIG9yIHdpdGggYSBjb21tYSBiZWZvcmUgaXQsIHRoZSBzZWFyY2ggaXMgcmVz dHJpY3RlZCB0byBvbmx5IG1hdGNoIHdob2xlIHdvcmRzLjwvcD4KCgk8aDMgaWQ9ImVnNiI+ RXhhbXBsZSA2PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDt0eHA6c21kX3F1ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCAqCiAgICAgRlJPTSB0eHBf ZmlsZSBXSEVSRSBkb3dubG9hZHMgJmFtcDtndDs9IDQyJnF1b3Q7Jmd0OwogICZsdDt0eHA6 ZmlsZV9kb3dubG9hZF9saW5rIGlkPSZxdW90O3tpZH0mcXVvdDsmZ3Q7CiAgICAge2ZpbGVu YW1lfQogICZsdDsvdHhwOmZpbGVfZG93bmxvYWRfbGluayZndDsKJmx0Oy90eHA6c21kX3F1 ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+U2hvd3MgbGlua3MgdG8gYWxsIGRvd25sb2Fk cyB3aGVyZSB0aGUgZG93bmxvYWQgY291bnQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv IDQyLiBOb3RlIHRoYXQgdW5kZXIgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gNC4w LjYgYW5kIGJlbG93IHlvdSBtdXN0IHVzZSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8 L3NwYW4+IGVudGl0eSBuYW1lcyBmb3IgPGNvZGU+JmFtcDtndDs8L2NvZGU+IGFuZCA8Y29k ZT4mYW1wO2x0OzwvY29kZT4gb3IgdGhlIHBhcnNlciBnZXRzIGNvbmZ1c2VkLjwvcD4KCgk8 aDMgaWQ9ImVnNyI+RXhhbXBsZSA3PC9oMz4KCgk8cD4oYSBiYWQgcXVlcnkpPC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDp2YXJpYWJsZSBu YW1lPSZxdW90O2N1dG9mZiZxdW90OwogICAgIHZhbHVlPSZxdW90OzQyJnF1b3Q7IC8mZ3Q7 CiZsdDt0eHA6c21kX3F1ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCBUaXRsZQogICAgIEZST00g dGV4dHBhdHRlcm4KICAgICBXSEVSRSBpZCAmbHQ7ICYjMzk7P3VzZXJjdXQmIzM5OyZxdW90 OwogICAgIGRlZmF1bHRzPSZxdW90O3VzZXJjdXQ6ID9jdXRvZmYmcXVvdDsmZ3Q7CiAgICZs dDt0eHA6cGVybWxpbmsmZ3Q7e1RpdGxlfSZsdDsvdHhwOnBlcm1saW5rJmd0OwombHQ7L3R4 cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaG93cyBoeXBlcmxpbmtzIHRv IG9ubHkgdGhvc2UgYXJ0aWNsZXMgd2l0aCBhbiBJRCBiZWxvdyB0aGUgbnVtYmVyIGdpdmVu IGJ5IHRoZSB1c2VyIG9uIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5l LiBJZiB0aGUgdmFsdWUgaXMgbm90IHN1cHBsaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBmcm9t IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB2YXJpYWJsZSBpcyB1c2VkIGlu c3RlYWQgKDQyIGluIHRoaXMgY2FzZSkuPC9wPgoKCTxwPjxzdHJvbmc+PHNwYW4gY2xhc3M9 ImNhcHMiPk5PVEU8L3NwYW4+PC9zdHJvbmc+OiB2YWxpZGF0aW9uIGlzIG5vdCBwZXJmb3Jt ZWQgYW5kIHlvdSBjYW5ub3QgZ3VhcmFudGVlIHRoYXQgdGhlIDxjb2RlPnVzZXJjdXQ8L2Nv ZGU+IHZhcmlhYmxlIGlzIGdvaW5nIHRvIGJlIG51bWVyaWMuIFlvdSBzaG91bGQgbm90IHVz ZSB0aGlzIHF1ZXJ5IG9uIGEgcHJvZHVjdGlvbiBzaXRlIHVubGVzcyB5b3UgYWRkIGEgPGNv ZGU+dXJsZmlsdGVyPC9jb2RlPiB0byByZW1vdmUgYW55IG5vbi1udW1lcmljIGNoYXJhY3Rl cnMgKHNlZSBuZXh0IGV4YW1wbGUgZm9yIGEgYmV0dGVyIHF1ZXJ5KS48L3A+CgoJPGgzIGlk PSJlZzgiPkV4YW1wbGUgODwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBxdWVyeT0mcXVvdDtTRUxFQ1QgVGl0bGUKICAg ICBGUk9NIHRleHRwYXR0ZXJuCiAgICAgV0hFUkUgc3RhdHVzID0gJiMzOTs/dXNlcl9zdGF0 dXMmIzM5OyZxdW90OwogICAgIHVybGZpbHRlcj0mcXVvdDsvW14xLTVdLyZxdW90OwogICAg IGRlZmF1bHRzPSZxdW90O3VzZXJfc3RhdHVzOiA0JnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnBl cm1saW5rJmd0O3tUaXRsZX0mbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0Oy90eHA6c21kX3F1 ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+UHVsbHMgYWxsIGFydGljbGVzIG91dCBvZiB0 aGUgZGF0YWJhc2UgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gc3RhdHVzLiBUaGlzIGlzIGEgbW9y ZSByb2J1c3QgcXVlcnkgdGhhbiBFeGFtcGxlIDcgYmVjYXVzZSBpdCBjaGVja3MgaWYgdGhl IDxjb2RlPnVzZXJfc3RhdHVzPC9jb2RlPiBmaWVsZCBpcyAxLCAyLCAzLCA0LCBvciA1ICh0 aGUgcmVnZXggc3BlY2lmaWVzIHRvIHJlbW92ZSBldmVyeXRoaW5nIGZyb20gdGhlIHVzZXJf c3RhdHVzIHZhcmlhYmxlIHRoYXQgaXMgbm90IGluIHRoZSByYW5nZSAxLTUpLiBJZiB0aGlz IGNvbmRpdGlvbiBpcyBub3QgbWV0ICYjODIxMjsgZS5nLiB0aGUgdXNlciBzcGVjaWZpZXMg PGNvZGU+dXNlcl9zdGF0dXM9NjwvY29kZT4gb3IgPGNvZGU+dXNlcl9zdGF0dXM9JnF1b3Q7 YWJjJnF1b3Q7PC9jb2RlPiAmIzgyMTI7IHRoZW4gdXNlcl9zdGF0dXMgd2lsbCBiZSBzZXQg dG8gPGNvZGU+NDwvY29kZT4uIE5vdGUgdGhhdCB1c2luZyA8Y29kZT51c2VyX3N0YXR1cz0m cXVvdDtaYXBob2QgNCBUcmlsbGlhbiZxdW90OzwvY29kZT4gb24gdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+IGFkZHJlc3MgYmFyIHdpbGwgYWN0dWFsbHkgcGFzcyB0aGUg dGVzdCBiZWNhdXNlIGFsbCBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gdGhlIG51bWJlciAmIzgy MTY7NCYjODIxNzsgd2lsbCBiZSByZW1vdmVkLjwvcD4KCgk8cD5Zb3UgY291bGQgdXNlIGEg PGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4gaWYgeW91IHdpc2ggYW5kIHNl dCBhbGwgeW91ciBkZWZhdWx0cyBpbiBhIHNwZWNpYWwgZm9ybSwgcmVhZHkgdG8gdXNlIHRo cm91Z2hvdXQgeW91ciBwYWdlLiBJbiB0aGF0IGNhc2UgJiM4MjEyOyBpZiB5b3UgaGFkIGNy ZWF0ZWQgYSB2YXJpYWJsZSBjYWxsZWQgPGNvZGU+ZGZsdF9zdGF0PC9jb2RlPiAmIzgyMTI7 IHlvdSBtaWdodCBwcmVmZXIgdG8gdXNlIDxjb2RlPmRlZmF1bHRzPSZxdW90O3VzZXJfc3Rh dHVzOiA/ZGZsdF9zdGF0JnF1b3Q7PC9jb2RlPi48L3A+CgoJPHA+UXVlcnktdGFzdGljIDot KTwvcD4KCgk8aDIgY2xhc3M9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMj4KCgk8dWw+CgkJ PGxpPjIyIE1heSAwOCB8IHYwLjEgfCBJbml0aWFsIHJlbGVhc2U8L2xpPgoJCTxsaT4yMyBN YXkgMDggfCB2MC4xMSB8IEFsbG93ZWQgbWF0aHMgaW4gcXVlcmllcyAodXNlIGh0bWwgZW50 aXRpZXMgaW4gVFhQNC4wLjYpIGFuZCBmaXhlZCA8c3BhbiBjbGFzcz0iY2FwcyI+V0hFUkU8 L3NwYW4+IGNsYXVzZSB0byBkZWZhdWx0IHRvIDE9MSBpZiBub25lIHN1cHBsaWVkIChib3Ro IHRoYW5rcyBqbSkgOyBhZGRlZCBtb3JlIGRldGFpbGVkIGZpbGUgYW5kIGxpbmsgc3VwcG9y dDwvbGk+CgkJPGxpPjE0IEp1bCAwOCB8IHYwLjEyIHwgQWRkZWQgPGNvZGU+dHhwOmVsc2U8 L2NvZGU+IHN1cHBvcnQgaW4gY29udGFpbmVyICh0aGFua3MgamFrb2IpIDsgYWRkZWQgPGNv ZGU+c2lsZW50PC9jb2RlPiBhbmQgPGNvZGU+Y291bnQ8L2NvZGU+IGF0dHJpYnV0ZXMsIGFu ZCB0aGUgcmVwbGFjZW1lbnQgdGFncyA8Y29kZT57c21kX3Jvd3N9IHtzbWRfdGhpc3Jvd30g e3NtZF90aGlzaW5kZXh9PC9jb2RlPjwvbGk+CgkJPGxpPjIzIE5vdiAwOCB8IHYwLjIgfCBB ZGRlZCA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBzdXBwb3J0IDsgZW5h YmxlZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSBzdXBwb3J0IDsg YWRkZWQgPGNvZGU+dXJsZmlsdGVyPC9jb2RlPiwgPGNvZGU+dXJscmVwbGFjZTwvY29kZT4s IDxjb2RlPmRlbGltPC9jb2RlPiwgPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4gYW5kIDxjb2Rl PmRlZmF1bHRzPC9jb2RlPiBhdHRyaWJ1dGVzPC9saT4KCTwvdWw+CgoJPHA+PC9kaXY+PC9w Pgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5cGU9InRleHQv Y3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS40NSA7fQojc21kX2hlbHAgY29kZSB7 IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3Vy aWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAg Y29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5 OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEw cHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9o ZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJv cmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21k X2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQt ZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRp bmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4 IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9 CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGlu ZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJp ZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzY5MzsgZm9udDogYm9sZCAxMnB4IEFyaWFs LCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3Rl eHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQoj c21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRl ci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBl cmNhc2U7IH0KI3NtZF9oZWxwIC5hdG4geyBmb250LXdlaWdodDpib2xkOyB9CiNzbWRfaGVs cCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQoj c21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmct Ym90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNv bGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxwIHVsIHsgbGlzdC1zdHlsZS10 eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgbGkgeyBtYXJnaW4tbGVmdDozNXB4OyB9CiNzbWRf aGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tIC0tLSBFTkQg UExVR0lOIENTUyAtLS0gLS0+CiI7czozOiJtZDUiO3M6MzI6IjE4YzViODQ4ODc3ZTBmZGNk MzIzMzJkMDRlOWUyNmIwIjt9