# Name: rah_metas v1.3 # Type: Client side plugin # Outputs simple metas and prevents double content # Author: Jukka Svahn # URL: http://rahforum.biz # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjk6InJhaF9tZXRhcyI7czo2OiJhdXRob3IiO3M6MTE6Ikp1 a2thIFN2YWhuIjtzOjEwOiJhdXRob3JfdXJpIjtzOjE5OiJodHRwOi8vcmFoZm9ydW0uYml6 IjtzOjc6InZlcnNpb24iO3M6MzoiMS4zIjtzOjExOiJkZXNjcmlwdGlvbiI7czo0ODoiT3V0 cHV0cyBzaW1wbGUgbWV0YXMgYW5kIHByZXZlbnRzIGRvdWJsZSBjb250ZW50IjtzOjQ6Imhl bHAiO3M6MTg1NTI6Igk8aDE+cmFoX21ldGFzPC9oMT4KCgk8cD5BIHRpbnkgPGFiYnIgdGl0 bGU9IlNlYXJjaCBlbmdpbmUgb3B0aW1pemF0aW9uIj48c3BhbiBjbGFzcz0iY2FwcyI+U0VP PC9zcGFuPjwvYWJicj4tIGFuZCBtZXRhLXRvb2wgZm9yIDxhIGhyZWY9Imh0dHA6Ly93d3cu dGV4dHBhdHRlcm4uY29tIj5UZXh0cGF0dGVybiA8c3BhbiBjbGFzcz0iY2FwcyI+Q01TPC9z cGFuPi48L2E+IEJ1aWxkIGRlc2NyaXB0aW9ucywgc2ltcGxlIG1ldGEgaW5mbywgcmVsIGxp bmtzIGFuZCBwcmV2ZW50IGRvdWJsZSBjb250ZW50LjwvcD4KCgk8dWw+CgkJPGxpPlZlcnNp b246IDEuMzwvbGk+CgkJPGxpPlVwZGF0ZWQ6IDIwMTAvMDUvMjMgOTozMCBBTSA8c3BhbiBj bGFzcz0iY2FwcyI+VVRDPC9zcGFuPjwvbGk+Cgk8L3VsPgoKCTxoMz5UYWJsZSBvZiBDb250 ZW50czwvaDM+CgoJPHVsPgoJCTxsaT48YSBocmVmPSIjaW50cm8tYW5kLWRlc2NyaXB0aW9u Ij5JbnRybyBhbmQgZGVzY3JpcHRpb248L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2xpc3Qt b2YtZmVhdHVyZXMiPkxpc3Qgb2YgZmVhdHVyZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0i I3JlcXVpcmVtZW50cyI+UmVxdWlyZW1lbnRzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNp bnN0YWxsYXRpb24tYW5kLXVzYWdlIj5JbnN0YWxsYXRpb24gYW5kIHVzYWdlPC9hPjwvbGk+ CgkJPGxpPjxhIGhyZWY9IiNhdHRyaWJ1dGVzIj5BdHRyaWJ1dGVzPC9hPjwvbGk+CgkJPGxp PjxhIGhyZWY9IiNleGFtcGxlIj5FeGFtcGxlczwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIj Y2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2tub3duLWlz c3VlcyI+S25vd24gaXNzdWVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN0aGFua3MtdG8i PlRoYW5rcyB0bzwvYT48L2xpPgoJPC91bD4KCgk8aDMgaWQ9ImludHJvLWFuZC1kZXNjcmlw dGlvbiI+SW50cm8gYW5kIGRlc2NyaXB0aW9uPC9oMz4KCgk8cD5BIFRleHRwYXR0ZXJuIHBs dWdpbiB1c2VkIGZvciA8YWJiciB0aXRsZT0iU2VhcmNoIGVuZ2luZSBvcHRpbWl6YXRpb24i PjxzcGFuIGNsYXNzPSJjYXBzIj5TRU88L3NwYW4+PC9hYmJyPi4gVGhlIHBsdWdpbiBpbmNs dWRlcyBiYXNpYyA8c3BhbiBjbGFzcz0iY2FwcyI+U0VPPC9zcGFuPiB0b29scywgZnJvbSBz ZW1pLWF1dG9tYXRpYyBtZXRhaW5mb3JtYXRpb24gZ2VuZXJhdGlvbiB0byB1c2VmdWwgcmVk aXJlY3Rpb25zIHRoYXQgcHJldmVudCBkb3VibGUgY29udGVudCBhcyByYWhfbWV0YXMgaXMg YWxzbyBhYmxlIHJlZGlyZWN0IHJlcXVlc3RlZCBtZXNzeSB1cmxzIHRvIGNsZWFucywgbGVh dmluZyBubyBzcGFjZSBmb3IgdGhlIGRvdWJsZSBjb250ZW50IGZhdWx0LjwvcD4KCgk8aDMg aWQ9Imxpc3Qtb2YtZmVhdHVyZXMiPkxpc3Qgb2YgZmVhdHVyZXM8L2gzPgoKCTx1bD4KCQk8 bGk+PHN0cm9uZz5PdXRwdXRzIGF1dG9tYXRpYyBtZXRhZGVzY3JpcHRpb25zPC9zdHJvbmc+ IGZyb20gYXJ0aWNsZSYjODIxNztzIGJvZHksIGV4Y2VycHQgb3IgY3VzdG9tIGZpZWxkLjwv bGk+CgkJPGxpPjxzdHJvbmc+TGltaXRzIGFuZCBjdXN0b21pemVzIHRoZSBhdXRvbWF0aWMg bWV0YWRlc2NyaXB0aW9uPC9zdHJvbmc+IGJ5IHdvcmQgb3IgY2hhcmFjdGVyIGxpbWl0LCBz dHJpcHMgYWxsIDxzcGFuIGNsYXNzPSJjYXBzIj5YSFRNTDwvc3Bhbj4gYW5kIGludmFsaWQg Y2hhcmFjdGVycy48L2xpPgoJCTxsaT48c3Ryb25nPlJlZGlyZWN0cyBtZXNzeSB1cmxzIHRv IGNsZWFuIG9uZXMsIGlmIGNsZWFucyBhcmUgaW4gdXNlPC9zdHJvbmc+LiBJbiBleGFtcGxl LCA8Y29kZT4/aWQ9eHg8L2NvZGU+IGFuZCA8Y29kZT4/cz14eDwvY29kZT4gd291bGQgYmUg cmVkaXJlY3QgdG8gdGhlIGNvcnJlY3QgcGxhY2UsIHByZXZlbnRpbmcgcG9zc2libGUgZG91 YmxlIGNvbnRlbnQuPC9saT4KCQk8bGk+PHN0cm9uZz5PdXRwdXRzIG90aGVyIHVzZWZ1bCBt ZXRhPC9zdHJvbmc+IGFzIGF1dGhvciwgZGVzY3JpcHRpb24gYW5kIGxhbmd1YWdlLjwvbGk+ Cgk8L3VsPgoKCTxoMyBpZD0icmVxdWlyZW1lbnRzIj5SZXF1aXJlbWVudHM8L2gzPgoKCTxw Pk1pbmltdW0gcmVxdWlyZW1lbnRzOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJj YXBzIj5QSFA8L3NwYW4+IDQuNC4wKzwvbGk+CgkJPGxpPlRleHRwYXR0ZXJuIDQuMC40Kzwv bGk+Cgk8L3VsPgoKCTxwPlJlY29tbWVuZGVkOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNs YXNzPSJjYXBzIj5QSFA8L3NwYW4+IDUuMS4yKzwvbGk+CgkJPGxpPlRleHRwYXR0ZXJuIDQu MC44KzwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0iaW5zdGFsbGF0aW9uLWFuZC11c2FnZSI+SW5z dGFsbGF0aW9uIGFuZCB1c2FnZTwvaDM+CgoJPHA+VGhlIGdlbmVyYWwgYmVoYXZpb3Igc3Rh bmRzOiBwYXN0ZSBwbHVnaW4gY29kZSB0byB0aGUgcGx1Z2luIGluc3RhbGxlciB0ZXh0YXJl YSBhbmQgcnVuIHRoZSBhdXRvbWF0aWMgc2V0dXAuIFRoZW4ganVzdCBhY3RpdmF0ZSB0aGUg cGx1Z2luIGFuZCB5b3UgYXJlIHJlYWR5IHRvIHVzZSBuZXcgdGFncyB0aGF0IHBsdWdpbiBp bmNsdWRlcyBsaWtlIG90aGVycy48L3A+CgoJPHA+Rm9yIHVzYWdlLCBiYXNpY2FsbHkganVz dCBwdXQgPGNvZGU+Jmx0O3R4cDpyYWhfbWV0YXMgLyZndDs8L2NvZGU+LXRhZyB3aXRoIHdh bnRlZCBhdHRyaWJ1dGVzIHRvIGluc2lkZSB5b3VyIHNpdGUmIzgyMTc7cyA8Y29kZT4mbHQ7 aGVhZCZndDs8L2NvZGU+LXRhZ3MuIEFzIHRoZSBwbHVnaW4mIzgyMTc7cyB0YWcgb3V0cHV0 cyBtZXRhaW5mb3JtYXRpb24sIGFuZCBtZXRhLXRhZ3MsIGl0IHNob3VsZG4mIzgyMTc7dCBi ZSB1c2VkIG91dHNpZGUgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPi10YWdzLjwvcD4KCgk8 aDMgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2gzPgoKCTxwPlRoZSB0YWcgaXMgPGNv ZGU+Jmx0O3R4cDpyYWhfbWV0YXMgLyZndDs8L2NvZGU+IGFuZCBhdHRyaWJ1dGVzIGZvciBp dCBmb2xsb3cuIERlZmF1bHQgdmFsdWUgPGNvZGU+JnF1b3Q7JnF1b3Q7PC9jb2RlPiBtZWFu cyB0aGF0IHRoZSBhdHRyaWJ1dGUgaXMgdW5zZXQgYW5kIGRlZmF1bHRseSBub24tdXNlZC48 L3A+CgoJPHA+PHN0cm9uZz5pbWFnZXRvb2xiYXI8L3N0cm9uZz48YnIgLz4KVG8gYmxvY2sg YW4gYnJvd3NlciYjODIxNztzIGltYWdldG9vbGJhci4gQWxsb3dlZCBhdHRyaWJ1dGVzIDxj b2RlPnRydWU8L2NvZGU+IG9yIDxjb2RlPmZhbHNlPC9jb2RlPi48YnIgLz4KRXhhbXBsZTog PGNvZGU+aW1hZ2V0b29sYmFyPSZxdW90O2ZhbHNlJnF1b3Q7PC9jb2RlPiBEZWZhdWx0OiA8 Y29kZT4mcXVvdDsmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+bGFuZ3VhZ2U8L3N0 cm9uZz48YnIgLz4KTGFuZ3VhZ2UgdXNlZCBieSB0aGUgc2l0ZSwgaW4gZXhhbXBsZTogPGNv ZGU+ZmksIGVuLCBkZSwgc2U8L2NvZGU+LjxiciAvPgpFeGFtcGxlOiA8Y29kZT5sYW5ndWFn ZT0mcXVvdDtlbiZxdW90OzwvY29kZT4gRGVmYXVsdDogPGNvZGU+JnF1b3Q7JnF1b3Q7PC9j b2RlPjwvcD4KCgk8cD48c3Ryb25nPnJvYm90czwvc3Ryb25nPjxiciAvPgpIb3cgc2hvdWxk IHJvYm90cyBuYXZpZ2F0ZS4gVmFsaWQgdmFsdWVzIGFyZSA8Y29kZT5pbmRleCwgbm9pbmRl eCwgZm9sbG93LCBub2ZvbGxvdzwvY29kZT4gdGhhdCBjYW4gYmUgY29tcGluZWQuPGJyIC8+ CkV4YW1wbGU6IDxjb2RlPnJvYm90cz0mcXVvdDtpbmRleCwgZm9sbG93JnF1b3Q7PC9jb2Rl PiBEZWZhdWx0OiA8Y29kZT4mcXVvdDsmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+ YXV0aG9yPC9zdHJvbmc+PGJyIC8+CkF1dGhvciBuYW1lIHRoYXQgeW91IHdhbiYjODIxNzt0 IHRvIHNob3cgYXMgcGFnZSYjODIxNztzIGF1dGhvci4gVXN1YWxseSB5b3UsIGNvbXBhbnkg b3IgdGhlIHdlYnNpdGUmIzgyMTc7cyBuYW1lLjxiciAvPgpFeGFtcGxlOiA8Y29kZT5hdXRo b3I9JnF1b3Q7Sm9obiBEb2UmcXVvdDs8L2NvZGU+IERlZmF1bHQ6IDxjb2RlPiZxdW90OyZx dW90OzwvY29kZT48L3A+CgoJPHA+PHN0cm9uZz51c2VhdXRob3I8L3N0cm9uZz48YnIgLz4K SWYgc2VsZWN0ZWQgYW5kIGZpbGxlZCwgPGNvZGU+Jmx0O3R4cDphdXRob3IgLyZndDs8L2Nv ZGU+IGlzIHVzZWQgZm9yIHRoZSBhdXRob3ItbWV0YSwgYW5kIDxjb2RlPmF1dGhvcjwvY29k ZT4tYXR0cmlidXRlIHdpbGwgYmUgb3ZlcnJpZGVkLCB3aGVuIHZpZXdpbmcgYW4gaW5kdXZp ZHVhbCBhcnRpY2xlLjxiciAvPgpFeGFtcGxlOiA8Y29kZT51c2VhdXRob3I9JnF1b3Q7MSZx dW90OzwvY29kZT4gRGVmYXVsdDogPGNvZGU+JnF1b3Q7JnF1b3Q7PC9jb2RlPjwvcD4KCgk8 cD48c3Ryb25nPmNvcHlyaWdodDwvc3Ryb25nPjxiciAvPgpPdXRwdXRzIGNvcHlyaWdodC1t ZXRhLiBVc2VkIGZvciB0aGUgY29udGVudC48YnIgLz4KRXhhbXBsZTogPGNvZGU+Y29weXJp Z2h0PSZxdW90O0NvcHlyaWh0cyAmYW1wO2NvcHk7IDIwMDcgSm9obiBEb2UmcXVvdDs8L2Nv ZGU+IERlZmF1bHQ6IDxjb2RlPiZxdW90OyZxdW90OzwvY29kZT48L3A+CgoJPGg0PkRlc2Ny aXB0aW9uIHJlbGF0ZWQgYXR0cmlidXRlczwvaDQ+CgoJPHA+PHN0cm9uZz5kZXNjcmlwdGlv bjwvc3Ryb25nPjxiciAvPgpBIGRlZmF1bHQgbWV0YSBkZXNjcmlwdGlvbiB0aGF0IHdpbGwg YmUgdXNlZCBpbiBhcnRpY2xlIGxpc3QgY29udGV4dCwgb3IgaWYgdGhlcmUgaXNuJiM4MjE3 O3QgYW4gYXJ0aWNsZSBkZXNjcmlwdGlvbiB0byBzaG93IGFuZCA8Y29kZT5kZXNjcmlwdGlv bl9yZXBsYWNlbWVudDwvY29kZT4gaXMgc2V0IG9uLjxiciAvPgpFeGFtcGxlOiA8Y29kZT5k ZXNjcmlwdGlvbj0mcXVvdDtMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0 dWVyIGFkaXBpc2NpbmcgZWxpdC4gRnVzY2UgYXQgZHVpIGVnZXQgZXN0IGNvbmd1ZSBhbGlx dWV0LiBRdWlzcXVlIHNlZCBudW5jJnF1b3Q7PC9jb2RlPiBEZWZhdWx0OiA8Y29kZT4mcXVv dDsmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+ZGVzY3JpcHRpb25fZnJvbTwvc3Ry b25nPjxiciAvPgpXaGljaCBmaWVsZCBpcyB1c2VkIGZvciB0aGUgYXV0b21hdGljIG1ldGEg ZGVzY3JpcHRpb24uIFRoZSBhdHRyaWJ1dGUgdGFrZXMgY29tbWEgc2VwZXJhdGVkIGxpc3Qg b2YgZmllbGRzLiBUaGUgZmlyc3QgZmllbGQgaW4gdGhlIGxpc3QgdGhhdCBpc24mIzgyMTc7 dCBlbXB0eSBpcyB1c2VkIGFzIHRoZSBtZXRhIGRlc2NyaXB0aW9uLiBBdmFpbGFibGUgdmFs dWVzOiA8Y29kZT5ib2R5PC9jb2RlPiwgPGNvZGU+ZXhjZXJwdDwvY29kZT4gb3IgPGNvZGU+ Y3VzdG9tIGZpZWxkJiMzOTtzIG5hbWU8L2NvZGU+LiBJZiB0aGUgYXR0cmlidXRlIGlzIGVt cHR5LCB0aGVuIGF1dG9tYXRpYyBkZXNjcmlwdGlvbiBpc24mIzgyMTc7dCB1c2VkLjxiciAv PgpFeGFtcGxlOiA8Y29kZT5kZXNjcmlwdGlvbl9mcm9tPSZxdW90O2JvZHksZXhjZXJwdCxt ZXRhZGVzY3JpcHRpb24mcXVvdDs8L2NvZGU+ICBEZWZhdWx0OiA8Y29kZT4mcXVvdDtib2R5 LGV4Y2VycHQmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+d29yZHM8L3N0cm9uZz48 YnIgLz4KTGltaXRzIHRoZSBhbW91bnQgb2Ygd29yZHMgdGhhdCBhcmUgc2hvd24gaW4gdGhl IGF1dG9tYXRpYyBtZXRhIGRlc2NyaXB0aW9uLjxiciAvPgpFeGFtcGxlOiA8Y29kZT53b3Jk cz0mcXVvdDsxNSZxdW90OzwvY29kZT4gRGVmYXVsdDogPGNvZGU+JnF1b3Q7MjUmcXVvdDs8 L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+bWF4Y2hhcnM8L3N0cm9uZz48YnIgLz4KVGhlIG1h eGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIGdlbmVyYXRlZCBhdXRvbWF0aWMg bWV0YSBkZXNjcmlwdGlvbi48YnIgLz4KRXhhbXBsZTogPGNvZGU+bWF4Y2hhcnM9JnF1b3Q7 MTcwJnF1b3Q7PC9jb2RlPiBEZWZhdWx0OiA8Y29kZT4mcXVvdDsyNTAmcXVvdDs8L2NvZGU+ PC9wPgoKCTxwPjxzdHJvbmc+ZGVzY3JpcHRpb25fdHJhaWw8L3N0cm9uZz48YnIgLz4KRW5k aW5nIHRyYWlsIHVzZWQgaW4gdGhlIGVuZCBvZiB0aGUgYXV0b21hdGljIG1ldGFkZXNjcmlw dGlvbi4gVHJhaWwgaXMgb25seSBzaG93biBpZiB0aGUgZGVzY3JpcHRpb24gaXMgbG9uZ2Vy IHRoYW4gdGhlIGxpbWl0IHNldCBieSA8Y29kZT5tYXhjaGFyczwvY29kZT4gYW5kIDxjb2Rl PndvcmRzPC9jb2RlPi48YnIgLz4KRXhhbXBsZTogPGNvZGU+ZGVzY3JpcHRpb25fdHJhaWw9 JnF1b3Q7JnF1b3Q7PC9jb2RlPiBEZWZhdWx0OiAgPGNvZGU+JnF1b3Q7JmFtcDtoZWxsaXA7 JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD48c3Ryb25nPmRlc2NyaXB0aW9uX3JlcGxhY2VtZW50 PC9zdHJvbmc+PGJyIC8+CklmIHNldCBvbiAoPGNvZGU+MTwvY29kZT4pIGFuZCB0aGVyZSBp c24mIzgyMTc7dCBhdXRvbWF0aWMgZGVzY3JpcHRpb24gYXZhaWxhYmxlLCB1c2UgPGNvZGU+ ZGVzY3JpcHRpb248L2NvZGU+IGF0dHJpYnV0ZSBpbnN0ZWFkLiBCeSBkZWZhdWx0IHRoaXMg ZmVhdHVyZSBpcyBub3QgdXNlZC48YnIgLz4KRXhhbXBsZTogPGNvZGU+ZGVzY3JpcHRpb25f cmVwbGFjZW1lbnQ9JnF1b3Q7MSZxdW90OzwvY29kZT4gRGVmYXVsdDogPGNvZGU+JnF1b3Q7 JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD48c3Ryb25nPmVzY2FwZTwvc3Ryb25nPjxiciAvPgpJ ZiBzZXQgdG8gPGNvZGU+MTwvY29kZT4sIHdpbGwgZXNjYXBlIHJhdyBUZXh0aWxlIGZyb20g ZGVzY3JpcHRpb24uIERlZmF1bHQgaXMgdW5zZXQsIGFuZCB0aGUgZmVhdHVyZSBpcyBub3Qg dXNlZC4gVXN1YWxseSB0aGlzIGZlYXR1cmUgaXNuJiM4MjE3O3QgcmVxdWlyZWQsIGJ1dCBp dCBtaWdodCBiZSBnb29kIGlmIHlvdSBoYXZlIGRlc2NyaXB0aW9uIGluIGEgY3VzdG9tIGZp ZWxkIGFuZCB5b3UgYXJlIHVzaW5nIFRleHRpbGUgdGhlcmUuIFRleHRpbGUgaW4gY3VzdG9t IGZpZWxkcyBpc24mIzgyMTc7dCBieSBkZWZhdWx0IGdlbmVucmF0ZWQgYnkgVGV4dHBhdHRl cm4uPGJyIC8+CkV4YW1wbGU6IDxjb2RlPmVzY2FwZT0mcXVvdDsxJnF1b3Q7PC9jb2RlPiBE ZWZhdWx0OiA8Y29kZT4mcXVvdDsmcXVvdDs8L2NvZGU+PC9wPgoKCTxoND5LZXl3b3JkIHJl bGF0ZWQgYXR0cmlidXRlczwvaDQ+CgoJPHA+PHN0cm9uZz5rZXl3b3Jkczwvc3Ryb25nPjxi ciAvPgpEZWZhdWx0IGtleXdvcmRzIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGtleXdvcmQgbWV0 YSBpbiBhcnRpY2xlIGxpc3QgY29udGV4dCwgb3IgaWYgdGhlcmUgaXNuJiM4MjE3O3QgYW55 IGtleXdvcmRzIGRlZmluZWQgZm9yIGFydGljbGUgYW5kIDxjb2RlPmtleXdvcmRzX3JlcGxh Y2VtZW50PC9jb2RlPiBhdHRyaWJ1dGUgaXMgc2V0IG9uLjxiciAvPgpFeGFtcGxlOiA8Y29k ZT5rZXl3b3Jkcz0mcXVvdDtsaWZlLCBEb2UsIGNhdCwgZG9nJnF1b3Q7PC9jb2RlPiBEZWZh dWx0OiA8Y29kZT4mcXVvdDsmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+a2V5d29y ZHNfZnJvbTwvc3Ryb25nPjxiciAvPgpXaGljaCBmaWVsZCBpcyB1c2VkIGZvciB0aGUga2V5 d29yZCBtZXRhLiBUaGUgYXR0cmlidXRlIHRha2VzIGNvbW1hIHNlcGVyYXRlZCBsaXN0IG9m IGZpZWxkcy4gVGhlIGZpcnN0IGZpZWxkIGluIHRoZSBsaXN0IHRoYXQgaXNuJiM4MjE3O3Qg ZW1wdHkgaXMgdXNlZCBhcyB0aGUga2V5d29yZHMuIEF2YWlsYWJsZSB2YWx1ZXMsIGFueSBh cnRpY2xlIGZpZWxkOiA8Y29kZT5rZXl3b3JkczwvY29kZT4sIDxjb2RlPmJvZHk8L2NvZGU+ LCA8Y29kZT5leGNlcnB0PC9jb2RlPiBvciA8Y29kZT5jdXN0b20gZmllbGQmIzM5O3MgbmFt ZTwvY29kZT4uIElmIGVtcHR5LCB0aGUgZmVhdHVyZSBpc24mIzgyMTc7dCB1c2VkLjxiciAv PgpFeGFtcGxlOiA8Y29kZT5rZXl3b3Jkc19mcm9tPSZxdW90O2tleXdvcmRzLGV4Y2VycHQm cXVvdDs8L2NvZGU+ICBEZWZhdWx0OiA8Y29kZT4mcXVvdDtrZXl3b3JkcyZxdW90OzwvY29k ZT48L3A+CgoJPHA+PHN0cm9uZz5rZXl3b3Jkc19yZXBsYWNlbWVudDwvc3Ryb25nPjxiciAv PgpJZiB0aGVyZSBpc24mIzgyMTc7dCBrZXl3b3JkcyBhdmFpbGFibGUgZm9yIGFuIGFydGlj bGUsIHVzZSBkZWZhdWx0IGRlZmluZWQgaW4gPGNvZGU+a2V5d29yZHM8L2NvZGU+IGF0dHJp YnV0ZSBpbnN0ZWFkLjxiciAvPgpFeGFtcGxlOiA8Y29kZT5rZXl3b3Jkc19yZXBsYWNlbWVu dD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiBEZWZhdWx0OiA8Y29kZT4mcXVvdDsmcXVvdDs8L2Nv ZGU+PC9wPgoKCTxwPjxzdHJvbmc+a2V5d29yZHNfbGltaXQ8L3N0cm9uZz48YnIgLz4KTGlt aXRzIHRoZSB3b3JkcyB1c2VkIGluIHRoZSBrZXl3b3Jkcy4gVGFrZXMgZXZlbiBudW1iZXIu PGJyIC8+CkV4YW1wbGU6IDxjb2RlPmtleXdvcmRzX2xpbWl0PSZxdW90OzUmcXVvdDs8L2Nv ZGU+IERlZmF1bHQ6IDxjb2RlPiZxdW90OzI1JnF1b3Q7PC9jb2RlPjwvcD4KCgk8aDQ+UmVk aXJlY3QgcmVsYXRlZCBhdHRyaWJ1dGVzPC9oND4KCgk8cD48c3Ryb25nPm1lc3N5X3RvX2Ns ZWFuX3JlZGlyZWN0PC9zdHJvbmc+PGJyIC8+ClVzZSBtZXNzeSB0byBjbGVhbiByZWRpcmVj dC4gUmVkaXJlY3RzIG1lc3N5IHJlcXVyZXN0cyB0byBjbGVhbiB1cmxzLiBVc2UgdGhpcyBv bmx5IGlmIHlvdSB1c2UgY2xlYW4gdXJscy4gV2l0aCBtZXNzeSB1cmxzIHRoaXMgb25seSBj YXVzZXMgZXRlcm5hbCBsb29wLjxiciAvPgpFeGFtcGxlOiA8Y29kZT5tZXNzeV90b19jbGVh bl9yZWRpcmVjdD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiBEZWZhdWx0OiA8Y29kZT4mcXVvdDsm cXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+cmVkaXJlY3RfY29kZTwvc3Ryb25nPjxi ciAvPgpUaGUgY29kZSBvZiByZWRpcmVjdGlvbiwgdmFsdWUgc2hvdWxkIGJlIDxhIGhyZWY9 Imh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRt bCI+dGhyZWUgbnVtZXJpYyBzdGFubmFyZCBzdGF0dXMgY29kZSBwcm90b2NvbC48L2E+PGJy IC8+CkV4YW1wbGU6IDxjb2RlPnJlZGlyZWN0X2NvZGU9JnF1b3Q7MzAyJnF1b3Q7PC9jb2Rl PiBEZWZhdWx0OiA8Y29kZT4mcXVvdDszMDEmcXVvdDs8L2NvZGU+PC9wPgoKCTxoND5SZWwg bGluayByZWxhdGVkIGF0dHJpYnV0ZXM8L2g0PgoKCTxwPjxzdHJvbmc+cmVsbmV4dDwvc3Ry b25nPjxiciAvPgpVc2UgcmVsIGxpbmsgdG8gcG9pbnQgbmV4dCBwYWdlJiM4MjE3O3MgbG9j YXRpb24gdG8gdGhlIGJyb3dzZXIuIDxjb2RlPnJlbG5leHQ8L2NvZGU+IGF0dHJpYnV0ZSYj ODIxNztzIHZhbHVlIGlzIHVzZWQgYXMgPGNvZGU+Jmx0O2xpbmsgcmVsPSZxdW90O25leHQm cXVvdDsgLyZndDs8L2NvZGU+IHRhZyYjODIxNztzIDxjb2RlPnRpdGxlPC9jb2RlPi4gSWRl YWwgdmFsdWVzIGFyZSA8Y29kZT5OZXh0PC9jb2RlPiwgPGNvZGU+R28gdG8gbmV4dDwvY29k ZT4gYW5kIHNvIG9uLiBUaGUgYXR0cmlidXRlLCA8Y29kZT5yZWxuZXh0PC9jb2RlPiwgYWRk cyBhIG5leHQgcmVsIGxpbmsgbWV0YSB0aGF0IHBvaW50cyB0byB0aGUgbmV4dCBzZWN0aW9u IHBhZ2Ugb3IgYXJ0aWNsZSBieSBwb3N0aW5nIGRhdGUuIElmIGF0dHJpYnV0ZSBpcyB1c2Vk IChmaWxsZWQpIHRoZW4gdXNlZCwgaWYgdW5zZXQgKGVtcHR5KSB0aGVuIG5vdC48YnIgLz4K RXhhbXBsZTogPGNvZGU+cmVsbmV4dD0mcXVvdDtOZXh0JnF1b3Q7PC9jb2RlPiBEZWZhdWx0 OiA8Y29kZT4mcXVvdDsmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+cmVscHJldjwv c3Ryb25nPjxiciAvPgpVc2UgcmVsIGxpbmsgdG8gcG9pbnQgcHJldmlvdXMgcGFnZSYjODIx NztzIGxvY2F0aW9uIHRvIHRoZSBicm93c2VyLiA8Y29kZT5yZWxwcmV2PC9jb2RlPiBhdHRy aWJ1dGUmIzgyMTc7cyB2YWx1ZSBpcyB1c2VkIGFzIDxjb2RlPiZsdDtsaW5rIHJlbD0mcXVv dDtwcmV2JnF1b3Q7IC8mZ3Q7PC9jb2RlPiB0YWcmIzgyMTc7cyA8Y29kZT50aXRsZTwvY29k ZT4uIElkZWFsIHZhbHVlcyBhcmUgPGNvZGU+UHJldmlvdXM8L2NvZGU+LCA8Y29kZT5HbyB0 byBwcmV2PC9jb2RlPiBhbmQgc28gb24uIFRoZSBhdHRyaWJ1dGUsIDxjb2RlPnJlbHByZXY8 L2NvZGU+LCBhZGRzIGEgbmV4dCByZWwgbGluayBtZXRhIHRoYXQgcG9pbnRzIHRvIHRoZSBw cmV2aW91cyBzZWN0aW9uIHBhZ2Ugb3IgYXJ0aWNsZSBieSBwb3N0aW5nIGRhdGUuIElmIGF0 dHJpYnV0ZSBpcyB1c2VkIChmaWxsZWQpIHRoZW4gdXNlZCwgaWYgdW5zZXQgKGVtcHR5KSB0 aGVuIG5vdC48YnIgLz4KRXhhbXBsZTogPGNvZGU+cmVscHJldj0mcXVvdDtQcmV2aW91cyZx dW90OzwvY29kZT4gRGVmYXVsdDogPGNvZGU+JnF1b3Q7JnF1b3Q7PC9jb2RlPjwvcD4KCgk8 cD48c3Ryb25nPnByZXZfdXJsPC9zdHJvbmc+PGJyIC8+Ck1hbnVhbGx5IGRlZmluZXMgcmVs YXRpdmUgcHJldiB1cmwuIFZhbHVlIHNob3VsZCBiZSBhIDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IGFkZHJlc3MuIFRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBp cyBvbmx5IHVzZWQgaWYgYXV0b21hdGljIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ IGlzbiYjODIxNzt0IGZvdW5kLjxiciAvPgpFeGFtcGxlOiA8Y29kZT5wcmV2X3VybD0mcXVv dDtodHRwOi8vd3d3LmV4YW1wbGUuY29tL3BhdGgvdG8vaWQmcXVvdDs8L2NvZGU+IERlZmF1 bHQ6IDxjb2RlPiZxdW90OyZxdW90OzwvY29kZT48L3A+CgoJPHA+PHN0cm9uZz5uZXh0X3Vy bDwvc3Ryb25nPjxiciAvPgpNYW51YWxseSBkZWZpbmVzIHJlbGF0aXZlIG5leHQgdXJsLiBW YWx1ZSBzaG91bGQgYmUgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBhZGRyZXNz LiBUaGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gaXMgb25seSB1c2VkIGlmIGF1 dG9tYXRpYyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBpc24mIzgyMTc7dCBmb3Vu ZC48YnIgLz4KRXhhbXBsZTogPGNvZGU+cHJldl91cmw9JnF1b3Q7aHR0cDovL3d3dy5leGFt cGxlLmNvbS9wYXRoL3RvL2lkJnF1b3Q7PC9jb2RlPiBEZWZhdWx0OiA8Y29kZT4mcXVvdDsm cXVvdDs8L2NvZGU+PC9wPgoKCTxoMyBpZD0iZXhhbXBsZSI+RXhhbXBsZXM8L2gzPgoKCTxw PjxzdHJvbmc+IzE6IEJhc2ljIHVzYWdlPC9zdHJvbmc+PC9wPgoKPHByZT48Y29kZT4mbHQ7 dHhwOnJhaF9tZXRhcyBrZXl3b3Jkcz0mcXVvdDtkb2csIGNhdCwgaG91c2UmcXVvdDsgZGVz Y3JpcHRpb249JnF1b3Q7TG9yZW0gbGlwc3VtJnF1b3Q7IG1heGNoYXJzPSZxdW90OzE3MCZx dW90OyB3b3Jkcz0mcXVvdDsxNSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+PHN0 cm9uZz4jMjogVXNpbmcgY29udGVudCBwcmVmZXJyaW5nLjwvc3Ryb25nPiBGaXJzdCBsb29r IGF0IHRoZSBjdXN0b20gZmllbGQsIHRoZW4gbWFpbiAoZXhjZXJwdCwgYm9keSkgZmllbGRz LjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpyYWhfbWV0YXMgZGVzY3JpcHRpb25fZnJvbT0m cXVvdDtNeUN1c3RvbUZpZWxkTmFtZSZxdW90OyBwcmVmZXJjb250ZW50PSZxdW90OzEmcXVv dDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPjxzdHJvbmc+IzM6IFVzZSByYWhfbWV0YXMg dGFnIGluc2lkZSA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ubmV0L3dpa2kvaW5kZXgu cGhwP3RpdGxlPWFydGljbGVfY3VzdG9tIj5hcnRpY2xlX2N1c3RvbTwvYT4gYmxvY2s8L3N0 cm9uZz48L3A+CgoJPHA+SWYgcmFoX21ldGFzIGlzIHBsYWNlZCBkaXJlY3RseSBpbnNpZGUg YXJ0aWNsZV9jdXN0b20gKG9yIGFydGljbGUpIHRhZywgaXQgY2FuIGJlIHVzZWQgdG8gcHVs bCB0aGUgbWV0YSBkYXRhIGZyb20gc3BlY2lmaWMgYXJ0aWNsZS48L3A+Cgo8cHJlPjxjb2Rl PiZsdDt0eHA6YXJ0aWNsZV9jdXN0b20gaWQ9JnF1b3Q7NSZxdW90OyZndDsKCSZsdDt0eHA6 cmFoX21ldGFzIC8mZ3Q7CiZsdDsvdHhwOmFydGljbGVfY3VzdG9tJmd0Owo8L2NvZGU+PC9w cmU+CgoJPHA+SW4gdGhlIGNvZGUgYWJvdmUsIHdlIHRvb2sgdGhlIG1ldGEgZGF0YSBmcm9t IHRoZSBhcnRpY2xlIHdoZXJlIHRoZSBJRCBpcyA1LjwvcD4KCgk8aDMgaWQ9ImNoYW5nZWxv ZyI+Q2hhbmdlbG9nPC9oMz4KCgk8cD48c3Ryb25nPlZlcnNpb24gMS4zPC9zdHJvbmc+PC9w PgoKCTx1bD4KCQk8bGk+Tm93IDxjb2RlPmRlc2NyaXB0aW9uX2Zyb208L2NvZGU+IGFuZCA8 Y29kZT5rZXl3b3Jkc19mcm9tPC9jb2RlPiB0YWtlIGNvbW1hIHNlcGVyYXRlZCBsaXN0IG9m IGZpZWxkcy4gVGhlIGZpcnN0IGZpZWxkIGluIHRoZSBsaXN0IHRoYXQgaXNuJiM4MjE3O3Qg ZW1wdHkgaXMgdXNlZCBhcyBrZXl3b3JkcyBvciBkZXNjcmlwdGlvbi48L2xpPgoJCTxsaT5S ZW1vdmVkIGF0dHJpYnV0ZSA8Y29kZT5wcmVmZXJjb250ZW50PC9jb2RlPi4gVXNpbmcgdGhl IGF0dHJpYnV0ZSB3aWxsIHRocm93IG5vdGljZSBpbiB0ZXN0aW5nIG9yIGRlYnVnZ2luZyBt b2RlLjwvbGk+Cgk8L3VsPgoKCTxwPjxzdHJvbmc+VmVyc2lvbiAxLjI8L3N0cm9uZz48L3A+ CgoJPHVsPgoJCTxsaT5Ob3cgdGhlIDxjb2RlPiZsdDt0eHA6cmFoX21ldGFzLyZndDs8L2Nv ZGU+IHRhZyBjYW4gYmUgYWxzbyB1c2VkIDxlbT5kaXJlY3RseSBpbnNpZGU8L2VtPiA8Y29k ZT4mbHQ7dHhwOmFydGljbGVfY3VzdG9tLyZndDs8L2NvZGU+IGFuZCA8Y29kZT4mbHQ7dHhw OmFydGljbGUvJmd0OzwvY29kZT4gYmxvY2tzLiBUaGF0IG1lYW5zIHRoYXQgdGhlIHRhZyBu b3cgd29ya3MgaW4gYXJ0aWNsZSBsaXN0cy4gWW91IGp1c3QgaGF2ZSB0byBwb2ludCBpdCB0 byB0aGUgYXJ0aWNsZS4gU2VlIGV4YW1wbGUgbnVtYmVyIDMuPC9saT4KCQk8bGk+Tm93IDxl bT5hbnk8L2VtPiBhcnRpY2xlIGZpZWxkIGNhbiBiZSB1c2VkIGluIDxjb2RlPmRlc2NyaXB0 aW9uX2Zyb208L2NvZGU+IGFuZCA8Y29kZT5rZXl3b3Jkc19mcm9tPC9jb2RlPiBhdHRyaWJ1 dGVzLiBFdmVuIHRpdGxlLCBhdXRob3JpZCwgb3ZlcnJpZGVfZm9ybSBvciBzdGF0dXMuPC9s aT4KCQk8bGk+Tm93IGR1YmxpY2F0ZSBrZXl3b3JkICYjODIyMDt1bmlxdWVpbmcmIzgyMjE7 IGlzIGRvbmUgd2l0aCA8Y29kZT5hcnJheV91bmlxdWUoKTwvY29kZT4uPC9saT4KCQk8bGk+ Rml4ZWQga2V5d29yZHMgY29kZSBlc2NhcGluZy48L2xpPgoJPC91bD4KCgk8cD48c3Ryb25n PlZlcnNpb24gMS4xPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+QWRkZWQ6IGF0dHJpYnV0 ZSA8Y29kZT5rZXl3b3Jkc19saW1pdDwvY29kZT4uPC9saT4KCQk8bGk+QWRkZWQ6IHJlbW92 ZXMgZG91YmxpY2F0ZWQgd29yZHMgZnJvbSBrZXl3b3Jkcy48L2xpPgoJCTxsaT5BZGRlZDog bGlzdCB2aWV3JiM4MjE3O3MgZGVzY3JpcHRpb24gaXMgZWZmZWN0ZWQgYnkgd29yZCBhbmQg Y2hhcmFjdGVyIGxpbWl0cy48L2xpPgoJCTxsaT5GaXhlZCBkb3VibGUgPGNvZGU+JnF1b3Q7 PSZxdW90OzwvY29kZT4gZGVmaW5lIGJ1Zy48L2xpPgoJCTxsaT5Ob3cgPGNvZGU+ZXNjYXBl PC9jb2RlPiBhdHRyaWJ1dGUgZWZmZWN0cyBhbHNvIGJvZHkgYW5kIGV4cGVydCwgbm90IG9u bHkgY3VzdG9tIGZpZWxkcy48L2xpPgoJCTxsaT5Ob3cga2V5d29yZHMgYXJlIGVzY2FwZWQs IHN0cmlwZWQgZm9yIHRhZ3MgYW5kIHBhcnNlZC48L2xpPgoJCTxsaT5Db3VudHMgd2hpdGUg c3BhY2UgaW50byBjaGFycy48L2xpPgoJCTxsaT5SZW1vdmVkIGltYWdldG9vbGJhciBhdHRy aWJ1dGUgdmFsaWRhdGlvbi48L2xpPgoJPC91bD4KCgk8cD48c3Ryb25nPlZlcnNpb24gMS4w LjU8L3N0cm9uZz48L3A+CgoJPHVsPgoJCTxsaT5BZGRlZCBhdHRyaWJ1dGU6ICA8Y29kZT5l c2NhcGU8L2NvZGU+LjwvbGk+CgkJPGxpPlJlYnVpbGQgZGVzY3JpcHRpb24mIzgyMTc7cyB3 b3JkIGFuZCBjaGFycyBjb3VudGluZzogbm93IGFsd2F5cyBjb3VudHMgY29ycmVjdGx5OiBk b2VzbiYjODIxNzt0IGV2ZXIgY3V0IHdvcmRzLjwvbGk+CgkJPGxpPk9wdGltaXplZCBwYXJz aW5nIGFuZCBzcGVlZDogcGx1Z2luIGlzIGFyb3VuZCAyMCUgZmFzdGVyIHRoYW4gYmVmb3Jl LjwvbGk+CgkJPGxpPlJlbW92ZXMgPGNvZGU+JmFtcDsjODIzMDs8L2NvZGU+IGZyb20gZW5k IG9mIHRoZSBkZXNjcmlwdGlvbiBpZiB0cmFpbHMgYXJlIHVzZWQgYW5kIGRlc2NyaXB0aW9u IGlzIGN1dCBmcm9tIGNvbnRleHQgYW5kIHNob3J0ZW5lZC48L2xpPgoJPC91bD4KCgk8cD48 c3Ryb25nPlZlcnNpb24gMS4wLjQ8L3N0cm9uZz48L3A+CgoJPHVsPgoJCTxsaT5BZGRlZCBh dHRyaWJ1dGU6ICA8Y29kZT5yZWxuZXh0PC9jb2RlPi48L2xpPgoJCTxsaT5BZGRlZCBhdHRy aWJ1dGU6IDxjb2RlPnJlbHByZXY8L2NvZGU+LjwvbGk+CgkJPGxpPk1pbmlmaWVkIGFtb3Vu dCBvZiB1c2VkIGdsb2JhbHMgYnkgb25lLjwvbGk+Cgk8L3VsPgoKCTxwPjxzdHJvbmc+VmVy c2lvbiAxLjAuMzwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPkZpeGVkIGxhc3Qgd29yZHMg dHJ1bmNhdGUgYnVnLjwvbGk+Cgk8L3VsPgoKCTxwPjxzdHJvbmc+VmVyc2lvbiAxLjAuMjwv c3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPkZpeGVkIHNvbWUgdHlwb3MgaW4gZG9jdW1lbnRp b24uPC9saT4KCQk8bGk+Tm93IDxjb2RlPnByZWZlcmNvbnRlbnQ8L2NvZGU+IGFsc28gd29y a3Mgd2l0aCBjdXN0b21fZmllbGRzLjwvbGk+Cgk8L3VsPgoKCTxwPjxzdHJvbmc+VmVyc2lv biAxLjAuMTwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPkRlYnVnZ2VkIHZlcnNpb24gMS4w OiBzdGF0dXMgbm93IHN0YWJsZS48L2xpPgoJCTxsaT5GaXhlZCBhIGJ1Zzogbm93IHdoaXRl c3BhY2UgaXMgc3RyaXBwZWQgZnJvbSBiZWdpbm5pbmcgYW5kIGVuZCBvZiB0aGUgZGVzY3Jp cHRpb24gY29udGVudC48L2xpPgoJPC91bD4KCgk8cD48c3Ryb25nPlZlcnNpb24gMS4wPC9z dHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+SW1wcm92ZWQgZG9jdW1lbnRhdGlvbi48L2xpPgoJ CTxsaT5MaXR0bGUgc3BlZWQgaW1wcm92ZW1lbnQuPC9saT4KCQk8bGk+UmVtb3ZlZCA8Y29k ZT5jaGFyc2V0PC9jb2RlPi1hdHRyaWJ1dGUsIGl0IGFpbiYjODIxNzt0IG5lZWRlZCBhcyBU ZXh0cGF0dGVybiBzZW5kcyBjaGFyc2V0IHZpYSBoZWFkZXJzICYjODIxMTsgYW5kIGl0IG11 c3Qgbm90IGRpZmZlci48L2xpPgoJCTxsaT5NZXJnZWQgPGNvZGU+Y3VzdG9tZmllbGRleGNl cnB0PC9jb2RlPi1hdHRyaWJ1dGUgd2l0aCA8Y29kZT5kZXNjcmlwdGlvbl9mcm9tPC9jb2Rl Pi48L2xpPgoJCTxsaT5JbmNsdWRlZCByZWRpcmVjdGluZyBmdW5jdGlvbnMgdGhhdCBwcmV2 ZW50IGRvdWJsZSBjb250ZW50IHdoZW4gdXNpbmcgY2xlYW4gdXJscy48L2xpPgoJCTxsaT5W YWxpZGF0ZXMgPGNvZGU+aW1hZ2V0b29sYmFyPC9jb2RlPi1hdHRyaWJ1dGUgdG8gZmFsc2Ug b3IgdHJ1ZS48L2xpPgoJCTxsaT5BZGRlZCBhdHRyaWJ1dGU6IDxjb2RlPmRlc2NyaXB0aW9u X3JlcGxhY2VtZW50PC9jb2RlPi48L2xpPgoJCTxsaT5BZGRlZCBhdHRyaWJ1dGU6IDxjb2Rl PmtleXdvcmRzX3JlcGxhY2VtZW50PC9jb2RlPi48L2xpPgoJCTxsaT5BZGRlZCBhdHRyaWJ1 dGU6IDxjb2RlPmRlc2NyaXB0aW9uX2Zyb208L2NvZGU+PC9saT4KCQk8bGk+QWRkZWQgYXR0 cmlidXRlOiA8Y29kZT5tZXNzeV90b19jbGVhbl9yZWRpcmVjdDwvY29kZT4uPC9saT4KCQk8 bGk+QWRkZWQgYXR0cmlidXRlOiA8Y29kZT5yZWRpcmVjdF9jb2RlPC9jb2RlPi48L2xpPgoJ CTxsaT5BZGRlZCBhdHRyaWJ1dGU6IDxjb2RlPmRlc2NyaXB0aW9uX3RyYWlsPC9jb2RlPi48 L2xpPgoJCTxsaT5BZGRlZCBpbnZhbGlkIGNoYXJhc3RlcnMgcmVtb3ZpbmcgZm9yIGN1c3Rv bSBmaWVsZHMuPC9saT4KCQk8bGk+UmVtb3ZlZCBUZXh0aWxlIHJlbW92aW5nIGZyb20gYm9k eSBhbmQgZXhjZXJwdCwgdGhhdCB3YXMgbWVhbnQgdG8gcmVtb3ZlIFRleHRpbGUgKyA8c3Bh biBjbGFzcz0iY2FwcyI+WEhUTUw8L3NwYW4+IGJ1Z3MgY2F1c2VkIGJ5IHVzZXImIzgyMTc7 cyBpbnZhbGlkIGFydGljbGUgY29kZSwgYW5kIHVzZWQgaW5zdGVhZCBib2R5X2h0bWwsIGFu ZCBqdXN0IHN0cmlwcGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPjogaXQmIzgy MTc7cyBmYXN0ZXIuPC9saT4KCQk8bGk+U29tZSB1c2VycyB3YW50ZWQgdG8gYmUgYWJsZSBp bnB1dCBpbnZhbGlkIGNoYXJhY3RlcnMgdG8gZGVzY3JpcHRpb246IG5vdyBpdCBpcyBwb3Nz aWJsZSwgaWYgeW91IHR1cm4gVGV4dGlsZSBvZmY6IHdoeSBzaG91bGQgd2UgdmFsaWRhdGUg bWV0YSBkZXNjcmlwdGlvbiwgaWYgYXJ0aWNsZSYjODIxNztzIGJvZHkgaXRzZWxmIGlzIGlu dmFsaWQsIGJlY2F1c2Ugd3JpdGVyIGRvZXNuJiM4MjE3O3QgdXNlIHZhbGlkIDxzcGFuIGNs YXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBzcGVjaWFsIGNoYXJhY3RlcnMuPC9saT4KCTwvdWw+ CgoJPHA+PHN0cm9uZz5WZXJzaW9uIG1pbm9yIDAuOS4yPC9zdHJvbmc+PC9wPgoKCTx1bD4K CQk8bGk+T25lIGJ1ZyBmaXgsIGNyZWF0ZWQgYnkgbGl0dGxlIG9uZSBjaGFycyB0eXBvIGlu IHRoZSBjb2RlLjwvbGk+Cgk8L3VsPgoKCTxwPjxzdHJvbmc+VmVyc2lvbiBtaW5vciAwLjku MTwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPlJlbW92ZWQgYSBkZWJ1Z2dpbmcgZXJyb3Is IGNhdXNlZCBieSB1bmRlZmluZWQgdmFyaWFibGUgaWYgdGhlcmUgd2VyZSBubyBkZXNjcmlw dGlvbi48L2xpPgoJPC91bD4KCgk8cD48c3Ryb25nPlZlcnNpb24gMC45PC9zdHJvbmc+PC9w PgoKCTx1bD4KCQk8bGk+QWRkZWQgYXR0cmlidXRlOiA8Y29kZT5jb3B5cmlnaHQ8L2NvZGU+ LjwvbGk+CgkJPGxpPkFkZGVkIGF0dHJpYnV0ZTogPGNvZGU+dXNlYXV0aG9yPC9jb2RlPi48 L2xpPgoJCTxsaT5BZGRlZCBhdHRyaWJ1dGU6IDxjb2RlPmN1c3RvbWZpZWxka2V5d29yZHM8 L2NvZGU+LjwvbGk+CgkJPGxpPkFkZGVkIGF0dHJpYnV0ZTogPGNvZGU+Y3VzdG9tZmllbGRl eGNlcnB0PC9jb2RlPi48L2xpPgoJPC91bD4KCgk8cD48c3Ryb25nPlZlcnNpb24gMC44PC9z dHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+QWRkZWQgVGV4dGlsZSByZW1vdmVyOiByZW1vdmVz IFRleHRpbGUgY29tcGxldGVseSBmcm9tIGRlc2NyaXB0aW9uPC9saT4KCQk8bGk+Q2xlYW5l ZCB1cCB0aGUgY29kZTwvbGk+Cgk8L3VsPgoKCTxwPjxzdHJvbmc+VmVyc2lvbiAwLjc8L3N0 cm9uZz48L3A+CgoJPHVsPgoJCTxsaT5GaXhlZCBidWcgdGhhdCBhcHBlYXJzIGlmIHNpbmds ZSBhcnRpY2xlIGhhcyBubyBib2R5IG9yIGV4Y2VycHQuIE9ubHkgc2hvd24gaW4gZGVidWdn aW5nLjwvbGk+Cgk8L3VsPgoKCTxwPjxzdHJvbmc+VmVyc2lvbiAwLjY8L3N0cm9uZz48L3A+ CgoJPHVsPgoJCTxsaT5GaXhlZCBhIGNvZGUtcmVtb3ZpbmcgYnVnPC9saT4KCQk8bGk+Tm93 IHJlbW92ZXMgYWxsIGNvZGUgZnJvbSBhdXRvbWF0aWMgbWV0YWRlc2NyaXB0aW9uPC9saT4K CTwvdWw+CgoJPHA+PHN0cm9uZz5WZXJzaW9uIDAuNTwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJ PGxpPkZpbmlzaGVkIGJ1Zy10ZXN0aW5nPC9saT4KCTwvdWw+CgoJPHA+PHN0cm9uZz5WZXJz aW9uIDAuNDwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPkFkZCBtaXNzaW5nIHZhcmlhYmxl PC9saT4KCTwvdWw+CgoJPHA+PHN0cm9uZz5WZXJzaW9uIDAuMzwvc3Ryb25nPjwvcD4KCgk8 dWw+CgkJPGxpPkNvbXBpbmVkIHR3byBzZXBlcmF0ZWQgZnVuY3Rpb25zPC9saT4KCQk8bGk+ SW1wcm92ZWQgdGhlIGNvZGUgYnkgZml4aW5nIGdsb2JhbHM8L2xpPgoJPC91bD4KCgk8cD48 c3Ryb25nPlZlcnNpb24gMC4yPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+UmVwbGFjZWQg YXV0b21hdGljLW1lZGVzY3JpcHRpb24mIzgyMTc7cyBlbmRpbmcgcG9pbnRzIDxjb2RlPiZh bXA7IzgyMzA7PC9jb2RlPiB3aXRoIDxjb2RlPiZhbXA7aGVsbGlwOzwvY29kZT48L2xpPgoJ CTxsaT5BZGRlZCBuZXcgYXR0cmlidXRlOiA8Y29kZT5pbWFnZXRvb2xiYXI8L2NvZGU+PC9s aT4KCTwvdWw+CgoJPHA+PHN0cm9uZz5WZXJzaW9uIDAuMTwvc3Ryb25nPjwvcD4KCgk8dWw+ CgkJPGxpPkZpcnN0IHJlbGVhc2U8L2xpPgoJPC91bD4KCgk8aDMgaWQ9Imtub3duLWlzc3Vl cyI+S25vd24gaXNzdWVzPC9oMz4KCgk8cD5SZWRpcmVjdHMgbWlnaHQgbm90IGFsd2F5cyB3 b3JrIG9uIG9sZCBmYXN0LWNnaSAocmVxdWlyZXMgY2xhcmlmYXRpb24pLCBidXQgb24gb3Ro ZXIgc3lzdGVtcyBmaW5lLjwvcD4KCgk8aDMgaWQ9InRoYW5rcy10byI+VGhhbmtzIHRvPC9o Mz4KCgk8dWw+CgkJPGxpPkFsbCBmb2xrcyB0aGF0IHRoYW5rZWQgbWUgYnkgbWFraW5nIHRo aXMgcGx1Z2luIGF2YWlsYWJsZS48L2xpPgoJCTxsaT5yb2xvZ3JhYWYgYW5kIHBhdDY0IGZv ciBncmVhdCBpZGVhcyBvZiBrZXl3b3Jkcy48L2xpPgoJCTxsaT5mdWxzLCBzdHJhd2JlcnJ5 ZnVzaW9uLCBqaW1fMDEgYW5kIGlhbl9lcCBmb3IgcmVwb3J0aW5nIG1lIHNvbWUgYnVncy48 L2xpPgoJCTxsaT5tYW5pcXVpIGZvciB0aGUgaWRlYXMuPC9saT4KCQk8bGk+QW5kIGFsbCB0 aGUgb3RoZXIgZ3JlYXQgVGV4dHBhdHRlcm5pc3RzLjwvbGk+Cgk8L3VsPiI7czo0OiJjb2Rl IjtzOjUwNzI6IgkjIyMjIyMjIyMjIyMjIyMjIyMNCgkjDQoJIwlyYWhfbWV0YXMtcGx1Z2lu IGZvciBUZXh0cGF0dGVybg0KCSMJdmVyc2lvbiAxLjMNCgkjCWJ5IEp1a2thIFN2YWhuDQoJ IwlodHRwOi8vcmFoZm9ydW0uYml6DQoJIw0KCSMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KCWZ1 bmN0aW9uIHJhaF9tZXRhcygkYXR0cz1hcnJheSgpKSB7DQoJCWV4dHJhY3QobEF0dHMocmFo X21ldGFzX2F0dHMoKSwkYXR0cykpOw0KDQoJCWdsb2JhbCAkaXNfYXJ0aWNsZV9saXN0LCR0 aGlzYXJ0aWNsZTsNCgkJJG91dCA9IGFycmF5KCk7DQoJCQ0KCQkkYXV0aG9yID0gKCR1c2Vh dXRob3IgJiYgIWVtcHR5KCR0aGlzYXJ0aWNsZSkpID8gYXV0aG9yKGFycmF5KCkpIDogJGF1 dGhvcjsNCgkJJGRlc2NyaXB0aW9uID0gcmFoX21ldGFzX2Rlc2NyaXB0aW9uKCRhdHRzKTsN CgkJJGtleXdvcmRzID0gcmFoX21ldGFzX2tleXdvcmRzKCRhdHRzKTsNCgkJDQoJCWlmKCRp c19hcnRpY2xlX2xpc3QgPT0gdHJ1ZSkgew0KCQkJaWYoJHJlbHByZXYpICRwcmV2X3VybCA9 IG9sZGVyKGFycmF5KCksZmFsc2UpOw0KCQkJaWYoJHJlbG5leHQpICRuZXh0X3VybCA9IG5l d2VyKGFycmF5KCksZmFsc2UpOw0KCQl9IGVsc2Ugew0KCQkJaWYoJHJlbHByZXYpICRwcmV2 X3VybCA9IGxpbmtfdG9fcHJldihhcnJheSgpLGZhbHNlKTsNCgkJCWlmKCRyZWxuZXh0KSAk bmV4dF91cmwgPSBsaW5rX3RvX25leHQoYXJyYXkoKSxmYWxzZSk7DQoJCX0NCgkJDQoJCWlm KCRpbWFnZXRvb2xiYXIpDQoJCQkkb3V0W10gPSAnPG1ldGEgaHR0cC1lcXVpdj0iaW1hZ2V0 b29sYmFyIiBjb250ZW50PSInLiRpbWFnZXRvb2xiYXIuJyIgLz4nOw0KCQlpZigkbGFuZ3Vh Z2UpDQoJCQkkb3V0W10gPSAnPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC1sYW5ndWFnZSIg Y29udGVudD0iJy4kbGFuZ3VhZ2UuJyIgLz4nOw0KCQlpZigkY29weXJpZ2h0KSANCgkJCSRv dXRbXSA9ICc8bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IicuJGNvcHlyaWdodC4n IiAvPic7DQoJCWlmKCRyb2JvdHMpIA0KCQkJJG91dFtdID0gJzxtZXRhIG5hbWU9InJvYm90 cyIgY29udGVudD0iJy4kcm9ib3RzLiciIC8+JzsNCgkJaWYoJGF1dGhvcikNCgkJCSRvdXRb XSA9ICc8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IicuJGF1dGhvci4nIiAvPic7DQoJ CWlmKCRrZXl3b3JkcykgDQoJCQkkb3V0W10gPSAnPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNv bnRlbnQ9IicuJGtleXdvcmRzLiciIC8+JzsNCgkJaWYoJGRlc2NyaXB0aW9uKQ0KCQkJJG91 dFtdID0gJzxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSInLiRkZXNjcmlwdGlv bi4nIiAvPic7DQoJCWlmKCRwcmV2X3VybCkNCgkJCSRvdXRbXSA9ICc8bGluayByZWw9InBy ZXYiIGhyZWY9IicuJHByZXZfdXJsLiciIHRpdGxlPSInLiRyZWxwcmV2LiciIC8+JzsNCgkJ aWYoJG5leHRfdXJsKQ0KCQkJJG91dFtdID0gJzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iJy4k bmV4dF91cmwuJyIgdGl0bGU9IicuJHJlbG5leHQuJyIgLz4nOw0KCQkNCgkJaWYoJG1lc3N5 X3RvX2NsZWFuX3JlZGlyZWN0KSB7DQoJCQlpZihncHMoJ3MnKSkgDQoJCQkJaGVhZGVyKCdM b2NhdGlvbjogJy5wYWdlbGlua3VybChhcnJheSgncycgPT4gZ3BzKCdzJykpKSxUUlVFLCRy ZWRpcmVjdF9jb2RlKTsNCgkJCWlmKGlzX251bWVyaWMoZ3BzKCdpZCcpKSkgDQoJCQkJaGVh ZGVyKCdMb2NhdGlvbjogJy5wZXJtbGluayhhcnJheSgnaWQnID0+IGdwcygnaWQnKSkpLFRS VUUsJHJlZGlyZWN0X2NvZGUpOw0KCQl9DQoJCQ0KCQlyZXR1cm4gaW1wbG9kZShuLCRvdXQp Ow0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9tZXRhc19hdHRzKCkgew0KCQlyZXR1cm4gDQoJCQlh cnJheSgNCgkJCQknbGFuZ3VhZ2UnID0+ICcnLA0KCQkJCSdrZXl3b3JkcycgPT4gJycsDQoJ CQkJJ2tleXdvcmRzX2Zyb20nID0+ICdrZXl3b3JkcycsDQoJCQkJJ2tleXdvcmRzX3JlcGxh Y2VtZW50JyA9PiAnJywNCgkJCQkna2V5d29yZHNfbGltaXQnID0+ICcyNScsDQoJCQkJJ2Rl c2NyaXB0aW9uJyA9PiAnJywNCgkJCQknZGVzY3JpcHRpb25fZnJvbScgPT4gJ2JvZHksZXhj ZXJwdCcsDQoJCQkJJ2Rlc2NyaXB0aW9uX3RyYWlsJyA9PiAnJmhlbGxpcDsnLA0KCQkJCSdl c2NhcGUnID0+ICcnLA0KCQkJCSdtYXhjaGFycycgPT4gJzI1MCcsDQoJCQkJJ3dvcmRzJyA9 PiAnMjUnLA0KCQkJCSdkZXNjcmlwdGlvbl9yZXBsYWNlbWVudCcgPT4gJycsDQoJCQkJJ2F1 dGhvcicgPT4gJycsDQoJCQkJJ3VzZWF1dGhvcicgPT4gJycsDQoJCQkJJ3JvYm90cycgPT4g JycsDQoJCQkJJ2ltYWdldG9vbGJhcicgPT4gJycsDQoJCQkJJ2NvcHlyaWdodCcgPT4gJycs DQoJCQkJJ21lc3N5X3RvX2NsZWFuX3JlZGlyZWN0JyA9PiAnJywNCgkJCQkncmVkaXJlY3Rf Y29kZScgPT4gJzMwMScsDQoJCQkJJ3JlbG5leHQnID0+ICcnLA0KCQkJCSdyZWxwcmV2JyA9 PiAnJywNCgkJCQkncHJldl91cmwnID0+ICcnLA0KCQkJCSduZXh0X3VybCcgPT4gJycsDQoJ CQkpDQoJCTsNCgl9DQoNCglmdW5jdGlvbiByYWhfbWV0YXNfa2V5d29yZHMoJGF0dHMpIHsN CgkJZXh0cmFjdChsQXR0cyhyYWhfbWV0YXNfYXR0cygpLCRhdHRzKSk7DQoJCQ0KCQkkb3V0 ID0gYXJyYXkoKTsNCgkJJGNvdW50ID0gMDsNCgkJDQoJCSRjb250ZW50ID0gDQoJCQlyYWhf bWV0YXNfY29udGVudCgNCgkJCQkka2V5d29yZHNfZnJvbSwNCgkJCQkka2V5d29yZHNfcmVw bGFjZW1lbnQsDQoJCQkJJGtleXdvcmRzDQoJCQkpOw0KCQkNCgkJaWYoJGNvbnRlbnQpIHsN CgkJCSRjb250ZW50ID0gcmFoX21ldGFzX3N0cmlwKCRjb250ZW50KTsNCgkJCSRrZXl3b3Jk cyA9IGV4cGxvZGUoJywnLCRjb250ZW50KTsNCgkJCSRrZXl3b3JkcyA9IGFycmF5X3VuaXF1 ZSgka2V5d29yZHMpOw0KCQkJDQoJCQlmb3JlYWNoKCRrZXl3b3JkcyBhcyAka2V5d29yZCkg ew0KCQkJCSRrZXl3b3JkID0gdHJpbSgka2V5d29yZCk7DQoJCQkJaWYoIWVtcHR5KCRrZXl3 b3JkKSkgew0KCQkJCQkkY291bnQrKzsNCgkJCQkJJG91dFtdID0gJGtleXdvcmQ7DQoJCQkJ fQ0KCQkJCWlmKCRrZXl3b3Jkc19saW1pdCA8PSAkY291bnQpDQoJCQkJCXJldHVybiBpbXBs b2RlKCcsICcsJG91dCk7DQoJCQl9DQoJCQkNCgkJCSRjb250ZW50ID0gaW1wbG9kZSgnLCAn LCRvdXQpOw0KCQl9DQoJCXJldHVybiAkY29udGVudDsNCgl9DQoNCglmdW5jdGlvbiByYWhf bWV0YXNfZGVzY3JpcHRpb24oJGF0dHMpIHsNCgkJZXh0cmFjdChsQXR0cyhyYWhfbWV0YXNf YXR0cygpLCRhdHRzKSk7DQoNCgkJJGNvbnRlbnQgPSANCgkJCXJhaF9tZXRhc19jb250ZW50 KA0KCQkJCSRkZXNjcmlwdGlvbl9mcm9tLA0KCQkJCSRkZXNjcmlwdGlvbl9yZXBsYWNlbWVu dCwNCgkJCQkkZGVzY3JpcHRpb24NCgkJCSk7DQoJCQ0KCQlpZigkY29udGVudCkgew0KCQkJ aWYoJGVzY2FwZSkgDQoJCQkJJGNvbnRlbnQgPSByYWhfbWV0YXNfdGV4dGlsZSgkY29udGVu dCk7DQoJCQkkY29udGVudCA9IHJhaF9tZXRhc19zdHJpcCgkY29udGVudCk7DQoJCQkkd29y ZCA9IGFycmF5KCk7DQoJCQkkY291bnRfY2hhciA9IDA7DQoJCQkkY291bnRfd29yZCA9IDA7 DQoJCQkkdG9rZW5zID0gZXhwbG9kZSgnICcsJGNvbnRlbnQpOw0KCQkJZm9yZWFjaCgkdG9r ZW5zIGFzICR0b2tlbikgew0KCQkJCSR0b2tlbiA9IHRyaW0oJHRva2VuKTsNCgkJCQlpZihl bXB0eSgkdG9rZW4pKQ0KCQkJCQljb250aW51ZTsNCgkJCQlpZigkY291bnRfY2hhciA8PSAk bWF4Y2hhcnMgJiYgJGNvdW50X3dvcmQgPD0gJHdvcmRzKQ0KCQkJCQkkd29yZFtdID0gJHRv a2VuOw0KCQkJCWVsc2UgDQoJCQkJCXJldHVybiByYWhfbWV0YXNfdHJhaWwoJHdvcmQpLiRk ZXNjcmlwdGlvbl90cmFpbDsNCgkJCQkkY291bnRfY2hhciA9IHN0cmxlbigkdG9rZW4pKyRj b3VudF9jaGFyKzE7DQoJCQkJJGNvdW50X3dvcmQrKzsNCgkJCX0NCgkJCSRjb250ZW50ID0g aW1wbG9kZSgnICcsJHdvcmQpOw0KCQl9DQoJCXJldHVybiAkY29udGVudDsNCgl9DQoNCglm dW5jdGlvbiByYWhfbWV0YXNfY29udGVudCgkc3RyaW5nPScnLCRyZXBsYWNlbWVudD0nJywk ZGVmYXVsdD0nJykgew0KCQkNCgkJZ2xvYmFsICR0aGlzYXJ0aWNsZTsNCgkJDQoJCWlmKGVt cHR5KCR0aGlzYXJ0aWNsZSkpDQoJCQlyZXR1cm4gJGRlZmF1bHQ7DQoJCQ0KCQkkYXJyYXkg PSANCgkJCWV4cGxvZGUoJywnLCRzdHJpbmcpOw0KCQkNCgkJZm9yZWFjaCgkYXJyYXkgYXMg JGZpZWxkKSB7DQoJCQkkZmllbGQgPSB0cmltKCRmaWVsZCk7DQoJCQlpZighZW1wdHkoJGZp ZWxkKSAmJiBpc3NldCgkdGhpc2FydGljbGVbJGZpZWxkXSkgJiYgIWVtcHR5KCR0aGlzYXJ0 aWNsZVskZmllbGRdKSkNCgkJCQlyZXR1cm4gJHRoaXNhcnRpY2xlWyRmaWVsZF07DQoJCX0N CgkJDQoJCWlmKCRyZXBsYWNlbWVudCkNCgkJCXJldHVybiAkZGVmYXVsdDsNCgl9DQoNCglm dW5jdGlvbiByYWhfbWV0YXNfdHJhaWwoJG91dD1hcnJheSgpKSB7DQoJCSRjb250ZW50ID0g aW1wbG9kZSgnICcsJG91dCk7DQoJCWlmKA0KCQkJc3Vic3RyKCRjb250ZW50LCAtNywgNykg PT0gJyYjODIzMDsnDQoJCSkNCgkJCSRjb250ZW50ID0gc3Vic3RyKCRjb250ZW50LDAsLTcp Ow0KCQlyZXR1cm4gJGNvbnRlbnQ7DQoJfQ0KDQoJZnVuY3Rpb24gcmFoX21ldGFzX3N0cmlw KCRvdXQ9JycpIHsNCgkJcmV0dXJuIA0KCQkJdHJpbSgNCgkJCQlzdHJfcmVwbGFjZSgNCgkJ CQkJYXJyYXkoIlxuIiwiXHQiLCciJywnPicsJzwnKSwNCgkJCQkJYXJyYXkoJyAnLCcnLCcm cXVvdDsnLCcmZ3Q7JywnJmx0OycpLA0KCQkJCQlzdHJpcF90YWdzKA0KCQkJCQkJdHJpbSgN CgkJCQkJCQlwYXJzZSgkb3V0KQ0KCQkJCQkJKQ0KCQkJCQkpDQoJCQkJKQ0KCQkJKQ0KCQk7 DQoJfQ0KDQoJZnVuY3Rpb24gcmFoX21ldGFzX3RleHRpbGUoJG91dD0nJykgew0KCQlAaW5j bHVkZV9vbmNlKHR4cGF0aC4nL2xpYi9jbGFzc1RleHRpbGUucGhwJyk7DQoJCSR0ZXh0aWxl ID0gbmV3IFRleHRpbGUoKTsNCgkJcmV0dXJuICR0ZXh0aWxlLT5UZXh0aWxlVGhpcygkb3V0 KTsNCgl9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJmbGFncyI7czoxOiIwIjtzOjU6Im9y ZGVyIjtzOjE6IjUiO3M6MzoibWQ1IjtzOjMyOiIwMjAyYWI3ZDMxZjE3YjgzMDQ4MmUzZjY1 ZDYyMjk1MCI7fQ==