# ob1_modified v2.1 # Outputs when the article was last modified or the author who modified it. # Henrik Jönsson # http://rise.lewander.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMDp7czo0OiJuYW1lIjtzOjEyOiJvYjFfbW9kaWZpZWQiO3M6NzoidmVyc2lvbiI7czoz OiIyLjEiO3M6NjoiYXV0aG9yIjtzOjE1OiJIZW5yaWsgSsO2bnNzb24iO3M6MTA6ImF1dGhv cl91cmkiO3M6MjU6Imh0dHA6Ly9yaXNlLmxld2FuZGVyLmNvbS8iO3M6MTE6ImRlc2NyaXB0 aW9uIjtzOjczOiJPdXRwdXRzIHdoZW4gdGhlIGFydGljbGUgd2FzIGxhc3QgbW9kaWZpZWQg b3IgdGhlIGF1dGhvciB3aG8gbW9kaWZpZWQgaXQuIjtzOjQ6InR5cGUiO2k6MDtzOjM6ImNz cyI7czoyMDYyOiI8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgpAbWVkaWEgYWxsIHsKCSNoZWxw Q29udGVudHMgKiB7CgkJYm9yZGVyOiAwOwoJCW1hcmdpbjogMDsKCX0KCSNoZWxwQ29udGVu dHMgewoJCWZvbnQtZmFtaWx5OiAnTHVjaWRhIEdyYW5kZScsSGVsdmV0aWNhLEFyaWFsLHNh bnMtc2VyaWY7CgkJZm9udC1zaXplOiAxMXB4OwoJCWxpbmUtaGVpZ2h0OjEuNGVtOwoJCXBh ZGRpbmc6MTBweDsKCX0KCSNoZWxwQ29udGVudHMgdWwgewoJCWxpc3Qtc3R5bGU6IHNxdWFy ZTsKCX0KCSNoZWxwQ29udGVudHMgaDEsaDIsaDMgewoJCWZvbnQtd2VpZ2h0OiBib2xkOwoJ CWZvbnQtZmFtaWx5OiAnTHVjaWRhIEdyYW5kZScsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2Vy aWY7Cgl9CgkjaGVscENvbnRlbnRzIGgxIHsKCQltYXJnaW4tYm90dG9tOiA0cHg7Cgl9Cgkj aGVscENvbnRlbnRzIGgyIHsKCQl0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwoJfQoJI2hl bHBDb250ZW50cyBoMyB7CgkJZm9udC1zaXplOiAxZW07CgkJbWFyZ2luLXRvcDogMTBweDsK CQltYXJnaW4tbGVmdDogMTBweDsKCX0KCSNoZWxwQ29udGVudHMgbGkgewoJCW1hcmdpbi10 b3A6IDRweDsKCX0KCSNoZWxwQ29udGVudHMgcCB7CgkJZm9udC1mYW1pbHk6ICdUcmVidWNo ZXQgTVMnLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwoJCWZvbnQtc2l6ZTogMS4xZW07 CgkJbWFyZ2luLXRvcDogMTBweDsKCQltYXJnaW4tbGVmdDogMjBweDsKCX0KCSNoZWxwQ29u dGVudHMgc3Ryb25nLCAjaGVscENvbnRlbnRzIGIgewoJCWZvbnQtZmFtaWx5OiAnVHJlYnVj aGV0IE1TJyxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsKCQlmb250LXNpemU6IDFlbTsK CX0KCSNoZWxwQ29udGVudHMgdWwsICNoZWxwQ29udGVudHMgb2wgewoJCW1hcmdpbi1sZWZ0 OiAzMHB4OwoJfQoJI2hlbHBDb250ZW50cyBibG9ja3F1b3RlIHsKCQlwYWRkaW5nOiA4cHgg NHB4IDhweCA0cHg7CgkJbWFyZ2luLXRvcDogMTBweDsKCX0KCSNoZWxwQ29udGVudHMgYmxv Y2txdW90ZSBwIHsKCQltYXJnaW46IDA7Cgl9Cn0KQG1lZGlhIHNjcmVlbiB7CgkjaGVscENv bnRlbnRzIHsKCQliYWNrZ3JvdW5kLWNvbG9yOiAjMDA1ZTdlOwoJCWJvcmRlcjogMXB4IGRv dHRlZCAjMDA1ZTdlOwoJCXdpZHRoOiA3MDBweDsKCQljb2xvcjogI2MzZTlmNjsKCX0KCSNo ZWxwQ29udGVudHMgYSwgI2hlbHBDb250ZW50cyBhLnZpc2l0ZWQgewoJCWNvbG9yOiAjNDJi M2Q3OwoJCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCQlib3JkZXItYm90dG9tOiAxcHggZG90 dGVkICM0MmIzZDc7Cgl9CgkjaGVscENvbnRlbnRzIGFbdGl0bGU9J0V4dGVybmFsIGxpbmsn XSwgI2hlbHBDb250ZW50cyBhW3RpdGxlPSdUZXh0Ym9vazogQXR0cmlidXRlcyBDcm9zcyBS ZWZlcmVuY2UnXSB7CgkJY29sb3I6ICNkZWViY2Q7CgkJYm9yZGVyLWJvdHRvbTogMXB4IGRv dHRlZCAjZGVlYmNkOwoJfQoJI2hlbHBDb250ZW50cyBhOmhvdmVyIHsKCQljb2xvcjogIzZi ZDVmYTsKCQlib3JkZXItYm90dG9tOiAwOwoJfQoJI2hlbHBDb250ZW50cyBhY3JvbnltIHsK CQlib3JkZXItYm90dG9tOiAxcHggZG90dGVkICNjM2U5ZjY7CgkJY3Vyc29yOiBoZWxwOwoJ fQoJI2hlbHBDb250ZW50cyBjb2RlLCAjaGVscENvbnRlbnRzIGJsb2NrcXVvdGUgewoJCWJh Y2tncm91bmQtY29sb3I6ICM0MmIzZDc7CgkJcGFkZGluZy1sZWZ0OiA0cHg7CgkJcGFkZGlu Zy1yaWdodDogNHB4OwoJfQoJI2hlbHBDb250ZW50cyBibG9ja3F1b3RlIHsKCQlwYWRkaW5n OiA0cHg7CgkJYm9yZGVyOiAxcHggZG90dGVkICMwMDVlN2U7CgkJY29sb3I6ICNmZmYgIWlt cG9ydGFudDsKCX0KfQpAbWVkaWEgcHJpbnQgewoJI2hlbHBDb250ZW50cyB7CgkJYm9yZGVy OiAxcHggZG90dGVkICNjY2M7CgkJY29sb3I6ICMwMDA7Cgl9CgkjaGVscENvbnRlbnRzIGEs ICNoZWxwQ29udGVudHMgYTp2aXNpdGVkIHsKCQljb2xvcjogIzMzMzsKCX0KCSNoZWxwQ29u dGVudHMgZGl2LmluZGV4IHVsIHsKCQlkaXNwbGF5OiBub25lOwoJfQp9Cjwvc3R5bGU+Cjxk aXYgaWQ9ImhlbHBDb250ZW50cyI+IjtzOjQ6ImhlbHAiO3M6NzU5ODoiPHN0eWxlIHR5cGU9 InRleHQvY3NzIj4KQG1lZGlhIGFsbCB7CgkjaGVscENvbnRlbnRzICogewoJCWJvcmRlcjog MDsKCQltYXJnaW46IDA7Cgl9CgkjaGVscENvbnRlbnRzIHsKCQlmb250LWZhbWlseTogJ0x1 Y2lkYSBHcmFuZGUnLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwoJCWZvbnQtc2l6ZTog MTFweDsKCQlsaW5lLWhlaWdodDoxLjRlbTsKCQlwYWRkaW5nOjEwcHg7Cgl9CgkjaGVscENv bnRlbnRzIHVsIHsKCQlsaXN0LXN0eWxlOiBzcXVhcmU7Cgl9CgkjaGVscENvbnRlbnRzIGgx LGgyLGgzIHsKCQlmb250LXdlaWdodDogYm9sZDsKCQlmb250LWZhbWlseTogJ0x1Y2lkYSBH cmFuZGUnLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwoJfQoJI2hlbHBDb250ZW50cyBo MSB7CgkJbWFyZ2luLWJvdHRvbTogNHB4OwoJfQoJI2hlbHBDb250ZW50cyBoMiB7CgkJdGV4 dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKCX0KCSNoZWxwQ29udGVudHMgaDMgewoJCWZvbnQt c2l6ZTogMWVtOwoJCW1hcmdpbi10b3A6IDEwcHg7CgkJbWFyZ2luLWxlZnQ6IDEwcHg7Cgl9 CgkjaGVscENvbnRlbnRzIGxpIHsKCQltYXJnaW4tdG9wOiA0cHg7Cgl9CgkjaGVscENvbnRl bnRzIHAgewoJCWZvbnQtZmFtaWx5OiAnVHJlYnVjaGV0IE1TJyxIZWx2ZXRpY2EsQXJpYWws c2Fucy1zZXJpZjsKCQlmb250LXNpemU6IDEuMWVtOwoJCW1hcmdpbi10b3A6IDEwcHg7CgkJ bWFyZ2luLWxlZnQ6IDIwcHg7Cgl9CgkjaGVscENvbnRlbnRzIHN0cm9uZywgI2hlbHBDb250 ZW50cyBiIHsKCQlmb250LWZhbWlseTogJ1RyZWJ1Y2hldCBNUycsSGVsdmV0aWNhLEFyaWFs LHNhbnMtc2VyaWY7CgkJZm9udC1zaXplOiAxZW07Cgl9CgkjaGVscENvbnRlbnRzIHVsLCAj aGVscENvbnRlbnRzIG9sIHsKCQltYXJnaW4tbGVmdDogMzBweDsKCX0KCSNoZWxwQ29udGVu dHMgYmxvY2txdW90ZSB7CgkJcGFkZGluZzogOHB4IDRweCA4cHggNHB4OwoJCW1hcmdpbi10 b3A6IDEwcHg7Cgl9CgkjaGVscENvbnRlbnRzIGJsb2NrcXVvdGUgcCB7CgkJbWFyZ2luOiAw OwoJfQp9CkBtZWRpYSBzY3JlZW4gewoJI2hlbHBDb250ZW50cyB7CgkJYmFja2dyb3VuZC1j b2xvcjogIzAwNWU3ZTsKCQlib3JkZXI6IDFweCBkb3R0ZWQgIzAwNWU3ZTsKCQl3aWR0aDog NzAwcHg7CgkJY29sb3I6ICNjM2U5ZjY7Cgl9CgkjaGVscENvbnRlbnRzIGEsICNoZWxwQ29u dGVudHMgYS52aXNpdGVkIHsKCQljb2xvcjogIzQyYjNkNzsKCQl0ZXh0LWRlY29yYXRpb246 IG5vbmU7CgkJYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjNDJiM2Q3OwoJfQoJI2hlbHBD b250ZW50cyBhW3RpdGxlPSdFeHRlcm5hbCBsaW5rJ10sICNoZWxwQ29udGVudHMgYVt0aXRs ZT0nVGV4dGJvb2s6IEF0dHJpYnV0ZXMgQ3Jvc3MgUmVmZXJlbmNlJ10gewoJCWNvbG9yOiAj ZGVlYmNkOwoJCWJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgI2RlZWJjZDsKCX0KCSNoZWxw Q29udGVudHMgYTpob3ZlciB7CgkJY29sb3I6ICM2YmQ1ZmE7CgkJYm9yZGVyLWJvdHRvbTog MDsKCX0KCSNoZWxwQ29udGVudHMgYWNyb255bSB7CgkJYm9yZGVyLWJvdHRvbTogMXB4IGRv dHRlZCAjYzNlOWY2OwoJCWN1cnNvcjogaGVscDsKCX0KCSNoZWxwQ29udGVudHMgY29kZSwg I2hlbHBDb250ZW50cyBibG9ja3F1b3RlIHsKCQliYWNrZ3JvdW5kLWNvbG9yOiAjNDJiM2Q3 OwoJCXBhZGRpbmctbGVmdDogNHB4OwoJCXBhZGRpbmctcmlnaHQ6IDRweDsKCX0KCSNoZWxw Q29udGVudHMgYmxvY2txdW90ZSB7CgkJcGFkZGluZzogNHB4OwoJCWJvcmRlcjogMXB4IGRv dHRlZCAjMDA1ZTdlOwoJCWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cgl9Cn0KQG1lZGlhIHBy aW50IHsKCSNoZWxwQ29udGVudHMgewoJCWJvcmRlcjogMXB4IGRvdHRlZCAjY2NjOwoJCWNv bG9yOiAjMDAwOwoJfQoJI2hlbHBDb250ZW50cyBhLCAjaGVscENvbnRlbnRzIGE6dmlzaXRl ZCB7CgkJY29sb3I6ICMzMzM7Cgl9CgkjaGVscENvbnRlbnRzIGRpdi5pbmRleCB1bCB7CgkJ ZGlzcGxheTogbm9uZTsKCX0KfQo8L3N0eWxlPgo8ZGl2IGlkPSJoZWxwQ29udGVudHMiPgoK Cgk8aDE+b2IxLW1vZGlmaWVkIHYyLjEgWzIwMDctMTAtMDZdPC9oMT4KCjxkaXYgY2xhc3M9 ImluZGV4Ij4KCgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNwbHVnaW5TdW1tYXJ5Ij5TdW1tYXJ5 PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNwbHVnaW5BdHRyaWJ1dGVzIj5BdHRyaWJ1dGVz PC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjcGx1Z2luT3V0cHV0Ij5vdXRwdXQ8L2E+PC9s aT4KCQk8bGk+PGEgaHJlZj0iI3BsdWdpblN0YXJ0VGV4dCI+c3RhcnR0ZXh0PC9hPjwvbGk+ CgkJPGxpPjxhIGhyZWY9IiNwbHVnaW5FbmRUZXh0Ij5lbmR0ZXh0PC9hPjwvbGk+CgkJPGxp PjxhIGhyZWY9IiNwbHVnaW5Gb3JtYXQiPmZvcm1hdDwvYT48L2xpPgoJCTxsaT48YSBocmVm PSImIzM0OzojcGx1Z2luQ2xhc3MiPmNsYXNzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiYj MzQ7OiNwbHVnaW5HTVQiPmdtdDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSImIzM0OzojcGx1 Z2luTGFuZyI+bGFuZzwvYT48L2xpPgoJCTxsaT48YSBocmVmPSImIzM0OzojcGx1Z2luV3Jh cFRhZyI+d3JhcHRhZzwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjcGx1 Z2luRXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNwbHVnaW5D aGFuZ2VMb2ciPkNoYW5nZSBsb2c8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iaHR0cDovL3Jp c2UubGV3YW5kZXIuY29tLyIgdGl0bGU9IkV4dGVybmFsIGxpbmsiPkF1dGhvciA8c3BhbiBj bGFzcz0iY2FwcyI+VVJMPC9zcGFuPjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSJodHRwOi8v Zm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MzcxMCIgdGl0bGU9IkV4 dGVybmFsIGxpbmsiPjxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcnVtIHRocmVh ZDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSJodHRwOi8vcmlzZS5sZXdhbmRlci5jb20vdGV4 dHBhdHRlcm4vb2IxLW1vZGlmaWVkIiB0aXRsZT0iRXh0ZXJuYWwgbGluayI+UGx1Z2luIDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9Imh0 dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzMuMC8iIHRpdGxlPSJF eHRlcm5hbCBsaW5rIj5MaWNlbnNlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+PC9h PjwvbGk+Cgk8L3VsPgoKPC9kaXY+CgoJPGgyIGlkPSJwbHVnaW5TdW1tYXJ5Ij5TdW1tYXJ5 PC9oMj4KCgk8cD5PdXRwdXRzIHdoZW4gdGhlIGFydGljbGUgd2FzIGxhc3QgbW9kaWZpZWQu IFRoZSB3aG9sZSB0YWcgd29ya3MgZXhhY3RseSBsaWtlIHR4cDpwb3N0ZWQgZXhjZXB0IHRo YXQgaXQgb3V0cHV0cyBsYXN0IG1vZGlmaWVkIGluc3RlYWQuPC9wPgoKCTxoMiBpZD0icGx1 Z2luQXR0cmlidXRlcyI+QXR0cmlidXRlczwvaDI+CgoJPGgzIGlkPSJwbHVnaW5PdXRwdXQi Pm91dHB1dDwvaDM+CgoJPHA+V2hlbiB0byBvdXRwdXQgYW55dGhpbmcuPC9wPgoKCTx1bD4K CQk8bGk+PGVtPmFsd2F5czwvZW0+ICYjODIxMTsgQWx3YXlzIG91dHB1dCAoZGVmYXVsdCku PC9saT4KCQk8bGk+PGVtPmRpZmZlcnM8L2VtPiAmIzgyMTE7IE91dHB1dCBpZiBtb2RpZmll ZCBkYXRlIGRpZmZlcnMgZnJvbSB0aGUgcG9zdGVkIG9uZS48L2xpPgoJPC91bD4KCgk8aDMg aWQ9InBsdWdpblN0YXJ0VGV4dCI+c3RhcnR0ZXh0PC9oMz4KCgk8cD5BZGQgdGV4dCBiZWZv cmUgdGhlIG91dHB1dC48L3A+CgoJPGgzIGlkPSJwbHVnaW5FbmRUZXh0Ij5lbmR0ZXh0PC9o Mz4KCgk8cD5BZGQgdGV4dCBhZnRlciB0aGUgb3V0cHV0LjwvcD4KCgk8aDMgaWQ9InBsdWdp bkxhbmciPjxhIGhyZWY9Imh0dHA6Ly90ZXh0Ym9vay50ZXh0cGF0dGVybi5uZXQvd2lraS9p bmRleC5waHA/dGl0bGU9QXR0cmlidXRlc19Dcm9zc19SZWZlcmVuY2UjY2xhc3MiIHRpdGxl PSJUZXh0Ym9vazogQXR0cmlidXRlcyBDcm9zcyBSZWZlcmVuY2UiPmNsYXNzPC9hPjwvaDM+ CgoJPHA+PHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgYXR0cmlidXRlIGZv ciB3cmFwdGFnLCBkZWZhdWx0IGlzIDxzdHJvbmc+ZW1wdHk8L3N0cm9uZz4uPC9wPgoKCTxo MyBpZD0icGx1Z2luRm9ybWF0Ij48YSBocmVmPSJodHRwOi8vdGV4dGJvb2sudGV4dHBhdHRl cm4ubmV0L3dpa2kvaW5kZXgucGhwP3RpdGxlPUF0dHJpYnV0ZXNfQ3Jvc3NfUmVmZXJlbmNl I2Zvcm1hdCIgdGl0bGU9IlRleHRib29rOiBBdHRyaWJ1dGVzIENyb3NzIFJlZmVyZW5jZSI+ Zm9ybWF0PC9hPjwvaDM+CgoJPHA+T3ZlcnJpZGVzIHRoZSBmb3JtYXQgc2V0IGluIHRoZSBU ZXh0cGF0dGVybiBwcmVmZXJlbmNlcy48L3A+CgoJPHA+T3ZlcnJpZGUgZGVmYXVsdCBkYXRl IGZvcm1hdCwgYXMgc2V0IGluIHByZWZlcmVuY2VzLiBBdmFpbGFibGUgdmFsdWVzOjwvcD4K Cgk8dWw+CgkJPGxpPkFueSB2YWxpZCA8YSBocmVmPSJodHRwOi8vcGhwLm5ldC9zdHJmdGlt ZSIgdGl0bGU9IkV4dGVybmFsIGxpbmsiPjxlbT5zdHJmdGltZSgpPC9lbT48L2E+IHN0cmlu ZyB2YWx1ZXMuPC9saT4KCQk8bGk+PGVtPnNpbmNlPC9lbT4gJiM4MjExOyBvdXRwdXRzIHdo YXQgdGltZSBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgZWRpdC48L2xpPgoJCTxsaT48 ZW0+YXV0aG9yPC9lbT4gJiM4MjExOyBvdXRwdXQgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBp bnN0ZWFkIG9mIHRoZSBkYXRlLjwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0icGx1Z2luR01UIj48 YSBocmVmPSJodHRwOi8vdGV4dGJvb2sudGV4dHBhdHRlcm4ubmV0L3dpa2kvaW5kZXgucGhw P3RpdGxlPUF0dHJpYnV0ZXNfQ3Jvc3NfUmVmZXJlbmNlI2dtdCIgdGl0bGU9IlRleHRib29r OiBBdHRyaWJ1dGVzIENyb3NzIFJlZmVyZW5jZSI+Z210PC9hPjwvaDM+CgoJPHA+UmV0dXJu IGVpdGhlciBsb2NhbCB0aW1lIGFjY29yZGluZyB0byB0aGUgc2V0IHRpbWUgem9uZSBwcmVm ZXJlbmNlcyAoMCkgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkdNVDwvc3Bhbj4gdGltZSAoMSku IERlZmF1bHQgaXMgMC48L3A+CgoJPGgzIGlkPSJwbHVnaW5MYW5nIj48YSBocmVmPSJodHRw Oi8vdGV4dGJvb2sudGV4dHBhdHRlcm4ubmV0L3dpa2kvaW5kZXgucGhwP3RpdGxlPUF0dHJp YnV0ZXNfQ3Jvc3NfUmVmZXJlbmNlI2xhbmciIHRpdGxlPSJUZXh0Ym9vazogQXR0cmlidXRl cyBDcm9zcyBSZWZlcmVuY2UiPmxhbmc8L2E+PC9oMz4KCgk8cD5Gb3JtYXQgdGltZSBzdHJp bmcgc3VpdGFibGUgZm9yIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgKGxvY2FsZSkuIExvY2Fs ZXMgYWRoZXJlIHRvIDxhIGhyZWY9Imh0dHA6Ly93d3cubG9jLmdvdi9zdGFuZGFyZHMvaXNv NjM5LTIvbGFuZ2NvZGVzLmh0bWwiIHRpdGxlPSJFeHRlcm5hbCBsaW5rIj48c3BhbiBjbGFz cz0iY2FwcyI+SVNPPC9zcGFuPi02Mzk8L2E+LiBEZWZhdWx0IGlzIGVtcHR5LCByZXN1bHRp bmcgaW4gYSB0aW1lIGZvcm1hdCBzZXQgdmlhIHByZWZlcmVuY2VzLjwvcD4KCgk8aDMgaWQ9 InBsdWdpbldyYXBUYWciPjxhIGhyZWY9Imh0dHA6Ly90ZXh0Ym9vay50ZXh0cGF0dGVybi5u ZXQvd2lraS9pbmRleC5waHA/dGl0bGU9QXR0cmlidXRlc19Dcm9zc19SZWZlcmVuY2Ujd3Jh cHRhZyIgdGl0bGU9IlRleHRib29rOiBBdHRyaWJ1dGVzIENyb3NzIFJlZmVyZW5jZSI+d3Jh cHRhZzwvYT48L2gzPgoKCTxwPjxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0YWcg c3Vycm91bmRpbmcgdGhlIHBvc3QgZGF0ZS4gRGVmYXVsdCBpcyB1bnNldC4gU2VlIDxhIGhy ZWY9Imh0dHA6Ly90ZXh0Ym9vay50ZXh0cGF0dGVybi5uZXQvd2lraS9pbmRleC5waHA/dGl0 bGU9QXR0cmlidXRlc19Dcm9zc19SZWZlcmVuY2UiIHRpdGxlPSJUZXh0Ym9vazogQXR0cmli dXRlcyBDcm9zcyBSZWZlcmVuY2UiPkF0dHJpYnV0ZXMgQ3Jvc3MgUmVmZXJlbmNlPC9hPi48 L3A+CgoJPGgyIGlkPSJwbHVnaW5FeGFtcGxlcyI+RXhhbXBsZXM8L2gyPgoKCTxibG9ja3F1 b3RlPgoJCTxwPjxjb2RlPiYjNjA7dHhwOm9iMV9tb2RpZmllZCBmb3JtYXQ9JiMzNDslWSYj MzQ7IC8mIzYyOzwvY29kZT48L3A+Cgk8L2Jsb2NrcXVvdGU+CgoJPHA+VGhpcyB3b3VsZCBv dXRwdXQgaWYgdGhlIGFydGljbGUgd2FzIGxhc3QgbW9kaWZlZCA2dGggb2YgZmVidWFyeSAy MDAzOjxiciAvPgoyMDAzPC9wPgoKCTxibG9ja3F1b3RlPgoJCTxwPjxjb2RlPiYjNjA7dHhw Om9iMV9tb2RpZmllZCBmb3JtYXQ9JiMzNDthdXRob3ImIzM0OyAvJiM2Mjs8L2NvZGU+PC9w PgoJPC9ibG9ja3F1b3RlPgoKCTxwPlRoaXMgd291bGQgb3V0cHV0IGlmIHRoZSBhdXRob3Ig d2FzIG1lOjxiciAvPgpIZW5yaWsgSiZvdW1sO25zc29uPC9wPgoKCTxibG9ja3F1b3RlPgoJ CTxwPjxjb2RlPiYjNjA7dHhwOm9iMV9tb2RpZmllZCBmb3JtYXQ9JiMzNDthdXRob3ImIzM0 OyBzdGFydHRleHQ9JiMzNDtMYXN0IG1vZGlmaWVkIGJ5ICYjMzQ7IC8mIzYyOzwvY29kZT4m IzE4Mjs8YnIgLz4KPGNvZGU+JiM2MDt0eHA6b2IxX21vZGlmaWVkIGZvcm1hdD0mIzM0OyVZ LSVtLSVkICVIOiVpJiMzNDsgc3RhcnR0ZXh0PSYjMzQ7IGF0ICYjMzQ7IC8mIzYyOzwvY29k ZT48L3A+Cgk8L2Jsb2NrcXVvdGU+CgoJPHA+VGhpcyB3b3VsZCBvdXRwdXQgaWYgdGhlIGF1 dGhvciB3YXMgbWU6PGJyIC8+Ckxhc3QgbW9kaWZpZWQgYnkgSGVucmlrIEomb3VtbDtuc3Nv biBhdCAyMDA0LTA5LTEwIDIyOjI5LjwvcD4KCgk8cD5Ob3RlIHRoYXQgdGhlIGxpbmVicmVh ayAoJiMxODI7KSBoYXMgYmVlbiBhZGRlZCBmb3IgcmVhZGFiaWxpdHkuPC9wPgoKCTxoMiBp ZD0icGx1Z2luQ2hhbmdlTG9nIj5DaGFuZ2UgbG9nPC9oMj4KCgk8cD5QcmUgdjIuMGEgaGFz IGJlZW4gcmVtb3ZlZC48L3A+CgoJPHA+djIuMGEgWzIwMDctMDktMDNdPC9wPgoKCTxwPkNv ZGU8L3A+CgoJPHVsPgoJCTxsaT5SZS13cm90ZSBiaWcgcG9ydGlvbnMgb2YgdGhlIGNvZGU8 L2xpPgoJCTxsaT5SZS13cm90ZSA8c3BhbiBjbGFzcz0iY2FwcyI+U1FMPC9zcGFuPiByZXF1 ZXN0PC9saT4KCTwvdWw+CgoJPHA+QnVnIGZpeGVzPC9wPgoKCTx1bD4KCQk8bGk+Q2hhbmdl ZCBmb3JtYXQgc28gaXQgd29ya3Mgd2l0aCA8YWNyb255bSB0aXRsZT0iVGV4dHBhdHRlcm4i PjxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+PC9hY3JvbnltPiA0Lng8L2xpPgoJPC91 bD4KCgk8cD5OZXcgZmVhdHVyZXM8L3A+CgoJPHVsPgoJCTxsaT5DYWNoZXMgZGF0YSBvbiB0 aGUgYXJ0aWNsZXMgaWQgbnVtYmVyIHNvIG5vIGRvdWJsZSByZXF1ZXN0cyBhcmUgbWFkZSBp ZiB5b3UgdXNlIHRoZSBwbHVnaW4gdHdpY2UgKG9yIG1vcmUpIGluIHRoZSBzYW1lIGFydGlj bGUgZm9ybS48L2xpPgoJPC91bD4KCgk8cD52Mi4xIFsyMDA3LTEwLTA2XTwvcD4KCgk8cD5D b2RlPC9wPgoKCTx1bD4KCQk8bGk+UmUtd3JvdGUgPHNwYW4gY2xhc3M9ImNhcHMiPlNRTDwv c3Bhbj4gdG8gbm93IGdldCBhbGwgdGhlIGRhdGEgaW4ganVzdCBvbmUgcXVlcnkgKHdpdGgg am9pbnMpPC9saT4KCTwvdWw+Cgo8L2Rpdj4iO3M6NDoiY29kZSI7czoyMzUxOiIJLyoKCQlQ bHVnaW46IG9iMV9tb2RpZmllZAoJCVVSTDogaHR0cDovL3Jpc2UubGV3YW5kZXIuY29tL3Rl eHRwYXR0ZXJuL29iMS1tb2RpZmllZAoJCVJlbGVhc2VkIHVuZGVyIHRoZSBDcmVhdGl2ZSBD b21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDMuMCBVbnBvcnRlZCwgaHR0cDovL2Ny ZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMy4wLwoJKi8KCglmdW5jdGlvbiBv YjFfbW9kaWZpZWQoJGF0dHM9IiIpCgl7CgkJZ2xvYmFsICR0aGlzYXJ0aWNsZSwgJGlkLCAk YywgJHBnLCAkZGF0ZWZvcm1hdCwgJGFyY2hpdmVfZGF0ZWZvcm1hdCwgJG9iMU1vZGlmaWVk UmVzdWx0czsKCgkJYXNzZXJ0X2FydGljbGUoKTsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgK CQkJJ291dHB1dCcgICA9PiAnYWx3YXlzJywKCQkJJ3N0YXJ0dGV4dCcgICA9PiAnJywKCQkJ J2VuZHRleHQnICAgPT4gJycsCgkJCSdjbGFzcycgICA9PiAnJywKCQkJJ2Zvcm1hdCcgID0+ ICcnLAoJCQknZ210JyAgICAgPT4gJycsCgkJCSdsYW5nJyAgICA9PiAnJywKCQkJJ3dyYXB0 YWcnID0+ICcnLAoJCSksICRhdHRzKSk7CgoJCWlmKCFpc19hcnJheSgkb2IxTW9kaWZpZWRS ZXN1bHRzKSl7CgkJCSRvYjFNb2RpZmllZFJlc3VsdHM9QXJyYXkoKTsKCQl9CgoJCSMgaWYg dGhlIHRhZyBpcyByZS11c2VkIG9uIHRoZSBzYW1lIGFydGljbGUsIHRoaXMgc3RvcHMgaXQg ZnJvbSBkb2luZyBhbm90aGVyIHJlcXVlc3QgdG8gdGhlIGRhdGFiYXNlIGZvciB0aGF0IGFy dGljbGUgaWQKCQlpZiggIWFycmF5X2tleV9leGlzdHMoICR0aGlzYXJ0aWNsZVsgJ3RoaXNp ZCcgXSwgJG9iMU1vZGlmaWVkUmVzdWx0cyApICkgewoJCQkjIG5vdyBldmVyeXRoaW5nIGhh cHBlbnMgaW4gb25lIHF1ZXJ5CgkJCSRxdWVyeSA9ICIKCQkJCVNFTEVDVAoJCQkJCXRwLkxh c3RNb2RJZCwgdW5peF90aW1lc3RhbXAodHAuTGFzdE1vZCkgQVMgTGFzdE1vZCwgdHUuUmVh bE5hbWUgQVMgTGFzdE1vZFVzZXIsIHRzLlJlYWxuYW1lIEFTIEF1dGhvck5hbWUKCQkJCUZS T00KCQkJCQkiLnNhZmVfcGZ4X2ooJ3RleHRwYXR0ZXJuJykuIiB0cAoJCQkJTEVGVCBKT0lO CgkJCQkJIi5zYWZlX3BmeF9qKCd0eHBfdXNlcnMnKS4iIHR1IE9OIHRwLkxhc3RNb2RJZCA9 IHR1Lm5hbWUKCQkJCUxFRlQgSk9JTgoJCQkJCSIuc2FmZV9wZnhfaigndHhwX3VzZXJzJyku IiB0cyBPTiB0cC5hdXRob3JpZCA9IHRzLm5hbWUKCQkJCVdIRVJFCgkJCQkJdHAuSUQgPSAn Ii4kdGhpc2FydGljbGVbJ3RoaXNpZCddLiInCgkJCSI7CgkJCSRycyA9IGdldFJvdygkcXVl cnksJycpOwoJCQkkb2IxTW9kaWZpZWRSZXN1bHRzWyR0aGlzYXJ0aWNsZVsndGhpc2lkJ11d ID0gJHJzOwoJCX0KCgkJIyBjYW5jZWxzIHRoZSB3aG9sZSBwcm9jZXNzIGlmIG91dHB1dCBp cyBzZXQgdG8gZGlmZmVycyBhbmQgdGhlIHRpbWUgb2YgY3JlYXRlZCBhbmQgbW9kaWZpZWQg aXMgdGhlIHNhbWUKCQlpZigkb3V0cHV0PT0iZGlmZmVycyImJiR0aGlzYXJ0aWNsZVsicG9z dGVkIl09PSRvYjFNb2RpZmllZFJlc3VsdHNbJHRoaXNhcnRpY2xlWyd0aGlzaWQnXV1bJ0xh c3RNb2QnXSl7CgkJCXJldHVybiAiIjsKCQl9CgkJaWYgKCRmb3JtYXQpewoJCQlpZiAoJGZv cm1hdD09ImF1dGhvciIpewoJCQkJJG91dCA9IChlbXB0eSgkb2IxTW9kaWZpZWRSZXN1bHRz WyR0aGlzYXJ0aWNsZVsndGhpc2lkJ11dWydMYXN0TW9kVXNlciddKSkKCQkJCQkJPyAkb2Ix TW9kaWZpZWRSZXN1bHRzWyAkdGhpc2FydGljbGVbICd0aGlzaWQnIF0gXVsgJ0F1dGhvclVz ZXInIF0KCQkJCQkJOiAkb2IxTW9kaWZpZWRSZXN1bHRzWyR0aGlzYXJ0aWNsZVsndGhpc2lk J11dWydMYXN0TW9kVXNlciddOwoJCQl9ZWxzZXsKCQkJCSRvdXQgPSBzYWZlX3N0cmZ0aW1l KCRmb3JtYXQsICRvYjFNb2RpZmllZFJlc3VsdHNbJHRoaXNhcnRpY2xlWyd0aGlzaWQnXV1b J0xhc3RNb2QnXSwgJGdtdCwgJGxhbmcpOwoJCQl9CgkJfWVsc2V7CgkJCWlmICgkaWR8fCRj fHwkcGcpewoJCQkJJG91dCA9IHNhZmVfc3RyZnRpbWUoJGFyY2hpdmVfZGF0ZWZvcm1hdCwg JG9iMU1vZGlmaWVkUmVzdWx0c1skdGhpc2FydGljbGVbJ3RoaXNpZCddXVsnTGFzdE1vZCdd LCAkZ210LCAkbGFuZyk7CgkJCX1lbHNlewoJCQkJJG91dCA9IHNhZmVfc3RyZnRpbWUoJGRh dGVmb3JtYXQsICRvYjFNb2RpZmllZFJlc3VsdHNbJHRoaXNhcnRpY2xlWyd0aGlzaWQnXV1b J0xhc3RNb2QnXSwgJGdtdCwgJGxhbmcpOwoJCQl9CgkJfQoJCSRvdXQ9JHN0YXJ0dGV4dC4k b3V0LiRlbmR0ZXh0OwoJCXJldHVybiAoJHdyYXB0YWcpID8gZG9UYWcoJG91dCwgJHdyYXB0 YWcsICRjbGFzcykgOiAkb3V0OwoJfSI7czozOiJtZDUiO3M6MzI6ImI2MjUwZmYwZDM2MzFl Yzk2MDRiNzllYzE4YTQzYjU5Ijt9