#FILE text/x-emacs-lisp Ozs7IGNhbC1jaGluYS14LmVsIC0tLSBDaGluZXNlIGNhbGVuZGFyIGV4dHJhcwoKOzsgQ29weXJp Z2h0IChDKSAyMDA2LCAyMDA3IFdpbGxpYW0gWHUKCjs7IEF1dGhvcjogV2lsbGlhbSBYdSA8d2ls bGlhbS54d2xAZ21haWwuY29tPgo7OyBWZXJzaW9uOiAwLjYKOzsgVXJsOiBodHRwOi8vd2lsbGlh bXh1Lm5ldDkub3JnL2VtYWNzLmh0bWwKOzsgTGFzdCB1cGRhdGVkOiAyMDA3LzA0LzEwIDE3OjUx OjI4Cgo7OyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCjs7IGFueSBs YXRlciB2ZXJzaW9uLgo7Owo7OyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo7Owo7OyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo7 OyBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVT QS4KCjs7OyBDb21tZW50YXJ5OgoKOzsgVGhpcyBwYWNrYWdlIGFkZHMgbW9yZSBjaGluZXNlIGNh bGVuZGFyIHN1cHBvcnRzLiBDdXJyZW50bHksIGl0IGNhbgo7OyBzaG93IGx1bmFyIGNhbGVuZGFy LCBob3Jvc2NvcGUgaW5mbywgem9kaWFjIGluZm8sIGV0Yy4gRmVlZGJhY2tzIGFyZQo7OyB3YXJt bHkgd2VsY29tZS4KCjs7IFB1dCB0aGlzIGZpbGUgaW50byB5b3VyIGxvYWQtcGF0aCBhbmQgdGhl IGZvbGxvd2luZyBpbnRvIHlvdXIKOzsgfi8uZW1hY3M6Cjs7Cjs7ICAgKHJlcXVpcmUgJ2NhbC1j aGluYS14KQoKOzs7IEhpc3RvcnkKCjs7IFRoaXMgaXMgYSBkZXJpdmVkIHdvcmsgZnJvbSBgY2hp bmVzZS1jYWxlbmRhci5lbCcgd3JpdHRlbiBieSBDaGFybGVzCjs7IFdhbmcgPGNoYXJsZXN3YW5n QHBlb3BsZW1haWwuY29tLmNuPi4KCjs7OyBUT0RPOgoKOzsgLSBEaXNwbGF5IHdlZWsgZGF5KHRo ZSBmaXJzdCBsaW5lIG9mIGVhY2ggbW9udGgpIGluIGNoaW5lc2UgcHJvcGVybHkKCjs7OyBDb2Rl OgoKKHJlcXVpcmUgJ2NhbGVuZGFyKQoocmVxdWlyZSAnY2FsLWNoaW5hKQoKOzs7IFZhcmlhYmxl cwoKKGRlZmNvbnN0IGNhbC1jaGluYS14LWNlbGVzdGlhbC1zdGVtCiAgWyLnlLIiICLkuZkiICLk uJkiICLkuIEiICLmiIoiICLlt7IiICLlupoiICLovpsiICLlo6wiICLnmbgiXSkKCihkZWZjb25z dCBjYWwtY2hpbmEteC10ZXJyZXN0cmlhbC1icmFuY2gKICBbIuWtkCIgIuS4kSIgIuWvhSIgIuWN ryIgIui+sCIgIuW3syIgIuWNiCIgIuacqiIgIueUsyIgIumFiSIgIuaIjCIgIuS6pSJdKQoKKGRl ZmNvbnN0IGNhbC1jaGluYS14LWRheXMKICBbIuaXpSIgIuS4gCIgIuS6jCIgIuS4iSIgIuWbmyIg IuS6lCIgIuWFrSJdKQoKKGRlZmNvbnN0IGNhbC1jaGluYS14LW1vbnRoLW5hbWUKICBbIuato+ac iCIgIuS6jOaciCIgIuS4ieaciCIgIuWbm+aciCIgIuS6lOaciCIgIuWFreaciCIgIuS4g+aciCIg IuWFq+aciCIgIuS5neaciCIgIuWNgeaciCIKICAgIuWNgeS4gOaciCIgIuiFiuaciCJdKQoKKGRl ZmNvbnN0IGNhbC1jaGluYS14LWRheS1uYW1lCiAgWyLliJ3kuIAiICLliJ3kuowiICLliJ3kuIki ICLliJ3lm5siICLliJ3kupQiICLliJ3lha0iICLliJ3kuIMiICLliJ3lhasiICLliJ3kuZ0iICLl iJ3ljYEiCiAgICLljYHkuIAiICLljYHkuowiICLljYHkuIkiICLljYHlm5siICLljYHkupQiICLl jYHlha0iICLljYHkuIMiICLljYHlhasiICLljYHkuZ0iICAi5bu/IgogICAi5bu/5LiAIiAi5bu/ 5LqMIiAi5bu/5LiJIiAi5bu/5ZubIiAi5bu/5LqUIiAi5bu/5YWtIiAi5bu/5LiDIiAi5bu/5YWr IiAi5bu/5LmdIiAi5LiJ5Y2BIgogICAi5Y2F5LiAIiAi5Y2F5LqMIiAi5Y2F5LiJIiAi5Y2F5Zub IiAi5Y2F5LqUIiAi5Y2F5YWtIiAi5Y2F5LiDIiAi5Y2F5YWrIiAi5Y2F5LmdIiAi5Y2F5Y2BIl0p CgooZGVmdmFyIGNoaW5lc2UtZGF0ZS1kaWFyeS1wYXR0ZXJuCiAgJygoeWVhciAiICrlubQiIG1v bnRoICIgKuaciCIgZGF5ICIgKuaXpSAqW15c5bm0MC05XSIpIDsgIiAq5pif5pyfIikKICAgICh5 ZWFyICItIiBtb250aCAiLSIgZGF5ICJbXjAtOV0iKQogICAgKGRheSAiLyIgbW9udGggIlteLzAt OV0iKQogICAgKGRheSAiLyIgbW9udGggIi8iIHllYXIgIlteMC05XSIpCiAgICAoYmFja3VwIGRh eSAiICoiIG1vbnRobmFtZSAiXFxXK1xcPFxcKFteKjAtOV1cXHxcXChbMC05XStbOmFBcFBdXFwp XFwpIikKICAgIChkYXkgIiAqIiBtb250aG5hbWUgIiAqIiB5ZWFyICJbXjAtOV0iKQogICAgKGRh eW5hbWUgIlxcVyIpKSkKCihkZWZjb25zdCBjYWwtY2hpbmEteC1ob3Jvc2NvcGUtbmFtZQogICco KCgzICAyMSkgKDQgIDE5KSAi55m9576KIikKICAgICgoNCAgMjApICg1ICAyMCkgIumHkeeJmyIp CiAgICAoKDUgIDIxKSAoNiAgMjEpICLlj4zlrZAiKQogICAgKCg2ICAyMikgKDcgIDIyKSAi5beo 6J+5IikKICAgICgoNyAgMjMpICg4ICAyMikgIueLruWtkCIpCiAgICAoKDggIDIzKSAoOSAgMjIp ICLlpITlpbMiKQogICAgKCg5ICAyMykgKDEwIDIzKSAi5aSp56ekIikKICAgICgoMTAgMjQpICgx MSAyMikgIuWkqeidjiIpCiAgICAoKDExIDIzKSAoMTIgMjEpICLlsITmiYsiKQogICAgKCgxMiAy MikgKDEgIDE5KSAi5pGp576vIikKICAgICgoMSAgMjApICgyICAxOCkgIuawtOeTtiIpCiAgICAo KDIgIDE5KSAoMyAgMjApICLlj4zpsbwiKSkpCgooZGVmY29uc3QgY2FsLWNoaW5hLXgtem9kaWFj LW5hbWUKICBbIum8oCIgIueJmyIgIuiZjiIgIuWFlCIgIum+mSIgIuibhyIgIumprCIgIue+iiIg IueMtCIgIum4oSIgIueLlyIgIueMqiJdCiAgIlRoZSB6b2RpYWMoU2hlbmcgWGlhbykgd2hlbiB5 b3Ugd2VyZSBib3JuLiIpCgo7OyBGSVhNRTogSmllIFFpIG5hbWUgaW4gRW5nbGlzaD8KOzsgZm9y IHJlZiwgaHR0cDovL3d3dy5nZW9jaXRpZXMuY29tL2NhbHNoaW5nL2NoaW5lc2VjYWxlbmRhci5o dG0KKGRlZmNvbnN0IGNhbC1jaGluYS14LWppZXFpLW5hbWUKICBbIuWwj+WvkiIgIuWkp+WvkiIg Iueri+aYpSIgIumbqOawtCIgIuaDiuibsCIgIuaYpeWIhiIKICAgIua4heaYjiIgIuiwt+mbqCIg Iueri+WkjyIgIuWwj+a7oSIgIuiKkuenjSIgIuWkj+iHsyIKICAgIuWwj+aakSIgIuWkp+aakSIg Iueri+eniyIgIuWkhOaakSIgIueZvemcsiIgIueni+WIhiIKICAgIuWvkumcsiIgIumcnOmZjSIg Iueri+WGrCIgIuWwj+mbqiIgIuWkp+mbqiIgIuWGrOiHsyJdCiAgIjI0IGppZXFpIG5hbWUuClwi 5bCP5a+SXCIgaXMgdGhlIGZpcnN0IFFpcWllIGluIGEgbmV3IHllYXIuIGUuZy4sIDIwMDctMDEt MDYuClRoZXJlIGlzIGEgc2hvcnQgcG9lbSBmb3IgcmVtZW1iZXJpbmcsCgogICAg5pil6Zuo5oOK 5pil5riF6LC35aSp77yM5aSP5ruh6IqS5aSP5pqR55u46L+e77yMCiAgICDnp4vlpITpnLLnp4vl r5LpnJzpmY3vvIzlhqzpm6rpm6rlhqzlsI/lpKflr5LjgIIiKQoKDAo7OzsgSGlnaCBMZXZlbCBG dW5jdGlvbnMKCihkZWZ1biBjYWwtY2hpbmEteC1iaXJ0aGRheS1mcm9tLWNoaW5lc2UgKGx1bmFy LW1vbnRoIGx1bmFyLWRheSkKICAiUmV0dXJuIGJpcnRoZGF5IGRhdGUgdGhpcyB5ZWFyIGluIEdy ZWdvcmlhbiBmb3JtLgoKTFVOQVItTU9OVEggYW5kIExVTkFSLURBWSBhcmUgZGF0ZSBudW1iZXIg dXNlZCBpbiBjaGluZXNlIGx1bmFyCmNhbGVuZGFyLiIKICAoaW50ZXJhY3RpdmUgIm5sdW5hciBt b250aDogXG5ubHVuYXIgZGF5OiAiKQogIChsZXQqICgoYmlydGhkYXktY2hpbmVzZSAobGlzdCBs dW5hci1tb250aCBsdW5hci1kYXkpKQoJIChjdXJyZW50LWNoaW5lc2UtZGF0ZSAoY2FsZW5kYXIt Y2hpbmVzZS1mcm9tLWFic29sdXRlCgkJCQkoY2FsZW5kYXItYWJzb2x1dGUtZnJvbS1ncmVnb3Jp YW4KCQkJCSAoY2FsZW5kYXItY3VycmVudC1kYXRlKSkpKQoJIChjeWNsZSAoY2FyIGN1cnJlbnQt Y2hpbmVzZS1kYXRlKSkKCSAoeWVhciAoY2FkciBjdXJyZW50LWNoaW5lc2UtZGF0ZSkpCgkgKGJp cnRoZGF5LWNoaW5lc2UtZnVsbCBgKCxjeWNsZSAseWVhciAsQGJpcnRoZGF5LWNoaW5lc2UpKQoJ IChiaXJ0aGRheS1ncmVnb3JpYW4tZnVsbCAoY2FsZW5kYXItZ3JlZ29yaWFuLWZyb20tYWJzb2x1 dGUKCQkJCSAgIChjYWxlbmRhci1hYnNvbHV0ZS1mcm9tLWNoaW5lc2UKCQkJCSAgICBiaXJ0aGRh eS1jaGluZXNlLWZ1bGwpKSkpCiAgICAobWVzc2FnZSAiWW91ciBuZXh0IGJpcnRoZGF5IGluIGdy ZWdvcmlhbiBpcyBvbiAlcyIKCSAgICAgKGNhbGVuZGFyLWRhdGUtc3RyaW5nIGJpcnRoZGF5LWdy ZWdvcmlhbi1mdWxsKSkpKQoKKGRlZnVuIGhvbGlkYXktbHVuYXIgKGx1bmFyLW1vbnRoIGx1bmFy LWRheSBzdHJpbmcpCiAgIkxpa2UgYGhvbGlkYXktZml4ZWQnLCBidXQgd2l0aCBMVU5BUi1NT05U SCBhbmQgTFVOQVItREFZLiIKICAobGV0ICgoY24teWVhcnMgKGNoaW5lc2UteWVhciBkaXNwbGF5 ZWQteWVhcikpCiAgICAgICAgKHJldCAnKCkpKQogICAgKGxldCAoKGRhdGUgKGNhbGVuZGFyLWdy ZWdvcmlhbi1mcm9tLWFic29sdXRlCiAgICAgICAgICAgICAgICAgKCsgKGNhZHIgKGFzc29jIGx1 bmFyLW1vbnRoIGNuLXllYXJzKSkgKDEtIGx1bmFyLWRheSkpKSkpCiAgICAgIChzZXRxIHJldCAo YXBwZW5kIHJldAogICAgICAgICAgICAgICAgICAgICAgICAoaG9saWRheS1maXhlZCAoY2FyIGRh dGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWRyIGRhdGUpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZykpKSkKICAgIDs7IOmX sOaciCwgZS5nLiwgMjAwNi0wOC0zMAogICAgKHdoZW4gKD4gKGxlbmd0aCBjbi15ZWFycykgMTIp CiAgICAgIChsZXQgKChydW4gKGNhciAocmVtb3ZlLWlmICdudWxsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChtYXBjYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChsYW1iZGEgKGVsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5sZXNz IChpbnRlZ2VycCAoY2FyIGVsKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbi15ZWFycykpKSkpCiAg ICAgICAgKHdoZW4gKD0gbHVuYXItbW9udGggKGZsb29yIChjYXIgcnVuKSkpCiAgICAgICAgICAo bGV0ICgoZGF0ZSAoY2FsZW5kYXItZ3JlZ29yaWFuLWZyb20tYWJzb2x1dGUKICAgICAgICAgICAg ICAgICAgICAgICAoKyAoY2FkciBydW4pICgxLSBsdW5hci1kYXkpKSkpKQogICAgICAgICAgICAo c2V0cSByZXQgKGFwcGVuZCByZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhvbGlk YXktZml4ZWQgKGNhciBkYXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY2FkciBkYXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJpbmcpKSkpKSkpCiAgICByZXQpKQoKKGRlZnVuIGNhbC1jaGluYS14LWNhbGVu ZGFyLWRpc3BsYXktZm9ybSAoZGF0ZSkKICAoaWYgKGVxdWFsIGRhdGUgJygwIDAgMCkpCiAgICAg ICIiCiAgICAoZm9ybWF0ICIlMDRk5bm0JTAyZOaciCUwMmTml6UgJXMiCiAgICAgICAgICAgIChl eHRyYWN0LWNhbGVuZGFyLXllYXIgZGF0ZSkKICAgICAgICAgICAgKGV4dHJhY3QtY2FsZW5kYXIt bW9udGggZGF0ZSkKICAgICAgICAgICAgKGV4dHJhY3QtY2FsZW5kYXItZGF5IGRhdGUpCiAgICAg ICAgICAgIChjYWwtY2hpbmEteC1kYXktbmFtZSBkYXRlKSkpKQoKKGRlZnVuIGNhbC1jaGluYS14 LWNoaW5lc2UtZGF0ZS1zdHJpbmcgKGRhdGUpCiAgKGxldCogKChjbi1kYXRlIChjYWxlbmRhci1j aGluZXNlLWZyb20tYWJzb2x1dGUKICAgICAgICAgICAgICAgICAgIChjYWxlbmRhci1hYnNvbHV0 ZS1mcm9tLWdyZWdvcmlhbiBkYXRlKSkpCiAgICAgICAgIChjbi15ZWFyICAoY2FkciAgIGNuLWRh dGUpKQogICAgICAgICAoY24tbW9udGggKGNhZGRyICBjbi1kYXRlKSkKICAgICAgICAgKGNuLWRh eSAgIChjYWRkZHIgY24tZGF0ZSkpKQogICAgKGZvcm1hdCAiJXMlc+W5tCVzJXMlcyglcyklcyIK ICAgICAgICAgICAgKGNhbGVuZGFyLWNoaW5lc2Utc2V4YWdlc2ltYWwtbmFtZSBjbi15ZWFyKQog ICAgICAgICAgICAoY2FsLWNoaW5hLXgtZ2V0LXpvZGlhYyBkYXRlKQogICAgICAgICAgICAoYXJl ZiBjYWwtY2hpbmEteC1tb250aC1uYW1lICgxLSAgKGZsb29yIGNuLW1vbnRoKSkpCiAgICAgICAg ICAgIChpZiAoaW50ZWdlcnAgY24tbW9udGgpICIiICIo6Zew5pyIKSIpCiAgICAgICAgICAgIChh cmVmIGNhbC1jaGluYS14LWRheS1uYW1lICgxLSBjbi1kYXkpKQogICAgICAgICAgICAoY2FsLWNo aW5hLXgtZ2V0LWhvcm9zY29wZSAoY2FyIGRhdGUpIChjYWRyIGRhdGUpKQogICAgICAgICAgICAo Y2FsLWNoaW5hLXgtZ2V0LWppZXFpIGRhdGUpKSkpCgooZGVmdW4gY2FsLWNoaW5hLXgtc2V0dXAg KCkKICAoc2V0cSBjYWxlbmRhci1kYXRlLWRpc3BsYXktZm9ybQoJJygoY2FsLWNoaW5hLXgtY2Fs ZW5kYXItZGlzcGxheS1mb3JtCiAgICAgICAgICAgKG1hcGNhciAobGFtYmRhIChlbCkgKHN0cmlu Zy10by1udW1iZXIgZWwpKQogICAgICAgICAgICAgICAgICAgKGxpc3QgbW9udGggZGF5IHllYXIp KSkpKQoKICAoc2V0cSBkaWFyeS1kYXRlLWZvcm1zIGNoaW5lc2UtZGF0ZS1kaWFyeS1wYXR0ZXJu KQoKICAoc2V0cSBjYWxlbmRhci1tb2RlLWxpbmUtZm9ybWF0CgkobGlzdAoJIChwcm9wZXJ0aXpl IChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cwoJCSAgICAgICJcXDxjYWxlbmRhci1tb2RlLW1hcD5c XFtzY3JvbGwtY2FsZW5kYXItbGVmdF0iKQoJCSAgICAgJ2hlbHAtZWNobyAibW91c2UtMjogc2Ny b2xsIGxlZnQiCgkJICAgICAnbW91c2UtZmFjZSAnbW9kZS1saW5lLWhpZ2hsaWdodAoJCSAgICAg J2tleW1hcCAobWFrZS1tb2RlLWxpbmUtbW91c2UtbWFwICdtb3VzZS0yCgkJCQkJCSAgICAgICAn bW91c2Utc2Nyb2xsLWNhbGVuZGFyLWxlZnQpKQoJICIqQ2FsZW5kYXIqIgoJIChjb25jYXQKCSAg KHByb3BlcnRpemUKCSAgIChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cwoJICAgICJcXDxjYWxlbmRh ci1tb2RlLW1hcD5cXFtjYWxlbmRhci1nb3RvLWluZm8tbm9kZV0gaW5mbyIpCgkgICAnaGVscC1l Y2hvICJtb3VzZS0yOiByZWFkIEluZm8gb24gQ2FsZW5kYXIiCgkgICAnbW91c2UtZmFjZSAnbW9k ZS1saW5lLWhpZ2hsaWdodAoJICAgJ2tleW1hcCAobWFrZS1tb2RlLWxpbmUtbW91c2UtbWFwICdt b3VzZS0yICdjYWxlbmRhci1nb3RvLWluZm8tbm9kZSkpCgkgICIvIgoJICAocHJvcGVydGl6ZQoJ ICAgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzCgkgICAgIlxcPGNhbGVuZGFyLW1vZGUtbWFwPlxc W2NhbGVuZGFyLW90aGVyLW1vbnRoXSBvdGhlciIpCgkgICAnaGVscC1lY2hvICJtb3VzZS0yOiBj aG9vc2UgYW5vdGhlciBtb250aCIKCSAgICdtb3VzZS1mYWNlICdtb2RlLWxpbmUtaGlnaGxpZ2h0 CgkgICAna2V5bWFwIChtYWtlLW1vZGUtbGluZS1tb3VzZS1tYXAKCQkgICAgJ21vdXNlLTIgJ21v dXNlLWNhbGVuZGFyLW90aGVyLW1vbnRoKSkKCSAgIi8iCgkgIChwcm9wZXJ0aXplCgkgICAoc3Vi c3RpdHV0ZS1jb21tYW5kLWtleXMKCSAgICAiXFw8Y2FsZW5kYXItbW9kZS1tYXA+XFxbY2FsZW5k YXItZ290by10b2RheV0gdG9kYXkiKQoJICAgJ2hlbHAtZWNobyAibW91c2UtMjogZ28gdG8gdG9k YXkncyBkYXRlIgoJICAgJ21vdXNlLWZhY2UgJ21vZGUtbGluZS1oaWdobGlnaHQKCSAgICdrZXlt YXAgKG1ha2UtbW9kZS1saW5lLW1vdXNlLW1hcCAnbW91c2UtMiAjJ2NhbGVuZGFyLWdvdG8tdG9k YXkpKSkKCSAnKGNhbGVuZGFyLWRhdGUtc3RyaW5nIGRhdGUgdCkKCSAnKGNhbC1jaGluYS14LWNo aW5lc2UtZGF0ZS1zdHJpbmcgZGF0ZSkKCSAocHJvcGVydGl6ZSAoc3Vic3RpdHV0ZS1jb21tYW5k LWtleXMKCQkgICAgICAiXFw8Y2FsZW5kYXItbW9kZS1tYXA+XFxbc2Nyb2xsLWNhbGVuZGFyLXJp Z2h0XSIpCgkJICAgICAnaGVscC1lY2hvICJtb3VzZS0yOiBzY3JvbGwgcmlnaHQiCgkJICAgICAn bW91c2UtZmFjZSAnbW9kZS1saW5lLWhpZ2hsaWdodAoJCSAgICAgJ2tleW1hcCAobWFrZS1tb2Rl LWxpbmUtbW91c2UtbWFwCgkJCSAgICAgICdtb3VzZS0yICdtb3VzZS1zY3JvbGwtY2FsZW5kYXIt cmlnaHQpKQoJIDs7IEZJWE1FOiB3aHkgc2hvdWxkIGkgYWRkIHRoaXMgaW4gb3JkZXIgdG8gZGlz cGxheSByaWdodCAnPicgPwoJICIiKSkKCiAgKGFkZC1ob29rICdjYWxlbmRhci1tb3ZlLWhvb2sg J3VwZGF0ZS1jYWxlbmRhci1tb2RlLWxpbmUpCgogIChzZXRxIGNoaW5lc2UtY2FsZW5kYXItY2Vs ZXN0aWFsLXN0ZW0gY2FsLWNoaW5hLXgtY2VsZXN0aWFsLXN0ZW0KCWNoaW5lc2UtY2FsZW5kYXIt dGVycmVzdHJpYWwtYnJhbmNoIGNhbC1jaGluYS14LXRlcnJlc3RyaWFsLWJyYW5jaCkKCiAgKHNl dHEgbG9jYWwtaG9saWRheXMKCScoKGhvbGlkYXktZml4ZWQgMSAgMSAgIuWFg+aXpiIpCgkgICho b2xpZGF5LWNoaW5lc2UtbmV3LXllYXIpCgkgIChob2xpZGF5LWZpeGVkIDMgIDggICLlpoflpbPo ioIiKQoJICAoaG9saWRheS1maXhlZCAzICAxMiAi5qSN5qCR6IqCIikKCSAgKGhvbGlkYXktZml4 ZWQgNSAgMSAgIuWKs+WKqOiKgiIpCgkgIChob2xpZGF5LWZpeGVkIDUgIDQgICLpnZLlubToioIi KQoJICAoaG9saWRheS1maXhlZCA2ICAxICAi5YS/56ul6IqCIikKCSAgKGhvbGlkYXktZml4ZWQg OSAgMTAgIuaVmeW4iOiKgiIpCgkgIChob2xpZGF5LWZpeGVkIDEwIDEgICLlm73luoboioIiKQoJ ICAoaG9saWRheS1maXhlZCAxMiAyNSAi5Zyj6K+e6IqCIikKCgkgIChob2xpZGF5LWx1bmFyIDEg MTUgIuWFg+WuteiKgiIpCgkgIChob2xpZGF5LWx1bmFyIDUgNSAgIuerr+WNiOiKgiIpCiAgICAg ICAgICAoaG9saWRheS1sdW5hciA3IDcgICLkuIPlpJXoioIiKQoJICAoaG9saWRheS1sdW5hciA5 IDkgICLph43pmLPoioIiKQoJICAoaG9saWRheS1sdW5hciA4IDE1ICLkuK3np4voioIiKSkpCgog IChzZXRxIGNhbGVuZGFyLWhvbGlkYXlzCgkoYXBwZW5kIGdlbmVyYWwtaG9saWRheXMgbG9jYWwt aG9saWRheXMpKSkKCgwKOzs7IExvdyBMZXZlbCBGdW5jdGlvbnMKCihkZWZ1biBjYWwtY2hpbmEt eC1kYXktbmFtZSAoZGF0ZSkKICAiQ2hpbmVzZSBkYXkgbmFtZSBpbiBhIHdlZWssIGxpa2UgYOaY n+acn+S4gCcuIgogIChjb25jYXQgIuaYn+acnyIgKGFyZWYgY2FsLWNoaW5hLXgtZGF5cyAoY2Fs ZW5kYXItZGF5LW9mLXdlZWsgZGF0ZSkpKSkKCihkZWZ1biBjYWwtY2hpbmEteC1kYXktc2hvcnQt bmFtZSAobnVtKQogICJTaG9ydCBjaGluZXNlIGRheSBuYW1lIGluIGEgd2VlaywgbGlrZSBg5LiA Jy4gTlVNIGlzIGZyb20gMC4uNgppbiBhIHdlZWsuIgogIChhcmVmIGNhbC1jaGluYS14LWRheXMg bnVtKSkKCihkZWZ1biBjYWwtY2hpbmEteC1nZXQtaG9yb3Njb3BlIChtb250aCBkYXkpCiAgIlJl dHVybiBob3Jvc2NvcGUgb24gTU9OVEgoMS0xMikgREFZKDEtMzEpLiIKICAoY2F0Y2ggJ3JldHVy bgogICAgKG1hcGMKICAgICAobGFtYmRhIChlbCkKICAgICAgIChsZXQgKChzdGFydCAoY2FyIGVs KSkKICAgICAgICAgICAgIChlbmQgKGNhZHIgZWwpKSkKICAgICAgICAgKHdoZW4gKG9yIChhbmQg KD0gbW9udGggKGNhciBzdGFydCkpCiAgICAgICAgICAgICAgICAgICAgICAgICg+PSBkYXkgKGNh ZHIgc3RhcnQpKSkKICAgICAgICAgICAgICAgICAgIChhbmQgKD0gbW9udGggKGNhciBlbmQpKQog ICAgICAgICAgICAgICAgICAgICAgICAoPD0gZGF5IChjYWRyIGVuZCkpKSkKICAgICAgICAgICAo dGhyb3cgJ3JldHVybiAoY2FkZHIgZWwpKSkpKQogICAgIGNhbC1jaGluYS14LWhvcm9zY29wZS1u YW1lKSkpCgooZGVmdW4gaG9saWRheS1jaGluZXNlLW5ldy15ZWFyICgpCiAgIkRhdGUgb2YgQ2hp bmVzZSBOZXcgWWVhci4iCiAgKGxldCAoKG0gZGlzcGxheWVkLW1vbnRoKQogICAgICAgICh5IGRp c3BsYXllZC15ZWFyKSkKICAgIChpbmNyZW1lbnQtY2FsZW5kYXItbW9udGggbSB5IDEpCiAgICAo aWYgKDwgbSA1KQogICAgICAgIChsZXQgKChjaGluZXNlLW5ldy15ZWFyCiAgICAgICAgICAgICAg IChjYWxlbmRhci1ncmVnb3JpYW4tZnJvbS1hYnNvbHV0ZQogICAgICAgICAgICAgICAgKGNhZHIg KGFzc29jIDEgKGNoaW5lc2UteWVhciB5KSkpKSkpCiAgICAgICAgICAoaWYgKGNhbGVuZGFyLWRh dGUtaXMtdmlzaWJsZS1wIGNoaW5lc2UtbmV3LXllYXIpCgkgICAgICBgKCgsY2hpbmVzZS1uZXct eWVhcgogICAgICAgICAgICAgICAgICwoZm9ybWF0ICIlc+W5tOaYpeiKgiIKICAgICAgICAgICAg ICAgICAgICAgICAgICAoY2FsZW5kYXItY2hpbmVzZS1zZXhhZ2VzaW1hbC1uYW1lCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICgrIHkgNTcpKSkpKSkpKSkpCgooZGVmdW4gY2FsLWNoaW5hLXgt Z2V0LXpvZGlhYyAoJm9wdGlvbmFsIGRhdGUpCiAgIkdldCB6b2RpYWMoU2hlbmcgWGlhbykgb24g REFURS4iCiAgKGxldCAoKG4gKGNhZHIgKGNhbGVuZGFyLWNoaW5lc2UtZnJvbS1hYnNvbHV0ZQog ICAgICAgICAgICAgICAgICAoY2FsZW5kYXItYWJzb2x1dGUtZnJvbS1ncmVnb3JpYW4KICAgICAg ICAgICAgICAgICAgIChvciBkYXRlIChjYWxlbmRhci1jdXJyZW50LWRhdGUpKSkpKSkpCiAgICAo YXJlZiBjYWwtY2hpbmEteC16b2RpYWMtbmFtZSAoJSAoMS0gbikgMTIpKSkpCgo7OyBhbiBhbGlz dCBvZiBkYXRlIGFuZCBqaWVxaSBuYW1lLiBUaGlzIHdpbGwgYmUgdXBkYXRlZCBhdXRvbWF0aWNh bGx5Cjs7IHdoZW4gbmVjZXNzYXJ5KGUuZy4sIHdoZW4geWVhciBleGNlZWRzIGl0cyByYW5nZSku CihkZWZ2YXIgY2FsLWNoaW5hLXgtamllcWktYWxpc3QgbmlsKQoKKGRlZnVuIGNhbC1jaGluYS14 LWdldC1qaWVxaSAoJm9wdGlvbmFsIGRhdGUpCiAgKHVubGVzcyBkYXRlCiAgICAoc2V0cSBkYXRl IChjYWxlbmRhci1jdXJyZW50LWRhdGUpKSkKICAobGV0ICgoeWVhciAoZXh0cmFjdC1jYWxlbmRh ci15ZWFyIGRhdGUpKQogICAgICAgIChqaWVxaS15ZWFyIChhbmQgY2FsLWNoaW5hLXgtamllcWkt YWxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgIChleHRyYWN0LWNhbGVuZGFyLXllYXIKICAg ICAgICAgICAgICAgICAgICAgICAgICAoY2FhciBjYWwtY2hpbmEteC1qaWVxaS1hbGlzdCkpKSkp CiAgICAod2hlbiAob3IgKG51bGwgamllcWkteWVhcikgKG5vdCAoPSB5ZWFyIGppZXFpLXllYXIp KSkKICAgICAgKHNldHEgY2FsLWNoaW5hLXgtamllcWktYWxpc3QKICAgICAgICAgICAgKGNhbC1j aGluYS14LWppZXFpLWFsaXN0LW5ldyB5ZWFyKSkpKQogIChvciAoY2RyIChhc3NvYyBkYXRlIGNh bC1jaGluYS14LWppZXFpLWFsaXN0KSkKICAgICAgIiIpKQoKKGRlZnVuIGNhbC1jaGluYS14LWpp ZXFpLWFsaXN0LW5ldyAoeWVhcikKICAiUmV0dXJuIGEgamllcWkgYWxpc3QgZm9yIFlFQVIuIgog IChsb29wIGZvciBpIGZyb20gMCB1cHRvIDIzCgogICAgICAgIGZvciBxaiA9IChjYWwtY2hpbmEt eC1uZXh0LWppZXFpIGAoMSAxICx5ZWFyKSkKICAgICAgICB0aGVuIChzZXRxIHFqIChjYWwtY2hp bmEteC1uZXh0LWppZXFpIHFqKSkKCiAgICAgICAgd2l0aCBqaWVxaS1hbGlzdCA9ICcoKQoKICAg ICAgICBjb2xsZWN0IChjb25zIHFqIChhcmVmIGNhbC1jaGluYS14LWppZXFpLW5hbWUgaSkpCiAg ICAgICAgaW50byBqaWVxaS1hbGlzdAoKICAgICAgICBmaW5hbGx5IHJldHVybiBqaWVxaS1hbGlz dCkpCgooZGVmdW4gY2FsLWNoaW5hLXgtZ3JlZ29yaWFuLWZyb20tYXN0cm8gKGEpCiAgKGNhbGVu ZGFyLWdyZWdvcmlhbi1mcm9tLWFic29sdXRlCiAgIChmbG9vciAoY2FsZW5kYXItYWJzb2x1dGUt ZnJvbS1hc3RybyBhKSkpKQoKKGRlZnVuIGNhbC1jaGluYS14LWFzdHJvLWZyb20tZ3JlZ29yaWFu IChnKQogIChjYWxlbmRhci1hc3Ryby1mcm9tLWFic29sdXRlCiAgIChjYWxlbmRhci1hYnNvbHV0 ZS1mcm9tLWdyZWdvcmlhbiBnKSkpCgooZGVmdW4gY2FsLWNoaW5hLXgtbmV4dC1qaWVxaSAoZGF0 ZSkKICAiUmV0dXJuIG5leHQgamllcWkncyBkYXRhIGFmdGVyIERBVEUuCkVhY2ggamllcWkgaXMg c2VwYXJhdGVkIGJ5IDE1IGxvbmd0aXR1ZGUgZGVncmVlcyBvciBzbywgcGx1cyBhbgpleHRyYSBk YXkgYXBwZW5kZWQuIgogIChjYWwtY2hpbmEteC1ncmVnb3JpYW4tZnJvbS1hc3RybwogICAgKHNv bGFyLWRhdGUtbmV4dC1sb25naXR1ZGUKICAgICAoY2FsLWNoaW5hLXgtYXN0cm8tZnJvbS1ncmVn b3JpYW4KICAgICAgKGNhbGVuZGFyLWdyZWdvcmlhbi1mcm9tLWFic29sdXRlCiAgICAgICAoMSsg KGNhbGVuZGFyLWFic29sdXRlLWZyb20tZ3JlZ29yaWFuIGRhdGUpKSkpCiAgICAgMTUpKSkKCgwK Ozs7IE1vZGlmaWNhdGlvbnMgdG8gU3RhbmRhcmQgRnVuY3Rpb25zCgo7OyBUaGVzZSBmdW5jdGlv bnMoZnJvbSBjYWxlbmRhci5lbCwgY2FsLWNoaW5hLmVsKSBoYXZlIGJlZW4gbW9kaWZpZWQKOzsg Zm9yIGxvY2FsaXphdGlvbi4KCihkZWZ1biBjYWxlbmRhci1jaGluZXNlLXNleGFnZXNpbWFsLW5h bWUgKG4pCiAgIlRoZSBOLXRoIG5hbWUgb2YgdGhlIENoaW5lc2Ugc2V4YWdlc2ltYWwgY3ljbGUu Ck4gY29uZ3J1ZW50IHRvIDEgZ2l2ZXMgdGhlIGZpcnN0IG5hbWUsIE4gY29uZ3J1ZW50IHRvIDIg Z2l2ZXMgdGhlIHNlY29uZCBuYW1lLAouLi4sIE4gY29uZ3J1ZW50IHRvIDYwIGdpdmVzIHRoZSBz aXh0aWV0aCBuYW1lLiIKICA7OyAiJXMtJXMiIC0+ICIlcyVzIiwgc2luY2UgQ2hpbmVzZSBjaGFy YWN0ZXJzIGFyZSB0aWdodCBvbmUgYnkgb25lLAogIDs7IG5vIGV4dHJhIGAtJyBuZWVkZWQuCiAg KGZvcm1hdCAiJXMlcyIKICAgICAgICAgIChhcmVmIGNoaW5lc2UtY2FsZW5kYXItY2VsZXN0aWFs LXN0ZW0gKCUgKDEtIG4pIDEwKSkKICAgICAgICAgIChhcmVmIGNoaW5lc2UtY2FsZW5kYXItdGVy cmVzdHJpYWwtYnJhbmNoICglICgxLSBuKSAxMikpKSkKCihkZWZ1biBnZW5lcmF0ZS1jYWxlbmRh ci1tb250aCAobW9udGggeWVhciBpbmRlbnQpCiAgIlByb2R1Y2UgYSBjYWxlbmRhciBmb3IgTU9O VEgsIFlFQVIgb24gdGhlIEdyZWdvcmlhbiBjYWxlbmRhci4KVGhlIGNhbGVuZGFyIGlzIGluc2Vy dGVkIGluIHRoZSBidWZmZXIgc3RhcnRpbmcgYXQgdGhlIGxpbmUgb24gd2hpY2ggcG9pbnQKaXMg Y3VycmVudGx5IGxvY2F0ZWQsIGJ1dCBpbmRlbnRlZCBJTkRFTlQgc3BhY2VzLiAgVGhlIGluZGVu dGF0aW9uIGlzIGRvbmUKZnJvbSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9uIHRoZSBsaW5lIGFuZCBk b2VzIG5vdCBkaXN0dXJiIHRoZSBmaXJzdCBJTkRFTlQKY2hhcmFjdGVycyBvbiB0aGUgbGluZS4i CiAgKGxldCogKChibGFuay1kYXlzIDs7IGF0IHN0YXJ0IG9mIG1vbnRoCiAgICAgICAgICAobW9k CiAgICAgICAgICAgKC0gKGNhbGVuZGFyLWRheS1vZi13ZWVrIChsaXN0IG1vbnRoIDEgeWVhcikp CiAgICAgICAgICAgICAgY2FsZW5kYXItd2Vlay1zdGFydC1kYXkpCiAgICAgICAgICAgNykpCgkg KGxhc3QgKGNhbGVuZGFyLWxhc3QtZGF5LW9mLW1vbnRoIG1vbnRoIHllYXIpKSkKICAgIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpCiAgICAoY2FsZW5kYXItaW5zZXJ0LWluZGVudGVkCiAgICAgKGNh bGVuZGFyLXN0cmluZy1zcHJlYWQKICAgICAgKGxpc3QgKGZvcm1hdCAiJWTlubQlMmTmnIgiIHll YXIgbW9udGgpKSA/ICAyMCkKICAgICBpbmRlbnQgdCkKICAgIChjYWxlbmRhci1pbnNlcnQtaW5k ZW50ZWQgIiIgaW5kZW50KSA7OyBHbyB0byBwcm9wZXIgc3BvdAogICAgKGNhbGVuZGFyLWZvci1s b29wIGkgZnJvbSAwIHRvIDYgZG8KICAgICAgIChpbnNlcnQKCShsZXQgKChzdHJpbmcKCSAgICAg ICAoY2FsZW5kYXItZGF5LW5hbWUgKG1vZCAoKyBjYWxlbmRhci13ZWVrLXN0YXJ0LWRheSBpKSA3 KSBuaWwgdCkpKQoJICAoaWYgZW5hYmxlLW11bHRpYnl0ZS1jaGFyYWN0ZXJzCgkgICAgICAodHJ1 bmNhdGUtc3RyaW5nLXRvLXdpZHRoIHN0cmluZyAyKQoJICAgIChzdWJzdHJpbmcgc3RyaW5nIDAg MikpKQoJIiAiKSkKICAgIDs7IEZJWE1FOiBTZWVtcyBpdCdzIHVuZWFzeSB0byBtYWtlIGNoaW5l c2UgYWxpZ24gY29ycmVjdGx5Cjs7ICAgICAoY2FsZW5kYXItZm9yLWxvb3AgaSBmcm9tIDAgdG8g NiBkbwo7OyAgICAgICAgKGluc2VydAo7OyAJKGxldCAoKHN0cmluZwo7OyAJICAgICAgIChjYWwt Y2hpbmEteC1kYXktc2hvcnQtbmFtZSBpKSkpCjs7IAkgIHN0cmluZykKOzsgCSIgICIpKQogICAg KGNhbGVuZGFyLWluc2VydC1pbmRlbnRlZCAiIiAwIHQpCSA7OyBGb3JjZSBvbnRvIGZvbGxvd2lu ZyBsaW5lCiAgICAoY2FsZW5kYXItaW5zZXJ0LWluZGVudGVkICIiIGluZGVudCkgOzsgR28gdG8g cHJvcGVyIHNwb3QKICAgIDs7IEFkZCBibGFuayBkYXlzIGJlZm9yZSB0aGUgZmlyc3Qgb2YgdGhl IG1vbnRoCiAgICAoY2FsZW5kYXItZm9yLWxvb3AgaSBmcm9tIDEgdG8gYmxhbmstZGF5cyBkbyAo aW5zZXJ0ICIgICAiKSkKICAgIDs7IFB1dCBpbiB0aGUgZGF5cyBvZiB0aGUgbW9udGgKICAgIChj YWxlbmRhci1mb3ItbG9vcCBpIGZyb20gMSB0byBsYXN0IGRvCiAgICAgICAoaW5zZXJ0IChmb3Jt YXQgIiUyZCAiIGkpKQogICAgICAgKGFkZC10ZXh0LXByb3BlcnRpZXMKCSgtIChwb2ludCkgMykg KDEtIChwb2ludCkpCgknKG1vdXNlLWZhY2UgaGlnaGxpZ2h0CgkJICAgICBoZWxwLWVjaG8gIm1v dXNlLTI6IG1lbnUgb2Ygb3BlcmF0aW9ucyBmb3IgdGhpcyBkYXRlIikpCiAgICAgICAoYW5kICh6 ZXJvcCAobW9kICgrIGkgYmxhbmstZGF5cykgNykpCgkgICAgKC89IGkgbGFzdCkKICAgICAgICAg ICAoY2FsZW5kYXItaW5zZXJ0LWluZGVudGVkICIiIDAgdCkgICAgOzsgRm9yY2Ugb250byBmb2xs b3dpbmcgbGluZQogICAgICAgICAgIChjYWxlbmRhci1pbnNlcnQtaW5kZW50ZWQgIiIgaW5kZW50 KSkpKSk7OyBHbyB0byBwcm9wZXIgc3BvdAoKDAo7OyBzZXQgdXAKKGNhbC1jaGluYS14LXNldHVw KQoKKHByb3ZpZGUgJ2NhbC1jaGluYS14KQoKOzs7IExvY2FsIFZhcmlhYmxlczogKioqCjs7OyBj b2Rpbmc6IHV0Zi04ICoqKgo7OzsgRW5kOiAqKioKCjs7OyBjYWwtY2hpbmEteC5lbCBlbmRzIGhl cmUK