# Name: soo_page_numbers v0.2.7 # Type: Client side plugin # Article list nav and page count widgets # Author: Jeff Soo # URL: http://ipsedixit.net/txp/ # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE2OiJzb29fcGFnZV9udW1iZXJzIjtzOjY6ImF1dGhvciI7 czo4OiJKZWZmIFNvbyI7czoxMDoiYXV0aG9yX3VyaSI7czoyNToiaHR0cDovL2lwc2VkaXhp dC5uZXQvdHhwLyI7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuMi43IjtzOjExOiJkZXNjcmlwdGlv biI7czozOToiQXJ0aWNsZSBsaXN0IG5hdiBhbmQgcGFnZSBjb3VudCB3aWRnZXRzIjtzOjQ6 ImhlbHAiO3M6OTE2MToiPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KZGl2I3NlZF9oZWxwIHBy ZSB7cGFkZGluZzogMC41ZW0gMWVtOyBiYWNrZ3JvdW5kOiAjZWVlOyBib3JkZXI6IDFweCBk YXNoZWQgI2NjYzt9CmRpdiNzZWRfaGVscCBoMSwgZGl2I3NlZF9oZWxwIGgyLCBkaXYjc2Vk X2hlbHAgaDMsIGRpdiNzZWRfaGVscCBoMyBjb2RlIHtmb250LWZhbWlseTogc2Fucy1zZXJp ZjsgZm9udC13ZWlnaHQ6IGJvbGQ7fQpkaXYjc2VkX2hlbHAgaDEsIGRpdiNzZWRfaGVscCBo MiwgZGl2I3NlZF9oZWxwIGgzIHttYXJnaW4tbGVmdDogLTFlbTt9CmRpdiNzZWRfaGVscCBo MiwgZGl2I3NlZF9oZWxwIGgzIHttYXJnaW4tdG9wOiAyZW07fQpkaXYjc2VkX2hlbHAgaDEg e2ZvbnQtc2l6ZTogMi40ZW07fQpkaXYjc2VkX2hlbHAgaDIge2ZvbnQtc2l6ZTogMS44ZW07 fQpkaXYjc2VkX2hlbHAgaDMge2ZvbnQtc2l6ZTogMS40ZW07fQpkaXYjc2VkX2hlbHAgaDQg e2ZvbnQtc2l6ZTogMS4yZW07fQpkaXYjc2VkX2hlbHAgaDUge2ZvbnQtc2l6ZTogMWVtO21h cmdpbi1sZWZ0OjFlbTtmb250LXN0eWxlOm9ibGlxdWU7fQpkaXYjc2VkX2hlbHAgaDYge2Zv bnQtc2l6ZTogMWVtO21hcmdpbi1sZWZ0OjJlbTtmb250LXN0eWxlOm9ibGlxdWU7fQpkaXYj c2VkX2hlbHAgbGkge2xpc3Qtc3R5bGUtdHlwZTogZGlzYzt9CmRpdiNzZWRfaGVscCBsaSBs aSB7bGlzdC1zdHlsZS10eXBlOiBjaXJjbGU7fQpkaXYjc2VkX2hlbHAgbGkgbGkgbGkge2xp c3Qtc3R5bGUtdHlwZTogc3F1YXJlO30KZGl2I3NlZF9oZWxwIGxpIGEgY29kZSB7Zm9udC13 ZWlnaHQ6IG5vcm1hbDt9CmRpdiNzZWRfaGVscCBsaSBjb2RlOmZpcnN0LWNoaWxkIHtiYWNr Z3JvdW5kOiAjZGRkO3BhZGRpbmc6MCAuM2VtO21hcmdpbi1sZWZ0Oi0uM2VtO30KZGl2I3Nl ZF9oZWxwIGxpIGxpIGNvZGU6Zmlyc3QtY2hpbGQge2JhY2tncm91bmQ6bm9uZTtwYWRkaW5n OjA7bWFyZ2luLWxlZnQ6MDt9CmRpdiNzZWRfaGVscCBkZm4ge2ZvbnQtd2VpZ2h0OmJvbGQ7 Zm9udC1zdHlsZTpvYmxpcXVlO30KZGl2I3NlZF9oZWxwIC5yZXF1aXJlZCwgZGl2I3NlZF9o ZWxwIC53YXJuaW5nIHtjb2xvcjpyZWQ7fQpkaXYjc2VkX2hlbHAgLmRlZmF1bHQge2NvbG9y OmdyZWVuO30KPC9zdHlsZT4KIDxkaXYgaWQ9InNlZF9oZWxwIj4KCgk8aDE+c29vX3BhZ2Vf bnVtYmVyczwvaDE+CgoJPGgyIGlkPSJvdmVydmlldyI+T3ZlcnZpZXc8L2gyPgoKCTxwPkRp c3BsYXkgcGFnZSBuYXZpZ2F0aW9uIHdpZGdldHMgYW5kIGluZm9ybWF0aW9uIGZvciBhcnRp Y2xlIGxpc3QgcGFnZXMuIEEgcmVoYXNoIG9mIHRoZSA8Y29kZT5yc3hfcGFnZV9udW1iZXI8 L2NvZGU+IHBsdWdpbiwgYnJpbmdpbmcgaXQgaW50byB0aGUgbW9kZXJuIChUeHAgNC4wLjgg KykgZXJhIHdpdGggbW9yZSBhdHRyaWJ1dGVzIGZvciBncmVhdGVyIGNvbnRyb2wsIGFuZCBh bHNvIGNvcnJlY3QgZnVuY3Rpb24gd2l0aCBtdWx0aXBsZSBxdWVyeSBzdHJpbmcgcGFyYW1l dGVycyAoYXMgd2l0aCBzZWFyY2ggcmVzdWx0cywgbWVzc3kgPHNwYW4gY2xhc3M9ImNhcHMi PlVSTDwvc3Bhbj4gbW9kZSwgb3Igb3RoZXIgVHhwIHBsdWdpbnMgdGhhdCBhZGQgdGhlaXIg b3duIHF1ZXJ5IHBhcmFtcykuPC9wPgoKCTxwPkFzIGRvd25sb2FkZWQgaXQgPHNwYW4gY2xh c3M9InJlcXVpcmVkIj5yZXF1aXJlcyBQSFA1IGFuZCB0aGUgPHN0cm9uZz5zb29fdHhwX29i ajwvc3Ryb25nPiBsaWJyYXJ5IHBsdWdpbjwvc3Bhbj4uIEJ1dCBpdCBvbmx5IHVzZXMgYSBz bWFsbCBwYXJ0IG9mIHRoZSBsaWJyYXJ5LCBzbyBpZiB5b3UgYXJlIGNvbWZvcnRhYmxlIGVk aXRpbmcgY29kZSB5b3UgY2FuIGNvcHkgaW4gdGhlIHJlbGV2YW50IGNvZGUgdG8gYXZvaWQg dGhlIGV4dHJhIHBsdWdpbiwgaWYgeW91IGRvbiYjODIxNzt0IG5lZWQgPHN0cm9uZz5zb29f dHhwX29iajwvc3Ryb25nPiBmb3Igc29tZXRoaW5nIGVsc2UuIERlbGV0ZSB0aGUgPGNvZGU+ cmVxdWlyZV9wbHVnaW4oJiMzOTtzb29fdHhwX29iaiYjMzk7KTwvY29kZT4gbGluZSwgYW5k IHBhc3RlIGluIHRoZSBmb2xsb3dpbmcgdHdvIGNsYXNzZXMgZnJvbSA8c3Ryb25nPnNvb190 eHBfb2JqPC9zdHJvbmc+OiA8Y29kZT5zb29fb2JqPC9jb2RlPiAoYXQgdGhlIHRvcCBvZiA8 c3Ryb25nPnNvb190eHBfb2JqPC9zdHJvbmc+KSBhbmQgPGNvZGU+c29vX3VyaTwvY29kZT4g KGF0IHRoZSBib3R0b20pLiBJZiB5b3UgYXJlIHJ1bm5pbmcgdGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5NTFA8L3NwYW4+IFBhY2sgeW91IG1pZ2h0IGFsc28gd2FudCB0byBjb3B5IGluIHRo ZSAxNSBvciBzbyBsaW5lcyBhYm92ZSA8Y29kZT5zb29fdXJpPC9jb2RlPiwgc3RhcnRpbmcg d2l0aCA8Y29kZT5nbG9iYWwgJHBsdWdpbl9jYWxsYmFjazs8L2NvZGU+LjwvcD4KCgk8cD48 c3BhbiBjbGFzcz0id2FybmluZyI+Tm90ZSBvbiB1c2luZyB3aXRoIG11bHRpcGxlIDxjb2Rl PmFydGljbGU8L2NvZGU+IHRhZ3M6PC9zcGFuPiBJZiB5b3UgaGF2ZSBtb3JlIHRoYW4gb25l IDxjb2RlPmFydGljbGU8L2NvZGU+IHRhZyBvbiB0aGUgcGFnZSAobm90IGluY2x1ZGluZyA8 Y29kZT5hcnRpY2xlX2N1c3RvbTwvY29kZT4gdGFncywgb3IgbGlzdHMgb2Ygc3RpY2t5IGFy dGljbGVzKSA8c3Ryb25nPnNvb19wYWdlX251bWJlcnM8L3N0cm9uZz4gd2lsbCB0YWtlIGl0 cyB2YWx1ZXMgZnJvbSB0aGUgZmlyc3QgPGNvZGU+YXJ0aWNsZTwvY29kZT4gdGFnLiBUaGlz IGlzIHRydWUgbm8gbWF0dGVyIHdoZXJlIHlvdSBwdXQgYW55IDxzdHJvbmc+c29vX3BhZ2Vf bnVtYmVyczwvc3Ryb25nPiB0YWdzLjwvcD4KCgk8aDIgaWQ9InRhZ3MiPlRhZ3M8L2gyPgoK CTxoMyBpZD0ic29vX3BhZ2VfbGlua3MiPnNvb19wYWdlX2xpbmtzPC9oMz4KCgk8cD5EaXNw bGF5IGEgJiM4MjIwO0dvb2dsZS1zdHlsZSYjODIyMTsgcGFnZSBuYXZpZ2F0aW9uIHdpZGdl dCwgaS5lLiwgYSBncm91cCBvZiBudW1iZXJlZCBsaW5rcyByZXByZXNlbnRpbmcgcGFnZXMu PC9wPgoKPHByZT4mbHQ7dHhwOnNvb19wYWdlX2xpbmtzIC8mZ3Q7CjwvcHJlPgoKCTxoND5B dHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxjb2RlPnBsYWNlaG9sZGVyPC9jb2RlPiA8 ZW0+KHRleHQpPC9lbT4gPHNwYW4gY2xhc3M9ImRlZmF1bHQiPmRlZmF1bHQ8L3NwYW4+IDxj b2RlPiZhbXA7aGVsbGlwOzwvY29kZT48YnIgLz4KVGV4dCB0byBwbGFjZSBvbiBlaXRoZXIg ZW5kIG9mIHRoZSBjZW50cmFsIHBhZ2UgcmFuZ2UgKHdoZW4gdGhlcmUgYXJlIG1hbnkgcGFn ZXMpPC9saT4KCQk8bGk+PGNvZGU+d2luZG93X3NpemU8L2NvZGU+IDxlbT4oaW50ZWdlcik8 L2VtPiA8c3BhbiBjbGFzcz0iZGVmYXVsdCI+ZGVmYXVsdDwvc3Bhbj4gPGNvZGU+NTwvY29k ZT48YnIgLz4KU2l6ZSBvZiBjZW50cmFsIHBhZ2UgcmFuZ2U8L2xpPgoJCTxsaT48Y29kZT5z aG93YWx3YXlzPC9jb2RlPiA8ZW0+KGJvb2xlYW4pPC9lbT4gPHNwYW4gY2xhc3M9ImRlZmF1 bHQiPmRlZmF1bHQ8L3NwYW4+IDxjb2RlPjA8L2NvZGU+PGJyIC8+CldoZXRoZXIgb3Igbm90 IHRvIHNob3cgYW55dGhpbmcgd2hlbiB0aGUgbGlzdCBpcyBhIHNpbmdsZSBwYWdlPC9saT4K CQk8bGk+PGNvZGU+YWN0aXZlX2NsYXNzPC9jb2RlPiA8ZW0+KDxzcGFuIGNsYXNzPSJjYXBz Ij5IVE1MPC9zcGFuPiBjbGFzcyk8L2VtPiA8c3BhbiBjbGFzcz0iZGVmYXVsdCI+ZGVmYXVs dDwvc3Bhbj4gPGNvZGU+aGVyZTwvY29kZT48YnIgLz4KQ2xhc3MgZm9yIHRoZSBjdXJyZW50 IHBhZ2UgbnVtYmVyJiM4MjE3O3MgdGFnICh0aGUgPGNvZGU+YnJlYWs8L2NvZGU+IHRhZywg aWYgYW55LCBvdGhlcndpc2UgPGNvZGU+c3BhbjwvY29kZT4pPC9saT4KCQk8bGk+PGNvZGU+ d3JhcHRhZzwvY29kZT4gPGVtPih0ZXh0KTwvZW0+IDxzcGFuIGNsYXNzPSJkZWZhdWx0Ij5k ZWZhdWx0PC9zcGFuPiBlbXB0eTxiciAvPgo8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bh bj4gdGFnIG5hbWUgKG5vIGJyYWNrZXRzKSB0byB3cmFwIHRoZSBvdXRwdXQ8L2xpPgoJCTxs aT48Y29kZT5jbGFzczwvY29kZT4gPGVtPih0ZXh0KTwvZW0+IDxzcGFuIGNsYXNzPSJkZWZh dWx0Ij5kZWZhdWx0PC9zcGFuPiBlbXB0eTxiciAvPgo8YSBocmVmPSJodHRwOi8vd3d3Lncz Lm9yZy9UUi9odG1sNDAxL3N0cnVjdC9nbG9iYWwuaHRtbCNhZGVmLWNsYXNzIiB0aXRsZT0i cyI+PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGNsYXNzIG5hbWU8L2E+IGZvciB0 aGUgPGNvZGU+d3JhcHRhZzwvY29kZT4uPC9saT4KCQk8bGk+PGNvZGU+aHRtbF9pZDwvY29k ZT4gPGVtPih0ZXh0KTwvZW0+IDxzcGFuIGNsYXNzPSJkZWZhdWx0Ij5kZWZhdWx0PC9zcGFu PiBlbXB0eTxiciAvPgo8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL3N0 cnVjdC9nbG9iYWwuaHRtbCNhZGVmLWlkIj48c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bh bj4gaWQ8L2E+IGZvciB0aGUgPGNvZGU+d3JhcHRhZzwvY29kZT4uPC9saT4KCQk8bGk+PGNv ZGU+YnJlYWs8L2NvZGU+IDxlbT4obWl4ZWQpPC9lbT4gPHNwYW4gY2xhc3M9ImRlZmF1bHQi PmRlZmF1bHQ8L3NwYW4+IGVtcHR5PGJyIC8+CjxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9z cGFuPiB0YWcgbmFtZSAobm8gYnJhY2tldHMpIHRvIHdyYXAgb3IgdGV4dCB0byBwbGFjZSBi ZXR3ZWVuIGFkamFjZW50IHBhZ2UgbnVtYmVycy4gSWYgPGNvZGU+d3JhcHRhZzwvY29kZT4g YW5kIDxjb2RlPmJyZWFrPC9jb2RlPiBhcmUgc2V0LCA8Y29kZT5icmVhazwvY29kZT4gaXMg YXNzdW1lZCB0byBiZSBhIHRhZyBuYW1lLiBPdGhlcndpc2UgaXQgaXMgdHJlYXRlZCBhcyB0 ZXh0IChzbyBkb24mIzgyMTc7dCB1c2UgPGNvZGU+YnJlYWs9JnF1b3Q7YnImcXVvdDs8L2Nv ZGU+KS48L2xpPgoJPC91bD4KCgk8aDMgaWQ9InNvb19wYWdlX2NvdW50Ij5zb29fcGFnZV9j b3VudDwvaDM+Cgo8cHJlPiZsdDt0eHA6c29vX3BhZ2VfY291bnQgLyZndDsKPC9wcmU+CgoJ PGg0PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PGNvZGU+Zm9ybWF0PC9jb2RlPiA8 ZW0+KGZvcm1hdCBzdHJpbmcpPC9lbT4gPHNwYW4gY2xhc3M9ImRlZmF1bHQiPmRlZmF1bHQ8 L3NwYW4+IDxjb2RlPiAmcXVvdDt7cHJldn0gUGFnZSB7Y3VycmVudH0gb2Yge3RvdGFsfSB7 bmV4dH0mcXVvdDsgPC9jb2RlPjxiciAvPgpUYWcgd2lsbCBvdXRwdXQgdGhpcyBzdHJpbmcg YWZ0ZXIgcmVwbGFjaW5nIDxjb2RlPntwcmV2fTwvY29kZT4sIDxjb2RlPntuZXh0fTwvY29k ZT4sIDxjb2RlPntmaXJzdH08L2NvZGU+LCBhbmQgPGNvZGU+e2xhc3R9PC9jb2RlPiB3aXRo IGxpbmtzLCBhbmQgPGNvZGU+e2N1cnJlbnR9PC9jb2RlPiBhbmQgPGNvZGU+e3RvdGFsfTwv Y29kZT4gd2l0aCBwYWdlIG51bWJlcnM8L2xpPgoJCTxsaT48Y29kZT5wcmV2PC9jb2RlPiA8 ZW0+KHRleHQpPC9lbT4gPHNwYW4gY2xhc3M9ImRlZmF1bHQiPmRlZmF1bHQ8L3NwYW4+IDxj b2RlPiZhbXA7bGFxdW87PC9jb2RlPiAoJmxhcXVvOyk8YnIgLz4KTGluayB0ZXh0IGZvciB0 aGUgPGNvZGU+e3ByZXZ9PC9jb2RlPiBsaW5rPC9saT4KCQk8bGk+PGNvZGU+bmV4dDwvY29k ZT4gPGVtPih0ZXh0KTwvZW0+IDxzcGFuIGNsYXNzPSJkZWZhdWx0Ij5kZWZhdWx0PC9zcGFu PiA8Y29kZT4mYW1wO3JhcXVvOzwvY29kZT4gKCZyYXF1bzspPGJyIC8+CkxpbmsgdGV4dCBm b3IgdGhlIDxjb2RlPntuZXh0fTwvY29kZT4gbGluazwvbGk+CgkJPGxpPjxjb2RlPmZpcnN0 PC9jb2RlPiA8ZW0+KHRleHQpPC9lbT4gPHNwYW4gY2xhc3M9ImRlZmF1bHQiPmRlZmF1bHQ8 L3NwYW4+IDxjb2RlPnwmYW1wO2xhcXVvOzwvY29kZT4gKHwmbGFxdW87KTxiciAvPgpMaW5r IHRleHQgZm9yIHRoZSA8Y29kZT57Zmlyc3R9PC9jb2RlPiBsaW5rPC9saT4KCQk8bGk+PGNv ZGU+bGFzdDwvY29kZT4gPGVtPih0ZXh0KTwvZW0+IDxzcGFuIGNsYXNzPSJkZWZhdWx0Ij5k ZWZhdWx0PC9zcGFuPiA8Y29kZT4mYW1wO3JhcXVvO3w8L2NvZGU+ICgmcmFxdW87fCk8YnIg Lz4KTGluayB0ZXh0IGZvciB0aGUgPGNvZGU+e2xhc3R9PC9jb2RlPiBsaW5rPC9saT4KCQk8 bGk+PGNvZGU+c2hvd2Fsd2F5czwvY29kZT4gPGVtPihib29sZWFuKTwvZW0+IDxzcGFuIGNs YXNzPSJkZWZhdWx0Ij5kZWZhdWx0PC9zcGFuPiA8Y29kZT4wPC9jb2RlPjxiciAvPgpXaGV0 aGVyIG9yIG5vdCB0byBzaG93IDxjb2RlPntwcmV2fTwvY29kZT4gYW5kIDxjb2RlPntuZXh0 fTwvY29kZT4gb24gdGhlIGZpcnN0IGFuZCBsYXN0IHBhZ2VzLCByZXNwZWN0aXZlbHksIG9y IGFueXRoaW5nIGF0IGFsbCB3aGVuIHRoZSBsaXN0IGlzIGEgc2luZ2xlIHBhZ2U8L2xpPgoJ CTxsaT48Y29kZT53cmFwdGFnPC9jb2RlPiA8ZW0+KDxzcGFuIGNsYXNzPSJjYXBzIj5YSFRN TDwvc3Bhbj4gdGFnIG5hbWUsIG5vIGJyYWNrZXRzKTwvZW0+IG9wdGlvbmFsIHRhZyB0byB3 cmFwIHRoZSBvdXRwdXQ8L2xpPgoJPC91bD4KCgk8aDMgaWQ9InNvb19maXJzdF9wYWdlIj5z b29fcHJldl9wYWdlLCBzb29fbmV4dF9wYWdlPC9oMz4KCgk8cD5TaG9ydGN1dHMgZm9yIDxj b2RlPnNvb19wYWdlX2NvdW50PC9jb2RlPiB3aGVuIGFsbCB5b3Ugd2FudCBpcyBhIHNpbmds ZSBsaW5rLiBGb3IgZXhhbXBsZSwgPGNvZGU+c29vX3ByZXZfcGFnZTwvY29kZT4gaXMgYSBz aG9ydGN1dCBmb3IgPGNvZGU+Jmx0O3R4cDpzb29fcGFnZV9jb3VudCBmb3JtYXQ9JnF1b3Q7 e3ByZXZ9JnF1b3Q7IC8mZ3Q7PC9jb2RlPi48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0PgoK CTxwPkluIGFkZGl0aW9uIHRvIDxjb2RlPnNvb19wYWdlX2NvdW50PC9jb2RlPiBhdHRyaWJ1 dGVzLCBlYWNoIG9mIHRoZXNlIHRhZ3MgYWxzbyBhY2NlcHRzIGEgPGNvZGU+dGV4dDwvY29k ZT4gYXR0cmlidXRlIGZvciBzZXR0aW5nIHRoZSBsaW5rIHRleHQuIFRoZSBmb2xsb3dpbmcg dGFncyBhcmUgZXF1aXZhbGVudDo8L3A+Cgo8cHJlPiZsdDt0eHA6c29vX25leHRfcGFnZSB0 ZXh0PSZxdW90O05leHQmcXVvdDsgLyZndDsKJmx0O3R4cDpzb29fcGFnZV9jb3VudCBmb3Jt YXQ9JnF1b3Q7e25leHR9JnF1b3Q7IG5leHQ9JnF1b3Q7TmV4dCZxdW90OyAvJmd0Owo8L3By ZT4KCgk8aDIgaWQ9Imhpc3RvcnkiPlZlcnNpb24gSGlzdG9yeTwvaDI+CgoJPGgzPjAuMi43 ICgyMDEwLzIvMTEpPC9oMz4KCgk8dWw+CgkJPGxpPkZpeGVkIFRleHRwYXR0ZXJuIG5vdGlj ZSBhYm91dCBub24tZXhpc3RlbnQgYXR0cmlidXRlIHdoZW4gdXNpbmcgPGNvZGU+c29vX3By ZXZfcGFnZTwvY29kZT4gb3IgPGNvZGU+c29vX25leHRfcGFnZTwvY29kZT4gKGZ1bmN0aW9u YWxpdHkgbm90IGFmZmVjdGVkKTwvbGk+Cgk8L3VsPgoKCTxoMz4wLjIuNiAoMjAwOS8xMS8y Myk8L2gzPgoKCTx1bD4KCQk8bGk+PGNvZGU+c29vX3BhZ2VfbGlua3M8L2NvZGU+IG5vdyBy ZXN0b3JlcyB0aGUgPGNvZGU+JiMzOTtwZyYjMzk7PC9jb2RlPiBxdWVyeSBwYXJhbWV0ZXIg dG8gaXRzIGluaXRpYWwgc3RhdGUsIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIGNv bnRleHQtZGVwZW5kZW50IHBsdWdpbnM8L2xpPgoJPC91bD4KCgk8aDM+MC4yLjUgKDIwMDkv MTAvMjEpPC9oMz4KCgk8dWw+CgkJPGxpPk5ldyBhdHRyaWJ1dGVzIGFuZCBzaG9ydGN1dCB0 YWdzIGZvciA8Y29kZT5zb29fcGFnZV9jb3VudDwvY29kZT48L2xpPgoJPC91bD4KCgk8aDM+ MC4yLjQgKDIwMDkvMDcvMTYpPC9oMz4KCgk8dWw+CgkJPGxpPkZpeGVkIDxjb2RlPnNob3dh bHdheXM8L2NvZGU+IGJ1ZyB3aGVuIGFuIGFydGljbGUgbGlzdCByZXR1cm5zIDAgcGFnZXMg KGUuZy4gZW1wdHkgY2F0ZWdvcnkpPC9saT4KCTwvdWw+CgoJPGgzPjAuMi4zICgyMDA5LzA3 LzA5KTwvaDM+CgoJPHVsPgoJCTxsaT5JbXByb3ZlZCBjb250ZXh0IGNoZWNrIHRvIHByZXZl bnQgcmF3IHRhZyBvdXRwdXQ8L2xpPgoJPC91bD4KCgk8aDM+MC4yLjIgKDIwMDkvMDcvMDkp PC9oMz4KCgk8dWw+CgkJPGxpPldoZW4gYm90aCA8Y29kZT53cmFwdGFnPC9jb2RlPiBhbmQg PGNvZGU+YnJlYWs8L2NvZGU+IGFyZSBzZXQsIG5vbi1saW5rZWQgdGV4dCBpdGVtcyAoaS5l LiwgY3VycmVudCBwYWdlIG51bWJlciBvciBwbGFjZWhvbGRlciB0ZXh0KSBhcmUgbm8gbG9u Z2VyIHdyYXBwZWQgaW4gPGNvZGU+c3BhbjwvY29kZT4gdGFncywgYW5kIDxjb2RlPmFjdGl2 ZV9jbGFzczwvY29kZT4gaXMgYXBwbGllZCB0byB0aGUgPGNvZGU+YnJlYWs8L2NvZGU+IGVs ZW1lbnQgY29udGFpbmluZyB0aGUgY3VycmVudCBwYWdlIG51bWJlci48L2xpPgoJCTxsaT5C b3RoIHRhZ3Mgbm93IGRvIGEgY29udGV4dCBjaGVjayBhbmQgc2hvdyBub3RoaW5nIGlmIHRo ZSBwYWdlIGlzIG5vdCBhbiBhcnRpY2xlIGxpc3Q8L2xpPgoJPC91bD4KCgk8aDM+MC4yLjEg KDIwMDkvMDcvMDcpPC9oMz4KCgk8dWw+CgkJPGxpPkNoYW5nZWQgZmlsZSBuYW1lIGFuZCBv bmUgdGFnIG5hbWU8L2xpPgoJCTxsaT5UaGUgPGNvZGU+c2hvd2Fsd2F5czwvY29kZT4gYXR0 cmlidXRlIG9mIDxjb2RlPnNvb19wYWdlX2NvdW50PC9jb2RlPiBub3cgYWxzbyBhZmZlY3Rz IG91dHB1dCB3aGVuIHRoZSBhcnRpY2xlIGxpc3QgaXMgb25seSBvbmUgcGFnZTwvbGk+CgkJ PGxpPjxjb2RlPnNvb19wYWdlX2xpbmtzPC9jb2RlPiBoYXMgYWxzbyBiZWVuIGdpdmVuIHRo ZSA8Y29kZT5zaG93YWx3YXlzPC9jb2RlPiBhdHRyaWJ1dGU8L2xpPgoJCTxsaT5TY3JhcHBl ZCA8Y29kZT5zb29fYXJ0aWNsZV9jb3VudDwvY29kZT4sIHdoaWNoIHdhcyBpbmhlcmVudGx5 IGJ1Z2d5IChhcyBpcyB0aGUgPGNvZGU+cnN4X3RvX29mPC9jb2RlPiBpdCB3YXMgYmFzZWQg b24pPC9saT4KCTwvdWw+CgoJPGgzPjAuMiAoMjAwOS8wNS8yMik8L2gzPgoKCTxwPk5vdCBw dWJsaWNseSByZWxlYXNlZC4gQ29kZSBvdmVyaGF1bCwgZml4ZWQgdG8gd29yayB3aXRoIGFu eSBxdWVyeSBzdHJpbmc8L3A+CgoJPGgzPjAuMSAoYWdlcyBhZ28pPC9oMz4KCgk8cD5Ob3Qg cHVibGljbHkgcmVsZWFzZWQsIG5vdCB2ZXJ5IGdvb2QgZWl0aGVyLCBqdXN0IGEgc29ycnkg aGFjayBvZiB3aGF0IHdhcyBwcm9iYWJseSBhIHF1aWNrIG9uZS1vZmYgcGx1Z2luIHRvIGJl Z2luIHdpdGggKGl0IHdhcyBlYXJseSBkYXlzIGZvciBUeHApLjwvcD4KCiA8L2Rpdj4iO3M6 NDoiY29kZSI7czozNTQ1OiIKcmVxdWlyZV9wbHVnaW4oJ3Nvb190eHBfb2JqJyk7CgpmdW5j dGlvbiBzb29fcGFnZV9saW5rcyAoICRhdHRzICkgewoKCWV4dHJhY3QobEF0dHMoYXJyYXko CgkJJ3BsYWNlaG9sZGVyJwk9PgknJmhlbGxpcDsnLAoJCSd3aW5kb3dfc2l6ZScJPT4JNSwK CQknYWN0aXZlX2NsYXNzJwk9PgknaGVyZScsCgkJJ3dyYXB0YWcnCQk9PgknJywKCQknY2xh c3MnCQkJPT4JJycsCgkJJ2h0bWxfaWQnCQk9PgknJywKCQknYnJlYWsnIAkJPT4JJycsCgkJ J3Nob3dhbHdheXMnCT0+CWZhbHNlLAoJKSwgJGF0dHMpKTsKCglnbG9iYWwgJHRoaXNwYWdl OwoKCWlmICggaXNfYXJyYXkoJHRoaXNwYWdlKSApIGV4dHJhY3QoJHRoaXNwYWdlKTsKCWVs c2UgcmV0dXJuIF9zb29fcGFnZV9udW1iZXJzX3NlY29uZHBhc3MoX19GVU5DVElPTl9fLCAk YXR0cyk7CgoJaWYgKCAhICRzaG93YWx3YXlzIGFuZCAkbnVtUGFnZXMgPD0gMSApIHJldHVy bjsKCgkkd19zdGFydCA9IG1heCgxLAoJCW1pbigkcGcgLSBmbG9vcigkd2luZG93X3NpemUg LyAyKSwgJG51bVBhZ2VzIC0gJHdpbmRvd19zaXplICsgMSkpOwoJJHdfZW5kID0gbWluKCR3 X3N0YXJ0ICsgJHdpbmRvd19zaXplIC0gMSwgJG51bVBhZ2VzKTsKCgkkcGdzID0gYXJyYXlf dW5pcXVlKGFycmF5X21lcmdlKAoJCWFycmF5KDEpLCByYW5nZSgkd19zdGFydCwgJHdfZW5k KSwgYXJyYXkoJG51bVBhZ2VzKQoJKSk7CgoJJGJyZWFrX3RleHQgPSAkd3JhcHRhZyA/ICcn IDogJGJyZWFrOwoJJHRleHRfdGFnID0gKCAkYnJlYWsgYW5kICR3cmFwdGFnICkgPyAnJyA6 ICdzcGFuJzsKCSRhY3RpdmVfY2xhc3MgPSAkYWN0aXZlX2NsYXNzID8gIiBjbGFzcz1cIiRh Y3RpdmVfY2xhc3NcIiIgOiAnJzsKCgkkdXJpID0gbmV3IHNvb191cmk7Cgl3aGlsZSAoICRw Z3MgKSB7CgkJJG4gPSBhcnJheV9zaGlmdCgkcGdzKTsKCQkkdXJpLT5zZXRfcXVlcnlfcGFy YW0oJ3BnJywgKCAkbiA+IDEgPyAkbiA6IG51bGwgKSk7CgkJJGZpbGwgPSAkcGdzID8gKCAk cGdzWzBdID4gJG4gKyAxID8gJHBsYWNlaG9sZGVyIDogJGJyZWFrX3RleHQgKSA6ICcnOwoJ CWlmICggJG4gPT0gJHBnICkKCQkJJGl0ZW1zW10gPSAkdGV4dF90YWcgPwoJCQkJdGFnKCRu LCAkdGV4dF90YWcsICRhY3RpdmVfY2xhc3MpIDogJG47CgkJZWxzZQoJCQkkaXRlbXNbXSA9 IGhyZWYoJG4sICR1cmktPmZ1bGwsICIgdGl0bGU9J1BhZ2UgJG4nIik7CgkJaWYgKCAkbiA8 ICRudW1QYWdlcyBhbmQgJGZpbGwgKQoJCQkkaXRlbXNbXSA9ICR0ZXh0X3RhZyA/CgkJCQl0 YWcoJGZpbGwsICR0ZXh0X3RhZykgOiAkZmlsbDsKCX0KCSR1cmktPnNldF9xdWVyeV9wYXJh bSgncGcnLCAoICRwZyA+IDEgPyAkcGcgOiBudWxsICkpOwoJaWYgKCBpc3NldCgkaXRlbXMp ICkKCQlyZXR1cm4gJHdyYXB0YWcgPyBzdHJfcmVwbGFjZSgiPCRicmVhaz4kcGc8IiwgIjwk YnJlYWskYWN0aXZlX2NsYXNzPiRwZzwiLAoJCQlkb1dyYXAoJGl0ZW1zLCAkd3JhcHRhZywg JGJyZWFrLCAkY2xhc3MsICcnLCAnJywgJycsICRodG1sX2lkKSkKCQkJOiBpbXBsb2RlKCRi cmVha190ZXh0ID8gJycgOiBuLCAkaXRlbXMpOwp9CgpmdW5jdGlvbiBzb29fcGFnZV9jb3Vu dCAoICRhdHRzICkgewoKCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJJ2Zvcm1hdCcgCQk9Pgkn e3ByZXZ9IFBhZ2Uge2N1cnJlbnR9IG9mIHt0b3RhbH0ge25leHR9JywKCQkncHJldicJCQk9 PgknJmxhcXVvOycsCgkJJ25leHQnCQkJPT4JJyZyYXF1bzsnLAoJCSdmaXJzdCcJCQk9Pgkn fCZsYXF1bzsnLAoJCSdsYXN0JwkJCT0+CScmcmFxdW87fCcsCgkJJ3Nob3dhbHdheXMnCT0+ CWZhbHNlLAoJCSd3cmFwdGFnJwkJPT4JJycsCgkpLCAkYXR0cykpOwoKCWdsb2JhbCAkdGhp c3BhZ2U7CgoJaWYgKCBpc19hcnJheSgkdGhpc3BhZ2UpICkgZXh0cmFjdCgkdGhpc3BhZ2Up OwoJZWxzZSByZXR1cm4gX3Nvb19wYWdlX251bWJlcnNfc2Vjb25kcGFzcyhfX0ZVTkNUSU9O X18sICRhdHRzKTsKCglpZiAoICEgJHNob3dhbHdheXMgYW5kICRudW1QYWdlcyA8PSAxICkg cmV0dXJuOwoKCSR1cmkgPSBuZXcgc29vX3VyaTsKCWlmICggJHBnID4gMSApIHsKCQkkdXJp LT5zZXRfcXVlcnlfcGFyYW0oJ3BnJywgbnVsbCk7CgkJJGZpcnN0ID0gaHJlZigkZmlyc3Qs ICR1cmktPmZ1bGwsICcgdGl0bGU9IlBhZ2UgMSInKTsKCX0KCWVsc2VpZiAoICEgJHNob3dh bHdheXMgKQoJCSRmaXJzdCA9ICcnOwoKCWlmICggJHBnIDwgJG51bVBhZ2VzICkgewoJCSR1 cmktPnNldF9xdWVyeV9wYXJhbSgncGcnLCAkbnVtUGFnZXMpOwoJCSRsYXN0ID0gaHJlZigk bGFzdCwgJHVyaS0+ZnVsbCwgIiB0aXRsZT0nUGFnZSAkbnVtUGFnZXMnIik7Cgl9CgllbHNl aWYgKCAhICRzaG93YWx3YXlzICkKCQkkbGFzdCA9ICcnOwoKCSRwcmV2ID0gJHBnID4gMSA/ IG5ld2VyKGFycmF5KCksICRwcmV2KSA6CgkJKCAkc2hvd2Fsd2F5cyA/ICRwcmV2IDogJycg KTsKCSRuZXh0ID0gJHBnIDwgJG51bVBhZ2VzID8gb2xkZXIoYXJyYXkoKSwgJG5leHQpIDoK CQkoICRzaG93YWx3YXlzID8gJG5leHQgOiAnJyApOwoKCSRvdXQgPSBzdHJfcmVwbGFjZSgK CQlhcnJheSgne3ByZXZ9JywgJ3tuZXh0fScsICd7Zmlyc3R9JywgJ3tsYXN0fScsICd7Y3Vy cmVudH0nLCAne3RvdGFsfScpLAoJCWFycmF5KCRwcmV2LCAkbmV4dCwgJGZpcnN0LCAkbGFz dCwgJHBnLCAkbnVtUGFnZXMpLCAkZm9ybWF0KTsKCXJldHVybiAkd3JhcHRhZyA/IHRhZygk b3V0LCAkd3JhcHRhZykgOiAkb3V0Owp9CgpmdW5jdGlvbiBzb29fcHJldl9wYWdlICggJGF0 dHMgKSB7CglpZiAoIGlzc2V0KCRhdHRzWyd0ZXh0J10pICkgewoJCSRhdHRzWydwcmV2J10g PSAkYXR0c1sndGV4dCddOwoJCXVuc2V0KCRhdHRzWyd0ZXh0J10pOwoJfQoJJGF0dHNbJ2Zv cm1hdCddID0gJ3twcmV2fSc7CglyZXR1cm4gc29vX3BhZ2VfY291bnQoJGF0dHMpOwp9Cgpm dW5jdGlvbiBzb29fbmV4dF9wYWdlICggJGF0dHMgKSB7CglpZiAoIGlzc2V0KCRhdHRzWyd0 ZXh0J10pICkgewoJCSRhdHRzWyduZXh0J10gPSAkYXR0c1sndGV4dCddOwoJCXVuc2V0KCRh dHRzWyd0ZXh0J10pOwoJfQoJJGF0dHNbJ2Zvcm1hdCddID0gJ3tuZXh0fSc7CglyZXR1cm4g c29vX3BhZ2VfY291bnQoJGF0dHMpOwp9CgpmdW5jdGlvbiBfc29vX3BhZ2VfbnVtYmVyc19z ZWNvbmRwYXNzICggJGZ1bmMsICRhdHRzICkgewovLyBpbiBjYXNlICRmdW5jJ3MgYXNzb2Np YXRlZCB0YWcgY29tZXMgYmVmb3JlIGFuIGFydGljbGUgdGFnLAovLyB0aGlzIHJ1bnMgdGhl IHRhZyBhZ2FpbiBkdXJpbmcgdGV4dHBhdHRlcm4oKSdzIHNlY29uZCBwYXJzZSgpIHBhc3MK CWdsb2JhbCAkcHJldGV4dDsKCWlmICggJHByZXRleHRbJ3NlY29uZHBhc3MnXSApIHJldHVy bjsgLy8geW91IG9ubHkgbGl2ZSB0d2ljZQoJZm9yZWFjaCAoICRhdHRzIGFzICRrID0+ICR2 ICkKCQkkYVtdID0gJGsgLiAnPSInIC4gJHYgLiAnIiAnOwoJcmV0dXJuICI8dHhwOiRmdW5j ICIgLiAoIGlzc2V0KCRhKSA/IGltcGxvZGUoJycsICRhKSA6ICcnICkgLiAnLz4nOwp9CiI7 czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo1OiJvcmRlciI7czox OiI1IjtzOjM6Im1kNSI7czozMjoiODMxNDhlY2Y4YjE1ZjkxOTM5NmVlYjgwYzZlYTI3MTUi O30=