<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>autos</name>
	<version>1.4</version>
  <mincmsversion>1.9.2</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQoJCQkJPHA+VGhpcyBtb2R1bGUgbWFuYWdlcyBhbmQgZGlzcGxheXMgYW4gQXV0b21vYmlsZSBjYXRhbG9ndWUuPC9wPg0KCQkJPGJyLz48aDM+SG93IERvIEkgVXNlIEl0PzwvaDM+DQoJCQkJPGJyLz48aDQ+UGVybWlzc2lvbnM8L2g0Pg0KCQkJCQk8cD5NYWtlIHN1cmUgeW91ciB1c2VycyBoYXZlIHRoZSBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucy4gSWYgeW91IGFyZSBub3QgdXNpbmcgdGhlIGFjY2VzcyByZXN0cmljdGlvbiBvcHRpb24gKHNlZSBzZXR0aW5ncyksIHRoZSAiYXV0b3M6IE5vcm1hbCB1c2VyIiBwZXJtaXNzaW9uIHdpbGwgYmUgZW5vdWdoIHRvIHVzZSB0aGUgbW9kdWxlLiBJbiB0aGUgc2V0dGluZ3MgdGFiLCB5b3UgY2FuIGNob29zZSB3aGljaCB0YWJzIHdpbGwgYmUgZGlzcGxheWVkIGZvciB0aGUgbm9ybWFsIHVzZXIuIE9ubHkgdGhlIGFkbWluaXN0cmF0b3IgYW5kIHVzZXJzIHdpdGggdGhlICJhdXRvczogQWR2YW5jZWQiIHBlcm1pc3Npb24gd2lsbCBoYXZlIGFjY2VzcyB0byBzZXR0aW5ncyB0YWIuPGJyLz4NCgkJCQkJSWYgeW91IHdpc2ggdG8gZGVmaW5lIGxldmVsLXNwZWNpZmljIHBlcm1pc3Npb25zLCBhY3RpdmF0ZSB0aGUgYWNjZXNzIHJlc3RyaWN0aW9uIG9wdGlvbiBpbiB0aGUgc2V0dGluZ3MgdGFiIGFuZCBnaXZlIHRoZSAiYXV0b3M6IE1hbmFnZSBuYW1lX29mX2xldmVsIiBwZXJtaXNzaW9uIHRvIHRoZSBhcHByb3ByaWF0ZSB1c2Vycy48L3A+DQoJCQkJPGJyLz48aDQ+QmFzaWNzPC9oND4NCgkJCQkJPHA+VG8gY2FsbCB0aGUgbW9kdWxlLCBzaW1wbHkgdXNlIHRoZSBmb2xsb3dpbmcgdGFnOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXV0b3MifTwvcD4NCgkJCQkJPHA+SW4gdGhpcyBjYXNlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IGxldmVsIGVsZW1lbnRzICh2ZWhpY2xlKSB3aWxsIGJlIGRpc3BsYXllZC4gVG8gc2VsZWN0IGEgbGV2ZWwsIHVzZSB0aGUgIndoYXQiIHBhcmFtZXRlcjo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9ImF1dG9zIiB3aGF0PSJ2ZWhpY2xlIn08YnIvPg0KCQkJCQk8aT5UaGUgcG9zc2libGUgdmFsdWVzIGZvciB0aGUgIndoYXQiIHBhcmFtZXRlciBhcmUgOiB2ZWhpY2xldHlwZSwgdmVoaWNsZTwvaT48L3A+DQoJCQkJCTxwPllvdSBtYXkgYWxzbyBhc2sgZm9yIGVsZW1lbnRzIHdobyBiZWxvbmcgdG8gYSBzcGVjaWZpYyBwYXJlbnQ6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPSJhdXRvcyIgcGFyZW50PSJhbGlhc19vZl9wYXJlbnQifTwvcD4NCgkJCQkJPHA+WW91IG1heSBmaW5hbGx5IGFzayBmb3IgYSBzcGVjaWZpYyBlbGVtZW50Ojxicj4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPSJhdXRvcyIgYWxpYXM9ImFsaWFzX29mX2l0ZW0ifTwvcD4NCgkJCQk8YnIvPjxoND5TZXBhcmF0aW5nIGludG8gcGFnZXM8L2g0Pg0KCQkJCQk8cD5Zb3UgbWF5IGxpbWl0IHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gYmUgc2hvd24gb24gb25lIHBhZ2U6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPSJhdXRvcyIgbmJwZXJwYWdlPSI1In08YnIvPg0KCQkJCQlJbiB0aGUgdGVtcGxhdGUsIHlvdSBjYW4gYnVpbGQgdGhlIHBhZ2UgbWVudSB1c2luZyB0aGUgZm9sbG93aW5nIHRhZ3M6PGJyLz4NCgkJCQkJeyRwYWdlX3Nob3dpbmd9LCB7JHBhZ2VfdG90YWxpdGVtc30sIHskcGFnZV9wYWdlbnVtYmVyc30sIHskcGFnZV9uZXh0fSwgeyRwYWdlX3ByZXZpb3VzfTwvcD4NCgkJCQk8YnIvPjxoND5Vc2luZyBxdWVyaWVzPC9oND4NCgkJCQkJPHA+VG8gZ2V0IGEgbGlzdCBvZiBpdGVtIHRoYXQgbWVldCBzcGVjaWZpYyBjcml0ZXJpYSwgeW91IGNhbiBjcmVhdGUgYSBxdWVyeSB1c2luZyB0aGUgcXVlcmllcyB0YWIgb2YgdGhlIGFkbWluIHBhbmVsLCBhbmQgY2FsbCB0aGVtIHVzaW5nIHRoZSAicXVlcnkiIHBhcmFtZXRlcjo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9ImF1dG9zIiBxdWVyeT0iNSJ9PC9wPg0KCQkJCQk8cD48aT5JZiB0aGUgb3B0aW9uIHRvIGFsbG93IG1hbnVlbCBzcWwgcXVlcmllcyBpcyBlbmFibGVkPC9pPiAoc2VlICJTZXR0aW5ncyIgdGFiKSwgeW91IG1heSBhbHNvIHByb3ZpZGUgdGhlIHNxbCBxdWVyeSBkaXJlY3RseSB3aXRoIHRoZSBxdWVyeSBwYXJhbWV0ZXIuIEZvciBleGFtcGxlOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXV0b3MiIHdoYXQ9InZlaGljbGUiIHF1ZXJ5PSJBLmRhdGVfbW9kaWZpZWQgPiAnMjAwOS0wMy0xNScgQU5EIEEuYWN0aXZlID0gMSJ9PGJyLz4NCgkJCQkJVGhlIHF1ZXJ5IHBhcmFtZXRlciBjYW4gb25seSBob2xkIHRoZSBXSEVSRSBjbGF1c2Ugb2YgdGhlIHF1ZXJ5LCBhbmQgc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSBXSEVSRSBjb21tYW5kIGl0c2VsZi4gVG8gYXZvaWQgcHJvYmxlbXMsIHRoZSBwcmVmaXggIkEuIiBzaG91bGQgYmUgdXNlZCBiZWZvcmUgZmllbGQgbmFtZXMgKHdoZXJlIGFwcGxpY2FibGUsIHRoZSAiQi4iIHByZWZpeCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNyaXRlcmlhIG9uIHRoZSBwYXJlbnQncyBmaWVsZHMpLjxici8+DQoJCQkJCUFsdGhvdWdoIHRoZSBhYnN0cmFjdGlvbiBsYXllciBpcyBub3QgZWFzaWx5IHByb25lIHRvIGluamVjdGlvbnMsIHJlbWVtYmVyIHRoYXQgYWN0aXZhdGluZyB0aGlzIG9wdGlvbiBtZWFucyBnaXZpbmcgYSBzcWwgb3BlbmluZyB3aXRoaW4gdGhlIHRlbXBsYXRlcyBhbmQgYmUgY2FyZWZ1bC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGxpbmsgYWN0aW9uPC9oND4NCgkJCQkJPHA+WW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj4ibGluayI8L2I+IHRvIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIGRlZmF1bHQgYWN0aW9uLCB1c2luZyB0aGUgc2FtZSBwYXJhbWV0ZXJzOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXV0b3MiIGFjdGlvbj0ibGluayIgd2hhdD0idmVoaWNsZSIgcmFuZG9tPSIxIn08YnIvPg0KCQkJCQl3b3VsZCBjcmVhdGUgYSBsaW5rIHRvIGEgcmFuZG9tIGVsZW1lbnQgb2YgdGhpcyBsZXZlbC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIHNpdGVtYXAgYWN0aW9uPC9oND4NCgkJCQkJPHA+SWYgeW91ciBtb2R1bGUgaXMgbm90IHNoYXJpbmcgY2hpbGRyZW4sIHlvdSBtYXkgdXNlIHRoZSBhY3Rpb24gPGI+InNpdGVtYXAiPC9iPiB0byBjcmVhdGUgYSBtb2R1bGUgc2l0ZW1hcDo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9ImF1dG9zIiBhY3Rpb249InNpdGVtYXAifTxici8+DQoJCQkJCVlvdSBjYW4gc2VsZWN0IHRoZSBsZXZlbHMgdXNpbmcgdGhlICJ3aGF0IiBwYXJhbWV0ZXIsIGFuZCBtYXkgc2VsZWN0IG1vcmUgdGhhbiBvbmUgdXNpbmcgInwiIDogd2hhdD0ibGV2ZWwxfGxldmVsMiIuPGJyLz4NCgkJCQkJT3RoZXIgYXZhaWxhYmxlIHBhcmFtZXRlcnMgZm9yIHRoaXMgYWN0aW9uIGFyZSAiZGV0YWlscGFnZSIgYW5kICJpbmxpbmUiLjxici8+DQoJCQkJCVRvIGNyZWF0ZSBhIGdvb2dsZSBzaXRlbWFwLCBzZWUgdGhlIDxhIGhyZWY9Ii4uL21vZHVsZXMvYXV0b3MvZG9jL2ZhcS5odG1sI3ExNiIgdGFyZ2V0PSJfYmxhbmsiPkZBUTwvYT4uPC9wPg0KCQkJCTxici8+PGg0PlRoZSBzZWFyY2ggYWN0aW9uPC9oND4NCgkJCQkJPHA+WW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj4ic2VhcmNoIjwvYj4gdG8gZGlzcGxheSBhIHNlYXJjaCBmb3JtOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXV0b3MiIGFjdGlvbj0ic2VhcmNoIn08YnIvPg0KCQkJCQlVc2UgdGhlICJzZWFyY2htb2RlIiBwYXJhbWV0ZXIgdG8gc3dpdGNoIGJldHdlZW4gYWR2YW5jZWQgKGRlZmF1bHQpIGFuZCBzaW1wbGUgbW9kZS4gWW91IG1heSBzcGVjaWZ5IHRoZSBsZXZlbCBpbiB3aGljaCB0byBzZWFyY2ggdXNpbmcgdGhlICJ3aGF0IiBwYXJhbWV0ZXIuIFlvdSBjYW5ub3QgdXNlIHRoZSBhZHZhbmNlZCBzZWFyY2ggbW9kZSBpbiBhbGwgbGV2ZWxzIGF0IHRoZSBzYW1lIHRpbWUuPGJyLz4NCgkJCQkJVGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGNhbiBiZSB1c2VkIHdpdGggdGhlIHNlYXJjaCBhY3Rpb246IHdoYXQsIGxpbWl0LCBuYnBlcnBhZ2UsIG9yZGVyYnksIGRldGFpbHBhZ2UsIGxpc3R0ZW1wbGF0ZSwgaW5saW5lLCBzZWFyY2htb2RlLjxici8+DQoJCQkJCVNlZSBhdXRvcy90ZW1wbGF0ZXMvc2VhcmNoLnRwbCB0byBtb2RpZnkgdGhlIHNlYXJjaCBmb3JtLjwvcD48YnIvPg0KCQkJCTxwPkZvciBtb3JlIGhlbHAsIHlvdSBtYXkgdGFrZSBhIGxvb2sgYXQgdGhlIDxhIGhyZWY9Ii4uL21vZHVsZXMvYXV0b3MvZG9jL2ZhcS5odG1sIiB0YXJnZXQ9Il9ibGFuayI+RkFRPC9hPi48L3A+DQoJCQk8YnIvPjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KCQkJCTxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBDVExNb2R1bGVNYWtlciwgYW5kIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuPC9wPjxici8+PGJyLz48aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb249ImRlZmF1bHQiIC0gUG9zc2libGUgYWN0aW9uczogImxpbmsiLCAic2VhcmNoIiwgImJyZWFkY3J1bWJzIiwgImRlZmF1bHQiLCAic2l0ZW1hcCIuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiB3aGF0PSIiIC0gQWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBsZXZlbCB5b3Ugd2lzaCB0byBkaXNwbGF5LiBQb3NzaWJsZSB2YWx1ZXMgYXJlIDogPGk+dmVoaWNsZXR5cGUsIHZlaGljbGU8L2k+PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhbGlhcz0iIiAtIEFsaWFzIG9mIHRoZSBpdGVtIHlvdSB3aXNoIHRvIGRpc3BsYXkuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBzaG93ZGVmYXVsdD0iIiAtIFNldCB0byAidHJ1ZSIgaWYgeW91IHdpc2ggdG8gZGlzcGxheSB0aGUgZGVmYXVsdCBlbGVtZW50LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gcGFyZW50PSIiIC0gSWYgeW91IHdpc2ggdG8gbGltaXQgdGhlIGRpc3BsYXllZCBlbGVtZW50cyB0byB0aG9zZSB3aG8gYmVsb25nIHRvIGEgc3BlY2lmaWMgcGFyZW50LCBlbnRlciB0aGUgcGFyZW50IGFsaWFzIGhlcmUuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsaW1pdD0iMCIgLSBMaW1pdCB0aGUgbnVtYmVyIG9mIGl0ZW0gcmV0dXJuZWQgYnkgdGhlIHF1ZXJ5ICgwID0gbm8gbGltaXQpPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBuYnBlcnBhZ2U9IjAiIC0gU2V0IHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIG9uIGVhY2ggcGFnZS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG9yZGVyYnk9IjAiIC0gWW91IGNhbiBzZXQgdG8gIm1vZGlmaWVkIiwgImNyZWF0ZWQiIG9yIHRoZSBuYW1lIG9mIGEgZmllbGQgdG8gb3JkZXIgaXRlbXMgaW4gdGhpcyB3YXkuIEFueSBvdGhlciB2YWx1ZSB3aWxsIG9yZGVyIHdpdGggdGhlIGl0ZW0gb3JkZXIuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkZXRhaWxwYWdlPSIiIC0gU3BlY2lmeSB0aGUgYWxpYXMgb2YgdGhlIHBhZ2UgaW4gd2hpY2ggbGlua3MgdG8gY2hpbGQgZWxlbWVudHMgc2hvdWxkIGJlIHNlbnQgKGlmIG5vbmUgaXMgc3BlY2lmaWVkLCBjdXJyZW50IHBhZ2UgaXMgdXNlZCk8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHJhbmRvbT0iMCIgLSBTZXQgdG8gYSBudW1iZXIgdG8gc2hvdyBhIG51bWJlciBvZiByYW5kb20gZWxlbWVudHMgZnJvbSB5b3VyIHF1ZXJ5LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGlzdHRlbXBsYXRlPSIiIC0gU3BlY2lmeSB0aGUgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlIGZvciB0aGUgbGlzdCB2aWV3LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZmluYWx0ZW1wbGF0ZT0iIiAtIFNwZWNpZnkgdGhlIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSBmb3IgdGhlIGRldGFpbCB2aWV3IG9mIHRoZSBmaW5hbCBsZXZlbC48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGZvcmNlbGlzdD0iMCIgLSBTZXQgdG8gMSBpZiB5b3Ugd2lzaCB0byBkaXNwbGF5IGEgbGlzdCB2aWV3IGV2ZW4gd2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBlbGVtZW50LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gaW5saW5lPSIwIiAtIE1ha2VzIHRoZSBsaW5rcyBpbmxpbmUuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBzZWFyY2htb2RlPSJhZHZhbmNlZCIgLSBGb3IgdXNlIHdpdGggdGhlICJzZWFyY2giIGFjdGlvbi4gU2V0IHRvICJzaW1wbGUiIHRvIHNlYXJjaCBpbiBhbGwgdGV4dCBmaWVsZHMsIGFuZCAiYWR2YW5jZWQiIHRvIHNlYXJjaCBpbiBzcGVjaWZpYyBmaWVsZHMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBxdWVyeT0iMCIgLSBGb3Igb3B0aW9uYWwgdXNlIHdpdGggdGhlICJkZWZhdWx0IiBhY3Rpb24uIFNwZWNpZmllcyB0aGUgaWQgb2YgdGhlIHF1ZXJ5IHRvIHVzZS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRvYWN0aW9uPSIiIC0gRm9yIHVzZSB3aXRoIHRoZSAibGluayIgYWN0aW9uLiBTZXRzIHRoZSBhY3Rpb24gdG8gd2hpY2ggdGhlIGxpbmsgc2hvdWxkIHJlZGlyZWN0LjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBNYXJ0aW4gJmx0O213Y291cnRlbmF5QHlhaG9vLmNvbSZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAxLjQ8YnIgLz4=]]></about>
	<description><![CDATA[Automobile Listing for cars, trucks, bikes,parts]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.addfiles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKaWYoIWlzc2V0KCRfRklMRVMpIHx8ICFpc3NldCgkcGFyYW1zWydmaWVsZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sncHJlZml4J10pIHx8ICFpc3NldCgkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pKXsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCkpOwp9CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKCiRyZXNpemUgPSBpc3NldCgkcGFyYW1zWydzaXplJ10pPyRwYXJhbXNbJ3NpemUnXTpmYWxzZTsKJHRodW1ic2l6ZSA9IGlzc2V0KCRwYXJhbXNbJ3RodW1iJ10pPyRwYXJhbXNbJ3RodW1iJ106ZmFsc2U7CiRpdGVtaWQgPSAkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddOwoKJGN1cmRpciA9IChpc3NldCgkcGFyYW1zWydjdXJkaXInXSkgPyAkcGFyYW1zWydjdXJkaXInXS4nLycgOiAnJyk7CiRzdGFydGRpciA9IChpc3NldCgkcGFyYW1zWydzdGFydGRpciddKSA/ICRwYXJhbXNbJ3N0YXJ0ZGlyJ10uJy8nIDogJycpOwokZGVzdGluYXRpb24gPSBzdHJfcmVwbGFjZSgnLy8nLCcvJywkc3RhcnRkaXIuJGN1cmRpcik7CgokYWxsb3dlZGV4dCA9IGZhbHNlOwppZihpc3NldCgkcGFyYW1zWydleHRlbnNpb25zJ10pICYmICRwYXJhbXNbJ2V4dGVuc2lvbnMnXSAmJiAkcGFyYW1zWydleHRlbnNpb25zJ10gIT0gIiIpCSRhbGxvd2VkZXh0ID0gZXhwbG9kZSgiLCIsJHBhcmFtc1snZXh0ZW5zaW9ucyddKTsKCiRlcnJvcnMgPSAiIjsKJHppcGZpZWxkID0gJGlkLid1cGxvYWR6aXBmaWxlJzsKCmlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHppcGZpbGUiXSkpewoJCgkkZGlyID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uc3RyX3JlcGxhY2UoIi8vIiwiLyIsIi8iLiRkZXN0aW5hdGlvbi4iLyIpOwoJaWYoJHJlc2l6ZSAmJiAhaXNfYXJyYXkoJHJlc2l6ZSkpCSRyZXNpemUgPSBleHBsb2RlKCJ4IiwkcmVzaXplKTsKCQoJaWYoaXNzZXQoJF9GSUxFU1skemlwZmllbGRdKSAmJiBpc3NldCgkX0ZJTEVTWyR6aXBmaWVsZF1bJ25hbWUnXSkgJiYgJF9GSUxFU1skemlwZmllbGRdWyduYW1lJ10gIT0gIiIpewoJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN0cnJjaHIoJF9GSUxFU1skemlwZmllbGRdWyduYW1lJ10sICIuIikpOwoJCSR6YSA9IG5ldyBaaXBBcmNoaXZlKCk7CgkJaWYoc3RydG9sb3dlcigkZXh0ZW5zaW9uKSA9PSAnLnppcCcgJiYgJHphLT5vcGVuKCRfRklMRVNbJHppcGZpZWxkXVsndG1wX25hbWUnXSkpIHsKCQkJJGkgPSAwOwoJCQl3aGlsZSgkaSA8ICR6YS0+bnVtRmlsZXMpIHsKCQkJCSRmaWxlc3RhdHMgPSAkemEtPnN0YXRJbmRleCgkaSk7CgkJCQkkZmlsZW5hbWUgPSAkZmlsZXN0YXRzWyduYW1lJ107CgkJCQkkZXh0ZW5zaW9uID0gc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZW5hbWUsICIuIiksMSkpOwoJCQkJaWYoICRleHRlbnNpb24gIT0gIiIgJiYgKCAhJGFsbG93ZWRleHQgfHwgaW5fYXJyYXkoJGV4dGVuc2lvbiwgJGFsbG93ZWRleHQpICkgKXsKCQkJCQkkZmlsZW5hbWUgPSAkdGhpcy0+dXBsb2FkX2NoZWNrZmlsZW5hbWUoJGZpbGVuYW1lLCRkaXIpOwoJCQkJCSRmcCA9IGZvcGVuKCRkaXIuJGZpbGVuYW1lLCAidyIpOwoJCQkJCWlmKGZ3cml0ZSgkZnAsJHphLT5nZXRGcm9tSW5kZXgoJGkpKSl7CgkJCQkJCWZjbG9zZSgkZnApOwoJCQkJCQljaG1vZCgkZGlyLiRmaWxlbmFtZSwgMDc3Nyk7CgkJCQkJCWlmKCRyZXNpemUgJiYgY291bnQoJHJlc2l6ZSkgPT0gMikgJHRoaXMtPnBsUmVzaXplKCRkaXIuJGZpbGVuYW1lLCAnJywgJHJlc2l6ZVswXSwgJHJlc2l6ZVsxXSx0cnVlLGlzc2V0KCRwYXJhbXNbJ2Nyb3AnXSkpOwoJCQkJCQkkdGhpcy0+cGxBc3NpZ25GaWxlKHN0cl9yZXBsYWNlKCIvLyIsIi8iLCIvIi4kZGVzdGluYXRpb24uIi8iLiRmaWxlbmFtZSksICRwYXJhbXNbJ3RhYmxlbmFtZSddLCAkaXRlbWlkLCAkcGFyYW1zWydmaWVsZCddLCAkdGh1bWJzaXplLCBpc3NldCgkcGFyYW1zWydjcm9wdGh1bWInXSkpOwoJCQkJCX1lbHNlewoJCQkJCQlmY2xvc2UoJGZwKTsKCQkJCQkJJGVycm9ycyA9ICc8bGk+Jy4kZmlsZW5hbWUuJzogJy5sYW5nKCdmaWxlbm90dXBsb2FkZWQnKS4nPC9saT4nOwoJCQkJCX0KCQkJCX1lbHNlewoJCQkJCSRlcnJvcnMgPSAnPGxpPicuJGZpbGVuYW1lLic6ICcuJHRoaXMtPkxhbmcoJ2Vycm9yX3dyb25nZmlsZXR5cGUnKS4nPC9saT4nOwoJCQkJfQoJCQkJJGkrKzsKCQkJfQoJCX1lbHNlewoJCQkkZXJyb3JzID0gJzxsaT4nLiRfRklMRVNbJHppcGZpZWxkXVsnbmFtZSddLic6ICcuJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRhcmNoaXZlJykuJzwvbGk+JzsKCQl9Cgl9CgkKfWVsc2V7CgkKCWZvcmVhY2goJF9GSUxFUyBhcyAkZmllbGRuYW1lPT4kZmlsZSl7CgkJaWYoJGZpZWxkbmFtZSAhPSAkemlwZmllbGQgJiYgaXNzZXQoJGZpbGVbJ25hbWUnXSkgJiYgJGZpbGVbJ25hbWUnXSAhPSAiIil7CgkJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlWyduYW1lJ10sICIuIiksMSkpOwoJCQlpZiggISRhbGxvd2VkZXh0IHx8IGluX2FycmF5KCRleHRlbnNpb24sICRhbGxvd2VkZXh0KSApewoJCQkJaWYoICRmaWxlcGF0aCA9ICR0aGlzLT5wbFVwbG9hZEZpbGUoJGZpbGUsICRkZXN0aW5hdGlvbiwgJHJlc2l6ZSwgaXNzZXQoJHBhcmFtc1snY3JvcCddKSkgKXsKCQkJCQkkdGhpcy0+cGxBc3NpZ25GaWxlKCRmaWxlcGF0aCwgJHBhcmFtc1sndGFibGVuYW1lJ10sICRpdGVtaWQsICRwYXJhbXNbJ2ZpZWxkJ10sICR0aHVtYnNpemUsIGlzc2V0KCRwYXJhbXNbJ2Nyb3B0aHVtYiddKSk7CgkJCQl9ZWxzZXsKCQkJCQkkZXJyb3JzIC49ICI8bGk+Ii4kZmlsZVsnbmFtZSddLic6ICcubGFuZygnZmlsZW5vdHVwbG9hZGVkJykuIjwvbGk+IjsKCQkJCX0KCQkJfWVsc2V7CgkJCQkkZXJyb3JzID0gJzxsaT4nLiRmaWxlWyduYW1lJ10uJzogJy4kdGhpcy0+TGFuZygnZXJyb3Jfd3JvbmdmaWxldHlwZScpLic8L2xpPic7CgkJCX0KCQl9Cgl9CgkKfQoKJG5ld3BhcmFtcyA9IGFycmF5KCAkcGFyYW1zWydwcmVmaXgnXS4naWQnID0+ICRpdGVtaWQgKTsKaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgJG5ld3BhcmFtc1snYWN0aXZlX3RhYiddID0gJHBhcmFtc1snYWN0aXZlX3RhYiddOwppZigkZXJyb3JzICE9ICIiKQkkbmV3cGFyYW1zWydtb2R1bGVfbWVzc2FnZSddID0gJzx1bD4nLiRlcnJvcnMuJzwvdWw+JzsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXQnLiRwYXJhbXNbJ3ByZWZpeCddLCAkcmV0dXJuaWQsICRuZXdwYXJhbXMgKTsJCQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.adminquery.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmVjaG8gIjxoMj4iLiR0aGlzLT5MYW5nKCJjcmVhdGVxdWVyeSIpLiI8L2gyPjxici8+IjsKCmlmKCFpc3NldCgkcGFyYW1zWyJ3aGF0Il0pKXsKCQoJJGxldmVsYXJyYXkgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsKCSRsZXZlbG9wdGlvbnMgPSBhcnJheSgpOwoJZm9yZWFjaCgkbGV2ZWxhcnJheSBhcyAkb25lKQkkbGV2ZWxvcHRpb25zWyRvbmVdID0gJG9uZTsKCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoInByb21wdF9xdWVyeSIpOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImFkbWlucXVlcnkiLCAkcmV0dXJuaWQpOwoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIndoYXQiLCRsZXZlbG9wdGlvbnMpOwoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCQp9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHF1ZXJ5Il0pKXsKCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCSR3aGF0ID0gJHBhcmFtc1sid2hhdCJdOwoJJG11bHRpcGxlbGlzdGZpZWxkcyA9IGFycmF5KCJ2ZWhpY2xlX2ZlYXR1cmVzIik7CgoKCS8vIHdlIHBhcnNlIHRoZSBrZXl3b3JkcwoJJHdoZXJlID0gJHRoaXMtPmdldFdoZXJlRnJvbVBhcmFtcygkcGFyYW1zKTsKCQoJbGlzdCgkd2hlcmVjbGF1c2UsICR3aGVyZXZhbHVlcykgPSAkdGhpcy0+YnVpbGRXaGVyZSgkd2hlcmUsICR3aGF0KTsKCSRjdXN0b21vcmRlciA9IChpc3NldCgkcGFyYW1zWyJvcmRlciJdKSAmJiAkcGFyYW1zWyJvcmRlciJdICE9ICIiKT8kcGFyYW1zWyJvcmRlciJdLiIgIi4kcGFyYW1zWyJvcmRlcl90eXBlIl06IiI7CgkKCSR0bXBpZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NzYXZlZF9xdWVyaWVzX3NlcSIpOwoJJG5hbWUgPSBpc3NldCgkcGFyYW1zWyJxdWVyeW5hbWUiXSk/YWRkc2xhc2hlcygkcGFyYW1zWyJxdWVyeW5hbWUiXSk6IiI7CgkKCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3NhdmVkX3F1ZXJpZXMgU0VUIGlkPT8sIG5hbWU9Pywgd2hhdD0/LCB3aGVyZWNsYXVzZT0/LCB3aGVyZXZhbHVlcz0/LCBxdWVyeW9yZGVyPT8iOwoJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRtcGlkLCAkbmFtZSwgJHdoYXQsICR3aGVyZWNsYXVzZSwgc2VyaWFsaXplKCR3aGVyZXZhbHVlcyksICRjdXN0b21vcmRlcikpOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4icXVlcmllcyIsIm1vZHVsZV9tZXNzYWdlIj0+JHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSkpOwoKfWVsc2V7Cgkkd2hhdCA9ICRwYXJhbXNbIndoYXQiXTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJhZG1pbnF1ZXJ5IiwgJHJldHVybmlkKTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIndoYXQiLCAkd2hhdCk7CgllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJxdWVyeW5hbWUiKS4iOiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJxdWVyeW5hbWUiLCIiLDMwKS4iPC9wPiI7CgkkdGhpcy0+Y3JlYXRlRmllbGRGb3JtKCR3aGF0LCAkaWQsIGZhbHNlKTsKCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdHF1ZXJ5IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCQkJCn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.assignfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCmlmKCFpc3NldCgkcGFyYW1zWydmaWVsZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sncHJlZml4J10pIHx8ICFpc3NldCgkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pKQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgpKTsNCg0KJGZpbGVwYXRoID0gaXNzZXQoJHBhcmFtc1snZmlsZXBhdGgnXSk/JHBhcmFtc1snZmlsZXBhdGgnXTonJzsNCmlmKCRmaWxlcGF0aCAhPSAnJyAmJiBpc3NldCgkcGFyYW1zWydzdGFydGRpciddKSAmJiAkcGFyYW1zWydzdGFydGRpciddICE9ICcvJykJJGZpbGVwYXRoID0gJHBhcmFtc1snc3RhcnRkaXInXS4nLycuJGZpbGVwYXRoOw0KJGZpbGVwYXRoID0gc3RyX3JlcGxhY2UoJy8vJywnLycsJGZpbGVwYXRoKTsNCiRpdGVtaWQgPSAkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddOw0KJHRodW1ic2l6ZSA9IGlzc2V0KCRwYXJhbXNbJ3RodW1iJ10pPyRwYXJhbXNbJ3RodW1iJ106ZmFsc2U7DQoNCiR0aGlzLT5wbEFzc2lnbkZpbGUoJGZpbGVwYXRoLCAkcGFyYW1zWyd0YWJsZW5hbWUnXSwgJGl0ZW1pZCwgJHBhcmFtc1snZmllbGQnXSwgJHRodW1ic2l6ZSwgaXNzZXQoJHBhcmFtc1snY3JvcHRodW1iJ10pKTsNCg0KJG5ld3BhcmFtcyA9IGFycmF5KCAkcGFyYW1zWydwcmVmaXgnXS4naWQnID0+ICRpdGVtaWQgKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpICRuZXdwYXJhbXNbJ2FjdGl2ZV90YWInXSA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdlZGl0Jy4kcGFyYW1zWydwcmVmaXgnXSwgJHJldHVybmlkLCAkbmV3cGFyYW1zICk7CQkNCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.browsefiles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMjIGFjdGlvbi5Ccm93c2VmaWxlcy5waHANCiMjIEJ5OiBQaWVycmUtTHVjIEdlcm1haW4NCiMjIFBBUkFNUzoNCiMjICRwYXJhbXNbJ21vZGUnXSA6IGltYWdlcyB8fCBmaWxlcw0KIyMgJHBhcmFtc1snZXh0ZW5zaW9ucyddIDogYXJyYXkgb2Ygc2hvd24gZmlsZSBleHRlbnNpb25zDQojIyAkcGFyYW1zWydzdGFydGRpciddIDogdGhlIGZvbGRlciB0byBzdGFydCBhdCAoIHVwbG9hZHMvIFtzdGFydGRpcl0gLyApDQojIyAkcGFyYW1zWyd0YWJsZW5hbWUnXSA6IHRoZSBuYW1lIG9mIHRoZSBkYiB0YWJsZQ0KIyMgJHBhcmFtc1sncHJlZml4J10gOiB0aGUgdmFyaWFibGUgcHJlZml4DQojIyAkcGFyYW1zW3ByZWZpeC4naWQnXSA6IHRoZSBpZCBvZiB0aGUgaXRlbSB0byB3aGljaCB0aGUgaW1hZ2Ugd2lsbCBiZSBhc3NpZ25lZCAodmFsdWUgaXMgbm90IHVzZWQsIGJ1dCByZXR1cm5lZCBhdCB0aGUgZW5kKQ0KIyMgJHBhcmFtc1snZmllbGQnXSA6IG9ubHkgYSBwYXNzLXRocm91Z2ggdG8gdGhlIGFzc2lnbiBhY3Rpb24NCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgUEFSQU1TIEFORCBDT05GSUdTLi4uDQojDQppZiAoIWlzc2V0KCRwYXJhbXNbJ21vZGUnXSkgfHwgIWlzc2V0KCRwYXJhbXNbJ2ZpZWxkJ10pIHx8ICFpc3NldCgkcGFyYW1zWydwcmVmaXgnXSkgfHwgIWlzc2V0KCRwYXJhbXNbJ2ZpZWxkJ10pIHx8ICFpc3NldCgkcGFyYW1zWyd0YWJsZW5hbWUnXSkgKSBleGl0Ow0KDQokaGlkZXRodW1icyA9IHRydWU7IC8vIHdpbGwgaGlkZSBJbWFnZSBNYW5hZ2VyIHRodW1ibmFpbHMsIGJ1dCBhbHNvIGhpZGUgYWxsIGZpbGVzIHRoYXQgc3RhcnQgd2l0aCAidGh1bWJfIi4uLg0KJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoNCiMjIGRlZmluaW5nIHRoZSBhbGxvd2VkIGV4dGVuc2lvbnM6DQokbWVkaWFleHQgPSBhcnJheSgnc3dmJywnZmx2JywnanBlZycsJ2pwZycsJ3BuZycsJ2dpZicpOw0KJGRvY2V4dCA9IGFycmF5KCdkb2MnLCdkb2N4JywneGxzJywneGxzeCcsJ3J0ZicsJ3R4dCcsJ3BkZicpOw0KDQppZigkcGFyYW1zWydtb2RlJ10gPT0gJ2ltYWdlcycgfHwgJHBhcmFtc1snbW9kZSddID09ICdpbWFnZScpIHsNCgkkbW9kZSA9ICdpbWFnZSc7DQoJJGFsbG93ZWRleHQgPSAkbWVkaWFleHQ7DQp9ZWxzZXsNCgkkbW9kZSA9ICdvdGhlcic7DQoJJGFsbG93ZWRleHQgPSBhcnJheV9tZXJnZSgkbWVkaWFleHQsJGRvY2V4dCk7DQp9DQppZihpc3NldCgkcGFyYW1zWydleHRlbnNpb25zJ10pICYmICRwYXJhbXNbJ2V4dGVuc2lvbnMnXSAmJiAkcGFyYW1zWydleHRlbnNpb25zJ10gIT0gIiIpCSRhbGxvd2VkZXh0ID0gZXhwbG9kZSgiLCIsJHBhcmFtc1snZXh0ZW5zaW9ucyddKTsNCmlmKCRtb2RlID09ICdpbWFnZScgJiYgISR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzaG93dGh1bWJuYWlscyIsdHJ1ZSkpCSRtb2RlID0gJ290aGVyJzsNCg0KJGFkZGZpbGVzID0gKCBpc3NldCgkcGFyYW1zWydhZGRmaWxlcyddKSAmJiAkcGFyYW1zWydhZGRmaWxlcyddICk7DQoNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMgU09NRSBGVU5DVElPTlMuLi4NCiMNCg0KZnVuY3Rpb24gc3RybGltaXQoJHN0cmluZyl7DQoJLy8gZnVuY3Rpb24gdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgZmlsZW5hbWVzDQoJaWYgKHN1YnN0cigkc3RyaW5nLDAsMjEpID09ICRzdHJpbmcpew0KCQlyZXR1cm4gJHN0cmluZzsNCgl9ZWxzZXsNCgkJcmV0dXJuIHN1YnN0cigkc3RyaW5nLDAsMTkpLicuLi4nOw0KCX0NCn0NCmZ1bmN0aW9uIGdldF90aHVtYm5haWwoJGJhc2V1cmwsICRmaWxlbmFtZSwgJGRpciwgJHJldHVybmFycmF5PWZhbHNlKXsNCgkkdGh1bWJwYXRoID0gJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlbmFtZTsNCgkkdGh1bWJuYW1lID0gJGZpbGVuYW1lOw0KCWlmIChmaWxlX2V4aXN0cygkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RodW1iXycuJGZpbGVuYW1lKSkgew0KCQkkdGh1bWJuYW1lID0gJ3RodW1iXycuJGZpbGVuYW1lOw0KCX1lbHNlaWYoZmlsZV9leGlzdHMoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHRodW1iXycuJGZpbGVuYW1lKSl7DQoJCSR0aHVtYm5hbWUgPSAncGx0aHVtYl8nLiRmaWxlbmFtZTsNCgl9DQoJJGltZ2luZiA9IGdldGltYWdlc2l6ZSgkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHRodW1ibmFtZSk7DQoJaWYoISRpbWdpbmYgfHwgIWlzc2V0KCRpbWdpbmZbMV0pKQlyZXR1cm4gZmFsc2U7DQoJbGlzdCgkd2lkdGgsICRoZWlnaHQpID0gJGltZ2luZjsNCgkkdGh1bWJuYWlscmF0aW8gPSBtYXgoJHdpZHRoIC8gMTA2LCRoZWlnaHQgLyAxMDYpOw0KCWlmICgkdGh1bWJuYWlscmF0aW8gPCAxKSAkdGh1bWJuYWlscmF0aW8gPSAxOw0KCSR0aGVpZ2h0ID0gZmxvb3IoJGhlaWdodCAvICR0aHVtYm5haWxyYXRpbyk7DQoJJHR3aWR0aCA9IGZsb29yKCR3aWR0aCAvICR0aHVtYm5haWxyYXRpbyk7DQoJaWYoJHJldHVybmFycmF5KXsNCgkJcmV0dXJuIGFycmF5KCRiYXNldXJsLicvJy4kdGh1bWJuYW1lLCAkdHdpZHRoLCAkdGhlaWdodCk7DQoJfWVsc2V7DQoJCXJldHVybiAnPGltZyBib3JkZXI9MCBzcmM9IicuJGJhc2V1cmwuJy8nLiR0aHVtYm5hbWUuJyIgd2lkdGg9IicuJHR3aWR0aC4nIiBoZWlnaHQ9IicuJHRoZWlnaHQuJyIgLz4nOw0KCX0NCn0NCmZ1bmN0aW9uIGltYWdlbW9kZV9idWlsZGxpbmtjb250ZW50KCRiYXNldXJsLCAkZmlsZW5hbWUsICRkaXI9Jycpew0KCS8vIGNyZWF0ZXMgdGhlIGNvbnRlbnQgb2YgdGhlIGxpbmsgaW4gaW1hZ2UgbW9kZQ0KCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlbmFtZSwgIi4iKSwgMSkpOw0KCWlmKGluX2FycmF5KCRleHRlbnNpb24sIGFycmF5KCdqcGVnJywnanBnJywncG5nJywnZ2lmJykpKXsNCgkJJHRoZXRodW1iID0gZ2V0X3RodW1ibmFpbCgkYmFzZXVybCwgJGZpbGVuYW1lLCAkZGlyKTsNCgkJcmV0dXJuICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4nLiR0aGV0aHVtYi4nPC9kaXY+Jy5zdHJsaW1pdCgkZmlsZW5hbWUpOw0KCX0NCglnbG9iYWwgJGdDbXM7DQoJJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2ZsdicsJ3N3ZicsJ3dtdicsJ21vdicpKSl7DQoJCSRwaWMgPSAkdGhlYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9maWxldHlwZXMvZm1lZGlhLmdpZiIpOw0KCX1lbHNlaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2pwZWcnLCdqcGcnLCdwbmcnLCdnaWYnKSkpew0KCQkkcGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzL2ZwYWludC5naWYiKTsNCgl9ZWxzZXsNCgkJJHBpYyA9ICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL2ZpbGV0eXBlcy9mZG9jLmdpZiIpOw0KCX0NCglyZXR1cm4gJzxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPicuJHBpYy4nPC9kaXY+Jy5zdHJsaW1pdCgkZmlsZW5hbWUpOw0KfQ0KDQpmdW5jdGlvbiBtYWtlRGlyT2JqKCRmaWxlbmFtZSwkZGlyLCRtb2R1bGUsJHBhcmFtcywkY3VyZGlyLCRwYXJlbnRkaXIsJGlkLCRyZXR1cm5pZCl7DQoJZ2xvYmFsICRnQ21zOw0KCSR0aGVhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCSRwYXJlbnQgPSAoJGZpbGVuYW1lID09ICcuLicpOw0KCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkkb2JqLT5mb2xkZXIgPSB0cnVlOw0KCSRlbXB0eSA9IGFycmF5KCJleHQiLCJzaXplIiwiaW1hZ2VzaXplIiwiZGVsZXRlbGluayIsIm1vZGlmaWVkIiwib3duZXIiLCJwZXJtaXNzaW9ucyIpOw0KCWZvcmVhY2goJGVtcHR5IGFzICRmaWVsZCkJJG9iai0+JGZpZWxkID0gJyc7DQoJJG9iai0+ZmlsZW5hbWUgPSAkZmlsZW5hbWU7DQoJJG9iai0+cGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzLyIuKCRwYXJlbnQ/InVwIjoiIikuImZvbGRlci5naWYiKTsNCglpZigkcGFyZW50KXsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdjdXJkaXInID0+ICRwYXJlbnRkaXIpKTsNCgkJJG9iai0+dGhlbGluayA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICcuLicsICRuZXdwYXJhbXMpOw0KCX1lbHNlew0KCQkkbmV3cGFyYW1zID0gYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2N1cmRpcicgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lLCAncGFyZW50ZGlyJyA9PiAkY3VyZGlyKSk7DQoJCSRvYmotPnRoZWxpbmsgPSAnPGEgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPi4nLiRmaWxlbmFtZS4nPC9hPicuJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdicm93c2VmaWxlcycsICRyZXR1cm5pZCwgJGZpbGVuYW1lLCAkbmV3cGFyYW1zKTsNCgl9DQoJcmV0dXJuICRvYmo7DQp9DQpmdW5jdGlvbiBtYWtlRmlsZU9iaigkZmlsZW5hbWUsJGRpciwkbW9kdWxlLCRwYXJhbXMsJGN1cmRpciwkaWQsJHJldHVybmlkLCRiYXNldXJsKXsNCglnbG9iYWwgJGdDbXM7DQoJJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJJGluZm8gPSAkbW9kdWxlLT5wbEdldEZpbGVJbmZvKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWUpOw0KCSRleHRlbnNpb24gPSAkaW5mb1snZXh0J107DQoJJG9iaiA9IG5ldyBTdGRDbGFzcygpOw0KCSRvYmotPmZvbGRlciA9IGZhbHNlOw0KCSRvYmotPmZpbGVuYW1lID0gJGZpbGVuYW1lOw0KCSRvYmotPmV4dCA9ICRleHRlbnNpb247DQoJJG9iai0+c2l6ZSA9ICc8YSBzdHlsZT0iZGlzcGxheTpub25lOyI+Jy4kaW5mb1sic2l6ZSJdLic8L2E+Jy4kaW5mb1sic2l6ZV93Zm9ybWF0Il07DQoJJG9iai0+cGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgkaW5mb1siZmlsZWljb24iXSk7DQoJJG9iai0+aW1hZ2VzaXplID0gJyc7DQoJJG9iai0+dmlld2xpbmsgPSAnJzsNCglpZigkaW5mb1siaW1hZ2VzaXplIl0pew0KCQkkb2JqLT5pbWFnZXNpemUgPSAnPGEgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPicuJGluZm9bIndpZHRoIl0uJzwvYT4nLiRpbmZvWyJpbWFnZXNpemUiXTsNCgkJJHRoZXRodW1iID0gZ2V0X3RodW1ibmFpbCgkYmFzZXVybCwgJGZpbGVuYW1lLCAkZGlyLCB0cnVlKTsNCgkJaWYoJHRoZXRodW1iKQkkb2JqLT52aWV3bGluayA9ICcgPGEgaHJlZj0iJy4kdGhldGh1bWJbMF0uJyIgdGl0bGU9IicuJG1vZHVsZS0+TGFuZygiaW5zdGFudHByZXZpZXciKS4nIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0icmV0dXJuIGRpc3BsYXl0aHVtYih0aGlzLFwnJy4kdGhldGh1bWJbMF0uJ1wnLCcuJHRoZXRodW1iWzFdLicsJy4kdGhldGh1bWJbMl0uJyk7Ij4nLiR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS92aWV3LmdpZiIpLic8L2E+JzsNCgl9DQoJJG9iai0+ZGVsZXRlbGluayA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiksYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2RlbGV0ZWZpbGUnPT4kZmlsZW5hbWUpKSkuJG9iai0+dmlld2xpbms7DQoJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdmaWxlbmFtZSc9PiRmaWxlbmFtZSwgJ2ZpbGVwYXRoJyA9PiAkY3VyZGlyLicvJy4kZmlsZW5hbWUpKTsNCgkkb2JqLT50aGVsaW5rID0gJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdhc3NpZ25maWxlJywgJHJldHVybmlkLCAkZmlsZW5hbWUsICRuZXdwYXJhbXMpOw0KCSRvYmotPm1vZGlmaWVkID0gJzxhIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4nLiRpbmZvWyJmaWxlbXRpbWUiXS4nPC9hPicuJGluZm9bIm1vZGlmaWVkIl07DQoJJG9iai0+b3duZXIgPSAkaW5mb1sib3duZXIiXTsNCgkkb2JqLT5wZXJtaXNzaW9ucyA9ICRpbmZvWyJwZXJtaXNzaW9ucyJdOw0KCXJldHVybiAkb2JqOw0KfQ0KDQoNCg0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgQ1VSUkVOVCBQQVRILi4uDQojDQoNCiRzdGFydGRpciA9IGlzc2V0KCRwYXJhbXNbJ3N0YXJ0ZGlyJ10pPyRwYXJhbXNbJ3N0YXJ0ZGlyJ106Jyc7DQppZigkc3RhcnRkaXIgIT0gJycgJiYgc3Vic3RyKCRzdGFydGRpciwwLDEpICE9ICcvJyAmJiBzdWJzdHIoJHN0YXJ0ZGlyLDAsMSkgIT0gJ1xcJykgJHN0YXJ0ZGlyID0gRElSRUNUT1JZX1NFUEFSQVRPUi4kc3RhcnRkaXI7DQppZighZmlsZV9leGlzdHMoJGdDbXMtPmNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uJHN0YXJ0ZGlyKSkgQG1rZGlyKCRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLiRzdGFydGRpcik7DQoNCiRwYXJlbnRkaXIgPSAoaXNzZXQoJHBhcmFtc1sncGFyZW50ZGlyJ10pID8gJHBhcmFtc1sncGFyZW50ZGlyJ10gOiAnJyk7DQokY3VyZGlyID0gKGlzc2V0KCRwYXJhbXNbJ2N1cmRpciddKSA/ICRwYXJhbXNbJ2N1cmRpciddIDogJycpOw0KJGRpciA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLiRzdGFydGRpci4kY3VyZGlyOw0KaWYoIWlzX2RpcigkZGlyKSl7DQoJJGRpciA9ICRnQ21zLT5jb25maWdbInVwbG9hZHNfcGF0aCJdOw0KCSRjdXJkaXIgPSAnJzsNCgkkcGFyZW50ZGlyID0gJyc7DQp9DQokYmFzZXVybCA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfdXJsJ10uJHN0YXJ0ZGlyLiRjdXJkaXI7DQoNCmlmIChpc3NldCgkcGFyYW1zWydkZWxldGVmaWxlJ10pKXsNCgkvLyBXZSdyZSBkZWxldGluZyBhIGZpbGUNCglpZihmaWxlX2V4aXN0cygkZGlyLicvJy4kcGFyYW1zWydkZWxldGVmaWxlJ10pICYmIHVubGluaygkZGlyLicvJy4kcGFyYW1zWydkZWxldGVmaWxlJ10pKXsNCgkJZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoIm1lc3NhZ2VfZGVsZXRlZCIpKTsNCgl9DQp9DQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFBSRVBBUklORyBISURERU4gRklFTERTIEZPUiBVUExPQUQNCiMNCg0KJGhpZGRlbiA9ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2N1cmRpcicsJGN1cmRpcikuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnZmllbGQnLCRwYXJhbXNbJ2ZpZWxkJ10pLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3RhYmxlbmFtZScsJHBhcmFtc1sndGFibGVuYW1lJ10pLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ21vZGUnLCRwYXJhbXNbJ21vZGUnXSkuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwncHJlZml4JywkcGFyYW1zWydwcmVmaXgnXSkuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwkcGFyYW1zWydwcmVmaXgnXS4naWQnLCRwYXJhbXNbJHBhcmFtc1sncHJlZml4J10uJ2lkJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snZXh0ZW5zaW9ucyddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdleHRlbnNpb25zJywkcGFyYW1zWydleHRlbnNpb25zJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snc3RhcnRkaXInXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnc3RhcnRkaXInLCRwYXJhbXNbJ3N0YXJ0ZGlyJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snc2l6ZSddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdzaXplJywkcGFyYW1zWydzaXplJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1sndGh1bWInXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndGh1bWInLCRwYXJhbXNbJ3RodW1iJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snY3JvcCddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdjcm9wJywkcGFyYW1zWydjcm9wJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snY3JvcHRodW1iJ10pKSAkaGlkZGVuIC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2Nyb3B0aHVtYicsJHBhcmFtc1snY3JvcHRodW1iJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snYWRkZmlsZXMnXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnYWRkZmlsZXMnLCRwYXJhbXNbJ2FkZGZpbGVzJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdhY3RpdmVfdGFiJywkcGFyYW1zWydhY3RpdmVfdGFiJ10pOw0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgRklMRVMgJiBGT0xERVJTDQojDQoNCiRkaCAgPSBvcGVuZGlyKCRkaXIpOw0KJGZvbGRlcnMgPSBhcnJheSgpOw0KJGZpbGVzID0gYXJyYXkoKTsNCiR1cGZvbGRlciA9IGZhbHNlOw0Kd2hpbGUgKCRmaWxlbmFtZSA9IHJlYWRkaXIoJGRoKSl7DQoJaWYoaXNfZGlyKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWUpICYmICRmaWxlbmFtZSE9Jy4nKXsNCgkJCWlmICgkZmlsZW5hbWU9PScuLicpIHsNCgkJCQlpZiAoJGN1cmRpciAhPSAnJykJCSR1cGZvbGRlciA9IHRydWU7DQoJCQl9ZWxzZXsNCgkJCQkkZm9sZGVyc1tdID0gJGZpbGVuYW1lOw0KCQkJfQ0KCX1lbHNlew0KCQkkZXh0ZW5zaW9uID0gc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZW5hbWUsICIuIiksIDEpKTsNCgkJaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgJGFsbG93ZWRleHQpICYmICghJGhpZGV0aHVtYnMgfHwgc3Vic3RyKCRmaWxlbmFtZSwwLDYpICE9ICd0aHVtYl8nKSAmJiBzdWJzdHIoJGZpbGVuYW1lLDAsOCkgIT0gJ3BsdGh1bWJfJyl7DQoJCQkkZmlsZXNbXSA9ICRmaWxlbmFtZTsNCgkJfQ0KCX0NCn0NCmlmIChpc3NldCgkZGgpKQljbG9zZWRpcigkZGgpOw0Kc29ydCgkZm9sZGVycyk7DQpzb3J0KCRmaWxlcyk7DQoNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBESVNQTEFZSU5HLi4uDQojDQoNCmVjaG8gJzxkaXYgaWQ9ImN0bG1tX3N1Ym1pdG1lc3NhZ2UiIGNsYXNzPSJwYWdlbWNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4nLiR0aGlzLT5MYW5nKCJzdWJtaXR0aW5nX2ZpbGUiKS4nPC9kaXY+JzsNCg0KaWYoJG1vZGUgPT0gJ2ltYWdlJyl7DQoJLy8gaW1hZ2UgbW9kZSAod2l0aCB0aHVtYm5haWxzKSAtIG5vIHRlbXBsYXRlDQoJZWNobyAnPGgyPicuJHRoaXMtPkxhbmcoJ2Jyb3dzZWZpbGVzdGl0bGUnKS4nPC9oMj4nOw0KCWVjaG8gJzxwPicuJHRoaXMtPkxhbmcoJ3Nob3dpbmdkaXInKS4nIDogJy4kZGlyLic8L3A+JzsNCgllY2hvICc8ZGl2IGlkPSJmaWxlc2VsZWN0IiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0icGFkZGluZzogNHB4OyBtYXJnaW4tYm90dG9tOiAxMHB4OyBib3JkZXI6IDFweCBzb2xpZCAjNjY2NjY2OyBiYWNrZ3JvdW5kOiAjRkZGRkZGOyBvdmVyZmxvdzogYXV0bzsiPjxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyI+JzsNCgkkZGl2b3B0aW9uID0gJzxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgZmxvYXQ6IGxlZnQ7IHdpZHRoOiAxNjVweDsgaGVpZ2h0OiAxODBweDsiPjxici8+JzsNCgkkY2xvc2VkaXYgPSAnPC9kaXY+DQonOw0KCWlmKCR1cGZvbGRlcil7DQoJCWVjaG8gJGRpdm9wdGlvbjsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdjdXJkaXInID0+ICRwYXJlbnRkaXIpKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdicm93c2VmaWxlcycsICRyZXR1cm5pZCwgJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzL3VwZm9sZGVyLmdpZiIpLic8YnIvPicuJHRoaXMtPkxhbmcoJ3BhcmVudGRpcicpLCAkbmV3cGFyYW1zKTsNCgkJZWNobyAkY2xvc2VkaXY7DQoJfQ0KCWZvcmVhY2goJGZvbGRlcnMgYXMgJGZpbGVuYW1lKXsNCgkJZWNobyAkZGl2b3B0aW9uOw0KCQkkbmV3cGFyYW1zID0gYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2N1cmRpcicgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lLCAncGFyZW50ZGlyJyA9PiAkY3VyZGlyKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48aW1nIGJvcmRlcj0wIHNyYz0iLi4vbGliL2ZpbGVtYW5hZ2VyL0ltYWdlTWFuYWdlci9pbWcvZm9sZGVyLmdpZiIgLz48L2Rpdj4nLiRmaWxlbmFtZSwgJG5ld3BhcmFtcyk7DQoJCWVjaG8gJGNsb3NlZGl2Ow0KCX0NCglmb3JlYWNoKCRmaWxlcyBhcyAkZmlsZW5hbWUpew0KCQllY2hvICRkaXZvcHRpb247DQoJCSRuZXdwYXJhbXMgPSBhcnJheV9tZXJnZSgkcGFyYW1zLCBhcnJheSgnZmlsZW5hbWUnPT4kZmlsZW5hbWUsICdmaWxlcGF0aCcgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYXNzaWduZmlsZScsICRyZXR1cm5pZCwgaW1hZ2Vtb2RlX2J1aWxkbGlua2NvbnRlbnQoJGJhc2V1cmwsICRmaWxlbmFtZSwgJGRpciksICRuZXdwYXJhbXMpLic8YnIvPic7DQoJCSRpbWdpbmYgPSBnZXRpbWFnZXNpemUoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlbmFtZSk7DQoJCWlmKCRpbWdpbmYgJiYgaXNzZXQoJGltZ2luZlsxXSkpCWVjaG8gJygnLiRpbWdpbmZbMF0uJ3gnLiRpbWdpbmZbMV0uJykgJzsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdkZWxldGVmaWxlJz0+JGZpbGVuYW1lKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiksJG5ld3BhcmFtcyk7DQoJCWVjaG8gJGNsb3NlZGl2Ow0KCX0NCgllY2hvICc8L2Rpdj48L2Rpdj4nOw0KCQ0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZGRmaWxlcycsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpOw0KCWVjaG8gJzxoMz4nLmxhbmcoJ3VwbG9hZGZpbGUnKS4nOjwvaDM+PGRpdj4nOw0KCWlmKCRhZGRmaWxlcyl7DQoJCWVjaG8gJzxmaWVsZHNldCBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+PGxlZ2VuZD48Yj4nLiR0aGlzLT5MYW5nKCJ1cGxvYWR6aXBmaWxlIikuJzwvYj48L2xlZ2VuZD4nOw0KCQllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCJ6aXBmaWxlbm90aWNlIikuJzwvcD4nOw0KCQllY2hvICc8cD4nLiR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCd1cGxvYWR6aXBmaWxlJykuJyAnLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdHppcGZpbGUnLGxhbmcoJ3NlbmQnKSkuJzwvcD48L2ZpZWxkc2V0Pic7DQoJfQ0KCWVjaG8gJzxwPicuJHRoaXMtPkxhbmcoJ3Bvc3RtYXhzaXplJykuaW5pX2dldCgncG9zdF9tYXhfc2l6ZScpLic8L3A+JzsNCglpZihpc3NldCgkcGFyYW1zWyJzaXplIl0pKQllY2hvICc8cD4oJy4kdGhpcy0+TGFuZygnYnJvd3NlZmlsZXNyZXNpemUnKS4nKTwvcD4nOw0KCWVjaG8gJzxkaXYgaWQ9ImZpbGVpbnB1dHMiPjxwPicuJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3VwbG9hZGZpbGUnKS4nPC9wPjwvZGl2Pic7DQoJaWYoJGFkZGZpbGVzKQllY2hvICc8cD48YSBocmVmPSJqYXZhc2NyaXB0OmFkZGZpbGVpbnB1dChcJ2ZpbGVpbnB1dHNcJyx0aGlzKTsiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7Ij4nLiR0aGlzLT5MYW5nKCJhZGRmaWxlaW5wdXQiKS4nPC9hPjwvcD4nOw0KCWVjaG8gJzxwPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpLic8L3A+JzsNCgllY2hvICRoaWRkZW47DQoJZWNobyAnPC9kaXY+JzsJCQ0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgkNCn1lbHNlew0KCS8vIGxpc3QgbW9kZSAobm8gdGh1bWJuYWlscykgLSB1c2VzIGEgdGVtcGxhdGUNCgkNCgkkaW5zdGFudHNlYXJjaCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkaXNwbGF5X2luc3RhbnRzZWFyY2giLGZhbHNlKTsNCgkkaW5zdGFudHNvcnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGlzcGxheV9pbnN0YW50c29ydCIsZmFsc2UpOw0KCQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYnJvd3NldGl0bGUiLCR0aGlzLT5MYW5nKCdicm93c2VmaWxlc3RpdGxlJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigidXBsb2FkdGl0bGUiLGxhbmcoJ3VwbG9hZGZpbGUnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzaG93aW5nZGlyIiwkdGhpcy0+TGFuZygnc2hvd2luZ2RpcicpLicgOiAnLiRkaXIpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZm9ybXN0YXJ0IiwkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkZGZpbGVzJywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZm9ybWVuZCIsJGhpZGRlbi4kdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInJlc2l6ZW5vdGljZSIsaXNzZXQoJHBhcmFtc1sic2l6ZSJdKT8kdGhpcy0+TGFuZygnYnJvd3NlZmlsZXNyZXNpemUnKTpmYWxzZSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwb3N0bWF4c2l6ZSIsJHRoaXMtPkxhbmcoJ3Bvc3RtYXhzaXplJykuaW5pX2dldCgncG9zdF9tYXhfc2l6ZScpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInN1Ym1pdCIsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImluc3RhbnRzZWFyY2giLCAkaW5zdGFudHNlYXJjaD8kdGhpcy0+TGFuZygic2VhcmNodGhpc3RhYmxlIikuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAic2VhcmNoZmlsZXRhYmxlIiwgIiIsIDEwLCA2NCwgJyBvbmtleXVwPSJjdGxtbV9zZWFyY2godGhpcy52YWx1ZSxcJ2ZpbGVsaXN0X3RhYmxlXCcpOyInKTpmYWxzZSk7DQoNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInppcHRpdGxlIiwgJHRoaXMtPkxhbmcoInVwbG9hZHppcGZpbGUiKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ6aXBub3RpY2UiLCAkdGhpcy0+TGFuZygiemlwZmlsZW5vdGljZSIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInppcGlucHV0IiwgJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3VwbG9hZHppcGZpbGUnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ6aXBzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXR6aXBmaWxlJyxsYW5nKCdzZW5kJykpKTsNCg0KCWlmKCRhZGRmaWxlcyl7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZmlsZWlucHV0IiwnPGRpdiBpZD0iZmlsZWlucHV0cyI+PHA+Jy4kdGhpcy0+Q3JlYXRlRmlsZVVwbG9hZElucHV0KCRpZCwndXBsb2FkZmlsZScpLic8L3A+PC9kaXY+Jyk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkZmlsZWlucHV0IiwnPGEgaHJlZj0iamF2YXNjcmlwdDphZGRmaWxlaW5wdXQoXCdmaWxlaW5wdXRzXCcsdGhpcyk7IiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyI+Jy4kdGhpcy0+TGFuZygiYWRkZmlsZWlucHV0IikuJzwvYT4nKTsNCgl9ZWxzZXsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJmaWxlaW5wdXQiLCc8cD4nLiR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCd1cGxvYWRmaWxlJykuJzwvcD4nKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZGRmaWxlaW5wdXQiLGZhbHNlKTsNCgl9DQoJDQoJJHNvcnRsaW5rcyA9IGFycmF5KCk7DQoJJG51bWVyaWNfc29ydGxpbmtzID0gYXJyYXkoKTsNCgkkaSA9IDA7DQoJd2hpbGUoJGkgPCAxMCl7DQoJCWlmKCRpbnN0YW50c29ydCl7DQoJCQkkc29ydGxpbmtzWyRpXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF91cC5naWYiIGFsdD0iXiIvPjwvYT48YnIvPjxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9zb3J0Um93cyhcJ2ZpbGVsaXN0X3RhYmxlXCcsJy4kaS4nLHRydWUpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF9kb3duLmdpZiIgYWx0PSJ2Ii8+PC9hPjwvZGl2PiAmbmJzcDsnOw0KCQkJJG51bWVyaWNfc29ydGxpbmtzWyRpXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicsZmFsc2UsdHJ1ZSk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X3VwLmdpZiIgYWx0PSJeIi8+PC9hPjxici8+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicsdHJ1ZSx0cnVlKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfZG93bi5naWYiIGFsdD0idiIvPjwvYT48L2Rpdj4gJm5ic3A7JzsNCgkJfWVsc2V7DQoJCQkkc29ydGxpbmtzWyRpXSA9ICcnOw0KCQkJJG51bWVyaWNfc29ydGxpbmtzWyRpXSA9ICcnOw0KCQl9DQoJCSRpKys7DQoJfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigic29ydGxpbmtzIiwkc29ydGxpbmtzKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIm51bWVyaWNfc29ydGxpbmtzIiwkbnVtZXJpY19zb3J0bGlua3MpOw0KCQ0KCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkkb2JqLT5mb2xkZXIgPSAiIjsNCgkkb2JqLT5maWxlbmFtZSA9ICR0aGlzLT5MYW5nKCJmaWxlbmFtZSIpOw0KCSRvYmotPmV4dCA9ICR0aGlzLT5MYW5nKCJmaWxlZXh0Iik7DQoJJG9iai0+c2l6ZSA9ICR0aGlzLT5MYW5nKCJmaWxlc2l6ZSIpOw0KCSRvYmotPnBpYyA9ICIiOw0KCSRvYmotPmltYWdlc2l6ZSA9ICR0aGlzLT5MYW5nKCJpbWFnZXNpemUiKTsNCgkkb2JqLT5kZWxldGVsaW5rID0gJHRoaXMtPkxhbmcoIkFjdGlvbnMiKTsNCgkkb2JqLT5tb2RpZmllZCA9ICR0aGlzLT5MYW5nKCJsYXN0bW9kIik7DQoJJG9iai0+b3duZXIgPSAkdGhpcy0+TGFuZygiZmlsZW93bmVyIik7DQoJJG9iai0+cGVybWlzc2lvbnMgPSAkdGhpcy0+TGFuZygiZmlsZXBlcm1zIik7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJoZWFkZXJzIiwkb2JqKTsNCgkNCgkkaXRlbWxpc3QgPSBhcnJheSgpOw0KCWlmKCR1cGZvbGRlcikJJGl0ZW1saXN0W10gPSBtYWtlRGlyT2JqKCIuLiIsJGRpciwkdGhpcywkcGFyYW1zLCRjdXJkaXIsJHBhcmVudGRpciwkaWQsJHJldHVybmlkKTsNCglmb3JlYWNoKCRmb2xkZXJzIGFzICRmb2xkZXIpCSRpdGVtbGlzdFtdID0gbWFrZURpck9iaigkZm9sZGVyLCRkaXIsJHRoaXMsJHBhcmFtcywkY3VyZGlyLCRwYXJlbnRkaXIsJGlkLCRyZXR1cm5pZCk7DQoJZm9yZWFjaCgkZmlsZXMgYXMgJGZpbGVuYW1lKQkkaXRlbWxpc3RbXSA9IG1ha2VGaWxlT2JqKCRmaWxlbmFtZSwkZGlyLCR0aGlzLCRwYXJhbXMsJGN1cmRpciwkaWQsJHJldHVybmlkLCRiYXNldXJsKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkaXRlbWxpc3QpOw0KCQ0KCWVjaG8gJw0KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCic7DQoJaWYoJGluc3RhbnRzZWFyY2gpCWVjaG8gJHRoaXMtPmdldEZpbGVDb250ZW50KCJpbnN0YW50c2VhcmNoLmpzIik7DQoJaWYoJGluc3RhbnRzb3J0KQllY2hvICR0aGlzLT5nZXRGaWxlQ29udGVudCgiaW5zdGFudHNvcnQuanMiKTsNCgllY2hvICcNCgk8L3NjcmlwdD4NCic7DQoNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImJyb3dzZWZpbGVzLnRwbCIpOw0KfQ0KDQplY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQp2YXIgY3RsbW1fZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCInLiRpZC4nbW9kdWxlZm9ybV8xIik7DQppZihjdGxtbV9mb3JtKQljdGxtbV9mb3JtLm9uc3VibWl0ID0gZnVuY3Rpb24oKSB7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN0bG1tX3N1Ym1pdG1lc3NhZ2UiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCn0NCmZ1bmN0aW9uIGRpc3BsYXl0aHVtYihlbGUsdGh1bWJwYXRoLHdpZHRoLGhlaWdodCl7DQoJZWxlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoJdmFyIHRoZWltZyA9IG5ldyBJbWFnZSgpOw0KCXRoZWltZy53aWR0aCA9IHdpZHRoOw0KCXRoZWltZy5oZWlnaHQgPSBoZWlnaHQ7DQoJdGhlaW1nLnNyYyA9IHRodW1icGF0aDsNCgl0aGVpbWcuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOw0KCXRoZWltZy5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IGhpZGV0aHVtYih0aGlzKTsgfTsNCgllbGUucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGVpbWcpOw0KCXJldHVybiBmYWxzZTsNCn0NCmZ1bmN0aW9uIGhpZGV0aHVtYihlbGUsdGh1bWJwYXRoLHdpZHRoLGhlaWdodCl7DQoJdmFyIHBhcmVudCA9IGVsZS5wYXJlbnROb2RlOw0KCXBhcmVudC5yZW1vdmVDaGlsZChlbGUpOw0KCXZhciB0aGVhcyA9IHBhcmVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpOw0KCXRoZWFzW3RoZWFzLmxlbmd0aC0xXS5zdHlsZS5kaXNwbGF5ID0gImlubGluZSI7DQp9DQoNCnZhciBuYmZpbGVpbnB1dCA9IDE7DQoNCmZ1bmN0aW9uIGFkZGZpbGVpbnB1dChjb250YWluZXJpZCwgYnRuKXsNCgl2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyaWQpOw0KCWlmKCFjb250YWluZXIpIHJldHVybiBmYWxzZTsNCgluYmZpbGVpbnB1dCsrOw0KCXZhciB0bXBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7DQoJdG1waW5wdXQudHlwZSA9ICJmaWxlIjsNCgl0bXBpbnB1dC5uYW1lID0gIicuJGlkLid1cGxvYWRmaWxlIituYmZpbGVpbnB1dDsNCgl2YXIgdGhlcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsNCgl0aGVwLmFwcGVuZENoaWxkKHRtcGlucHV0KTsNCgljb250YWluZXIuYXBwZW5kQ2hpbGQodGhlcCk7DQoJaWYobmJmaWxlaW5wdXQgPT0gMTIpCWJ0bi5zdHlsZS5kaXNwbGF5ID0gZmFsc2U7DQp9DQo8L3NjcmlwdD4nOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIHdlIG5lZWQgdG8ga25vdyB3aGljaCBsZXZlbCBpcyB0aGUgZmluYWwgbGV2ZWwNCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQokZmluYWxsZXZlbCA9ICJ2ZWhpY2xlIjsNCg0KLy8gd2UgY2hlY2sgd2hhdCBsZXZlbCB3ZSdyZSB3YXRjaGluZy4uLiBpZiBub25lIGlzIHNwZWNpZmllZCwgd2UgdXNlIHRoZSBmaW5hbCBsZXZlbA0KJHdoYXQgPSAoaXNzZXQoJHBhcmFtc1sid2hhdCJdKSAmJiBpbl9hcnJheSgkcGFyYW1zWyJ3aGF0Il0sJGxldmVsYXJyYXkpKT8kcGFyYW1zWyJ3aGF0Il06JGZpbmFsbGV2ZWw7DQovLyB3ZSBnaXZlIGl0IGJhY2sgdG8gdGhlIHBhcmFtcyBmb3IgcHJldHR5IHVybHMgYW5kIHBhZ2Ugdmlldw0KaWYoIWlzc2V0KCRwYXJhbXNbIndoYXQiXSkgfHwgJHBhcmFtc1sid2hhdCJdID09ICIiKQkkcGFyYW1zWyJ3aGF0Il0gPSAkd2hhdDsNCiRwYXJlbnRsZXZlbCA9ICR0aGlzLT5nZXRfbmV4dGxldmVsKCR3aGF0LCBmYWxzZSk7DQoNCi8vIHdlIHJldHJpZXZlIHNvbWUgb3RoZXIgcGFyYW1ldGVycw0KaWYoJHdoYXQgIT0gJGZpbmFsbGV2ZWwpew0KCSRmb3JjZWxpc3QgPSB0cnVlOwkJLy8gQWx3YXlzIGRpc3BsYXkgYXMgbGlzdCB3aGVuIHdlJ3JlIG5vdCBvbiB0aGUgZmluYWwgbGV2ZWwNCn1lbHNlaWYoaXNzZXQoJHBhcmFtc1siYWxpYXMiXSkpew0KCSRmb3JjZWxpc3QgPSBmYWxzZTsJCS8vIG5ldmVyIGRpc3BsYXkgYSBsaXN0IHdoZW4gdGhlIGFsaWFzIGlzIHNwZWNpZmllZA0KfWVsc2V7DQoJLy8gZGVmYXVsdCB2YWx1ZQ0KCSRmb3JjZWxpc3QgPSBpc3NldCgkcGFyYW1zWyJmb3JjZWxpc3QiXSk/JHBhcmFtc1siZm9yY2VsaXN0Il06JHRoaXMtPkdldFByZWZlcmVuY2UoImZvcmNlX2xpc3QiLGZhbHNlKTsNCn0NCiRvcmRlcmJ5ID0gaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKT8kcGFyYW1zWyJvcmRlcmJ5Il06ZmFsc2U7DQokaW5saW5lID0gKGlzc2V0KCRwYXJhbXNbImlubGluZSJdKSAmJiAkcGFyYW1zWyJpbmxpbmUiXSk/dHJ1ZTpmYWxzZTsNCiRsaW1pdCA9IGlzc2V0KCRwYXJhbXNbImxpbWl0Il0pPyRwYXJhbXNbImxpbWl0Il06MDsNCiRsaW1pdCA9IChpbnQpICRsaW1pdDsNCmlmKGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSAmJiAkcGFyYW1zWyJuYnBlcnBhZ2UiXSA+ICRsaW1pdCl7DQoJJG5icGVycGFnZSA9IChpbnQpICRwYXJhbXNbIm5icGVycGFnZSJdOw0KfWVsc2V7DQoJLy8gZGVmYXVsdCBwYWdpbmF0aW9uDQoJJGRlZmF1bHRfbmJwZXJwYWdlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJHdoYXQuIl9wYWdpbmF0aW9uIiwwKTsNCgkkbmJwZXJwYWdlID0gKCRkZWZhdWx0X25icGVycGFnZSA+ICRsaW1pdCk/JGRlZmF1bHRfbmJwZXJwYWdlOmZhbHNlOw0KCSRwYXJhbXNbIm5icGVycGFnZSJdID0gJG5icGVycGFnZTsJLy8gZ2l2ZSBpdCBiYWNrIGZvciBsaW5rcw0KfQ0KaWYoJG5icGVycGFnZSkJJGxpbWl0ID0gKCgoaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pPyRwYXJhbXNbInBhZ2VpbmRleCJdOjEpLTEpICogJG5icGVycGFnZSkuIiwiLiRuYnBlcnBhZ2U7DQoNCi8vIHdlIGJ1aWxkIHRoZSBxdWVyeS4gRmlyc3QsIHdlIGNoZWNrIGlmIHdlJ3JlIHVzaW5nIGEgc2F2ZWQgcXVlcnkgOg0KaWYoaXNzZXQoJHBhcmFtc1sicXVlcnkiXSkpew0KCSRxdWVyeWlkID0gKGludCkgJHBhcmFtc1sicXVlcnkiXTsNCglpZigkcXVlcnkgPSAkdGhpcy0+Z2V0X3F1ZXJpZXMoYXJyYXkoImlkIj0+JHF1ZXJ5aWQpKSl7DQoJCS8vIHdlIHJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgZG8gdGhlIHF1ZXJ5DQoJCSRxdWVyeSA9ICRxdWVyeVswXTsNCgkJJHdoYXQgPSAkcXVlcnktPndoYXQ7DQoJCSRnZXRmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kd2hhdDsNCgkJJHBhcmVudGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHdoYXQsIGZhbHNlKTsNCgkJJHdoZXJlY2xhdXNlID0gJHF1ZXJ5LT53aGVyZWNsYXVzZTsNCgkJJHdoZXJldmFsdWVzID0gJHF1ZXJ5LT53aGVyZXZhbHVlczsNCgkJJGN1c3RvbW9yZGVyID0gKCRxdWVyeS0+cXVlcnlvcmRlciA9PSAiIj9mYWxzZTokcXVlcnktPnF1ZXJ5b3JkZXIpOw0KCX1lbHNlaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImFsbG93X3NxbCIsZmFsc2UpKXsNCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiR3aGF0Ow0KCQkkcGFyZW50bGV2ZWwgPSAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCwgZmFsc2UpOw0KCQkkd2hlcmVjbGF1c2UgPSAkcGFyYW1zWyJxdWVyeSJdOyAvLyBxdWVyeSBzaG91bGQgYmUgc2FuaXRpemVkLi4uDQoJCSR3aGVyZXZhbHVlcyA9IGFycmF5KCk7DQoJCSRjdXN0b21vcmRlciA9IGZhbHNlOw0KCQkkaXRlbWxpc3QgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCksIGZhbHNlLCAiIiwgIiIsICRvcmRlcmJ5LCAkbGltaXQsICRxdWVyeSk7DQoJfWVsc2V7DQoJCSRtZXNzYWdlID0gJHRoaXMtPkxhbmcoImVycm9yX3dyb25ncXVlcnkiKTsNCgkJaWYoJHF1ZXJ5aWQgIT0gJHF1ZXJ5ICYmICRtc2cgPSBteXNxbF9lcnJvcigpKQkJJG1lc3NhZ2UgLj0gIjxici8+Ii4kdGhpcy0+TGFuZygiZ2l2ZW5lcnJvciIpLiRtc2c7DQoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJG1lc3NhZ2UpOw0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KCWlmKCFpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiAkbmJwZXJwYWdlKXsNCgkJLy8gd2UgbmVlZCBwYWdpbmF0aW9uIC0gc28gd2UgZmlyc3QgcmV0cmlldmUgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBmaXR0aW5nIHRoZSBxdWVyeQ0KCQkkdG90YWwgPSAkdGhpcy0+Y291bnRzb21ldGhpbmcoJHdoYXQsImlkIixhcnJheSgpLCR3aGVyZWNsYXVzZSwgJHdoZXJldmFsdWVzLCAkcGFyZW50bGV2ZWwpOw0KCX0NCglpZihpc3NldCgkdG90YWwpICYmICR0b3RhbCA9PSAwKXsNCgkJJGl0ZW1saXN0ID0gYXJyYXkoKTsJLy8gd2UgYWxyZWFkeSBrbm93IHRoZXJlJ3Mgbm90aGluZyB0byBxdWVyeQ0KCX1lbHNlew0KCQkkaXRlbWxpc3QgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCksIGZhbHNlLCAiIiwgIiIsICRvcmRlcmJ5LCAkbGltaXQsICR3aGVyZWNsYXVzZSwgJHdoZXJldmFsdWVzLCAkY3VzdG9tb3JkZXIpOw0KCX0NCn1lbHNlew0KCS8vIHdlJ3JlIG5vdCB1c2luZyBhIHNhdmVkIHF1ZXJ5LCBzbyB3ZSBwYXJzZSB0aGUgcGFyYW1ldGVycw0KCS8vIHdlIHJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgZG8gdGhlIHF1ZXJ5DQoJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiR3aGF0Ow0KCS8vIFRoZSAkd2hlcmUgaG9sZHMgZWxlbWVudHMgb2YgdGhlIFdIRVJFIGNsYXVzZSBvZiB0aGUgcXVlcnksIGluIHRoZSBmb3JtIGZpZWxkX25hbWU9PmZpZWxkX3ZhbHVlDQoJaWYoaXNzZXQoJHBhcmFtc1siYWxpYXMiXSkgJiYgJHBhcmFtc1siYWxpYXMiXSAhPSAiIikgew0KCQkkd2hlcmUgPSBhcnJheSgiYWxpYXMiPT4kcGFyYW1zWyJhbGlhcyJdKTsNCgl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInNob3dkZWZhdWx0Il0pICYmICRwYXJhbXNbInNob3dkZWZhdWx0Il0pIHsNCgkJJHdoZXJlID0gYXJyYXkoImlzZGVmYXVsdCI9PjEpOw0KCX1lbHNlew0KCQkkd2hlcmUgPSBhcnJheSgpOw0KCX0NCglpZihpc3NldCgkcGFyYW1zWyJwYXJlbnQiXSkgJiYgJHBhcmFtc1sicGFyZW50Il0gIT0gIiIpICR3aGVyZVsicGFyZW50Il0gPSAkcGFyYW1zWyJwYXJlbnQiXTsNCg0KCSR3aGVyZVsiYWN0aXZlIl0gPSAxOw0KCWlmKCFpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiAkbmJwZXJwYWdlKXsNCgkJLy8gd2UgbmVlZCBwYWdpbmF0aW9uIC0gc28gd2UgZmlyc3QgcmV0cmlldmUgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBmaXR0aW5nIHRoZSBxdWVyeQ0KCQkkdG90YWwgPSAkdGhpcy0+Y291bnRzb21ldGhpbmcoJHdoYXQsImlkIiwkd2hlcmUsZmFsc2UsYXJyYXkoKSwkcGFyZW50bGV2ZWwpOw0KCX0NCglpZihpc3NldCgkdG90YWwpICYmICR0b3RhbCA9PSAwKXsNCgkJJGl0ZW1saXN0ID0gYXJyYXkoKTsJLy8gd2UgYWxyZWFkeSBrbm93IHRoZXJlJ3Mgbm90aGluZyB0byBxdWVyeQ0KCX1lbHNlew0KCQkkaXRlbWxpc3QgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKCR3aGVyZSwgZmFsc2UsICIiLCAiIiwgJG9yZGVyYnksICRsaW1pdCk7DQoJfQ0KfQ0KDQovLyBJbnRlZ3JhdGlvbiB3b3VsZCByZXF1aXJlIHNvbWUgY2hhbmdlcyB0byBDYXJ0TWFkZVNpbXBsZQ0KLy8gJGl0ZW1saXN0ID0gJHRoaXMtPmFkZENhcnRVcmxzKCRpdGVtbGlzdCwkaWQsJHJldHVybmlkKTsNCg0KDQoNCi8vICBTVEFSVCBQUk9DRVNTSU5HDQoNCmlmKGNvdW50KCRpdGVtbGlzdCkgPT0gMSAmJiAhJGZvcmNlbGlzdCl7DQoJDQoJLy8gIyMjIyMjIyMjIyMjIyMjIyMgV0UgQVJFIERJU1BMQVlJTkcgQU4gSVRFTSBJTiBERVRBSUwgVklFVw0KCQ0KCSRpdGVtPSRpdGVtbGlzdFswXTsNCg0KCS8vIGlmIGEgdGVtcGxhdGUgaGFzIGJlZW4gc3BlY2lmaWVkLCB3ZSB0cnkgdG8gcmV0cmlldmUgaXQJDQoJJHRlbXBsYXRlID0gZmFsc2U7DQoJaWYoaXNzZXQoJHBhcmFtc1siZmluYWx0ZW1wbGF0ZSJdKSAmJiAkcGFyYW1zWyJmaW5hbHRlbXBsYXRlIl0gIT0gIiIpew0KCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1siZmluYWx0ZW1wbGF0ZSJdKTsNCgl9DQoNCgkvLyBpZiBubyB0ZW1wbGF0ZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHdlIHJldHJpZXZlIHRoZSBkZWZhdWx0IGZpbmFsIHRlbXBsYXRlDQoJaWYoISR0ZW1wbGF0ZSB8fCAkdGVtcGxhdGUgPT0gIiIpew0KCQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZpbmFsdGVtcGxhdGUiKTsNCgkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUsICR0aGlzLT5HZXROYW1lKCkpOw0KCX0NCgkvLyB3ZSByZXRyaWV2ZSB0aGUgcGFyZW50IHRyZWU6DQoJJHBhcmVudHRyZWUgPSAkdGhpcy0+Z2V0X29ianRyZWUoICRpdGVtLT5wYXJlbnRfaWQsICR0aGlzLT5nZXRfbmV4dGxldmVsKCR3aGF0LCBmYWxzZSkgKTsNCgkkaXRlbS0+cGFyZW50X29iamVjdCA9ICRwYXJlbnR0cmVlOw0KDQoJDQoJLy8gaWYgdGhlIGl0ZW0gaGFzIHBhcmVudHMsIHdlIGFzc2lnbiBsaW5rcyB0byB0aGF0IHBhcmVudA0KCWlmKGlzc2V0KCRpdGVtLT5wYXJlbnRfYWxpYXMpKXsNCgkJJHByZXR0eXVybCA9ICR0aGlzLT5CdWlsZFByZXR0eVVybHMoYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnRfYWxpYXMsICJ3aGF0Ij0+JHdoYXQpLCAkcmV0dXJuaWQpOw0KCQkkaXRlbS0+cGFyZW50bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkcmV0dXJuaWQsICRpdGVtLT5wYXJlbnRfbmFtZSwgYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnRfYWxpYXMpLCAiIiwgZmFsc2UsICRpbmxpbmUsICIiLCBmYWxzZSwgJHByZXR0eXVybCk7DQoJCSRpdGVtLT5wYXJlbnR1cmwgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0IiwgJHJldHVybmlkLCAiIiwgYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnRfYWxpYXMpLCAiIiwgdHJ1ZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkcHJldHR5dXJsKTsNCgl9DQoJDQoJLy8gd2UgcmV0cmlldmUgYSBsYWJlbCBmb3IgZWFjaCBvZiB0aGUgaXRlbSdzIGZpZWxkIGFuZCBhc3NpZ24gaXQgdG8gc21hcnR5DQoJJGxhYmVscyA9IG5ldyBTdGRDbGFzcygpOw0KCWZvcmVhY2goJGl0ZW0gYXMgJGtleT0+JHZhbHVlKXsNCgkJJGxhYmVscy0+JGtleSA9ICR0aGlzLT5MYW5nKCR3aGF0LiJfIi4ka2V5KTsJCQ0KCX0NCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImxhYmVscyIsICRsYWJlbHMpOw0KCQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbSIsJGl0ZW0pOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigibGV2ZWx0aXRsZSIsJHRoaXMtPkxhbmcoJHdoYXQuIl9wbHVyYWwiKSk7DQoNCglpZighaXNzZXQoJHBhcmFtc1sicXVlcnkiXSkgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoImxvYWRfbmV4dHByZXZpb3VzIixmYWxzZSkpew0KCQkvLyB3ZSBsb2FkIGxpbmtzIHRvIG5leHQgYW5kIHByZXZpb3VzIGl0ZW1zDQoJCS8vIGFzIHRoaXMgaW1wbGllcyB0d28gbW9yZSBxdWVyaWVzLCBpdCBtdXN0IGJlIGFjdGl2YXRlZCBpbiB0aGUgc2V0dGluZ3MgdGFicw0KCQkkbmV3d2hlcmUgPSBhcnJheSgiYWN0aXZlIj0+MSk7DQoJCWlmKGlzc2V0KCRwYXJhbXNbInBhcmVudCJdKSl7DQoJCQkkbmV3d2hlcmVbInBhcmVudCJdID0gJHBhcmFtc1sicGFyZW50Il07CQ0KCQl9ZWxzZWlmKGlzc2V0KCRpdGVtLT5wYXJlbnRfYWxpYXMpICYmICR0aGlzLT5nZXRPcmRlclR5cGUoJHdoYXQpKXsNCgkJCSRuZXd3aGVyZVsicGFyZW50Il0gPSAkaXRlbS0+cGFyZW50X2FsaWFzOw0KCQl9DQoJCSRuZXh0aXRlbSA9IGZhbHNlOw0KCQkkbmV3d2hlcmVbIml0ZW1fb3JkZXIiXSA9ICRpdGVtLT5pdGVtX29yZGVyICsgMTsNCgkJJG5ld3Bhcm1zID0gJHBhcmFtczsNCgkJJHRtcGl0ZW0gPSAkdGhpcy0+JGdldGZ1bmN0aW9uKCRuZXd3aGVyZSk7DQoJCWlmKGlzc2V0KCR0bXBpdGVtWzBdKSl7DQoJCQkkbmV3cGFybXNbImFsaWFzIl0gPSAkdG1waXRlbVswXS0+YWxpYXM7DQoJCQkkbmV4dGl0ZW0gPSAkdGhpcy0+YWRkZnJvbnRlbmR1cmxzKCR0bXBpdGVtWzBdLCRuZXdwYXJtcywkaWQsJHJldHVybmlkKTsNCgkJfQ0KCQkkcHJldml0ZW0gPSBmYWxzZTsNCgkJaWYoJGl0ZW0tPml0ZW1fb3JkZXIgPiAxKXsNCgkJCSRuZXd3aGVyZVsiaXRlbV9vcmRlciJdID0gJGl0ZW0tPml0ZW1fb3JkZXIgLSAxOw0KCQkJJHRtcGl0ZW0gPSAkdGhpcy0+JGdldGZ1bmN0aW9uKCRuZXd3aGVyZSk7DQoJCQlpZihpc3NldCgkdG1waXRlbVswXSkpew0KCQkJCSRuZXdwYXJtc1siYWxpYXMiXSA9ICR0bXBpdGVtWzBdLT5hbGlhczsNCgkJCQkkcHJldml0ZW0gPSAkdGhpcy0+YWRkZnJvbnRlbmR1cmxzKCR0bXBpdGVtWzBdLCRuZXdwYXJtcywkaWQsJHJldHVybmlkKTsNCgkJCX0NCgkJfQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5leHRfaXRlbSIsJG5leHRpdGVtKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwcmV2aW91c19pdGVtIiwkcHJldml0ZW0pOw0KCX0NCgkNCgkvLyB3ZSBwcm9jZXNzIHRoZSB0ZW1wbGF0ZQ0KCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0ZW1wbGF0ZSk7DQoJDQp9ZWxzZWlmKGNvdW50KCRpdGVtbGlzdCkgPiAwKXsNCgkNCgkvLyAjIyMjIyMjIyMjIyMjIyMjIyBXRSBBUkUgRElTUExBWUlORyBBIExJU1QgVklFVw0KCSRwYXJlbnRvYmogPSBmYWxzZTsNCgkvLyBpZiB3ZSBhcmUgd2F0Y2hpbmcgaXRlbXMgZnJvbSBhIHNwZWNpZmljIHBhcmVudHMsIHdlIHdhbnQgdG8gaGF2ZSB0aGUgaW5mb3JtYXRpb25zIG9mIHRoaXMgcGFyZW50IGF2YWlsYWJsZQ0KCS8vIGluIHRoZSB0ZW1wbGF0ZSAoZm9yIGV4YW1wbGUsIGlmIHdlIHdhbnQgdG8gZGlzcGxheSBhIGNhdGVnb3J5IHBhZ2UsIHdlIG1pZ2h0IHdhbnQgdG8gc2hvdyB0aGUgY2F0ZWdvcnkgZGVzY3JpcHRpb24pDQoJLy8gaWYgaXQgaXMgdGhlIGNhc2UsIHdlIHJldHJpZXZlIHRoZSBwYXJlbnQgYW5kIGdpdmUgaXQgdG8gc21hcnR5DQoJaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pICYmICRwYXJhbXNbInBhcmVudCJdICE9ICIiKXsNCgkJJHBhcmVudG9iaiA9ICR0aGlzLT5nZXRfb2JqdHJlZSgkcGFyYW1zWyJwYXJlbnQiXSwgJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHdoYXQsZmFsc2UpLCAiYWxpYXMiKTsNCgl9DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJlbnRvYmoiLCRwYXJlbnRvYmopOw0KCQ0KCSRzZWxlY3RlZGFsaWFzID0gZmFsc2U7DQoJLy8gd2UgY2hlY2sgaWYgdGhlIGN1cnJlbnQgcGFnZSBoYXMgb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBtb2R1bGUgd2hpY2ggYXJlIGluIGFjdGlvbg0KCSRnbG9iID0gJHRoaXMtPmdldF9tb2R1bGVHZXRWYXJzKCk7DQoJaWYoJHdoYXQgPT0gJGZpbmFsbGV2ZWwgJiYgaXNzZXQoJGdsb2JbImFsaWFzIl0pKXsNCgkJJHNlbGVjdGVkYWxpYXMgPSAkZ2xvYlsiYWxpYXMiXTsNCgl9ZWxzZWlmKGlzc2V0KCRnbG9iWyJwYXJlbnQiXSkgJiYgaXNzZXQoJGdsb2JbIndoYXQiXSkgJiYgJGdsb2JbIndoYXQiXSA9PSAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCkpew0KCQkkc2VsZWN0ZWRhbGlhcyA9ICRnbG9iWyJwYXJlbnQiXTsNCgl9DQoJaWYoaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pICYmIGlzc2V0KCRnbG9iWyJwYWdlaW5kZXgiXSkgJiYgIWlzc2V0KCRwYXJhbXNbInBhZ2VpbmRleCJdKSkgJHBhcmFtc1sicGFnZWluZGV4Il0gPSAkZ2xvYlsicGFnZWluZGV4Il07DQoJaWYoIWlzc2V0KCR0aGlzLT5wbGN1cnJlbnRbJHdoYXRdKSkJJHRoaXMtPmJ1aWxkR2xvYmFsVHJlZSgpOw0KCWlmKGlzc2V0KCR0aGlzLT5wbGN1cnJlbnRbJHdoYXRdKSkJJHNlbGVjdGVkYWxpYXMgPSAkdGhpcy0+cGxjdXJyZW50WyR3aGF0XTsNCglpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkgJiYgIWlzc2V0KCRwYXJhbXNbInBhZ2VpbmRleCJdKSkgJHBhcmFtc1sicGFnZWluZGV4Il0gPSAkdGhpcy0+Y3VycmVudHBhZ2VpbmRleDsNCgkkbGlua3JldHVybmlkID0gKGlzc2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkpPyR0aGlzLT5nZXRfcGFnZWlkKCRwYXJhbXNbImRldGFpbHBhZ2UiXSk6JHJldHVybmlkOw0KDQoJLy8gd2UgcmV0cmlldmUgdGhlIHRlbXBsYXRlDQoJaWYoaXNzZXQoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0pICYmICRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdICE9ICIiICYmICRjdXN0b210cGwgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0sICR0aGlzLT5HZXROYW1lKCkpKXsNCgkJJHRlbXBsYXRlID0gJGN1c3RvbXRwbDsNCgl9ZWxzZXsNCgkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfIi4kd2hhdCk7DQoJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVuYW1lLCAkdGhpcy0+R2V0TmFtZSgpKTsNCgl9DQoNCgkvLyBpZiBSQU5ET00gb3B0aW9uIGlzIHNldCwgd2UgcmFuZG9tbHkgc2VsZWN0ZWQgb25seSBhIG51bWJlciBvZiB0aGUgaXRlbXMgcmV0cmlldmVkDQoJaWYoIGlzc2V0KCRwYXJhbXNbInJhbmRvbSJdKSAmJiAkcGFyYW1zWyJyYW5kb20iXSA+IDAgJiYgJHBhcmFtc1sicmFuZG9tIl0gPCBjb3VudCgkaXRlbWxpc3QpICl7DQoJCSRuZXdsaXN0ID0gYXJyYXkoKTsNCgkJJGkgPSAxOw0KCQkkc2VsZWN0ZWQgPSBhcnJheSgpOw0KCQkkY3VycmFuZCA9IHJhbmQoMCwoY291bnQoJGl0ZW1saXN0KS0xKSk7DQoJCXdoaWxlKCRpIDw9ICRwYXJhbXNbInJhbmRvbSJdKXsNCgkJCXdoaWxlKGluX2FycmF5KCRjdXJyYW5kLCAkc2VsZWN0ZWQpICYmIGNvdW50KCRzZWxlY3RlZCkgPCBjb3VudCgkaXRlbWxpc3QpKQkkY3VycmFuZCA9IHJhbmQoMCwoY291bnQoJGl0ZW1saXN0KS0xKSk7DQoJCQkkbmV3bGlzdFtdID0gJGl0ZW1saXN0WyRjdXJyYW5kXTsNCgkJCSRzZWxlY3RlZFtdID0gJGN1cnJhbmQ7DQoJCQkkaSsrOw0KCQl9DQoJCSRpdGVtbGlzdCA9ICRuZXdsaXN0Ow0KCX0NCgkJDQoJLy8gZmluYWwgcHJvY2Vzc2luZyAtIHdlIGNyZWF0ZSB0aGUgZGV0YWlsbGlua3MgZm9yIGVhY2ggaXRlbQ0KCSRuZXdsaXN0ID0gYXJyYXkoKTsNCglmb3JlYWNoKCRpdGVtbGlzdCBhcyAkaXRlbSl7DQoJCSRpdGVtID0gJHRoaXMtPmFkZGZyb250ZW5kdXJscygkaXRlbSwkcGFyYW1zLCRpZCwkbGlua3JldHVybmlkKTsNCgkJJGl0ZW0tPmlzX3NlbGVjdGVkID0gKCRpdGVtLT5hbGlhcyA9PSAkc2VsZWN0ZWRhbGlhcyk/dHJ1ZTpmYWxzZTsNCgkJYXJyYXlfcHVzaCgkbmV3bGlzdCwgJGl0ZW0pOw0KCX0NCgkkaXRlbWxpc3QgPSAkbmV3bGlzdDsNCgkNCgkkdGhpcy0+cGFnaW5hdGUoJHdoYXQsJHRvdGFsLCRpZCwkcmV0dXJuaWQsJHBhcmFtcyk7DQoJDQoJLy8gd2UgZ2l2ZSBldmVyeXRoaW5nIHRvIHNtYXJ0eSBhbmQgcHJvY2VzcyB0aGUgdGVtcGxhdGUNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkaXRlbWxpc3QpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigibGV2ZWx0aXRsZSIsJHRoaXMtPkxhbmcoJHdoYXQuIl9wbHVyYWwiKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtY291bnQiLGNvdW50KCRpdGVtbGlzdCkpOw0KCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0ZW1wbGF0ZSk7DQoJDQp9ZWxzZXsNCgkNCgkvLyAjIyMjIyMjIyMjIyMjIyMjIyBXRSBBUkVOJ1QgRElTUExBWUlORyBBTllUSElORyBBVCBBTEwNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImVycm9yX21zZyIsKGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pPyR0aGlzLT5MYW5nKCJlcnJvcl9ub3Rmb3VuZCIpOiR0aGlzLT5MYW5nKCJlcnJvcl9ub2l0ZW1mb3VuZCIpKSk7DQoJJHBhcmVudG9iaiA9IGZhbHNlOw0KCWlmKGlzc2V0KCRwYXJhbXNbInBhcmVudCJdKSAmJiAkcGFyZW50bGV2ZWwpew0KCQkkdG1wZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHBhcmVudGxldmVsOw0KCQkkcGFyZW50b2JqID0gJHRoaXMtPiR0bXBmdW5jdGlvbihhcnJheSgiYWxpYXMiPT4kcGFyYW1zWyJwYXJlbnQiXSkpOw0KCQkkcGFyZW50b2JqID0gaXNzZXQoJHBhcmVudG9ialswXSk/JHBhcmVudG9ialswXTpmYWxzZTsNCgl9DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJlbnRvYmoiLCRwYXJlbnRvYmopOw0KCQ0KCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJlbXB0eXRlbXBsYXRlIiwiKioiKTsNCglpZigkdGVtcGxhdGUgPT0gIioqIil7DQoJCS8vIHdlIHVzZSB0aGUgbGlzdCB0ZW1wbGF0ZQ0KCQlpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkgJiYgJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0gIT0gIiIgJiYgJGN1c3RvbXRwbCA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSwgJHRoaXMtPkdldE5hbWUoKSkpew0KCQkJJHRlbXBsYXRlID0gJGN1c3RvbXRwbDsNCgkJfWVsc2V7DQoJCQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV8iLiR3aGF0KTsNCgkJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVuYW1lLCAkdGhpcy0+R2V0TmFtZSgpKTsNCgkJfQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkaXRlbWxpc3QpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImxldmVsdGl0bGUiLCR0aGlzLT5MYW5nKCR3aGF0LiJfcGx1cmFsIikpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1jb3VudCIsMCk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbihhcnJheSgicGFnZV9zaG93aW5nIj0+ZmFsc2UsInBhZ2VfdG90YWxpdGVtcyI9PmZhbHNlLCJwYWdlX3BhZ2VudW1iZXJzIj0+ZmFsc2UsInBhZ2VfbmV4dCI9PmZhbHNlLCJwYWdlX3ByZXZpb3VzIj0+ZmFsc2UpKTsNCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsNCgl9ZWxzZXsNCgkJLy8gd2UgdXNlIHRoZSBub3Jlc3VsdCB0ZW1wbGF0ZQ0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHRlbXBsYXRlKTsNCgl9DQoNCn0NCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQokYWN0aXZlX3RhYiA9IGlzc2V0KCRwYXJhbXNbImFjdGl2ZV90YWIiXSk/JHBhcmFtc1siYWN0aXZlX3RhYiJdOiJ2ZWhpY2xldHlwZSI7DQoNCiRoYXNfYWR2YW5jZWRfcGVybSA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF1dG9zX2FkdmFuY2VkIik7DQoNCiRmaWx0ZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGlzcGxheV9maWx0ZXIiLGZhbHNlKTsNCiRpbnN0YW50c2VhcmNoID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImRpc3BsYXlfaW5zdGFudHNlYXJjaCIsZmFsc2UpOw0KJGluc3RhbnRzb3J0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImRpc3BsYXlfaW5zdGFudHNvcnQiLGZhbHNlKTsNCiRhZG1pbnBhZ2VzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImFkbWlucGFnZXMiLDApOw0KJHVzZV9oaWVyYXJjaHkgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidXNlX2hpZXJhcmNoeSIsZmFsc2UpOw0KJHVzZV9zZXNzaW9uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInVzZV9zZXNzaW9uIix0cnVlKTsNCg0KaWYoJGluc3RhbnRzb3J0IHx8ICRpbnN0YW50c2VhcmNoKXsNCgllY2hvICcNCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQonOw0KCWlmKCRpbnN0YW50c2VhcmNoKQllY2hvICR0aGlzLT5nZXRGaWxlQ29udGVudCgiaW5zdGFudHNlYXJjaC5qcyIpOw0KCWlmKCRpbnN0YW50c29ydCkJZWNobyAkdGhpcy0+Z2V0RmlsZUNvbnRlbnQoImluc3RhbnRzb3J0LmpzIik7DQoJZWNobyAiDQoJPC9zY3JpcHQ+DQoiOw0KfQ0KDQplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsNCglpZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X3ZlaGljbGV0eXBlIixmYWxzZSkgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigiYXV0b3NfbWFuYWdlX3ZlaGljbGV0eXBlIikgKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigidmVoaWNsZXR5cGUiLCAkdGhpcy0+TGFuZygidmVoaWNsZXR5cGVfcGx1cmFsIiksICJ2ZWhpY2xldHlwZSIgPT0gJGFjdGl2ZV90YWIgPyB0cnVlIDogZmFsc2UpOw0KCX0NCglpZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X3ZlaGljbGUiLGZhbHNlKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdXRvc19tYW5hZ2VfdmVoaWNsZSIpICkgew0KCQllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoInZlaGljbGUiLCAkdGhpcy0+TGFuZygidmVoaWNsZV9wbHVyYWwiKSwgInZlaGljbGUiID09ICRhY3RpdmVfdGFiID8gdHJ1ZSA6IGZhbHNlKTsNCgl9DQoJaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV9maWVsZG9wdGlvbnMiLGZhbHNlKSApIHsNCgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJmaWVsZG9wdGlvbnMiLCAkdGhpcy0+TGFuZygiZmllbGRvcHRpb25zIiksICJmaWVsZG9wdGlvbnMiID09ICRhY3RpdmVfdGFiID8gdHJ1ZSA6IGZhbHNlKTsJCQ0KCX0NCglpZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oIk1vZGlmeSBUZW1wbGF0ZXMiKSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV90ZW1wbGF0ZXMiLGZhbHNlKSApIHsNCgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJ0ZW1wbGF0ZXMiLCAkdGhpcy0+TGFuZygidGVtcGxhdGVzIiksICJ0ZW1wbGF0ZXMiID09ICRhY3RpdmVfdGFiID8gdHJ1ZSA6IGZhbHNlKTsJCQ0KCX0NCglpZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X3F1ZXJpZXMiLGZhbHNlKSApIHsNCgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJxdWVyaWVzIiwgJHRoaXMtPkxhbmcoInF1ZXJpZXMiKSwgInF1ZXJpZXMiID09ICRhY3RpdmVfdGFiID8gdHJ1ZSA6IGZhbHNlKTsJCQ0KCX0NCglpZiggJGhhc19hZHZhbmNlZF9wZXJtICkgew0KCQllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoInByZWZlcmVuY2VzIiwgJHRoaXMtPkxhbmcoInByZWZlcmVuY2VzIiksICJwcmVmZXJlbmNlcyIgPT0gJGFjdGl2ZV90YWIgPyB0cnVlIDogZmFsc2UpOwkJDQoJfQ0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOw0KDQoNCg0KZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7DQoNCg0KaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV92ZWhpY2xldHlwZSIsZmFsc2UpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF1dG9zX21hbmFnZV92ZWhpY2xldHlwZSIpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJ2ZWhpY2xldHlwZSIpOw0KDQoJCSR3aGVyZWNsYXVzZSA9IGFycmF5KCk7DQoJCSRmaWx0ZXJvdXRwdXQgPSBmYWxzZTsNCg0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImZpbHRlciIsICRmaWx0ZXJvdXRwdXQpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImluc3RhbnRzZWFyY2giLCAkaW5zdGFudHNlYXJjaD8kdGhpcy0+TGFuZygic2VhcmNodGhpc3RhYmxlIikuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAic2VhcmNodGFibGVfdmVoaWNsZXR5cGUiLCAiIiwgMTAsIDY0LCAnIG9ua2V5dXA9ImN0bG1tX3NlYXJjaCh0aGlzLnZhbHVlLFwndmVoaWNsZXR5cGVfdGFibGVcJyk7IicpOmZhbHNlKTsNCgkJCQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkZG5ldyIsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImVkaXRBIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJhZGRfdmVoaWNsZXR5cGUiKSkpOw0KCQkkcmVvcmRlcl9idG4gPSBmYWxzZTtpZigkaGFzX2FkdmFuY2VkX3Blcm0gfHwgISR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF1dG9zX21hbmFnZV92ZWhpY2xldHlwZSIpKQkkcmVvcmRlcl9idG4gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJyZW9yZGVyIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vcmVvcmRlci5naWYiLCAiIiwiIiwiIiwic3lzdGVtaWNvbiIpLiIgIi4kdGhpcy0+TGFuZygicmVvcmRlciIpKTsNCgkJCQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInJlb3JkZXIiLCAkcmVvcmRlcl9idG4pOw0KCQkkbGltaXQgPSBmYWxzZTsNCgkJaWYoJGFkbWlucGFnZXMpew0KCQkJJGxpbWl0ID0gKChpc3NldCgkcGFyYW1zWyJ2ZWhpY2xldHlwZV9wYWdlIl0pPyRwYXJhbXNbInZlaGljbGV0eXBlX3BhZ2UiXTowKSAqICRhZG1pbnBhZ2VzKS4iLCIuJGFkbWlucGFnZXM7DQoJCX0NCgkJDQoJCQkkaXRlbWxpc3QgPSAkdGhpcy0+Z2V0X2xldmVsX3ZlaGljbGV0eXBlKGlzc2V0KCR3aGVyZWNsYXVzZSk/JHdoZXJlY2xhdXNlOmFycmF5KCksdHJ1ZSwgJGlkLCAkcmV0dXJuaWQsIGZhbHNlLCAkbGltaXQpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0YWJsZWlkIiwgInZlaGljbGV0eXBlX3RhYmxlIik7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwgJGl0ZW1saXN0KTsNCgkJCSRhZG1pbnNob3cgPSBhcnJheSgNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJhY3RpdmUiKSwidG9nZ2xlYWN0aXZlIix0cnVlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygidmVoaWNsZXR5cGVfY2xhc3NpZmljYXRpb24iKSwiY2xhc3NpZmljYXRpb24iLGZhbHNlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygicmVvcmRlciIpLCJtb3ZlbGlua3MiLHRydWUpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJBY3Rpb25zIiksImRlbGV0ZWxpbmsiLHRydWUpCQkNCgkJCQkpOw0KCQkJaWYoJGluc3RhbnRzb3J0ICYmIGNvdW50KCRpdGVtbGlzdCk+MSl7DQoJCQkJJGkgPSAwOw0KCQkJCXdoaWxlKCRpPGNvdW50KCRhZG1pbnNob3cpKXsNCgkJCQkJaWYoISRhZG1pbnNob3dbJGldWzJdKQkkYWRtaW5zaG93WyRpXVswXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwndmVoaWNsZXR5cGVfdGFibGVcJywnLiRpLicpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF91cC5naWYiIGFsdD0iXiIvPjwvYT48YnIvPjxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9zb3J0Um93cyhcJ3ZlaGljbGV0eXBlX3RhYmxlXCcsJy4kaS4nLHRydWUpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF9kb3duLmdpZiIgYWx0PSJ2Ii8+PC9hPjwvZGl2PjxkaXYgc3R5bGU9ImxpbmUtaGVpZ2h0OiAyNHB4OyI+ICZuYnNwOycuJGFkbWluc2hvd1skaV1bMF0uIjwvZGl2PiI7DQoJCQkJCSRpKys7DQoJCQkJfQ0KCQkJfQ0KCQkJbGlzdCgkcGFnZWluZm8sICRuZXh0cGFnZSwgJHByZXZpb3VzcGFnZSwgJHBhZ2VzKSA9ICR0aGlzLT5hZG1pbl9wYWdpbmF0ZSgidmVoaWNsZXR5cGUiLCRhZG1pbnBhZ2VzLCRpZCwkcmV0dXJuaWQsJHBhcmFtcyk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5leHRwYWdlIiwgJG5leHRwYWdlKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicHJldmlvdXNwYWdlIiwgJHByZXZpb3VzcGFnZSk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2VpbmZvIiwgJHBhZ2VpbmZvKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZXMiLCAkcGFnZXMpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZG1pbnNob3ciLCAkYWRtaW5zaG93KTsNCgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTsNCg0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KDQp9DQoNCmlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfdmVoaWNsZSIsZmFsc2UpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF1dG9zX21hbmFnZV92ZWhpY2xlIikgKSB7DQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoInZlaGljbGUiKTsNCg0KCWlmKCR0aGlzLT5jb3VudHNvbWV0aGluZygidmVoaWNsZXR5cGUiKSA+IDApew0KDQoJCSR3aGVyZWNsYXVzZSA9IGFycmF5KCk7DQoJCSRmaWx0ZXJvdXRwdXQgPSBmYWxzZTsNCg0KCQkJaWYoJGZpbHRlcil7DQoJCQkJJGN1cl9maWx0ZXIgPSBmYWxzZTsNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJ2ZWhpY2xlX3Nob3dvbmx5Il0pKXsNCgkJCQkJJGN1cl9maWx0ZXIgPSAkcGFyYW1zWyJ2ZWhpY2xlX3Nob3dvbmx5Il07DQoJCQkJCWlmKCR1c2Vfc2Vzc29pbikJJF9TRVNTSU9OWyJjdGxtbV9maWx0ZXJfdmVoaWNsZSJdID0gJHBhcmFtc1sidmVoaWNsZV9zaG93b25seSJdOw0KCQkJCX1lbHNlaWYoJHVzZV9zZXNzaW9uICYmIGlzc2V0KCRfU0VTU0lPTlsiY3RsbW1fZmlsdGVyX3ZlaGljbGUiXSkgJiYgJF9TRVNTSU9OWyJjdGxtbV9maWx0ZXJfdmVoaWNsZSJdKXsNCgkJCQkJJGN1cl9maWx0ZXIgPSAkX1NFU1NJT05bImN0bG1tX2ZpbHRlcl92ZWhpY2xlIl07DQoJCQkJfQ0KCQkJCWlmKCRjdXJfZmlsdGVyICYmICRjdXJfZmlsdGVyICE9ICIiKXsNCgkJCQkJJGZpbHRlcm9wdGlvbnMgPSBhcnJheV9mbGlwKCR0aGlzLT5nZXRfb3B0aW9ucygidmVoaWNsZXR5cGUiKSk7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgPSBpc3NldCgkZmlsdGVyb3B0aW9uc1skcGFyYW1zWyJ2ZWhpY2xlX3Nob3dvbmx5Il1dKT8kdGhpcy0+TGFuZygic2hvd2luZ29ubHkiKS4kZmlsdGVyb3B0aW9uc1skcGFyYW1zWyJ2ZWhpY2xlX3Nob3dvbmx5Il1dLiIgIjoiIjsNCgkJCQkJJGZpbHRlcm91dHB1dCAuPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJzaG93YWxsIiksIGFycmF5KCJhY3RpdmVfdGFiIiA9PiAidmVoaWNsZSIsICJ2ZWhpY2xlX3Nob3dvbmx5Ij0+ZmFsc2UpKTsNCgkJCQkJJHdoZXJlY2xhdXNlID0gYXJyYXkoInBhcmVudF9pZCI9PiRwYXJhbXNbInZlaGljbGVfc2hvd29ubHkiXSk7DQoJCQkJfWVsc2V7CQkJCQkNCgkJCQkJaWYoJHVzZV9oaWVyYXJjaHkpew0KCQkJCQkJJGZpbHRlcm9wdGlvbnMgPSAkdGhpcy0+Z2V0X2FkbWluX2hpZXJhcmNoeW9wdGlvbnMoInZlaGljbGUiLHRydWUpOw0KCQkJCQl9ZWxzZXsNCgkJCQkJCSRmaWx0ZXJvcHRpb25zID0gJHRoaXMtPmdldF9vcHRpb25zKCJ2ZWhpY2xldHlwZSIpOw0KCQkJCQl9DQoJCQkJCSRmaWx0ZXJvdXRwdXQgPSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCk7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgLj0gJHRoaXMtPkxhbmcoImZpbHRlcmJ5X3ZlaGljbGV0eXBlIikuIiA6ICI7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAidmVoaWNsZV9zaG93b25seSIsICRmaWx0ZXJvcHRpb25zLCAtMSk7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImFjdGl2ZV90YWIiLCAidmVoaWNsZSIpOw0KCQkJCQkkZmlsdGVyb3V0cHV0IC49ICIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpOw0KCQkJCQkkZmlsdGVyb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoJCQkJfQ0KCQkJfQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImZpbHRlciIsICRmaWx0ZXJvdXRwdXQpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImluc3RhbnRzZWFyY2giLCAkaW5zdGFudHNlYXJjaD8kdGhpcy0+TGFuZygic2VhcmNodGhpc3RhYmxlIikuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAic2VhcmNodGFibGVfdmVoaWNsZSIsICIiLCAxMCwgNjQsICcgb25rZXl1cD0iY3RsbW1fc2VhcmNoKHRoaXMudmFsdWUsXCd2ZWhpY2xlX3RhYmxlXCcpOyInKTpmYWxzZSk7DQoJCQkNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZGRuZXciLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJlZGl0QiIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYiLCAiIiwiIiwiIiwic3lzdGVtaWNvbiIpLiIgIi4kdGhpcy0+TGFuZygiYWRkX3ZlaGljbGUiKSkpOw0KCQkkcmVvcmRlcl9idG4gPSBmYWxzZTtpZigkaGFzX2FkdmFuY2VkX3Blcm0gfHwgISR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF1dG9zX21hbmFnZV92ZWhpY2xlIikpCSRyZW9yZGVyX2J0biA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInJlb3JkZXIiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9yZW9yZGVyLmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJyZW9yZGVyIikpOw0KCQkJDQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicmVvcmRlciIsICRyZW9yZGVyX2J0bik7DQoJCSRsaW1pdCA9IGZhbHNlOw0KCQlpZigkYWRtaW5wYWdlcyl7DQoJCQkkbGltaXQgPSAoKGlzc2V0KCRwYXJhbXNbInZlaGljbGVfcGFnZSJdKT8kcGFyYW1zWyJ2ZWhpY2xlX3BhZ2UiXTowKSAqICRhZG1pbnBhZ2VzKS4iLCIuJGFkbWlucGFnZXM7DQoJCX0NCgkJDQoJCQkkaXRlbWxpc3QgPSAkdGhpcy0+Z2V0X2xldmVsX3ZlaGljbGUoaXNzZXQoJHdoZXJlY2xhdXNlKT8kd2hlcmVjbGF1c2U6YXJyYXkoKSx0cnVlLCAkaWQsICRyZXR1cm5pZCwgZmFsc2UsICRsaW1pdCk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRhYmxlaWQiLCAidmVoaWNsZV90YWJsZSIpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtbGlzdCIsICRpdGVtbGlzdCk7DQoJCQkkYWRtaW5zaG93ID0gYXJyYXkoDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIm5hbWUiKSwiZWRpdGxpbmsiLGZhbHNlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygidmVoaWNsZV95ZWFyIiksInllYXIiLGZhbHNlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygidmVoaWNsZV9tYWtlIiksIm1ha2VfbmFtZXZhbHVlIixmYWxzZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoInZlaGljbGVfbW9kZWwiKSwibW9kZWwiLGZhbHNlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygidmVoaWNsZV9wcmljZSIpLCJwcmljZSIsZmFsc2UpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJhY3RpdmUiKSwidG9nZ2xlYWN0aXZlIix0cnVlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygiaXNkZWZhdWx0IiksInRvZ2dsZWRlZmF1bHQiLHRydWUpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJyZW9yZGVyIiksIm1vdmVsaW5rcyIsdHJ1ZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIkFjdGlvbnMiKSwiZGVsZXRlbGluayIsdHJ1ZSkJCQ0KCQkJCSk7DQoJCQlpZigkaW5zdGFudHNvcnQgJiYgY291bnQoJGl0ZW1saXN0KT4xKXsNCgkJCQkkaSA9IDA7DQoJCQkJd2hpbGUoJGk8Y291bnQoJGFkbWluc2hvdykpew0KCQkJCQlpZighJGFkbWluc2hvd1skaV1bMl0pCSRhZG1pbnNob3dbJGldWzBdID0gJzxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7Ij48YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fc29ydFJvd3MoXCd2ZWhpY2xlX3RhYmxlXCcsJy4kaS4nKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfdXAuZ2lmIiBhbHQ9Il4iLz48L2E+PGJyLz48YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fc29ydFJvd3MoXCd2ZWhpY2xlX3RhYmxlXCcsJy4kaS4nLHRydWUpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF9kb3duLmdpZiIgYWx0PSJ2Ii8+PC9hPjwvZGl2PjxkaXYgc3R5bGU9ImxpbmUtaGVpZ2h0OiAyNHB4OyI+ICZuYnNwOycuJGFkbWluc2hvd1skaV1bMF0uIjwvZGl2PiI7DQoJCQkJCSRpKys7DQoJCQkJfQ0KCQkJfQ0KCQkJbGlzdCgkcGFnZWluZm8sICRuZXh0cGFnZSwgJHByZXZpb3VzcGFnZSwgJHBhZ2VzKSA9ICR0aGlzLT5hZG1pbl9wYWdpbmF0ZSgidmVoaWNsZSIsJGFkbWlucGFnZXMsJGlkLCRyZXR1cm5pZCwkcGFyYW1zKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibmV4dHBhZ2UiLCAkbmV4dHBhZ2UpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwcmV2aW91c3BhZ2UiLCAkcHJldmlvdXNwYWdlKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZWluZm8iLCAkcGFnZWluZm8pOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYWdlcyIsICRwYWdlcyk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkbWluc2hvdyIsICRhZG1pbnNob3cpOw0KCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsLnRwbCIpOw0KDQoJfWVsc2V7DQoJCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoImVycm9yX25vcGFyZW50IikuIjwvcD4iOw0KCX0NCg0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KDQp9DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKGFycmF5KCJuZXh0cGFnZSI9PmZhbHNlLCJwcmV2aW91c3BhZ2UiPT5mYWxzZSwicGFnZWluZm8iPT5mYWxzZSwicGFnZXMiPT5mYWxzZSkpOw0KDQoNCmlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigiTW9kaWZ5IFRlbXBsYXRlcyIpIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X2ZpZWxkb3B0aW9ucyIsZmFsc2UpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJmaWVsZG9wdGlvbnMiKTsNCg0KCWVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA2MDBweDtcIj48bGVnZW5kPjxiPih2ZWhpY2xlKSBtYWtlIDo8L2I+PC9sZWdlbmQ+PHVsPiI7DQoJJG9wdGlvbnMgPSAkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygidmVoaWNsZV9tYWtlIix0cnVlKTsNCgllY2hvICc8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4nOw0KCSRyb3djbGFzcyA9IDE7DQoJZm9yZWFjaCgkb3B0aW9ucyBhcyAkb3B0aW9uKXsNCgkJJG5ld3BhcmFtcyA9IGFycmF5KCJmaWVsZCI9PiJ2ZWhpY2xlX21ha2UiLCAib3B0aW9uaWQiPT4kb3B0aW9uLT5pZCwgImN1cnJlbnRvcmRlciI9PiRvcHRpb24tPml0ZW1fb3JkZXIpOw0KCQllY2hvICINCgkJPHRyIGNsYXNzPVwicm93Ii4kcm93Y2xhc3MuIlwiPjx0ZD4iLiRvcHRpb24tPm5hbWUuIjwvdGQ+PHRkIHdpZHRoPVwiMTIwXCI+IjsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJyZW5hbWVfb3B0aW9udmFsdWUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9lZGl0LmdpZiIsIGxhbmcoImVkaXQiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZSgkbmV3cGFyYW1zLCBhcnJheSgib3B0aW9ubmFtZSI9PiRvcHRpb24tPm5hbWUpKSkuIiAiOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlbGV0ZV9vcHRpb252YWx1ZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYiLGxhbmcoImRlbGV0ZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksICRuZXdwYXJhbXMsICR0aGlzLT5MYW5nKCJwcm9tcHRfZGVsZXRlb3B0aW9uIikpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgIm1vdmVfb3B0aW9udmFsdWUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9hcnJvdy11LmdpZiIsbGFuZygidXAiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZSgkbmV3cGFyYW1zLCBhcnJheSgibW92ZSI9PiJ1cCIpKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAibW92ZV9vcHRpb252YWx1ZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmIixsYW5nKCJkb3duIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoJG5ld3BhcmFtcywgYXJyYXkoIm1vdmUiPT4iZG93biIpKSk7DQoJCWVjaG8gIjwvdGQ+PC90cj4iOw0KCQkkcm93Y2xhc3MgPSAkcm93Y2xhc3MgPT0gMT8yOjE7DQoJfQ0KCWVjaG8gIjwvdGFibGU+IjsNCgllY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiYWRkX29wdGlvbnZhbHVlIik7DQoJCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoImFkZG9wdGlvbiIpLiI6ICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICJvcHRpb25uYW1lIiwgIiIsIDIwLCA2NCk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZpZWxkIiwgInZlaGljbGVfbWFrZSIpOw0KCQllY2hvICIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoJZWNobyAiPC9wPjwvZmllbGRzZXQ+PGJyLz48YnIvPiI7DQoJZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDYwMHB4O1wiPjxsZWdlbmQ+PGI+KHZlaGljbGUpIGZlYXR1cmVzIDo8L2I+PC9sZWdlbmQ+PHVsPiI7DQoJJG9wdGlvbnMgPSAkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygidmVoaWNsZV9mZWF0dXJlcyIsdHJ1ZSk7DQoJZWNobyAnPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+JzsNCgkkcm93Y2xhc3MgPSAxOw0KCWZvcmVhY2goJG9wdGlvbnMgYXMgJG9wdGlvbil7DQoJCSRuZXdwYXJhbXMgPSBhcnJheSgiZmllbGQiPT4idmVoaWNsZV9mZWF0dXJlcyIsICJvcHRpb25pZCI9PiRvcHRpb24tPmlkLCAiY3VycmVudG9yZGVyIj0+JG9wdGlvbi0+aXRlbV9vcmRlcik7DQoJCWVjaG8gIg0KCQk8dHIgY2xhc3M9XCJyb3ciLiRyb3djbGFzcy4iXCI+PHRkPiIuJG9wdGlvbi0+bmFtZS4iPC90ZD48dGQgd2lkdGg9XCIxMjBcIj4iOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInJlbmFtZV9vcHRpb252YWx1ZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2VkaXQuZ2lmIiwgbGFuZygiZWRpdCIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKCRuZXdwYXJhbXMsIGFycmF5KCJvcHRpb25uYW1lIj0+JG9wdGlvbi0+bmFtZSkpKS4iICI7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVsZXRlX29wdGlvbnZhbHVlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZiIsbGFuZygiZGVsZXRlIiksIiIsIiIsInN5c3RlbWljb24iKSwgJG5ld3BhcmFtcywgJHRoaXMtPkxhbmcoInByb21wdF9kZWxldGVvcHRpb24iKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAibW92ZV9vcHRpb252YWx1ZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2Fycm93LXUuZ2lmIixsYW5nKCJ1cCIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKCRuZXdwYXJhbXMsIGFycmF5KCJtb3ZlIj0+InVwIikpKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJtb3ZlX29wdGlvbnZhbHVlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vYXJyb3ctZC5naWYiLGxhbmcoImRvd24iKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZSgkbmV3cGFyYW1zLCBhcnJheSgibW92ZSI9PiJkb3duIikpKTsNCgkJZWNobyAiPC90ZD48L3RyPiI7DQoJCSRyb3djbGFzcyA9ICRyb3djbGFzcyA9PSAxPzI6MTsNCgl9DQoJZWNobyAiPC90YWJsZT4iOw0KCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJhZGRfb3B0aW9udmFsdWUiKTsNCgkJZWNobyAiPHA+Ii4kdGhpcy0+TGFuZygiYWRkb3B0aW9uIikuIjogIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgIm9wdGlvbm5hbWUiLCAiIiwgMjAsIDY0KTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiZmllbGQiLCAidmVoaWNsZV9mZWF0dXJlcyIpOw0KCQllY2hvICIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoJZWNobyAiPC9wPjwvZmllbGRzZXQ+PGJyLz48YnIvPiI7DQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQp9DQoNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oYXJyYXkoImZpbHRlciI9PmZhbHNlLCJyZW9yZGVyIj0+ZmFsc2UsImluc3RhbnRzZWFyY2giPT5mYWxzZSwidGFibGVpZCI9PmZhbHNlKSk7DQoNCmlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigiTW9kaWZ5IFRlbXBsYXRlcyIpIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X3RlbXBsYXRlcyIsZmFsc2UpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJ0ZW1wbGF0ZXMiKTsNCgkNCiAgICBlY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNjAwcHg7XCI+PGxlZ2VuZD48Yj4iLiR0aGlzLT5MYW5nKCJkZWZhdWx0dGVtcGxhdGVzIikuIjwvYj48L2xlZ2VuZD4iOw0KICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJjaGFuZ2VkZWZ0ZW1wbGF0ZXMiLCAkcmV0dXJuaWQpOw0KICAgICR0ZW1wbGF0ZWxpc3QgPSAkdGhpcy0+TGlzdFRlbXBsYXRlcygkdGhpcy0+R2V0TmFtZSgpKTsNCiAgICAkZGVmdHBscyA9ICR0aGlzLT5nZXREZWZhdWx0VGVtcGxhdGVzKCk7DQogICAgJHRwbG9wdGlvbnMgPSBhcnJheSgpOw0KICAgICRpdGVtbGlzdCA9IGFycmF5KCk7DQogICAgZm9yZWFjaCgkdGVtcGxhdGVsaXN0IGFzICRvbmV0cGwpew0KCSAgICR0cGxvcHRpb25zWyRvbmV0cGxdID0gJG9uZXRwbDsNCgkgICAkdHBsID0gbmV3IHN0ZENsYXNzKCk7DQoJICAgJHRwbC0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAiZWRpdFRlbXBsYXRlIiwgJHJldHVybmlkLCAkb25ldHBsLCBhcnJheSgidHBsbmFtZSI9PiRvbmV0cGwpICk7DQoJICAgJHRwbC0+ZGVsZXRlbGluayA9IGluX2FycmF5KCRvbmV0cGwsICRkZWZ0cGxzKT8iIjokdGhpcy0+Q3JlYXRlTGluayggJGlkLCAiZGVsZXRldHBsIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZiIsICR0aGlzLT5MYW5nKCJkZWxldGUiKSwgIiIsICIiLCAic3lzdGVtaWNvbiIpLCBhcnJheSgidHBsbmFtZSI9PiRvbmV0cGwpICk7DQoJICAgYXJyYXlfcHVzaCgkaXRlbWxpc3QsICR0cGwpOw0KICAgIH0NCg0KCSAgIGVjaG8gIgk8ZGl2IGNsYXNzPVwicGFnZW92ZXJmbG93XCI+DQoJCQkgPHAgY2xhc3M9XCJwYWdldGV4dFwiPiIuJHRoaXMtPkxhbmcoImRlZnRlbXBsYXRlZm9yIikuIiBcInZlaGljbGV0eXBlXCI6PC9wPg0KCQkJIDxwIGNsYXNzPVwicGFnZWlucHV0XCI+Ii4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImxpc3R0ZW1wbGF0ZV92ZWhpY2xldHlwZSIsJHRwbG9wdGlvbnMsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV92ZWhpY2xldHlwZSIpKS4iPC9wPg0KCQk8L2Rpdj4NCiAgICAiOw0KCSAgIGVjaG8gIgk8ZGl2IGNsYXNzPVwicGFnZW92ZXJmbG93XCI+DQoJCQkgPHAgY2xhc3M9XCJwYWdldGV4dFwiPiIuJHRoaXMtPkxhbmcoImRlZnRlbXBsYXRlZm9yIikuIiBcInZlaGljbGVcIjo8L3A+DQoJCQkgPHAgY2xhc3M9XCJwYWdlaW5wdXRcIj4iLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwibGlzdHRlbXBsYXRlX3ZlaGljbGUiLCR0cGxvcHRpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfdmVoaWNsZSIpKS4iPC9wPg0KCQk8L2Rpdj4NCiAgICAiOw0KICAgIGVjaG8gIgk8ZGl2IGNsYXNzPVwicGFnZW92ZXJmbG93XCI+DQoJCQkgPHAgY2xhc3M9XCJwYWdldGV4dFwiPiIuJHRoaXMtPkxhbmcoImRlZmRldGFpbHRlbXBsYXRlIikuIjo8L3A+DQoJCQkgPHAgY2xhc3M9XCJwYWdlaW5wdXRcIj4iLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiZmluYWx0ZW1wbGF0ZSIsJHRwbG9wdGlvbnMsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoImZpbmFsdGVtcGxhdGUiKSkuIjwvcD4NCgkJPC9kaXY+DQoJIjsNCgkkdHBsb3B0aW9uc1skdGhpcy0+TGFuZygidXNlbGV2ZWxsaXN0dHBsIildID0gIioqIjsNCgllY2hvICIJPGRpdiBjbGFzcz1cInBhZ2VvdmVyZmxvd1wiPg0KCQkJIDxwIGNsYXNzPVwicGFnZXRleHRcIj4iLiR0aGlzLT5MYW5nKCJkZWZzZWFyY2hyZXN1bHRzdGVtcGxhdGUiKS4iOjwvcD4NCgkJCSA8cCBjbGFzcz1cInBhZ2VpbnB1dFwiPiIuJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJzZWFyY2hyZXN1bHRzdGVtcGxhdGUiLCR0cGxvcHRpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2hyZXN1bHRzdGVtcGxhdGUiLCIqKiIpKS4iPC9wPg0KCQk8L2Rpdj4NCgkiOw0KCWVjaG8gIgk8ZGl2IGNsYXNzPVwicGFnZW92ZXJmbG93XCI+DQoJCQkgPHAgY2xhc3M9XCJwYWdldGV4dFwiPiIuJHRoaXMtPkxhbmcoImRlZmVtcHR5dGVtcGxhdGUiKS4iOjwvcD4NCgkJCSA8cCBjbGFzcz1cInBhZ2VpbnB1dFwiPiIuJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJlbXB0eXRlbXBsYXRlIiwkdHBsb3B0aW9ucywtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZW1wdHl0ZW1wbGF0ZSIsIioqIikpLiI8L3A+DQoJCTwvZGl2Pg0KICAgIDxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4iPC9wPiI7DQogICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KDQogICAgZWNobyAiPC9maWVsZHNldD48YnIvPjxici8+IjsNCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwgJGl0ZW1saXN0KTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkZG5ldyIsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImVkaXRUZW1wbGF0ZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYiLCAiIiwiIiwiIiwic3lzdGVtaWNvbiIpLiIgIi4kdGhpcy0+TGFuZygiYWRkdGVtcGxhdGUiKSkpOw0KICAgICRhZG1pbnNob3cgPSBhcnJheSgJYXJyYXkoJHRoaXMtPkxhbmcoInRlbXBsYXRlIiksICJlZGl0bGluayIsIGZhbHNlKSwgYXJyYXkoJHRoaXMtPkxhbmcoIkFjdGlvbnMiKSwgImRlbGV0ZWxpbmsiLCBmYWxzZSkJKTsNCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkbWluc2hvdyIsICRhZG1pbnNob3cpOw0KICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCg0KaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV9xdWVyaWVzIixmYWxzZSkgKSB7DQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoInF1ZXJpZXMiKTsNCg0KCQkkaXRlbWxpc3QgPSAkdGhpcy0+Z2V0X3F1ZXJpZXMoJHdoZXJlPWFycmF5KCksIHRydWUsICRpZCwgJHJldHVybmlkKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtbGlzdCIsICRpdGVtbGlzdD8kaXRlbWxpc3Q6YXJyYXkoKSk7DQoJCSRhZG1pbnNob3cgPSBhcnJheSggYXJyYXkoImlkIiwiaWQiKSwNCgkJCQkJCQlhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCAibmFtZSIpLA0KCQkJCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJBY3Rpb25zIiksICJhY3Rpb25zIikNCgkJCQkJCQkpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkbWluc2hvdyIsICRhZG1pbnNob3cpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkZG5ldyIsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImFkbWlucXVlcnkiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmIiwgIiIsIiIsIiIsInN5c3RlbWljb24iKS4iICIuJHRoaXMtPkxhbmcoImNyZWF0ZXF1ZXJ5IikpKTsNCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsLnRwbCIpOw0KCQkNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCg0KaWYoICRoYXNfYWR2YW5jZWRfcGVybSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYigicHJlZmVyZW5jZXMiKTsNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiY2hhbmdlcHJlZmVyZW5jZXMiLCAkcmV0dXJuaWQpOw0KCWVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA0NjVweDtcIj48bGVnZW5kPjxiPiIuJHRoaXMtPkxhbmcoInByZWZfdGFiZGlzcGxheSIpLiI6PC9iPjwvbGVnZW5kPjx1bD4NCgkiOw0KCSR0YWJkaXNwbGF5ID0gYXJyYXkoInZlaGljbGV0eXBlIiwidmVoaWNsZSIsImZpZWxkb3B0aW9ucyIsInRlbXBsYXRlcyIsInF1ZXJpZXMiKTsNCglmb3JlYWNoKCR0YWJkaXNwbGF5IGFzICRvbmVwcmVmKXsNCgkJZWNobyAiPGxpPiIuJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAidGFiZGlzcGxheV8iLiRvbmVwcmVmLCB0cnVlLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV8iLiRvbmVwcmVmLGZhbHNlKSkuJHRoaXMtPkxhbmcoJG9uZXByZWYpLiI8L2xpPg0KCSI7DQoJfQ0KCWVjaG8gIjwvdWw+PGJyLz48cD4iLiR0aGlzLT5MYW5nKCJoZWxwX3RhYmRpc3BsYXkiKS4iPC9wPg0KPC9maWVsZHNldD48YnIvPg0KIjsNCgllY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNDY1cHg7XCI+PGxlZ2VuZD48Yj4iLiR0aGlzLT5MYW5nKCJwcmVmX3NlYXJjaG1vZHVsZV9pbmRleCIpLiI6PC9iPjwvbGVnZW5kPjx1bD4NCgkiOw0KCWZvcmVhY2goJHRoaXMtPmdldF9sZXZlbGFycmF5KCkgYXMgJG9uZXByZWYpew0KCQllY2hvICI8bGk+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICJzZWFyY2htb2R1bGVfaW5kZXhfIi4kb25lcHJlZiwgdHJ1ZSwgJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaG1vZHVsZV9pbmRleF8iLiRvbmVwcmVmLGZhbHNlKSkuJHRoaXMtPkxhbmcoJG9uZXByZWYpLiI8L2xpPg0KCSI7DQoJfQ0KCWVjaG8gIjwvdWw+PGJyLz48cD4iLiR0aGlzLT5MYW5nKCJoZWxwX3NlYXJjaG1vZHVsZV9pbmRleCIpLiI8L3A+DQo8L2ZpZWxkc2V0Pjxici8+DQoiOw0KCWVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA0NjVweDtcIj48bGVnZW5kPjxiPiIuJHRoaXMtPkxhbmcoInByZWZfbmV3aXRlbXNmaXJzdCIpLiI6PC9iPjwvbGVnZW5kPjx1bD4NCgkiOw0KCWZvcmVhY2goJHRoaXMtPmdldF9sZXZlbGFycmF5KCkgYXMgJG9uZXByZWYpew0KCQllY2hvICI8bGk+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICJuZXdpdGVtc2ZpcnN0XyIuJG9uZXByZWYsIHRydWUsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJuZXdpdGVtc2ZpcnN0XyIuJG9uZXByZWYsZmFsc2UpKS4kdGhpcy0+TGFuZygkb25lcHJlZikuIjwvbGk+DQoJIjsNCgl9DQoJZWNobyAiPC91bD48YnIvPjxwPiIuJHRoaXMtPkxhbmcoImhlbHBfbmV3aXRlbXNmaXJzdCIpLiI8L3A+DQo8L2ZpZWxkc2V0Pjxici8+DQoiOw0KDQoJZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDQ2NXB4O1wiPjxsZWdlbmQ+PGI+Ii4kdGhpcy0+TGFuZygicHJlZl9sZXZlbHBhZ2luYXRpb24iKS4iOjwvYj48L2xlZ2VuZD48dWw+DQoJIjsNCglmb3JlYWNoKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpIGFzICRvbmVwcmVmKXsNCgkJZWNobyAiPGxpPiIuJHRoaXMtPkxhbmcoJG9uZXByZWYpLiI6ICI7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICRvbmVwcmVmLiJfcGFnaW5hdGlvbiIsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRvbmVwcmVmLiJfcGFnaW5hdGlvbiIsMCksIDEyLCAzKS4iPC9saT4NCgkiOw0KCX0NCgllY2hvICI8L3VsPjxici8+PHA+Ii4kdGhpcy0+TGFuZygiaGVscF9sZXZlbHBhZ2luYXRpb24iKS4iPC9wPg0KPC9maWVsZHNldD48YnIvPg0KIjsNCg0KCWVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA2MDBweDtcIj48bGVnZW5kPjxiPiIuJHRoaXMtPkxhbmcoInByZWZlcmVuY2VzIikuIjo8L2I+PC9sZWdlbmQ+DQoJIjsNCgkkY2hlY2tib3hwcmVmcyA9IGFycmF5KCJsb2FkX25iY2hpbGRyZW4iLCJsb2FkX25leHRwcmV2aW91cyIsInJlc3RyaWN0X3Blcm1pc3Npb25zIiwidXNlX2hpZXJhcmNoeSIsIm9yZGVyYnluYW1lIiwiZGlzcGxheV9maWx0ZXIiLCJkaXNwbGF5X2luc3RhbnRzZWFyY2giLCJkaXNwbGF5X2luc3RhbnRzb3J0IiwiZWRpdGFibGVfYWxpYXNlcyIsImF1dG9pbmNyZW1lbnRfYWxpYXMiLCJhbGxvd19zcWwiLCJmb3JjZV9saXN0Iiwic2hvd3RodW1ibmFpbHMiLCJkZWxldGVfZmlsZXMiLCJhbGxvd19jb21wbGV4X29yZGVyIiwidXNlX3Nlc3Npb24iKTsNCglmb3JlYWNoKCRjaGVja2JveHByZWZzIGFzICRvbmVwcmVmKXsNCgkJZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICRvbmVwcmVmLCB0cnVlLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkb25lcHJlZixmYWxzZSkpLiIgIi4kdGhpcy0+TGFuZygicHJlZl8iLiRvbmVwcmVmKS4iPC9wPg0KCSI7DQoJfQ0KCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoInByZWZfYWRtaW5wYWdlcyIpLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAiYWRtaW5wYWdlcyIsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJhZG1pbnBhZ2VzIiwwKSwgMTIsIDMpLiI8L3A+DQoJIjsNCgllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJwcmVmX21heHNob3ducGFnZXMiKS4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgIm1heHNob3ducGFnZXMiLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibWF4c2hvd25wYWdlcyIsNyksIDEyLCAyKS4iPC9wPg0KCSI7DQoJZWNobyAiPC9maWVsZHNldD48YnIvPjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4iPC9wPiI7DQogICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCWVjaG8gIjxici8+PHA+Ii4kYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZXhwb3J0IiwgJHJldHVybmlkLCAkdGhpcy0+TGFuZygiZXhwb3J0X3RpdGxlIikpLiIgfCAiLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImltcG9ydCIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoImltcG9ydF90aXRsZSIpKS4iPC9wPiI7DQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQp9DQoNCmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.editA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkgfHwgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdXRvc19hZHZhbmNlZCIpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdXRvc19tYW5hZ2VfdmVoaWNsZXR5cGUiKSkgKXsNCgkkbmV3cGFyYW1zID0gYXJyYXkoImFjdGl2ZV90YWIiID0+ICJ2ZWhpY2xldHlwZSIpOw0KCWlmKCFpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkpCSRuZXdwYXJhbXNbIm1vZHVsZV9tZXNzYWdlIl0gPSAkdGhpcy0+TGFuZygiZXJyb3JfZGVuaWVkIik7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJG5ld3BhcmFtcyk7DQp9DQoNCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCg0KDQppZihpc3NldCgkcGFyYW1zWyJBaWQiXSkpIHsNCgkvLyBpZiB3ZSBhcmUgd29ya2luZyBvbiBhbiBpdGVtIHRoYXQgZXhpc3RzLCB3ZSBsb2FkIGl0LiBXZSBtdXN0IGRvIHRoaXMgZXZlbiB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCwgb3RoZXJ3aXNlIHdlIHdvbid0IGhhdmUgdGhlIGZpbGUgZmllbGRzDQoJJGl0ZW1zID0gJHRoaXMtPmdldF9sZXZlbF92ZWhpY2xldHlwZShhcnJheSgiaWQiPT4kcGFyYW1zWyJBaWQiXSkpOw0KCSRpdGVtID0gJGl0ZW1zWzBdOw0KfQ0KDQovLyBDSEVDSyBJRiBUSEUgRk9STSBJUyBCRUlORyBTVUJNSVRURUQgOg0KLy8gKHdlIG11c3QgZGV0ZWN0IGFsbCBraW5kcyBvZiBzdWJtaXQgYnV0dG9ucywgaW5jbHVkaW5nIGZpbGVzLCBzaW5jZSBpbmZvcm1hdGlvbiBtdXN0IGJlIHNhdmVkIGJlZm9yZSB3ZSBnbyB0byBmaWxlIHN1Ym1pc3Npb24pDQppZiAoaXNzZXQoJHBhcmFtc1sic3VibWl0Il0pIHx8IA0KCWlzc2V0KCRwYXJhbXNbImFwcGx5Il0pIA0KCSkNCnsNCglkZWJ1Z19idWZmZXIoIkVkaXQgRm9ybSBoYXMgYmVlbiBzdWJtaXR0ZWQiLl9fTElORV9fKTsNCg0KCS8vIFJFVFJJRVZJTkcgVEhFIEZPUk0gVkFMVUVTIChhbmQgZXNjYXBpbmcgaXQsIGlmIG5lZWRlZCkNCglpZighaXNzZXQoJGl0ZW0pKSAkaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KCWlmKGlzc2V0KCRwYXJhbXNbIkFpdGVtX29yZGVyIl0pKSAkaXRlbS0+aXRlbV9vcmRlciA9ICRwYXJhbXNbIkFpdGVtX29yZGVyIl07DQoJJGl0ZW0tPmNsYXNzaWZpY2F0aW9uID0gJHBhcmFtc1siQWNsYXNzaWZpY2F0aW9uIl07DQoJCSRpdGVtLT5uYW1lID0gJHBhcmFtc1siQW5hbWUiXTsNCgkJDQoJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImVkaXRhYmxlX2FsaWFzZXMiLGZhbHNlKSl7DQoJCWlmKGlzc2V0KCRwYXJhbXNbIkFhbGlhcyJdKSl7DQoJCQkkdG1wYWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcyh0cmltKCRwYXJhbXNbIkFhbGlhcyJdKSk7DQoJCQkkaXRlbS0+YWxpYXMgPSAkdG1wYWxpYXMgPT0gIiI/JHRoaXMtPnBsY3JlYXRlYWxpYXMoJGl0ZW0tPm5hbWUpOiR0bXBhbGlhczsNCgkJfWVsc2V7DQoJCQkkaXRlbS0+YWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk7DQoJCX0NCgl9ZWxzZXsNCgkJJGl0ZW0tPmFsaWFzID0gJHRoaXMtPnBsY3JlYXRlYWxpYXMoJGl0ZW0tPm5hbWUpOw0KCX0NCgkNCgkkYXV0b2luY3JlbWVudGFsaWFzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9pbmNyZW1lbnRfYWxpYXMiLGZhbHNlKTsNCg0KCS8vIENIRUNLIElGIFRIRSBORUVERUQgVkFMVUVTIEFSRSBUSEVSRQ0KCWlmKAkhaXNzZXQoJHBhcmFtc1siQW5hbWUiXSkgfHwgJHBhcmFtc1siQW5hbWUiXSA9PSAiIg0KCQkgKQ0KCXsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfbWlzc2dpbnZhbHVlIikpOw0KCX1lbHNlaWYoISRhdXRvaW5jcmVtZW50YWxpYXMgJiYgZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9hdXRvc192ZWhpY2xldHlwZSIsICRpdGVtLT5hbGlhcywgaXNzZXQoJHBhcmFtc1siQWlkIl0pPyRwYXJhbXNbIkFpZCJdOmZhbHNlKSl7DQoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX2FscmVhZHlleGlzdHMiKSk7DQoJfWVsc2V7DQoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFDQoNCgkJaWYoJGF1dG9pbmNyZW1lbnRhbGlhcyl7DQoJCQkkYmFzZWFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJHRtcGFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJGkgPSAxOw0KCQkJd2hpbGUoISR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfYXV0b3NfdmVoaWNsZXR5cGUiLCAkdG1wYWxpYXMsIGlzc2V0KCRwYXJhbXNbIkFpZCJdKT8kcGFyYW1zWyJBaWQiXTpmYWxzZSkpew0KCQkJCSR0bXBhbGlhcyA9ICRiYXNlYWxpYXMuIl8iLiRpOw0KCQkJCSRpKys7DQoJCQl9DQoJCQkkaXRlbS0+YWxpYXMgPSAkdG1wYWxpYXM7DQoJCX0NCg0KCQkvLyBGSUVMRFMgVE8gVVBEQVRFDQoJCSRxdWVyeSA9IChpc3NldCgkaXRlbS0+aWQpPyJVUERBVEUgIjoiSU5TRVJUIElOVE8gIikuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfdmVoaWNsZXR5cGUgU0VUIA0KCQkJY2xhc3NpZmljYXRpb249PywNCgkJCW5hbWU9PywNCgkJYWxpYXM9PywNCgkJZGF0ZV9tb2RpZmllZD0/LA0KCQlhY3RpdmU9Ii4oaXNzZXQoJGl0ZW0tPmFjdGl2ZSk/JGl0ZW0tPmFjdGl2ZToxKS4iLA0KCQlpc2RlZmF1bHQ9Ii4oaXNzZXQoJGl0ZW0tPmlzZGVmYXVsdCk/JGl0ZW0tPmlzZGVmYXVsdDowKS4iIjsNCgkJCQ0KCQkvLyBWQUxVRVMNCgkJJHZhbHVlcyA9IGFycmF5KGFkZHNsYXNoZXMoJGl0ZW0tPmNsYXNzaWZpY2F0aW9uKSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPm5hbWUpLCRpdGVtLT5hbGlhcyxzdHJfcmVwbGFjZSgiJyIsIiIsJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpKSk7DQoNCgkJaWYoaXNzZXQoJGl0ZW0tPmlkKSl7DQoJCQkkZXZlbnQgPSAiYXV0b3NfbW9kaWZpZWQiOw0KCQkJJHF1ZXJ5IC49ICIgV0hFUkUgaWQ9PzsiOw0KCQkJYXJyYXlfcHVzaCgkdmFsdWVzLCRpdGVtLT5pZCk7DQoJCX1lbHNlew0KCQkJLy8gTkVXIElURU0NCgkJCSRxdWVyeSAuPSAiLCBkYXRlX2NyZWF0ZWQ9PyI7DQoJCQkkdmFsdWVzW10gPSBzdHJfcmVwbGFjZSgiJyIsIiIsJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpKTsNCgkJCSRldmVudCA9ICJhdXRvc19hZGRlZCI7DQoJCQkvLyBnZXQgYSBuZXcgaWQgZnJvbSB0aGUgc2VxdWVuY2UgdGFibGUNCgkJCSRpdGVtLT5pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfdmVoaWNsZXR5cGVfc2VxIik7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF92ZWhpY2xldHlwZSIsZmFsc2UpKXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSB0b3AgLSBzbyB3ZSBtdXN0IHB1dCBhbGwgb3RoZXIgaXRlbXMgZG93biBmcm9tIG9uZSBzdGVwLCBhbmQgdGhlbiBzZXQgdGhpcyBpdGVtJ3Mgb3JkZXIgdG8gMQ0KCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfdmVoaWNsZXR5cGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkiOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnkyKTsNCgkJCQkkcXVlcnkgLj0gIixpdGVtX29yZGVyPTEsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfWVsc2V7DQoJCQkJLy8gbmV3IGl0ZW1zIGdldCB0byB0aGUgYm90dG9tIC0gc28gd2UgbXVzdCBzZXQgdGhlIGl0ZW1fb3JkZXIgdG8gdGhlIG51bWJlciBvZiBpdGVtcyArIDENCgkJCQkkaXRlbV9vcmRlciA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygidmVoaWNsZXR5cGUiKSArIDE7DQoJCQkJJHF1ZXJ5IC49ICIsaXRlbV9vcmRlcj0iLiRpdGVtX29yZGVyLiIsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfQ0KCQl9DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KDQoJCSRyZWRpcmVjdCA9IHRydWU7DQoJCS8vaWYobXlzcWxfYWZmZWN0ZWRfcm93cygpKXsJLy8gbXlzcWwtb25seQ0KCQlpZigkZGItPkFmZmVjdGVkX1Jvd3MoKSl7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNobW9kdWxlX2luZGV4X3ZlaGljbGV0eXBlIixmYWxzZSkpew0KCQkJCS8vIElGIEFOWVRISU5HIFdBUyBNT0RJRklFRCwgV0UgTVVTVCBVUERBVEUgVEhFIFNFQVJDSCBJTkRFWCBBTkQgU0VORCBBTiBFVkVOVC4uLg0KCQkJCWlmKGlzc2V0KCRldmVudCkpCSR0aGlzLT5TZW5kRXZlbnQoJGV2ZW50LCBhcnJheSgid2hhdCI9PiJ2ZWhpY2xldHlwZSIsICJpdGVtaWQiID0+ICRpdGVtLT5pZCwgImFsaWFzIj0+JGl0ZW0tPmFsaWFzKSk7DQoJCQkJZGVidWdfYnVmZmVyKCJTRUFSSEMgSU5ERVggV0FTIFVQREFURUQgIi5fX0xJTkVfXyk7DQoJCQkJJG1vZHVsZSA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoIlNlYXJjaCIpOw0KCQkJCWlmKCRtb2R1bGUpIHsNCgkJCQkJJHRleHQgPSAiJGl0ZW0tPm5hbWUiOw0KCQkJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkaXRlbS0+aWQsICJ2ZWhpY2xldHlwZSIsICR0ZXh0LCBOVUxMKTsNCgkJCQl9DQoJCQl9DQoJCX1lbHNlaWYobXlzcWxfZXJyb3IoKSl7DQoJCQkvLyBkbyBub3QgcmVkaXJlY3QgOg0KCQkJJHJlZGlyZWN0ID0gZmFsc2U7DQoJCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKG15c3FsX2Vycm9yKCkpOw0KCQl9DQoNCgkJLy8gUkVESVJFQ1RJTkcuLi4NCgkJCWlmKCRyZWRpcmVjdCA9PSBmYWxzZSl7DQoJCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbImFwcGx5Il0pKXsNCgkJCQllY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKTsNCgkJCX1lbHNlew0KCQkJCSRwYXJhbXMgPSBhcnJheSgibW9kdWxlX21lc3NhZ2UiID0+ICR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIiksICJhY3RpdmVfdGFiIj0+InZlaGljbGV0eXBlIik7DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJHBhcmFtcyk7CQ0KCQkJfQ0KCX0NCgkvLyBFTkQgT0YgRk9STSBTVUJNSVNTSU9ODQp9DQoNCg0KDQovKiAjIyBQUkVQQVJJTkcgU01BUlRZIEVMRU1FTlRTDQpDcmVhdGVJbnB1dFRleHQgOiAoaWQsbmFtZSx2YWx1ZSxzaXplLG1heGxlbmd0aCkNCkNyZWF0ZVRleHRBcmVhIDogKHd5c2l3eWcsaWQsdGV4dCxuYW1lKQ0KQ3JlYXRlSW5wdXRTZWxlY3RMaXN0IDogKGlkLG5hbWUsaXRlbXMsc2VsZWN0ZWRpdGVtcyxzaXplKQ0KQ3JlYXRlSW5wdXREcm9wZG93biA6IChpZCxuYW1lLGl0ZW1zLHNpbmRleCxzdmFsdWUpDQoqLw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImNsYXNzaWZpY2F0aW9uX2xhYmVsIiwgJHRoaXMtPkxhbmcoInZlaGljbGV0eXBlX2NsYXNzaWZpY2F0aW9uIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJjbGFzc2lmaWNhdGlvbl9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBY2xhc3NpZmljYXRpb24iLGlzc2V0KCRpdGVtKT8kaXRlbS0+Y2xhc3NpZmljYXRpb246IiIsNTAsNjQpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJuYW1lIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJuYW1lX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkFuYW1lIixpc3NldCgkaXRlbSk/JGl0ZW0tPm5hbWU6IiIsNTAsNjQpKTsNCmlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJlZGl0YWJsZV9hbGlhc2VzIixmYWxzZSkpew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWxpYXNfbGFiZWwiLCAkdGhpcy0+TGFuZygiYWxpYXMiKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBYWxpYXMiLGlzc2V0KCRpdGVtKT8kaXRlbS0+YWxpYXM6IiIsNTAsNjQpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1hbGlhcyIsZmFsc2UpOw0KfWVsc2V7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtYWxpYXMiLGlzc2V0KCRpdGVtLT5hbGlhcyk/IihhbGlhcyA6ICIuJGl0ZW0tPmFsaWFzLiIpIjpmYWxzZSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19pbnB1dCIsIGZhbHNlKTsNCn0NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJlZGl0dGl0bGUiLCAkdGhpcy0+TGFuZygiZWRpdF92ZWhpY2xldHlwZSIpKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiYXBwbHkiLCAoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5pZCkpPyR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJhcHBseSIsIGxhbmcoImFwcGx5IikpOiIiKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiY2FuY2VsIiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImNhbmNlbCIsIGxhbmcoImNhbmNlbCIpKSk7DQoNCg0KLy8gRElTUExBWUlORw0KaWYoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5pZCkpew0KCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdEEiLCAkcmV0dXJuaWQpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImVkaXRBLnRwbCIpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJBaWQiLCAkaXRlbS0+aWQpOw0KCQlpZihpc3NldCgkaXRlbSkgJiYgaXNzZXQoJGl0ZW0tPnBhcmVudCkpIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9sZHBhcmVudCIsICRpdGVtLT5wYXJlbnQpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJBaXRlbV9vcmRlciIsICRpdGVtLT5pdGVtX29yZGVyKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCQ0KDQp9ZWxzZXsNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdEEiLCAkcmV0dXJuaWQpOw0KCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiZWRpdEEudHBsIik7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KfQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.editB.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkgfHwgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdXRvc19hZHZhbmNlZCIpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdXRvc19tYW5hZ2VfdmVoaWNsZSIpKSApew0KCSRuZXdwYXJhbXMgPSBhcnJheSgiYWN0aXZlX3RhYiIgPT4gInZlaGljbGUiKTsNCglpZighaXNzZXQoJHBhcmFtc1siY2FuY2VsIl0pKQkkbmV3cGFyYW1zWyJtb2R1bGVfbWVzc2FnZSJdID0gJHRoaXMtPkxhbmcoImVycm9yX2RlbmllZCIpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICRuZXdwYXJhbXMpOw0KfQ0KDQokZGIgPSYgJHRoaXMtPkdldERiKCk7DQoNCmlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ1c2VfaGllcmFyY2h5IixmYWxzZSkpew0KCSRwYXJlbnRvcHRpb25zID0gJHRoaXMtPmdldF9hZG1pbl9oaWVyYXJjaHlvcHRpb25zKCJ2ZWhpY2xlIixmYWxzZSk7DQp9ZWxzZXsNCgkkcGFyZW50b3B0aW9ucyA9ICR0aGlzLT5nZXRfb3B0aW9ucygidmVoaWNsZXR5cGUiKTsNCn0kbWFrZW9wdGlvbnMgPSAkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygidmVoaWNsZV9tYWtlIik7DQokZmVhdHVyZXNvcHRpb25zID0gJHRoaXMtPmdldF9maWVsZG9wdGlvbnMoInZlaGljbGVfZmVhdHVyZXMiKTsNCg0KaWYoIGlzc2V0KCRwYXJhbXNbImRlbGV0ZWZpbGUiXSkgJiYgJHBhcmFtc1siZGVsZXRlZmlsZSJdID4gMCApew0KCS8vIHRoaXMgaXMgZm9yIHRoZSBtdWx0aXBsZSBmaWxlcyBmaWVsZHMgKGFkZGl0aW9ubmFsIHRhYnMpDQoJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfbXVsdGlwbGVmaWxlc2ZpZWxkcyBXSEVSRSBmaWxlaWQ9PyBMSU1JVCAxIjsNCglpZigkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoJHBhcmFtc1siZGVsZXRlZmlsZSJdKSApKQllY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKTsNCn0NCg0KDQppZihpc3NldCgkcGFyYW1zWyJCaWQiXSkpIHsNCgkvLyBpZiB3ZSBhcmUgd29ya2luZyBvbiBhbiBpdGVtIHRoYXQgZXhpc3RzLCB3ZSBsb2FkIGl0LiBXZSBtdXN0IGRvIHRoaXMgZXZlbiB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCwgb3RoZXJ3aXNlIHdlIHdvbid0IGhhdmUgdGhlIGZpbGUgZmllbGRzDQoJJGl0ZW1zID0gJHRoaXMtPmdldF9sZXZlbF92ZWhpY2xlKGFycmF5KCJpZCI9PiRwYXJhbXNbIkJpZCJdKSk7DQoJJGl0ZW0gPSAkaXRlbXNbMF07DQp9DQoNCi8vIENIRUNLIElGIFRIRSBGT1JNIElTIEJFSU5HIFNVQk1JVFRFRCA6DQovLyAod2UgbXVzdCBkZXRlY3QgYWxsIGtpbmRzIG9mIHN1Ym1pdCBidXR0b25zLCBpbmNsdWRpbmcgZmlsZXMsIHNpbmNlIGluZm9ybWF0aW9uIG11c3QgYmUgc2F2ZWQgYmVmb3JlIHdlIGdvIHRvIGZpbGUgc3VibWlzc2lvbikNCmlmIChpc3NldCgkcGFyYW1zWyJzdWJtaXQiXSkgfHwgDQoJaXNzZXQoJHBhcmFtc1siYXBwbHkiXSkgfHwNCglpc3NldCgkcGFyYW1zWyJhZGRfbWFpbnBpY3R1cmUiXSkgfHwNCglpc3NldCgkcGFyYW1zWyJyZW1vdmVfbWFpbnBpY3R1cmUiXSkgDQoJKQ0Kew0KCWRlYnVnX2J1ZmZlcigiRWRpdCBGb3JtIGhhcyBiZWVuIHN1Ym1pdHRlZCIuX19MSU5FX18pOw0KDQoJLy8gUkVUUklFVklORyBUSEUgRk9STSBWQUxVRVMgKGFuZCBlc2NhcGluZyBpdCwgaWYgbmVlZGVkKQ0KCWlmKCFpc3NldCgkaXRlbSkpICRpdGVtID0gbmV3IHN0ZENsYXNzKCk7DQoJaWYoaXNzZXQoJHBhcmFtc1siQml0ZW1fb3JkZXIiXSkpICRpdGVtLT5pdGVtX29yZGVyID0gJHBhcmFtc1siQml0ZW1fb3JkZXIiXTsNCgkkaXRlbS0+eWVhciA9ICRwYXJhbXNbIkJ5ZWFyIl07DQoJCSRpdGVtLT5tYWtlID0gJHBhcmFtc1siQm1ha2UiXTsNCgkJJGl0ZW0tPm1vZGVsID0gJHBhcmFtc1siQm1vZGVsIl07DQoJCSRpdGVtLT5taWxhZ2UgPSAkcGFyYW1zWyJCbWlsYWdlIl07DQoJCSRpdGVtLT52ZWhpY2xlY29uZGl0aW9uID0gJHBhcmFtc1siQnZlaGljbGVjb25kaXRpb24iXTsNCgkJJGl0ZW0tPmNvbG9yID0gJHBhcmFtc1siQmNvbG9yIl07DQoJCSRpdGVtLT5wcmljZSA9ICRwYXJhbXNbIkJwcmljZSJdOw0KCQkkaXRlbS0+ZW5naW5lID0gJHBhcmFtc1siQmVuZ2luZSJdOw0KCQkkaXRlbS0+ZmVhdHVyZXMgPSAkcGFyYW1zWyJCZmVhdHVyZXMiXTsNCgkJJGl0ZW0tPmRlc2NyaXB0aW9uID0gJHBhcmFtc1siQmRlc2NyaXB0aW9uIl07DQoJCSRpdGVtLT5wYXJlbnQgPSAkcGFyYW1zWyJCcGFyZW50Il07DQoJCSRpdGVtLT5uYW1lID0gJHBhcmFtc1siQm5hbWUiXTsNCgkJDQoJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImVkaXRhYmxlX2FsaWFzZXMiLGZhbHNlKSl7DQoJCWlmKGlzc2V0KCRwYXJhbXNbIkJhbGlhcyJdKSl7DQoJCQkkdG1wYWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcyh0cmltKCRwYXJhbXNbIkJhbGlhcyJdKSk7DQoJCQkkaXRlbS0+YWxpYXMgPSAkdG1wYWxpYXMgPT0gIiI/JHRoaXMtPnBsY3JlYXRlYWxpYXMoJGl0ZW0tPm5hbWUpOiR0bXBhbGlhczsNCgkJfWVsc2V7DQoJCQkkaXRlbS0+YWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk7DQoJCX0NCgl9ZWxzZXsNCgkJJGl0ZW0tPmFsaWFzID0gJHRoaXMtPnBsY3JlYXRlYWxpYXMoJGl0ZW0tPm5hbWUpOw0KCX0NCgkNCgkkYXV0b2luY3JlbWVudGFsaWFzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9pbmNyZW1lbnRfYWxpYXMiLGZhbHNlKTsNCg0KCS8vIENIRUNLIElGIFRIRSBORUVERUQgVkFMVUVTIEFSRSBUSEVSRQ0KCWlmKAkhaXNzZXQoJHBhcmFtc1siQnllYXIiXSkgfHwgJHBhcmFtc1siQnllYXIiXSA9PSAiIg0KCQkgfHwgIWlzc2V0KCRwYXJhbXNbIkJuYW1lIl0pIHx8ICRwYXJhbXNbIkJuYW1lIl0gPT0gIiINCgkJICkNCgl7DQoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpKTsNCgl9ZWxzZWlmKCEkYXV0b2luY3JlbWVudGFsaWFzICYmIGZhbHNlID09ICR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfYXV0b3NfdmVoaWNsZSIsICRpdGVtLT5hbGlhcywgaXNzZXQoJHBhcmFtc1siQmlkIl0pPyRwYXJhbXNbIkJpZCJdOmZhbHNlKSl7DQoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX2FscmVhZHlleGlzdHMiKSk7DQoJfWVsc2V7DQoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFDQoNCgkJaWYoJGF1dG9pbmNyZW1lbnRhbGlhcyl7DQoJCQkkYmFzZWFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJHRtcGFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJGkgPSAxOw0KCQkJd2hpbGUoISR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfYXV0b3NfdmVoaWNsZSIsICR0bXBhbGlhcywgaXNzZXQoJHBhcmFtc1siQmlkIl0pPyRwYXJhbXNbIkJpZCJdOmZhbHNlKSl7DQoJCQkJJHRtcGFsaWFzID0gJGJhc2VhbGlhcy4iXyIuJGk7DQoJCQkJJGkrKzsNCgkJCX0NCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhczsNCgkJfQ0KDQoJCS8vIEZJRUxEUyBUTyBVUERBVEUNCgkJJHF1ZXJ5ID0gKGlzc2V0KCRpdGVtLT5pZCk/IlVQREFURSAiOiJJTlNFUlQgSU5UTyAiKS5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc192ZWhpY2xlIFNFVCANCgkJCXllYXI9PywNCgkJCW1ha2U9PywNCgkJCW1vZGVsPT8sDQoJCQltaWxhZ2U9PywNCgkJCXZlaGljbGVjb25kaXRpb249PywNCgkJCWNvbG9yPT8sDQoJCQlwcmljZT0/LA0KCQkJZW5naW5lPT8sDQoJCQlmZWF0dXJlcz0/LA0KCQkJZGVzY3JpcHRpb249PywNCgkJCXBhcmVudD0/LA0KCQkJbmFtZT0/LA0KCQlhbGlhcz0/LA0KCQlkYXRlX21vZGlmaWVkPT8sDQoJCWFjdGl2ZT0iLihpc3NldCgkaXRlbS0+YWN0aXZlKT8kaXRlbS0+YWN0aXZlOjEpLiIsDQoJCWlzZGVmYXVsdD0iLihpc3NldCgkaXRlbS0+aXNkZWZhdWx0KT8kaXRlbS0+aXNkZWZhdWx0OjApLiIiOw0KCQkJDQoJCS8vIFZBTFVFUw0KCQkkdmFsdWVzID0gYXJyYXkoYWRkc2xhc2hlcygkaXRlbS0+eWVhciksDQoJCQkkaXRlbS0+bWFrZSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPm1vZGVsKSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPm1pbGFnZSksDQoJCQlhZGRzbGFzaGVzKCRpdGVtLT52ZWhpY2xlY29uZGl0aW9uKSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPmNvbG9yKSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPnByaWNlKSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPmVuZ2luZSksDQoJCQlzZXJpYWxpemUoJGl0ZW0tPmZlYXR1cmVzKSwNCgkJCSRpdGVtLT5kZXNjcmlwdGlvbiwNCgkJCSRpdGVtLT5wYXJlbnQsDQoJCQlhZGRzbGFzaGVzKCRpdGVtLT5uYW1lKSwkaXRlbS0+YWxpYXMsc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSkpOw0KDQoJCWlmKGlzc2V0KCRpdGVtLT5pZCkpew0KCQkJJGV2ZW50ID0gImF1dG9zX21vZGlmaWVkIjsNCgkJCSRxdWVyeSAuPSAiIFdIRVJFIGlkPT87IjsNCgkJCWFycmF5X3B1c2goJHZhbHVlcywkaXRlbS0+aWQpOw0KCQl9ZWxzZXsNCgkJCS8vIE5FVyBJVEVNDQoJCQkkcXVlcnkgLj0gIiwgZGF0ZV9jcmVhdGVkPT8iOw0KCQkJJHZhbHVlc1tdID0gc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSk7DQoJCQkkZXZlbnQgPSAiYXV0b3NfYWRkZWQiOw0KCQkJLy8gZ2V0IGEgbmV3IGlkIGZyb20gdGhlIHNlcXVlbmNlIHRhYmxlDQoJCQkkaXRlbS0+aWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGVfc2VxIik7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF92ZWhpY2xlIixmYWxzZSkpew0KCQkJCS8vIG5ldyBpdGVtcyBnZXQgdG8gdGhlIHRvcCAtIHNvIHdlIG11c3QgcHV0IGFsbCBvdGhlciBpdGVtcyBkb3duIGZyb20gb25lIHN0ZXAsIGFuZCB0aGVuIHNldCB0aGlzIGl0ZW0ncyBvcmRlciB0byAxDQoJCQkJJHF1ZXJ5MiA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc192ZWhpY2xlIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyKzEpIFdIRVJFIHBhcmVudD0/IjsNCgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJGl0ZW0tPnBhcmVudCkpOw0KCQkJCSRxdWVyeSAuPSAiLGl0ZW1fb3JkZXI9MSwgaWQ9Ii4kaXRlbS0+aWQ7DQoJCQl9ZWxzZXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSBib3R0b20gLSBzbyB3ZSBtdXN0IHNldCB0aGUgaXRlbV9vcmRlciB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zICsgMQ0KCQkJCSRpdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJ2ZWhpY2xlIiwiaWQiLGFycmF5KCJwYXJlbnQiPT4kaXRlbS0+cGFyZW50KSkgKyAxOw0KCQkJCSRxdWVyeSAuPSAiLGl0ZW1fb3JkZXI9Ii4kaXRlbV9vcmRlci4iLCBpZD0iLiRpdGVtLT5pZDsNCgkJCX0NCgkJfQ0KCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsNCg0KCWlmKGlzc2V0KCRwYXJhbXNbIm9sZHBhcmVudCJdKSAmJiAkcGFyYW1zWyJvbGRwYXJlbnQiXSAhPSAkaXRlbS0+cGFyZW50KXsNCgkJLy8gdGhlIGl0ZW0gaXMgY2hhbmdpbmcgcGFyZW50LCBhbmQgd2UncmUgb3JkZXJpbmcgYnkgcGFyZW50cw0KCQkNCgkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoIm5ld2l0ZW1zZmlyc3RfdmVoaWNsZSIsZmFsc2UpKXsNCgkJCS8vIG5ldyBpdGVtcyBnZXQgdG8gdGhlIHRvcA0KCQkJDQoJCQkvLyBVUERBVEUgVEhFIE9SREVSIE9GIFRIRSBJVEVNUyBXSVRIIFRIRSBPTEQgUEFSRU5UDQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfdmVoaWNsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpdGVtX29yZGVyID4gPyBBTkQgcGFyZW50PT8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW0tPml0ZW1fb3JkZXIsICRwYXJhbXNbIm9sZHBhcmVudCJdKSk7DQoJCQkvLyBHRVQgTkVXIElURU0gT1JERVINCgkJCSRpdGVtLT5pdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJ2ZWhpY2xlIiwiaWQiLGFycmF5KCJwYXJlbnQiPT4kaXRlbS0+cGFyZW50KSkgKyAxOw0KCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGUgU0VUIGl0ZW1fb3JkZXI9PyBXSEVSRSBpZD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5pdGVtX29yZGVyLCAkaXRlbS0+aWQpKTsNCg0KCQl9ZWxzZXsNCg0KCQkJLy8gVVBEQVRFIFRIRSBPUkRFUiBPRiBUSEUgSVRFTVMgV0lUSCBUSEUgT0xEIFBBUkVOVA0KCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaXRlbV9vcmRlciA+ID8gQU5EIHBhcmVudD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5pdGVtX29yZGVyLCAkcGFyYW1zWyJvbGRwYXJlbnQiXSkpOw0KCQkJLy8gVVBEQVRFIE5FVyBQQVJFTlQNCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc192ZWhpY2xlIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyKzEpIFdIRVJFIHBhcmVudD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5wYXJlbnQpKTsNCgkJCS8vIEdFVCBORVcgSVRFTSBPUkRFUg0KCQkJJGl0ZW0tPml0ZW1fb3JkZXIgPSAxOw0KCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGUgU0VUIGl0ZW1fb3JkZXI9PyBXSEVSRSBpZD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5pdGVtX29yZGVyLCAkaXRlbS0+aWQpKTsNCgkJDQoJCX0NCgl9DQoNCgkJJHJlZGlyZWN0ID0gdHJ1ZTsNCgkJLy9pZihteXNxbF9hZmZlY3RlZF9yb3dzKCkpewkvLyBteXNxbC1vbmx5DQoJCWlmKCRkYi0+QWZmZWN0ZWRfUm93cygpKXsNCgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfdmVoaWNsZSIsZmFsc2UpKXsNCgkJCQkvLyBJRiBBTllUSElORyBXQVMgTU9ESUZJRUQsIFdFIE1VU1QgVVBEQVRFIFRIRSBTRUFSQ0ggSU5ERVggQU5EIFNFTkQgQU4gRVZFTlQuLi4NCgkJCQlpZihpc3NldCgkZXZlbnQpKQkkdGhpcy0+U2VuZEV2ZW50KCRldmVudCwgYXJyYXkoIndoYXQiPT4idmVoaWNsZSIsICJpdGVtaWQiID0+ICRpdGVtLT5pZCwgImFsaWFzIj0+JGl0ZW0tPmFsaWFzKSk7DQoJCQkJZGVidWdfYnVmZmVyKCJTRUFSSEMgSU5ERVggV0FTIFVQREFURUQgIi5fX0xJTkVfXyk7DQoJCQkJJG1vZHVsZSA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoIlNlYXJjaCIpOw0KCQkJCWlmKCRtb2R1bGUpIHsNCgkJCQkJJHRleHQgPSAiJGl0ZW0tPm5hbWUiOw0KCQkJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkaXRlbS0+aWQsICJ2ZWhpY2xlIiwgJHRleHQsIE5VTEwpOw0KCQkJCX0NCgkJCX0NCgkJfWVsc2VpZihteXNxbF9lcnJvcigpKXsNCgkJCS8vIGRvIG5vdCByZWRpcmVjdCA6DQoJCQkkcmVkaXJlY3QgPSBmYWxzZTsNCgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMobXlzcWxfZXJyb3IoKSk7DQoJCX0NCg0KCQkvLyBSRURJUkVDVElORy4uLg0KCQkJaWYoaXNzZXQoJHBhcmFtc1siYWRkX21haW5waWN0dXJlIl0pKXsNCgkJCQkkcGFyYW1zID0gYXJyYXkoIkJpZCI9PiRpdGVtLT5pZCwiZmllbGQiPT4ibWFpbnBpY3R1cmUiLCJ0YWJsZW5hbWUiPT4iYXV0b3NfdmVoaWNsZSIsInByZWZpeCI9PiJCIiwgInN0YXJ0ZGlyIj0+ImltYWdlcy9hdXRvcyIsICJzaXplIj0+IjQ1MHgzNTAiLCAidGh1bWIiPT4iMTUweDExNSIsICJtb2RlIj0+ImltYWdlIik7DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImJyb3dzZWZpbGVzIiwgJHJldHVybmlkLCAkcGFyYW1zKTsNCgkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sicmVtb3ZlX21haW5waWN0dXJlIl0pKXsNCgkJCQkkcGFyYW1zID0gYXJyYXkoIkJpZCI9PiRpdGVtLT5pZCwiZmllbGQiPT4ibWFpbnBpY3R1cmUiLCJsZXZlbCI9PiJ2ZWhpY2xlIiwidGFibGVuYW1lIj0+ImF1dG9zX3ZlaGljbGUiLCJwcmVmaXgiPT4iQiIpOw0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJhc3NpZ25maWxlIiwgJHJldHVybmlkLCAkcGFyYW1zKTsNCgkJCX1lbHNlaWYoJHJlZGlyZWN0ID09IGZhbHNlKXsNCgkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1siYXBwbHkiXSkpew0KCQkJCWVjaG8gJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIikpOw0KCQkJfWVsc2V7DQoJCQkJJHBhcmFtcyA9IGFycmF5KCJtb2R1bGVfbWVzc2FnZSIgPT4gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSwgImFjdGl2ZV90YWIiPT4idmVoaWNsZSIpOw0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICRwYXJhbXMpOwkNCgkJCX0NCgl9DQoJLy8gRU5EIE9GIEZPUk0gU1VCTUlTU0lPTg0KfQ0KDQoNCg0KLyogIyMgUFJFUEFSSU5HIFNNQVJUWSBFTEVNRU5UUw0KQ3JlYXRlSW5wdXRUZXh0IDogKGlkLG5hbWUsdmFsdWUsc2l6ZSxtYXhsZW5ndGgpDQpDcmVhdGVUZXh0QXJlYSA6ICh3eXNpd3lnLGlkLHRleHQsbmFtZSkNCkNyZWF0ZUlucHV0U2VsZWN0TGlzdCA6IChpZCxuYW1lLGl0ZW1zLHNlbGVjdGVkaXRlbXMsc2l6ZSkNCkNyZWF0ZUlucHV0RHJvcGRvd24gOiAoaWQsbmFtZSxpdGVtcyxzaW5kZXgsc3ZhbHVlKQ0KKi8NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ5ZWFyX2xhYmVsIiwgJHRoaXMtPkxhbmcoInZlaGljbGVfeWVhciIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigieWVhcl9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJCeWVhciIsaXNzZXQoJGl0ZW0pPyRpdGVtLT55ZWFyOiIiLDMwLDEwKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm1ha2VfbGFiZWwiLCAkdGhpcy0+TGFuZygidmVoaWNsZV9tYWtlIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJtYWtlX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJCbWFrZSIsJG1ha2VvcHRpb25zLC0xLGlzc2V0KCRpdGVtKT8kaXRlbS0+bWFrZTowKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm1vZGVsX2xhYmVsIiwgJHRoaXMtPkxhbmcoInZlaGljbGVfbW9kZWwiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm1vZGVsX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkJtb2RlbCIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5tb2RlbDoiIiw1MCw2NCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJtaWxhZ2VfbGFiZWwiLCAkdGhpcy0+TGFuZygidmVoaWNsZV9taWxhZ2UiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm1pbGFnZV9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJCbWlsYWdlIixpc3NldCgkaXRlbSk/JGl0ZW0tPm1pbGFnZToiIiw1MCw2NCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ2ZWhpY2xlY29uZGl0aW9uX2xhYmVsIiwgJHRoaXMtPkxhbmcoInZlaGljbGVfdmVoaWNsZWNvbmRpdGlvbiIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigidmVoaWNsZWNvbmRpdGlvbl9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJCdmVoaWNsZWNvbmRpdGlvbiIsaXNzZXQoJGl0ZW0pPyRpdGVtLT52ZWhpY2xlY29uZGl0aW9uOiIiLDUwLDY0KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImNvbG9yX2xhYmVsIiwgJHRoaXMtPkxhbmcoInZlaGljbGVfY29sb3IiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImNvbG9yX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkJjb2xvciIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5jb2xvcjoiIiwzMCwzMikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwcmljZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJ2ZWhpY2xlX3ByaWNlIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwcmljZV9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJCcHJpY2UiLGlzc2V0KCRpdGVtKT8kaXRlbS0+cHJpY2U6IiIsMzAsMzIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiZW5naW5lX2xhYmVsIiwgJHRoaXMtPkxhbmcoInZlaGljbGVfZW5naW5lIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJlbmdpbmVfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiQmVuZ2luZSIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5lbmdpbmU6IiIsMzAsMzIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiZmVhdHVyZXNfbGFiZWwiLCAkdGhpcy0+TGFuZygidmVoaWNsZV9mZWF0dXJlcyIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiZmVhdHVyZXNfaW5wdXQiLCAkdGhpcy0+RG9DaGVja2JveGVzKCRpZCwgIkJmZWF0dXJlcyIsICRmZWF0dXJlc29wdGlvbnMsIGlzc2V0KCRpdGVtKT8kaXRlbS0+ZmVhdHVyZXM6MCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJtYWlucGljdHVyZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJ2ZWhpY2xlX21haW5waWN0dXJlIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJtYWlucGljdHVyZV9pbnB1dCIsICgoaXNzZXQoJGl0ZW0tPm1haW5waWN0dXJlKSAmJiAkaXRlbS0+bWFpbnBpY3R1cmUpPyc8aW1nIHNyYz0iJy4kaXRlbS0+bWFpbnBpY3R1cmUtPnVybC4nIiAvPjxici8+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCJyZW1vdmVfbWFpbnBpY3R1cmUiLCR0aGlzLT5MYW5nKCJSZW1vdmUiKSkuIiAiOiIiKS4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCJhZGRfbWFpbnBpY3R1cmUiLCR0aGlzLT5MYW5nKCJ2ZWhpY2xlX3NlbGVjdF9tYWlucGljdHVyZSIpKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImRlc2NyaXB0aW9uX2xhYmVsIiwgJHRoaXMtPkxhbmcoInZlaGljbGVfZGVzY3JpcHRpb24iKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImRlc2NyaXB0aW9uX2lucHV0IiwgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKHRydWUsJGlkLGlzc2V0KCRpdGVtKT8kaXRlbS0+ZGVzY3JpcHRpb246IiIsIkJkZXNjcmlwdGlvbiIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJuYW1lIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJuYW1lX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkJuYW1lIixpc3NldCgkaXRlbSk/JGl0ZW0tPm5hbWU6IiIsNTAsNjQpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigicGFyZW50X2xhYmVsIiwgJHRoaXMtPkxhbmcoInZlaGljbGV0eXBlIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJlbnRfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIkJwYXJlbnQiLCRwYXJlbnRvcHRpb25zLC0xLGlzc2V0KCRpdGVtKT8kaXRlbS0+cGFyZW50OjApKTtpZihpc3NldCgkaXRlbSkpICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJvbGRwYXJlbnQiLCAkaXRlbS0+cGFyZW50KTsNCmlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJlZGl0YWJsZV9hbGlhc2VzIixmYWxzZSkpew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWxpYXNfbGFiZWwiLCAkdGhpcy0+TGFuZygiYWxpYXMiKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJCYWxpYXMiLGlzc2V0KCRpdGVtKT8kaXRlbS0+YWxpYXM6IiIsNTAsNjQpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1hbGlhcyIsZmFsc2UpOw0KfWVsc2V7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtYWxpYXMiLGlzc2V0KCRpdGVtLT5hbGlhcyk/IihhbGlhcyA6ICIuJGl0ZW0tPmFsaWFzLiIpIjpmYWxzZSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19pbnB1dCIsIGZhbHNlKTsNCn0NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJlZGl0dGl0bGUiLCAkdGhpcy0+TGFuZygiZWRpdF92ZWhpY2xlIikpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInN1Ym1pdCIsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJzdWJtaXQiLCBsYW5nKCJzdWJtaXQiKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhcHBseSIsIChpc3NldCgkaXRlbSkgJiYgaXNzZXQoJGl0ZW0tPmlkKSk/JHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImFwcGx5IiwgbGFuZygiYXBwbHkiKSk6IiIpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJjYW5jZWwiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiY2FuY2VsIiwgbGFuZygiY2FuY2VsIikpKTsNCg0KDQovLyBESVNQTEFZSU5HDQppZihpc3NldCgkaXRlbSkgJiYgaXNzZXQoJGl0ZW0tPmlkKSl7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJmaWx0ZXIiLCBmYWxzZSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJyZW9yZGVyIiwgZmFsc2UpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaW5zdGFudHNlYXJjaCIsIGZhbHNlKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRhYmxlaWQiLCBmYWxzZSk7DQoJDQoJJHRhYiA9IGlzc2V0KCRwYXJhbXNbImFjdGl2ZV90YWIiXSk/JHBhcmFtc1siYWN0aXZlX3RhYiJdOiJ2ZWhpY2xlIjsNCgllY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsNCgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJ2ZWhpY2xlIiwgJHRoaXMtPkxhbmcoInZlaGljbGUiKSwgKCR0YWI9PSJ2ZWhpY2xlIj90cnVlOmZhbHNlKSk7ZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJwaWN0dXJlcyIsICR0aGlzLT5MYW5nKCJ2ZWhpY2xlX3BpY3R1cmVzIiksICgkdGFiPT0icGljdHVyZXMiP3RydWU6ZmFsc2UpKTsNCgkJDQoJZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOw0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOw0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJ2ZWhpY2xlIik7DQoNCgkJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImVkaXRCIiwgJHJldHVybmlkKTsNCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJlZGl0Qi50cGwiKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiQmlkIiwgJGl0ZW0tPmlkKTsNCgkJaWYoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5wYXJlbnQpKSBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJvbGRwYXJlbnQiLCAkaXRlbS0+cGFyZW50KTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiQml0ZW1fb3JkZXIiLCAkaXRlbS0+aXRlbV9vcmRlcik7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgkNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCgkNCgllY2hvICR0aGlzLT5TdGFydFRhYigicGljdHVyZXMiKTsNCgkJJG5ld3BhcmFtcyA9IGFycmF5KCJCaWQiPT4kaXRlbS0+aWQsImZpZWxkIj0+InZlaGljbGVfcGljdHVyZXMiLCJ0YWJsZW5hbWUiPT4iYXV0b3NfbXVsdGlwbGVmaWxlc2ZpZWxkcyIsInByZWZpeCI9PiJCIiwgInN0YXJ0ZGlyIj0+ImltYWdlcy9hdXRvcyIsICJhZGRmaWxlcyI9PnRydWUsICJhY3RpdmVfdGFiIj0+InBpY3R1cmVzIiwic2l6ZSI9PiI0NTB4MzUwIiwgInRodW1iIj0+IjE1MHgxMTUiLCAibW9kZSI9PiJpbWFnZSIpOw0KCQllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJ3YXJuaW5nX3RhYiIpLiI8L3A+IjsNCgkJJGl0ZW0tPnBpY3R1cmVzID0gJHRoaXMtPmdldGFkZGZpbGVzKCJ2ZWhpY2xlX3BpY3R1cmVzIiwkaXRlbS0+aWQsdHJ1ZSk7DQoJCWlmKGNvdW50KCRpdGVtLT5waWN0dXJlcyk+MCl7CQkJDQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkZG5ldyIsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImJyb3dzZWZpbGVzIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJhZGRhZmlsZSIpLCAkbmV3cGFyYW1zKSk7DQoJCQkkYWRtaW5zaG93ID0gYXJyYXkoCWFycmF5KCR0aGlzLT5MYW5nKCJmaWxlbmFtZSIpLCAidGhlbGluayIpLCBhcnJheSgkdGhpcy0+TGFuZygiaW1hZ2VzaXplIiksICJpbWFnZXNpemUiKSwgYXJyYXkoJHRoaXMtPkxhbmcoImZpbGVzaXplIiksICJzaXplX3dmb3JtYXQiKSwgYXJyYXkoJHRoaXMtPkxhbmcoIkFjdGlvbnMiKSwgImRlbGV0ZWxpbmsiKQkpOw0KCQkJJGl0ZW1saXN0ID0gYXJyYXkoKTsNCgkJCWZvcmVhY2goJGl0ZW0tPnBpY3R1cmVzIGFzICRhZGRmaWxlKXsNCgkJCQkkYWRkZmlsZS0+dGhlbGluayA9ICRhZGRmaWxlLT5waWMuJyA8YSBocmVmPSIuLi91cGxvYWRzJy4kYWRkZmlsZS0+ZmlsZXBhdGguJyIgdGFyZ2V0PSJibGFuayI+Jy4kYWRkZmlsZS0+ZmlsZXBhdGguIjwvYT4iOw0KCQkJCSRhZGRmaWxlLT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZWRpdEIiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiwgJHRoaXMtPmxhbmcoImRlbGV0ZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5KCJCaWQiPT4kaXRlbS0+aWQsICJkZWxldGVmaWxlIj0+JGFkZGZpbGUtPmZpbGVpZCwgImFjdGl2ZV90YWIiPT4icGljdHVyZXMiKSk7DQoJCQkJJGl0ZW1saXN0W10gPSAkYWRkZmlsZTsNCgkJCX0NCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCAkaXRlbWxpc3QpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZG1pbnNob3ciLCAkYWRtaW5zaG93KTsJCQkNCgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTsNCgkJCWlmKGNvdW50KCRpdGVtLT5waWN0dXJlcyk+MCkJZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ2aWV3YWRkaW1ncyIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoInZpZXdhbGxpbWFnZXMiKSwgYXJyYXkoImZpZWxkIj0+InZlaGljbGVfcGljdHVyZXMiLCAicHJlZml4Ij0+IkIiLCAiaXRlbWlkIj0+JGl0ZW0tPmlkKSkuIjwvcD4iOw0KCQl9ZWxzZXsNCgkJCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiYnJvd3NlZmlsZXMiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmIiwgIiIsIiIsIiIsInN5c3RlbWljb24iKS4iICIuJHRoaXMtPkxhbmcoImFkZGFmaWxlIiksICRuZXdwYXJhbXMpLiI8L3A+IjsNCgkJfQ0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KCQ0KCWVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsNCgkNCg0KfWVsc2V7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImVkaXRCIiwgJHJldHVybmlkKTsNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImVkaXRCLnRwbCIpOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/action.editTemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInPT4ndGVtcGxhdGVzJykgKTsKCiR0cGxjb250ZW50ID0gJyc7CmlmKCAoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydhcHBseSddKSApICYmIGlzc2V0KCRwYXJhbXNbJ3RwbG5hbWUnXSkgKXsKCWlmKCRwYXJhbXNbJ3RwbG5hbWUnXSAhPSAnJyl7CgkJaWYoaXNzZXQoJHBhcmFtc1snaXNuZXcnXSkpCSRwYXJhbXNbJ3RwbG5hbWUnXSA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1sndHBsbmFtZSddLCBmYWxzZSk7CgkJJHRwbGNvbnRlbnQgPSAkcGFyYW1zWyd0cGxjb250ZW50J107CgkJaWYoJHRoaXMtPlNldFRlbXBsYXRlKCRwYXJhbXNbJ3RwbG5hbWUnXSwkcGFyYW1zWyd0cGxjb250ZW50J10sJHRoaXMtPkdldE5hbWUoKSkpOwoJCWlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSl7CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCJtb2R1bGVfbWVzc2FnZSIgPT4gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSwgJ2FjdGl2ZV90YWInPT4ndGVtcGxhdGVzJykgKTsKCQl9ZWxzZXsKCQkJZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSk7CgkJfQoJfWVsc2V7CgkJZWNobyAnPGRpdiBjbGFzcz0icGFnZWVycm9yY29udGFpbmVyIj4nLiR0aGlzLT5MYW5nKCdlcnJvcl9taXNzZ2ludmFsdWUnKS4nPC9kaXY+JzsKCX0KfWVsc2VpZiggaXNzZXQoJHBhcmFtc1sndHBsbmFtZSddKSApewoJJHRwbGNvbnRlbnQgPSAkdGhpcy0+R2V0VGVtcGxhdGUoICRwYXJhbXNbJ3RwbG5hbWUnXSwgJHRoaXMtPkdldE5hbWUoKSApOwp9CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigidGVtcGxhdGUiLCAkdGhpcy0+TGFuZygidGVtcGxhdGUiKSwgdHJ1ZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoImhlbHB0YWIiLCAkdGhpcy0+TGFuZygidGVtcGxhdGV2YXJzIiksIGZhbHNlKTsJCQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKCgllY2hvICR0aGlzLT5TdGFydFRhYigidGVtcGxhdGUiKTsKCQllY2hvICc8aDE+Jy4kdGhpcy0+TGFuZygiZWRpdHRlbXBsYXRlIikuJzwvaDE+JzsKCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdFRlbXBsYXRlIiwgJHJldHVybmlkKTsKCQkvL2VjaG8gJzxwPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImFwcGx5IiwgbGFuZygiYXBwbHkiKSkuJyAnLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJjYW5jZWwiLCBsYW5nKCJjYW5jZWwiKSkuJzwvcD48YnIvPjxici8+JzsKCQllY2hvICcJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+TGFuZygnbmFtZScpLicgOjwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CgkJaWYoaXNzZXQoJHBhcmFtc1sndHBsbmFtZSddKSAmJiAkcGFyYW1zWyd0cGxuYW1lJ10gIT0gJycpewoJCSAgICBlY2hvICRwYXJhbXNbJ3RwbG5hbWUnXS4kdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAidHBsbmFtZSIsICRwYXJhbXNbJ3RwbG5hbWUnXSk7CgkJfWVsc2V7CgkJICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ3RwbG5hbWUnLCcnLDMwLDY0KTsKCQl9CgkJZWNobyAnPC9wPgoJCSAgICA8L2Rpdj4KCQknOwoJCWVjaG8gJwk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5MYW5nKCd0ZW1wbGF0ZScpLicgOjwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwkdHBsY29udGVudCwndHBsY29udGVudCcpLic8L3A+CgkJICAgIDwvZGl2PgoJCSc7CgkJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLicgJy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiYXBwbHkiLCBsYW5nKCJhcHBseSIpKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImNhbmNlbCIsIGxhbmcoImNhbmNlbCIpKS4nPC9wPic7CgkJaWYoIWlzc2V0KCRwYXJhbXNbInRwbG5hbWUiXSkgfHwgJHBhcmFtc1sidHBsbmFtZSJdID09ICcnKQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJpc25ldyIsICJ5ZXMiKTsKCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgllY2hvICR0aGlzLT5FbmRUYWIoKTsKCgllY2hvICR0aGlzLT5TdGFydFRhYigiaGVscHRhYiIpOwoJCWVjaG8gJzxkaXYgaWQ9InRlbXBsYXRlaGVscCI+Jy4kdGhpcy0+TGFuZygndGVtcGxhdGVoZWxwJykuJzwvZGl2Pic7CgkJZWNobyAnCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCWZ1bmN0aW9uIGN0bG1tX2Rpc3BsYXl0b2dnbGUoZWxlKXsKCQlpZighZWxlIHx8ICFlbGUucGFyZW50Tm9kZSkJcmV0dXJuIGZhbHNlOwoJCXZhciB0aGVkaXYgPSBlbGUucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2IilbMF07CgkJaWYoIXRoZWRpdikJcmV0dXJuIGZhbHNlOwoJCWlmKHRoZWRpdi5zdHlsZS5kaXNwbGF5ID09ICJub25lIil7CgkJCXRoZWRpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKCQkJZWxlLmlubmVySFRNTCA9ICJWIiArIGVsZS5pbm5lckhUTUwuc3Vic3RyKDQpOwoJCX1lbHNlewoJCQl0aGVkaXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCQkJZWxlLmlubmVySFRNTCA9ICImZ3Q7IiArIGVsZS5pbm5lckhUTUwuc3Vic3RyKDEpOwoJCX0KCX0KCXZhciB0aGVkaXZzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlbXBsYXRlaGVscCIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKTsKCWZvcihpPTA7aTx0aGVkaXZzLmxlbmd0aDtpKyspewoJCWlmKHRoZWRpdnNbaV0uY2xhc3NOYW1lID09ICJ0cGx2YXJzX2hpZGUiKQl0aGVkaXZzW2ldLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cgl9Cjwvc2NyaXB0PgonOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.export.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkJZXhpdDsKCmlmKGlzc2V0KCRwYXJhbXNbJ2RvZXhwb3J0J10pKXsKCQoJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCgkkb3V0cHV0ID0gJyc7Cglmb3JlYWNoKCRwYXJhbXNbJ3NlbGVjdGVkbGV2ZWxzJ10gYXMgJGxldmVsKXsKCQkkb3V0cHV0IC49ICcKPHRhYmxlIG5hbWU9IicuJGxldmVsLiciPgoJJzsKCQkKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJGxldmVsOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCXdoaWxlICggJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKSB7CgkJCSRvdXRwdXQgLj0gIjxpdGVtPgoJCSI7CgkJCWZvcmVhY2goJHJvdyBhcyAkZmllbGQ9PiR2YWx1ZSl7CgkJCQkkb3V0cHV0IC49ICc8Jy4kZmllbGQuJz48IVtDREFUQVsnLnN0cmlwc2xhc2hlcygkdmFsdWUpLiddXT48LycuJGZpZWxkLic+CgkJJzsKCQkJfQoJCQkkb3V0cHV0IC49ICIKCTwvaXRlbT4KCSI7CgkJfQoJCSRvdXRwdXQgLj0gIgo8L3RhYmxlPgoKIjsKCX0KCgoKCS8vIGV4cG9ydGluZyBtdWx0aXBsZSBmaWxlIGZpZWxkcyAoaWYgYW55KQoJCSR0bXBvdXRwdXQgPSAnJzsKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iX211bHRpcGxlZmlsZXNmaWVsZHMiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCXdoaWxlICggJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKSB7CgkJCSR0bXBvdXRwdXQgLj0gJzxpdGVtPgoJCSc7CgkJCWZvcmVhY2goJHJvdyBhcyAkZmllbGQ9PiR2YWx1ZSl7CgkJCQkkdG1wb3V0cHV0IC49ICc8Jy4kZmllbGQuJz48IVtDREFUQVsnLnN0cmlwc2xhc2hlcygkdmFsdWUpLiddXT48LycuJGZpZWxkLic+CgkJJzsKCQkJfQoJCQkkdG1wb3V0cHV0IC49ICcKCTwvaXRlbT4KCSc7CgkJfQoJCQoJCWlmKCR0bXBvdXRwdXQgIT0gJycpCSRvdXRwdXQgLj0gJwo8dGFibGUgbmFtZT0ibXVsdGlwbGVmaWxlc2ZpZWxkcyI+CgknLiR0bXBvdXRwdXQuJwo8L3RhYmxlPgoKJzsKCgoKCS8vIGV4cG9ydGluZyBsaXN0b3B0aW9ucyAoaWYgYW55KQoJCSR0bXBvdXRwdXQgPSAnJzsKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iX2ZpZWxkb3B0aW9ucyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJd2hpbGUgKCAkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApIHsKCQkJJHRtcG91dHB1dCAuPSAnPGl0ZW0+CgkJJzsKCQkJZm9yZWFjaCgkcm93IGFzICRmaWVsZD0+JHZhbHVlKXsKCQkJCSR0bXBvdXRwdXQgLj0gJzwnLiRmaWVsZC4nPjwhW0NEQVRBWycuc3RyaXBzbGFzaGVzKCR2YWx1ZSkuJ11dPjwvJy4kZmllbGQuJz4KCQknOwoJCQl9CgkJCSR0bXBvdXRwdXQgLj0gJwoJPC9pdGVtPgoJJzsKCQl9CgkJCgkJaWYoJHRtcG91dHB1dCAhPSAnJykJJG91dHB1dCAuPSAnCjx0YWJsZSBuYW1lPSJmaWVsZG9wdGlvbnMiPgoJJy4kdG1wb3V0cHV0LicKPC90YWJsZT4KCic7CgoKCgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2V4cG9ydF90ZW1wbGF0ZXMnXSkgJiYgJHBhcmFtc1snZXhwb3J0X3RlbXBsYXRlcyddKXsKCQlmb3JlYWNoKCR0aGlzLT5MaXN0VGVtcGxhdGVzKCkgYXMgJHRwbG5hbWUpewoJCQkkb3V0cHV0IC49ICcKPHRlbXBsYXRlIG5hbWU9IicuJHRwbG5hbWUuJyI+PCFbQ0RBVEFbJy4kdGhpcy0+R2V0VGVtcGxhdGUoJHRwbG5hbWUpLiddXT48L3RlbXBsYXRlPgonOwoJCX0KCX0KCQoJaWYoJG91dHB1dCA9PSAnJyl7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2V4cG9ydCcsICRyZXR1cm5pZCk7Cgl9ZWxzZXsKCQkkb3V0cHV0ID0gIjxyb290PiIuJG91dHB1dC4iPC9yb290PiI7CgkJCgkJJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOyAKCQlmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQkJCgoJCWhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKCQloZWFkZXIoJ0V4cGlyZXM6IDAnKTsKCQloZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCcpOwoJCWhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwoJCWhlYWRlcignQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOwoJCWhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94bWwnKTsKCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSInLiR0aGlzLT5HZXROYW1lKCkuJy54bWwiJyApOwoJCWhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBzdHJsZW4oJG91dHB1dCkpOwoJCgkJcHJpbnQoJG91dHB1dCk7CgkKCQlAZmx1c2goKTsgQG9iX2ZsdXNoKCk7IEBvYl9mbHVzaCgpOwoJfQkKCn1lbHNlewoJCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZXhwb3J0IiwgJHJldHVybmlkKTsKCWVjaG8gJzxoMz4nLiR0aGlzLT5MYW5nKCdleHBvcnRfdGl0bGUnKS4nPC9oMz4nOwoJZWNobyAnPGZpZWxkc2V0PjxsZWdlbmQ+PGI+Jy4kdGhpcy0+TGFuZygnZXhwb3J0d2hpY2hsZXZlbHMnKS4nPC9iPjwvbGVnZW5kPic7CgkkY2hvaWNlcyA9IGFycmF5KCk7Cglmb3JlYWNoKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpIGFzICRsZXZlbCkJJGNob2ljZXNbJGxldmVsXSA9ICRsZXZlbDsKCWVjaG8gJHRoaXMtPkRvQ2hlY2tib3hlcygkaWQsICdzZWxlY3RlZGxldmVscycsICRjaG9pY2VzLCAkY2hvaWNlcykuJzwvZmllbGRzZXQ+PGJyLz4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImV4cG9ydF90ZW1wbGF0ZXMiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdleHBvcnRfdGVtcGxhdGVzJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZG9leHBvcnQiLCBsYW5nKCJzdWJtaXQiKSkuJzwvcD4nOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwkKCQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkJZXhpdDsKCmVjaG8gJzxoMz4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfdGl0bGUnKS4nPC9oMz4nOwoKaWYoaXNzZXQoJF9GSUxFUykgJiYgaXNzZXQoJF9GSUxFU1skaWQuJ3htbGZpbGUnXSkgJiYgaXNzZXQoJF9GSUxFU1skaWQuJ3htbGZpbGUnXVsnbmFtZSddKSAmJiAkX0ZJTEVTWyRpZC4neG1sZmlsZSddWyduYW1lJ10gIT0gJycpIHsKCQoJJHhtbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkX0ZJTEVTWyRpZC4neG1sZmlsZSddWyd0bXBfbmFtZSddICk7CgkkcGFyc2VyID0geG1sX3BhcnNlcl9jcmVhdGUoJycpOwoJeG1sX3BhcnNlcl9zZXRfb3B0aW9uKCRwYXJzZXIsIFhNTF9PUFRJT05fVEFSR0VUX0VOQ09ESU5HLCAnVVRGLTgnKTsKCXhtbF9wYXJzZXJfc2V0X29wdGlvbigkcGFyc2VyLCBYTUxfT1BUSU9OX0NBU0VfRk9MRElORywgMCk7Cgl4bWxfcGFyc2VyX3NldF9vcHRpb24oJHBhcnNlciwgWE1MX09QVElPTl9TS0lQX1dISVRFLCAxKTsKCgkkeG1sZGF0YSA9IGFycmF5KCk7Cgl4bWxfcGFyc2VfaW50b19zdHJ1Y3QoJHBhcnNlciwgdHJpbSgkeG1sKSwgJHhtbGRhdGEpOwoJeG1sX3BhcnNlcl9mcmVlKCRwYXJzZXIpOwoJaWYgKCEkeG1sZGF0YSkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2ltcG9ydCcsICRyZXR1cm5pZCwgYXJyYXkoJ21vZHVsZV9tZXNzYWdlJz0+JHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWR4bWwnKSkgKTsKCgkkdGFibGVzID0gYXJyYXkoKTsKCSR0ZW1wbGF0ZXMgPSBhcnJheSgpOwoJJGVudHJpZXMgPSAwOwoJJGN1cnJlbnR0YWJsZSA9IGZhbHNlOwoJJGN1cnJlbnRpdGVtID0gZmFsc2U7CgoJJGV4aXN0aW5nX3RhYmxlcyA9IGFycmF5X21lcmdlKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpLCBhcnJheSgnZmllbGRvcHRpb25zJywgJ211bHRpcGxlZmlsZXNmaWVsZHMnKSk7CgkKCQoJZm9yZWFjaCAoJHhtbGRhdGEgYXMgJGRhdGEpIHsKCQlzd2l0Y2goJGRhdGFbJ3R5cGUnXSkgewoJCQljYXNlICdvcGVuJzoKCQkJCWlmKCRkYXRhWydsZXZlbCddID09IDIgJiYgJGRhdGFbJ3RhZyddID09ICd0YWJsZScgJiYgaXNzZXQoJGRhdGFbJ2F0dHJpYnV0ZXMnXSkgJiYgaXNzZXQoJGRhdGFbJ2F0dHJpYnV0ZXMnXVsnbmFtZSddKSApewoJCQkJCSR0YWJsZW5hbWUgPSAkZGF0YVsnYXR0cmlidXRlcyddWyduYW1lJ107CgkJCQkJaWYoaW5fYXJyYXkoJHRhYmxlbmFtZSwgJGV4aXN0aW5nX3RhYmxlcykpewoJCQkJCQkkdGFibGVzWyR0YWJsZW5hbWVdID0gYXJyYXkoKTsKCQkJCQkJJGN1cnJlbnR0YWJsZSA9ICR0YWJsZW5hbWU7CgkJCQkJfWVsc2V7CgkJCQkJCSRjdXJyZW50dGFibGUgPSBmYWxzZTsKCQkJCQl9CgkJCQl9ZWxzZWlmKCRkYXRhWydsZXZlbCddID09IDMgJiYgJGRhdGFbJ3RhZyddID09ICdpdGVtJyl7CgkJCQkJJGN1cnJlbnRpdGVtID0gYXJyYXkoKTsKCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNlICdjbG9zZSc6CgkJCQlpZigkY3VycmVudHRhYmxlICYmICRjdXJyZW50aXRlbSAhPSBmYWxzZSAmJiAkZGF0YVsnbGV2ZWwnXSA9PSAzICYmICRkYXRhWyd0YWcnXSA9PSAnaXRlbScpewoJCQkJCWlmKGNvdW50KCRjdXJyZW50aXRlbSkgPiAwKXsKCQkJCQkJYXJyYXlfcHVzaCgkdGFibGVzWyRjdXJyZW50dGFibGVdLCAkY3VycmVudGl0ZW0pOwoJCQkJCQkkZW50cmllcysrOwoJCQkJCX0KCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNlICdjb21wbGV0ZSc6CgkJCQlpZigkZGF0YVsnbGV2ZWwnXSA9PSA0KXsKCQkJCQkkY3VycmVudGl0ZW1bJGRhdGFbJ3RhZyddXSA9ICRkYXRhWyd2YWx1ZSddOwoJCQkJfWVsc2VpZigkZGF0YVsnbGV2ZWwnXSA9PSAxICYmICRkYXRhWyd0YWcnXSA9PSAndGVtcGxhdGUnICYmIGlzc2V0KCRkYXRhWydhdHRyaWJ1dGVzJ10pICYmIGlzc2V0KCRkYXRhWydhdHRyaWJ1dGVzJ11bJ25hbWUnXSkgKXsKCQkJCQkkdGVtcGxhdGVzWyRkYXRhWydhdHRyaWJ1dGVzJ11bJ25hbWUnXV0gPSAkZGF0YVsndmFsdWUnXTsKCQkJCX0KCQkJCWJyZWFrOwoJCX0KCX0KCglpZihjb3VudCgkdGFibGVzKSA9PSAwKQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnaW1wb3J0JywgJHJldHVybmlkLCBhcnJheSgnbW9kdWxlX21lc3NhZ2UnPT4kdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHhtbCcpKSApOwoJCgkkX1NFU1NJT05bJ2N0bG1tX21vZHVsZWltcG9ydCddID0gYXJyYXkoKTsKCSRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddID0gJHRhYmxlczsKCSRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RlbXBsYXRlcyddID0gJHRlbXBsYXRlczsKCQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImltcG9ydCIsICRyZXR1cm5pZCk7CgllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfZW50cmllcycsJGVudHJpZXMpLic8L3A+JzsKCWVjaG8gJzxmaWVsZHNldD48bGVnZW5kPjxiPicuJHRoaXMtPkxhbmcoJ2ltcG9ydHdoaWNobGV2ZWxzJykuJzwvYj48L2xlZ2VuZD4nOwoJJGNob2ljZXMgPSBhcnJheSgpOwoJZm9yZWFjaCgkdGFibGVzIGFzICRrZXk9PiR2YWx1ZSl7CgkJaWYoY291bnQoJHZhbHVlKSA+MCkJJGNob2ljZXNbJGtleS4nICgnLmNvdW50KCR2YWx1ZSkuJyknXSA9ICRrZXk7Cgl9CgllY2hvICR0aGlzLT5Eb0NoZWNrYm94ZXMoJGlkLCAnc2VsZWN0ZWRsZXZlbHMnLCAkY2hvaWNlcywgJGNob2ljZXMpLic8L2ZpZWxkc2V0Pjxici8+JzsKCWlmKGNvdW50KCR0ZW1wbGF0ZXMpID4gMCkJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImltcG9ydF90ZW1wbGF0ZXMiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdpbXBvcnRfdGVtcGxhdGVzJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImltcG9ydF9kZWxldGUiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdpbXBvcnRfZGVsZXRlJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZG9pbXBvcnQiLCBsYW5nKCJzdWJtaXQiKSkuJzwvcD4nOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwoKfWVsc2VpZihpc3NldCgkcGFyYW1zWydkb2ltcG9ydCddKSAmJiBpc3NldCgkX1NFU1NJT05bJ2N0bG1tX21vZHVsZWltcG9ydCddKSAmJiBpc3NldCgkcGFyYW1zWydzZWxlY3RlZGxldmVscyddKSl7CgoJJGRiID0mICR0aGlzLT5HZXREYigpOwoJJHRhYmxlcHJlZml4ID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIjsKCSRlcnJvcnMgPSAnJzsKCSRhZGRlZCA9IDA7CgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2ltcG9ydF90ZW1wbGF0ZXMnXSkgJiYgJHBhcmFtc1snaW1wb3J0X3RlbXBsYXRlcyddICYmIGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RlbXBsYXRlcyddKSApewoJCWZvcmVhY2goJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXVsndGVtcGxhdGVzJ10gYXMgJHRwbG5hbWU9PiR0ZW1wbGF0ZSl7CgkJCSR0aGlzLT5TZXRUZW1wbGF0ZSgkdHBsbmFtZSwgJHRlbXBsYXRlKTsKCQl9Cgl9CgkKCSRkZWxldGUgPSAoaXNzZXQoJHBhcmFtc1snaW1wb3J0X2RlbGV0ZSddKSAmJiAkcGFyYW1zWydpbXBvcnRfZGVsZXRlJ10gKTsKCQoJZm9yZWFjaCgkcGFyYW1zWydzZWxlY3RlZGxldmVscyddIGFzICR0YWJsZW5hbWUpewoJCQoJCWlmKGlzX2NhbGxhYmxlKGFycmF5KCRkYiwnTWV0YUNvbHVtbk5hbWVzJykpKXsKCQkJJGV4aXN0aW5nX2ZpZWxkcyA9IGFycmF5KCk7CgkJCSRjb2x1bW5zID0gJGRiLT5NZXRhQ29sdW1uTmFtZXMoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCQlmb3JlYWNoKCRjb2x1bW5zIGFzICRjb2wpCWFycmF5X3B1c2goJGV4aXN0aW5nX2ZpZWxkcyxzdHJ0b2xvd2VyKCRjb2wpKTsKCQl9ZWxzZXsKCQkJJGNvbHVtbnMgPSBmYWxzZTsKCQl9CgkJCgkJJHByb2NlZWQgPSB0cnVlOwoJCSRoaWdoZXN0aWQgPSAwOwoJCWlmKGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdKSl7CgkJCWlmKCRkZWxldGUpCSRkYi0+RXhlY3V0ZSgiVFJVTkNBVEUgVEFCTEUgIi4kdGFibGVwcmVmaXguJHRhYmxlbmFtZSk7CgkJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCQkkaSA9IDA7CgkJCXdoaWxlKCRwcm9jZWVkICYmICRpIDwgY291bnQoJHRhYmxlKSl7CgkJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJCSRxdWVyeSA9ICcnOwoJCQkJZm9yZWFjaCgkdGFibGVbJGldIGFzICRrZXk9PiR2YWx1ZSl7CgkJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJCSRxdWVyeSAuPSAoJHF1ZXJ5PT0nJz8nJzonLCAnKS4iYCIuJGtleS4iYD0/IjsKCQkJCQkJJHZhbHVlc1tdID0gKCR2YWx1ZT09PU5VTEw/Jyc6JHZhbHVlKTsKCQkJCQl9CgkJCQl9CgkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi4kdGFibGVwcmVmaXguJHRhYmxlbmFtZS4iIFNFVCAiLiRxdWVyeTsKCQkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJCWlmKGlzc2V0KCR0YWJsZVskaV1bJ2lkJ10pICYmICR0YWJsZVskaV1bJ2lkJ10gPiAkaGlnaGVzdGlkKQkkaGlnaGVzdGlkID0gJHRhYmxlWyRpXVsnaWQnXTsKCQkJCQkkYWRkZWQrKzsKCQkJCX1lbHNlewoJCQkJCSRwcm9jZWVkID0gZmFsc2U7CgkJCQkJJGVycm9ycyAuPSAoJGVycm9ycz09Jyc/Jyc6JywgJykuJHRhYmxlbmFtZTsKCQkJCX0JCgkJCQkkaSsrOwoJCQl9CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9Cgl9CgkKCWlmKGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWydtdWx0aXBsZWZpbGVzZmllbGRzJ10pKXsKCQkkdGFibGVuYW1lID0gIm11bHRpcGxlZmlsZXNmaWVsZHMiOwoJCSRwcm9jZWVkID0gdHJ1ZTsKCQkkaGlnaGVzdGlkID0gMDsKCQlpZigkZGVsZXRlKQkkZGItPkV4ZWN1dGUoIlRSVU5DQVRFIFRBQkxFICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCSRpID0gMDsKCQl3aGlsZSgkcHJvY2VlZCAmJiAkaSA8IGNvdW50KCR0YWJsZSkpewoJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJJHF1ZXJ5ID0gJyc7CgkJCWZvcmVhY2goJHRhYmxlWyRpXSBhcyAka2V5PT4kdmFsdWUpewoJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJJHF1ZXJ5IC49ICgkcXVlcnk9PScnPycnOicsICcpLiJgIi4ka2V5LiJgPT8iOwoJCQkJCSR2YWx1ZXNbXSA9ICgkdmFsdWU9PT1OVUxMPycnOiR2YWx1ZSk7CgkJCQl9CgkJCX0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuIiBTRVQgIi4kcXVlcnk7CgkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJaWYoaXNzZXQoJHRhYmxlWyRpXVsnZmlsZWlkJ10pICYmICR0YWJsZVskaV1bJ2ZpbGVpZCddID4gJGhpZ2hlc3RpZCkJJGhpZ2hlc3RpZCA9ICR0YWJsZVskaV1bJ2ZpbGVpZCddOwoJCQkJJGFkZGVkKys7CgkJCX1lbHNlewoJCQkJJHByb2NlZWQgPSBmYWxzZTsKCQkJCSRlcnJvcnMgLj0gKCRlcnJvcnM9PScnPycnOicsICcpLiR0YWJsZW5hbWU7CgkJCX0JCgkJCSRpKys7CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9CQkKCQkKCX0KCQoJaWYoaXNzZXQoJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXVsndGFibGVzJ11bJ2ZpZWxkb3B0aW9ucyddKSl7CgkJJHRhYmxlbmFtZSA9ICJmaWVsZG9wdGlvbnMiOwoJCSRwcm9jZWVkID0gdHJ1ZTsKCQkkaGlnaGVzdGlkID0gMDsKCQlpZigkZGVsZXRlKQkkZGItPkV4ZWN1dGUoIlRSVU5DQVRFIFRBQkxFICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCSRpID0gMDsKCQl3aGlsZSgkcHJvY2VlZCAmJiAkaSA8IGNvdW50KCR0YWJsZSkpewoJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJJHF1ZXJ5ID0gJyc7CgkJCWZvcmVhY2goJHRhYmxlWyRpXSBhcyAka2V5PT4kdmFsdWUpewoJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJJHF1ZXJ5IC49ICgkcXVlcnk9PScnPycnOicsICcpLiJgIi4ka2V5LiJgPT8iOwoJCQkJCSR2YWx1ZXNbXSA9ICgkdmFsdWU9PT1OVUxMPycnOiR2YWx1ZSk7CgkJCQl9CgkJCX0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuIiBTRVQgIi4kcXVlcnk7CgkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJaWYoaXNzZXQoJHRhYmxlWyRpXVsnaWQnXSkgJiYgJHRhYmxlWyRpXVsnaWQnXSA+ICRoaWdoZXN0aWQpCSRoaWdoZXN0aWQgPSAkdGFibGVbJGldWydpZCddOwoJCQkJJGFkZGVkKys7CgkJCX1lbHNlewoJCQkJZWNobyBteXNxbF9lcnJvcigpOwoJCQkJJHByb2NlZWQgPSBmYWxzZTsKCQkJCSRlcnJvcnMgLj0gKCRlcnJvcnM9PScnPycnOicsICcpLiR0YWJsZW5hbWU7CgkJCX0JCgkJCSRpKys7CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9CQkKCQkKCX0KCQoJdW5zZXQoJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXSk7CgkKCSRtZXNzYWdlID0gJHRoaXMtPkxhbmcoJ2ltcG9ydF9kb25lJywkYWRkZWQpOwoJaWYoJGVycm9ycyAhPSAnJykgJG1lc3NhZ2UgLj0gJzxici8+Jy4kdGhpcy0+TGFuZygnY291bGRub3RpbXBvcnQnKS4kZXJyb3JzOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21vZHVsZV9tZXNzYWdlJz0+JG1lc3NhZ2UpICk7Cgp9ZWxzZXsKCgllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfZmlsZXByb21wdCcpLic8L3A+JzsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdpbXBvcnQnLCAkcmV0dXJuaWQsICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnKTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3htbGZpbGUnKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwkKCQp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.movesomething.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokbmV3cGFyYW1zID0gaXNzZXQoJHBhcmFtc1sibGV2ZWxuYW1lIl0pP2FycmF5KCJhY3RpdmVfdGFiIj0+JHBhcmFtc1sibGV2ZWxuYW1lIl0pOmFycmF5KCk7DQoNCmlmICghaXNzZXQoJHBhcmFtc1sibW92ZSJdKSB8fCAhaXNzZXQoJHBhcmFtc1sidGFibGVuYW1lIl0pIHx8ICFpc3NldCgkcGFyYW1zWyJwcmVmaXgiXSkgfHwgIWlzc2V0KCRwYXJhbXNbImN1cnJlbnRvcmRlciJdKSApDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KJGRidGFibGUgPSBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiRwYXJhbXNbInRhYmxlbmFtZSJdOw0KJG9yZGVyID0gJHBhcmFtc1siY3VycmVudG9yZGVyIl07DQokaXRlbWlkID0gJHBhcmFtc1skcGFyYW1zWyJwcmVmaXgiXS4iaWQiXTsNCiR3cGFyZW50ID0gaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pPyIgQU5EIHBhcmVudD0nIi4kcGFyYW1zWyJwYXJlbnQiXS4iJyI6IiI7DQoNCnN3aXRjaCgkcGFyYW1zWyJtb3ZlIl0pew0KCQ0KCWNhc2UgImRlbGV0ZSI6DQoJCWlmKGlzc2V0KCRwYXJhbXNbInNoYXJlY2hpbGRyZW4iXSkgJiYgJHBhcmFtc1sic2hhcmVjaGlsZHJlbiJdKXsNCgkJCS8vIHRoaXMgbGV2ZWwgc2hhcmUgaXRzIGNoaWxkcmVuLi4uIHdlIGRlbGV0ZSB0aGUgaXRlbSdzIGxpbmtzIHRvIGNoaWxkcmVuDQoJCQlpZigkY2hpbGRsZXZlbCA9ICR0aGlzLT5nZXRfbmV4dGxldmVsKCRwYXJhbXNbImxldmVsbmFtZSJdKSl7DQoJCQkJJGxpbmt0YWJsZSA9ICRkYnRhYmxlLiJfaGFzXyIuJGNoaWxkbGV2ZWw7DQoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRsaW5rdGFibGUgV0hFUkUgIi4kcGFyYW1zWyJsZXZlbG5hbWUiXS4iX2lkPT8iOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCgkJCX0NCgkJfWVsc2VpZihpc3NldCgkcGFyYW1zWyJjaGlsZCJdKSAmJiAkcGFyYW1zWyJjaGlsZCJdICE9ICIiKXsNCgkJCS8vIHRoaXMgbGV2ZWwgZG9lc24ndCBzaGFyZSBpdHMgY2hpbGRyZW4uLi4gd2UgZGVsZXRlIHRoZSBpdGVtJ3MgY2hpbGRyZW4NCgkJCSRjaGlsZHRhYmxlID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kcGFyYW1zWyJjaGlsZCJdOw0KCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRjaGlsZHRhYmxlIFdIRVJFIHBhcmVudCA9ID8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQl9DQoJCWlmKGlzc2V0KCRwYXJhbXNbInNoYXJlZGJ5cGFyZW50cyJdKSAmJiAkcGFyYW1zWyJzaGFyZWRieXBhcmVudHMiXSl7DQoJCQkvLyB0aGlzIGl0ZW0gaXMgc2hhcmVkIGJ5IGl0cyBwYXJlbnRzLi4uIHdlIGRlbGV0ZSBsaW5rcyBmcm9tIHBhcmVudHMgdG8gdGhpcyBjaGlsZA0KCQkJaWYoJHBhcmVudGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHBhcmFtc1sibGV2ZWxuYW1lIl0sIGZhbHNlKSl7DQoJCQkJJGxpbmt0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zXyIuJHBhcmVudGxldmVsLiJfaGFzXyIuJHBhcmFtc1sibGV2ZWxuYW1lIl07DQoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRsaW5rdGFibGUgV0hFUkUgIi4kcGFyYW1zWyJsZXZlbG5hbWUiXS4iX2lkPT8iOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCgkJCX0NCgkJfQ0KCQkNCgkJaWYoaXNzZXQoJHBhcmFtc1siZmlsZXMiXSkgJiYgJHBhcmFtc1siZmlsZXMiXSAhPSAiIiAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGVsZXRlX2ZpbGVzIixmYWxzZSkgKXsNCgkJCSRmaWxlZmllbGRzID0gZXhwbG9kZSgiLCIsJHBhcmFtc1siZmlsZXMiXSk7DQoJCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAkZGJ0YWJsZSBXSEVSRSBpZCA9ID8iOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQkJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJCWZvcmVhY2goJGZpbGVmaWVsZHMgYXMgJGZpZWxkKXsNCgkJCQkJaWYoJHJvd1skZmllbGRdICE9ICIiICYmICRyb3dbJGZpZWxkXSAhPSAiLyIpew0KCQkJCQkJJGZpbGVwYXRoID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uKHN1YnN0cigkcm93WyJmaWxlcGF0aCJdLDAsMSk9PSIvIj8iIjoiLyIpLiRyb3dbJGZpZWxkXTsNCgkJCQkJCSR0bXBleHAgPSBleHBsb2RlKCIvIiwkcm93WyRmaWVsZF0pOw0KCQkJCQkJJGZpbGVuYW1lID0gJHRtcGV4cFtjb3VudCgkdG1wZXhwKSAtMV07DQoJCQkJCQkkdGh1bWJwYXRoID0gc3RyX3JlcGxhY2UoJGZpbGVuYW1lLCJwbHRodW1iXyIuJGZpbGVuYW1lLCRmaWxlcGF0aCk7DQoJCQkJCQlpZihmaWxlX2V4aXN0cygkdGh1bWJwYXRoKSkJdW5saW5rKCR0aHVtYnBhdGgpOw0KCQkJCQkJaWYoZmlsZV9leGlzdHMoJGZpbGVwYXRoKSkJdW5saW5rKCRmaWxlcGF0aCk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJLy8gaWYgdGhlIGxldmVsIGhhcyBmaWVsZHMgb2YgdGhlIHR5cGUgIlVuZGVmaW5lZCBhbW91bnQgb2YgZmlsZXMiLCB3ZSBkZWxldGUgdGhlIGZpbGVzDQoJCWlmKGlzc2V0KCRwYXJhbXNbImFkZGZpbGVzIl0pICYmICRwYXJhbXNbImFkZGZpbGVzIl0gIT0gIiIpew0KCQkJJGZpZWxkcyA9IGV4cGxvZGUoIiwiLCRwYXJhbXNbImFkZGZpbGVzIl0pOw0KCQkJaWYoY291bnQoJGZpZWxkcykgPiAwKXsNCgkJCQkkd2hlcmUgPSAiIjsNCgkJCQkkdmFsdWVzID0gYXJyYXkoKTsNCgkJCQlmb3JlYWNoKCRmaWVsZHMgYXMgJGZpZWxkKXsNCgkJCQkJJHdoZXJlIC49ICgkd2hlcmUgPT0gIiI/IiI6IiBPUiAiKS4iIGZpZWxkbmFtZT0/IjsNCgkJCQkJJHZhbHVlc1tdID0gJGZpZWxkOw0KCQkJCX0NCgkJCQkkYWRkZmlsZXN0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX211bHRpcGxlZmlsZXNmaWVsZHMiOw0KDQoJCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImRlbGV0ZV9maWxlcyIsZmFsc2UpKXsNCgkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gJGFkZGZpbGVzdGFibGUgV0hFUkUgKCR3aGVyZSkgQU5EIGl0ZW1pZD0iLiRpdGVtaWQ7DQoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KCQkJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkJCQkkZmlsZXBhdGggPSAkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXS4oc3Vic3RyKCRyb3dbImZpbGVwYXRoIl0sMCwxKT09Ii8iPyIiOiIvIikuJHJvd1siZmlsZXBhdGgiXTsNCgkJCQkJCWlmKGZpbGVfZXhpc3RzKCRmaWxlcGF0aCkpCXVubGluaygkZmlsZXBhdGgpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAkYWRkZmlsZXN0YWJsZSBXSEVSRSAoJHdoZXJlKSBBTkQgaXRlbWlkPSIuJGl0ZW1pZDsNCgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsNCgkJCX0NCgkJfQ0KCQkJDQoJCQ0KCQkkcXVlcnkgPSAiREVMRVRFIEZST00gJGRidGFibGUgV0hFUkUgaWQgPSA/IExJTUlUIDEiOw0KCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbWlkKSk7DQoNCgkJLy8gVVBEQVRFIFRIRSBPUkRFUiBPRiBUSEUgSVRFTVMNCgkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpdGVtX29yZGVyID4gPyAiLiR3cGFyZW50Ow0KCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkb3JkZXIpKTsNCg0KCQlpZihpc3NldCgkcGFyYW1zWyJsZXZlbG5hbWUiXSkpCSR0aGlzLT5TZW5kRXZlbnQoImF1dG9zX2RlbGV0ZWQiLCBhcnJheSgid2hhdCI9PiRwYXJhbXNbImxldmVsbmFtZSJdKSk7DQoJCSRuZXdwYXJhbXNbIm1vZHVsZV9tZXNzYWdlIl0gPSAkdGhpcy0+bGFuZygibWVzc2FnZV9kZWxldGVkIik7DQoJCWJyZWFrOwkNCg0KCWNhc2UgInVwIjoNCgkJaWYgKCRvcmRlciAhPSAxKXsNCgkJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgaXRlbV9vcmRlciA9ID8gJHdwYXJlbnQgTElNSVQgMTsiOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG9yZGVyLTEpKTsNCgkJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaWQgPSA/IExJTUlUIDE7IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCgkJfQ0KCQlicmVhazsNCgkJDQoJY2FzZSAiZG93biI6DQoJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaXRlbV9vcmRlciA9ID8gJHdwYXJlbnQgTElNSVQgMTsiOw0KCQlpZiggJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG9yZGVyKzEpKSApew0KCQkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlcisxKSBXSEVSRSBpZCA9ID8gTElNSVQgMTsiOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQl9DQoJCWJyZWFrOw0KfQ0KDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.reorder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRkYiA9ICR0aGlzLT5HZXREYigpOwokbGV2ZWxhcnJheSA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOwokb3JkZXJlZGJ5cGFyZW50ID0gYXJyYXkoInZlaGljbGV0eXBlIiwidmVoaWNsZSIpOwppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkpewoJJHRoaXMtPlJlZGlyZWN0KCRpZCwiZGVmYXVsdGFkbWluIiwkcmV0dXJuaWQpOwp9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHJlb3JkZXIiXSkpewoJZXhwbG9kZSgiLCIsJHBhcmFtc1sibmV3b3JkZXIiXSk7Cgkkb3JkZXIgPSBhcnJheSgpOwoJJGxhc3RpZCA9IGFycmF5KCk7Cglmb3JlYWNoKGV4cGxvZGUoIiwiLCRwYXJhbXNbIm5ld29yZGVyIl0pIGFzICRpdGVtKXsKCQlsaXN0KCRsZXZlbCwkaXRlbWlkKSA9IGV4cGxvZGUoIl8iLCRpdGVtKTsKCQkkbGFzdGlkWyRsZXZlbF0gPSAkaXRlbWlkOwoJCWlmKCFpc3NldCgkb3JkZXJbJGxldmVsXSkpCSRvcmRlclskbGV2ZWxdPWFycmF5KCk7CgkJaWYoJGxldmVsPT0xKXsKCQkJJG9yZGVyWzFdW109JGl0ZW1pZDsKCQl9ZWxzZXsKCQkJaWYoIWlzc2V0KCRvcmRlclskbGV2ZWxdWyRsYXN0aWRbJGxldmVsLTFdXSkpCSRvcmRlclskbGV2ZWxdWyRsYXN0aWRbJGxldmVsLTFdXT1hcnJheSgpOwoJCQkkb3JkZXJbJGxldmVsXVskbGFzdGlkWyRsZXZlbC0xXV1bXSA9ICRpdGVtaWQ7CgkJfQoJfQoJZm9yZWFjaCgkb3JkZXIgYXMgJGtleT0+JGl0ZW1zKXsKCQkkbGV2ZWwgPSAkbGV2ZWxhcnJheVska2V5LTFdOwoJCSRpdGVtX29yZGVyID0gMTsKCQlpZigka2V5PT0xKXsKCQkJZm9yZWFjaCgkaXRlbXMgYXMgJGl0ZW0pewoJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zXyIuJGxldmVsLiIgU0VUIGl0ZW1fb3JkZXI9PyBXSEVSRSBpZD0/IExJTUlUIDEiOwoJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkaXRlbV9vcmRlciwkaXRlbSkpOwoJCQkJJGl0ZW1fb3JkZXIrKzsKCQkJfQoJCX1lbHNlewoJCQlmb3JlYWNoKCRpdGVtcyBhcyAkcGFyZW50PT4kY2hpbGRyZW4pewoJCQkJaWYoaW5fYXJyYXkoJGxldmVsLCAkb3JkZXJlZGJ5cGFyZW50KSkJJGl0ZW1fb3JkZXIgPSAxOwoJCQkJZm9yZWFjaCgkY2hpbGRyZW4gYXMgJGNoaWxkKXsKCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfIi4kbGV2ZWwuIiBTRVQgaXRlbV9vcmRlcj0/IFdIRVJFIGlkPT8gTElNSVQgMSI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkaXRlbV9vcmRlciwkY2hpbGQpKTsKCQkJCQkkaXRlbV9vcmRlcisrOwoJCQkJfQoJCQl9CQkJCgkJCQkKCQl9CgkJCgl9CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCJkZWZhdWx0YWRtaW4iLCRyZXR1cm5pZCxhcnJheSgibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKSk7Cn0KCmVjaG8gIjxoMT4iLiR0aGlzLT5MYW5nKCJyZW9yZGVyIikuIjwvaDE+IjsKJGkgPSAwOwokc2VsZWN0ID0gIiI7CiR0YWJsZXMgPSAiIjsKJG9yZGVyID0gIiI7CndoaWxlKCRpIDwgY291bnQoJGxldmVsYXJyYXkpKXsKCSRsZXZlbCA9ICRsZXZlbGFycmF5WyRpXTsKCSRpKys7Cgkkc2VsZWN0IC49ICgkc2VsZWN0PT0iIj8iIjoiLCAiKS4idGFibGUiLiRpLiIuaWQgdGFibGUiLiRpLiJfaWQsIHRhYmxlIi4kaS4iLm5hbWUgdGFibGUiLiRpLiJfbmFtZSI7CglpZigkaSA9PSAxKXsKCQkkdGFibGVzID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfIi4kbGV2ZWwuIiB0YWJsZSIuJGk7Cgl9ZWxzZXsKCQkkdGFibGVzIC49ICIgTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfIi4kbGV2ZWwuIiB0YWJsZSIuJGkuICIgT04gdGFibGUiLigkaS0xKS4iLmlkPXRhYmxlIi4kaS4iLnBhcmVudCI7Cgl9Cgkkb3JkZXIgLj0gKCRvcmRlcj09IiI/IiI6IiwgIikuInRhYmxlIi4kaS4iLml0ZW1fb3JkZXIiOwp9CiRxdWVyeSA9ICJTRUxFQ1QgJHNlbGVjdCBGUk9NICR0YWJsZXMgT1JERVIgQlkgJG9yZGVyIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgokbGFzdCA9IGFycmF5KCk7CiRsaXN0cyA9IGFycmF5KCk7CiRjb250YWlubWVudCA9IGFycmF5KCk7CiRwYXJzZWxldmVsID0gMTsKZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgInJlb3JkZXIiLCAkcmV0dXJuaWQsICdwb3N0JywgJycsIGZhbHNlLCAnJywgYXJyYXkoKSwgJyBvbnN1Ym1pdD0icmV0dXJuIGN0bG1tX3N1Ym1pdF9yZW9yZGVyKCk7IicpOwp3aGlsZSgkcGFyc2VsZXZlbCA8PSAkaSl7CgkkbGFzdFskcGFyc2VsZXZlbF0gPSBmYWxzZTsKCSRsaXN0c1skcGFyc2VsZXZlbF0gPSBhcnJheSgpOwoJJGNvbnRhaW5tZW50WyRwYXJzZWxldmVsXSA9ICIiOwoJJHBhcnNlbGV2ZWwrKzsKfQplY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInN1Ym1pdHJlb3JkZXIiLGxhbmcoInN1Ym1pdCIpKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwicmVzZXRvcmRlciIsJHRoaXMtPkxhbmcoInJlc2V0b3JkZXIiKSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsImNhbmNlbCIsbGFuZygiY2FuY2VsIikpLiI8L3A+IjsKJGN1cnJlbnRsZXZlbCA9IDE7CmVjaG8gJzx1bCBjbGFzcz0ic29ydGFibGVMaXN0IiBpZD0iY3RsbW1fYmlnc29ydGxpc3QiPic7CndoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsKCSRwYXJzZWxldmVsID0gMTsKCXdoaWxlKCRwYXJzZWxldmVsIDw9ICRpKXsKCQlpZigkcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdICE9ICRsYXN0WyRwYXJzZWxldmVsXSl7CgkJCWlmKCRjdXJyZW50bGV2ZWwgPT0gJHBhcnNlbGV2ZWwpewoJCQkJaWYoJGxhc3RbJGN1cnJlbnRsZXZlbF0pCWVjaG8gIjwvbGk+IjsKCQkJfWVsc2VpZigkY3VycmVudGxldmVsID4gJHBhcnNlbGV2ZWwpewoJCQkJd2hpbGUoJGN1cnJlbnRsZXZlbCA+ICRwYXJzZWxldmVsKXsKCQkJCQllY2hvICI8L2xpPjwvdWw+PC9saT4iOwoJCQkJCSRjdXJyZW50bGV2ZWwtLTsKCQkJCX0KCQkJfWVsc2VpZigkY3VycmVudGxldmVsIDwgJHBhcnNlbGV2ZWwpewoJCQkJJGxpc3RpZCA9ICJsaXN0XyIuJGxldmVsYXJyYXlbJHBhcnNlbGV2ZWxdLiJfIi4kcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdOwoJCQkJJGN1cnJlbnRsZXZlbCsrOwoJCQkJZWNobyAnPHVsIGlkPSInLiRsaXN0aWQuJyIgY2xhc3M9InNvcnRhYmxlTGlzdCI+JzsKCQkJCSRsaXN0c1skcGFyc2VsZXZlbF1bXSA9ICRsaXN0aWQ7CgkJCQkkY29udGFpbm1lbnRbJHBhcnNlbGV2ZWxdIC49ICgkY29udGFpbm1lbnRbJHBhcnNlbGV2ZWxdPT0iIj8iIjoiLCIpLiciJy4kbGlzdGlkLiciJzsKCQkJfQoJCQllY2hvICc8bGkgaWQ9ImN0bG1tbGV2ZWwnLiRwYXJzZWxldmVsLidfJy4kcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdLiciPicuJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfbmFtZSJdOwoJCQkkbGFzdFskcGFyc2VsZXZlbF0gPSAkcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdOwoJCX0KCQkkcGFyc2VsZXZlbCsrOwoJfQp9CmVjaG8gIjwvbGk+IjsKd2hpbGUoJGN1cnJlbnRsZXZlbCA+IDEpewoJZWNobyAiPC91bD48L2xpPiI7CgkkY3VycmVudGxldmVsLS07Cn0KZWNobyAiPC91bD4iOwplY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInN1Ym1pdHJlb3JkZXIiLGxhbmcoInN1Ym1pdCIpKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwicmVzZXRvcmRlciIsJHRoaXMtPkxhbmcoInJlc2V0b3JkZXIiKSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsImNhbmNlbCIsbGFuZygiY2FuY2VsIikpLiI8L3A+IjsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCJuZXdvcmRlciIsIiIsJyBpZD0iY3RsbW1fbmV3b3JkZXIiJyk7CmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCiRyZXN0cmljdGVkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInJlc3RyaWN0X3Blcm1pc3Npb25zIixmYWxzZSk7CmlmKCRyZXN0cmljdGVkICYmICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF1dG9zX2FkdmFuY2VkIikpCSRyZXN0cmljdGVkID0gZmFsc2U7CgplY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cic7CmlmKCEkcmVzdHJpY3RlZCB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJwcm9kY2F0YWxvZ3VlX21hbmFnZV8iLiRsZXZlbGFycmF5WzBdKSkJZWNobyAnU29ydGFibGUuY3JlYXRlKCJjdGxtbV9iaWdzb3J0bGlzdCIpOwonOwoKZm9yZWFjaCgkbGlzdHMgYXMgJGxldmVsbnVtYmVyPT4kbGV2ZWwpewoJaWYoISRyZXN0cmljdGVkIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF1dG9zX21hbmFnZV8iLiRsZXZlbGFycmF5WyRsZXZlbG51bWJlci0xXSkpewoJCWZvcmVhY2goJGxldmVsIGFzICRsaXN0KXsKCQkJLyoKCQkJICogd2UgZG9uJ3QgdXNlIGNvbnRhaW5tZW50IHlldCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gZGVhbCB3aXRoIGNoYW5naW5nIHBhcmVudHMuLi4geWV0Li4uCgkJCSAqIGVjaG8gJ1NvcnRhYmxlLmNyZWF0ZSgiJy4kbGlzdC4nIicuKGNvdW50KCRsZXZlbCk+MT8iLHtjb250YWlubWVudDpbIi4kY29udGFpbm1lbnRbJGxldmVsbnVtYmVyXS4iXSwgZHJvcE9uRW1wdHk6ZmFsc2V9IjoiIikuIik7CgkJCSAqICI7CgkJCSAqLwoJCQllY2hvICdTb3J0YWJsZS5jcmVhdGUoIicuJGxpc3QuJyIpOwoJJzsKCQl9Cgl9Cn0KZWNobyAnCmZ1bmN0aW9uIGN0bG1tX3N1Ym1pdF9yZW9yZGVyKCl7Cgl2YXIgbmV3b3JkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3RsbW1fbmV3b3JkZXIiKTsKCXZhciBsaXN0bm9kZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3RsbW1fYmlnc29ydGxpc3QiKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGkiKTsKCWZvcihpPTA7aTxsaXN0bm9kZXMubGVuZ3RoO2krKyl7CgkJaWYobmV3b3JkZXIudmFsdWUgIT0gIiIpIG5ld29yZGVyLnZhbHVlICs9ICIsIjsKCQluZXdvcmRlci52YWx1ZSArPSBsaXN0bm9kZXNbaV0uaWQuc3Vic3RyKDEwKTsKCX0KCXJldHVybiB0cnVlOwkKfQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiJy4kaWQuJ21vZHVsZWZvcm1fMSIpLm9uc3VibWl0ID0gZnVuY3Rpb24oKXsKCXJldHVybiBjdGxtbV9zdWJtaXRfcmVvcmRlcigpOwp9Cjwvc2NyaXB0Pic7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.search.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7CiRmaW5hbGxldmVsID0gInZlaGljbGUiOwoKJHNlYXJjaG1vZGUgPSAoaXNzZXQoJHBhcmFtc1sic2VhcmNobW9kZSJdKSAmJiBpbl9hcnJheSgkcGFyYW1zWyJzZWFyY2htb2RlIl0sIGFycmF5KCJzaW1wbGUiLCJhZHZhbmNlZCIpKSk/JHBhcmFtc1sic2VhcmNobW9kZSJdOiJhZHZhbmNlZCI7CgppZihpc3NldCgkcGFyYW1zWyJzdWJtaXRzZWFyY2giXSkpewoJLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJLy8gIyBTRUFSQ0ggUkVTVUxUUwoJJGlubGluZSA9IChpc3NldCgkcGFyYW1zWyJpbmxpbmUiXSkgJiYgJHBhcmFtc1siaW5saW5lIl0pP3RydWU6ZmFsc2U7CgkkbGlua3JldHVybmlkID0gKGlzc2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkpPyR0aGlzLT5nZXRfcGFnZWlkKCRwYXJhbXNbImRldGFpbHBhZ2UiXSk6ZmFsc2U7CglpZighJGxpbmtyZXR1cm5pZCkJJGxpbmtyZXR1cm5pZCA9ICRyZXR1cm5pZDsKCSR3aGF0ID0gJHBhcmFtc1sid2hhdCJdOwoJJGxpbWl0ID0gaXNzZXQoJHBhcmFtc1sibGltaXQiXSk/JHBhcmFtc1sibGltaXQiXTowOwoJaWYoaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pICYmICRwYXJhbXNbIm5icGVycGFnZSJdID4gMCl7CgkJJG5icGVycGFnZSA9IChpbnQpICRwYXJhbXNbIm5icGVycGFnZSJdOwoJCSRsaW1pdCA9ICgoKGlzc2V0KCRwYXJhbXNbInBhZ2VpbmRleCJdKT8kcGFyYW1zWyJwYWdlaW5kZXgiXToxKS0xKSAqICRuYnBlcnBhZ2UpLiIsIi4kbmJwZXJwYWdlOwoJfWVsc2V7CgkJJG5icGVycGFnZSA9IGZhbHNlOwoJfQoJCgkkZW1wdHl0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJlbXB0eXRlbXBsYXRlIiwiKioiKTsKCQoJLy8gd2UgcHJlcGFyZSB0aGUgImRvIGFub3RoZXIgc2VhcmNoIiBsaW5rLCBrZWVwaW5nIHRoZSBzZWFyY2ggcGFyYW1ldGVycwoJJG5ld3BhcmFtcyA9IGFycmF5KCJ3aGF0Ij0+JHdoYXQsICJzZWFyY2htb2RlIj0+JHNlYXJjaG1vZGUpOwoJaWYoaXNzZXQoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0pKQkkbmV3cGFyYW1zWyJsaXN0dGVtcGxhdGUiXSA9ICRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdOwoJaWYoaXNzZXQoJHBhcmFtc1sibGltaXQiXSkpCQkJJG5ld3BhcmFtc1sibGltaXQiXSA9ICRwYXJhbXNbImxpbWl0Il07CglpZihpc3NldCgkcGFyYW1zWyJpbmxpbmUiXSkpCQkkbmV3cGFyYW1zWyJpbmxpbmUiXSA9ICRwYXJhbXNbImlubGluZSJdOwoJaWYoaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKSkJCSRuZXdwYXJhbXNbIm9yZGVyYnkiXSA9ICRwYXJhbXNbIm9yZGVyYnkiXTsKCWlmKGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSkJCSRuZXdwYXJhbXNbIm5icGVycGFnZSJdID0gJHBhcmFtc1sibmJwZXJwYWdlIl07CglpZihpc3NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pKQkkbmV3cGFyYW1zWyJkZXRhaWxwYWdlIl0gPSAkcGFyYW1zWyJkZXRhaWxwYWdlIl07CgkkYmFja2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJzZWFyY2giLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJzZWFyY2hhZ2FpbiIpLCAkbmV3cGFyYW1zLCAiIiwgZmFsc2UsICRpbmxpbmUsICIiLCBmYWxzZSwgZmFsc2UpOwkKCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYmFja2xpbmsiLCRiYWNrbGluayk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImJyZWFkY3J1bWJzIixmYWxzZSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudG9iaiIsZmFsc2UpOwoJCgkkbXVsdGlwbGVsaXN0ZmllbGRzID0gYXJyYXkoInZlaGljbGVfZmVhdHVyZXMiKTsKCQoJaWYoJHNlYXJjaG1vZGUgPT0gImFkdmFuY2VkIil7CgkJLy8gQURWQU5DRUQgU0VBUkNICgkJCgkJJGRiID0gJHRoaXMtPkdldERiKCk7CgkJCgkJLy8gd2UgcGFyc2UgdGhlIGtleXdvcmRzCgkJJHdoZXJlID0gJHRoaXMtPmdldFdoZXJlRnJvbVBhcmFtcygkcGFyYW1zLCB0cnVlKTsKCQlsaXN0KCR3aGVyZWNsYXVzZSwgJHdoZXJldmFsdWVzKSA9ICR0aGlzLT5idWlsZFdoZXJlKCR3aGVyZSwgJHdoYXQpOwoJCQoJCSRnZXRmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kd2hhdDsKCQkvLyB3ZSBkbyB0aGUgcXVlcnkKCQkkaXRlbWxpc3QgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCksIGZhbHNlLCAiIiwgIiIsIGlzc2V0KCRwYXJhbXNbIm9yZGVyYnkiXSk/JHBhcmFtc1sib3JkZXJieSJdOjAsICRsaW1pdCwgJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWNvdW50Iixjb3VudCgkaXRlbWxpc3QpKTsKCQkKCQlpZihjb3VudCgkaXRlbWxpc3QpID4gMCl7CgkJCgkJCSR0b3RhbCA9ICRuYnBlcnBhZ2U/JHRoaXMtPmNvdW50c29tZXRoaW5nKCR3aGF0LCJpZCIsYXJyYXkoKSwkd2hlcmVjbGF1c2UsICR3aGVyZXZhbHVlcyk6ZmFsc2U7CgkJCSR0aGlzLT5wYWdpbmF0ZSgkd2hhdCwkdG90YWwsJGlkLCRyZXR1cm5pZCwkcGFyYW1zLCJzZWFyY2giKTsKCQkJCgkJCS8vIHdlIG11c3QgYnVpbGQgYSBkZXRhaWwgbGluayBmb3IgZWFjaCByZXN1bHQgZWxlbWVudAoJCQkkbmV3bGlzdCA9IGFycmF5KCk7CgkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsKCQkJCSRpdGVtID0gJHRoaXMtPmFkZGZyb250ZW5kdXJscygkaXRlbSwkcGFyYW1zLCRpZCwkbGlua3JldHVybmlkKTsKCQkJCSRpdGVtLT5pc19zZWxlY3RlZCA9IGZhbHNlOwoJCQkJYXJyYXlfcHVzaCgkbmV3bGlzdCwgJGl0ZW0pOwoJCQl9CgoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkbmV3bGlzdCk7CgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibGV2ZWx0aXRsZSIsJHRoaXMtPkxhbmcoJHdoYXQuIl9wbHVyYWwiKSk7CgkJCQoJCX1lbHNlewoJCQkkdGhpcy0+cGFnaW5hdGUoJHdoYXQsMCwkaWQsJHJldHVybmlkLCRwYXJhbXMsInNlYXJjaCIpOwoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkbmV3bGlzdCk7CgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZXJyb3JfbXNnIiwkdGhpcy0+TGFuZygiZXJyb3Jfbm9pdGVtZm91bmQiKSk7CgkJfQoJCQoJCS8vIHdlIHJldHJpZXZlIHRoZSBkaXNwbGF5IHRlbXBsYXRlCgkJaWYoY291bnQoJGl0ZW1saXN0KSA9PSAwICYmICRlbXB0eXRlbXBsYXRlICE9ICIqKiIpewoJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJGVtcHR5dGVtcGxhdGUpOwoJCX1lbHNlewoJCQlpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkpCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0sICR0aGlzLT5HZXROYW1lKCkpOwoJCQlpZighaXNzZXQoJHRlbXBsYXRlKSB8fCAhJHRlbXBsYXRlKXsKCQkJCSR0ZW1wbGF0ZW5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNocmVzdWx0c3RlbXBsYXRlIiwiKioiKTsKCQkJCWlmKCR0ZW1wbGF0ZW5hbWUgPT0gIioqIikJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfIi4kd2hhdCk7CgkJCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7CgkJCX0JCQoJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOwoJCX0KCQkKCX1lbHNlewoJCS8vIFNJTVBMRSBTRUFSQ0gKCQkKCQkkdGVtcGxhdGUgPSBmYWxzZTsKCQkkbGV2ZWxzID0gKCR3aGF0ID09ICItYWxsIik/JGxldmVsYXJyYXk6YXJyYXkoJHdoYXQpOwoJCQoJCS8vIHdlIHJldHJpZXZlIHRoZSBkaXNwbGF5IHRlbXBsYXRlCgkJLy8gaWYgdGhlIHVzZXIgaGFzIGFza2VkIGZvciBhIHNwZWNpZmljIGRpc3BsYXkgdGVtcGxhdGUsIHdlIHdpbGwgdXNlIGl0IGZvciBldmVyeSBjYXRlZ29yeSA6CgkJaWYoaXNzZXQoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0pKQkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdLCAkdGhpcy0+R2V0TmFtZSgpKTsKCQlpZighaXNzZXQoJHRlbXBsYXRlKSB8fCAhJHRlbXBsYXRlKXsKCQkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2hyZXN1bHRzdGVtcGxhdGUiLCIqKiIpOwoJCQlpZigkdGVtcGxhdGVuYW1lID09ICIqKiIpewoJCQkJaWYoY291bnQoJGxldmVscykgPT0gMSl7CgkJCQkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfIi4kbGV2ZWxzWzBdKTsKCQkJCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7CgkJCQl9ZWxzZXsKCQkJCQkkdGVtcGxhdGUgPSBmYWxzZTsKCQkJCX0KCQkJfWVsc2V7CgkJCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7CgkJCX0KCQl9CgoJCQoJCWZvcmVhY2goJGxldmVscyBhcyAkbGV2ZWwpewoJCQkkd2hlcmVjbGF1c2UgPSAiIjsKCQkJJGZpZWxkcyA9ICR0aGlzLT5nZXRfbGV2ZWxzZWFyY2hmaWVsZHMoJGxldmVsKTsKCQkJJGtleXdvcmRzID0gJHRoaXMtPnBhcnNla2V5d29yZHMoaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbInNlYXJjaGZpZWxkIl0pKTsKCQkJZm9yZWFjaCgkZmllbGRzIGFzICRmaWVsZCl7CgkJCQlmb3JlYWNoKCRrZXl3b3JkcyBhcyAka2V5d29yZCl7CgkJCQkJJHdoZXJlY2xhdXNlIC49ICgkd2hlcmVjbGF1c2UgPT0gIiI/IiI6IiBPUiAiKS4iQS4iLiRmaWVsZC4iIExJS0UgJyUiLmFkZHNsYXNoZXMoJGtleXdvcmQpLiIlJyI7CgkJCQl9CgkJCX0KCQkJJHdoZXJlY2xhdXNlID0gIkEuYWN0aXZlPTEiLigkd2hlcmVjbGF1c2UgPT0gIiI/IiI6IiBBTkQgKCIuJHdoZXJlY2xhdXNlLiIpIik7CgkJCSRnZXRmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kbGV2ZWw7CgkJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKT8kcGFyYW1zWyJvcmRlcmJ5Il06MCwgJGxpbWl0LCAkd2hlcmVjbGF1c2UpOwoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1jb3VudCIsY291bnQoJGl0ZW1saXN0KSk7CgkJCQoJCQlpZihjb3VudCgkaXRlbWxpc3QpID4gMCl7CgoJCQkJJHRvdGFsID0gJG5icGVycGFnZT8kdGhpcy0+Y291bnRzb21ldGhpbmcoJGxldmVsLCJpZCIsYXJyYXkoKSwkd2hlcmVjbGF1c2UsIGFycmF5KCkpOmZhbHNlOwoJCQkJJHRoaXMtPnBhZ2luYXRlKCR3aGF0LCR0b3RhbCwkaWQsJHJldHVybmlkLCRwYXJhbXMsInNlYXJjaCIpOwoJCQkJCgkJCQkvLyB3ZSBtdXN0IGJ1aWxkIGEgZGV0YWlsIGxpbmsgZm9yIGVhY2ggcmVzdWx0IGVsZW1lbnQKCQkJCSRuZXdsaXN0ID0gYXJyYXkoKTsKCQkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsKCQkJCQkkaXRlbSA9ICR0aGlzLT5hZGRmcm9udGVuZHVybHMoJGl0ZW0sJHBhcmFtcywkaWQsJGxpbmtyZXR1cm5pZCk7CgkJCQkJJGl0ZW0tPmlzX3NlbGVjdGVkID0gZmFsc2U7CgkJCQkJYXJyYXlfcHVzaCgkbmV3bGlzdCwgJGl0ZW0pOwoJCQkJfQoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtbGlzdCIsJG5ld2xpc3QpOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsZXZlbHRpdGxlIiwkdGhpcy0+TGFuZygkbGV2ZWwuIl9wbHVyYWwiKSk7CgkJCQkJCQkKCQkJCWlmKCR0ZW1wbGF0ZSA9PSBGQUxTRSl7CgkJCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJzZWFyY2hfZ2VuZXJhbHJlc3VsdHMudHBsIik7CgkJCQl9ZWxzZXsKCQkJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOwkJCQkKCQkJCX0KCQkJCQoJCQl9ZWxzZXsKCQkJCSR0aGlzLT5wYWdpbmF0ZSgkd2hhdCwwLCRpZCwkcmV0dXJuaWQsJHBhcmFtcywic2VhcmNoIik7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkaXRlbWxpc3QpOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJlcnJvcl9tc2ciLCR0aGlzLT5MYW5nKCJlcnJvcl9ub2l0ZW1mb3VuZCIpKTsKCQkJfQoJCQlpZihjb3VudCgkaXRlbWxpc3QpID09IDAgJiYgJGVtcHR5dGVtcGxhdGUgIT0gIioqIil7CgkJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJGVtcHR5dGVtcGxhdGUpOwkJCQkKCQkJfWVsc2VpZigkdGVtcGxhdGUgPT0gRkFMU0UpewoJCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJzZWFyY2hfZ2VuZXJhbHJlc3VsdHMudHBsIik7CgkJCX1lbHNlewoJCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsKCQkJfQoJCX0KCQkKCX0KCQoJLy8gIyBFTkQgU0VBUkNIIFJFU1VMVFMKCS8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCn1lbHNlewoJCgkvLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgkvLyAjIFNFQVJDSCBGT1JNCQoJCgkkd2hhdCA9IChpc3NldCgkcGFyYW1zWyJ3aGF0Il0pICYmIGluX2FycmF5KCRwYXJhbXNbIndoYXQiXSwkbGV2ZWxhcnJheSkpPyRwYXJhbXNbIndoYXQiXToiLWFsbCI7CglpZigkc2VhcmNobW9kZSA9PSAiYWR2YW5jZWQiICYmICR3aGF0ID09ICItYWxsIikJCSR3aGF0ID0gJGZpbmFsbGV2ZWw7CgoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgInNlYXJjaCIsICRyZXR1cm5pZCk7CgllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJ3aGF0IiwgJHdoYXQpOwoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAic2VhcmNobW9kZSIsICRzZWFyY2htb2RlKTsKCWlmKGlzc2V0KCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdKSkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAibGlzdHRlbXBsYXRlIiwgJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0pOwoJaWYoaXNzZXQoJHBhcmFtc1sibGltaXQiXSkpCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImxpbWl0IiwgJHBhcmFtc1sibGltaXQiXSk7CglpZihpc3NldCgkcGFyYW1zWyJpbmxpbmUiXSkpCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImlubGluZSIsICRwYXJhbXNbImlubGluZSJdKTsKCWlmKGlzc2V0KCRwYXJhbXNbIm9yZGVyYnkiXSkpCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9yZGVyYnkiLCAkcGFyYW1zWyJvcmRlcmJ5Il0pOwoJaWYoaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pKQkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAibmJwZXJwYWdlIiwgJHBhcmFtc1sibmJwZXJwYWdlIl0pOwoJaWYoaXNzZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiZGV0YWlscGFnZSIsICRwYXJhbXNbImRldGFpbHBhZ2UiXSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInNlYXJjaHRpdGxlIiwgJHRoaXMtPkxhbmcoInNlYXJjaHRpdGxlIikpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ3aGF0IiwgKCR3aGF0ID09ICItYWxsIik/ZmFsc2U6JHRoaXMtPkxhbmcoJHdoYXQpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigic3VibWl0IiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdHNlYXJjaCIsICR0aGlzLT5MYW5nKCJzZWFyY2hidG4iKSkpOwoKCWlmKCRzZWFyY2htb2RlID09ICJzaW1wbGUiKXsKCQkvLyBXRSBBUkUgRE9JTkcgQSBTSU1QTEUgU0VBUkNICgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzZWFyY2hmaWVsZCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJzZWFyY2hmaWVsZCIsIiIsNTApKTsKCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoInNlYXJjaC50cGwiKTsKCQkKCX1lbHNlewoJCS8vIFdFIEFSRSBET0lORyBBTiBBRFZBTkNFRCBTRUFSQ0gKCgkJJHRoaXMtPmNyZWF0ZUZpZWxkRm9ybSgkd2hhdCwgJGlkLCB0cnVlKTsKCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJzZWFyY2hfIi4kd2hhdC4iLnRwbCIpOwoJCQoJfQoJCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgkKCS8vICMgRU5EIFNFQVJDSCBGT1JNCgkvLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCQoJCn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.sitemap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7CiRtb2RlID0gKGlzc2V0KCRwYXJhbXNbIm1vZGUiXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1sibW9kZSJdLGFycmF5KCJnb29nbGUiLCJ1cmxsaXN0IiwiZnJvbnRlbmQiKSkpPyRwYXJhbXNbIm1vZGUiXToiZnJvbnRlbmQiOwokd2hhdCA9IGlzc2V0KCRwYXJhbXNbIndoYXQiXSk/ZXhwbG9kZSgnfCcsJHBhcmFtc1sid2hhdCJdKTokbGV2ZWxhcnJheTsKJGxpbmtyZXR1cm5pZCA9IChpc3NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pKT8kdGhpcy0+Z2V0X3BhZ2VpZCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pOiRyZXR1cm5pZDsKJGlubGluZSA9IChpc3NldCgkcGFyYW1zWyJpbmxpbmUiXSkgJiYgJHBhcmFtc1siaW5saW5lIl0pP3RydWU6ZmFsc2U7CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGkgPSAwOwokc2VsZWN0ID0gIiI7CiR0YWJsZXMgPSAiIjsKJG9yZGVyID0gIiI7CndoaWxlKCRpIDwgY291bnQoJGxldmVsYXJyYXkpKXsKCSRsZXZlbCA9ICRsZXZlbGFycmF5WyRpXTsKCSRpKys7Cgkkc2VsZWN0IC49ICgkc2VsZWN0PT0iIj8iIjoiLCAiKS4idGFibGUiLiRpLiIuYWxpYXMgdGFibGUiLiRpLiJfYWxpYXMsIHRhYmxlIi4kaS4iLm5hbWUgdGFibGUiLiRpLiJfbmFtZSI7CglpZigkaSA9PSAxKXsKCQkkdGFibGVzID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0YWJsZSIuJGk7Cgl9ZWxzZXsKCQkkdGFibGVzIC49ICIgTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0YWJsZSIuJGkuICIgT04gdGFibGUiLigkaS0xKS4iLmlkPXRhYmxlIi4kaS4iLnBhcmVudCI7Cgl9Cgkkb3JkZXIgLj0gKCRvcmRlcj09IiI/IiI6IiwgIikuInRhYmxlIi4kaS4iLml0ZW1fb3JkZXIiOwp9CiRxdWVyeSA9ICJTRUxFQ1QgJHNlbGVjdCBGUk9NICR0YWJsZXMgT1JERVIgQlkgJG9yZGVyIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgokbGFzdCA9IGFycmF5KCk7CiRjdXJyZW50bGV2ZWwgPSAxOwppZigkbW9kZSA9PSAnZnJvbnRlbmQnKQllY2hvICc8dWwgaWQ9IicuJHRoaXMtPkdldE5hbWUoKS4nX21hcCI+JzsKd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpewoJJHBhcnNlbGV2ZWwgPSAxOwoJd2hpbGUoJHBhcnNlbGV2ZWwgPD0gJGkpewoJCWlmKGluX2FycmF5KCRsZXZlbGFycmF5WyRwYXJzZWxldmVsLTFdLCR3aGF0KSAmJiAoIWlzc2V0KCRsYXN0WyRwYXJzZWxldmVsXSkgfHwgJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfYWxpYXMiXSAhPSAkbGFzdFskcGFyc2VsZXZlbF0pICl7CgkJCSR3YW50ZWR3aGF0ID0gKCRwYXJzZWxldmVsPT0kaSk/JGxldmVsYXJyYXlbJGktMV06JGxldmVsYXJyYXlbJHBhcnNlbGV2ZWxdOwoJCQkkd2FudGVkcGFyYW0gPSAoJHBhcnNlbGV2ZWw9PSRpKT8iYWxpYXMiOiJwYXJlbnQiOwoJCQkkbmV3cGFyYW1zID0gYXJyYXkoIndoYXQiPT4kd2FudGVkd2hhdCwgJHdhbnRlZHBhcmFtPT4kcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9hbGlhcyJdKTsKCQkJJHByZXR0eXVybCA9ICR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJGxpbmtyZXR1cm5pZCk7CgkJCWlmKCRtb2RlID09ICdmcm9udGVuZCcpewoJCQkJaWYoJGN1cnJlbnRsZXZlbCA9PSAkcGFyc2VsZXZlbCl7CgkJCQkJaWYoJGxhc3RbJGN1cnJlbnRsZXZlbF0pCWVjaG8gIjwvbGk+IjsKCQkJCX1lbHNlaWYoJGN1cnJlbnRsZXZlbCA+ICRwYXJzZWxldmVsKXsKCQkJCQl3aGlsZSgkY3VycmVudGxldmVsID4gJHBhcnNlbGV2ZWwpewoJCQkJCQllY2hvICI8L2xpPjwvdWw+PC9saT4iOwoJCQkJCQkkY3VycmVudGxldmVsLS07CgkJCQkJfQoJCQkJfWVsc2VpZigkY3VycmVudGxldmVsIDwgJHBhcnNlbGV2ZWwpewoJCQkJCSRjdXJyZW50bGV2ZWwrKzsKCQkJCQllY2hvICc8dWw+JzsKCQkJCX0KCQkJCWVjaG8gJzxsaT4nLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkbGlua3JldHVybmlkLCAkcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9uYW1lIl0sICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkcHJldHR5dXJsKTsKCQkJfWVsc2VpZigkbW9kZSA9PSAndXJsbGlzdCcpewoJCQkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0IiwgJGxpbmtyZXR1cm5pZCwgIiIsICRuZXdwYXJhbXMsICIiLCB0cnVlLCAkaW5saW5lLCAiIiwgZmFsc2UsICRwcmV0dHl1cmwpLicKJzsKCQkJfWVsc2VpZigkbW9kZSA9PSAnZ29vZ2xlJyl7CgkJCQkkcHJpb3JpdHkgPSA5IC0gJHBhcnNlbGV2ZWw7CgkJCQlpZigkcHJpb3JpdHkgPCAwKQkkcHJpb3JpdHkgPSAxOwoJCQkJJHByaW9yaXR5ID0gIjAuIi4kcHJpb3JpdHk7CgkJCQllY2hvICcKCTx1cmw+CgkJPGxvYz4nLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkbGlua3JldHVybmlkLCAiIiwgJG5ld3BhcmFtcywgIiIsIHRydWUsICRpbmxpbmUsICIiLCBmYWxzZSwgJHByZXR0eXVybCkuJzwvbG9jPgoJCTxwcmlvcml0eT4nLiRwcmlvcml0eS4nPC9wcmlvcml0eT4KCTwvdXJsPic7CgkJCX0KCQkJCgkJCSRsYXN0WyRwYXJzZWxldmVsXSA9ICRyb3dbInRhYmxlIi4kcGFyc2VsZXZlbC4iX2FsaWFzIl07CgkJfQoJCSRwYXJzZWxldmVsKys7Cgl9Cn0KaWYoJG1vZGUgPT0gJ2Zyb250ZW5kJyl7CgllY2hvICI8L2xpPiI7Cgl3aGlsZSgkY3VycmVudGxldmVsID4gMSl7CgkJZWNobyAiPC91bD48L2xpPiI7CgkJJGN1cnJlbnRsZXZlbC0tOwoJfQoJZWNobyAiPC91bD4iOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.toggle.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qIFBBUkFNUyA6DQp3aGF0KiA6ICdhY3RpdmUnIHx8ICdkZWZhdWx0Jw0KdGFibGVuYW1lKg0KcHJlZml4DQpwcmVmaXguaWQNCm5ld3ZhbCA6IG5ldyB2YWx1ZSBmb3IgYWN0aXZlICggMCB8fCAxICkNCiovDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokbmV3cGFyYW1zID0gaXNzZXQoJHBhcmFtc1snbGV2ZWxuYW1lJ10pP2FycmF5KCdhY3RpdmVfdGFiJz0+JHBhcmFtc1snbGV2ZWxuYW1lJ10pOmFycmF5KCk7DQoNCmlmKCAhaXNzZXQoJHBhcmFtc1snd2hhdCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pICkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJG5ld3BhcmFtcyk7DQoNCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCiRkYnRhYmxlID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy4kcGFyYW1zWyd0YWJsZW5hbWUnXTsNCiRmaWVsZCA9ICRwYXJhbXNbJ3doYXQnXTsNCiRpdGVtaWQgPSBpc3NldCgkcGFyYW1zWydwcmVmaXgnXSk/JHBhcmFtc1skcGFyYW1zWydwcmVmaXgnXS4naWQnXTpmYWxzZTsNCiR2YWx1ZSA9IGlzc2V0KCRwYXJhbXNbJ25ld3ZhbCddKT8kcGFyYW1zWyduZXd2YWwnXToxOw0KDQppZigkZmllbGQgPT0gJ2FjdGl2ZScpew0KCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGFjdGl2ZT0/IFdIRVJFIGlkPT8gTElNSVQgMSI7DQoJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdmFsdWUsICRpdGVtaWQpKTsNCn1lbHNlaWYoJGZpZWxkID09ICdkZWZhdWx0Jyl7DQoJaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pICYmIGlzc2V0KCRwYXJhbXNbInBhcmVudGRlZmF1bHQiXSkgJiYgJHBhcmFtc1sicGFyZW50ZGVmYXVsdCJdKSB7DQoJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGlzZGVmYXVsdD0wIFdIRVJFIHBhcmVudD0/IjsNCgkJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJwYXJlbnQiXSkpOw0KCX1lbHNlew0KCQkkcXVlcnkgPSAiVVBEQVRFICRkYnRhYmxlIFNFVCBpc2RlZmF1bHQ9MCI7DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCX0NCglpZigkaXRlbWlkKXsNCgkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXNkZWZhdWx0PTEgV0hFUkUgaWQ9PyI7DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGl0ZW1pZCkpOw0KCX0NCn0NCg0KDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/autos.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogYXV0b3MNCiMgVmVyc2lvbjogMS40LCANCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwOCBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCJzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojDQojIFRoaXMgbW9kdWxlIHdhcyBjcmVhdGVkIHdpdGggQ1RMTW9kdWxlTWFrZXIgMS44LjkuMw0KIyBDVExNb2R1bGVNYWtlciB3YXMgY3JlYXRlZCBieSBQaWVycmUtTHVjIEdlcm1haW4gYW5kIGlzIHJlbGVhc2VkIHVuZGVyIEdOVQ0KIyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2N0bG1vZHVsZW1ha2VyDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpjbGFzcyBhdXRvcyBleHRlbmRzIENNU01vZHVsZQ0Kew0KCXZhciAkY3VycmVudHRyZWUgPSBmYWxzZTsNCgl2YXIgJGN1cnJlbnRwYWdlaW5kZXggPSAxOw0KCXZhciAkcGxjdXJyZW50ID0gYXJyYXkoKTsNCg0KCWZ1bmN0aW9uIEdldE5hbWUoKQ0KCXsNCgkJcmV0dXJuICJhdXRvcyI7DQoJfQ0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBHZXRGcmllbmRseU5hbWUoKQ0KCSAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbG9jYWxpemVkIG5hbWUNCgkgICBvZiB0aGUgbW9kdWxlLiBUaGlzIGlzIHRoZSBuYW1lIHRoYXQicyBzaG93biBpbiB0aGUNCgkgICBBZG1pbiBNZW51cyBhbmQgc2VjdGlvbiBwYWdlcyAoaWYgdGhlIG1vZHVsZSBoYXMgYW4gYWRtaW4NCgkgICBjb21wb25lbnQpLg0KCSAgIA0KCSAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoImZyaWVuZGx5bmFtZSIpOw0KCX0NCgkNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldFZlcnNpb24oKQ0KCSAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbnVtYmVyIG9yDQoJICAgc29tZXRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgZm9yIGRlc2lnbmF0aW5nIGEgdmVyc2lvbi4NCgkgICBUaGUgQ01TIHdpbGwgdXNlIHRoaXMgdG8gaWRlbnRpZnkgd2hldGhlciBvciBub3QNCgkgICB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIG1vZHVsZSBpcyBjdXJyZW50LCBhbmQNCgkgICB0aGUgbW9kdWxlIHdpbGwgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgaG93IHRvIHVwZ3JhZGUNCgkgICBpdHNlbGYgaWYgcmVxdWVzdGVkLgkgICANCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0VmVyc2lvbigpDQoJew0KCQlyZXR1cm4gIjEuNCI7DQoJfQ0KDQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldERlcGVuZGVuY2llcygpDQoJICAgWW91ciBtb2R1bGUgbWF5IG5lZWQgYW5vdGhlciBtb2R1bGUgdG8gYWxyZWFkeSBiZSBpbnN0YWxsZWQNCgkgICBiZWZvcmUgeW91IGNhbiBpbnN0YWxsIGl0Lg0KCSAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIHRob3NlIGRlcGVuZGVuY2llcyBhbmQNCgkgICBtaW5pbXVtIHZlcnNpb24gbnVtYmVycyB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLg0KCSAgIA0KCSAgIEl0IHNob3VsZCByZXR1cm4gYW4gaGFzaCwgZWcuDQoJICAgcmV0dXJuIGFycmF5KCJzb21lbW9kdWxlIj0+IjEuMCIsICJvdGhlcm1vZHVsZSI9PiIxLjEiKTsNCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkNCgl7DQoJCXJldHVybiBhcnJheSgpOw0KCX0NCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgR2V0SGVscCgpDQoJICAgVGhpcyByZXR1cm5zIEhUTUwgaW5mb3JtYXRpb24gb24gdGhlIG1vZHVsZS4NCgkgICBUeXBpY2FsbHksIHlvdSJsbCB3YW50IHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gb24gaG93IHRvDQoJICAgdXNlIHRoZSBtb2R1bGUuDQoJICAgDQoJICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0SGVscCgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoImhlbHAiKTsNCgl9DQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldEF1dGhvcigpDQoJICAgVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBNb2R1bGUNCgkgICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlICJBYm91dCIgbGluay4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0QXV0aG9yKCkNCgl7DQoJCXJldHVybiAiTWFydGluIjsNCgkJLy8gb2YgY291cnNlIHlvdSBtYXkgY2hhbmdlIHRoaXMsIGJ1dCBpdCB3b3VsZCBiZSBuaWNlDQoJCS8vIHRvIGtlZXAgYSBtZW50aW9uIG9mIHRoZSBDVExNb2R1bGVNYWtlciBzb21ld2hlcmUNCgl9DQoNCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgR2V0QXV0aG9yRW1haWwoKQ0KCSAgIFRoaXMgcmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHByZXNlbnRlZCBpbiB0aGUgTW9kdWxlDQoJICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuIEl0IGhlbHBzIHVzZXJzDQoJICAgb2YgeW91ciBtb2R1bGUgZ2V0IGluIHRvdWNoIHdpdGggeW91IHRvIHNlbmQgYnVnIHJlcG9ydHMsDQoJICAgcXVlc3Rpb25zLCBjYXNlcyBvZiBiZWVyLCBhbmQvb3IgbGFyZ2Ugc3VtcyBvZiBtb25leS4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQ0KCXsNCgkJcmV0dXJuICJtd2NvdXJ0ZW5heUB5YWhvby5jb20iOw0KCX0NCg0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBJc1BsdWdpbk1vZHVsZSgpDQoJICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgb3IgZmFsc2UsIGRlcGVuZGluZyB1cG9uDQoJICAgd2hldGhlciB1c2VycyBjYW4gaW5jbHVkZSB0aGUgbW9kdWxlIGluIGEgcGFnZSBvcg0KCSAgIHRlbXBsYXRlIHVzaW5nIGEgc21hcnR5IHRhZyBvZiB0aGUgZm9ybQ0KCSAgIHtjbXNfbW9kdWxlIG1vZHVsZT0iUHJvZCIgcGFyYW0xPXZhbCBwYXJhbTI9dmFsLi4ufQ0KCSAgIA0KCSAgIElmIHlvdXIgbW9kdWxlIGRvZXMgbm90IGdldCBpbmNsdWRlZCBpbiBwYWdlcyBvcg0KCSAgIHRlbXBsYXRlcywgcmV0dXJuICJmYWxzZSIgaGVyZS4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKQ0KCXsNCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEhhc0FkbWluKCkNCgkgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBib29sZWFuIHZhbHVlLCBkZXBlbmRpbmcgb24NCgkgICB3aGV0aGVyIHlvdXIgbW9kdWxlIGFkZHMgYW55dGhpbmcgdG8gdGhlIEFkbWluIGFyZWEgb2YNCgkgICB0aGUgc2l0ZS4gRm9yIHRoZSByZXN0IG9mIHRoZXNlIGNvbW1lbnRzLCBJImxsIGJlIGNhbGxpbmcNCgkgICB0aGUgYWRtaW4gcGFydCBvZiB5b3VyIG1vZHVsZSB0aGUgIkFkbWluIFBhbmVsIiBmb3INCgkgICB3YW50IG9mIGEgYmV0dGVyIHRlcm0uDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIEhhc0FkbWluKCkgewlyZXR1cm4gdHJ1ZTsJfQ0KCWZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHtyZXR1cm4gImNvbnRlbnQiO30NCglmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkge3JldHVybiAkdGhpcy0+TGFuZygiYWRtaW5kZXNjcmlwdGlvbiIpO30NCg0KCWZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpew0KCQlyZXR1cm4gKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF1dG9zX25vcm1hbHVzZXIiKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdXRvc19hZHZhbmNlZCIpKTsNCgl9DQoJDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBNb2R1bGUgQ29uc3RydWN0b3IgDQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBhdXRvcygpDQoJew0KCQlnbG9iYWwgJGdDbXM7DQogICAgCSRzbWFydHkgPSYgJGdDbXMtPkdldFNtYXJ0eSgpOw0KCQkkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbigiYXV0b3NfYnJlYWRjcnVtYnMiLCBhcnJheSgmJHRoaXMsImZ1bmN0aW9uX21vZGJyZWFkY3J1bWJzIikpOw0KCQkkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbigiYXV0b3NfZ2V0X2xldmVsaXRlbSIsIGFycmF5KCYkdGhpcywiZnVuY3Rpb25fZ2V0X2xldmVsaXRlbSIpKTsNCgkJcGFyZW50OjpDTVNNb2R1bGUoKTsNCgl9DQoJDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBTZXRQYXJhbWV0ZXJzKCkNCgkgICBUaGlzIGZ1bmN0aW9uIGVuYWJsZXMgeW91IHRvIGNyZWF0ZSBtYXBwaW5ncyBmb3INCgkgICB5b3VyIG1vZHVsZSB3aGVuIHVzaW5nICJQcmV0dHkgVXJscyIuDQoJICAgDQoJICAgVHlwaWNhbGx5LCBtb2R1bGVzIGNyZWF0ZSBpbnRlcm5hbCBsaW5rcyB0aGF0IGhhdmUNCgkgICBiaWcgdWdseSBzdHJpbmdzIGFsb25nIHRoZSBsaW5lcyBvZjoNCgkgICBpbmRleC5waHA/bWFjdD1Nb2ROYW1lLGNudG50MDEsYWN0aW9uTmFtZSwwJmNudG50MDFwYXJhbTE9MSZjbnRudDAxcGFyYW0yPTImY250bnQwMXJldHVybmlkPTMNCgkgICANCgkgICBZb3UgbWlnaHQgcHJlZmVyIHRoZXNlIHRvIGxvb2sgbGlrZToNCgkgICAvTW9kdWxlRnVuY3Rpb24vMi8zDQoJICAgDQoJICAgVG8gZG8gdGhpcywgeW91IGhhdmUgdG8gcmVnaXN0ZXIgcm91dGVzIGFuZCBtYXANCgkgICB5b3VyIHBhcmFtZXRlcnMgaW4gYSB3YXkgdGhhdCB0aGUgQVBJIHdpbGwgYmUgYWJsZQ0KCSAgIHRvIHVuZGVyc3RhbmQuDQoNCgkgICBBbHNvIG5vdGUgdGhhdCBhbnkgY2FsbHMgdG8gQ3JlYXRlTGluayB3aWxsIG5lZWQgdG8NCgkgICBiZSB1cGRhdGVkIHRvIHBhc3MgdGhlIHByZXR0eSB1cmwgcGFyYW1ldGVyLg0KCSAgIA0KCSAgIFNpbmNlIHRoZSBTa2VsZXRvbiBkb2VzbiJ0IHJlYWxseSBjcmVhdGUgYW55IGxpbmtzLA0KCSAgIHRoZSBzZWN0aW9uIGJlbG93IGlzIGNvbW1lbnRlZCBvdXQsIGJ1dCB5b3UgY2FuDQoJICAgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgcHJldHR5IHVybHMuDQoJICAgDQoJICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkNCgl7DQoNCgkJLy8gdGhlc2UgYXJlIGZvciBpbnRlcm5hbCBwcmV0dHkgVVJMUy4NCgkJLy8geW91IG1heSBjaGFuZ2UgdGhlc2UsIGJ1dCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gY2hhbmdlIHRoZSBCdWlsZFByZXR0eVVSTHMgZnVuY3Rpb24gYmVsb3cgYWNjb3JkaW5nbHkNCgkJLy8gc2VlIEZBUSBmb3IgbW9yZSBpbmZvIG9uIHRoaXMNCgkJJGRlZmFjdCA9IGFycmF5KCJhY3Rpb24iPT4iZGVmYXVsdCIpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1thQV11dG9zXC8oW1FxXXVlcnkpXC8oP1A8cXVlcnk+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIsICRkZWZhY3QpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1thQV11dG9zXC8oW1FxXXVlcnkpXC8oP1A8cXVlcnk+WzAtOV0rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bYUFddXRvc1wvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW2FBXXV0b3NcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bYUFddXRvc1wvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhcmVudD5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW2FBXXV0b3NcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW2FBXXV0b3NcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkNCgkJJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOw0KCQkNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigiYWN0aW9uIiwgImRlZmF1bHQiLCAkdGhpcy0+TGFuZygicGhlbHBfYWN0aW9uIikpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJ3aGF0IiwgIiIsICR0aGlzLT5MYW5nKCJwaGVscF93aGF0IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgid2hhdCIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigiYWxpYXMiLCAiIiwgJHRoaXMtPkxhbmcoInBoZWxwX2FsaWFzIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgiYWxpYXMiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInNob3dkZWZhdWx0IiwgZmFsc2UsICR0aGlzLT5MYW5nKCJwaGVscF9zaG93ZGVmYXVsdCIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInNob3dkZWZhdWx0IixDTEVBTl9JTlQpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJwYXJlbnQiLCAiIiwgJHRoaXMtPkxhbmcoInBoZWxwX3BhcmVudCIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInBhcmVudCIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigibGltaXQiLCAwLCAkdGhpcy0+TGFuZygicGhlbHBfbGltaXQiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJsaW1pdCIsQ0xFQU5fSU5UKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigibmJwZXJwYWdlIiwgMCwgJHRoaXMtPkxhbmcoInBoZWxwX25icGVycGFnZSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoIm5icGVycGFnZSIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigib3JkZXJieSIsIDAsICR0aGlzLT5MYW5nKCJwaGVscF9vcmRlcmJ5IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgib3JkZXJieSIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigiZGV0YWlscGFnZSIsICIiLCAkdGhpcy0+TGFuZygicGhlbHBfZGV0YWlscGFnZSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoImRldGFpbHBhZ2UiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInJhbmRvbSIsIDAsICR0aGlzLT5MYW5nKCJwaGVscF9yYW5kb20iKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJyYW5kb20iLENMRUFOX0lOVCk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoImxpc3R0ZW1wbGF0ZSIsICIiLCAkdGhpcy0+bGFuZygicGhlbHBfbGlzdHRlbXBsYXRlIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgibGlzdHRlbXBsYXRlIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJmaW5hbHRlbXBsYXRlIiwgIiIsICR0aGlzLT5sYW5nKCJwaGVscF9maW5hbHRlbXBsYXRlIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgiZmluYWx0ZW1wbGF0ZSIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigiZm9yY2VsaXN0IiwgIjAiLCAkdGhpcy0+bGFuZygicGhlbHBfZm9yY2VsaXN0IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgiZm9yY2VsaXN0IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJpbmxpbmUiLCAwLCAkdGhpcy0+bGFuZygicGhlbHBfaW5saW5lIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgiaW5saW5lIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJzZWFyY2htb2RlIiwgImFkdmFuY2VkIiwgJHRoaXMtPmxhbmcoInBoZWxwX3NlYXJjaG1vZGUiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJzZWFyY2htb2RlIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJxdWVyeSIsIDAsICR0aGlzLT5sYW5nKCJwaGVscF9xdWVyeSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInF1ZXJ5IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJ0b2FjdGlvbiIsICIiLCAkdGhpcy0+TGFuZygicGhlbHBfdG9hY3Rpb24iKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJ0b2FjdGlvbiIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInBhZ2VpbmRleCIsQ0xFQU5fSU5UKTsNCg0KCQkvLyBmb3IgdGhlIHNlYXJjaCBmb3JtICh0cmljayBmcm9tIGlrdWxpcykgOg0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAuIi9kYXRlXy4qLyIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoQ0xFQU5fUkVHRVhQLiIvZmllbGRfLiovIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAuIi9jb21wYXJlXy4qLyIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInN1Ym1pdHNlYXJjaCIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInNlYXJjaGZpZWxkIixDTEVBTl9TVFJJTkcpOw0KCQkNCgl9DQoNCiAgICBmdW5jdGlvbiBHZXRFdmVudERlc2NyaXB0aW9uKCRldmVudG5hbWUpDQogICAgew0KCQkkZXZlbnRuYW1lID0gc3RyX3JlcGxhY2UoImF1dG9zIiwgIiIsICRldmVudG5hbWUpOw0KCQlyZXR1cm4gJHRoaXMtPmxhbmcoImV2ZW50ZGVzYyIuJGV2ZW50bmFtZSk7DQogICAgfQ0KICAgIA0KCWZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoInBvc3RpbnN0YWxsIik7DQoJfQ0KCWZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkNCgl7DQoJCXJldHVybiAkdGhpcy0+TGFuZygicG9zdHVuaW5zdGFsbCIpOw0KCX0NCglmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkNCgl7DQoJCXJldHVybiAkdGhpcy0+TGFuZygicmVhbGx5X3VuaW5zdGFsbCIpOw0KCX0NCg0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBJbnN0YWxsKCkNCgkgICBXaGVuIHlvdXIgbW9kdWxlIGlzIGluc3RhbGxlZCwgeW91IG1heSBuZWVkIHRvIGRvIHNvbWUNCgkgICBzZXR1cC4gVHlwaWNhbCB0aGluZ3MgdGhhdCBoYXBwZW4gaGVyZSBhcmUgdGhlIGNyZWF0aW9uDQoJICAgYW5kIHByZXBvcHVsYXRpb24gb2YgZGF0YWJhc2UgdGFibGVzLCBkYXRhYmFzZSBzZXF1ZW5jZXMsDQoJICAgcGVybWlzc2lvbnMsIHByZWZlcmVuY2VzLCBldGMuDQoJICAgCSAgIA0KCSAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgY3JlYXRpb24gb2YgZGF0YWJhc2UgdGFibGVzLA0KCSAgIGNoZWNrIG91dCB0aGUgQURPREIgRGF0YSBEaWN0aW9uYXJ5IHBhZ2UgYXQNCgkgICBodHRwOi8vcGhwbGVucy5jb20vbGVucy9hZG9kYi9kb2NzLWRhdGFkaWN0Lmh0bQ0KCSAgIA0KCSAgIFRoaXMgZnVuY3Rpb24gY2FuIHJldHVybiBhIHN0cmluZyBpbiBjYXNlIG9mIGFueSBlcnJvciwNCgkgICBhbmQgQ01TIHdpbGwgbm90IGNvbnNpZGVyIHRoZSBtb2R1bGUgaW5zdGFsbGVkLg0KCSAgIFN1Y2Nlc3NmdWwgaW5zdGFsbHMgc2hvdWxkIHJldHVybiBGQUxTRSBvciBub3RoaW5nIGF0IGFsbC4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gSW5zdGFsbCgpDQoJew0KCQlnbG9iYWwgJGdDbXM7DQoJCXJlcXVpcmUgIm1ldGhvZC5pbnN0YWxsLnBocCI7DQoJfQ0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBVbmluc3RhbGwoKQ0KCSAgIFNvbWV0aW1lcywgYW4gZXhjZXB0aW9uYWxseSB1bmVubGlnaHRlbmVkIG9yIGlnbm9yYW50DQoJICAgYWRtaW4gd2lsbCB3aXNoIHRvIHVuaW5zdGFsbCB5b3VyIG1vZHVsZS4gV2hpbGUgaXQNCgkgICB3b3VsZCBiZSBiZXN0IHRvIGxheSBpbnRvIHRoZXNlIGlkaW90cyB3aXRoIGEgY2x1ZXN0aWNrLA0KCSAgIHdlIHdpbGwgZG8gdGhlIG1hZ25hbmltb3VzIHRoaW5nIGFuZCByZW1vdmUgdGhlIG1vZHVsZQ0KCSAgIGFuZCBjbGVhbiB1cCB0aGUgZGF0YWJhc2UsIHBlcm1pc3Npb25zLCBhbmQgcHJlZmVyZW5jZXMNCgkgICB0aGF0IGFyZSBzcGVjaWZpYyB0byBpdC4NCgkgICBUaGlzIGlzIHRoZSBtZXRob2Qgd2hlcmUgd2UgZG8gdGhpcy4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gVW5pbnN0YWxsKCkNCgl7DQoJCWdsb2JhbCAkZ0NtczsNCgkJcmVxdWlyZSAibWV0aG9kLnVuaW5zdGFsbC5waHAiOw0KCX0NCg0KDQogICAgZnVuY3Rpb24gU2VhcmNoUmVzdWx0KCRyZXR1cm5pZCwgJGl0ZW1pZCwgJGxldmVsID0gIiIpDQogICAgew0KCQkkcmVzdWx0ID0gYXJyYXkoKTsNCgkJJHdhbnRlZHBhcmFtID0gZmFsc2U7DQoJCSRuZXdwYXJhbXMgPSBhcnJheSgpOw0KCQlpZigkbGV2ZWwgPT0gInZlaGljbGUiKXsNCgkJCS8vIHdlIHNlZWsgYW4gZWxlbWVudCBvZiB0aGUgbGFzdCBsZXZlbCwgYW5kIHdpbGwgZGlzcGxheSB0aGUgZGV0YWlsIHZpZXcNCgkJCSR3YW50ZWRwYXJhbSA9ICJhbGlhcyI7DQoJCX1lbHNlew0KCQkJaWYoJG5ld3BhcmFtc1sid2hhdCJdID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJGxldmVsKSl7DQoJCQkvLyB3ZSBzZWVrIGFuIGVsZW1lbnQgb2YgYW5vdGhlciBsZXZlbCwgYW5kIHdpbGwgZGlzcGxheSB0aGUgbGlzdCB2aWV3IG9mIGl0cyBjaGlsZHJlbg0KCQkJCSR3YW50ZWRwYXJhbSA9ICJwYXJlbnQiOw0KCQkJfQ0KCQl9DQoJCWlmICgkd2FudGVkcGFyYW0pew0KCQkJJHRhYmxlbmFtZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zXyIuJGxldmVsOw0KCQkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkJJHF1ZXJ5ID0gIlNFTEVDVCBuYW1lLCBhbGlhcyBGUk9NICR0YWJsZW5hbWUgV0hFUkUgaWQgPSA/IjsNCgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCBhcnJheSggJGl0ZW1pZCApICk7DQoJCQlpZiAoJGRicmVzdWx0KXsNCgkJCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOw0KCQkJCSRuZXdwYXJhbXNbJHdhbnRlZHBhcmFtXSA9ICRyb3dbImFsaWFzIl07DQoNCgkJCQkvLzAgcG9zaXRpb24gaXMgdGhlIHByZWZpeCBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgcmVzdWx0cy4NCgkJCQkkcmVzdWx0WzBdID0gJHRoaXMtPkdldEZyaWVuZGx5TmFtZSgpOw0KDQoJCQkJLy8xIHBvc2l0aW9uIGlzIHRoZSB0aXRsZQ0KCQkJCSRyZXN1bHRbMV0gPSAkcm93WyJuYW1lIl07DQoJCQ0KCQkJCS8vMiBwb3NpdGlvbiBpcyB0aGUgVVJMIHRvIHRoZSB0aXRsZS4NCgkJCQkkcmVzdWx0WzJdID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdCIsICRyZXR1cm5pZCwgIiIsICRuZXdwYXJhbXMsICIiLCB0cnVlLCBmYWxzZSwgIiIsIGZhbHNlLCAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuICRyZXN1bHQ7DQoJfQ0KCQ0KCWZ1bmN0aW9uIFNlYXJjaFJlaW5kZXgoJiRtb2R1bGUpDQogICAgew0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfdmVoaWNsZXR5cGUiLGZhbHNlKSl7DQoJCQkkaXRlbWxpc3QgPSAkdGhpcy0+Z2V0X2xldmVsX3ZlaGljbGV0eXBlKCk7DQoJCQlmb3JlYWNoKCRpdGVtbGlzdCBhcyAkaXRlbSl7DQoJCQkJJHRleHQgPSAiJGl0ZW0tPm5hbWUiOw0KCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRpdGVtLT5pZCwgInZlaGljbGV0eXBlIiwgJHRleHQsIE5VTEwpOw0KCQkJfQ0KCQl9DQoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfdmVoaWNsZSIsZmFsc2UpKXsNCgkJCSRpdGVtbGlzdCA9ICR0aGlzLT5nZXRfbGV2ZWxfdmVoaWNsZSgpOw0KCQkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pew0KCQkJCSR0ZXh0ID0gIiRpdGVtLT5uYW1lIjsNCgkJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkaXRlbS0+aWQsICJ2ZWhpY2xlIiwgJHRleHQsIE5VTEwpOw0KCQkJfQ0KCQl9DQoJCQ0KICAgIH0JDQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KTk9UIFBBUlQgT0YgVEhFIE5PUk1BTCBNT0RVTEUgQVBJDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCg0KICAgIGZ1bmN0aW9uIGdldERlZmF1bHRUZW1wbGF0ZXMoKXsNCiAgICAJLy8gcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgdGVtcGxhdGVzIHRoYXQgYXJlIHNlbGVjdGVkIGFzIGRlZmF1bHQgKGp1c3Qgc28gdGhhdCB3ZSBkb24ndCBkZWxldGUgdGhlbSkNCgkgICAkcmVzdWx0ID0gYXJyYXkoKTsNCgkgICAkcmVzdWx0W10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmluYWx0ZW1wbGF0ZSIpOw0KCSAgICRyZXN1bHRbXSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2hyZXN1bHRzdGVtcGxhdGUiKTsNCgkgICAkcmVzdWx0W10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlX3ZlaGljbGV0eXBlIik7DQoJICAgJHJlc3VsdFtdID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV92ZWhpY2xlIik7DQoJICAgcmV0dXJuICRyZXN1bHQ7DQogICAgfQ0KCQ0KICAgIGZ1bmN0aW9uIGdldE9yZGVyVHlwZSgkd2hhdCl7DQoJCS8vIHJldHVybnMgd2hldGhlciBhIGxldmVsIGlzIG9yZGVyZWQgYnkgcGFyZW50IG9yIG5vdA0KCQkkcmV0dXJuID0gYXJyYXkoInZlaGljbGV0eXBlIj0+dHJ1ZSwidmVoaWNsZSI9PnRydWUpOw0KCQlyZXR1cm4gKGlzc2V0KCRyZXR1cm5bJHdoYXRdKT8kcmV0dXJuWyR3aGF0XTpmYWxzZSk7DQogICAgfQ0KDQoJZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQ9LTEpew0KCQlnbG9iYWwgJGdDbXM7DQoJCQ0KCQlzd2l0Y2goJGFjdGlvbil7DQoJCQljYXNlICJsaW5rIjoNCgkJCQkkdG9hY3Rpb24gPSBpc3NldCgkcGFyYW1zWyJ0b2FjdGlvbiJdKT8kcGFyYW1zWyJ0b2FjdGlvbiJdOiJkZWZhdWx0IjsNCgkJCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwkdG9hY3Rpb24sJHJldHVybmlkLCIiLCRwYXJhbXMsIiIsdHJ1ZSk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJicmVhZGNydW1icyI6DQoJCQkJJHNtYXJ0eSA9JiAkZ0Ntcy0+R2V0U21hcnR5KCk7DQoJCQkJJHRoaXMtPmZ1bmN0aW9uX21vZGJyZWFkY3J1bWJzKCRwYXJhbXMsICRzbWFydHkpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiY2hhbmdlcHJlZmVyZW5jZXMiOg0KCQkJCWlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdXRvc19hZHZhbmNlZCIpKXsNCgkJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoIm1vZHVsZV9tZXNzYWdlIj0+JHRoaXMtPkxhbmcoImVycm9yX2RlbmllZCIpKSk7DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCQkkcHJlZnMgPSBhcnJheSgicmVzdHJpY3RfcGVybWlzc2lvbnMiLCJ1c2VfaGllcmFyY2h5Iiwib3JkZXJieW5hbWUiLCJkaXNwbGF5X2ZpbHRlciIsImRpc3BsYXlfaW5zdGFudHNlYXJjaCIsImRpc3BsYXlfaW5zdGFudHNvcnQiLCJlZGl0YWJsZV9hbGlhc2VzIiwiYXV0b2luY3JlbWVudF9hbGlhcyIsImFsbG93X3NxbCIsImZvcmNlX2xpc3QiLCJkZWxldGVfZmlsZXMiLCJ0YWJkaXNwbGF5X3RlbXBsYXRlcyIsInRhYmRpc3BsYXlfZmllbGRvcHRpb25zIiwidGFiZGlzcGxheV9xdWVyaWVzIiwic2hvd3RodW1ibmFpbHMiLCJmZV93eXNpd3lnIiwiZmVfZGVjb2RlZW50aXRpZXMiLCJmZV9hbGxvd2ZpbGVzIiwiZmVfYWxsb3duYW1lY2hhbmdlIiwiZmVfYWxsb3dhZGRuZXciLCJmZV91c2VjYXB0Y2hhIiwiYWxsb3dfY29tcGxleF9vcmRlciIsImxvYWRfbmV4dHByZXZpb3VzIiwibG9hZF9uYmNoaWxkcmVuIiwidXNlX3Nlc3Npb24iLCJyZXRyaWV2ZXRyZWUiKTsNCgkJCQlmb3JlYWNoKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpIGFzICRsZXZlbCl7DQoJCQkJCSRwcmVmc1tdID0gIm5ld2l0ZW1zZmlyc3RfIi4kbGV2ZWw7DQoJCQkJCSRwcmVmc1tdID0gInNlYXJjaG1vZHVsZV9pbmRleF8iLiRsZXZlbDsNCgkJCQkJJHByZWZzW10gPSAidGFiZGlzcGxheV8iLiRsZXZlbDsNCgkJCQl9DQoJCQkJZm9yZWFjaCgkcHJlZnMgYXMgJHByZWYpCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCRwcmVmLCBpc3NldCgkcGFyYW1zWyRwcmVmXSkpOw0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbImZlX2FmdGVyc3VibWl0Il0pKQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiZmVfYWZ0ZXJzdWJtaXQiLCAkcGFyYW1zWyJmZV9hZnRlcnN1Ym1pdCJdKTsNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJmZV9tYXhmaWxlc2l6ZSJdKSkJJHRoaXMtPlNldFByZWZlcmVuY2UoImZlX21heGZpbGVzaXplIiwgJHBhcmFtc1siZmVfbWF4ZmlsZXNpemUiXSk7DQoJCQkJJG1heHNob3ducGFnZXMgPSAoaW50KSRwYXJhbXNbIm1heHNob3ducGFnZXMiXTsNCgkJCQkkYWRtaW5wYWdlcyA9IChpbnQpJHBhcmFtc1siYWRtaW5wYWdlcyJdOw0KCQkJCWZvcmVhY2goJHRoaXMtPmdldF9sZXZlbGFycmF5KCkgYXMgJGxldmVsKXsNCgkJCQkJJG5icGVycGFnZSA9IChpbnQpIChpc3NldCgkcGFyYW1zWyRsZXZlbC4iX3BhZ2luYXRpb24iXSk/JHBhcmFtc1skbGV2ZWwuIl9wYWdpbmF0aW9uIl06MCk7DQoJCQkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCRsZXZlbC4iX3BhZ2luYXRpb24iLCAkbmJwZXJwYWdlKTsNCgkJCQl9DQoJCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoIm1heHNob3ducGFnZXMiLCAkbWF4c2hvd25wYWdlcyk7DQoJCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoImFkbWlucGFnZXMiLCAkYWRtaW5wYWdlcyk7DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4icHJlZmVyZW5jZXMiLCAibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKSk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJjaGFuZ2VkZWZ0ZW1wbGF0ZXMiOg0KCQkJCWZvcmVhY2goJHBhcmFtcyBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSAgICBpZigka2V5ICE9ICJzdWJtaXQiKQkgICAkdGhpcy0+c2V0UHJlZmVyZW5jZSgka2V5LCAkdmFsdWUpOw0KCQkJCX0NCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJ0ZW1wbGF0ZXMiLCAibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKSk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJkZWxldGV0cGwiOg0KCQkJCSRuZXdwYXJhbXMgPSBhcnJheSgiYWN0aXZlX3RhYiI9PiJ0ZW1wbGF0ZXMiKTsNCgkJCQkkZGVmdGVtcGxhdGVzID0gJHRoaXMtPmdldERlZmF1bHRUZW1wbGF0ZXMoKTsNCgkJCSAgICBpZihpc3NldCgkcGFyYW1zWyJ0cGxuYW1lIl0pICYmICFpbl9hcnJheSgkcGFyYW1zWyJ0cGxuYW1lIl0sICRkZWZ0ZW1wbGF0ZXMpKXsNCgkJCQkgICAgaWYoJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCRwYXJhbXNbInRwbG5hbWUiXSkpCSAgICRuZXdwYXJhbXNbIm1vZHVsZV9tZXNzYWdlPiJdID0gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKTsNCgkJCQl9DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJG5ld3BhcmFtcyk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJkZWxldGVxdWVyeSI6DQoJCQkJJG5ld3BhcmFtcyA9IGFycmF5KCJhY3RpdmVfdGFiIj0+InF1ZXJpZXMiKTsNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJxdWVyeWlkIl0pKXsNCgkJCQkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkJCQlpZigkZGItPkV4ZWN1dGUoIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3Nfc2F2ZWRfcXVlcmllcyBXSEVSRSBpZD0/IExJTUlUIDEiLCBhcnJheSgkcGFyYW1zWyJxdWVyeWlkIl0pKSl7DQoJCQkJCQkkbmV3cGFyYW1zWyJtb2R1bGVfbWVzc2FnZSJdID0gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfZGVsZXRlZCIpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICRuZXdwYXJhbXMpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAidGVzdHF1ZXJ5IjoNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJxdWVyeWlkIl0pICYmICRxdWVyeSA9ICR0aGlzLT5nZXRfcXVlcmllcyhhcnJheSgiaWQiPT4kcGFyYW1zWyJxdWVyeWlkIl0pKSl7DQoJCQkJCSRxdWVyeSA9ICRxdWVyeVswXTsNCgkJCQkJZWNobyAiPHA+PGI+Ii4kdGhpcy0+TGFuZygicXVlcnkiKS4iOjwvYj4gIi4kcXVlcnktPm5hbWU7DQoJCQkJCWlmKCRxdWVyeS0+b3JkZXIgIT0gIiIpCWVjaG8gIiBPUkRFUiBCWSAiLiRxdWVyeS0+b3JkZXI7DQoJCQkJCWVjaG8gIjwvcD4iOw0KCQkJCQkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHF1ZXJ5LT53aGF0Ow0KCQkJCQkkaXRlbWxpc3QgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCksIGZhbHNlLCAiIiwgIiIsIDAsIDAsICRxdWVyeS0+d2hlcmVjbGF1c2UsICRxdWVyeS0+d2hlcmV2YWx1ZXMsICgkcXVlcnktPnF1ZXJ5b3JkZXIgPT0gIiI/ZmFsc2U6JHF1ZXJ5LT5xdWVyeW9yZGVyKSk7DQoJCQkJCWVjaG8gIjxwPjxiPiIuJHRoaXMtPkxhbmcoInJlc3VsdHMiKS4iICgiLmNvdW50KCRpdGVtbGlzdCkuIikgOjwvYj48L3A+IjsNCgkJCQkJZWNobyAiPHVsPiI7DQoJCQkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKQllY2hvICI8bGk+Ii4kaXRlbS0+bmFtZS4iPC9saT4iOw0KCQkJCQllY2hvICI8L3VsPiI7DQoJCQkJfQ0KCQkJCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBsYW5nKCJiYWNrIiksIGFycmF5KCJhY3RpdmVfdGFiIj0+InF1ZXJpZXMiKSkuIjwvcD4iOw0KCQkJCWJyZWFrOw0KCQkJCQkNCg0KCQkJY2FzZSAiYWRkX29wdGlvbnZhbHVlIjoNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJmaWVsZCJdKSAmJiBpc3NldCgkcGFyYW1zWyJvcHRpb25uYW1lIl0pICYmICRwYXJhbXNbIm9wdGlvbm5hbWUiXSAhPSAiIil7DQoJCQkJCSR0YWJsZW5hbWUgPSBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc19maWVsZG9wdGlvbnMiOw0KCQkJCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCQkJCSRpdGVtaWQgPSAkZGItPkdlbklEKCR0YWJsZW5hbWUuIl9zZXEiKTsNCgkJCQkJJGl0ZW1vcmRlciA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygiZmllbGRvcHRpb25zIiwgImlkIiwgYXJyYXkoImZpZWxkIj0+JHBhcmFtc1siZmllbGQiXSkpICsgMTsNCgkJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuJHRhYmxlbmFtZS4iIFNFVCBpZD0/LCBmaWVsZD0/LCBuYW1lPT8sIGl0ZW1fb3JkZXI9PyI7DQoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGl0ZW1pZCwkcGFyYW1zWyJmaWVsZCJdLCRwYXJhbXNbIm9wdGlvbm5hbWUiXSwkaXRlbW9yZGVyKSk7DQoJCQkJfQ0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+ImZpZWxkb3B0aW9ucyIpICk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJkZWxldGVfb3B0aW9udmFsdWUiOg0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbImZpZWxkIl0pICYmIGlzc2V0KCRwYXJhbXNbIm9wdGlvbmlkIl0pICYmICRwYXJhbXNbIm9wdGlvbmlkIl0gPiAwKXsNCgkJCQkJJHRhYmxlbmFtZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX2ZpZWxkb3B0aW9ucyI7DQoJCQkJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICR0YWJsZW5hbWUgV0hFUkUgaWQ9PyBBTkQgZmllbGQ9PyBMSU1JVCAxIjsNCgkJCQkJaWYoJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJvcHRpb25pZCJdLCAkcGFyYW1zWyJmaWVsZCJdKSkpew0KCQkJCQkJJHF1ZXJ5ID0gIlVQREFURSAkdGFibGVuYW1lIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyLTEpIFdIRVJFIGZpZWxkPT8gQU5EIGl0ZW1fb3JkZXIgPiA/IjsNCgkJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbImZpZWxkIl0sICRwYXJhbXNbImN1cnJlbnRvcmRlciJdKSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4iZmllbGRvcHRpb25zIikgKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgIm1vdmVfb3B0aW9udmFsdWUiOg0KCQkJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJCQkkdGFibGVuYW1lID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfZmllbGRvcHRpb25zIjsNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJmaWVsZCJdKSAmJiBpc3NldCgkcGFyYW1zWyJvcHRpb25pZCJdKSAmJiBpc3NldCgkcGFyYW1zWyJtb3ZlIl0pICYmIGlzc2V0KCRwYXJhbXNbImN1cnJlbnRvcmRlciJdKSl7DQoJCQkJCWlmKCRwYXJhbXNbIm1vdmUiXSA9PSAidXAiICYmICRwYXJhbXNbImN1cnJlbnRvcmRlciJdICE9IDEpew0KCQkJCQkJJHF1ZXJ5ID0gIlVQREFURSAkdGFibGVuYW1lIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyKzEpIFdIRVJFIGZpZWxkPT8gQU5EIGl0ZW1fb3JkZXIgPSA/IExJTUlUIDE7IjsNCgkJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbImZpZWxkIl0sICRwYXJhbXNbImN1cnJlbnRvcmRlciJdIC0xKSk7DQoJCQkJCQkkcXVlcnkgPSAiVVBEQVRFICR0YWJsZW5hbWUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgZmllbGQ9PyBBTkQgaWQgPSA/IExJTUlUIDE7IjsNCgkJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbImZpZWxkIl0sICRwYXJhbXNbIm9wdGlvbmlkIl0pKTsNCgkJCQkJfWVsc2VpZigkcGFyYW1zWyJtb3ZlIl0gPT0gImRvd24iKXsNCgkJCQkJCSRxdWVyeSA9ICJVUERBVEUgJHRhYmxlbmFtZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBmaWVsZD0/IEFORCBpdGVtX29yZGVyID0gPyBMSU1JVCAxOyI7DQoJCQkJCQlpZigkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWyJmaWVsZCJdLCAkcGFyYW1zWyJjdXJyZW50b3JkZXIiXSArMSkpKXsNCgkJCQkJCQkkcXVlcnkgPSAiVVBEQVRFICR0YWJsZW5hbWUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgZmllbGQ9PyBBTkQgaWQgPSA/IExJTUlUIDE7IjsNCgkJCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWyJmaWVsZCJdLCAkcGFyYW1zWyJvcHRpb25pZCJdKSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4iZmllbGRvcHRpb25zIikgKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgInJlbmFtZV9vcHRpb252YWx1ZSI6DQoJCQkJaWYoIWlzc2V0KCRwYXJhbXNbImNhbmNlbCJdKSAmJiBpc3NldCgkcGFyYW1zWyJvcHRpb25pZCJdKSAmJiBpc3NldCgkcGFyYW1zWyJmaWVsZCJdKSAmJiBpc3NldCgkcGFyYW1zWyJvcHRpb25uYW1lIl0pICl7DQoJCQkJCWlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdCJdKSAmJiAkcGFyYW1zWyJvcHRpb25uYW1lIl0gIT0gIiIgKXsNCgkJCQkJCSR0YWJsZW5hbWUgPSBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc19maWVsZG9wdGlvbnMiOw0KCQkJCQkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkJCQkJJHF1ZXJ5ID0gIlVQREFURSAkdGFibGVuYW1lIFNFVCBuYW1lPT8gV0hFUkUgZmllbGQ9PyBBTkQgaWQ9PyI7DQoJCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRwYXJhbXNbIm9wdGlvbm5hbWUiXSwgJHBhcmFtc1siZmllbGQiXSwgJHBhcmFtc1sib3B0aW9uaWQiXSkpOw0KCQkJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4iZmllbGRvcHRpb25zIikgKTsNCgkJCQkJfWVsc2V7DQoJCQkJCQllY2hvICI8aDI+Ii4kdGhpcy0+TGFuZygibW9kaWZ5YW5vcHRpb24iKS4iPC9oMj4iOw0KCQkJCQkJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgInJlbmFtZV9vcHRpb252YWx1ZSIsICRyZXR1cm5pZCk7DQoJCQkJCQllY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJvcHRpb25uYW1lIiwkcGFyYW1zWyJvcHRpb25uYW1lIl0sNDAsNjQpLiI8L3A+IjsNCgkJCQkJCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiY2FuY2VsIiwgbGFuZygiY2FuY2VsIikpLiI8L3A+IjsNCgkJCQkJCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9wdGlvbmlkIiwgJHBhcmFtc1sib3B0aW9uaWQiXSkuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZpZWxkIiwgJHBhcmFtc1siZmllbGQiXSk7DQoJCQkJCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoJCQkJCX0NCgkJCQl9ZWxzZXsNCgkJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4iZmllbGRvcHRpb25zIikgKTsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICJ2aWV3YWRkaW1ncyI6DQoJCQkJJGRiID0gJHRoaXMtPkdldERiKCk7DQoJCQkJaWYoIWlzc2V0KCRwYXJhbXNbIml0ZW1pZCJdKSB8fCAhaXNzZXQoJHBhcmFtc1siZmllbGQiXSkgfHwgIWlzc2V0KCRwYXJhbXNbInByZWZpeCJdKSkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCk7DQoJCQkJaWYoIGlzc2V0KCRwYXJhbXNbImRlbGV0ZWZpbGUiXSkgJiYgJHBhcmFtc1siZGVsZXRlZmlsZSJdID4gMCApew0KCQkJCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc19tdWx0aXBsZWZpbGVzZmllbGRzIFdIRVJFIGZpbGVpZD0/IExJTUlUIDEiOw0KCQkJCQlpZigkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoJHBhcmFtc1siZGVsZXRlZmlsZSJdKSApKQllY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKTsNCgkJCQl9DQoJCQkJZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlTGluaygkaWQsICJlZGl0Ii4kcGFyYW1zWyJwcmVmaXgiXSwgJHJldHVybmlkLCBsYW5nKCJjYW5jZWwiKSwgYXJyYXkoJHBhcmFtc1sicHJlZml4Il0uImlkIj0+JHBhcmFtc1siaXRlbWlkIl0pKS4iPC9wPiI7DQoJCQkJJGFkZGZpbGVzID0gJHRoaXMtPmdldGFkZGZpbGVzKCRwYXJhbXNbImZpZWxkIl0sICRwYXJhbXNbIml0ZW1pZCJdLCB0cnVlKTsNCgkJCQllY2hvICI8dGFibGU+IjsNCgkJCQkkYWRtaW50aGVtZSA9ICRnQ21zLT52YXJpYWJsZXNbImFkbWludGhlbWUiXTsNCgkJCQlmb3JlYWNoKCRhZGRmaWxlcyBhcyAkYWRkZmlsZSl7DQoJCQkJCWVjaG8gIjx0cj48dGQ+PGI+Ii4kYWRkZmlsZS0+ZmlsZXBhdGguIjwvYj48YnIvPiIuJHRoaXMtPkxhbmcoImltYWdlc2l6ZSIpLiI6ICIuJGFkZGZpbGUtPmltYWdlc2l6ZS4iPGJyLz4iLiR0aGlzLT5MYW5nKCJmaWxlc2l6ZSIpLiI6ICIuJGFkZGZpbGUtPnNpemVfd2Zvcm1hdC4iPGJyLz4iLiR0aGlzLT5MYW5nKCJsYXN0bW9kIikuIjogIi4kYWRkZmlsZS0+bW9kaWZpZWQ7DQoJCQkJCSRuZXdwYXJhbXMgPSAkcGFyYW1zOw0KCQkJCQkkbmV3cGFyYW1zWyJkZWxldGVmaWxlIl0gPSAkYWRkZmlsZS0+ZmlsZWlkOw0KCQkJCQllY2hvICI8YnIvPiIuJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiwgJHRoaXMtPmxhbmcoImRlbGV0ZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksICRuZXdwYXJhbXMpLiI8L3RkPiI7DQoJCQkJCWVjaG8gJzx0ZD48aW1nIHNyYz0iJy4kYWRkZmlsZS0+dXJsLiciIGFsdD0iJy4kYWRkZmlsZS0+dXJsLiciLz48L3RkPjwvdHI+JzsNCgkJCQl9DQoJCQkJZWNobyAiPHRhYmxlPiI7DQoJCQkJZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlTGluaygkaWQsICJlZGl0Ii4kcGFyYW1zWyJwcmVmaXgiXSwgJHJldHVybmlkLCBsYW5nKCJjYW5jZWwiKSwgYXJyYXkoJHBhcmFtc1sicHJlZml4Il0uImlkIj0+JHBhcmFtc1siaXRlbWlkIl0pKS4iPC9wPiI7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJkZWZhdWx0IjoNCgkJCWRlZmF1bHQ6DQoJCQkJcGFyZW50OjpEb0FjdGlvbigkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7DQoJCQkJYnJlYWs7DQoJCX0NCg0KDQoJfQ0KCWZ1bmN0aW9uIHBsY3JlYXRlYWxpYXMoJG5hbWUpew0KCQkvLyB0cmFuc2Zvcm1zICRuYW1lIGludG8gYSB1cmwtZnJpZW5kbHkgYWxpYXMNCgkJDQoJCS8vIGFzIGEgc3VnZ2VzdGlvbiBmcm9tIEFNVCwgdGhlIGZpcnN0IHBhcnQgZGVhbHMgd2l0aCBzbWFydCBxdW90ZXMNCiAJCSRzZWFyY2ggPSBhcnJheShjaHIoMHhlMikgLiBjaHIoMHg4MCkgLiBjaHIoMHg5OCksDQoJCQkJCQkgIGNocigweGUyKSAuIGNocigweDgwKSAuIGNocigweDk5KSwNCgkJCQkJCSAgY2hyKDB4ZTIpIC4gY2hyKDB4ODApIC4gY2hyKDB4OWMpLA0KCQkJCQkJICBjaHIoMHhlMikgLiBjaHIoMHg4MCkgLiBjaHIoMHg5ZCksDQoJCQkJCQkgIGNocigweGUyKSAuIGNocigweDgwKSAuIGNocigweDkzKSwNCgkJCQkJCSAgY2hyKDB4ZTIpIC4gY2hyKDB4ODApIC4gY2hyKDB4OTQpKTsNCiAJCSRuYW1lID0gc3RyX3JlcGxhY2UoJHNlYXJjaCwgIiIsICRuYW1lKTsNCgkJDQogCQkvLyB0aGUgc2Vjb25kIHBhcnQgdXNlcyB0aGUgY21zIHZlcnNpb24NCiAJCSRhbGlhcyA9IG11bmdlX3N0cmluZ190b191cmwoJG5hbWUsIGZhbHNlKTsNCiAJCXJldHVybiAkYWxpYXM7DQoJfQ0KDQoJZnVuY3Rpb24gY2hlY2thbGlhcygkZGJ0YWJsZSwgJGFsaWFzLCAkaXRlbWlkPWZhbHNlLCAkaWRmaWVsZD0iaWQiLCAkYWxpYXNmaWVsZD0iYWxpYXMiKXsNCgkJLy8gY2hlY2tzIGlmIHRoaXMgYWxpYXMgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGxldmVsDQoJCSRxdWVyeSA9ICJTRUxFQ1QgIi4kaWRmaWVsZC4iIEZST00gIi5jbXNfZGJfcHJlZml4KCkuJGRidGFibGUuIiBXSEVSRSAiLiRhbGlhc2ZpZWxkLiIgPSA/IjsNCgkJaWYoJGl0ZW1pZCkgJHF1ZXJ5IC49ICIgQU5EICIuJGlkZmllbGQuIiE9Ii4kaXRlbWlkOw0KCQkkZGIgPSAkdGhpcy0+R2V0RGIoKTsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkYWxpYXMpKTsNCgkJJHRhcmdldGlkID0gMDsNCgkJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpICR0YXJnZXRpZCA9ICRyb3dbImlkIl07DQoJCXJldHVybiAoJHRhcmdldGlkID09IDApOw0KCX0NCglmdW5jdGlvbiBCdWlsZFByZXR0eVVybHMoJHBhcmFtcywgJHJldHVybmlkPS0xKXsNCgkJLy8gdHJhbnNmb3JtcyBnaXZlbiBwYXJhbXMgaW50byBhIHByZXR0eSB1cmwNCgkJJHByZXR0eXVybCA9ICR0aGlzLT5HZXROYW1lKCkuIi8iOw0KCQlpZihpc3NldCgkcGFyYW1zWyJxdWVyeSJdKSl7DQoJCQkkcHJldHR5dXJsIC49ICJxdWVyeS8iLiRwYXJhbXNbInF1ZXJ5Il07CQ0KCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pKXsNCgkJCSRwcmV0dHl1cmwgLj0gImRldGFpbC8iLiRwYXJhbXNbImFsaWFzIl07DQoJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pKXsNCgkJCSRwcmV0dHl1cmwgLj0gJHBhcmFtc1sid2hhdCJdLiIvIi4kcGFyYW1zWyJwYXJlbnQiXTsNCgkJfWVsc2V7DQoJCQkkcHJldHR5dXJsIC49ICRwYXJhbXNbIndoYXQiXTsNCgkJfQ0KCQlpZighaXNzZXQoJHBhcmFtc1siYWxpYXMiXSkgJiYgaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pICYmIGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSkJJHByZXR0eXVybCAuPSAiLyIuJHBhcmFtc1sicGFnZWluZGV4Il0uIi8iLiRwYXJhbXNbIm5icGVycGFnZSJdOw0KCQkkcHJldHR5dXJsIC49ICIvIi4kcmV0dXJuaWQ7DQoJCXJldHVybiAkcHJldHR5dXJsOw0KCX0NCglmdW5jdGlvbiBEb0NoZWNrYm94ZXMoJGlkLCAkbmFtZSwgJGNob2ljZXMsICRzZWxlY3RlZD1hcnJheSgpLCAkZGVsaW1pdGVyPSI8YnIvPiIpew0KCQkvLyBwcmV0dHkgbXVjaCBsaWtlIENyZWF0ZUlucHV0UmFkaW9Hcm91cCwgYnV0IHVzaW5nIGNoZWNrYm94ZXMNCgkJaWYoIWlzX2FycmF5KCRzZWxlY3RlZCkpCSRzZWxlY3RlZCA9IGFycmF5KCk7DQoJCSRvdXRwdXQgPSAiIjsNCgkJZm9yZWFjaCgkY2hvaWNlcyBhcyAka2V5PT4kdmFsdWUpew0KCQkJJG91dHB1dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICRuYW1lLiJbXSIsICR2YWx1ZSwgKGluX2FycmF5KCR2YWx1ZSwgJHNlbGVjdGVkKT8kdmFsdWU6MCkpLiIgIi4ka2V5LiRkZWxpbWl0ZXI7DQoJCX0NCgkJcmV0dXJuICRvdXRwdXQ7DQoJfQ0KCWZ1bmN0aW9uIHBhcnNla2V5d29yZHMoJHN0cmluZyl7DQoJCS8vIGN1dHMgdGhlIHNlYXJjaHdvcmRzIG9mIHRoZSBzZWFyY2ggZm9ybSBpbnRvIHBpZWNlcw0KCQkvLyBiYXNjaWFsbHksIHRoaXMgZXhwbG9kZXMgdGhlICRzdHJpbmcsIGJ1dCB0YWtlcyBub3RpY2Ugb2YgdGhlIHF1b3Rlcw0KCQkNCgkJJGluc2lkZSA9IChzdWJzdHIoJHN0cmluZywwLDEpID09ICciJyk7DQoJCSRwYXJ0cyA9IGV4cGxvZGUoJyInLCRzdHJpbmcpOw0KCQ0KCQlpZihjb3VudCgkcGFydHMpIDwgMil7DQoJCQlpZigkaW5zaWRlKXsNCgkJCQlyZXR1cm4gYXJyYXkoc3RyX3JlcGxhY2UoJyInLCIiLCRzdHJpbmcpKTsNCgkJCX1lbHNlew0KCQkJCXJldHVybiBleHBsb2RlKCIgIiwkc3RyaW5nKTsNCgkJCX0NCgkJfQ0KCQ0KCQkka2V5d29yZHMgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCRwYXJ0cyBhcyAkcGFydCl7DQoJCQlpZigkcGFydCAhPSAiIil7DQoJCQkJaWYoJGluc2lkZSl7DQoJCQkJCSRrZXl3b3Jkc1tdID0gJHBhcnQ7DQoJCQkJfWVsc2V7DQoJCQkJCSR3b3JkcyA9IGV4cGxvZGUoIiAiLHRyaW0oJHBhcnQpKTsNCgkJCQkJZm9yZWFjaCgkd29yZHMgYXMgJHdvcmQpew0KCQkJCQkJaWYodHJpbSgkd29yZCkgIT0gIiIpCSRrZXl3b3Jkc1tdID0gJHdvcmQ7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJGluc2lkZSA9ICEkaW5zaWRlOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAka2V5d29yZHM7DQoJfQ0KDQoNCglmdW5jdGlvbiBnZXRfbGV2ZWxhcnJheSgpew0KCQkvLyByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSBsZXZlbHMgKHRvcCB0byBib3R0b20pDQoJCXJldHVybiBhcnJheSgidmVoaWNsZXR5cGUiLCJ2ZWhpY2xlIik7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0X21vZHVsZWhpZXJhcmNoeSgkbGV2ZWw9ZmFsc2Upew0KCQkkaGllcmFyY2h5ID0gYXJyYXkoKTsNCgkJCSRoaWVyYXJjaHlbMV0gPSAidmVoaWNsZXR5cGUiOw0KCQkJJGhpZXJhcmNoeVsyXSA9ICJ2ZWhpY2xlIjsNCgkJcmV0dXJuICRoaWVyYXJjaHk7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldF9sZXZlbHNlYXJjaGZpZWxkcygkbGV2ZWwpew0KCQkvLyByZXR1cm5zIHRoZSBmaWVsZCBvZiBhIGxldmVsIHdoaWNoIGFyZSBzZWFyY2hhYmxlIChmb3IgdGhlIHNpbXBsZSBzZWFyY2ggYWN0aW9uKQ0KCQkkZmllbGRzID0gYXJyYXkoKTsNCgkJc3dpdGNoKCRsZXZlbCl7DQoJCQljYXNlICJ2ZWhpY2xldHlwZSI6DQoJCQkJJGZpZWxkcyA9IGFycmF5KCJjbGFzc2lmaWNhdGlvbiIsIm5hbWUiKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgInZlaGljbGUiOg0KCQkJCSRmaWVsZHMgPSBhcnJheSgieWVhciIsIm1vZGVsIiwibWlsYWdlIiwidmVoaWNsZWNvbmRpdGlvbiIsImNvbG9yIiwicHJpY2UiLCJlbmdpbmUiLCJkZXNjcmlwdGlvbiIsIm5hbWUiKTsNCgkJCQlicmVhazsNCgkJCQkJCQ0KCQl9DQoJCXJldHVybiAkZmllbGRzOw0KCX0NCglmdW5jdGlvbiBnZXRfaGllcmFyY2h5b3B0aW9ucygkZW5kPWZhbHNlLCAkd2l0aGVtcHR5cm93PXRydWUsICRkZXB0aHN5bWJvbD0iJm5ic3A7LSZuYnNwOyIpew0KCQkvLyByZXR1cm5zIGFuIGFycmF5IG9mIHBhcmVudCBvcHRpb25zIGZvciBhIGxpbmtlZCB0byBhIHNlbGVjdGVkIGxldmVsDQoJCS8vIHVzZWQgZm9yIHRoZSBoaWVyYXJjaHkgZHJvcGRvd24gbGlzdCBpbiBzZWFyY2ggYWN0aW9uDQoJCSRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCSBpZighaW5fYXJyYXkoJGVuZCwgJGxldmVsYXJyYXkpKQkkZW5kID0gJGxldmVsYXJyYXlbY291bnQoJGxldmVsYXJyYXkpLTFdOw0KCQkNCgkJLy8gYnVpbGRpbmcgdGhlIGpvaW5lZCBxdWVyeQ0KCQkkdGFibGVzID0gIiI7DQoJCSRmaWVsZHMgPSAiIjsNCgkJJG9yZGVyYnkgPSAiIjsNCgkJJHdoZXJlID0gIiI7DQoJCSRmaW5pc2hlZCA9IGZhbHNlOw0KCQkkaSA9IDE7DQoJCWZvcmVhY2goJGxldmVsYXJyYXkgYXMgJGxldmVsKXsNCgkJCWlmKCRsZXZlbCA9PSAkZW5kKQkkZmluaXNoZWQgPSB0cnVlOw0KCQkJaWYoISRmaW5pc2hlZCl7DQoJCQkJJHRhYmxlcyAuPSAoJHRhYmxlcyA9PSAiIj8iIjoiLCAiKS5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiR0aGlzLT5HZXROYW1lKCkuIl8iLiRsZXZlbC4iIHQiLiRpLiIgIjsNCgkJCQkkZmllbGRzIC49ICgkZmllbGRzID09ICIiPyIiOiIsICIpLiJ0Ii4kaS4iLmlkIGlkIi4kaS4iLCB0Ii4kaS4iLm5hbWUgbmFtZSIuJGk7DQoJCQkJJG9yZGVyYnkgLj0gKCRvcmRlcmJ5ID09ICIiPyIiOiIsICIpLiJ0Ii4kaS4iLml0ZW1fb3JkZXIgREVTQyI7DQoJCQkJaWYoJGkgPiAxKSAkd2hlcmUgLj0gIiBBTkQgdCIuKCRpLTEpLiIuaWQgPSB0Ii4kaS4iLnBhcmVudCAiOw0KCQkJCSR3aGVyZSAuPSAoJHdoZXJlID09ICIiPyIiOiIgQU5EICIpLiIgdCIuJGkuIi5hY3RpdmU9MSI7DQoJCQkJJGkrKzsNCgkJCX0NCgkJfQ0KCQlpZigkZmllbGRzID09ICIiKQlyZXR1cm4gZmFsc2U7DQoJCQ0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRxdWVyeSA9ICJTRUxFQ1QgIi4kZmllbGRzLiIgRlJPTSAiLiR0YWJsZXMuIiBXSEVSRSAiLiR3aGVyZS4iIE9SREVSIEJZICIuJG9yZGVyYnk7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KDQoJCS8vIHBhcnNpbmcgcmVzdWx0cw0KCQkkY3VycmVudCA9IGFycmF5KCk7DQoJCSR0bXBsYXN0bGV2ZWwgPSBhcnJheSgpOw0KCQkkcmVzdWx0cyA9IGFycmF5KCk7DQoJCSRmaW5hbCA9ICRpIC0xOw0KCQl3aGlsZSgkaiA8ICRmaW5hbCApew0KCQkJJGN1cnJlbnRbJGpdID0gYXJyYXkoImlkIj0+ZmFsc2UsIm5hbWUiPT4iIik7DQoJCQkkaisrOw0KCQl9DQoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCS8vIGVhY2ggcm93IGhhcyBhIGZ1bGwgaGllcmFyY2h5LCBmcm9tIHRvcCBwYXJlbnQgdG8gZmluYWwgY2hpbGQNCgkJCSRqID0gJGZpbmFsOw0KCQkJd2hpbGUoJGogPiAwICl7DQoJCQkJaWYoJHJvd1siaWQiLiRqXSAhPSAkY3VycmVudFskal1bImlkIl0pew0KCQkJCQlpZigkY3VycmVudFskal1bImlkIl0gJiYgY291bnQoJGN1cnJlbnRbJGpdWyJyZXMiXSkgPiAwKXsNCgkJCQkJCSRrZXkgPSBzdHJfcmVwZWF0KCRkZXB0aHN5bWJvbCwgKCRqIC0xKSkuJGN1cnJlbnRbJGpdWyJuYW1lIl07DQoJCQkJCQkkcmVzdWx0c1ska2V5XSA9IGltcGxvZGUoIiwiLCRjdXJyZW50WyRqXVsicmVzIl0pOw0KCQkJCQl9DQoJCQkJCSRjdXJyZW50WyRqXSA9IGFycmF5KCJpZCI9PiRyb3dbImlkIi4kal0sICJuYW1lIj0+JHJvd1sibmFtZSIuJGpdLCAicmVzIj0+YXJyYXkoKSk7DQoJCQkJfQ0KCQkJCSRjdXJyZW50WyRqXVsicmVzIl1bXSA9ICRyb3dbImlkIi4kZmluYWxdOw0KCQkJCSRqLS07DQoJCQl9DQoJCQkkcmVzdWx0c1tzdHJfcmVwZWF0KCRkZXB0aHN5bWJvbCwgKCRmaW5hbCAtMSkpLiRyb3dbIm5hbWUiLiRmaW5hbF1dID0gJHJvd1siaWQiLiRmaW5hbF07DQoJCX0NCgkJLy8gd2UgY2xvc2UgdGhlIHJlbWFpbmluZyBzZXRzDQoJCSRqID0gJGZpbmFsIC0xOw0KCQl3aGlsZSgkaiA+IDAgKXsNCgkJCSRrZXkgPSBzdHJfcmVwZWF0KCRkZXB0aHN5bWJvbCwgKCRqIC0xKSkuJGN1cnJlbnRbJGpdWyJuYW1lIl07DQoJCQkkcmVzdWx0c1ska2V5XSA9IGltcGxvZGUoIiwiLCRjdXJyZW50WyRqXVsicmVzIl0pOw0KCQkJJGotLTsNCgkJfQ0KCQlpZigkd2l0aGVtcHR5cm93KQkkcmVzdWx0c1siIl0gPSAiIjsNCgkJcmV0dXJuIGFycmF5X3JldmVyc2UoJHJlc3VsdHMpOw0KCX0NCglmdW5jdGlvbiBnZXRfYWRtaW5faGllcmFyY2h5b3B0aW9ucygkZW5kPWZhbHNlLCAkd2l0aGVtcHR5cm93PXRydWUsICRzZXBhcmF0b3I9IiAmZ3Q7ICIsICRvcmRlcmJ5bmFtZT1mYWxzZSl7DQoJCS8vIHJldHVybnMgYW4gYXJyYXkgb2YgcGFyZW50IG9wdGlvbnMgbGlua2VkIHRvIGEgc2VsZWN0ZWQgbGV2ZWwNCgkJLy8gdXNlZCBmb3IgdGhlIHBhcmVudCBhbmQgZmlsdGVyIGRyb3Bkb3duIGluIHRoZSBhZG1pbg0KCQkvLyBzaG93cyBlbXB0eSBwYXJlbnRzIHRvbw0KCQkkbGV2ZWxhcnJheSA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOw0KCQlpZighaW5fYXJyYXkoJGVuZCwgJGxldmVsYXJyYXkpKQkkZW5kID0gIml0ZW0iOw0KCQkNCgkJLy8gYnVpbGRpbmcgdGhlIGpvaW5lZCBxdWVyeQ0KCQkkdGFibGVzID0gIiI7DQoJCSRmaWVsZHMgPSAiIjsNCgkJJG9yZGVyYnkgPSAiIjsNCgkJJGZpbmlzaGVkID0gZmFsc2U7DQoJCSRpID0gMTsNCgkJZm9yZWFjaCgkbGV2ZWxhcnJheSBhcyAkbGV2ZWwpew0KCQkJaWYoJGxldmVsID09ICRlbmQpCSRmaW5pc2hlZCA9IHRydWU7DQoJCQlpZighJGZpbmlzaGVkKXsNCgkJCQkkdGFibGVzIC49ICgkaT09MT8iIjoiIExFRlQgSk9JTiAiKS5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiR0aGlzLT5HZXROYW1lKCkuIl8iLiRsZXZlbC4iIHQiLiRpLiIgIjsNCgkJCQlpZigkaT4xKQkkdGFibGVzIC49ICJPTiB0Ii4oJGktMSkuIi5pZCA9IHQiLiRpLiIucGFyZW50ICI7DQoJCQkJJGZpZWxkcyAuPSAoJGZpZWxkcyA9PSAiIj8iIjoiLCAiKS4idCIuJGkuIi5pZCBpZCIuJGkuIiwgdCIuJGkuIi5uYW1lIG5hbWUiLiRpOw0KCQkJCWlmKCRvcmRlcmJ5bmFtZSl7DQoJCQkJCSRvcmRlcmJ5IC49ICgkb3JkZXJieSA9PSAiIj8iIjoiLCAiKS4idCIuJGkuIi5uYW1lIjsNCgkJCQl9ZWxzZXsNCgkJCQkJJG9yZGVyYnkgLj0gKCRvcmRlcmJ5ID09ICIiPyIiOiIsICIpLiJ0Ii4kaS4iLml0ZW1fb3JkZXIsIHQiLiRpLiIubmFtZSI7DQoJCQkJfQ0KCQkJCSRpKys7DQoJCQl9DQoJCX0NCgkJaWYoJGZpZWxkcyA9PSAiIikJcmV0dXJuIGFycmF5KCk7DQoJCQ0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRxdWVyeSA9ICJTRUxFQ1QgIi4kZmllbGRzLiIgRlJPTSAiLiR0YWJsZXMuIiBPUkRFUiBCWSAiLiRvcmRlcmJ5Ow0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCgkJJG9wdGlvbnMgPSBhcnJheSgpOw0KCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkvLyBlYWNoIHJvdyBoYXMgYSBmdWxsIGhpZXJhcmNoeSwgZnJvbSB0b3AgcGFyZW50IHRvIGZpbmFsIGNoaWxkDQoJCQkkdmFsdWUgPSAkcm93WyJpZCIuKCRpLTEpXTsNCgkJCSRqID0gMTsNCgkJCSRvcHRpb25fbmFtZSA9ICIiOw0KCQkJd2hpbGUoJGogPCAkaSl7DQoJCQkJJG9wdGlvbl9uYW1lIC49ICgkaj09MT8iIjokc2VwYXJhdG9yKS4kcm93WyJuYW1lIi4kal07DQoJCQkJJGorKzsNCgkJCX0NCgkJCSRvcHRpb25zWyRvcHRpb25fbmFtZV0gPSAkdmFsdWU7DQoJCX0NCgkJaWYoJHdpdGhlbXB0eXJvdykJJG9wdGlvbnNbIiJdID0gIiI7DQoJCXJldHVybiAkb3B0aW9uczsNCgl9DQoJZnVuY3Rpb24gZ2V0X21vZHVsZUdldFZhcnMoKXsNCgkJLy8gdW5vcnRob2RveCBoYWNrIHNvIHRoYXQgZGlmZmVyZW50IGNhbGxzIG9mIHRoZSBtb2R1bGUgc3BlYWsgd2l0aCBlYWNoIG90aGVyDQoJCS8vIGJhc2ljYWxseSwgd2UgcmV0cmlldmUgcGFyYW1ldGVycyBpbiB0aGUgdXJsIHRoYXQgd2VyZSBtZWFudCBmb3Igb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBtb2R1bGUNCgkJLy8gc2VlIEZBUSBmb3IgbW9yZSBpbmZvIG9uIHRoaXMNCgkJZ2xvYmFsICRfR0VUOw0KCQlnbG9iYWwgJGdDbXM7DQoJCSRyZWRpcmVjdGlvbiA9IGZhbHNlOw0KCQlpZihpc3NldCgkZ0Ntcy0+Y29uZmlnWyJ1cmxfcmV3cml0aW5nIl0pKXsNCgkJCS8vIGNvcmUgMS42IG9yIG1vcmUNCgkJCSRyZWRpcmVjdGlvbiA9ICRnQ21zLT5jb25maWdbInVybF9yZXdyaXRpbmciXTsNCgkJfWVsc2V7DQoJCQkvLyBjb3JlIGJlbG93IDEuNg0KCQkJaWYoJGdDbXMtPmNvbmZpZ1siYXNzdW1lX21vZF9yZXdyaXRlIl0gJiYgaXNzZXQoJF9HRVRbInBhZ2UiXSkpew0KCQkJCSRyZWRpcmVjdGlvbiA9ICJtb2RfcmV3cml0ZSI7DQoJCQl9ZWxzZWlmKCEkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSAmJiAkZ0Ntcy0+Y29uZmlnWyJpbnRlcm5hbF9wcmV0dHlfdXJscyJdICYmIGlzc2V0KCRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdKSl7DQoJCQkJJHJlZGlyZWN0aW9uID0gImludGVybmFsIjsNCgkJCX0NCgkJfQ0KCQkkcGFyYW1zID0gYXJyYXkoKTsNCgkJJGdsb2JhbG1vZHVsZXZhcnMgPSBhcnJheSgpOw0KCQlpZihpc3NldCgkX0dFVFsibWFjdCJdKSl7DQoJCQkvLyBpZiB3ZSBhcmVuJ3QgdXNpbmcgcHJldHR5IHVybHMuLi4NCgkJCSRtb2RpbmZvID0gZXhwbG9kZSgiLCIsJF9HRVRbIm1hY3QiXSk7DQoJCQlpZihpc3NldCgkbW9kaW5mbykgJiYgJG1vZGluZm9bMF0gPT0gJHRoaXMtPkdldE5hbWUoKSl7DQoJCQkJaWYoaXNzZXQoJF9HRVRbJG1vZGluZm9bMV0uInBhcmVudCJdKSkNCgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhcmVudCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJwYXJlbnQiXTsNCgkJCQlpZihpc3NldCgkX0dFVFskbW9kaW5mb1sxXS4id2hhdCJdKSkNCgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXT0kX0dFVFskbW9kaW5mb1sxXS4id2hhdCJdOw0KCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJhbGlhcyJdKSkNCgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbImFsaWFzIl09JF9HRVRbJG1vZGluZm9bMV0uImFsaWFzIl07DQoJCQkJaWYoaXNzZXQoJF9HRVRbJG1vZGluZm9bMV0uInBhZ2VpbmRleCJdKSkNCgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJwYWdlaW5kZXgiXTsNCgkJCX0NCgkJfWVsc2VpZigkcmVkaXJlY3Rpb24gPT0gIm1vZF9yZXdyaXRlIiB8fCAkcmVkaXJlY3Rpb24gPT0gImludGVybmFsIil7DQoJCQkkcGFyYW1zID0gYXJyYXkoKTsNCgkJCWlmKCRyZWRpcmVjdGlvbiA9PSAibW9kX3Jld3JpdGUiICYmIGlzc2V0KCRfR0VUWyJwYWdlIl0pKXsNCgkJCQkvLyBpZiB3ZSBhcmUgdXNpbmcgYW4gZXh0ZXJuYWwgbW9kX3Jld3JpdGUsIGFzc3VtaW5nIHlvdSBhcmUgdXNpbmcgdGhlIHZlcnkNCgkJCQkvLyBiYXNpYyByZXdyaXRlIHdoaWNoIHB1dHMgdGhlIG1vZHVsZSBpbmZvcm1hdGlvbnMgaW5zaWRlIHRoZSBwYWdlIHZhcmlhYmxlDQoJCQkJJHBhcnRzID0gZXhwbG9kZSgiLyIsJF9HRVRbInBhZ2UiXSk7DQoJCQkJZm9yZWFjaCgkcGFydHMgYXMgJHBhcnQpew0KCQkJCQlpZigkcGFydCAhPSAiIikJJHBhcmFtc1tdID0gJHBhcnQ7DQoJCQkJfQ0KCQkJfWVsc2VpZigkcmVkaXJlY3Rpb24gPT0gImludGVybmFsIil7DQoJCQkJLy8gaWYgd2UgYXJlIHVzaW5nIHRoZSBpbnRlcm5hbCBwcmV0dHkgdXJscw0KCQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi8iLCRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdKTsNCgkJCQkkc3RhcnRlZCA9IGZhbHNlOw0KCQkJCWZvcmVhY2goJHBhcnRzIGFzICRwYXJ0KXsNCgkJCQkJaWYoJHN0YXJ0ZWQgJiYgJHBhcnQgIT0gIiIpCSRwYXJhbXNbXSA9ICRwYXJ0Ow0KCQkJCQlpZihzdHJ0b2xvd2VyKCRwYXJ0KSA9PSAiaW5kZXgucGhwIikJJHN0YXJ0ZWQgPSB0cnVlOw0KCQkJCX0NCgkJCX0NCgkJCWlmKGlzc2V0KCRwYXJhbXNbMF0pICYmIHN0cnRvbG93ZXIoJHBhcmFtc1swXSkgPT0gc3RydG9sb3dlcigkdGhpcy0+R2V0TmFtZSgpKSl7DQoJCQkJIC8vIHdlIGFyZSBpbiBhIG1vZHVsZSBhY3Rpb24NCgkJCQkgLy8gdGhpcyBwYXJ0IHNob3VsZCBiZSBjaGFuZ2VkIGlmIHlvdSBjaGFuZ2UgdGhlIHByZXR0eSB1cmxzIHN0cnVjdHVyZQ0KCQkJCWlmKCFpc3NldCgkcGFyYW1zWzFdKSB8fCBzdHJ0b2xvd2VyKCRwYXJhbXNbMV0pID09ICJxdWVyeSIpew0KDQoJCQkJfWVsc2VpZihpc3NldCgkcGFyYW1zWzFdKSAmJiBzdHJ0b2xvd2VyKCRwYXJhbXNbMV0pID09ICJkZXRhaWwiKXsNCgkJCQkJJGxldmVscyA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOw0KCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sid2hhdCJdID0gJGxldmVsc1tjb3VudCgkbGV2ZWxzKS0xXTsNCgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbImFsaWFzIl0gPSAkcGFyYW1zWzJdOw0KCQkJCX1lbHNlew0KCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sid2hhdCJdID0gJHBhcmFtc1sxXTsNCgkJCQkJc3dpdGNoKGNvdW50KCRwYXJhbXMpKXsNCgkJCQkJCWNhc2UgNjoNCgkJCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sicGFnZWluZGV4Il0gPSAkcGFyYW1zWzNdOw0KCQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbNF07DQoJCQkJCQljYXNlIDQ6DQoJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhcmVudCJdID0gJHBhcmFtc1syXTsNCgkJCQkJCQlicmVhazsNCgkJCQkJCWNhc2UgNToNCgkJCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sicGFnZWluZGV4Il0gPSAkcGFyYW1zWzJdOw0KCQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbM107DQoJCQkJCQkJYnJlYWs7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJuICRnbG9iYWxtb2R1bGV2YXJzOw0KCX0NCglmdW5jdGlvbiBnZXRfb2JqdHJlZSgkY3VyaWQsICRjdXJsZXZlbD1mYWxzZSwgJGZpZWxkPSJpZCIpew0KCQkvLyB0aGlzIGJ1aWxkcyBhbiBvYmplY3QgdHJlZSAoJGl0ZW0tPnBhcmVudF9vYmplY3QtPnBhcmVudF9vYmplY3QuLi4pDQoJCS8vIHdlIGZpcnN0IHB1dCBhbGwgdGhlIHBhcmVudHMgaW4gYW4gYXJyYXkNCgkJJHBhcmVudHMgPSBhcnJheSgpOw0KCQkkbGV2ZWxzID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCWlmKCEkY3VybGV2ZWwpCSRjdXJsZXZlbCA9ICRsZXZlbHNbY291bnQoJGxldmVscyktMV07DQoJCSRpID0gY291bnQoJGxldmVscyk7DQoJCSRzdGFydGVkID0gZmFsc2U7DQoJCXdoaWxlKCRjdXJpZCAmJiAkaSA+IDApew0KCQkJaWYoJGxldmVsc1skaSAtMV0gPT0gJGN1cmxldmVsKQkkc3RhcnRlZCA9IHRydWU7DQoJCQlpZigkc3RhcnRlZCl7DQoJCQkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiRsZXZlbHNbJGkgLTFdOw0KCQkJCSRpdGVtID0gJHRoaXMtPiRnZXRmdW5jdGlvbihhcnJheSgkZmllbGQ9PiRjdXJpZCkpOw0KCQkJCSRpdGVtID0gaXNfYXJyYXkoJGl0ZW0pPyRpdGVtWzBdOiRpdGVtOw0KCQkJCSRpdGVtLT5fX3doYXQgPSAkbGV2ZWxzWyRpLTFdOw0KCQkJCSRwYXJlbnRzW10gPSAkaXRlbTsNCgkJCQkkZmllbGQgPSAiaWQiOw0KCQkJCSRjdXJpZCA9IGlzc2V0KCRpdGVtLT5wYXJlbnRfaWQpPyRpdGVtLT5wYXJlbnRfaWQ6ZmFsc2U7DQoJCQl9DQoJCQkkaS0tOw0KCQl9DQoJCQ0KCQkvLyBuZXh0LCB3ZSBwcm9jZXNzIHRoZSBhcnJheSBvZiBwYXJlbnRzIHRvIGJ1aWxkIHRoZSBwYXJlbnQgdHJlZQ0KCQkkcGFyZW50dHJlZSA9IGZhbHNlOw0KCQkkaSA9IGNvdW50KCRwYXJlbnRzKSAtIDE7DQoJCXdoaWxlKCRpID49IDApew0KCQkJaWYoJHBhcmVudHRyZWUpew0KCQkJCSRuZXd0cmVlID0gJHBhcmVudHNbJGldOw0KCQkJCSRuZXd0cmVlLT5wYXJlbnRfb2JqZWN0ID0gJHBhcmVudHRyZWU7DQoJCQkJJHBhcmVudHRyZWUgPSAkbmV3dHJlZTsNCgkJCX1lbHNlew0KCQkJCSRwYXJlbnR0cmVlID0gJHBhcmVudHNbJGldOw0KCQkJfQ0KCQkJJGktLTsNCgkJfQ0KCQkkdGhpcy0+Y3VycmVudHRyZWUgPSAkcGFyZW50dHJlZTsNCgkJcmV0dXJuICRwYXJlbnR0cmVlOw0KCX0NCglmdW5jdGlvbiBidWlsZEdsb2JhbFRyZWUoKXsNCgkJLy8gdGhpcyBzYXZlcyB0aGUgY3VycmVudCB0cmVlIGluIHRoZSBtb2R1bGUuLi4NCgkJJGxldmVscyA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOw0KCQkkZ2xvYiA9ICR0aGlzLT5nZXRfbW9kdWxlR2V0VmFycygpOw0KCQlpZihpc3NldCgkZ2xvYlsicGFnZWluZGV4Il0pKQkkdGhpcy0+Y3VycmVudHBhZ2VpbmRleCA9ICRnbG9iWyJwYWdlaW5kZXgiXTsNCgkJaWYoaXNzZXQoJGdsb2JbImFsaWFzIl0pKXsNCgkJCSR0cmVlID0gJHRoaXMtPmdldF9vYmp0cmVlKCRnbG9iWyJhbGlhcyJdLCAkbGV2ZWxzW2NvdW50KCRsZXZlbHMpLTFdLCAiYWxpYXMiKTsNCgkJfWVsc2VpZihpc3NldCgkZ2xvYlsicGFyZW50Il0pICYmIGlzc2V0KCRnbG9iWyJ3aGF0Il0pKXsNCgkJCSR0cmVlID0gJHRoaXMtPmdldF9vYmp0cmVlKCRnbG9iWyJwYXJlbnQiXSwgJHRoaXMtPmdldF9uZXh0bGV2ZWwoJGdsb2JbIndoYXQiXSxmYWxzZSksICJhbGlhcyIpOw0KCQl9DQoJCQ0KCQlpZihpc3NldCgkdHJlZSkgJiYgJHRyZWUpew0KCQkJJHRoaXMtPmN1cnJlbnR0cmVlID0gJHRyZWU7DQoJCQkvLyB0aGlzIHNhdmVzIHRoZSBzZWxlY3RlZCBpdGVtIGZvciBlYWNoIGxldmVsDQoJCQkkdGhpcy0+cGxjdXJyZW50WyR0cmVlLT5fX3doYXRdID0gJHRyZWUtPmFsaWFzOw0KCQkJd2hpbGUoaXNzZXQoJHRyZWUtPnBhcmVudF9vYmplY3QpKXsNCgkJCQkkdHJlZSA9ICR0cmVlLT5wYXJlbnRfb2JqZWN0Ow0KCQkJCSR0aGlzLT5wbGN1cnJlbnRbJHRyZWUtPl9fd2hhdF0gPSAkdHJlZS0+YWxpYXM7DQoJCQl9DQoJCX0NCgl9DQoJZnVuY3Rpb24gZnVuY3Rpb25fbW9kYnJlYWRjcnVtYnMoJHBhcmFtcywgJiRzbWFydHkpew0KCQkvLyByZWdpc3RlcmVkIHNtYXJ0eSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyBicmVhZGNydW1icw0KCQkvLyB1c2VzIHNpbWlsYXIgcGFyYW1ldGVycyB0byB0aGUgY29yZSBicmVhZGNydW1icyBmdW5jdGlvbg0KCQlpZighJHRoaXMtPmN1cnJlbnR0cmVlKQkJJHRoaXMtPmJ1aWxkR2xvYmFsVHJlZSgpOw0KCQkNCgkJaWYoJHRoaXMtPmN1cnJlbnR0cmVlKXsNCgkJCWdsb2JhbCAkZ0NtczsNCgkJCSRyZXR1cm5pZCA9ICRnQ21zLT52YXJpYWJsZXNbImNvbnRlbnRfaWQiXTsNCgkJCS8vIHdlIGNyZWF0ZSB0aGUgYnJlYWRjcnVtYnMNCgkJCSRjbGFzc2lkID0gaXNzZXQoJHBhcmFtc1siY2xhc3NpZCJdKT8iIGNsYXNzPVwiIi4kcGFyYW1zWyJjbGFzc2lkIl0uIlwiIjoiIjsNCgkJCSRjdXJyZW50Y2xhc3NpZCA9IGlzc2V0KCRwYXJhbXNbImN1cnJlbnRjbGFzc2lkIl0pPyIgY2xhc3M9XCIiLiRwYXJhbXNbImN1cnJlbnRjbGFzc2lkIl0uIlwiIjoiIGNsYXNzPVwibGFzdGl0ZW1cIiI7DQoJCQkkc3RhcnRsZXZlbCA9IGlzc2V0KCRwYXJhbXNbInN0YXJ0bGV2ZWwiXSk/JHRoaXMtPmdldF9uZXh0bGV2ZWwoJHBhcmFtc1sic3RhcnRsZXZlbCJdLCBmYWxzZSk6ZmFsc2U7DQoJCQkkZGVsaW1pdGVyID0gaXNzZXQoJHBhcmFtc1siZGVsaW1pdGVyIl0pPyRwYXJhbXNbImRlbGltaXRlciJdOiR0aGlzLT5MYW5nKCJicmVhZGNydW1ic19kZWxpbWl0ZXIiKTsNCgkJCSRpbml0aWFsID0gaXNzZXQoJHBhcmFtc1siaW5pdGlhbCJdKT8kcGFyYW1zWyJpbml0aWFsIl06JHRoaXMtPkxhbmcoInlvdWFyZWhlcmUiKTsNCg0KCQkJJG91dHB1dCA9ICIiOw0KCQkJJGN1cnJlbnQgPSAkdGhpcy0+Y3VycmVudHRyZWU7DQoJCQkkZ29pbmdvbiA9IGZhbHNlOw0KCQkJd2hpbGUoaXNzZXQoJGN1cnJlbnQtPnBhcmVudF9vYmplY3QpKXsNCgkJCQkkY3VycmVudCA9ICRjdXJyZW50LT5wYXJlbnRfb2JqZWN0Ow0KCQkJCWlmKCRjdXJyZW50LT5fX3doYXQgPT0gJHN0YXJ0bGV2ZWwpCSRlbmRlZCA9IHRydWU7DQoJCQkJaWYoISRlbmRlZCl7DQoJCQkJCSRwYXJhbXMgPSBhcnJheSgid2hhdCI9PiR0aGlzLT5nZXRfbmV4dGxldmVsKCRjdXJyZW50LT5fX3doYXQpLCAicGFyZW50Ij0+JGN1cnJlbnQtPmFsaWFzKTsNCgkJCQkJJHByZXR0eXVybCA9ICR0aGlzLT5CdWlsZFByZXR0eVVybHMoJHBhcmFtcywgJHJldHVybmlkKTsNCgkJCQkJJG91dHB1dCA9ICI8c3BhbiIuJGNsYXNzaWQuIj4iLiR0aGlzLT5DcmVhdGVMaW5rKCIiLCAiZGVmYXVsdCIsICRyZXR1cm5pZCwgJGN1cnJlbnQtPm5hbWUsICRwYXJhbXMsICIiLCBmYWxzZSwgZmFsc2UsICIiLCBmYWxzZSwgJHByZXR0eXVybCkuIjwvc3Bhbj4iLiRkZWxpbWl0ZXIuJG91dHB1dDsNCgkJCQl9DQoJCQl9DQoJCQlpZigkb3V0cHV0ICE9ICIiKSAkb3V0cHV0ID0gJGluaXRpYWwuJG91dHB1dC4iPHNwYW4iLiRjdXJyZW50Y2xhc3NpZC4iPiIuJHRoaXMtPmN1cnJlbnR0cmVlLT5uYW1lLiI8L3NwYW4+IjsNCgkJCQ0KCQkJaWYoaXNzZXQoJHBhcmFtc1siYXNzaWduIl0pICYmICRwYXJhbXNbImFzc2lnbiJdICE9ICIiKXsNCgkJCQkkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1siYXNzaWduIl0sICRvdXRwdXQpOw0KCQkJfWVsc2V7DQoJCQkJZWNobyAkb3V0cHV0Ow0KCQkJfQ0KCQl9DQoJfQ0KCWZ1bmN0aW9uIGZ1bmN0aW9uX2dldF9sZXZlbGl0ZW0oJHBhcmFtcywgJiRzbWFydHkpew0KCQkvLyByZWdpc3RlcmVkIHNtYXJ0eSBmdW5jdGlvbiB0aGF0IHJldHJpZXZlcyBhIGdpdmVuIGl0ZW0gKGFsaWFzKSBvZiBhIGdpdmVuIGxldmVsICh3aGF0KQ0KCQlpZigJIWlzc2V0KCRwYXJhbXNbImFzc2lnbiJdKSB8fCAkcGFyYW1zWyJhc3NpZ24iXSA9PSAiIiB8fCAhaXNzZXQoJHBhcmFtc1sid2hhdCJdKSB8fCAhaXNzZXQoJHBhcmFtc1siYWxpYXMiXSkgKQlyZXR1cm4gZmFsc2U7DQoJCWlmKCFpbl9hcnJheSgkcGFyYW1zWyJ3aGF0Il0sICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpKSkJcmV0dXJuIGZhbHNlOw0KCQkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHBhcmFtc1sid2hhdCJdOw0KCQkkcmVzdWx0cyA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoImFsaWFzIj0+JHBhcmFtc1siYWxpYXMiXSkpOw0KCQkkaXRlbSA9IGlzc2V0KCRyZXN1bHRzWzBdKT8kcmVzdWx0c1swXTpmYWxzZTsNCgkJJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbImFzc2lnbiJdLCAkaXRlbSk7DQoJfQ0KCWZ1bmN0aW9uIGNvdW50c29tZXRoaW5nKCR0YWJsZW5hbWUsJHdoYXQ9ImlkIiwkd2hlcmU9YXJyYXkoKSwkd2hlcmVzdHJpbmc9ZmFsc2UsJHdoZXJldmFsdWVzPWFycmF5KCksJHBhcmVudD1mYWxzZSl7DQoJCS8vIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHRhYmxlIGNvcnJlc3BvbmRpbmcgdG8gY3JpdGVyaWFzDQoJCWlmKCEkcGFyZW50ICYmIGlzc2V0KCR3aGVyZVsicGFyZW50Il0pKQl1bnNldCgkd2hlcmVbInBhcmVudCJdKTsNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQlpZigkd2hlcmVzdHJpbmcpew0KCQkJJHdoZXJlc3RyaW5nID0gIiBXSEVSRSAiLiR3aGVyZXN0cmluZzsNCgkJfWVsc2V7DQoJCQkkd2hlcmVzdHJpbmcgPSAiIjsNCgkJCSR3aGVyZXZhbHVlcyA9IGFycmF5KCk7DQoJCQlmb3JlYWNoKCR3aGVyZSBhcyAka2V5PT4kdmFsdWUpew0KCQkJCWlmKCRrZXkgPT0gInBhcmVudCIpew0KCQkJCQkkd2hlcmVzdHJpbmcgLj0gKCR3aGVyZXN0cmluZyA9PSAiIj8iIFdIRVJFICI6IiBBTkQgIikuIkEucGFyZW50PUIuaWQgQU5EIEIuYWxpYXM9PyI7DQoJCQkJfWVsc2V7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIgV0hFUkUgIjoiIEFORCAiKS4iQS4iLiRrZXkuIj0/IjsNCgkJCQl9DQoJCQkJJHdoZXJldmFsdWVzW10gPSAkdmFsdWU7DQoJCQl9DQoJCX0NCgkJJHF1ZXJ5ID0gIlNFTEVDVCBDT1VOVChBLiR3aGF0KSBvdXJjb3VudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kdGFibGVuYW1lLiIgQSI7DQoJCWlmKCRwYXJlbnQgJiYgaXNzZXQoJHdoYXRbInBhcmVudCJdKSkJJHF1ZXJ5IC49ICIsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kcGFyZW50LiIgQiI7DQoJCSRxdWVyeSAuPSAkd2hlcmVzdHJpbmc7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksJHdoZXJldmFsdWVzKTsNCgkJaWYgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCXJldHVybiAkcm93WyJvdXJjb3VudCJdOw0KCQl9ZWxzZXsNCgkJCXJldHVybiAwOw0KCQl9DQoJfQ0KCQ0KCQ0KCWZ1bmN0aW9uIGFkbWluX3BhZ2luYXRlKCRsZXZlbCwkbmJwZXJwYWdlLCRpZCwkcmV0dXJuaWQsJHBhcmFtcyl7DQoJCS8vIHNhbWUgYXMgcGFnaW5hdGUsIGJ1dCBmb3IgdGhlIGFkbWluIHBhbmVscw0KCQkkd2hlcmVjbGF1c2UgPSBhcnJheSgpOw0KCQlpZihpc3NldCgkcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il0pICYmICRwYXJhbXNbJGxldmVsLiJfc2hvd29ubHkiXSAhPSAiIikJJHdoZXJlY2xhdXNlWyJwYXJlbnQiXSA9ICRwYXJhbXNbJGxldmVsLiJfc2hvd29ubHkiXTsNCgkJJHRvdGFsID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCRsZXZlbCwiaWQiLCR3aGVyZWNsYXVzZSk7DQoJCSRuZXh0cGFnZSA9IGZhbHNlOw0KCQkkcHJldmlvdXNwYWdlID0gZmFsc2U7DQoJCSRwYWdlaW5mbyA9IGZhbHNlOw0KCQkkcGFnZXMgPSBmYWxzZTsNCgkJaWYoJG5icGVycGFnZSA+IDAgJiYgJHRvdGFsID4gJG5icGVycGFnZSl7DQoJCQkkY3VycGFnZSA9IGlzc2V0KCRwYXJhbXNbJGxldmVsLiJfcGFnZSJdKT8kcGFyYW1zWyRsZXZlbC4iX3BhZ2UiXTowOw0KCQkJJG5icGFnZXMgPSBjZWlsKCR0b3RhbC8kbmJwZXJwYWdlKTsNCgkJCSRwYWdlaW5mbyA9ICgoJGN1cnBhZ2UgKiAkbmJwZXJwYWdlKSArIDEpOw0KCQkJJHRtcGVuZCA9ICRwYWdlaW5mbyArICRuYnBlcnBhZ2UgLSAxOw0KCQkJaWYoJHRtcGVuZCA+ICR0b3RhbCkJJHRtcGVuZCA9ICR0b3RhbDsNCgkJCWlmKCR0bXBlbmQgIT0gJHBhZ2VpbmZvKQkkcGFnZWluZm8gLj0gIi0iLiR0bXBlbmQ7DQoJCQkkcGFnZWluZm8gLj0gIiAvICIuJHRvdGFsOw0KCQkJJHBhZ2VwYXJhbXMgPSBhcnJheSgiYWN0aXZlX3RhYiI9PiRsZXZlbCk7DQoJCQlpZihpc3NldCgkcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il0pICYmICRwYXJhbXNbJGxldmVsLiJfc2hvd29ubHkiXSAhPSAiIil7DQoJCQkJJHBhZ2VwYXJhbXNbJGxldmVsLiJfc2hvd29ubHkiXSA9ICRwYXJhbXNbJGxldmVsLiJfc2hvd29ubHkiXTsNCgkJCX0NCgkJCWlmKCRjdXJwYWdlID4gMCl7DQoJCQkJJHBhZ2VwYXJhbXNbJGxldmVsLiJfcGFnZSJdID0gJGN1cnBhZ2UgLSAxOw0KCQkJCSRwcmV2aW91c3BhZ2UgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJwcmV2aW91c3BhZ2UiKSwgJHBhZ2VwYXJhbXMpOw0KCQkJfQ0KCQkJaWYoJGN1cnBhZ2UgPCAoJG5icGFnZXMtMSkpew0KCQkJCSRwYWdlcGFyYW1zWyRsZXZlbC4iX3BhZ2UiXSA9ICRjdXJwYWdlICsgMTsNCgkJCQkkbmV4dHBhZ2UgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJuZXh0cGFnZSIpLCAkcGFnZXBhcmFtcyk7DQoJCQl9DQoJCQkkaSA9IDA7DQoJCQkkcGFnZXMgPSAkdGhpcy0+TGFuZygicGFnZXMiKTsNCgkJCXdoaWxlKCRpIDwgJG5icGFnZXMpew0KCQkJCWlmKCRpID4gMCkJJHBhZ2VzIC49ICImbmJzcDsgIjsNCgkJCQlpZigkaSA9PSAkY3VycGFnZSl7DQoJCQkJCSRwYWdlcyAuPSAkaTsNCgkJCQl9ZWxzZXsNCgkJCQkJJHBhZ2VwYXJhbXNbJGxldmVsLiJfcGFnZSJdID0gJGk7DQoJCQkJCSRwYWdlcyAuPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICRpLCAkcGFnZXBhcmFtcyk7DQoJCQkJfQ0KCQkJCSRpKys7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGFycmF5KCRwYWdlaW5mbywgJG5leHRwYWdlLCAkcHJldmlvdXNwYWdlLCAkcGFnZXMpOw0KCX0NCg0KCWZ1bmN0aW9uIHBhZ2luYXRlKCR3aGF0LCR0b3RhbCwkaWQsJHJldHVybmlkLCRwYXJhbXMsJGFjdGlvbj0iZGVmYXVsdCIpew0KCQkvLyBmb3IgZnJvbnRlbmQgdXNhZ2UNCgkJLy8gdGhpcyBhc3NpZ25zIHRoZSBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHBhZ2UgbWVudQ0KCQkNCgkJJG5icGVycGFnZSA9IGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKT8kcGFyYW1zWyJuYnBlcnBhZ2UiXTowOw0KCQkkbmJwZXJwYWdlID0gKGludCkgJG5icGVycGFnZTsNCgkJaWYoJG5icGVycGFnZSA9PSAwIHx8ICRuYnBlcnBhZ2UgPj0gJHRvdGFsKXsNCgkJCS8vIHdlJ3JlIG5vdCB1c2luZyBwYWdpbmF0aW9uDQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oYXJyYXkoInBhZ2Vfc2hvd2luZyI9PmZhbHNlLCJwYWdlX3RvdGFsaXRlbXMiPT5mYWxzZSwicGFnZV9wYWdlbnVtYmVycyI9PmZhbHNlLCJwYWdlX25leHQiPT5mYWxzZSwicGFnZV9wcmV2aW91cyI9PmZhbHNlKSk7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJDQoJCS8vIHdlJ3JlIHVzaW5nIHBhZ2luYXRpb24NCgkJJGN1cnBhZ2UgPSBpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSk/JHBhcmFtc1sicGFnZWluZGV4Il06MTsNCgkJJG5icGFnZXMgPSBjZWlsKCR0b3RhbC8kbmJwZXJwYWdlKTsNCgkJJHNob3dpbmcgPSAoKCgkY3VycGFnZSAtMSkgKiAkbmJwZXJwYWdlKSArIDEpOw0KCQkkdG1wZW5kID0gJHNob3dpbmcgKyAkbmJwZXJwYWdlIC0gMTsNCgkJaWYoJHRtcGVuZCA+ICR0b3RhbCkJJHRtcGVuZCA9ICR0b3RhbDsNCgkJaWYoJHRtcGVuZCAhPSAkc2hvd2luZykJJHNob3dpbmcgLj0gIi0iLiR0bXBlbmQ7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZV9zaG93aW5nIiwkc2hvd2luZyk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZV90b3RhbGl0ZW1zIiwkdG90YWwpOw0KDQoJCSRuZXdwYXJhbXMgPSAkcGFyYW1zOw0KCQkkcHJldmlvdXNsaW5rID0gZmFsc2U7DQoJCSRuZXh0bGluayA9IGZhbHNlOw0KCQlpZigkY3VycGFnZSA+IDEpew0KCQkJLy8gd2UgY3JlYXRlIHRoZSBsaW5rIHRvIHRoZSBwcmV2aW91cyBwYWdlDQoJCQkkbmV3cGFyYW1zWyJwYWdlaW5kZXgiXSA9ICRjdXJwYWdlIC0gMTsNCgkJCSRwcmV2aW91c2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICRhY3Rpb24sICRyZXR1cm5pZCwgIiZsdDsiLCAkbmV3cGFyYW1zLCAiIiwgZmFsc2UsIHRydWUsICIgY2xhc3M9XCJwcmV2aW91c2xpbmtcIiIsIGZhbHNlLCAoJGFjdGlvbiAhPSAiZGVmYXVsdCIpPyIiOiR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJHJldHVybmlkKSk7DQoJCX0NCgkJaWYoJGN1cnBhZ2UgPCAkbmJwYWdlcyl7DQoJCQkvLyB3ZSBjcmVhdGUgdGhlIGxpbmsgdG8gdGhlIG5leHQgcGFnZQ0KCQkJJG5ld3BhcmFtc1sicGFnZWluZGV4Il0gPSAkY3VycGFnZSArIDE7DQoJCQkkbmV4dGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICRhY3Rpb24sICRyZXR1cm5pZCwgIiZndDsiLCAkbmV3cGFyYW1zLCAiIiwgZmFsc2UsIHRydWUsICIgY2xhc3M9XCJuZXh0bGlua1wiIiwgZmFsc2UsICgkYWN0aW9uICE9ICJkZWZhdWx0Iik/IiI6JHRoaXMtPkJ1aWxkUHJldHR5VXJscygkbmV3cGFyYW1zLCAkcmV0dXJuaWQpKTsNCgkJfQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2VfbmV4dCIsJG5leHRsaW5rKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYWdlX3ByZXZpb3VzIiwkcHJldmlvdXNsaW5rKTsJDQoJCQkJDQoJCS8vIHdlIGNyZWF0ZSBsaW5rcyBmb3IgZWFjaCBwYWdlIG51bWJlcg0KCQkkaSA9IDE7DQoJCSRsaW5rcyA9IGFycmF5KCk7DQoJCXdoaWxlKCRpIDw9ICRuYnBhZ2VzICYmICRuYnBhZ2VzID4gMSl7DQoJCQkkbmV3cGFyYW1zWyJwYWdlaW5kZXgiXSA9ICRpOw0KCQkJaWYoJGkgPT0gJGN1cnBhZ2Upew0KCQkJCSRsaW5rc1tdID0gIjxhIGNsYXNzPVwicGFnZW51bWJlciBjdXJyZW50XCI+Ii4kaS4iPC9hPiI7DQoJCQl9ZWxzZXsNCgkJCQkkbGlua3NbXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJGFjdGlvbiwgJHJldHVybmlkLCAkaSwgJG5ld3BhcmFtcywgIiIsIGZhbHNlLCB0cnVlLCAiIGNsYXNzPVwicGFnZW51bWJlclwiIiwgZmFsc2UsICgkYWN0aW9uICE9ICJkZWZhdWx0Iik/IiI6JHRoaXMtPkJ1aWxkUHJldHR5VXJscygkbmV3cGFyYW1zLCAkcmV0dXJuaWQpKTsNCgkJCX0NCgkJCSRpKys7DQoJCX0NCgkJJGkgPSAwOw0KCQkkdG1wZmxhZyA9IHRydWU7DQoJCSRtYXhwYWdlcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJtYXhzaG93bnBhZ2VzIiw3KTsNCgkJJG1heHBhZ2VzID0gKGludCkgJG1heHBhZ2VzOw0KCQkkcGFnZW1lbnUgPSAiIjsNCgkJaWYoJG1heHBhZ2VzIDwgMSkJJG1heHBhZ2VzID0gOTk5Ow0KCQl3aGlsZSgkaSA8IGNvdW50KCRsaW5rcykpew0KCQkJaWYoJGkgPCAoJG1heHBhZ2VzLTEpIHx8ICRuYnBhZ2VzIDw9ICRtYXhwYWdlcyl7DQoJCQkJJHBhZ2VtZW51IC49ICgkcGFnZW1lbnUgPT0gIiI/IiI6JHRoaXMtPkxhbmcoInBhZ2VtZW51ZGVsaW1pdGVyIikpLiRsaW5rc1skaV07DQoJCQl9ZWxzZWlmKCRpID09IGNvdW50KCRsaW5rcykpew0KCQkJCSRwYWdlbWVudSAuPSAkbGlua3NbJGldOw0KCQkJfWVsc2VpZigkdG1wZmxhZyl7DQoJCQkJJHRtcGZsYWcgPSBmYWxzZTsNCgkJCQkkcGFnZW1lbnUgLj0gIjxzcGFuIGNsYXNzPVwicGFnZW1lbnVvdmVyZmxvd1wiPiIuJHRoaXMtPkxhbmcoInBhZ2VtZW51b3ZlcmZsb3ciKS4iPC9zcGFuPiI7DQoJCQl9DQoJCQkkaSsrOw0KCQl9DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZV9wYWdlbnVtYmVycyIsJHBhZ2VtZW51KTsNCgl9DQoNCglmdW5jdGlvbiBnZXRfZGlzdGFuY2V0b2xldmVsKCRwYXJlbnRuYW1lLCRjaGlsZG5hbWU9ZmFsc2Upew0KCQkvLyBnZXQgdGhlIGRpc3RhbmNlIGJldHdlZW4gdHdvIGxldmVscyAobW9zdCBsaWtlbHkgYmV0d2VlbiBhIGxldmVsIGFuZCB0aGUgZmluYWwgbGV2ZWwpDQoJCSRsZXZlbHMgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsNCgkJaWYoISRjaGlsZG5hbWUpCSRjaGlsZG5hbWUgPSAkbGV2ZWxzW2NvdW50KCRsZXZlbHMpLTFdOw0KCQkkcGFyZW50cG9zaXRpb24gPSBmYWxzZTsNCgkJJGNoaWxkcG9zaXRpb24gPSBmYWxzZTsNCgkJJGNvdW50ZXIgPSAwOw0KCQlmb3JlYWNoKCRsZXZlbHMgYXMgJGxldmVsKXsNCgkJCSRjb3VudGVyKys7DQoJCQlpZigkbGV2ZWwgPT0gJHBhcmVudG5hbWUpICRwYXJlbnRwb3NpdGlvbiA9ICRjb3VudGVyOw0KCQkJaWYoJGxldmVsID09ICRjaGlsZG5hbWUpICRjaGlsZHBvc2l0aW9uID0gJGNvdW50ZXI7DQoJCX0NCgkJaWYoJGNoaWxkcG9zaXRpb24gJiYgJHBhcmVudHBvc2l0aW9uKXsNCgkJCXJldHVybiBhYnMoJHBhcmVudHBvc2l0aW9uIC0gJGNoaWxkcG9zaXRpb24pOw0KCQl9DQoJfQ0KCWZ1bmN0aW9uIGdldF9uZXh0bGV2ZWwoJGN1cmxldmVsLCRmaW5kY2hpbGQ9dHJ1ZSl7DQoJCS8vIHJldHVybiB0aGUgbmFtZSBvZiB0aGUgbGV2ZWwgYmVsb3cgKCRmaW5kY2hpbGQ9dHJ1ZSkgb3IgYWJvdmUgKCRmaW5kY2hpbGQ9ZmFsc2UpDQoJCSRsZXZlbHMgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsNCgkJJGkgPSAwOw0KCQkkd2FudGVkbGV2ZWwgPSBmYWxzZTsNCgkJd2hpbGUoJGkgPCBjb3VudCgkbGV2ZWxzKSl7DQoJCQkkbmV4dCA9ICRmaW5kY2hpbGQ/JGkrMTokaS0xOw0KCQkJaWYoJGxldmVsc1skaV0gPT0gJGN1cmxldmVsICYmIGlzc2V0KCRsZXZlbHNbJG5leHRdKSkgJHdhbnRlZGxldmVsID0gJGxldmVsc1skbmV4dF07DQoJCQkkaSsrOw0KCQl9DQoJCXJldHVybiAkd2FudGVkbGV2ZWw7DQoJfQ0KCWZ1bmN0aW9uIGdldF9wYXJlbnRzKCRwYXJlbnRuYW1lLCRjaGlsZG5hbWUsJGNoaWxkaWQpew0KCQkvLyB3aGVuIHVzaW5nIHRoZSBzaGFyZWNoaWxkcmVuIG9wdGlvbiwgcmV0cmlldmVzIHRoZSBwYXJlbnRzIG9mIGEgZ2l2ZW4gZWxlbWVudA0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRxdWVyeSA9ICJTRUxFQ1QgIi4kcGFyZW50bmFtZS4iX2lkIHBhcmVudGlkIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiR0aGlzLT5HZXROYW1lKCkuIl8iLiRwYXJlbnRuYW1lLiJfaGFzXyIuJGNoaWxkbmFtZS4iIFdIRVJFICIuJGNoaWxkbmFtZS4iX2lkPT8iOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRjaGlsZGlkKSk7DQoJCSRwYXJlbnRzID0gYXJyYXkoKTsNCgkJd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCSRwYXJlbnRzW10gPSAkcm93WyJwYXJlbnRpZCJdOw0KCQl9DQoJCXJldHVybiAkcGFyZW50czsNCgl9DQoJZnVuY3Rpb24gZ2V0X29wdGlvbnMoJHRhYmxlbmFtZSwkb25seWFjdGl2ZT1mYWxzZSwkZnVsbG9iamVjdD1mYWxzZSl7DQoJCS8vIHJldHVybnMgdGhlIGVsZW1lbnRzIG9mIGFueSB0YWJsZSBhcyBvcHRpb25zIHRvIHVzZSBmb3IgYSBkcm9wZG93biBsaXN0DQoJCS8vIHJldHVybnMgYW4gYXJyYXkgb2YgJGxhYmVsPT4kdmFsdWUNCgkJJG9yZGVyYnluYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoIm9yZGVyYnluYW1lIixmYWxzZSk7DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAiLigkZnVsbG9iamVjdD8iKiI6ImlkLCBuYW1lIikuIiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kdGFibGVuYW1lOw0KCQlpZigkb25seWFjdGl2ZSkJJHF1ZXJ5IC49ICIgV0hFUkUgYWN0aXZlPTEiOw0KCQkkcXVlcnkgLj0gIiBPUkRFUiBCWSAiLigkb3JkZXJieW5hbWU/Im5hbWUiOiJpdGVtX29yZGVyIik7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCQkkb3B0aW9ucyA9IGFycmF5KCk7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQlpZigkZnVsbG9iamVjdCl7DQoJCQkJJG9iaiA9IG5ldyBTdGRDbGFzcygpOw0KCQkJCWZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpCSRvYmotPiRrZXkgPSAkdmFsdWU7DQoJCQkJJG9wdGlvbnNbXSA9ICRvYmo7DQoJCQl9ZWxzZXsNCgkJCQkkb3B0aW9uc1skcm93WyJuYW1lIl1dID0gJHJvd1siaWQiXTsNCgkJCX0NCgkJfQ0KCQkNCgkJcmV0dXJuICRvcHRpb25zOw0KCX0NCglmdW5jdGlvbiBnZXRfZmllbGRvcHRpb25zKCRmaWVsZCwkZnVsbG9iamVjdD1mYWxzZSl7DQoJCS8vIHJldHVybnMgZmllbGQgb3B0aW9ucyBhcyBvcHRpb25zIHRvIHVzZSBmb3IgYSBkcm9wZG93biBsaXN0DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiR0aGlzLT5HZXROYW1lKCkuIl9maWVsZG9wdGlvbnMgV0hFUkUgZmllbGQ9PyBPUkRFUiBCWSBpdGVtX29yZGVyIjsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkZmllbGQpKTsNCgkJJG9wdGlvbnMgPSBhcnJheSgpOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJaWYoJGZ1bGxvYmplY3Qpew0KCQkJCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkJCQlmb3JlYWNoKCRyb3cgYXMgJGtleT0+JHZhbHVlKQkkb2JqLT4ka2V5ID0gJHZhbHVlOw0KCQkJCSRvcHRpb25zW10gPSAkb2JqOw0KCQkJfWVsc2V7DQoJCQkJJG9wdGlvbnNbJHJvd1sibmFtZSJdXSA9ICRyb3dbImlkIl07DQoJCQl9DQoJCX0NCgkJDQoJCXJldHVybiAkb3B0aW9uczsNCgl9DQoJZnVuY3Rpb24gZ2V0X3BhZ2VpZCgkYWxpYXMpew0KCQkvLyByZXR1cm5zIHRoZSBwYWdlIGlkIGZyb20gYW4gYWxpYXMNCgkJZ2xvYmFsICRnQ21zOw0KCQkkbWFuYWdlciA9JiAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOw0KCQkkbm9kZSA9JiAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUFsaWFzKCRhbGlhcyk7DQoJCWlmIChpc3NldCgkbm9kZSkpIHsNCgkJCSRjb250ZW50ID0mICRub2RlLT5HZXRDb250ZW50KCk7CQ0KCQkJaWYgKGlzc2V0KCRjb250ZW50KSkJcmV0dXJuICRjb250ZW50LT5JZCgpOw0KCQl9ZWxzZXsNCgkJCSRub2RlID0mICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5SWQoJGFsaWFzKTsNCgkJCWlmIChpc3NldCgkbm9kZSkpIHJldHVybiAkYWxpYXM7DQoJCX0NCgl9DQoJZnVuY3Rpb24gYWRkZnJvbnRlbmR1cmxzKCRpdGVtLCRwYXJhbXMsJGlkLCRyZXR1cm5pZCl7DQoJCS8vIGFkZHMgJGl0ZW0tPmRldGFpbGxpbmsgYW5kICRpdGVtLT5kZXRhaWx1cmwgdG8gYSBnaXZlbiAkaXRlbQ0KCQkkbmV4dGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJGl0ZW0tPl9fd2hhdCk7DQoJCWlmKCEkbmV4dGxldmVsKXsNCgkJCSRuZXdwYXJhbXMgPSBhcnJheSgid2hhdCI9PiRpdGVtLT5fX3doYXQsICJhbGlhcyI9PiRpdGVtLT5hbGlhcyk7DQoJCX1lbHNlew0KCQkJJG5ld3BhcmFtcyA9IGFycmF5KCJ3aGF0Ij0+JG5leHRsZXZlbCwgInBhcmVudCI9PiRpdGVtLT5hbGlhcyk7DQoJCQlpZihpc3NldCgkcGFyYW1zWyJmb3JjZWxpc3QiXSkgJiYgJHBhcmFtc1siZm9yY2VsaXN0Il0pCSRuZXdwYXJhbXNbImZvcmNlbGlzdCJdID0gdHJ1ZTsNCgkJCWlmKGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSAmJiAkcGFyYW1zWyJuYnBlcnBhZ2UiXSA+IDApCSRuZXdwYXJhbXNbIm5icGVycGFnZSJdID0gJHBhcmFtc1sibmJwZXJwYWdlIl07DQoJCQlpZihpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSkgJiYgJHBhcmFtc1sicGFnZWluZGV4Il0gPiAxKQkkbmV3cGFyYW1zWyJwYWdlaW5kZXgiXSA9ICRwYXJhbXNbInBhZ2VpbmRleCJdOw0KCQl9DQoJCSRpbmxpbmUgPSAoaXNzZXQoJHBhcmFtc1siaW5saW5lIl0pICYmICRwYXJhbXNbImlubGluZSJdKT90cnVlOmZhbHNlOw0KCQlpZigkaW5saW5lKQkkbmV3cGFyYW1zWyJpbmxpbmUiXSA9IHRydWU7DQoJCSRpdGVtLT5kZXRhaWxsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdCIsICRyZXR1cm5pZCwgJGl0ZW0tPm5hbWUsICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQkkaXRlbS0+ZGV0YWlsdXJsID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdCIsICRyZXR1cm5pZCwgIiIsICRuZXdwYXJhbXMsICIiLCB0cnVlLCAkaW5saW5lLCAiIiwgZmFsc2UsICR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJHJldHVybmlkKSk7DQoJCXJldHVybiAkaXRlbTsNCgl9DQoJZnVuY3Rpb24gYWRkQ2FydFVybHMoJGl0ZW1saXN0LCRpZCwkcmV0dXJuaWQpew0KCQkvLyBmb3IgZXZlbnR1YWwgdXNlIHdpdGggQ2FydE1hZGVTaW1wbGUNCgkJLy8gaG93ZXZlciwgaW50ZWdyYXRpb24gcmVxdWlyZXMgY2hhbmdlcyB0byBDYXJ0TWFkZVNpbXBsZQ0KCQkkQ2FydE1hZGVTaW1wbGUgPSBmYWxzZTsNCgkJaWYgKGlzc2V0KCRnQ21zLT5tb2R1bGVzWyJDYXJ0TWFkZVNpbXBsZSJdKSAmJiAkZ0Ntcy0+bW9kdWxlc1siQ2FydE1hZGVTaW1wbGUiXVsiYWN0aXZlIl0pCSRDYXJ0TWFkZVNpbXBsZSA9ICRnQ21zLT5tb2R1bGVzWyJDYXJ0TWFkZVNpbXBsZSJdWyJvYmplY3QiXTsNCgkJaWYoISRDYXJ0TWFkZVNpbXBsZSkJcmV0dXJuICRpdGVtbGlzdDsNCgkJJGNhcnRwYXJhbXMgPSBhcnJheSgicGVyZmFjdGlvbiI9PiJhZGRfcHJvZHVjdCIsICJxdHkiPT4xLCAicmV0dXJubW9kIj0+JHRoaXMtPkdldE5hbWUoKSk7DQoJCSRuZXdsaXN0ID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pew0KCQkJJGNhcnRwYXJhbXNbInByb2R1Y3RfaWQiXSA9ICRpdGVtLT5pZDsNCgkJCSRjYXJ0cGFyYW1zWyJuYW1lIl0gPSAkaXRlbS0+bmFtZTsNCgkJCSRpdGVtLT5hZGR0b2NhcnRsaW5rID0gJENhcnRNYWRlU2ltcGxlLT5DcmVhdGVMaW5rKCRpZCwgImNhcnQiLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJhZGR0b2NhcnQiKSwgJGNhcnRwYXJhbXMpOw0KCQkJJGl0ZW0tPmFkZHRvY2FydHVybCA9ICRDYXJ0TWFkZVNpbXBsZS0+Q3JlYXRlTGluaygkaWQsICJjYXJ0IiwgJHJldHVybmlkLCAiIiwgJGNhcnRwYXJhbXMsICIiLCB0cnVlKTsNCgkJCWFycmF5X3B1c2goJG5ld2xpc3QsICRpdGVtKTsNCgkJfQ0KCQlyZXR1cm4gJG5ld2xpc3Q7DQoJfQ0KCWZ1bmN0aW9uIGFkZGFkbWlubGlua3MoJGl0ZW0sJHBhcmFtcywkaWQsJHJldHVybmlkKXsNCgkJLy8gYWRkcyB0aGUgYWRtaW4gbGlua3MgdG8gdGhlIGxldmVsIGl0ZW1zLi4uDQoJCS8qICRwYXJhbXMgOiB0aGUgYmFzZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWRtaW4gbGlua3MNCgkJCQlwcmVmaXgNCgkJCQl0YWJsZW5hbWUNCgkJCQljaGlsZCAoaWYgdGhlIGxldmVsIGhhcyBhIGNoaWxkIGxldmVsLCB0aGUgbmFtZSBvZiB0aGUgY2hpbGQgbGV2ZWwpDQoJCQkJbGV2ZWxuYW1lDQoJCQkJcGFyZW50ZGVmYXVsdCAoYm9vbC4uLiB3aGV0aGVyIG9yIG5vdCB0aGVyZSBpcyBhIGRlZmF1bHQgZWxlbWVudCBmb3IgZWFjaCBwYXJlbnQpDQoJCQkJb3JkZXJieXBhcmVudCAoYm9vbCkNCgkJCQlhZGRmaWxlcw0KCQkJCXNoYXJlY2hpbGRyZW4gKGJvb2wpDQoJCQkJc2hhcmVkYnlwYXJlbnRzIChib29sKQ0KCQkJCWZpbGVzIChzdHJpbmcsY3N2KQ0KCQkqLw0KDQoJCWdsb2JhbCAkZ0NtczsNCgkJJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJCQ0KCQlpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoInJlc3RyaWN0X3Blcm1pc3Npb25zIixmYWxzZSkgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHRoaXMtPkdldE5hbWUoKS4iX2FkdmFuY2VkIikgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHRoaXMtPkdldE5hbWUoKS4iX21hbmFnZV8iLiRwYXJhbXNbImxldmVsbmFtZSJdKSApew0KCQkJLy8gbm8gYWNjZXNzIC0gd2UgZG9uJ3QgY3JlYXRlIGxpbmtzDQoJCQkkaXRlbS0+ZWRpdGxpbmsgPSAkaXRlbS0+bmFtZTsNCgkJCSRpdGVtLT5kZWxldGVsaW5rID0gIiI7DQoJCQkkaXRlbS0+bW92ZWxpbmtzID0gIiI7DQoJCQkkaXRlbS0+dG9nZ2xlYWN0aXZlID0gJGl0ZW0tPmFjdGl2ZT09MT8kYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vdHJ1ZS5naWYiLCIiLCIiLCIiLCJzeXN0ZW1pY29uIik6JGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZiIsIiIsIiIsIiIsInN5c3RlbWljb24iKTsNCgkJCSRpdGVtLT50b2dnbGVkZWZhdWx0ID0gJGl0ZW0tPmlzZGVmYXVsdD09MT8kYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vdHJ1ZS5naWYiLCIiLCIiLCIiLCJzeXN0ZW1pY29uIik6JGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZiIsIiIsIiIsIiIsInN5c3RlbWljb24iKTsNCgkJCXJldHVybiAkaXRlbTsNCgkJfQ0KCQkNCgkJJHByZWZpeCA9ICRwYXJhbXNbInByZWZpeCJdOw0KCQkkbW92ZXBhcmFtcyA9ICRwYXJhbXM7DQoJCSRtb3ZlcGFyYW1zWyRwcmVmaXguImlkIl0gPSAkaXRlbS0+aWQ7DQoJCSRtb3ZlcGFyYW1zWyJjdXJyZW50b3JkZXIiXSA9ICRpdGVtLT5pdGVtX29yZGVyOw0KCQlpZihpc3NldCgkbW92ZXBhcmFtc1siZmlsZXMiXSkpCXVuc2V0KCRtb3ZlcGFyYW1zWyJmaWxlcyJdKTsNCgkJaWYoJG1vdmVwYXJhbXNbIm9yZGVyYnlwYXJlbnQiXSAmJiBpc3NldCgkaXRlbS0+cGFyZW50X2lkKSkgJG1vdmVwYXJhbXNbInBhcmVudCJdID0gJGl0ZW0tPnBhcmVudF9pZDsNCg0KCQkkaXRlbS0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJlZGl0Ii4kcHJlZml4LCAkcmV0dXJuaWQsICRpdGVtLT5uYW1lLCBhcnJheSgkcHJlZml4LiJpZCI9PiRpdGVtLT5pZCkpOw0KCQkkaXRlbS0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgIm1vdmVzb21ldGhpbmciLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIixsYW5nKCJkZWxldGUiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgibW92ZSI9PiJkZWxldGUiLCJmaWxlcyI9PiRwYXJhbXNbImZpbGVzIl0pLCRtb3ZlcGFyYW1zKSwkdGhpcy0+TGFuZygicHJvbXB0X2RlbGV0ZSIuJHBhcmFtc1sibGV2ZWxuYW1lIl0sIHN0cl9yZXBsYWNlKCInIiwiXCciLCRpdGVtLT5uYW1lKSkpOw0KCQkkaXRlbS0+bW92ZXVwbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgIm1vdmVzb21ldGhpbmciLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9hcnJvdy11LmdpZiIsbGFuZygidXAiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgibW92ZSI9PiJ1cCIpLCRtb3ZlcGFyYW1zKSk7DQoJCSRpdGVtLT5tb3ZlZG93bmxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJtb3Zlc29tZXRoaW5nIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vYXJyb3ctZC5naWYiLGxhbmcoImRvd24iKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgibW92ZSI9PiJkb3duIiksJG1vdmVwYXJhbXMpKTsNCgkJJGl0ZW0tPm1vdmVsaW5rcyA9ICRpdGVtLT5tb3ZldXBsaW5rIC4iICIuICRpdGVtLT5tb3ZlZG93bmxpbms7DQoJCQ0KCQkvLyB3ZSByZWJ1aWxkIHRoZSBwYXJhbXMsIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCBzbyBtYW55IGZvciB0aGUgdG9nZ2xlIGFjdGlvbg0KCQkkdG9nZ2xlcGFyYW1zID0gYXJyYXkoJHByZWZpeC4iaWQiPT4kaXRlbS0+aWQsICJwcmVmaXgiPT4kcHJlZml4LCAidGFibGVuYW1lIj0+JHBhcmFtc1sidGFibGVuYW1lIl0sICJsZXZlbG5hbWUiPT4kcGFyYW1zWyJsZXZlbG5hbWUiXSk7DQoJCWlmKCRwYXJhbXNbInBhcmVudGRlZmF1bHQiXSAmJiBpc3NldCgkaXRlbS0+cGFyZW50X2lkKSl7DQoJCQkkdG9nZ2xlcGFyYW1zWyJwYXJlbnQiXSA9ICRpdGVtLT5wYXJlbnRfaWQ7DQoJCQkkdG9nZ2xlcGFyYW1zWyJwYXJlbnRkZWZhdWx0Il0gPSAxOw0KCQl9DQoJCWlmICgkaXRlbS0+YWN0aXZlID09IDEpew0KCQkJJGl0ZW0tPnRvZ2dsZWFjdGl2ZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInRvZ2dsZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL3RydWUuZ2lmIixsYW5nKCJzZXRmYWxzZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKGFycmF5KCJ3aGF0Ij0+ImFjdGl2ZSIsIm5ld3ZhbCI9PjApLCR0b2dnbGVwYXJhbXMpKTsNCgkJfWVsc2V7DQoJCQkkaXRlbS0+dG9nZ2xlYWN0aXZlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAidG9nZ2xlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIixsYW5nKCJzZXR0cnVlIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIndoYXQiPT4iYWN0aXZlIiwibmV3dmFsIj0+MSksJHRvZ2dsZXBhcmFtcykpOw0KCQl9DQoNCgkJaWYgKCRpdGVtLT5pc2RlZmF1bHQgPT0gMSl7DQoJCQkkaXRlbS0+dG9nZ2xlZGVmYXVsdCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInRvZ2dsZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL3RydWUuZ2lmIixsYW5nKCJzZXRmYWxzZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKGFycmF5KCJ3aGF0Ij0+ImRlZmF1bHQiLCJuZXd2YWwiPT4wKSwkdG9nZ2xlcGFyYW1zKSk7DQoJCX1lbHNlew0KCQkJJGl0ZW0tPnRvZ2dsZWRlZmF1bHQgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ0b2dnbGUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9mYWxzZS5naWYiLGxhbmcoInNldHRydWUiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgid2hhdCI9PiJkZWZhdWx0IiwibmV3dmFsIj0+MSksJHRvZ2dsZXBhcmFtcykpOw0KCQl9DQoJCXJldHVybiAkaXRlbTsNCgl9DQoJZnVuY3Rpb24gZ2V0YWRkZmlsZXMoJGZpZWxkbmFtZSwkaXRlbWlkLCRhZG1pbj1mYWxzZSwkYWRkdGh1bWI9ZmFsc2Upew0KCQkvLyByZXR1cm4gdGhlIGZpbGUgb2JqZWN0cyBmb3IgZmllbGRzIG9mIHVuZGVmaW5lZCBhbW91bnQgb2YgZmlsZXMNCgkJZ2xvYmFsICRnQ21zOw0KCQlpZigkYWRtaW4pCSRhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRxdWVyeSA9ICJTRUxFQ1QgZmlsZWlkLCBmaWxlcGF0aCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfbXVsdGlwbGVmaWxlc2ZpZWxkcyBXSEVSRSBpdGVtaWQ9PyBBTkQgZmllbGRuYW1lPT8iOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSggJGl0ZW1pZCwgJGZpZWxkbmFtZSApKTsNCgkJJGZpbGVzID0gYXJyYXkoKTsNCgkJd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCSRmaWxlID0gbmV3IHN0ZENsYXNzKCk7DQoJCQkkZmlsZS0+ZmlsZWlkID0gJHJvd1siZmlsZWlkIl07DQoJCQkkZmlsZS0+ZmlsZXBhdGggPSAoc3Vic3RyKCRyb3dbImZpbGVwYXRoIl0sMCwxKT09Ii8iPyIiOiIvIikuJHJvd1siZmlsZXBhdGgiXTsNCgkJCSRmaWxlLT51cmwgPSAkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3VybCJdLiRmaWxlLT5maWxlcGF0aDsNCgkJCSRpbmZvID0gJHRoaXMtPnBsR2V0RmlsZUluZm8oJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uJGZpbGUtPmZpbGVwYXRoKTsNCgkJCWlmKCRpbmZvKQlmb3JlYWNoKCRpbmZvIGFzICRrZXk9PiR2YWx1ZSkJJGZpbGUtPiRrZXkgPSAkdmFsdWU7DQoJCQlpZigkZmlsZS0+ZmlsZWljb24gPT0gImljb25zL2ZpbGV0eXBlcy9mcGFpbnQuZ2lmIikJJGZpbGUtPmltYWdlID0gJzxpbWcgc3JjPSInLiRmaWxlLT51cmwuJyIgYWx0PSIiLz4nOw0KCQkJaWYoJGFkbWluKQkkZmlsZS0+cGljID0gJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgkZmlsZS0+ZmlsZWljb24pOw0KCQkJaWYoJGFkZHRodW1iKQkkZmlsZS0+dGh1bWJuYWlsID0gcHJlZ19yZXBsYWNlKCIvKC4rKT9cXC8oW15cXC9dKylcXC4oLispLyIsIiQxL3BsdGh1bWJfJDIuJDMiLCRmaWxlLT51cmwpOw0KCQkJYXJyYXlfcHVzaCgkZmlsZXMsICRmaWxlKTsNCgkJfQ0KCQlyZXR1cm4gJGZpbGVzOw0KCX0NCglmdW5jdGlvbiBzcGxpdF9pbnRvX3BhZ2VzKCRpdGVtbGlzdCwgJGlkLCAkcmV0dXJuaWQsICRwYXJhbXMsICRhY3Rpb249ImRlZmF1bHQiLCAkcHJldHR5dXJscz10cnVlKXsNCgkJLy8gZGVwcmVjYXRlZCAtIHNob3VsZCB1c2UgZnVuY3Rpb24gcGFnaW5hdGUgaW5zdGVhZA0KCQlyZXR1cm4gJGl0ZW1saXN0Ow0KCX0NCglmdW5jdGlvbiBnZXRfcXVlcmllcygkd2hlcmU9YXJyYXkoKSwgJGFkbWluPWZhbHNlLCAkaWQ9ZmFsc2UsICRyZXR1cm5pZD1mYWxzZSl7DQoJCS8vIHJldHJpdmVzIHF1ZXJpZXMgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0cw0KCQlnbG9iYWwgJGdDbXM7DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiR0aGlzLT5HZXROYW1lKCkuIl9zYXZlZF9xdWVyaWVzIjsNCgkJJHdoZXJlY2xhdXNlID0gIiI7DQoJCSR3aGVyZXZhbHVlcyA9IGFycmF5KCk7DQoJCWlmKGNvdW50KCR3aGVyZSk+MCl7DQoJCQlmb3JlYWNoKCR3aGVyZSBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSR3aGVyZWNsYXVzZSAuPSAoJHdoZXJlY2xhdXNlID09ICIiPyIgV0hFUkUgIjoiIEFORCAiKS4ka2V5LiI9PyI7DQoJCQkJJHdoZXJldmFsdWVzW10gPSAkdmFsdWU7DQoJCQl9DQoJCX0NCgkJJHF1ZXJ5IC49ICR3aGVyZWNsYXVzZTsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkd2hlcmV2YWx1ZXMpOw0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJJGl0ZW0gPSBuZXcgc3RkQ2xhc3MoKTsNCgkJCWZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSRpdGVtLT4ka2V5ID0gJHZhbHVlOw0KCQkJfQ0KCQkJJGl0ZW0tPndoZXJldmFsdWVzID0gdW5zZXJpYWxpemUoJGl0ZW0tPndoZXJldmFsdWVzKTsNCgkJCWlmKCFpc19hcnJheSgkaXRlbS0+dmFsdWVzKSkJJGl0ZW0tPnZhbHVlcyA9IGFycmF5KCk7DQoJCQlpZigkYWRtaW4pew0KCQkJCSRpdGVtLT5hY3Rpb25zID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVsZXRlcXVlcnkiLCAkcmV0dXJuaWQsICRnQ21zLT52YXJpYWJsZXNbImFkbWludGhlbWUiXS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZiIsbGFuZygiZGVsZXRlIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXkoInF1ZXJ5aWQiPT4kaXRlbS0+aWQpKTsNCgkJCQkkaXRlbS0+YWN0aW9ucyAuPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ0ZXN0cXVlcnkiLCAkcmV0dXJuaWQsICRnQ21zLT52YXJpYWJsZXNbImFkbWludGhlbWUiXS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vdmlldy5naWYiLGxhbmcoInZpZXciKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheSgicXVlcnlpZCI9PiRpdGVtLT5pZCkpOw0KCQkJfQ0KCQkJJGl0ZW1saXN0W10gPSAkaXRlbTsNCgkJfQ0KCQlyZXR1cm4gKGNvdW50KCRpdGVtbGlzdCk+MD8kaXRlbWxpc3Q6ZmFsc2UpOw0KCX0NCg0KCWZ1bmN0aW9uIGNyZWF0ZUZpZWxkRm9ybSgkd2hhdCwkaWQsJGFzc2lnbj10cnVlKXsNCgkJcmVxdWlyZSAiZnVuY3Rpb24uY3JlYXRlRmllbGRGb3JtLnBocCI7DQoJfQ0KCQ0KDQoJZnVuY3Rpb24gYnVpbGRXaGVyZSgkd2hlcmU9YXJyYXkoKSwkd2hhdD0iIil7DQoJCSRtdWx0aXBsZWxpc3RmaWVsZHMgPSBhcnJheSgidmVoaWNsZV9mZWF0dXJlcyIpOw0KCQkkd2hlcmVjbGF1c2UgPSAiQS5hY3RpdmU9MSI7DQoJCSR3aGVyZXZhbHVlcyA9IGFycmF5KCk7DQoJCWZvcmVhY2goJHdoZXJlIGFzICRjbGF1c2Upew0KCQkJaWYoaW5fYXJyYXkoJHdoYXQuIl8iLiRjbGF1c2VbMF0sICRtdWx0aXBsZWxpc3RmaWVsZHMpKXsNCgkJCQkvLyBsaXN0IHdpdGggbXVsdGlwbGUgc2VsZWN0ZWQgdmFsdWVzIGFyZSBzYXZlZCBpbiBhIHNlcmlhbGl6ZWQgYXJyYXksIHNvIHdlIGhhdmUgdG8gdHdlYWsgdGhlIHZhbHVlDQoJCQkJJGNsYXVzZVsxXSA9ICciJy4kY2xhdXNlWzFdLiciJzsNCgkJCQkkY2xhdXNlWzJdID0gMTsNCgkJCX0NCgkJCWlmKCRjbGF1c2VbMF0gPT0gInBhcmVudCIpew0KCQkJCQkkY3JpdGVyaWEgPSBleHBsb2RlKCIsIiwkY2xhdXNlWzFdKTsNCgkJCQkJaWYoY291bnQoJGNyaXRlcmlhKSA+IDEpew0KCQkJCQkJJHRtcCA9ICIiOw0KCQkJCQkJZm9yZWFjaCgkY3JpdGVyaWEgYXMgJGNyaXQpew0KCQkJCQkJCSR0bXAgPSAoJHRtcD09IiI/IiI6IiBPUiAiKS4iQS5wYXJlbnQ9Ii4kY3JpdDsNCgkJCQkJCX0NCgkJCQkJCSR0bXAgPSAiIEFORCAoIi4kdG1wLiIpIjsNCgkJCQkJfWVsc2V7DQoJCQkJCQkkdG1wID0gIiBBTkQgQS5wYXJlbnQ9PyI7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICRjbGF1c2VbMV07DQoJCQkJCX0NCgkJCQkJJHdoZXJlY2xhdXNlIC49ICR0bXA7DQoJCQkJDQoJCQl9ZWxzZXsNCgkJCQlzd2l0Y2goJGNsYXVzZVsyXSl7DQoJCQkJCWNhc2UgMDoNCgkJCQkJCSR3aGVyZWNsYXVzZSAuPSAiIEFORCBBLiIuJGNsYXVzZVswXS4iPT8iOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSBhZGRzbGFzaGVzKCRjbGF1c2VbMV0pOwkJCQkJDQoJCQkJCQlicmVhazsNCgkJCQkJDQoJCQkJCWNhc2UgMToNCgkJCQkJCSR3aGVyZWNsYXVzZSAuPSAiIEFORCBBLiIuJGNsYXVzZVswXS4iIExJS0UgJyUiLmFkZHNsYXNoZXMoJGNsYXVzZVsxXSkuIiUnIjsNCgkJCQkJCWJyZWFrOw0KCQkJCQkNCgkJCQkJY2FzZSAyOg0KCQkJCQkJJHdoZXJlY2xhdXNlIC49ICIgQU5EIEEuIi4kY2xhdXNlWzBdLiIgIT0gPyI7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9IGFkZHNsYXNoZXMoJGNsYXVzZVsxXSk7DQoJCQkJCQlicmVhazsNCgkJCQkJCQ0KCQkJCQljYXNlIDM6DQoJCQkJCQkkd2hlcmVjbGF1c2UgLj0gIiBBTkQgQS4iLiRjbGF1c2VbMF0uIiA+ID8iOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSBhZGRzbGFzaGVzKCRjbGF1c2VbMV0pOwkJCQkJDQoJCQkJCQlicmVhazsNCgkJCQkJCQ0KCQkJCQljYXNlIDQ6DQoJCQkJCQkkd2hlcmVjbGF1c2UgLj0gIiBBTkQgQS4iLiRjbGF1c2VbMF0uIiA8ID8iOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSBhZGRzbGFzaGVzKCRjbGF1c2VbMV0pOwkJCQkJDQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSA1Og0KCQkJCQkJJHdoZXJlY2xhdXNlIC49ICIgQU5EIChBLiIuJGNsYXVzZVswXS4iID4gPyBBTkQgQS4iLiRjbGF1c2VbMF0uIiA8ID8pIjsNCgkJCQkJCSR3aGVyZXZhbHVlc1tdID0gYWRkc2xhc2hlcygkY2xhdXNlWzFdWzBdKTsNCgkJCQkJCSR3aGVyZXZhbHVlc1tdID0gYWRkc2xhc2hlcygkY2xhdXNlWzFdWzFdKTsNCgkJCQkJCWJyZWFrOwkJCQkJDQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCXJldHVybiBhcnJheSgkd2hlcmVjbGF1c2UsICR3aGVyZXZhbHVlcyk7DQoJfQ0KCWZ1bmN0aW9uIGdldFdoZXJlRnJvbVBhcmFtcygkcGFyYW1zLCAkaHRtbGVuY29kZWQ9ZmFsc2Upew0KCQkvLyB1c2VkIGZvciBxdWVyeSBjcmVhdGlvbiBhbmQgZnJvbnRlbmQgYWR2YW5jZWQgc2VhcmNoIGFjdGlvbg0KCQkvLyB0cmFuc2Zvcm1zIHBhcmFtZXRlcnMgaW50byAkd2hlcmUgLSBhbiBhcnJheSBvZiBjcml0ZXJpYToNCgkJLy8gJHdoZXJlW10gPSBhcnJheSgkZmllbGRuYW1lLCAkc2VhcmNodmFsdWUsICRjb21wYXJpc29uX3R5cGUpDQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHdoZXJlID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkcGFyYW1zIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQlpZihzdWJzdHIoJGtleSwwLDYpID09ICJmaWVsZF8iICYmIHRyaW0oJHZhbHVlKSAhPSAiIil7DQoJCQkJJGtleSA9IHN1YnN0cigka2V5LDYpOw0KCQkJCWlmKGlzX2FycmF5KCR2YWx1ZSkgJiYgY291bnQoJHZhbHVlKT09MSkJJHZhbHVlID0gJHZhbHVlWzBdOw0KCQkJCSRjb21wYXJlID0gaXNzZXQoJHBhcmFtc1siY29tcGFyZV8iLiRrZXldKT8kcGFyYW1zWyJjb21wYXJlXyIuJGtleV06MDsNCgkJCQlpZigkdmFsdWUgPT0gIl9fZGF0ZV9maWVsZCIpew0KCQkJCQlpZigkY29tcGFyZSAhPSAiTkEiKXsNCgkJCQkJCS8vIFRoZSBjb2RlIGlzIHN1Y2ggdGhhdCByZW1vdmluZyBhbnkgcGFydCBvZiB0aGUgdGltZSBpbnB1dCBmcm9tIHRoZSBmb3JtIHdpbGwgcmVzdWx0IGluIHVzaW5nIHRoZSBkZWZhdWx0IHZhbHVlDQoJCQkJCQkkdGltZWlucHV0cyA9IGFycmF5KCJIb3VyIj0+IkgiLCJNaW51dGUiPT4iaSIsIlNlY29uZCI9PiJzIiwiTW9udGgiPT4ibiIsIkRheSI9PiJqIiwiWWVhciI9PiJZIik7DQoJCQkJCQkkcGFydHMgPSBhcnJheSgpOw0KCQkJCQkJZm9yZWFjaCgkdGltZWlucHV0cyBhcyAkaW5wdXRuYW1lPT4kZGF0ZXBhcnQpewkNCgkJCQkJCQkkcGFydHNbXSA9IChpc3NldCgkcGFyYW1zWyJkYXRlXyIuJGtleS4iXyIuJGlucHV0bmFtZV0pKT8kcGFyYW1zWyJkYXRlXyIuJGtleS4iXyIuJGlucHV0bmFtZV06ZGF0ZSgkZGF0ZXBhcnQpOw0KCQkJCQkJfQ0KCQkJCQkJJHZhbHVlID0gbWt0aW1lKCRwYXJ0c1swXSwkcGFydHNbMV0sJHBhcnRzWzJdLCRwYXJ0c1szXSwkcGFydHNbNF0sJHBhcnRzWzVdKTsNCgkJCQkJCSR2YWx1ZSA9IHN0cl9yZXBsYWNlKCJcJyIsIiIsJGRiLT5EQlRpbWVTdGFtcCgkdmFsdWUpKTsNCgkJCQkJCQ0KCQkJCQkJaWYoJGNvbXBhcmUgPT0gNSl7DQoJCQkJCQkJJHBhcnRzID0gYXJyYXkoKTsNCgkJCQkJCQlmb3JlYWNoKCR0aW1laW5wdXRzIGFzICRpbnB1dG5hbWU9PiRkYXRlcGFydCl7CQ0KCQkJCQkJCQkkcGFydHNbXSA9IChpc3NldCgkcGFyYW1zWyJkYXRlXyIuJGtleS4iX3BhcnQyXyIuJGlucHV0bmFtZV0pKT8kcGFyYW1zWyJkYXRlXyIuJGtleS4iX3BhcnQyXyIuJGlucHV0bmFtZV06ZGF0ZSgkZGF0ZXBhcnQpOw0KCQkJCQkJCX0NCgkJCQkJCQkkdmFsdWUyID0gbWt0aW1lKCRwYXJ0c1swXSwkcGFydHNbMV0sJHBhcnRzWzJdLCRwYXJ0c1szXSwkcGFydHNbNF0sJHBhcnRzWzVdKTsNCgkJCQkJCQkkdmFsdWUyID0gc3RyX3JlcGxhY2UoIlwnIiwiIiwkZGItPkRCVGltZVN0YW1wKCR2YWx1ZTIpKTsNCgkJCQkJCQkkd2hlcmVbXSA9IGFycmF5KCRrZXksIGFycmF5KCR2YWx1ZSwkdmFsdWUyKSwgJGNvbXBhcmUpOw0KCQkJCQkJfWVsc2V7CQ0KCQkJCQkJCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgJHZhbHVlLCAkY29tcGFyZSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9ZWxzZXsNCgkJCQkJaWYoaXNfYXJyYXkoJHZhbHVlKSl7DQoJCQkJCQlmb3JlYWNoKCR2YWx1ZSBhcyAkb25ldmFsdWUpCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgJG9uZXZhbHVlLCAxKTsNCgkJCQkJfWVsc2VpZigkY29tcGFyZSA9PSAxKXsNCgkJCQkJCSRrZXl3b3JkcyA9ICR0aGlzLT5wYXJzZWtleXdvcmRzKCR2YWx1ZSk7DQoJCQkJCQlmb3JlYWNoKCRrZXl3b3JkcyBhcyAkdmFsdWUpew0KCQkJCQkJCWlmKCRodG1sZW5jb2RlZCkJJHZhbHVlID0gaHRtbF9lbnRpdHlfZGVjb2RlKCR2YWx1ZSk7DQoJCQkJCQkJJHZhbHVlID0gYWRkc2xhc2hlcygkdmFsdWUpOwkJCQkJCQkNCgkJCQkJCQkkd2hlcmVbXSA9IGFycmF5KCRrZXksICR2YWx1ZSwgJGNvbXBhcmUpOw0KCQkJCQkJfQ0KCQkJCQl9ZWxzZXsNCgkJCQkJCWlmKCRodG1sZW5jb2RlZCkJJHZhbHVlID0gaHRtbF9lbnRpdHlfZGVjb2RlKCR2YWx1ZSk7DQoJCQkJCQkkdmFsdWUgPSBhZGRzbGFzaGVzKCR2YWx1ZSk7DQoJCQkJCQkkd2hlcmVbXSA9IGFycmF5KCRrZXksICR2YWx1ZSwgJGNvbXBhcmUpOw0KCQkJCQl9DQoJCQkJfQkJCQkNCgkJCX0NCgkJfQkJDQoJCXJldHVybiAkd2hlcmU7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0X2xldmVsX3ZlaGljbGV0eXBlKCR3aGVyZT1hcnJheSgpLCRhZG1pbj1mYWxzZSwkaWQ9IiIsJHJldHVybmlkPSIiLCRvcmRlcj1mYWxzZSwkbGltaXQ9MCwkY3VzdG9td2hlcmU9ZmFsc2UsJGN1c3RvbXZhbHVlcz1hcnJheSgpLCRjdXN0b21vcmRlcj1mYWxzZSl7DQoJCWdsb2JhbCAkZ0NtczsNCgkJJGxvYWRfbmJjaGlsZHJlbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsb2FkX25iY2hpbGRyZW4iLHRydWUpOw0KCQlpZigkYWRtaW4pCSRhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCQlpZighJG9yZGVyKQkkb3JkZXIgPSAiIjsNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkZmllbGRzID0gYXJyYXkoImNsYXNzaWZpY2F0aW9uIiwiaWQiLCJuYW1lIiwiYWxpYXMiLCJpdGVtX29yZGVyIiwiYWN0aXZlIiwiaXNkZWZhdWx0Iik7DQoJCQ0KCQkkd2hlcmVzdHJpbmcgPSAiIjsNCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJDQoNCgkJaWYoJGN1c3RvbXdoZXJlKXsNCgkJCSR3aGVyZXN0cmluZyA9ICRjdXN0b213aGVyZTsNCgkJCSR3aGVyZXZhbHVlcyA9ICRjdXN0b212YWx1ZXM7DQoJCX1lbHNlew0KCQkJZm9yZWFjaCgkd2hlcmUgYXMgJGtleT0+JHZhbHVlKXsNCgkJCQlpZihpbl9hcnJheShzdHJ0b2xvd2VyKCRrZXkpLCAkZmllbGRzKSl7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiRrZXkuIj0/IjsNCgkJCQkJJHdoZXJldmFsdWVzW10gPSAkdmFsdWU7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfdmVoaWNsZXR5cGUgQSAiLigkd2hlcmVzdHJpbmcgPT0gIiI/IiI6IiBXSEVSRSAiLiR3aGVyZXN0cmluZyk7DQoJCSRxdWVyeSAuPSAoJGN1c3RvbW9yZGVyPyIgT1JERVIgQlkgIi4kY3VzdG9tb3JkZXI6IiBPUkRFUiBCWSBpdGVtX29yZGVyIik7DQoNCgkJaWYoJGxpbWl0ICYmICRsaW1pdCAhPSAiMCIgJiYgJGxpbWl0ICE9ICIiKQkkcXVlcnkgLj0gIiBMSU1JVCAiLiRsaW1pdDsNCg0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCR3aGVyZXZhbHVlcyk7DQoJCSRpdGVtbGlzdCA9IGFycmF5KCk7DQoJCSRpZGxpc3QgPSAiIjsNCgkJd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCSRpdGVtID0gbmV3IHN0ZENsYXNzKCk7DQoJCQkkaXRlbS0+X193aGF0ID0gInZlaGljbGV0eXBlIjsNCgkJCWZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSRpdGVtLT4ka2V5ID0gJHZhbHVlOw0KCQkJfQ0KCQkJJGl0ZW0tPmNsYXNzaWZpY2F0aW9uID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5jbGFzc2lmaWNhdGlvbik7DQoJCQkkaXRlbS0+bmFtZSA9IHN0cmlwc2xhc2hlcygkaXRlbS0+bmFtZSk7DQoJCQkkaXRlbS0+YWxpYXMgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPmFsaWFzKTsNCg0KCQkJaWYoJGFkbWluID09IHRydWUpew0KCQkJCS8vICRwYXJtcyB3aWxsIGJlIHRoZSBiYXNlIGZvciBwYXJhbWV0ZXJzIG9mIHRoZSBhZG1pbiBsaW5rcw0KCQkJCSRwYXJtcyA9IGFycmF5KA0KCQkJCQkicHJlZml4Ij0+IkEiLA0KCQkJCQkidGFibGVuYW1lIj0+ImF1dG9zX3ZlaGljbGV0eXBlIiwNCgkJCQkJImxldmVsbmFtZSI9PiJ2ZWhpY2xldHlwZSIsDQoJCQkJCSJjaGlsZCI9PiJhdXRvc192ZWhpY2xlIiwNCgkJCQkJInBhcmVudGRlZmF1bHQiPT5mYWxzZSwNCgkJCQkJIm9yZGVyYnlwYXJlbnQiPT50cnVlLA0KCQkJCQkiYWRkZmlsZXMiPT4iIiwNCgkJCQkJInNoYXJlY2hpbGRyZW4iPT5mYWxzZSwNCgkJCQkJInNoYXJlZGJ5cGFyZW50cyI9PmZhbHNlLA0KCQkJCQkiZmlsZXMiPT4iIg0KCQkJCQkpOw0KCQkJCSRpdGVtID0gJHRoaXMtPmFkZGFkbWlubGlua3MoJGl0ZW0sJHBhcm1zLCRpZCwkcmV0dXJuaWQpOw0KCQkJfQ0KCQkJJGlkbGlzdCAuPSAoJGlkbGlzdD09IiI/IiI6IiBPUiAiKS4iIHBhcmVudD0nIi4kaXRlbS0+aWQuIiciOw0KCQkJYXJyYXlfcHVzaCgkaXRlbWxpc3QsJGl0ZW0pOw0KCQl9DQoNCgkJaWYoJGFkbWluIHx8ICRsb2FkX25iY2hpbGRyZW4pew0KCQkJJG5iY2hpbGRyZW5zID0gYXJyYXkoKTsNCgkJCSRxdWVyeSA9ICJTRUxFQ1QgcGFyZW50LCBjb3VudChpZCkgbmJjaGlsZHJlbiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfdmVoaWNsZSBXSEVSRSAoIi4kaWRsaXN0LiIpICIuKCRhZG1pbj8iIjoiQU5EIGFjdGl2ZT0xICIpLiJHUk9VUCBCWSBwYXJlbnQiOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkJJG5iY2hpbGRyZW5zWyRyb3dbInBhcmVudCJdXSA9ICRyb3dbIm5iY2hpbGRyZW4iXTsNCgkJCSRuZXdsaXN0ID0gYXJyYXkoKTsNCgkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJCQkkaXRlbS0+bmJjaGlsZHJlbiA9IGlzc2V0KCRuYmNoaWxkcmVuc1skaXRlbS0+aWRdKT8kbmJjaGlsZHJlbnNbJGl0ZW0tPmlkXTpmYWxzZTsNCgkJCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7DQoJCQl9DQoJCQkkaXRlbWxpc3QgPSAkbmV3bGlzdDsNCgkJfQ0KCQlyZXR1cm4gJGl0ZW1saXN0Ow0KCX0NCg0KCWZ1bmN0aW9uIGdldF9sZXZlbF92ZWhpY2xlKCR3aGVyZT1hcnJheSgpLCRhZG1pbj1mYWxzZSwkaWQ9IiIsJHJldHVybmlkPSIiLCRvcmRlcj1mYWxzZSwkbGltaXQ9MCwkY3VzdG9td2hlcmU9ZmFsc2UsJGN1c3RvbXZhbHVlcz1hcnJheSgpLCRjdXN0b21vcmRlcj1mYWxzZSl7DQoJCWdsb2JhbCAkZ0NtczsNCgkJJGxvYWRfbmJjaGlsZHJlbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsb2FkX25iY2hpbGRyZW4iLHRydWUpOw0KCQlpZigkYWRtaW4pCSRhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCQlpZighJG9yZGVyKQkkb3JkZXIgPSAiIjsNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkZmllbGRzID0gYXJyYXkoInllYXIiLCJtYWtlIiwibW9kZWwiLCJtaWxhZ2UiLCJ2ZWhpY2xlY29uZGl0aW9uIiwiY29sb3IiLCJwcmljZSIsImVuZ2luZSIsImZlYXR1cmVzIiwicGljdHVyZXMiLCJtYWlucGljdHVyZSIsImRlc2NyaXB0aW9uIiwicGFyZW50IiwiaWQiLCJuYW1lIiwiYWxpYXMiLCJpdGVtX29yZGVyIiwiYWN0aXZlIiwiaXNkZWZhdWx0Iik7DQoJCQ0KCQkkd2hlcmVzdHJpbmcgPSAiIjsNCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJDQoNCgkJaWYoJGN1c3RvbXdoZXJlKXsNCgkJCSR3aGVyZXN0cmluZyA9ICRjdXN0b213aGVyZTsNCgkJCSR3aGVyZXZhbHVlcyA9ICRjdXN0b212YWx1ZXM7DQoJCX1lbHNlew0KCQkJZm9yZWFjaCgkd2hlcmUgYXMgJGtleT0+JHZhbHVlKXsNCgkJCQlpZigka2V5ID09ICJwYXJlbnQiKXsNCgkJCQkJJHdoZXJlc3RyaW5nIC49ICgkd2hlcmVzdHJpbmcgPT0gIiI/IiI6IiBBTkQgIikuIkIuYWxpYXM9PyI7DQoJCQkJCSR3aGVyZXZhbHVlc1tdID0gJHZhbHVlOw0KCQkJCX1lbHNlaWYoJGtleSA9PSAicGFyZW50X2lkIil7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiJCLmlkPT8iOw0KCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCQl9ZWxzZWlmKGluX2FycmF5KHN0cnRvbG93ZXIoJGtleSksICRmaWVsZHMpKXsNCgkJCQkJJHdoZXJlc3RyaW5nIC49ICgkd2hlcmVzdHJpbmcgPT0gIiI/IiI6IiBBTkQgIikuIkEuIi4ka2V5LiI9PyI7DQoJCQkJCSR3aGVyZXZhbHVlc1tdID0gJHZhbHVlOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkNCgkJJHF1ZXJ5ID0gIlNFTEVDVCBBLiosIEIuaWQgcGFyZW50X2lkLCBCLm5hbWUgcGFyZW50X25hbWUsIEIuYWxpYXMgcGFyZW50X2FsaWFzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc192ZWhpY2xlIEEsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfdmVoaWNsZXR5cGUgQiBXSEVSRSBBLnBhcmVudCA9IEIuaWQgIi4oJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiR3aGVyZXN0cmluZzsNCgkJaWYoJGN1c3RvbW9yZGVyKXsNCgkJCSAkcXVlcnkgLj0gIiBPUkRFUiBCWSBBLiIuJGN1c3RvbW9yZGVyOw0KCQl9ZWxzZWlmKCRvcmRlciA9PSAibW9kaWZpZWQiKXsNCgkJCSAkcXVlcnkgLj0gIiBPUkRFUiBCWSBBLmRhdGVfbW9kaWZpZWQgREVTQyI7DQoJCX1lbHNlaWYoJG9yZGVyID09ICJjcmVhdGVkIil7DQoJCQkgJHF1ZXJ5IC49ICIgT1JERVIgQlkgQS5pZCBERVNDIjsNCgkJfWVsc2VpZiggJG9yZGVyICE9ICIiICYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYWxsb3dfY29tcGxleF9vcmRlciIsZmFsc2UpIHx8IGluX2FycmF5KHN0cnRvbG93ZXIoJG9yZGVyKSwgJGZpZWxkcykpICl7DQoJCQkkcXVlcnkgLj0gIiBPUkRFUiBCWSBBLiIuJG9yZGVyOw0KCQl9ZWxzZXsNCgkJCSAkcXVlcnkgLj0gIiBPUkRFUiBCWSBCLml0ZW1fb3JkZXIsIEEuaXRlbV9vcmRlciI7DQoJCX0NCgkJaWYoJGxpbWl0ICYmICRsaW1pdCAhPSAiMCIgJiYgJGxpbWl0ICE9ICIiKQkkcXVlcnkgLj0gIiBMSU1JVCAiLiRsaW1pdDsNCg0KCQkJJG9wdGlvbnNfbWFrZSA9IGFycmF5X2ZsaXAoJHRoaXMtPmdldF9maWVsZG9wdGlvbnMoInZlaGljbGVfbWFrZSIpKTsNCgkJCSRvcHRpb25zX2ZlYXR1cmVzID0gYXJyYXlfZmxpcCgkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygidmVoaWNsZV9mZWF0dXJlcyIpKTsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkd2hlcmV2YWx1ZXMpOw0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOw0KCQkkaWRsaXN0ID0gIiI7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkkaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KCQkJJGl0ZW0tPl9fd2hhdCA9ICJ2ZWhpY2xlIjsNCgkJCWZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSRpdGVtLT4ka2V5ID0gJHZhbHVlOw0KCQkJfQ0KCQkJJGl0ZW0tPnllYXIgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPnllYXIpOw0KCQkJJGl0ZW0tPm1ha2UgPSAoaXNzZXQoJG9wdGlvbnNfbWFrZVskaXRlbS0+bWFrZV0pKT8kaXRlbS0+bWFrZTpmYWxzZTsNCgkJCSRpdGVtLT5tYWtlX25hbWV2YWx1ZSA9IChpc3NldCgkb3B0aW9uc19tYWtlWyRpdGVtLT5tYWtlXSkpPyRvcHRpb25zX21ha2VbJGl0ZW0tPm1ha2VdOiIiOw0KCQkJJGl0ZW0tPm1vZGVsID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5tb2RlbCk7DQoJCQkkaXRlbS0+bWlsYWdlID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5taWxhZ2UpOw0KCQkJJGl0ZW0tPnZlaGljbGVjb25kaXRpb24gPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPnZlaGljbGVjb25kaXRpb24pOw0KCQkJJGl0ZW0tPmNvbG9yID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5jb2xvcik7DQoJCQkkaXRlbS0+cHJpY2UgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPnByaWNlKTsNCgkJCSRpdGVtLT5lbmdpbmUgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPmVuZ2luZSk7DQoJCQkkdG1wb3B0aW9ucyA9IHVuc2VyaWFsaXplKCRpdGVtLT5mZWF0dXJlcyk7DQoJCQlpZighaXNfYXJyYXkoJHRtcG9wdGlvbnMpKSAkdG1wb3B0aW9ucyA9IGFycmF5KCk7DQoJCQkkaXRlbS0+ZmVhdHVyZXMgPSBhcnJheSgpOw0KCQkJJGl0ZW0tPmZlYXR1cmVzX25hbWV2YWx1ZSA9IGFycmF5KCk7DQoJCQlpZihjb3VudCgkdG1wb3B0aW9ucyk+MCl7DQoJCQkJZm9yZWFjaCgkdG1wb3B0aW9ucyBhcyAkb25ldmFsdWUpew0KCQkJCQlpZihpc3NldCgkb3B0aW9uc19mZWF0dXJlc1skb25ldmFsdWVdKSl7DQoJCQkJCQkkaXRlbS0+ZmVhdHVyZXNbXSA9ICRvbmV2YWx1ZTsNCgkJCQkJCSRpdGVtLT5mZWF0dXJlc19uYW1ldmFsdWVbXSA9ICRvcHRpb25zX2ZlYXR1cmVzWyRvbmV2YWx1ZV07DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCQkkaXRlbS0+cGljdHVyZXMgPSAkdGhpcy0+Z2V0YWRkZmlsZXMoInZlaGljbGVfcGljdHVyZXMiLCRpdGVtLT5pZCxmYWxzZSx0cnVlKTsNCgkJCSRpdGVtLT5waWN0dXJlc19maWxlY291bnQgPSBjb3VudCgkaXRlbS0+cGljdHVyZXMpOw0KCQkJaWYoJGl0ZW0tPm1haW5waWN0dXJlICE9ICIiICYmICRpdGVtLT5tYWlucGljdHVyZSAhPSAiLyIpew0KCQkJCSRmaWxlID0gbmV3IFN0ZENsYXNzKCk7DQoJCQkJJGZpbGUtPmZpbGVwYXRoID0gKHN1YnN0cigkaXRlbS0+bWFpbnBpY3R1cmUsMCwxKT09Ii8iPyIiOiIvIikuJGl0ZW0tPm1haW5waWN0dXJlOw0KCQkJCSRmaWxlLT51cmwgPSAkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3VybCJdLiRmaWxlLT5maWxlcGF0aDsNCgkJCQkkaW5mbyA9ICR0aGlzLT5wbEdldEZpbGVJbmZvKCRnQ21zLT5jb25maWdbInVwbG9hZHNfcGF0aCJdLiRmaWxlLT5maWxlcGF0aCk7DQoJCQkJZm9yZWFjaCgkaW5mbyBhcyAka2V5PT4kdmFsdWUpCSRmaWxlLT4ka2V5ID0gJHZhbHVlOw0KCQkJCWlmKCRmaWxlLT5maWxlaWNvbiA9PSAiaWNvbnMvZmlsZXR5cGVzL2ZwYWludC5naWYiKQkkZmlsZS0+aW1hZ2UgPSAnPGltZyBzcmM9IicuJGZpbGUtPnVybC4nIiBhbHQ9IiIvPic7DQoJCQkJaWYoJGFkbWluKQkkZmlsZS0+cGljID0gJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgkZmlsZS0+ZmlsZWljb24pOw0KCQkJfWVsc2V7DQoJCQkJJGZpbGUgPSBmYWxzZTsNCgkJCX0NCgkJCSRpdGVtLT5tYWlucGljdHVyZSA9ICRmaWxlOw0KCQkJaWYoJGl0ZW0tPm1haW5waWN0dXJlKQkkaXRlbS0+bWFpbnBpY3R1cmUtPnRodW1ibmFpbCA9IHByZWdfcmVwbGFjZSgiLyguKyk/XC8oW15cL10rKVwuKC4rKS8iLCIkMS9wbHRodW1iXyQyLiQzIiwkaXRlbS0+bWFpbnBpY3R1cmUtPmZpbGVwYXRoKTsNCgkJCSRpdGVtLT5uYW1lID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5uYW1lKTsNCgkJCSRpdGVtLT5hbGlhcyA9IHN0cmlwc2xhc2hlcygkaXRlbS0+YWxpYXMpOw0KCQkkaXRlbS0+bmJjaGlsZHJlbiA9IGZhbHNlOw0KCQkNCgkJCWlmKCRhZG1pbiA9PSB0cnVlKXsNCgkJCQkvLyAkcGFybXMgd2lsbCBiZSB0aGUgYmFzZSBmb3IgcGFyYW1ldGVycyBvZiB0aGUgYWRtaW4gbGlua3MNCgkJCQkkcGFybXMgPSBhcnJheSgNCgkJCQkJInByZWZpeCI9PiJCIiwNCgkJCQkJInRhYmxlbmFtZSI9PiJhdXRvc192ZWhpY2xlIiwNCgkJCQkJImxldmVsbmFtZSI9PiJ2ZWhpY2xlIiwNCgkJCQkJImNoaWxkIj0+ZmFsc2UsDQoJCQkJCSJwYXJlbnRkZWZhdWx0Ij0+ZmFsc2UsDQoJCQkJCSJvcmRlcmJ5cGFyZW50Ij0+dHJ1ZSwNCgkJCQkJImFkZGZpbGVzIj0+InZlaGljbGVfcGljdHVyZXMiLA0KCQkJCQkic2hhcmVjaGlsZHJlbiI9PmZhbHNlLA0KCQkJCQkic2hhcmVkYnlwYXJlbnRzIj0+ZmFsc2UsDQoJCQkJCSJmaWxlcyI9PiJtYWlucGljdHVyZSINCgkJCQkJKTsNCgkJCQkkaXRlbSA9ICR0aGlzLT5hZGRhZG1pbmxpbmtzKCRpdGVtLCRwYXJtcywkaWQsJHJldHVybmlkKTsNCgkJCX0NCgkJCSRpZGxpc3QgLj0gKCRpZGxpc3Q9PSIiPyIiOiIgT1IgIikuIiBwYXJlbnQ9JyIuJGl0ZW0tPmlkLiInIjsNCgkJCWFycmF5X3B1c2goJGl0ZW1saXN0LCRpdGVtKTsNCgkJfQ0KDQoJCXJldHVybiAkaXRlbWxpc3Q7DQoJfQ0KCWZ1bmN0aW9uIHBsUmVzaXplKCRmdWxscGF0aCwgJG5ld3BhdGgsICRuZXd3aWR0aCwgJG5ld2hlaWdodD1mYWxzZSwgJHRyYW5zcGFyZW5jeT1mYWxzZSwgJGNyb3A9ZmFsc2UpIHsNCgkJcmVxdWlyZSAiZnVuY3Rpb24ucGxyZXNpemUucGhwIjsNCgkJcmV0dXJuICRyZXR1cm47DQoJfQ0KCQ0KCWZ1bmN0aW9uIHBsR2V0RmlsZUluZm8oJGZpbGVwYXRoKXsNCgkJaWYoIWZpbGVfZXhpc3RzKCRmaWxlcGF0aCkpCXJldHVybiBmYWxzZTsNCgkJcmVxdWlyZSAiZnVuY3Rpb24ucGxHZXRGaWxlSW5mby5waHAiOw0KCQlyZXR1cm4gJGluZm87DQoJfQ0KCQ0KCWZ1bmN0aW9uIHVwbG9hZF9jaGVja2ZpbGVuYW1lKCRmaWxlbmFtZSwgJGRpcil7DQoJCS8vIGlmIGEgZmlsZSBvZiB0aGF0IG5hbWUgZXhpc3RzLCBhcHBlbmRzIG51bWJlciB0byB0aGUgZmlsZW5hbWUNCgkJJHRtcGZpbGVuYW1lID0gc3RyX3JlcGxhY2UoIiAiLCJfIiwkZmlsZW5hbWUpOw0KCQkkZXh0ZW5zaW9uID0gc3RycmNocigkdG1wZmlsZW5hbWUsICIuIik7DQoJCSRjbGVhbmZpbGVuYW1lID0gc3RyX3JlcGxhY2UoJGV4dGVuc2lvbiwgIiIsICR0bXBmaWxlbmFtZSk7DQoNCgkJJGRlc3RkaXIgPSAkZGlyLiR0bXBmaWxlbmFtZTsNCgkJJGkgPSAxOw0KCQl3aGlsZShmaWxlX2V4aXN0cygkZGVzdGRpcikpew0KCQkJJHRtcGZpbGVuYW1lID0gJGNsZWFuZmlsZW5hbWUuIl8iLiRpLiRleHRlbnNpb247DQoJCQkkZGVzdGRpciA9ICRkaXIuJHRtcGZpbGVuYW1lOw0KCQkJJGkrKzsNCgkJfQ0KCQlyZXR1cm4gJHRtcGZpbGVuYW1lOw0KCX0NCgkNCglmdW5jdGlvbiBwbFVwbG9hZEZpbGUoJGZpbGUsICRkZXN0aW5hdGlvbj0iIiwgJHJlc2l6ZT1mYWxzZSwgJGNyb3A9ZmFsc2Upew0KCQlnbG9iYWwgJGdDbXM7DQoJCSRkaXIgPSAkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXS5zdHJfcmVwbGFjZSgiLy8iLCIvIiwiLyIuJGRlc3RpbmF0aW9uLiIvIik7DQoJCQ0KCQkkZmlsZW5hbWUgPSAkdGhpcy0+dXBsb2FkX2NoZWNrZmlsZW5hbWUoJGZpbGVbIm5hbWUiXSwkZGlyKTsNCgkJDQoJCWlmIChjbXNfbW92ZV91cGxvYWRlZF9maWxlKCRmaWxlWyJ0bXBfbmFtZSJdLCAkZGlyLiRmaWxlbmFtZSkpIHsNCgkJCWlmKCRyZXNpemUgJiYgIWlzX2FycmF5KCRyZXNpemUpKQkkcmVzaXplID0gZXhwbG9kZSgieCIsJHJlc2l6ZSk7DQoJCQlpZigkcmVzaXplICYmIGNvdW50KCRyZXNpemUpID09IDIpICR0aGlzLT5wbFJlc2l6ZSgkZGlyLiRmaWxlbmFtZSwgJycsICRyZXNpemVbMF0sICRyZXNpemVbMV0sdHJ1ZSwkY3JvcCk7DQoJCQlyZXR1cm4gc3RyX3JlcGxhY2UoIi8vIiwiLyIsIi8iLiRkZXN0aW5hdGlvbi4iLyIuJGZpbGVuYW1lKTsNCgkJfWVsc2V7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgl9DQoJDQoJZnVuY3Rpb24gcGxBc3NpZ25GaWxlKCRmaWxlcGF0aCwgJHRhYmxlLCAkaXRlbWlkLCAkZmllbGQsICR0aHVtYnNpemU9ZmFsc2UsICRjcm9wdGh1bWI9ZmFsc2Upew0KCQkkdGFibGVuYW1lID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy4kdGFibGU7DQoJCSRmaWxlcGF0aCA9IHN0cl9yZXBsYWNlKCIvLyIsIi8iLCRmaWxlcGF0aCk7DQoNCgkJaWYoJHRodW1ic2l6ZSAmJiAhaXNfYXJyYXkoJHRodW1ic2l6ZSkpCSR0aHVtYnNpemUgPSBleHBsb2RlKCJ4IiwkdGh1bWJzaXplKTsNCgkJaWYoICRmaWxlcGF0aCAhPSAiIiAmJiAkdGh1bWJzaXplICYmIGNvdW50KCR0aHVtYnNpemUpID09MiApIHsNCgkJCWdsb2JhbCAkZ0NtczsNCgkJCSRiYXNlcGF0aCA9ICRnQ21zLT5jb25maWdbInVwbG9hZHNfcGF0aCJdOw0KCQkJJGV4cGxvZGVkID0gZXhwbG9kZSgiLyIsJGZpbGVwYXRoKTsNCgkJCSRleHBsb2RlZFtjb3VudCgkZXhwbG9kZWQpLTFdID0gInBsdGh1bWJfIi4kZXhwbG9kZWRbY291bnQoJGV4cGxvZGVkKS0xXTsNCgkJCSR0aHVtYnBhdGggPSBpbXBsb2RlKCIvIiwkZXhwbG9kZWQpOw0KCQkJJHRoaXMtPnBsUmVzaXplKCRiYXNlcGF0aC4iLyIuJGZpbGVwYXRoLCAkYmFzZXBhdGguIi8iLiR0aHVtYnBhdGgsICR0aHVtYnNpemVbMF0sICR0aHVtYnNpemVbMV0sIHRydWUsICRjcm9wdGh1bWIpOw0KCQl9DQoNCgkJJGRiID0gJHRoaXMtPkdldERiKCk7DQoNCgkJaWYoICR0YWJsZSA9PSAkdGhpcy0+R2V0TmFtZSgpLiJfbXVsdGlwbGVmaWxlc2ZpZWxkcyIgKSB7DQoJCQkkbmV3aWQgPSAkZGItPkdlbklEKCR0YWJsZW5hbWUuIl9zZXEiKTsNCgkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAkdGFibGVuYW1lIFNFVCBmaWxlaWQ9PywgaXRlbWlkPT8sIGZpZWxkbmFtZT0/LCBmaWxlcGF0aD0/IjsNCgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCBhcnJheSgkbmV3aWQsICRpdGVtaWQsICRmaWVsZCwgJGZpbGVwYXRoKSApOw0KCQl9ZWxzZXsNCgkJCSRxdWVyeSA9ICJVUERBVEUgJHRhYmxlbmFtZSBTRVQgJGZpZWxkPT8gV0hFUkUgaWQ9PyBMSU1JVCAxIjsNCgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGZpbGVwYXRoLCRpdGVtaWQpKTsNCgkJfQ0KCQkNCgkJcmV0dXJuICRkYnJlc3VsdDsNCgl9DQoJZnVuY3Rpb24gZ2V0RmlsZUNvbnRlbnQoJGZpbGVuYW1lKXsNCgkJLy8gcmV0dXJucyB0aGUgY29udGVudCBvZiBhIGZpbGUNCgkJJGZpbGVwYXRoID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWU7DQoJCWlmKGZpbGVfZXhpc3RzKCRmaWxlcGF0aCkpew0KCQkJJGZoYW5kbGUgPSBmb3BlbigkZmlsZXBhdGgsICJyKyIpOw0KCQkJJGNvbnRlbnQgPSBmcmVhZCgkZmhhbmRsZSwgZmlsZXNpemUoJGZpbGVwYXRoKSk7DQoJCQlyZXR1cm4gJGNvbnRlbnQ7DQoJCX1lbHNlew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJfQ0KDQp9DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/faq.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkNUTE1vZHVsZU1ha2VyIEZBUTwvdGl0bGU+CQoJPHN0eWxlPgoJCWEgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KCQlhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KCQlkaXYucWRpdiB7IG1hcmdpbjogMjVweCAyNXB4IDgwcHggMjVweDsgfQoJCWgxIHsKCQkJdGV4dC1hbGlnbjogcmlnaHQ7CgkJCW1hcmdpbi1ib3R0b206IDA7CgkJfQoJCWRpdiNub3RpY2UgewoJCQl0ZXh0LWFsaWduOiByaWdodDsKCQl9CgkJI21lbnUgewoJCQlmb250LWZhbWlseTogVmVyZGFuYTsKCQkJcGFkZGluZzogMjVweCAwIDI1cHggNzVweDsKCQkJZm9udC13ZWlnaHQ6IGJvbGQ7CgkJfQoJCSNtZW51IGxpIHsKCQkJbWFyZ2luOiAycHg7CgkJfQoJCWRpdi5hbnN3ZXIgewoJCQliYWNrZ3JvdW5kLWNvbG9yIDogI2UxZWNmZTsKCQkJcGFkZGluZzogMTBweDsKCQkJYm9yZGVyOiAxcHggc29saWQgRGFya2JsdWU7CgkJCWJvcmRlci10b3A6IG5vbmU7CgkJfQoJCWRpdi5xdWVzdGlvbiB7IAoJCQlmb250LXdlaWdodDogYm9sZDsKCQkJYmFja2dyb3VuZC1jb2xvciA6ICNhNGM1ZmY7CgkJCXBhZGRpbmc6IDEwcHg7CgkJCWJvcmRlcjogMXB4IHNvbGlkIERhcmtibHVlOwoJCQlib3JkZXItYm90dG9tOiBub25lOwoJCX0KCQkuY29kZSB7CgkJCWRpc3BsYXk6IGJsb2NrOwoJCQliYWNrZ3JvdW5kLWNvbG9yOiBMaWdodEdyZXk7CgkJCWJvcmRlcjogMXB4IHNvbGlkIERhcmtHcmV5OwoJCQlwYWRkaW5nOiA1cHg7CgkJCW1hcmdpbjogMTBweDsKCQl9CgkJCgkJCQoJPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPGgxPkNUTE1vZHVsZU1ha2VyIEZBUTwvaDE+CjxkaXYgaWQ9Im5vdGljZSI+Q292ZXJzIHRoZSBjcmVhdGVkIG1vZHVsZXMsIG5vdCBDVExNb2R1bGVNYWtlciBpdHNlbGYuLi48YnIvPmNsaWNrIDxhIGhyZWY9ImhlbHAuaHRtbCI+aGVyZTwvYT4gZm9yIGhlbHAgYWJvdXQgdGhlIG1vZHVsZSBjcmVhdGlvbi48L2Rpdj4KPHVsIGlkPSJtZW51Ij4KCgk8bGk+PGEgaHJlZj0iI3ExMCI+TW9kaWZ5aW5nIHRoZSBtb2R1bGUgLSB3aGVyZSB0byBzdGFydD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTkiPkNhbiBJIHB1dCA8aT5zbWFydHkgdGFnczwvaT4gaW4gdGhlIGl0ZW0ncyBmaWVsZHM/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E1Ij5Ib3cgY2FuIEkgcmV0cmlldmUgPGk+aW1hZ2VzPC9pPiBpbiB0aGUgZGlzcGxheSB0ZW1wbGF0ZXM/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExMiI+SG93IGNhbiBJIGRpc3BsYXkgdmFsdWVzIGluc2lkZSBhbiA8aT5BcnJheTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExNSI+SG93IGNhbiBJIGNoYW5nZSB0aGUgPGk+ZGF0ZXMgZGlzcGxheSBmb3JtYXQ8L2k+PzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMTgiPkhvdyBjYW4gSSBmb3JtYXQgdGhlIDxpPnBhZ2UgbWVudTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3EyMiI+SG93IGNhbiBJIGRpc3BsYXkgYSBsaXN0IG9mIGVsZW1lbnRzIHNvcnRlZCBpbiBhIGNlcnRhaW4gd2F5PzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjQiPkhvdyBjYW4gSSBnZXQgdGhlIDxpPm51bWJlciBvZiBlbGVtZW50czwvaT4gaW4gYSBjYXRlZ29yeT88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTYiPkknbSB0cnlpbmcgdG8gZGlzcGxheSBhIGxpc3Qgb2YgaXRlbXMsIGJ1dCB0aGUgZGV0YWlsIHRlbXBsYXRlIGlzIHVzZWQgaW5zdGVhZC4gV2hhdCdzIGdvaW5nIG9uPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjMiPkFkbWluIHBhbmVsIGJyZWFrcyB3aGVuIEkgYWRkIGFuIGltYWdlIHRvIGFuIGl0ZW0uIFdoYXQncyBnb2luZyBvbj88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTIxIj5DYW4gSSBpbnRlZ3JhdGUgdGhlIDxpPkNvbW1lbnRzPC9pPiBtb2R1bGU/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExMSI+V2FybmluZzogbW9kdWxlIDxpPiJpcyBub3QgcHJvcGVybHkgY2xlYW5pbmcgaW5wdXQgcGFyYW1zLiI8L2k+IFdoYXQncyBnb2luZyBvbj88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTEzIj5Ib3cgY2FuIEkgcmV0cmlldmUgaW5mb3JtYXRpb25zIGFib3V0IGFuIG9iamVjdCBvdGhlciB0aGFuIHRoZSBvbmUgSSdtIHdhdGNoaW5nPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMSI+Q2FuIEkgY2hhbmdlIHRoZSBmaWVsZCBpbnB1dHMgdGhhdCBhcmUgZGlzcGxheWVkIGluIHRoZSBtb2R1bGUncyA8aT5zZWFyY2ggZm9ybTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E0Ij5DYW4gSSBjaGFuZ2UgdGhlIDxpPmVkaXQgZm9ybTwvaT4gZm9yIGEgbGV2ZWw/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExNyI+SG93IGNhbiBJIGFkZCBhIDxpPmNvbmRpdGlvbjwvaT4gZm9yIGFuZCBlbGVtZW50J3MgaW5wdXQgdG8gYmUgYWNjZXB0ZWQ/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E3Ij5Ib3cgYXJlIHRoZSA8aT5kZWZhdWx0YWRtaW4gcGFuZWxzPC9pPiBnZW5lcmF0ZWQ/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3EyIj5Db3VsZCBJIHNob3cgdGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gaW4sIHNheSwgdGhlIHBhZ2UncyA8PC8+dGl0bGU+IHRhZz88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTE2Ij5Ib3cgY2FuIEkgYWRkIG1vZHVsZSBlbGVtZW50cyB0byBteSA8aT5nb29nbGUgc2l0ZW1hcDwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExOSI+SG93IGNhbiBJIGFkZCBhbiBleHBpcmF0aW9uIGZpZWxkPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjAiPkhvdyBjYW4gSSBzZXR1cCB0aGUgZnJvbnRlbmQgZWRpdCBhY3Rpb24gd2l0aCB0aGUgRnJvbnQgRW5kIFVzZXJzIG1vZHVsZT88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTMiPkNhbiBJIGNoYW5nZSBob3cgdGhlIDxpPnByZXR0eSB1cmxzPC9pPiBhcmUgZ2VuZXJhdGVkIGFuZCBpbnRlcnByZXRlZD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTgiPkNhbiBJIG1ha2UgbXkgbW9kdWxlIGFsd2F5cyBhY3QgYXMgaWYgdGhlICJmb3JjZWxpc3QiIHBhcmFtZXRlciB3YXMgZW5hYmxlZD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTE0Ij5XaGF0J3Mgd2l0aCB0aGlzIGdldF9tb2R1bGVHZXRWYXJzKCkgZnVuY3Rpb24/PC9hPjwvbGk+CgkKPC91bD4KCjxkaXYgaWQ9InF1ZXN0aW9ucyI+CgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTAiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Nb2RpZnlpbmcgdGhlIG1vZHVsZSAtIHdoZXJlIHRvIHN0YXJ0PzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+VG8gZ2V0IHlvdSBzdGFydGVkLCBoZXJlJ3MgYSBiYXNpYyBleHBsYW5hdGlvbiBvZiB0aGUgc3RydWN0dXJlIG9mIHRoZSBjcmVhdGVkIG1vZHVsZS48L3A+CgkJPHA+PGI+VGhlIGxhbmd1YWdlIGZpbGVzPC9iPjwvcD4KCQk8cD5JbiB0aGUgbGFuZy8gZm9sZGVyLCB5b3Ugd2lsbCBmaW5kIG9uZSBmaWxlIGZvciBlYWNoIHN1cHBvcnRlZCBsYW5ndWFnZS4gSW5zaWRlIGVhY2ggZmlsZSwgeW91IHNob3VsZCBoYXZlIHNldmVyYWwgbGluZXMgdGhhdCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+JGxhbmdbInBvc3RpbnN0YWxsIl0gPSAiTW9kdWxlIHN1Y2Nlc3NmdWxseSBhZGRlZC4iOzwvcHJlPgoJCTxwPlRoaXMgbGluZSBkZWZpbmVzIGEgc3RyaW5nIHJlZmVycmVkIHRvIGFzICJwb3N0aW5zdGFsbCIuIEluIGV2ZXJ5IGxhbmd1YWdlIGZpbGUsIHRoZXJlIHNob3VsZCBiZSBhIHN0cmluZyBmb3IgdGhpcyBrZXkuIFdoZW4gdGhlIG1vZHVsZXMgd2lzaGVzIHRvIGRpc3BsYXkgc29tZSB0ZXh0LCBpdCB3aWxsIGxvb2sgZm9yIHRoZSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0aGUga2V5IGluIHRoZSBsYW5ndWFnZSBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHVzZXIncyBsYW5ndWFnZS4gWW91IHdpbGwgbW9zdCBsaWtlbHkgd2lzaCB0byBjaGFuZ2UgdGhlc2UgZmlsZXMsIGJ1dCBiZSBjYXJlZnVsLiBFYWNoIHN0cmluZyBpcyBkZWxpbWl0ZWQgd2l0aCBxdW90ZXMgKGVpdGhlciAnIG9yICIpLCBhbmQgb2J2aW91c2x5IHlvdSBjYW4ndCB1c2UgdGhlc2UgZGVsaW1pdGVycyBpbnNpZGUgdGhlIHN0cmluZy4gSWYgeW91IHdpc2ggdG8gZG8gc28sIHlvdSdsbCBoYXZlIHRvIHVzZSBhbiBlc2NhcGUgc2lnbiA6IFwiIHdpbGwgZGlzcGxheSBhIHF1b3RlIHdpdGhvdXQgYmVpbmcgY29uc2lkZXJlZCBhcyBhIGRlbGltaXRlci48L3A+CgkJPHA+PGI+VGhlIHRlbXBsYXRlczwvYj48L3A+CgkJPHA+VGhlIGZpbGVzIGluIHRoZSB0ZW1wbGF0ZXMvIGZvbGRlciBjb250YWluIG5vIHBocCAtIGp1c3QgcGxhaW4gaHRtbCBhbmQgc21hcnR5IHRhZ3MuIFRoZXkgYXJlIHVzZWQgZm9yIHRoZSBsYXlvdXQgb2YgbW9zdCBhY3Rpb25zLjxici8+CgkJPHA+PGk+YWRtaW5wYW5lbC50cGw8L2k+IGlzIHRoZSBsYXlvdXQgZm9yIHRoZSBsaXN0IG9mIGVsZW1lbnRzIG9mIGVhY2ggbGV2ZWwgaW4gdGhlIGFkbWluIHBhbmVsICh0byBtb2RpZnkgdGhpcywgc2VlIDxhIGhyZWY9IiNxNyI+dGhpcyB0b3BpYzwvYT4pPGJyLz4KCQk8aT5ub3Jlc3VsdC50cGw8L2k+IGlzIHVzZWQgd2hlbiB0aGVyZSBhcmUgbm8gaXRlbSB0byBkaXNwbGF5LiBUeXBpY2FsbHksIHRoaXMgaXMganVzdCBhIG1lc3NhZ2Ugc2F5aW5nIHRoYXQgbm90aGluZyB3YXMgZm91bmQuPGJyLz4KCQk8aT5zZWFyY2gudHBsPC9pPiBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBzaW1wbGUgc2VhcmNoIGZvcm0gKHdoZW4gY2FsbGluZyB0aGUgc2VhcmNoIGFjdGlvbiB3aXRoIHNlYXJjaG1vZGU9InNpbXBsZSIpLCB3aGljaCBzZWFyY2hlcyBpbiBhbGwgbGV2ZWxzLjxici8+CgkJPGk+c2VhcmNoX2dlbmVyYWxyZXN1bHRzLnRwbDwvaT4gaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgc2VhcmNoIHJlc3VsdHMgd2hlbiB5b3UgYXJlIHNlYXJjaGluZyBpbiBtb3JlIHRoYW4gb25lIGxldmVsIChvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGxpc3QgdGVtcGxhdGUgZm9yIHRoYXQgbGV2ZWwgaXMgdXNlZCkuPGJyLz4KCQk8aT5icm93c2VmaWxlcy50cGw8L2k+IGlzIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciB0aGUgZmlsZSBzZWxlY3Rpb24gcGFnZSAod2hlbiB1c2luZyB0YWJsZSBkaXNwbGF5KS48YnIvPgoJCUZvciBlYWNoIGxldmVsLCB5b3Ugc2hvdWxkIGhhdmUgYSA8aT5lZGl0TEVWRUxQUkVGSVgudHBsPC9pPiwgYSA8aT5zZWFyY2hfTEVWRUxOQU1FLnRwbDwvaT4gYW5kIHBvc3NpYmx5IGEgPGk+ZnJvbnRlbmRfYWRkX0xFVkVMUFJFRklYLnRwbDwvaT4uIFRoZSBmaXJzdCBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBhZG1pbiBmb3JtLCB3aGVuIGFuIGl0ZW0gb2YgdGhpcyBsZXZlbCBpcyBhZGRlZCBvciBlZGl0ZWQuIFRoZSBzZWNvbmQgaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgYWR2YW5jZWQgc2VhcmNoIGZvcm0uIFRoZSBsYXN0IGlzIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGZyb250ZW5kIGFkZCBhY3Rpb24gZm9yIHRoaXMgbGV2ZWwgKGlmIHlvdSBjaG9zZSB0byBjcmVhdGUgb25lKS48L3A+CgkJPHA+PGI+VGhlIGFjdGlvbiBmaWxlczwvYj48L3A+CgkJPHA+SW4gdGhlIHJvb3Qgb2YgdGhlIG1vZHVsZSBmb2xkZXJzLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCBmaWxlcyBoYXZlIGEgcHJlZml4IChlaXRoZXIgImFjdGlvbiIgb3IgIm1ldGhvZCIpLCBleGNlcHQgZm9yIHRoZSBtb2R1bGUgZmlsZSAoPGk+bW9kdWxlbmFtZS5tb2R1bGUucGhwPC9pPiksIHdoaWNoIGNvbnRhaW5zIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0cyBvZiB0aGUgY29kZS4gTWV0aG9kcyBhcmUgY2FsbGVkIHdoZW4gdGhlIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHVuaW5zdGFsbGVkLCBvciB1cGdyYWRlZCAtIGFuZCBhdCBubyBvdGhlciBtb21lbnQuIEFjdGlvbnMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgY21zIGFza3MgdGhlIG1vZHVsZSB0byBkbyBzb21ldGhpbmcgLSBlaXRoZXIgaW4gdGhlIGZyb250ZW5kIG9yIHRoZSBhZG1pbi4gQnV0IHRoZSBtb2R1bGUgaGFzIG1vcmUgYWN0aW9ucyB0aGFuIHRoZSBmaWxlcyB5b3Ugc2VlIHRoZXJlLiBPcGVuIHRoZSBtb2R1bGUgZmlsZSAoPGk+bW9kdWxlbmFtZS5tb2R1bGUucGhwPC9pPiksIGFuZCBsb29rIGZvciB0aGUgZnVuY3Rpb24gPGI+RG9BY3Rpb248L2I+IChzaG91bGQgYmUgYXJvdW5kIHRoZSA0MDB0aCBsaW5lKS4gWW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CWZ1bmN0aW9uIERvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkPS0xKXsKCQlnbG9iYWwgJGdDbXM7CgkJc3dpdGNoKCRhY3Rpb24pewoJCQljYXNlICJsaW5rIjoKCQkJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCJkZWZhdWx0IiwkcmV0dXJuaWQsIiIsJHBhcmFtcywiIix0cnVlKTsKCQkJCWJyZWFrOwoJCQljYXNlICJjaGFuZ2VkZWZ0ZW1wbGF0ZXMiOgoJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRrZXk9PiR2YWx1ZSl7CgkJCQkgICAgaWYoJGtleSAhPSAic3VibWl0IikJICAgJHRoaXMtPnNldFByZWZlcmVuY2UoJGtleSwgJHZhbHVlKTsKCQkJCX0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+InRlbXBsYXRlcyIsICJtb2R1bGVfbWVzc2FnZSI9PiJtZXNzYWdlX21vZGlmaWVkIikpOwoJCQkJYnJlYWs7CgkJCWNhc2UgImRlbGV0ZXRwbCI6CgkJCQkkbmV3cGFyYW1zID0gYXJyYXkoImFjdGl2ZV90YWIiPT4idGVtcGxhdGVzIik7CgkJCQkkZGVmdGVtcGxhdGVzID0gJHRoaXMtPmdldERlZmF1bHRUZW1wbGF0ZXMoKTsKCQkJICAgIGlmKGlzc2V0KCRwYXJhbXNbInRwbG5hbWUiXSkgJiYgIWluX2FycmF5KCRwYXJhbXNbInRwbG5hbWUiXSwgJGRlZnRlbXBsYXRlcykpewoJCQkJICAgIGlmKCR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGFyYW1zWyJ0cGxuYW1lIl0pKQkgICAkbmV3cGFyYW1zWyJtb2R1bGVfbWVzc2FnZT4iXSA9ICR0aGlzLT5sYW5nKCJtZXNzYWdlX21vZGlmaWVkIik7CgkJCQl9CgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsKCQkJCWJyZWFrOzwvcHJlPgoJCTxwPmFuZCBzbyBvbi4uLjxici8+CgkJU29tZSBhY3Rpb25zIChtb3N0bHkgYmVjYXVzZSB0aGV5IGFyZSBzbWFsbCkgZG9uJ3QgaGF2ZSB0aGVpciBvd24gZmlsZS4gRWFjaCAiY2FzZSIsIGhlcmUsIGlzIHN1Y2ggYW4gYWN0aW9uLiBXaGVuIGFza2VkIGZvciBhbiBhY3Rpb24gdGhhdCBpcyBub3QgaW4gdGhlIGxpc3QsIHRoZSBtb2R1bGUgd2lsbCBsb29rIGZvciB0aGUgYWNjb3JkaW5nIGZpbGUgKGFjdGlvbi5BQ1RJT05OQU1FLnBocCkuPC9wPgoJCTxwPlNvIGhlcmUncyBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBhY3Rpb25zIHlvdSBtaWdodCBub3RpY2UgaW4geW91ciBtb2R1bGU6CgkJPHVsPgoJCTxsaT48aT5saW5rPC9pPjogdGhlIGZyb250ZW5kICJsaW5rIiBhY3Rpb24sIHdoaWNoIGNyZWF0ZXMgYSBsaW5rIHRvIGFub3RoZXIgYWN0aW9uPC9saT4KCQk8bGk+PGk+ZGVmYXVsdDwvaT46IHRoZSBmcm9udGVuZCBkZWZhdWx0IGFjdGlvbiwgd2hpY2ggZGlzcGxheXMgZWxlbWVudHMgb3IgbGlzdCBvZiBlbGVtZW50czwvbGk+CgkJPGxpPjxpPnNlYXJjaDwvaT46IHRoZSBmcm9udGVuZCAic2VhcmNoIiBhY3Rpb24sIHdoaWNoIGRpc3BsYXlzIHRoZSBzZWFyY2ggZm9ybSBhbmQgc2VhcmNoIHJlc3VsdHM8L2xpPgoJCTxsaT48aT5mcm9udGVuZF9lZGl0PC9pPjogdGhlIGZyb250ZW5kIGFjdGlvbiB0byBhZGQvZWRpdCBlbGVtZW50cyAoYnJlYWtzIGludG8gRkVhZGRfKiBhY3Rpb25zKTwvbGk+CgkJPGxpPjxpPmRlZmF1bHRhZG1pbjwvaT46IHRoZSBhY3Rpb24gZm9yIHRoZSBhZG1pbiBwYW5lbCB3aGljaCBkaXNwbGF5cyB0aGUgbGlzdCBvZiBsZXZlbHMsIGVsZW1lbnRzLCB0ZW1wbGF0ZXMgYW5kIHNvIG9uPC9saT4KCQk8bGk+PGk+ZWRpdFRlbXBsYXRlPC9pPjogd2hlbiBhIG1vZHVsZSB0ZW1wbGF0ZSBpcyBlZGl0ZWQ8L2xpPgoJCTxsaT48aT5kZWxldGV0cGw8L2k+OiB3aGVuIGEgbW9kdWxlIHRlbXBsYXRlIGlzIGRlbGV0ZWQ8L2xpPgoJCTxsaT48aT5hZGRfb3B0aW9udmFsdWU8L2k+LDxpPnJlbmFtZV9vcHRpb252YWx1ZTwvaT4sPGk+bW92ZV9vcHRpb252YWx1ZTwvaT4gYW5kIDxpPmRlbGV0ZV9vcHRpb252YWx1ZTwvaT4gbWFuYWdlIHRoZSBvcHRpb25zIGZvciB0aGUgZHluYW1pYyBsaXN0IGZpZWxkczwvbGk+CgkJPGxpPjxpPmVkaXRMRVZFTFBSRUZJWDwvaT46IGZvciBlYWNoIGxldmVsLCB0aGUgYWN0aW9uIHRvIGFkZCBvciBlZGl0IGFuIGVsZW1lbnQgb2YgdGhlIGxldmVsPC9saT4KCQk8bGk+PGk+dG9nZ2xlPC9pPjogdXNlZCB3aGVuIGEgbGluayBpbiB0aGUgYWRtaW5wYW5lbCBpcyBjbGlja2VkIHRvIGNoYW5nZSB0aGUgImFjdGl2ZSIgb3IgImRlZmF1bHQiIHZhbHVlIG9mIGFuIGVsZW1lbnQ8L2xpPgoJCTxsaT48aT5tb3Zlc29tZXRoaW5nPC9pPjogdXNlZCB3aGVuIHRoZSBvcmRlciBvZiBlbGVtZW50cyBpcyBjaGFuZ2VkIGluIHRoZSBhZG1pbiBwYW5lbCwgb3Igd2hlbiBhbiBlbGVtZW50IGlzIGRlbGV0ZWQ8L2xpPgoJCTxsaT48aT5icm93c2VmaWxlczwvaT46IHVzZWQgd2hlbiB5b3Ugc2VsZWN0IGEgZmlsZSBmb3IgYW4gZWxlbWVudC4gSXQgZGlzcGxheXMgYSBsaXN0IG9mIHRoZSBjdXJyZW50IGZpbGVzIGFuZCB0aGUgdXBsb2FkIGZvcm0uPC9saT4KCQk8bGk+PGk+YWRkZmlsZXM8L2k+OiB1c2VkIHdoZW4gbmV3IGZpbGUocykgaXMoYXJlKSB1cGxvYWRlZC4gVGhpcyBhY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIGJyb3dzZWZpbGVzIGFjdGlvbiAoaW1hZ2VzIGFyZSByZXNpemVkIGhlcmUpLjwvbGk+CgkJPGxpPjxpPmFzc2lnbmZpbGU8L2k+OiBhc3NpZ25zIGFuIGV4aXN0aW5nIGZpbGUgdG8gdGhlIGl0ZW0gaW4gdGhlIGRhdGFiYXNlPC9saT4KCQk8L3VsPgoJCTxwPjxiPlRoZSBmdW5jdGlvbnM8L2I+PC9wPgoJCTxwPkFzaWRlIGZyb20gRG9BY3Rpb24sIHRoZSBtb2R1bGUgZmlsZSBjb250YWlucyBhIGxvdCBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZCBpbiBhbnkgYWN0aW9uLiBNb3N0IG9mIHRoZW0gYXJlIHNpbXBseSBwcm9jZWR1cmVzIHRoYXQgdGhlIG1vZHVsZSBuZWVkcyB0byBkbyBxdWl0ZSBvZnRlbi4gSSd2ZSB0cmllZCB0byBjb21tZW50IHRoZW0gYXQgbGVhc3QgdG8gc2F5IHdoYXQgdGhleSdyZSB0aGVyZSBmb3IsIGJ1dCBoZXJlIEknbGwgdHJ5IHRvIGRlc2NyaWJlIHNvbWUgb2YgdGhlIG1vc3QgaW1wb3J0YW50IG9uZXMuPC9wPgoJCTx1bD4KCQk8bGk+VGhlIDxpPkJ1aWxkUHJldHR5VXJscygpPC9pPiBhbmQgPGk+U2V0UGFyYW1ldGVycygpPC9pPiBmdW5jdGlvbnMgY29udHJvbCBhcmUgbW9zdGx5IHVzZWQgZm9yIHByZXR0eSB1cmxzIChtb3JlIGluZm9ybWF0aW9ucyA8YSBocmVmPSIjcTMiPmhlcmU8L2E+KTwvbGk+CgkJPGxpPlRoZSA8aT5nZXRfbW9kdWxlR2V0VmFycygpPC9pPiBpcyB1c2VkIHRvIHJldHJpZXZlIGluZm9ybWF0aW9ucyBmcm9tIHRoZSB1cmwgYWJvdXQgb3RoZXIgY2FsbHMgb2YgdGhlIG1vZHVsZS4gSW4gbW9zdCBjYXNlcywgdGhpcyBpcyB3aGF0IHByb3ZpZGVzIHRoZSAkaXRlbS0+aXNfc2VsZWN0ZWQgYXR0cmlidXRlIG9mIGl0ZW1zLjwvbGk+CgkJPGxpPlRoZSA8aT5wbFJlc2l6ZSgpPC9pPiBmdW5jdGlvbiAobG9jYXRlZCBpbiBmdW5jdGlvbi5wbHJlc2l6ZS5waHApIGlzIHVzZWQgdG8gcmVzaXplIGltYWdlcyBhbmQgY3JlYXRlIHRodW1ibmFpbHM8L2xpPgoJCTxsaT5Gb3IgZWFjaCBsZXZlbCwgeW91IHdpbGwgaGF2ZSBhIDxpPmdldF9sZXZlbF9OQU1FT0ZMRVZFTCgpPC9pPi4gVGhlcmUgYXJlIGFtb25nIHRoZSBtb3N0IGltcG9ydGFudCwgYXMgdGhleSBhcmUgY2FsbCBldmVyeXRoaW5nIGFuIGVsZW1lbnQgKG9yIGxpc3Qgb2YgZWxlbWVudHMpIGlzIHJlcXVlc3RlZC4gSXQgd2lsbCBiZSBleHBsYWluZWQgYmVsb3cuPC9saT4KCQk8bGk+VGhlIDxpPmFkZGFkbWlubGlua3MoKTwvaT4gZnVuY3Rpb24gaXMgdXNlZCBmb3IgdGhlIGFkbWluIHBhbmVsIGFuZCBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gYSA8aT5nZXRfbGV2ZWxfTkFNRU9GTEVWRUwoKTwvaT4gZnVuY3Rpb24uIEl0IHRha2VzIGV2ZXJ5IGl0ZW0gYW5kIGFkZCBsaW5rcyB0byBlZGl0LCBtb3ZlLCBkZWxldGUgdGhlIGl0ZW0gYW5kIHNvIG9uLjwvbGk+CgkJPC91bD4KCQk8cD48Yj5UaGUgZ2V0X2xldmVsIGZ1bmN0aW9uczwvYj48L3A+CgkJPHA+RWFjaCA8aT5nZXRfbGV2ZWxfTkFNRU9GTEVWRUwoKTwvaT4gZnVuY3Rpb24gcXVlcmllcyBlbGVtZW50cyBmcm9tIHRoZSBkYXRhYmFzZSwgY3JlYXRlcyBhbiBvYmplY3QgZm9yIGVhY2gsIGFuZCByZXR1cm4gYW4gYXJyYXkgb2YgdGhlc2Ugb2JqZWN0cyAoYmFzaWNhbGx5LCB0aGUgJGl0ZW1saXN0IHlvdSdyZSB1c2luZyBpbiB0ZW1wbGF0ZXMpLjxici8+CgkJVGhlIGZ1bmN0aW9uIGFjY2VwdHMgc2V2ZXJhbCBwYXJhbWV0ZXJzLCB3aGljaCBJJ2xsIGV4bGFpbiBoZXJlOjwvcD4KCQk8dWw+CgkJPGxpPjxpPiR3aGVyZTwvaT4gaXMgYW4gYXJyYXkgb2YgY29uZGl0aW9ucywgaW4gdGhlIGZvcm0gJGZpZWxkPT4kdmFsdWUuIEZvciBleGFtcGxlLCA8Y29kZT4kd2hlcmU9YXJyYXkoImFjdGl2ZSI9PjEpPC9jb2RlPiB3b3VsZCBtZWFuIHRoYXQgb25seSB0aGUgaXRlbXMgd2VyZSB0aGUgImFjdGl2ZSIgZmllbGQgaXMgZXF1YWwgdG8gMSBhcmUgcXVlcmllZC48L2xpPgoJCTxsaT48aT4kYWRtaW48L2k+IGNvbnRyb2xzIHdoZXRoZXIgdGhlIGFkZGFkbWlubGlua3MoKSBqdXN0IGRpc2N1c3NlZCBzaG91bGQgYmUgY2FsbGVkLiBJZiBpdCBpcywgdGhlICRpZCBhbmQgJHJldHVybmlkIHBhcmFtZXRlcnMgYXJlIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlIHRoZXkgYXJlbid0LjwvbGk+CgkJPGxpPjxpPiRvcmRlcjwvaT4gY29udHJvbHMgdGhlIHdheSB0aGUgbGlzdCBvZiBlbGVtZW50cyBzaG91bGQgYmUgb3JkZXJlZC4gUG9zc2libGUgdmFsdWVzIGFyZSAibW9kaWZpZWQiLCAiY3JlYXRlZCIsICJuYW1lIiBvciBmYWxzZSAoaW4gd2hpY2ggY2FzZSB0aGUgaXRlbSBvcmRlciBkZWZpbmVkIGluIHRoZSBhZG1pbiBwYW5lbCBpcyB1c2VkKTwvbGk+CgkJPGxpPjxpPiRsaW1pdDwvaT4gY29udHJvbHMgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkPC9saT4KCQk8bGk+PGk+JGN1c3RvbXdoZXJlPC9pPiBhbmQgPGk+JGN1c3RvbXZhbHVlczwvaT4gYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlICR3aGVyZSBwYXJhbWV0ZXIuIFdoZW4geW91IHdhbnQgdG8gY3JlYXRlIGEgcXVlcnkgbW9yZSBjb21wbGljYXRlZCB0aGFuIHRoZSAkd2hlcmUgcGFyYW1ldGVyIGFsbG93cywgeW91IGNhbiBwcm92aWRlIHRoZSBzdHJpbmcgcXVlcnkgaW4gJGN1c3RvbXdoZXJlIGFuZCB0aGUgYXJyYXkgb2YgdmFsdWVzIGluICRjdXN0b212YWx1ZXMuPC9saT4KCQk8L3VsPgoJCTxwPkhvcGUgdGhpcyBnZXRzIHlvdSBnb2luZy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9uLCBvciB3aXNoIHRvIHNoYXJlIHRoZSBtb2RpZmljYXRpb25zIHlvdSd2ZSBkb25lLCBmZWVsIHRvIGNvbnRhY3QgbWUsIGVpdGhlciBhdCB0aGUgZm9yZ2Ugb3Igb24gdGhlIGZvcnVtLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTkiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBwdXQgc21hcnR5IHRhZ3MgaW4gdGhlIGl0ZW0ncyBmaWVsZHM/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5ZZXMuPC9wPgoJCTxwPkxldCdzIHNheSB5b3UgaGF2ZSBwcm9kdWN0cyB3aGljaCBoYXZlIGEgZGVzY3JpcHRpb24gZmllbGQsIGFuZCBpbiB0aGF0IGRlc2NyaXB0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIHB1dCBzb21lIHNtYXJ0eSBjb2RlLiBJZiB5b3UgdHJ5IGFuZCBwdXQsIHNheSwge3RpdGxlfSBpbiBhbiBhdHRlbXB0IHRvIGRpc3BsYXkgdGhlIHBhZ2UgdGl0bGUsIHlvdSBzaG91bGQgbm90aWNlIHRoYXQgInt0aXRsZX0iIHdpbGwgYmUgZGlzcGxheWVkIGV4YWN0bHkgbGlrZSB0aGF0IGluIHRoZSBwcm9kdWN0J3MgZGVzY3JpcHRpb24uIFRoYXQgaXMgYmVjYXVzZSBpdGVtcycgZmllbGRzIGFyZW4ndCBldmFsdWF0ZWQuPC9wPgoJCTxwPkhvd2V2ZXIsIGluIHlvdXIgdGVtcGxhdGUsIHlvdSBtYXkgY2hvb3NlIHRvIGV2YWx1YXRlIHRoZSBmaWVsZHMuIEZvciBleGFtcGxlLCBpbiB5b3VyIHRlbXBsYXRlLCBpZiBpbnN0ZWFkIG9mIHRoZSBzaW1wbGUgPGNvZGU+eyRpdGVtLT5kZXNjcmlwdGlvbn08L2NvZGU+IHlvdSB3cml0ZTo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+e2V2YWwgdmFyPSRpdGVtLT5kZXNjcmlwdGlvbn08L3ByZT4KCQk8cD5Zb3Ugd2lsbCB0aGVuIG5vdGljZSB0aGF0IHt0aXRsZX0gaXMgZXZhbHVhdGVkLCBhbmQgdGhlIHBhZ2UncyB0aXRsZSBpcyBkaXNwbGF5ZWQuPGJyLz4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTUiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgcmV0cmlldmUgaW1hZ2VzIGluIHRoZSBkaXNwbGF5IHRlbXBsYXRlcz88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPllvdSBwdXQgeyRpdGVtLT5pbWFnZWZpZWxkfSBpbiB5b3VyIHRlbXBsYXRlLCBhbmQgdGhlIGltYWdlIGRvZXNuJ3Qgc2hvdyB1cC4uLjwvcD4KCQk8cD5UaGF0J3MgcHJldHR5IG11Y2ggbm9ybWFsLiAkaXRlbS0+aW1hZ2VmaWVsZCBpcyBpdHNlbGYgYW4gb2JqZWN0LCB0aGF0IGhhcyBzZXZlcmFsIGF0dHJpYnV0ZXM6PC9wPgoJCTx1bD4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtmaWxlcGF0aCAocmVsYXRpdmUgdXJsKTwvbGk+CgkJCTxsaT4kaXRlbS0+aW1hZ2VmaWVsZC0mZ3Q7ZXh0ICh0aGUgZmlsZSBleHRlbnNpb24pPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDt1cmwgKGFic29sdXRlIHVybCk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3NpemUgKHNpemUgaW4gYnl0ZXMpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtzaXplX3dmb3JtYXQgKGZvcm1hdGVkIHNpemUpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtpbWFnZXNpemUgKGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3dpZHRoIChmb3IgaW1hZ2VzIG9ubHkpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtoZWlnaHQgKGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O2ltYWdlIChpbWFnZSB0YWc7IGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3RodW1ibmFpbCAodGh1bWJuYWlsIHVybCwgaWYgYXBwbGljYWJsZSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O2ZpbGVtdGltZSAobGFzdCBtb2RpZmllZCwgdW5peCB0aW1lKTwvbGk+CgkJCTxsaT4kaXRlbS0+aW1hZ2VmaWVsZC0mZ3Q7bW9kaWZpZWQgKGxhc3QgbW9kaWZpZWQsIGZvcm1hdGVkIHRpbWUpPC9saT4KCQk8L3VsPgoJCTxwPlRvIGRpc3BsYXkgdGhlIGltYWdlLCB5b3UgY2FuIHVzZSB7JGl0ZW0tPmltYWdlZmllbGQtPmltYWdlfSwgb3IgaWYgeW91IHdpc2ggbW9yZSBvcHRpb25zLCB5b3UgY2FuIGNyZWF0ZSB0aGUgaW1hZ2UgdGFnIHlvdXJzZWxmOjxici8+CgkJPHByZSBjbGFzcz0iY29kZSI+PDwvPmltZyBzcmM9InVwbG9hZHMveyRpdGVtLT5pbWFnZWZpZWxkLT5maWxlcGF0aH0iIGFsdD0iIi8+PC9wcmU+PC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTIiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgZGlzcGxheSB2YWx1ZXMgaW5zaWRlIGFuIEFycmF5PzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+SWYgeW91IGhhdmUgYSBsaXN0IGZpZWxkIHRoYXQgYWxsb3dzIG11bHRpcGxlIGNob2ljZXMgKGNoZWNrYm94ZXMgb3Igc2VsZWN0IGxpc3QpIGFuZCBzaW1wbHkgdXNlIHskaXRlbS0+ZmllbGRuYW1lfSBvciB7JGl0ZW0tPmZpZWxkbmFtZV9uYW1ldmFsdWV9IGluIHlvdXIgdGVtcGxhdGUsIHlvdSdsbCBwcm9iYWJseSBlbmQgdXAgd2l0aCB0aGlzIGJlaW5nIGRpc3BsYXllZDo8L3A+PHByZSBjbGFzcz0iY29kZSI+QXJyYXk8L3ByZT4KCQk8cD5UaGlzIGlzIG5vcm1hbC4gQXMgdGhlIGZpZWxkIGNvbnRhaW5zIChvciBjYW4gY29udGFpbikgbXVsdGlwbGUgdmFsdWVzLCBpdCBpcyBpbmRlZWQgYW4gYXJyYXkgb2YgdmFsdWVzLiBUbyBnZXQgdGhlIHZhbHVlcyB0aGVtc2VsdmVzLCB5b3UgaGF2ZSB0byBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcyBpbiBhIHdheSBsaWtlIHRoaXM6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPjw8Lz51bD4KCXtmb3JlYWNoIGZyb209JGl0ZW0tPmZpZWxkbmFtZV9uYW1ldmFsdWUgaXRlbT0ib25ldmFsdWUifQoJCTw8Lz5saT57JG9uZXZhbHVlfTw8Lz4vbGk+Cgl7L2ZvcmVhY2h9Cjw8Lz4vdWw+PC9wcmU+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTUiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgY2hhbmdlIHRoZSA8aT5kYXRlcyBkaXNwbGF5IGZvcm1hdDwvaT4/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5Qb3N0ZWQgQnk6IFNvbHV0aWMgb24gRGF0ZTogMjAwOS0wNS0wNyAxMDozMTxici8+CgkJVXNlOiA8Y29kZT57JGl0ZW0tPnlvdXJWYXJ8ZGF0ZV9mb3JtYXQ6IiVIOiVNIn08L2NvZGU+PC9wPgoJCTxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hcnR5Lm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UubW9kaWZpZXIuZGF0ZS5mb3JtYXQucGhwIj5TZWUgdGhlIHNtYXJ0eSBlbnRyeSBhYm91dCBkYXRlIGZvcm1hdCBtb2RpZmllcjwvYT4gb3IgdGhlIG1vc3QgdXNlZnVsIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hcnR5Lm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UubW9kaWZpZXJzLnBocCI+c21hcnR5IGxpc3Qgb2YgdmFyaWFibGUgbW9kaWZpZXJzPC9hPi48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTgiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgZm9ybWF0IHRoZSBwYWdlIG1lbnU/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5UaGUgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIHBhZ2VtZW51IGlzIHNwbGl0X2ludG9fcGFnZXMgKGluIG1vZHVsZSBmaWxlKSwgYnV0IHlvdSBzaG91bGQgYmUgYWJsZSB0byBmb3JtYXQgaXQgdGhlIHdheSB5b3UgbGlrZSB3aXRob3V0IG1vZGlmeWluZyB0aGUgZnVuY3Rpb24uPC9wPgoJCTxwPjxiPkNsYXNzZXMgYW5kIENTUzwvYj48YnIvPgoJCVRoZSBwYWdlbWVudSBpcyBpbiBhIGRpdiB3aXRoIGNsYXNzICJwYWdpbmF0aW9uIi4gRWFjaCBwYWdlIG51bWJlciBpcyBhbiBhbmNob3IoPDwvPmE+KSB3aXRoIGNsYXNzICJwYWdlbnVtYmVyIiwgYW5kIHRoZSBjdXJyZW50IHBhZ2UgYWxzbyBoYXMgdGhlIGNsYXNzICJjdXJyZW50Ii4gVGhlICIuLi4iIHNob3duIHdoZW4gdGhlcmUgYXJlIHRvbyBtYW55IHBhZ2VzIGFyZSBzcGFucyB3aXRoIHRoZSBjbGFzcyAicGFnZW1lbnVvdmVyZmxvdyIsIGFuZCB0aGUgbGVmdCBhbmQgcmlnaHQgYXJyb3dzIGFyZSBhbmNob3JzIHJlc3BlY3RpdmVseSB3aXRoIGNsYXNzZXMgInByZXZpb3VzbGluayIgYW5kICJuZXh0bGluayIuPGJyLz4KCQlZb3UgbWF5IHVzZSB0aGVzZSBjbGFzc2VzIHRvIHN0eWxlIHlvdXIgcGFnZSBtZW51LiBZb3UgY2FuIGZpbmQgZXhhbXBsZXMgb2Ygc3R5bGVzIDxhIGhyZWY9Imh0dHA6Ly93d3cubWlzLWFsZ29yaXRtb3MuY29tLzIwMDcvMDMvMTYvc29tZS1zdHlsZXMtZm9yLXlvdXItcGFnaW5hdGlvbi8iIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPiAoSSB0cmllZCB0byB1c2UgdGhlIHNhbWUgY2xhc3NlcywgYnV0IGZvciB1bmlmb3JtaXR5IHJlYXNvbnMgSSBkaWRuJ3QgdXNlIHNwYW5zLCBzbyBkb3VibGUtY2hlY2sgdGhlIGNzcykuPC9wPgoJCTxwPjxiPlN0cmluZ3M8L2I+PGJyLz4KCQlUbyBjaGFuZ2UgdGhlIHBhZ2UgZGVsaW1pdGVyICgifCIpIG9yIHRoZSAiLi4uIiwgbG9vayBhdCB0aGUgZmlyc3QgbGluZXMgbGFuZ3VhZ2UgZmlsZXMsIHJlc3BlY3RpdmVseSBhdCB0aGUgZW50cmllcyAicGFnZW1lbnVkZWxpbWl0ZXIiIGFuZCAicGFnZW1lbnVvdmVyZmxvdyIuPGJyLz4KCQlBcyBmb3IgdGhlICZsdDsgYW5kICZndDssIHRoZXkgYXJlIGhhcmQtY29kZWQgaW4gdGhlIGZ1bmN0aW9uIHNwbGl0X2ludG9fcGFnZXMsIGJ1dCBpdCBzaG91bGRuJ3QgYmUgdG9vIGRpZmZpY3VsdCB0byBjaGFuZ2UuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyMiI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBkaXNwbGF5IGEgbGlzdCBvZiBlbGVtZW50cyBzb3J0ZWQgaW4gYSBjZXJ0YWluIHdheT88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPldlIHdpbGwgbG9vayBhdCBob3cgdG8gY3JlYXRlIGEgbGlzdCBvZiBzb3J0ZWQgZWxlbWVudHMgaW4gdGhlIGZvbGxvd2luZyB3YXk6PC9wPgoJCTx1bD4KCQkJPGxpPltTb3J0aW5nIGZpZWxkXTx1bD4KCQkJCTxsaT5bZWxlbWVudF08L2xpPgoJCQkJPGxpPltlbGVtZW50XTwvbGk+CgkJCQk8bGk+W2VsZW1lbnRdPC9saT4KCQkJPC91bD48L2xpPgoJCQk8bGk+W1NvcnRpbmcgZmllbGRdPHVsPgoJCQkJPGxpPltlbGVtZW50XTwvbGk+CgkJCQk8bGk+Li4uPC9saT4KCQkJPC91bD48L2xpPgoJCTwvdWw+CgkJPHA+VGhlIGJhc2ljIGlkZWEgd2lsbCBiZSB0byBvcmRlciBlbGVtZW50cyBieSB0aGUgc29ydGluZyBmaWVsZCwgYW5kIG5vdGljZSB3aGVuIHRoZXJlJ3MgYSBjaGFuZ2UuPC9wPjxici8+CgkJPHA+PGI+T3JkZXIgYnkgcGFyZW50czwvYj48YnIvPgoJCUNyZWF0ZSB0aGUgZm9sbG93aW5nIHRlbXBsYXRlICh3aGljaCBJJ2xsIGNhbGwgIm9yZGVyX2J5X3BhcmVudHMiKTo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJCTw8Lz51bD4KCQkJe2Fzc2lnbiB2YXI9InBhcmVudGZsYWciIHZhbHVlPWZhbHNlfQoJCQl7Zm9yZWFjaCBmcm9tPSRpdGVtbGlzdCBpdGVtPSJpdGVtIn0KCQkJCXtpZiAkaXRlbS0+cGFyZW50X25hbWUgIT0gJHBhcmVudGZsYWd9CgkJCQkJe2lmICRwYXJlbnRmbGFnfTw8Lz4vdWw+PDwvPi9saT57L2lmfQoJCQkJCTw8Lz5saT57JGl0ZW0tPnBhcmVudF9uYW1lfTw8Lz51bD4KCQkJCQl7YXNzaWduIHZhcj0icGFyZW50ZmxhZyIgdmFsdWU9JGl0ZW0tPnBhcmVudF9uYW1lfQoJCQkJey9pZn0KCQkJCTw8Lz5saT57JGl0ZW0tPm5hbWV9PDwvPi9saT4KCQkJey9mb3JlYWNofQoJCQk8PC8+L3VsPgoJCTwvcHJlPgoJCTxwPmFuZCBjYWxsIGl0IHVzaW5nIHtjbXNfbW9kdWxlIG1vZHVsZT0ibXltb2R1bGUiIHdoYXQ9Iml0ZW0iIGxpc3R0ZW1wbGF0ZT0ib3JkZXJfYnlfcGFyZW50cyJ9PC9wPgoJCTxwPjxiPk9yZGVyIGJ5IGZpZWxkPC9iPjxici8+CgkJTGV0J3Mgc2F5IHlvdXIgbGV2ZWwgaGFzIGEgZHJvcGRvd24gZmllbGQgbmFtZWQgIm15ZmllbGQiLCBhbmQgeW91IHdpc2ggdG8gbGlzdCBlbGVtZW50cyBzb3J0ZWQgb24gdGhhdCBmaWVsZC4gQ3JlYXRlIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGUgKHdoaWNoIEknbGwgY2FsbCAib3JkZXJfYnlfbXlmaWVsZCIpOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkJPDwvPnVsPgoJCQl7YXNzaWduIHZhcj0iZmllbGRmbGFnIiB2YWx1ZT1mYWxzZX0KCQkJe2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT0iaXRlbSJ9CgkJCQl7aWYgJGl0ZW0tPm15ZmllbGQgIT0gJGZpZWxkZmxhZ30KCQkJCQl7aWYgJGZpZWxkZmxhZ308PC8+L3VsPjw8Lz4vbGk+ey9pZn0KCQkJCQk8PC8+bGk+eyRpdGVtLT5teWZpZWxkfTw8Lz51bD4KCQkJCQl7YXNzaWduIHZhcj0iZmllbGRmbGFnIiB2YWx1ZT0kaXRlbS0+bXlmaWVsZH0KCQkJCXsvaWZ9CgkJCQk8PC8+bGk+eyRpdGVtLT5uYW1lfTw8Lz4vbGk+CgkJCXsvZm9yZWFjaH0KCQkJPDwvPi91bD4KCQk8L3ByZT4KCQk8cD5hbmQgY2FsbCBpdCB1c2luZyB7Y21zX21vZHVsZSBtb2R1bGU9Im15bW9kdWxlIiB3aGF0PSJpdGVtIiBsaXN0dGVtcGxhdGU9Im9yZGVyX2J5X215ZmllbGQiIG9yZGVyYnk9Im15ZmllbGQifTwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTI0Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGNhbiBJIGdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgY2F0ZWdvcnk/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3UncmUgZGlzcGxheWluZyBhIGxpc3QgdmlldyBvZiBoaWdoZXItbGV2ZWwgb2JqZWN0cyAobGlrZSBjYXRlZ29yaWVzKSwgeW91IGNhbiBzaW1wbHkgdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JGl0ZW0tPm5iY2hpbGRyZW59PC9wcmU+CgkJPHA+KHByb3ZpZGVkIGl0IGlzIGxvYWRlZCAtIHNlZSB0aGUgc2V0dGluZ3MgdGFiKTwvcD4KCQk8cD4kaXRlbS0+bmJjaGlsZHJlbiBnaXZlcyB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoaXMgdmVyeSAkaXRlbSBoYXMgKG5vdCB0aGUgY2F0ZWdvcnkgdGhpcyBpdGVtIGlzIGluKS4gSW4gb3RoZXIgd29yZHMsIGlmIHlvdSdyZSBvbiB0aGUgZmluYWwgbGV2ZWwsIHlvdSBjYW5ub3QgdXNlIHRoaXMgYXR0cmlidXRlIChmb3IgZmluYWwgbGV2ZWwgaXRlbXMgaGF2ZSBubyBjaGlsZHJlbikuPC9wPgoJCTxwPklmIHRoYXQncyB0aGUgY2FzZSwgYW5kIHlvdSB3aXNoIHRvIGdldCB0aGUgbnVtYmVyIG9mIGl0ZW1zIHlvdXIgYXJlIGRpc3BsYXlpbmcsIHlvdSBjYW4gdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JGl0ZW1jb3VudH08L3ByZT4KCQk8cD5JZiB5b3Ugc2VwYXJhdGUgeW91ciBjb250ZW50IGludG8gcGFnZXMsICRpdGVtY291bnQgd2lsbCBzaG93IHRoZSBudW1iZXIgb2YgaXRlbXMgY3VycmVudGx5IGRpc3BsYXllZCBvbiB0aGUgcGFnZS4gVG8gZ2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgd2hlbiBzZXBhcmF0aW5nIGludG8gcGFnZXMsIHlvdSBjYW4gdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JHBhZ2VfdG90YWxpdGVtc308L3ByZT4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InE2Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SSdtIHRyeWluZyB0byBkaXNwbGF5IGEgbGlzdCBvZiBpdGVtcywgYnV0IHRoZSBkZXRhaWwgdGVtcGxhdGUgaXMgdXNlZCBpbnN0ZWFkLiBXaGF0J3MgZ29pbmcgb24/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3UncmUgb24gdGhlIGZpbmFsIGxldmVsIGFuZCB0aGVyZSdzIG9ubHkgb25lIGl0ZW0gdG8gc2hvdywgdGhlIG1vZHVsZSB3b24ndCBkaXNwbGF5IHRoZSBsaXN0IHZpZXcgYnV0IHdpbGwgaW1tZWRpYXRlbHkgc2hvdyB0aGUgZGV0YWlscyBvZiB0aGlzIGl0ZW0sIHNvIHRoYXQgdGhlIHVzZXIgZG9lc24ndCBoYXZlIHRvIGNsaWNrIHR3aWNlIGZvciBubyByZWFzb24uPC9wPgoJCTxwPklmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGxpc3QgdmlldyBhbnl3YXksIHRoZXJlIGlzIG5vdyAgYSAiZm9yY2VsaXN0IiBwYXJhbWV0ZXIgdGhhdCB3aWxsIGRvIHRoZSBqb2IgKHNlZSB0aGUgaGVscCBvZiB5b3VyIG1vZHVsZSkuIFlvdXIgdGFnIHNob3VsZCBiZWNvbWU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPntjbXNfbW9kdWxlIG1vZHVsZT0icHJvZHVjdHMiIHdoYXQ9InByb2R1Y3QiIGZvcmNlbGlzdD0iMSJ9PC9wcmU+CgkJPHA+VG8gc2V0IGZvcmNlbGlzdCB0byB0cnVlIGJ5IGRlZmF1bHQsIDxhIGhyZWY9IiNxOCI+bG9vayBoZXJlPC9hPi48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMjMiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5BZG1pbiBwYW5lbCBicmVha3Mgd2hlbiBJIGFkZCBhbiBpbWFnZSB0byBhbiBpdGVtLiBXaGF0J3MgZ29pbmcgb24/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5EdXJpbmcgbW9kdWxlIGNyZWF0aW9uLCB5b3UgY2hvc2UgZm9yIGVhY2ggbGV2ZWwgd2hpY2ggZmllbGRzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgYWRtaW4gcGFuZWwgbGlzdCBvZiBpdGVtcy4gSW4gdGhlIGhlbHAgdGFiIG9uIHRoaXMgc3RlcCBvZiB0aGUgbW9kdWxlIGNyZWF0aW9uLCBpdCB3YXMgc3BlY2lmaWNhbGx5IHdyaXR0ZW4gdGhhdCB5b3UgY2Fubm90IG5vcm1hbGx5IHVzZSBmaWxlIGZpZWxkcyBpbiB0aGUgYWRtaW4gcGFuZWwgbGlzdHMgKHRvIGRvIHNvLCB5b3Ugd291bGQgaGF2ZSB0byBhZGQgYSBjb25kaXRpb24gaW4gYWRtaW5wYW5lbC50cGwgYXMgZXhwbGFpbmVkIDxhIGhyZWY9IiNxNyI+aGVyZTwvYT4pLjwvcD4KCQk8cD5SZW1vdmUgdGhlIGZpbGUgZmllbGQgZnJvbSB0aGUgYWRtaW4gcGFuZWwgdmlldy48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4JCgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMjEiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBpbnRlZ3JhdGUgdGhlIDxpPkNvbW1lbnRzPC9pPiBtb2R1bGU/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD48Yj5ZZXMuPC9iPiBJbiBmYWN0LCB0aGUgQ29tbWVudHMgbW9kdWxlIG1ha2VzIHRoaXMgdmVyeSBlYXN5IGZvciBhbnkgb3RoZXIgbW9kdWxlLjwvcD4KCQk8cD5PcGVuIHRoZSBkZXRhaWwgdGVtcGxhdGUgZm9yIHlvdXIgbGFzdCBsZXZlbCBlbGVtZW50cywgYW5kIHNpbXBseSBhZGQgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+e2Ntc19tb2R1bGUgbW9kdWxlPSJjb21tZW50cyIgbW9kdWxlbmFtZT0iTkFNRU9GWU9VUk1PRFVMRSIgcGFnZWlkPSRpdGVtLT5pZH08L3ByZT4KCQk8cD5XaGVyZSBOQU1FT0ZZT1VSTU9EVUxFIGlzLCBvZiBjb3Vyc2UsIHRoZSBuYW1lIG9mIHlvdXIgbW9kdWxlLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExMSI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPldhcm5pbmc6IG1vZHVsZSAiaXMgbm90IHByb3Blcmx5IGNsZWFuaW5nIGlucHV0IHBhcmFtcy4iIFdoYXQncyBnb2luZyBvbj88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDsiPlsqKiogVGhhbmtzIHRvIGlrdWxpcywgdGhpcyB3YXMgZGVmaW5pdGVseSBmaXhlZCBpbiAxLjguNC4yIGFuZCBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtIGFueW1vcmUgKioqXTwvcD4KCQk8cD5UaGUgYWR2YW5jZWQgc2VhcmNoIGZvcm0gd291bGQgbmVlZCB0byByZWdpc3RlciBhIHBhcmFtIGZvciBlYWNoIGZpZWxkIG9mIGVhY2ggbGV2ZWwsIHdoaWNoIEkgZmluZCByYXRoZXIgaW5lbGVnYW50LiBGb3IgdGhhdCByZWFzb24gdGhlIFJlc3RyaWN0VW5rbm93blBhcmFtcyBvcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQuPC9wPgoJCTxwPjxiPklmIHlvdSBhcmUgbm90IHVzaW5nIHRoZSBhZHZhbmNlZCBzZWFyY2ggZm9ybTwvYj4sIHlvdSBjYW4gc2FmZWx5IGFjdGl2YXRlIHRoZSBSZXN0cmljdFVua25vd25QYXJhbXMoKSBvcHRpb24uIEVkaXQgdGhlIG1vZHVsZSBmaWxlIChtb2R1bGVuYW1lLm1vZHVsZS5waHApLCBmaW5kIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24sIGFuZCBlZGl0IHRoZSBmb2xsb3dpbmcgbGluZSA6CgkJPHByZSBjbGFzcz0iY29kZSI+CQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKGZhbHNlKTs8L3ByZT4KCQl0bzoKCQk8cHJlIGNsYXNzPSJjb2RlIj4JCSR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTs8L3ByZT48L3A+CgkJPHA+PGI+SWYgeW91IGRvIHVzZSB0aGUgYWR2YW5jZWQgc2VhcmNoPC9iPiwgSSB3b3VsZCBzdWdnZXN0IGRpc2FibGluZyB0aGUgIkFsbG93IHBhcmFtZXRlciBjaGVja3MgdG8gY3JlYXRlIHdhcm5pbmcgbWVzc2FnZXMiIGluIHRoZSBDTVMgR2xvYmFsIFNldHRpbmdzLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExMyI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSByZXRyaWV2ZSBpbmZvcm1hdGlvbnMgYWJvdXQgYW4gb2JqZWN0IG90aGVyIHRoYW4gdGhlIG9uZSBJJ20gd2F0Y2hpbmc/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JbiBhbnkgbW9kdWxlIHRlbXBsYXRlLCB5b3UgY2FuIHJldHJpZXZlIGEgd2hvbGUgaXRlbSBvYmplY3QgdXNpbmcgdGhlIGZvbGxvd2luZyBzbWFydHkgdGFnOiA8Y29kZT57TU9EVUxFTkFNRV9nZXRfbGV2ZWxpdGVtfTwvY29kZT4uPC9wPgoJCTxwPlRoZSB0YWcgcmVxdWlyZXMgMyBwYXJhbWV0ZXJzIDogd2hhdCAocmV0cmlldmUgYW4gaXRlbSBmcm9tIHdoaWNoIGxldmVsKSwgYWxpYXMgKHRoZSBpdGVtJ3MgYWxpYXMpIGFuZCBhc3NpZ24gKGluIHdoaWNoIHNtYXJ0eSB2YXJpYWJsZSB0aGlzIHNob3VsZCBiZSBzdG9yZWQpLjxici8+CgkJU28gYSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgkJe215bW9kdWxlX2dldF9sZXZlbGl0ZW0gd2hhdD0iY2F0ZWdvcnkiIGFsaWFzPSJteWZpcnN0Y2F0ZWdvcnkiIGFzc2lnbj0iY2F0b2JqZWN0In08L3ByZT4KCQk8cD5BbmQgeW91IGNhbiB0aGVuIHVzZSB0aGUgYXNzaWduZWQgb2JqZWN0IHRvIGRpc3BsYXkgaW5mb3JtYXRpb246PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgkJeyRjYXRvYmplY3QtPm5hbWV9PC9wcmU+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQkKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTEiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgdGhlIGZpZWxkIGlucHV0cyB0aGF0IGFyZSBkaXNwbGF5ZWQgaW4gdGhlIG1vZHVsZSdzIGFkdmFuY2VkIHNlYXJjaCBmb3JtPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+PGI+WWVzLjwvYj48L3A+CgkJPHA+RnJvbSBDVExNb2R1bGVNYWtlciAxLjguMywgaXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIHdoaWNoIGZpZWxkcyB3aWxsIGJlIHNob3duIGluIHRoZSBhZHZhbmNlZCBzZWFyY2ggZm9ybSB1cG9uIGZpZWxkIGNyZWF0aW9uLiBJZiB5b3UgaGF2ZSBjcmVhdGVkIHlvdXIgbW9kdWxlIHdpdGggYW4gZWFybGllciB2ZXJzaW9uIG9yIGRvIG5vdCB3YW50IHRvIGNyZWF0ZSBpdCBhZ2FpbiwgdGhlcmUncyBhbm90aGVyIHdheSBhcm91bmQuPC9wPgoJCTxwPlRoZSBzZWFyY2ggZm9ybSBmb3IgdGhlIG1vZHVsZSdzIHNlYXJjaCBhY3Rpb24gYXJlIGdlbmVyYXRlZCBmcm9tIHRlbXBsYXRlcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgInRlbXBsYXRlcyIgZm9sZGVyIG9mIHlvdXIgbW9kdWxlLjwvcD4KCQk8cD5UaGUgInNlYXJjaC50cGwiIGZpbGUgaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgc2VhcmNoIGZvcm0gd2hlbiB0aGUgInNpbXBsZSIgc2VhcmNobW9kZSBpcyBjaG9zZW4uPC9wPgoJCTxwPlRoZSAic2VhcmNoX2dlbmVyYWxyZXN1bHRzLnRwbCIgZmlsZSBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBzZWFyY2ggcmVzdWx0cyB3aGVuIHdlIGFyZSBzZWFyY2hpbmcgaW4gbW9yZSB0aGFuIG9uZSBsZXZlbCBhdCB0aGUgc2FtZSB0aW1lLiBPdGhlcndpc2UsIHRoZSBsZXZlbCdzIGRlZmF1bHQgbGlzdCBtb2R1bGUgaXMgdXNlZC48L3A+CgkJPHA+Rm9yIGVhY2ggbGV2ZWwgb2YgeW91ciBtb2R1bGUsIHRoZXJlIHNob3VsZCBiZSBhIGZpbGUgbmFtZWQgInNlYXJjaF9OQU1FT0ZUSEVMRVZFTC50cGwiLiBUaGlzIGNvbnRhaW5zIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGFkdmFuY2VkIHNlYXJjaCBmb3JtIGZvciB0aGlzIGxldmVsLiBJZiB5b3Ugd2FudCB0byByZW1vdmUgYSBmaWVsZCBpbnB1dCBmcm9tIHRoZSBzZWFyY2ggZm9ybSwgeW91IGNhbiBzaW1wbHkgZGVsZXRlIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIHRoZSB0ZW1wbGF0ZS4gKEkgd291bGQgcmVjb21tYW5kIHRvIG1ha2UgYSBiYWNrdXAgb2YgdGhlIG9yaWdpbmFsIHRlbXBsYXRlLCBpZiB5b3UgZXZlciBjaGFuZ2UgeW91ciBtaW5kISk8L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoJCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTQiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgdGhlIGVkaXQgZm9ybSBmb3IgYSBsZXZlbD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPjxiPlllcy48L2I+PC9wPgoJCTxwPlRoZSBlZGl0IGZvcm1zIGZvciBlYWNoIGxldmVsIGFyZSBnZW5lcmF0ZWQgZnJvbSB0ZW1wbGF0ZXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlICJ0ZW1wbGF0ZXMiIGZvbGRlciBvZiB5b3VyIG1vZHVsZS4gRm9yIGVhY2ggbGV2ZWwgb2YgeW91ciBtb2R1bGUsIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGVkaXQgZm9ybXJlIHNob3VsZCBiZSBpbiBhIGZpbGUgbmFtZWQgImVkaXRQUkVGSVhPRlRIRUxFVkVMLnRwbCIuPC9wPgoJCTxwPllvdSBjYW4gbW9kaWZ5IHRoZSB0ZW1wbGF0ZSwgYnV0IGtlZXAgdHdvIHRoaW5ncyBpbiBtaW5kOjxici8+CgkJLSBJZiB5b3UgcmVtb3ZlIGFuIGlucHV0LCB0aGUgZm9ybSBtaWdodCBub3Qgd29yayBhbnltb3JlLjxici8+CgkJLSBJZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhlIGZpZWxkIGxhYmVscywgeW91IHNob3VsZCBwcmVmZXJhYmx5IGRvIHNvIGluIHRoZSBsYW5ndWFnZSBmaWxlLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgkKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTciPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBhZGQgYSBjb25kaXRpb24gZm9yIGFuZCBlbGVtZW50J3MgaW5wdXQgdG8gYmUgYWNjZXB0ZWQ/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5PbmUgb2YgeW91ciBsZXZlbCBoYXMsIGZvciBleGFtcGxlLCBhIG51bWVyaWMgZmllbGQgKHdoaWNoIHdlJ2xsIGNhbGwgIm15ZmllbGQiKSwgYW5kIHlvdSB3aXNoIHRvIG1ha2Ugc3VyZSBpdCdzIGJldHdlZW4sIHNheSwgMCBhbmQgMTAwPyBPZiBjb3Vyc2UgaXQncyBwb3NzaWJsZSwgYnV0IHlvdSdsbCBuZWVkIHRvIGVkaXQgdGhlIGNvZGUuPC9wPgoJCTxwPk9wZW4gdGhlIGVkaXQgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGxldmVsIChhY3Rpb24uZWRpdExFVkVMUFJFRklYLnBocCkuIFNvbWV3aGVyZSBub3Qgc28gZmFyIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSwgeW91IHdpbGwgZmluZCB0aGUgZm9sbG93aW5nIGNvZGUgOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkvLyBDSEVDSyBJRiBUSEUgTkVFREVEIFZBTFVFUyBBUkUgVEhFUkUKIzEJCWlmKAkhaXNzZXQoJHBhcmFtc1siaXRlbW5hbWUiXSkgfHwgJHBhcmFtc1siaXRlbW5hbWUiXSA9PSAiIiApewojMgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpKTsKIzMJCX1lbHNlaWYoZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9tb2R1bGVuYW1lX2l0ZW0iLCAkaXRlbS0+YWxpYXMsIGlzc2V0KCRwYXJhbXNbIml0ZW1pZCJdKT8kcGFyYW1zWyJpdGVtaWQiXTpmYWxzZSkpewojNAkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX2FscmVhZHlleGlzdHMiKSk7CiM1CQl9ZWxzZXsKCQkjIyMjIyMjIyMjIyMgRE9JTkcgVEhFIFVQREFURQoJCTwvcHJlPgoJCTxwPkhlcmUgdHdvIGNvbmRpdGlvbnMgYXJlIGNoZWNrZWQgYmVmb3JlIHVwZGF0aW5nL2FkZGluZyB0aGUgZWxlbWVudDogZmlyc3QsIG9uIGxpbmUgIzEsIHdlIGNoZWNrIGlmIGEgbmFtZSB3YXMgZ2l2ZW4gKGFuZCBhbnkgb3RoZXIgbWFuZGF0b3J5IHZhbHVlLCBpZiBhbnkpLCBhbmQgaWYgaXQgd2Fzbid0LCB3ZSBkaXNwbGF5IGFuIGVycm9yIChsaW5lICMyKS4gT24gbGluZSAjMywgd2UgY2hlY2sgaWYgYW5vdGhlciBlbGVtZW50IGFscmVhZHkgaGFzIHRoZSBzYW1lIGFsaWFzIGFuZCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgKGxpbmUgIzQpIGlmIGl0IGlzIHRoZSBjYXNlLiBJZiBubyBwcm9ibGVtIGlzIG1ldCwgd2UgZ2V0IHRvIGxpbmUgIzUgYW5kIGdvIG9uIHdpdGggdGhlIHVwZGF0ZS48L3A+CgkJPHA+QmFzaWNhbGx5LCB5b3UgY2FuIGFkZCBhbnkgY29uZGl0aW9uIHlvdSBsaWtlIHRvIHRoZXNlLiBTbyB3aXRoIG91ciBleGFtcGxlLCBpdCBjb3VsZCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJLy8gQ0hFQ0sgSUYgVEhFIE5FRURFRCBWQUxVRVMgQVJFIFRIRVJFCgkJaWYoCSFpc3NldCgkcGFyYW1zWyJpdGVtbmFtZSJdKSB8fCAkcGFyYW1zWyJpdGVtbmFtZSJdID09ICIiICl7CgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpKTsKCQl9ZWxzZWlmKGZhbHNlID09ICR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfbW9kdWxlbmFtZV9pdGVtIiwgJGl0ZW0tPmFsaWFzLCBpc3NldCgkcGFyYW1zWyJpdGVtaWQiXSk/JHBhcmFtc1siaXRlbWlkIl06ZmFsc2UpKXsKCQkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfYWxyZWFkeWV4aXN0cyIpKTsKCQl9ZWxzZWlmKCBmYWxzZSA9PSAoJGl0ZW0tPm15ZmllbGQgPiAwICYmICRpdGVtLT5teWZpZWxkIDw9IDEwMCkgKXsKCQkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygibXlfY3VzdG9tX2Vycm9yX21lc3NhZ2UiKSk7CgkJfWVsc2V7CgkJIyMjIyMjIyMjIyMjIERPSU5HIFRIRSBVUERBVEUKCQk8L3ByZT4KCQk8cD5XZSBqdXN0IGNoZWNrIGlmIHRoZSBmaWVsZCBpcyBvdmVyIDAgYW5kIGJlbG93L2VxdWFsIHRvIDEwMC4gSWYgaXQgaXMsIHdlIGdvIG9uIHdpdGggdGhlIHN1Ym1pc3Npb24uIE90aGVyd2lzZSB3ZSBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgKHdoaWNoIHlvdSdkIG5lZWQgdG8gYWRkIHRvIHRoZSBsYW5ndWFnZSBmaWxlcywgb3RoZXJ3aXNlIHlvdSBjYW4gaGFyZGNvZGUgdGhlIGVycm9yIG1lc3NhZ2UuLi4pPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InE3Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGFyZSB0aGUgZGVmYXVsdGFkbWluIHBhbmVscyBnZW5lcmF0ZWQ/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3Ugb3BlbiB0aGUgL3RlbXBsYXRlcy8gZm9sZGVyLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCB0aGVyZSdzIG9ubHkgb25lIHRlbXBsYXRlIGZvciB0aGUgZGVmYXVsdGFkbWluIDogYWRtaW5wYW5lbC50cGwuIFRoaXMgaXMgdXNlZCBmb3IgYWxsIGxldmVscy4gU28gdGhlIGRpZmZlcmVuY2UgaXMgdGhlIGluZm9ybWF0aW9uIHBhc3NlZCB0byB0aGUgdGVtcGxhdGUuIEJlZm9yZSB0YWtpbmcgYSBsb29rIGF0IGl0LCBsZXQncyBzZWUgdGhhdCBpbmZvcm1hdGlvbi48YnIvPgoJCU9wZW4gdGhlIGFjdGlvbi5kZWZhdWx0YWRtaW4ucGhwIG9mIHlvdXIgbW9kdWxlLiBZb3Ugd2lsbCBub3RpY2UgdGhhdCBpdCBpcyBkaXZpZGVkIGludG8gdGFicyAoZGVsaW1pdGVkIGJ5IDxjb2RlPmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJuYW1lb2ZsZXZlbCIpOzwvY29kZT4gYW5kIDxjb2RlPmVjaG8gJHRoaXMtPkVuZFRhYigpOzwvY29kZT4pLiBGb3IgZWFjaCBsZXZlbCB0YWIsIHRoZSBsaXN0IG9mIGl0cyBpdGVtcyBpcyBmZXRjaGVkIGFuZCBzdG9yZWQgaW50byA8Y29kZT4kaXRlbWxpc3Q8L2NvZGU+LCB3aGljaCBpcyB0aGVuIHBhc3NlZCB0byBzbWFydHkuICRpdGVtbGlzdCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIGhhdmluZyB5b3VyIGZpZWxkcyBhcyBhdHRyaWJ1dGVzICgkaXRlbS0+ZmllbGQpLjxici8+CgkJSnVzdCBiZWxvdyB0aGF0LCB5b3Ugd2lsbCBub3RpY2UgbGluZXMgdGhhdCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJJGFkbWluc2hvdyA9IGFycmF5KAoJCQlhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpLAoJCQlhcnJheSgkdGhpcy0+TGFuZygiYWxpYXMiKSwiYWxpYXMiLGZhbHNlKSwKCQkJYXJyYXkoJHRoaXMtPkxhbmcoImFjdGl2ZSIpLCJ0b2dnbGVhY3RpdmUiLHRydWUpLAoJCQlhcnJheSgkdGhpcy0+TGFuZygibmJjaGlsZHJlbiIpLCJuYmNoaWxkcmVuIixmYWxzZSksCgkJCWFycmF5KCR0aGlzLT5MYW5nKCJyZW9yZGVyIiksIm1vdmVsaW5rcyIsdHJ1ZSksCgkJCWFycmF5KCR0aGlzLT5MYW5nKCJBY3Rpb25zIiksImRlbGV0ZWxpbmsiLHRydWUpCQkKCQkJKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkbWluc2hvdyIsICRhZG1pbnNob3cpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidGFibGVpZCIsICJsZXZlbG5hbWVfdGFibGUiKTsKCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImFkbWlucGFuZWwudHBsIik7PC9wcmU+CgkJPHA+VGhlIDxjb2RlPiRhZG1pbnNob3c8L2NvZGU+IHZhcmlhYmxlIGNvbnRhaW5zIHdoYXQgc2hvdWxkIGJlIHNob3duIGluIHRoZSBhZG1pbnBhbmVsIG9mIHRoYXQgbGV2ZWwuIFdlIHRoZW4gcGFzcyB0aGlzIHZhcmlhYmxlIHRvIHNtYXJ0eSAoYW5kIGFsc28gYSBuYW1lIGZvciB0aGUgdGFibGUpLCBhbmQgdGhlIGxhc3QgbGluZSB0ZWxscyBzbWFydHkgdG8gZGlzcGxheSB0aGUgdGVtcGxhdGUgImFkbWlucGFuZWwudHBsIi48YnIvPgoJCSRhZG1pbnNob3cgaXMgYW4gYXJyYXksIHdoZXJlIGVhY2ggZWxlbWVudCByZXByZXNlbnRzIGEgY29sdW1uIG9mIHRoZSBhZG1pbnBhbmVsLiBFYWNoIGNvbHVtbiwgaW4gdHVybiwgaXMgYW4gYXJyYXkgY29udGFpbmluZyB0aHJlZSB2YWx1ZXM6IHRoZSBmaXJzdCAocG9zaXRpb24gMCkgaXMgdGhlIHRpdGxlIG9mIHRoZSBjb2x1bW4sIGFuZCB0aGUgc2Vjb25kIChwb3NpdGlvbiAxKSBpcyB0aGUgbmFtZSBvZiB0aGUgb2JqZWN0J3MgZmllbGQgdGhhdCBzaG91bGQgYmUgc2hvd24gaW4gdGhpcyBjb2x1bW4sIGFuZCB0aGUgdGhpcmQgKHBvc2l0aW9uIDIpIGlzIHdoZXRoZXIgdGhlIGluc3RhbnQgc2VhcmNoICh0aGUgc2VhcmNoYm94IGp1c3QgYXQgdGhlIHRvcCBvZiB0aGUgYWRtaW5wYW5lbCkgc2hvdWxkIHNraXAgdGhpcyBjb2x1bW4uPC9wPgoJCTxwPkZvciBleGFtcGxlLCA8Y29kZT5hcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpPC9jb2RlPiBtZWFucywgaGVyZSwgdGhhdCB3ZSB0YWtlICR0aGlzLT5MYW5nKCJuYW1lIikgKCJuYW1lIiBpbiB0aGUgbGFuZ3VhZ2UgdGhhdCBpcyBjdXJyZW50bHkgZGlzcGxheWVkKSB0byBiZSB0aGUgdGl0bGUgb2YgdGhlIGNvbHVtbiwgYW5kIHRoYXQgZm9yIGVhY2ggcm93IG9mIHRoZSB0YWJsZSwgd2hhdGV2ZXIgaXMgaW4gJG9uZWl0ZW0tPmVkaXRsaW5rIHdpbGwgYmUgZGlzcGxheWVkICh0aGlzIHBhcnRpY3VsYXIgdmFsdWUgaXMgbm90IHN0cmljdGx5IHNwZWFraW5nIGEgZmllbGQgb2YgdGhlIGxldmVsLCBidXQgYW4gYXR0cmlidXRlIGNyZWF0ZWQgYnkgdGhlIGFkZGFkbWlubGlua3MoKSBmdW5jdGlvbikuIEl0IGFsc28gbWVhbnMgdGhhdCB0aGUgaW5zdGFudCBzZWFyY2ggd2lsbCA8aT5ub3Q8L2k+IHNraXAgdGhpcyBjb2x1bW4sIHNvIHRoZSB0ZXh0IGRpc3BsYXllZCB3aWxsIGJlIHVzZWQgdG8gc2VlIGlmIHRoZSByb3cgbWF0Y2hlcyB0aGUgc2VhcmNoIHdvcmRzLjwvcD4KCQk8cD5Ob3csIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBhZG1pbnBhbmVsLnRwbCBmaWxlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KIzEJCTw8Lz5kaXY+CiMyCQk8PC8+dGFibGUge2lmICR0YWJsZWlkfWlkPSJ7JHRhYmxlaWR9IiB7L2lmfWNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIzMJCTw8Lz50aGVhZD48PC8+dHI+CiM0CQkJe2ZvcmVhY2ggZnJvbT0kYWRtaW5zaG93IGl0ZW09Y29sdW1ufQojNQkJCQk8PC8+dGg+eyRjb2x1bW5bMF19PDwvPi90aD4KIzYJCQl7L2ZvcmVhY2h9CiM3CQk8PC8+L3RyPjw8Lz4vdGhlYWQ+CiM4CQk8PC8+dGJvZHk+CiM5CQl7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzcyByZXNldD10cnVlfQojMTAJCXtmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09b25laXRlbX0KIzExCQl7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzc30KIzEyCQk8PC8+dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPgojMTMJCQl7Zm9yZWFjaCBmcm9tPSRhZG1pbnNob3cgaXRlbT1jb2x1bW59CiMxNAkJCQl7YXNzaWduIHZhcj1vbmV2YWwgdmFsdWU9JGNvbHVtblsxXX0KIzE1CQkJCTw8Lz50ZHtpZiAkY29sdW1uWzJdfSBjbGFzcz0iY3RsbW1fbm9zZWFyY2giey9pZn0+eyRvbmVpdGVtLT4kb25ldmFsfTw8Lz4vdGQ+CiMxNgkJCXsvZm9yZWFjaH0KIzE3CQk8PC8+L3RyPgojMTgJCXsvZm9yZWFjaH0KIzE5CQk8PC8+L3Rib2R5PgojMjAJCTw8Lz4vdGFibGU+CiMyMQkJPDwvPi9kaXY+PC9wcmU+CgkJPHA+Tm93LCBJIHdpbGwgYXNzdW1lIHRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhlIGh0bWwgdGFncywgYW5kIHdpbGwgbGVhdmUgYWxvbmUgdGhlIGNvZGUgY29uY2VybmluZyB0aGUgY2xhc3Nlcy4gSSB3aWxsIGV4cGxhaW4gbGluZXMgIzQgdG8gIzYsIHdoaWNoIHdyaXRlIHRoZSB0YWJsZSBoZWFkZXIgKHRoZSB0aXRsZXMgb2YgdGhlIGNvbHVtbnMpLCBhbmQgbGluZXMgIzkgdG8gIzE4LCB3aGljaCB3cml0ZSB0aGUgdGFibGUgcm93cy48L3A+CgkJPHA+TGluZSAjNSBpcyBleGVjdXRlZCBmb3IgZWFjaCBlbGVtZW50IG9mIHRoZSAkYWRtaW5zaG93IHZhcmlhYmxlOyBpbiBvdGhlciB3b3JkcywgZm9yIGVhY2ggY29sdW1uIG9mIHRoZSB0YWJsZS4gTm93LCByZW1lbWJlciB0aGF0IGVhY2ggZWxlbWVudCBvZiB0aGUgJGFkbWluc2hvdyB2YXJpYWJsZSBpcyBhbiBhcnJheSBvZiB0d28gZWxlbWVudHMsIHNvIHdoYXQgbGluZSAjNSBkb2VzIGlzIGRpc3BsYXkgdGhlIGZpcnN0IChwb3NpdGlvbiBbMF0pIG9mIHRoZXNlIHR3byBlbGVtZW50cyBhcyB0aGUgY29sdW1uIGhlYWRlci48L3A+CgkJPHA+TGluZXMgIzExIHRvICMxNyBhcmUgcmVwZWF0ZWQgZm9yIGVhY2ggaXRlbSBpbiAkaXRlbWxpc3QgKGZvciBlYWNoIHJvdyBvZiB0aGUgdGFibGUpLiBGb3IgZWFjaCByb3csIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlICRhZG1pbnNob3cgdmFyaWFibGUsIGxpbmVzICMxNCBhbmQgIzE1IGFyZSByZXBlYXRlZC4gTGluZSAjMTQgZmV0Y2ggdGhlIG5hbWUgb2YgdGhlIG9iamVjdCdzIGF0dHJpYnV0ZSB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgKHBvc2l0aW9uIFsxXSBvZiB0aGUgYWRtaW5zaG93IGVsZW1lbnQpLCBhbmQgbGluZSAjMTUgZGlzcGxheXMgdGhpcyBhdHRyaWJ1dGUgb2YgdGhlIGN1cnJlbnQgb2JqZWN0LjwvcD4KCQk8cD5BcyBvZiB0aGUgPGNvZGU+Y3RsbW1fbm9zZWFyY2g8L2NvZGU+IGNsYXNzLCBpdCBvbmx5IG1lYW5zIHRoYXQgdGhlIGluc3RhbnQgc2VhcmNoIHdpbGwgbm90IGNoZWNrIGludG8gdGhpcyBjb2x1bW4uPC9wPgoJCTxwPjxiPkFscmlnaHQuLi4gaG93IGNhbiBJIGNoYW5nZSB0aGlzPzwvYj48L3A+CgkJPHA+SWYgeW91IHdhbnQgdG8gbWFrZSBtYWpvciBjaGFuZ2VzLCB0aGUgYmVzdCB0aGluZyB0byBkbyB3b3VsZCBiZSB0byBjcmVhdGUgYW4gaW5kaXZpZHVhbCB0ZW1wbGF0ZSBmb3IgeW91ciBsZXZlbC4gSW4gdGhlIHRlbXBsYXRlcy8gZm9sZGVyLCBjcmVhdGUgYSBmaWxlIChsaWtlICJhZG1pbnBhbmVsX25hbWVvZmxldmVsLnRwbCIpLCBwdXQgdGhlIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSBpbiBpdCwgYW5kIGluIHRoZSBhY2NvcmRpbmcgdGFiIG9mIHRoZSBhY3Rpb24uZGVmYXVsdGFkbWluLnBocCBmaWxlLCBjaGFuZ2U8YnIvPgoJCTxjb2RlPmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTs8L2NvZGU+PGJyLz4KCQl0bzxici8+CgkJPGNvZGU+ZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsX25hbWVvZmxldmVsLnRwbCIpOzwvY29kZT48L3A+CgkJPHA+Tm93LCBsZXQncyBzYXkgeW91IHdpc2ggdG8gbWFrZSBhIHZlcnkgc2ltcGxlIG1vZGlmaWNhdGlvbi4gRm9yIGV4YW1wbGUsIHlvdSBhcmUgZGlzcGxheWluZyBhIGZpbGUgZmllbGQgKHdoaWNoIHdlJ2xsIGNhbGwgIm15ZmllbGQiKSBvbiB0aGUgYWRtaW5wYW5lbCwgYnV0IGluc3RlYWQgb2Ygc2hvd2luZyB0aGUgZmlsZXBhdGggeW91IHdvdWxkIGxpa2UgdG8gc2hvdyB0aGUgcGljdHVyZS4gV2hhdCB5b3UgY291bGQgZG8gaXMgdGhpczo8YnIvPgoJCUluIHRoZSBhZG1pbnBhbmVsLnRwbCB0ZW1wbGF0ZSBmaWxlLCB5b3UgY291bGQgY2hhbmdlIGxpbmUgIzE1IHRvIHNvbWV0aGluZyBsaWtlIHRoaXM6CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJCTw8Lz50ZHtpZiAkY29sdW1uWzJdfSBjbGFzcz0iY3RsbW1fbm9zZWFyY2giey9pZn0+CgkJCXtpZiAkb25ldmFsID09ICdteWZpZWxkJ30KCQkJCXtpZiAkb25laXRlbS0+JG9uZXZhbCAhPSAiIn08PC8+aW1nIHNyYz0ie3Jvb3RfdXJsfS91cGxvYWRzL3skb25laXRlbS0+JG9uZXZhbH0iIC8+ey9pZn0KCQkJe2Vsc2V9CgkJCQl7JG9uZWl0ZW0tPiRvbmV2YWx9CgkJCXsvaWZ9PDwvPi90ZD48L3ByZT4KCQk8cD5UaGlzIG1lYW5zIHRoYXQgc21hcnR5IGNoZWNrcyBpZiB0aGUgZmllbGQgd2UncmUgZGlzcGxheWluZyBpcyAnbXlmaWVsZCcsIGlmIGl0IGlzLCBhbmQgaWYgdGhlIHZhbHVlIGlzbid0IGVtcHR5LCBpdCBkaXNwbGF5cyB0aGUgaW1hZ2UuIElmIGl0IGlzbid0LCBpdCBqdXN0IGRpc3BsYXlzIHRoZSBmaWVsZCB2YWx1ZSBub3JtYWxseS48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4JCgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyIj4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+Q291bGQgSSBzaG93IHRoZSBuYW1lIG9mIHRoZSBzZWxlY3RlZCBpdGVtIGluLCBzYXksIHRoZSBwYWdlJ3MgPDwvPnRpdGxlPiB0YWc/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij5bKioqIFNlZSB1cGRhdGUgYmVsb3cuLi4gKioqXTwvcD4KCQk8cD48Yj5UaGUgc2hvcnQgYW5zd2VyOjwvYj4gbm8uPC9wPgoJCTxwPjxiPlRoZSBsb25nIGFuc3dlcjo8L2I+IHllcywgbW9zdCBvZiB0aGUgdGltZS48L3A+CgkJPHA+VGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gb3IgY2F0ZWdvcnkgaXMgcmV0cmlldmVkIG9ubHkgd2hlbiB0aGUgPGNvZGU+e2Ntc19tb2R1bGUgbW9kdWxlPSJ5b3VybW9kdWxlIn08L2NvZGU+IHRhZyBpcyBlbmNvdW50ZXJlZCBpbiB0aGUgdGVtcGxhdGUgLSB3aGljaCBpcyBxdWl0ZSBhbHdheXMgd2F5IGFmdGVyIHRoZSBwYWdlJ3MgaGVhZC4gSG93ZXZlciwgaW4gbW9zdCBjYXNlcyBpbiBjb3VsZCBiZSByZXRyaWV2ZWQgYnkgYSB1c2VyLWRlZmluZWQgdGFnIChVRFQpLjwvcD4KCQk8cCBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij5Ob3RlIHRoYXQgdGhpcyB3aWxsIG5vIHdvcmsgd2hlbiB0aGUgdGFnIGlzIGRpcmVjdGx5IGNhbGxlZCBvbiB0aGUgcGFnZSwgYW5kIHdpbGwgb25seSB3b3JrIHdoZW4gd2UgYXJlIGZvbGxvd2luZyBhIG1vZHVsZSBhY3Rpb24gKHdoZW4geW91IGhhdmUgY2xpY2tlZCBvbiBhIGxpbmspPC9wPgoJCTxwPkNyZWF0ZSB0aGUgZm9sbG93aW5nIFVEVCwgcmVwbGFjaW5nIE5BTUVfT0ZfWU9VUl9NT0RVTEUgd2l0aCB5b3VyIG1vZHVsZSdzIG5hbWU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPiRtb2R1bGVuYW1lID0gJ05BTUVfT0ZfWU9VUl9NT0RVTEUnOwpnbG9iYWwgJGdDbXM7CmlmKCBpc3NldCgkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV0pICYmCiAgICAkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV1bJ2FjdGl2ZSddICYmCiAgICBpc3NldCgkcGFyYW1zWydhc3NpZ24nXSkgKXsKCWdsb2JhbCAkc21hcnR5OwoJJGluc3RhbmNlID0gJGdDbXMtPm1vZHVsZXNbJG1vZHVsZW5hbWVdWydvYmplY3QnXTsKCSRnbG9iID0gJGluc3RhbmNlLT5nZXRfbW9kdWxlR2V0VmFycygpOwoJJHdhbnRlZGxldmVsID0gZmFsc2U7CgkkbW9kbGV2ZWxzID0gJGluc3RhbmNlLT5nZXRfbGV2ZWxhcnJheSgpOwoJaWYoaXNzZXQoJGdsb2JbJ2FsaWFzJ10pKXsKCQkkd2FudGVkbGV2ZWwgPSBpc3NldCgkZ2xvYlsnd2hhdCddKT8kZ2xvYlsnd2hhdCddOiRtb2RsZXZlbHNbY291bnQoJG1vZGxldmVscyktMV07CgkJJGFsaWFzID0gJGdsb2JbJ2FsaWFzJ107Cgl9ZWxzZWlmKGlzc2V0KCRnbG9iWydwYXJlbnQnXSkpewoJCWlmKGlzc2V0KCRnbG9iWyd3aGF0J10pKXsKCQkJJHdhbnRlZGxldmVsID0gJGluc3RhbmNlLT5nZXRfbmV4dGxldmVsKCRnbG9iWyd3aGF0J10sIGZhbHNlKTsKCQl9ZWxzZXsKCQkJJHdhbnRlZGxldmVsID0kbW9kbGV2ZWxzW2NvdW50KCRtb2RsZXZlbHMpLTJdOwoJCX0KCQkkYWxpYXMgPSAkZ2xvYlsncGFyZW50J107Cgl9CglpZigkd2FudGVkbGV2ZWwpewoJCSRnZXRmdW5jdGlvbiA9ICdnZXRfbGV2ZWxfJy4kd2FudGVkbGV2ZWw7CgkJJGl0ZW0gPSAkaW5zdGFuY2UtPiRnZXRmdW5jdGlvbihhcnJheSgnYWxpYXMnPT4kYWxpYXMpKTsKCQlpZihpc3NldCgkaXRlbVswXSkpCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWydhc3NpZ24nXSwkaXRlbVswXSk7Cgl9Cn0KCTwvcHJlPgoJPHA+TGV0J3Mgc2F5IHlvdSd2ZSBuYW1lZCB5b3VyIHRhZyAicmV0cmlldmVtb2RpbmZvIi4gVGhlbiwgYXQgdGhlIGJlZ2lubmluZyBvZiB5b3VyIHBhZ2UncyB0ZW1wbGF0ZSwgeW91IHJldHJpZXZlIHRoZSBtb2R1bGUgaW5mb3JtYXRpb25zIGJ5IHVzaW5nIHRoZSB0YWcgPGNvZGU+e3JldHJpZXZlbW9kaW5mbyBhc3NpZ249ImN1cnJlbnRlbGVtZW50In08L2NvZGU+LiBUaGlzIG1lYW5zIHRoYXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGl0ZW0gYXJlIHN0b3JlZCBpbiB0aGUgdmFyaWFibGUgJGN1cnJlbnRlbGVtZW50ICh3aGljaCBjb3VsZCBoYXZlIGJlZW4gYW55dGhpbmcpLiBTbyBpbiB0aGUgPDwvPnRpdGxlPiB0YWcgb2YgeW91ciB0ZW1wbGF0ZSwgeW91IGNvdWxkIHdyaXRlOiA8Y29kZT57aWYgJGN1cnJlbnRlbGVtZW50fXskY3VycmVudGVsZW1lbnQtPm5hbWV9ey9pZn08L2NvZGU+LCB3aGljaCB3b3VsZCBkaXNwbGF5IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgaWYgaXQgY291bGQgaGF2ZSBiZWVuIHJldHJpZXZlZC48L3A+Cgk8cCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij5VUERBVEU6IHNpbmNlIHZlcnNpb24gMS44LCB5b3UgY2FuIGRvIHRoZSBzYW1lIHRoaW5nIG11Y2ggbW9yZSBlYXNpbHkganVzdCBieSB1c2luZyB0aGUgImJyZWFkY3J1bWJzIiBhY3Rpb24gYW5kIGl0cyBwYXJhbWV0ZXJzLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExNiI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBhZGQgbW9kdWxlIGVsZW1lbnRzIHRvIG15IGdvb2dsZSBzaXRlbWFwPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+Cgk8cD5UaGlzIHdpbGwgaGVscCB5b3UgaW5jbHVkZSB0aGUgbW9kdWxlIGVudHJpZXMgdG8gYSBnb29nbGUgc2l0ZW1hcCwgPHU+cHJvdmlkZWQgdGhhdCB5b3VyIG1vZHVsZSBlbGVtZW50cyBhcmUgYWxsIGRpc3BsYXllZCBvbiB0aGUgc2FtZSBwYWdlPC91Pi48L3A+PGJyLz4KCTxwPjxiPklmIHlvdSBhcmUgdXNpbmcgdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZ3NnZW5lcmF0b3IiPmdvb2dsZSBzaXRlbWFwIGdlbmVyYXRvciBtb2R1bGU8L2E+OjwvYj48L3A+Cgk8L3A+T3BlbiB5b3VyIHNpdGVtYXAgZ2VuZXJhdG9yIChnc2l0ZW1hcC5waHApLCBhbmQganVzdCBiZWZvcmUgdGhlIGNsb3N1cmUgb2YgdGhlIHVybHNldCAoPGNvZGU+ZWNobyAnICA8PC8+L3VybHNldD4nLiAiXG4iOzwvY29kZT4pLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lczo8L3A+Cgk8cHJlIGNsYXNzPSJjb2RlIj4KCSRtb2R1bGVuYW1lID0gIk5BTUVPRk1PRFVMRSI7CS8vIENIQU5HRSBUSElTIFRPIFRIRSBOQU1FIE9GIFlPVVIgTU9EVUxFCglpZiggIGlzc2V0KCRnQ21zLT5tb2R1bGVzWyRtb2R1bGVuYW1lXSkKCQkmJiAkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV1bImFjdGl2ZSJdCgkJJiYgJHRoZW1vZHVsZSA9ICRnQ21zLT5tb2R1bGVzWyRtb2R1bGVuYW1lXVsib2JqZWN0Il0KCQkpewoJCQkKCQkvLyBIRVJFIFlPVSBNVVNUIFBVVCBUSEUgSUQgT1IgQUxJQVMgT0YgVEhFIFBBR0UgVVNFRCBUTyBESVNQTEFZIFRIRSBNT0RVTEUgRUxFTUVOVFM6CgkJJGRldGFpbHBhZ2UgPSAiTVlQQUdFIjsKCQkKCQkkcGFyYW1zID0gYXJyYXkoIm1vZGUiPT4iZ29vZ2xlIiwgImRldGFpbHBhZ2UiPT4kZGV0YWlscGFnZSk7CgkJJHRoZW1vZHVsZS0+RG9BY3Rpb24oInNpdGVtYXAiLCAiIiwgJHBhcmFtcyk7Cgl9Cgk8L3ByZT4KCTxwPk9mIGNvdXJzZSwgcmVwbGFjZSBOQU1FT0ZNT0RVTEUgaW4gdGhlIGZpcnN0IGxpbmUgd2l0aCB0aGUgbmFtZSBvZiB5b3VyIG1vZHVsZSwgYW5kIGVudGVyIGEgZGV0YWlscGFnZSwgYmUgaXQgYW4gaWQgb3IgcGFnZSBhbGlhcy48L3A+Cgk8cD5Ob3RlIHRoYXQgeW91IGNvdWxkIGFsc28gdXNlIHRoZSAid2hhdCIgcGFyYW1ldGVyIHRvIHNwZWNpZnkgd2hpY2ggbGV2ZWxzIHlvdSB3aXNoIHRvIHNlZSBkaXNwbGF5ZWQgKHlvdSBjYW4gc3BlY2lmeSBzZXZlcmFsIGxldmVscyB3aXRoICJsZXZlbDF8bGV2ZWwyIiBhbmQgc28gb24pLiBPdGhlcndpc2UsIGFsbCBsZXZlbHMgd2lsbCBiZSBkaXNwbGF5ZWQuPC9wPjwvYnI+Cgk8cD48Yj5JZiB5b3UgYXJlIHVzaW5nIHRoZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NpdGVtYXBtcyI+U2l0ZU1hcCBNYWRlIFNpbXBsZTwvYT4gbW9kdWxlOjwvYj48L3A+Cgk8cD5TaW1wbHkgcHV0IHRoZSBjb2RlIGFib3ZlIGluIGEgVURUICh1c2VyLWRlZmluZWQtdGFnKSwgYW5kIGNhbGwgdGhlIFVEVCBhdCB0aGUgZW5kIG9mIHlvdXIgc2l0ZW1hcCdzIHRlbXBsYXRlLCBqdXN0IGJlZm9yZSA8Y29kZT48PC8+L3VybHNldD48L2NvZGU+LjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTE5Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGNhbiBJIGFkZCBhbiBleHBpcmF0aW9uIGZpZWxkPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+Cgk8cD5Zb3Ugd2lzaCB0byBhZGQgYSBkYXRlIGZpZWxkIHRoYXQgd2lsbCBkZWNpZGUgd2hlbiB0aGUgaXRlbSB3aWxsIGJlIGRpc3BsYXllZCBvciBub3QgKGxpa2UgaW4gdGhlIG5ld3MgbW9kdWxlKS4gSXQgc2hvdWxkbid0IGJlIHZlcnkgaGFyZC48L3A+Cgk8cD5UbyBkbyB0aGlzLCB5b3Ugd2lsbCBuZWVkIHR3byBmaWVsZHMgKG9yIHRocmVlKTo8L3A+Cgk8dWw+CgkJPGxpPkEgImNoZWNrYm94IiB0eXBlIGZpZWxkIHRvIGNob29zZSB3aGV0aGVyIHRoZSBleHBpcmF0aW9uIGRhdGUgd2lsbCBiZSB1c2VkIG9yIG5vdCAod2UnbGwgY2FsbCBpdCAidXNlX2V4cGlyYXRpb24iKTwvbGk+CgkJPGxpPkEgImRhdGUiIHR5cGUgZmllbGQgdG8gY2hvb3NlIHRoZSBleHBpcmF0aW9uIGRhdGUgKHdlJ2xsIGNhbGwgaXQgImV4cGlyYXRpb25fZGF0ZSIpPC9saT4KCQk8bGk+KG9wdGlvbmFsbHkpIEFub3RoZXIgZGF0ZSBmaWVsZCAoZm9yIGJlZ2luIGRhdGUpPC9saT4KCTwvdWw+Cgk8cD5Gb3Igc2ltcGxpY2l0eSwgSSB3aWxsIGFzc3VtZSB3ZSBuZWVkIG9ubHkgb25lIGRhdGUgKHlvdSBzaG91bGQgZmlndXJlIG91dCB0aGUgcGFydCBmb3IgdGhlIHNlY29uZCBkYXRlKS48L3A+Cgk8cD5JbiB5b3VyIGxpc3QgdGVtcGxhdGUsIHVzZSB0aGUgZm9sbG93aW5nIGNvZGU6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+Cgl7Zm9yZWFjaCBmcm9tPSRpdGVtbGlzdCBpdGVtPSJpdGVtIn0KCQl7aWYgJGl0ZW0tPnVzZV9leHBpcmF0aW9uICYmICgkaXRlbS0+ZXhwaXJhdGlvbl9kYXRlfGRhdGVfZm9ybWF0OiIlcyIgJmx0OyAkc21hcnR5Lm5vdyl9CgkJCXRoZSBjb2RlIHRvIGRpc3BsYXkgdGhlIGl0ZW0uLi4KCQl7L2lmfQoJey9mb3JlYWNofQoJPC9wcmU+Cgk8cD5CYXNpY2FsbHksIHdlIG9ubHkgZGlzcGxheSB0aGUgaXRlbSB3aGVuIGEgY29uZGl0aW9uIGlzIG1ldCwgbmFtZWx5IHRoYXQgdXNlX2V4cGlyYXRpb24gaXMgb24sIGFuZCB0aGF0IHRoZSBleHBpcmF0aW9uIGRhdGUgaXMgbG93ZXIgKGJlZm9yZSkgdGhlIGN1cnJlbnQgZGF0ZS4gVG8gZG8gdGhlIG9wcG9zaXRlLCB5b3UgY2FuIGp1c3QgY2hhbmdlIHRoZSAmbHQ7IHRvIGEgJmd0Oy48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyMCI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBzZXR1cCB0aGUgZnJvbnRlbmQgZWRpdCBhY3Rpb24gd2l0aCB0aGUgRnJvbnQgRW5kIFVzZXJzIG1vZHVsZT88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJPHA+VGhpcyBpcyBkb25lIGluIHR3byBwYXJ0cy4gVGhlIGZpcnN0IHBhcnQgaXMgdG8gZGlzcGxheSB0aGUgZWRpdCBsaW5rIG9yIGVkaXQgZm9ybSBvbmx5IHRvIHNlbGVjdGVkIHVzZXJzIChvciBsb2dnZWQgaW4gdXNlcnMpLiBUaGlzIGlzIHRvIGJlIGRvbmUgd2l0aCB0aGUgRkVVIG1vZHVsZSAoYW5kIHBvc3NpYmx5IEN1c3RvbSBDb250ZW50KSwgYW5kIGFzIHN1Y2ggd2lsbCBub3QgYmUgY292ZXJlZCBoZXJlLiBUaGlzIGlzIG9ubHkgYWJvdXQgPGk+aGlkaW5nPC9pPiB0aGUgZWRpdGlvbiBmcm9tIG90aGVyIHVzZXJzLiBUaGUgc2Vjb25kIHBhcnQsIHdoaWNoIHdpbGwgYmUgY292ZXJlZCBoZXJlLCBpcyBhYm91dCB0aGUgcmVhbCBwcm90ZWN0aW9uLiBTYWRseSwgdGhpcyB3aWxsIHJlcXVpcmUgYSBsaXR0bGUgcHJvZ3JhbW1pbmcsIGJ1dCBldmVyeW9uZSBzaG91bGQgYmUgYWJsZSB0byBnZXQgdGhyb3VnaCB0aGlzIGVhc2lseS48L3A+Cgk8cD5JZiB5b3UncmUgd29uZGVyaW5nIGhvdyB0byBjaGFuZ2UgdGhlIGxvb2sgb2YgdGhlIGZvcm0sIHNlZSB0aGUgZnJvbnRlbmRfYWRkXyoudHBsIHRlbXBsYXRlcyBpbiB0aGUgdGVtcGxhdGVzIGZvbGRlci48L3A+Cgk8cD5CZWZvcmUgZWRpdGluZyBhbiBpdGVtIHRocm91Z2ggdGhlIGZyb250ZW5kLCB0aGUgZnVuY3Rpb24gZmVhZGRfcGVybWNoZWNrICh3aG9zZSBjb250ZW50IGlzIGluIHRoZSBmaWxlIGZ1bmN0aW9uLmZlYWRkX3Blcm1jaGVjay5waHApIGlzIGNhbGxlZC4gSWYgaXQgcmV0dXJucyB0cnVlIChpZiB0aGUgdmFsdWUgb2YgdGhlICRyZXR1cm4gdmFyaWFibGUgaXMgc2V0IHRvIHRydWUpLCB0aGUgdXNlciBoYXMgcGVybWlzc2lvbiB0byBlZGl0IHRoZSBpdGVtLCBvdGhlcndpc2UgKGlmIGl0IHJldHVybnMgZmFsc2UpLCB0aGUgYWNjZXNzIGlzIGRlbmllZC48YnIvPgoJSWYgeW91IG9wZW4gdGhlIGZpbGUgZnVuY3Rpb24uZmVhZGRfcGVybWNoZWNrLnBocCwgeW91IHdpbGwgbm90aWNlIHRoYXQgYXNpZGUgZnJvbSBjb21tZW50cywgdGhlIGZ1bmN0aW9uIGlzIGVtcHR5LiBXZSB3aWxsIGhhdmUgdG8gZmlsbCBpdCBvdXQgZGVwZW5kaW5nIG9uIHdoYXQgd2Ugd2lzaCB0byBkby48L3A+Cgk8cD5UaGUgdmFyaWFibGVzIGF0IG91ciBkaXNwb3NpdGlvbiBhcmUgdGhlIGZvbGxvd2luZzo8dWw+CgkJPGxpPiRnQ21zICh0aGUgZ2xvYmFsIGNtcyBvYmplY3QsIHRocm91Z2ggd2hpY2ggd2Ugd2lsbCBiZSBhYmxlIHRvIGNhbGwgdGhlIEZFVSBtb2R1bGUpPC9saT4KCQk8bGk+JHdoYXQgKHRoZSBsZXZlbCBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LCBhcyBnaXZlbiBieSB0aGUgIndoYXQiIHBhcmFtZXRlcik8L2xpPgoJCTxsaT4kYWxpYXMgKHRoZSBhbGlhcyBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LiBJZiBpdCBpcyBhIG5ldyBpdGVtLCAkYWxpYXMgc2hvdWxkIGJlIGZhbHNlKTwvbGk+CgkJPGxpPiRpdGVtaWQgKHRoZSBpZCBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LiBJZiBpdCBpcyBhIG5ldyBpdGVtLCAkaXRlbWlkIHNob3VsZCBiZSBmYWxzZSk8L2xpPgoJPC91bD48L3A+Cgk8cD5Zb3UgbWlnaHQgbmVlZCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBvZiB0aGUgRkVVIG1vZHVsZTo8dWw+CgkJPGxpPkxvZ2dlZEluKCkgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4sIGFuZCBmYWxzZSBvdGhlcndpc2UuPC9saT4KCQk8bGk+TG9nZ2VkSW5JZCgpIHdpbGwgcmV0dXJuIHRoZSBpZCBvZiB0aGUgdXNlcjwvbGk+CgkJPGxpPkxvZ2dlZEluTmFtZSgpCXdpbGwgcmV0dXJuIHRoZSB1c2VybmFtZSBvZiB0aGUgdXNlcjwvbGk+CgkJPGxpPk1lbWJlck9mR3JvdXAoJHVzZXJpZCwkZ3JvdXBpZCkJCXJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlciBpcyBhIG1lbWJlciBvZiB0aGUgZ3JvdXAsIGZhbHNlIG90aGVyd2lzZTwvbGk+CgkJPGxpPkdldEdyb3VwSUQoJGdyb3VwbmFtZSkJcmV0dXJucyB0aGUgZ3JvdXAgaWQgYXNzb2NpYXRlZCB0byBhIGdyb3VwIG5hbWU8L2xpPgoJPC91bD48L3A+PGJyLz4KCTxwPk5vdywgaGVyZSBhcmUgdGhyZWUgYmFzaWMgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzLjwvcD4KCTxwPjxiPkFsbG93aW5nIG9ubHkgbG9nZ2VkIGluIHVzZXJzPC9iPjxici8+CglIZXJlJ3MgaG93IHRvIGFsbG93IG9ubHkgbG9nZ2VkIGluIHVzZXJzIHRvIGVkaXQgaXRlbXM6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVICYmICRGRVUtPkxvZ2dlZEluKCkpewoJCSRyZXR1cm4gPSB0cnVlOwoJfQoJPC9wcmU+PGJyLz4KCTxwPjxiPkFsbG93aW5nIG9ubHkgbWVtYmVycyBvZiBhIGdyb3VwPC9iPjxici8+CglIZXJlJ3MgaG93IHRvIGFsbG93IG9ubHkgbWVtYmVycyBvZiB0aGUgZ3JvdXAgIm15Z3JvdXAiIHRvIGVkaXQgaXRlbXM6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVKXsKCQlpZigkRkVVLT5Mb2dnZWRJbigpKXsKCQkJJHVzZXJpZCA9ICRGRVUtPkxvZ2dlZEluSWQoKTsKCQkJJGdyb3VwaWQgPSAkRkVVLT5HZXRHcm91cElEKCJteWdyb3VwIik7CgkJCWlmKCRGRVUtPk1lbWJlck9mR3JvdXAoJHVzZXJpZCwgJGdyb3VwaWQpKXsKCQkJCSRyZXR1cm4gPSB0cnVlOwoJCQl9CgkJfQoJfQoJPC9wcmU+PGJyLz4KCTxwPjxiPkFsbG93aW5nIG1lbWJlcnMgdG8gZWRpdCBvbmx5IGEgc2luZ2xlIGVsZW1lbnQ8L2I+PGJyLz4KCVN1cHBvc2UgeW91IGhhdmUgYSBGRVUgbWVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBvZiB5b3VyIGl0ZW0sIGFuZCB0aGF0IHRoZSB1c2VybmFtZSBvZiB0aGF0IG1lbWJlciBpcyB0aGUgYWxpYXMgb2YgdGhlIGl0ZW0gKHNlZSBiZWxvdyBvbiBob3cgdG8gZG8gdGhpcykuIFlvdSBjb3VsZCByZXN0cmljdCBhY2Nlc3MgaW4gdGhlIGZvbGxvd2luZyB3YXk6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVKXsKCQlpZigkRkVVLT5Mb2dnZWRJbigpKXsKCQkJJHVzZXJuYW1lID0gJEZFVS0+TG9nZ2VkSW5OYW1lKCk7CgkJCWlmKCR1c2VybmFtZSA9PSAkYWxpYXMpewoJCQkJJHJldHVybiA9IHRydWU7CgkJCX0KCQl9Cgl9Cgk8L3ByZT4KCTxwPlVzaW5nICRGRVUtPkdldFVzZXJQcm9wZXJ0eSgkcHJvcGVydHluYW1lKSwgeW91IGNvdWxkIHVzZSBzb21ldGhpbmcgZWxzZSB0aGFuIHRoZSB1c2VybmFtZS48YnIvPgoJSWYgcGVybWlzc2lvbnMgZGVwZW5kIG9uIHRoZSBhbGlhcyBvZiB0aGUgaXRlbSwgeW91IHNob3VsZCBtYWtlIHN1cmUgKHNlZSBTZXR0aW5ncykgdGhhdCB5b3VyIGZyb250ZW5kIHVzZXJzIGNhbid0IGNoYW5nZSBpdC48L3A+PGJyLz4KCTxwPlNob3VsZCB5b3UgbmVlZCBtb3JlIGluZm9ybWF0aW9ucyBhYm91dCB0aGUgaXRlbSwgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzbmlwcGV0IHRvIGxvYWQgdGhlIGZ1bGwgaXRlbSBvYmplY3Q6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHdoYXQ7CgkkaXRlbWxpc3QgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCJpZCI9PiRpdGVtaWQpKTsKCSRpdGVtID0gaXNzZXQoJGl0ZW1saXN0WzBdKT8kaXRlbWxpc3RbMF06ZmFsc2U7PC9wcmU+PGJyLz4KCTxwPkZpbmFsbHksIHlvdSBtYXkgdXNlICR3aGF0IHZhcmlhYmxlIHRvIGhhdmUgZGlmZmVyZW50IHBlcm1pc3Npb24gbWFuYWdlbWVudCBmb3IgZWFjaCBsZXZlbC4gQSBzd2l0Y2ggd291bGQgYmUgdGhlIHR5cGljYWwgc29sdXRpb246PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+Cglzd2l0Y2goJHdoYXQpewoJCWNhc2UgImxldmVsMSI6CgkJCS8vIGNvZGUKCQkJYnJlYWs7CgkJY2FzZSAibGV2ZWwyIjoKCQkJLy9jb2RlCgkJCWJyZWFrOwoJCS4uLihhbmQgc28gb24pCgl9PC9wcmU+PGJyLz4KCTxwPjxiPlRyaWdnZXJpbmcgdGhlIGNyZWF0aW9uIG9mIGEgRkVVIG1lbWJlciBmb3IgZWFjaCBpdGVtPC9iPjxici8+CglJZiB5b3UncmUgdXNpbmcgc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhlIGxhc3QgZXhhbXBsZSwgeW91IG5lZWQgdG8gaGF2ZSBhIEZFVSB1c2VyIGZvciBlYWNoIGl0ZW0uIFRoaXMgY2FuIGJlIGRvbmUgdXNpbmcgZXZlbnRzLjxici8+CglFdmVyeXRpbWUgYW4gaXRlbSBpcyBhZGRlZCwgbW9kaWZpZWQgb3IgZGVsZXRlZCwgdGhlIG1vZHVsZXMgc2VuZHMgYW4gPGk+ZXZlbnQ8L2k+IHRvIHRoZSBjbXMuIElmIHlvdSBnbyBpbnRvIEV4dGVuc2lvbnMgLT4gRXZlbnQgTWFuYWdlciwgeW91IHNob3VsZCBmaW5kIHRoZSBldmVudHMgc2VudCBieSB5b3VyIG1vZHVsZSBpbiB0aGUgbGlzdC4gQ2xpY2ssIGZvciBleGFtcGxlLCBvbiB0aGUgbW9kdWxlbmFtZV9hZGRlZCBldmVudC4gWW91IHdpbGwgbm90aWNlIHRoYXQgaGVyZSwgeW91IGNhbiBzZWxlY3QgYSBVc2VyIERlZmluZWQgVGFnIChVRFQpIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLiBTbyB3ZSBzaW1wbHkgbmVlZCB0byBkZXNpZ24gYW4gVURUIHRoYXQgd2lsbCBhZGQgYSBtZW1iZXIgd2hlbiBhIG5ldyBpdGVtIGlzIGNyZWF0ZWQuPC9wPgoJPHA+V2Ugd2lsbCBhc3N1bWUgeW91ciBpdGVtIGhhcyBhIGZpZWxkIG5hbWVkICJwYXNzd29yZCIsIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyB0aGUgRkVVIHBhc3N3b3JkLCB0aGF0IHlvdXIgbW9kdWxlIGlzIG5hbWVkICJOQU1FT0ZNT0RVTEUiLCBhbmQgdGhlIGxldmVsIGlzIG5hbWVkICJNWUxFVkVMIi4gTG9vayBhdCB0aGUgZm9sbG93aW5nIFVEVDo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkvLyBmaXJzdCwgd2UgY2hlY2sgaWYgYW4gaXRlbSBoYXMgYmVlbiBhZGRlZCBvbiB0aGUgbGV2ZWwgd2UncmUgY29uY2VybmVkIHdpdGgKCWlmKCRwYXJhbXNbIndoYXQiXSAhPSAiTVlMRVZFTCIpCXJldHVybiBmYWxzZTsKCQoJLy8gd2UgcmV0cmlldmUgdGhlIHR3byBtb2R1bGVzCgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CgkkbXltb2QgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ05BTUVPRk1PRFVMRScpOwoJaWYoISRGRVUgfHwgISRteW1vZCkJcmV0dXJuIGZhbHNlOwoJCgkvLyB3ZSB0aGVuIHJldHJpZXZlIHRoZSBpdGVtCgkkaXRlbWxpc3QgPSAkbXltb2QtPmdldF9NWUxFVkVMKGFycmF5KCJpZCI9PiRwYXJhbXNbIml0ZW1pZCJdKSk7CglpZighaXNzZXQoJGl0ZW1saXN0WzBdKSkJcmV0dXJuIGZhbHNlOwoJJGl0ZW0gPSAkaXRlbWxpc3RbMF07CgkKCS8vIHdlIHRoZW4gYWRkIHRoZSBGRVUgdXNlcgoJJGV4cGlyZXNfaW4gPSAzNjU7IC8vIHNldHMgdGhlIG51bWJlciBvZiBkYXlzIHVudGlsIGV4cGlyYXRpb24KCSRleHBpcmVzID0gc3RydG90aW1lKHNwcmludGYoIislZCBkYXlzIiwkZXhwaXJlc19pbiksIHRpbWUoKSk7CgkkRkVVLT5BZGRVc2VyKCRpdGVtLT5uYW1lLCAkaXRlbS0+cGFzc3dvcmQsICRleHBpcmVzKTsKCQk8L3ByZT4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTMiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgaG93IHRoZSBwcmV0dHkgdXJscyBhcmUgZ2VuZXJhdGVkIGFuZCBpbnRlcnByZXRlZD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPjxiPlllcywgdG8gc29tZSBleHRlbnQuPC9iPjwvcD4KCQk8cD5JJ2xsIHRyeSB0byBtYWtlIHRoaXMgdmVyeSBjb21wcmVoZW5zaXZlLiBCZWZvcmUgdGFsa2luZyBvZiBtb2R5aW5nIGl0LCBsZXQncyBzZWUgaG93IHRoaXMgd29ya3MuPC9wPgoJCTxwPkJhc2ljYWxseSwgdGhlIG1vZHVsZSBoYXMgdHdvIGtpbmRzIG9mIHVybHM6PGJyPgoJCVR5cGUgQTogPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL2RldGFpbC9uYW1lb2ZvYmplY3QvNS88L2NvZGU+PGJyLz4KCQlhbmQ8YnIvPgoJCVR5cGUgQjogPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL25hbWVvZmxldmVsL25hbWVvZnBhcmVudC81LzwvY29kZT48YnIvPgoJCShpZiB5b3UgYXJlIHNlcGFyYXRpbmcgZWxlbWVudHMgaW50byBwYWdlcywgeW91IHdpbGwgbm90aWNlIHRoYXQgdHlwZSBCIGhhcyBzb21lIHZhcmlhdGlvbnMuLi4gd2Ugd2lsbCBkaXNjdXNzIHRoaXMgbGF0ZXIuKTwvcD4KCQk8cD5UeXBlIEEgaXMgdXNlZCB3aGVuIHdlIGFyZSBsb29raW5nIGF0IHRoZSBkZXRhaWxzIG9mIGEgbGFzdC1sZXZlbCBvYmplY3QuIFR5cGUgQiBpcyB1c2VkIHdoZW4gd2UgZGlzcGxheSBhIGxpc3Qgb2YgaXRlbXMuIE5vdywgcmVtZW1iZXIgdGhhdCB0aGUgdXJsIGhhcyB0byBjb250YWluIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBzaG91bGQgYmUgZGlzcGxheWVkLiBTbyBsZXQncyB0YWtlIGEgbG9vayBhYm91dCB3aGF0J3MgY29tbW9uIHRvIGJvdGggdHlwZXMgb2YgdXJsczo8L3A+CgkJPHA+VGhlIDxiPm5hbWVvZm1vZHVsZS88L2I+IHRlbGxzIHVzIHRoYXQgdGhlIG1vZHVsZSBzaG91bGQgYmUgY2FsbGVkLjxici8+CgkJVGhlIDxiPjUvPC9iPiAodGhhdCBhbm5veWluZyBudW1iZXIpIGlzIHRoZSByZXR1cm5pZCBvZiB0aGUgcGFnZS4gSW4gb3RoZXIgd29yZHMsIGl0IHRlbGxzIHVzIG9uIHdoYXQgcGFnZSBvZiB0aGUgY21zIHRoZSBpbmZvcm1hdGlvbnMgb2YgdGhlIG1vZHVsZSBzaG91bGQgYmUgc2hvd24uIEV2ZW4gdGhvdWdoIHRoZSBwYWdlIGNvbnRlbnQgaXMgcmVwbGFjZWQgYnkgd2hhdCB0aGUgbW9kdWxlIGhhcyB0byBkaXNwbGF5LCB0aGlzIGlzIHZlcnkgaW1wb3J0YW50IGFzIGl0IGRldGVybWluZXMsIGZvciBpbnN0YW5jZSwgd2hhdCBwYWdlIHRlbXBsYXRlIHNob3VsZCBiZSB1c2VkLjwvcD4KCQk8cD5XaGVuIHRoZSA8Yj4vZGV0YWlsLzwvYj4gaXMgaW4gdGhlIHVybCwgdGhlIG1vZHVsZSBrbm93cyB0aGF0IHdlJ3JlIGRpc3BsYXlpbmcgdGhlIGRldGFpbHMgb2YgYSBsYXN0IGxldmVsIGl0ZW0uIEFsbCB3ZSBuZWVkIHRvIHNwZWNpZnkgaXMgd2hpY2ggaXRlbSB0byBkaXNwbGF5LCBhbmQgdGhhdHMgdGhlIDxiPm5hbWVvZm9iamVjdDwvYj4gcGFydC48L3A+CgkJPHA+V2hlbiB0aGUgPGI+L2RldGFpbC88L2I+IDxpPmlzbid0PC9pPiBpbiB0aGUgdXJsLCB0aGUgbW9kdWxlIGNvbmNsdWRlcyB0aGF0IHdlIGFyZSBkaXNwbGF5aW5nIGEgbGlzdCBvZiBzb21ldGhpbmcqLiBUaGUgZWxlbWVudHMgb2Ygd2hhdCBsZXZlbCBhcmUgZGlzcGxheWVkIGlzIGRldGVybWluZWQgYnkgd2hhdGV2ZXIgaXMgaW4gdGhlIHBsYWNlIG9mICIvZGV0YWlsLyI6IGluIG91ciBjYXNlLCA8Yj5uYW1lb2ZsZXZlbC88L2I+LiBBIHVybCBsaWtlIDxjb2RlPmh0dHA6Ly93d3cubXlkb21haW4uY29tL25hbWVvZm1vZHVsZS9wcm9kdWN0LzUvPC9jb2RlPiB3b3VsZCBiZSB2YWxpZCwgYW5kIHdvdWxkIHRlbGwgdGhlIG1vZHVsZSB0byBkaXNwbGF5IGFsbCBlbGVtZW50cyBvZiB0aGUgInByb2R1Y3QiIGxldmVsLjxici8+CgkJVGhlIDxiPi9uYW1lb2ZwYXJlbnQvPC9iPiBwYXJ0IHRlbGxzIHRoZSBtb2R1bGUgdG8gZGlzcGxheSBvbmx5IHRoZSBpdGVtcyBvZiB0aGUgY2hvc2VuIGxldmVsIHRoYXQgaGF2ZSAibmFtZW9mcGFyZW50IiBhcyBhIHBhcmVudC48L3A+CgkJPHA+VGhlIHByZXR0eSB1cmxzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24gb2YgdGhlIG1haW4gbW9kdWxlIGZpbGUgKHdoaWNoIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZSBOQU1FT0ZZT1VSTU9EVUxFLm1vZHVsZS5waHApLiBPcGVuIHRoaXMgZmlsZSwgYW5kIGRvIGEgc2VhcmNoIHRvIGZpbmQgdGhlIGZ1bmN0aW9uLiBXaGF0IG1hdHRlcnMgaW4gdGhlcmUgaXMgdGhlIGxpbmVzIHRoYXQgbG9vayBsaWtlIHRoaXMgKHdpdGhvdXQgdGhlIG51bWJlcnMgb24gdGhlIGxlZnQpIDo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CiMxCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oW0RkXWV0YWlsKVwvKD9QPGFsaWFzPlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzIJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzMJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIpOwojNAkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzUJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTs8L3ByZT4KCQk8cD5FYWNoIGxpbmUgaGVyZSByZWdpc3RlciBhIGRpZmZlcmVudCB1cmwgc3RydWN0dXJlLjxici8+CgkJTGluZSAjMSByZWdpc3RlcnMgdGhlIFR5cGUgQSB1cmxzLjxici8+CgkJQWxsIHRoZSBvdGhlciBsaW5lcyByZWdpc3RlciBUeXBlIEIgdXJsczo8YnIvPgoJCUxpbmUgIzIgaXMgZm9yIHdoZW4gbm8gcGFyZW50IGlzIHNwZWNpZmllZCwgbGlrZSBpbiA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvbmFtZW9mbGV2ZWwvNTwvY29kZT48YnIvPgoJCUxpbmUgIzMgaXMgdXNlZCB3aGVuIGEgcGFyZW50IGlzIHNwZWNpZmllZCwgbGlrZSBpbiA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvbmFtZW9mbGV2ZWwvbmFtZW9mcGFyZW50LzU8L2NvZGU+PGJyLz4KCQlMaW5lICM0IGlzIGEgdmFyaWF0aW9uIG9mIGxpbmUgIzIgdGhhdCBoYW5kbGVzIHNlcGFyYXRpb24gaW50byBwYWdlcyAod2hlbiB3ZSBzZXBhcmF0ZSBpbnRvIHBhZ2VzLCB3ZSBuZWVkIHRvIGtub3cgd2hpY2ggcGFnZSB3ZSdyZSBsb29raW5nIGF0KS4gRm9yIGV4YW1wbGUsIDxjb2RlPmh0dHA6Ly93d3cubXlkb21haW4uY29tL25hbWVvZm1vZHVsZS9wcm9kdWN0LzIvMTAvNTwvY29kZT4gd291bGQgbWVhbiB0aGF0IHdlIGFyZSBsb29raW5nIGF0IHRoZSBsaXN0IG9mIGFsbCBpdGVtcyBvZiB0aGUgInByb2R1Y3QiIGxldmVsLCB0aGF0IHdlIGFyZSBzZXBhcmF0aW5nIGluIHBhZ2VzIHdpdGggIjEwIiBlbGVtZW50cyBwZXIgcGFnZSwgYW5kIHRoYXQgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIHBhZ2UgIjIiLjxici8+CgkJSW4gcHJldHR5IG11Y2ggdGhlIHNhbWUgd2F5LCBsaW5lICM1IGlzIGEgdmFyaWF0aW9uIG9mIGxpbmUgIzMuPC9wPgoJCTxwPlRoZSA8PC8+cGFyYW1uYW1lPiB0aGluZyBtZWFucyB0aGF0IHdoYXRldmVyIGlzIGluIHRoYXQgcGxhY2UgaW4gdGhlIHVybCB3aWxsIGJlIGludGVycHJldGVkIGFzIHRoZSAicGFyYW1uYW1lIiBwYXJhbWV0ZXIuIEluIG90aGVyIHdvcmRzLCBlYWNoIHVybCBzdHJ1Y3R1cmUgb3V0cHV0IGRpZmZlcmVudCBwYXJhbWV0ZXJzIHRoYXQgd2lsbCB0ZWxsIHRoZSBtb2R1bGUgd2hhdCB0byBkby48L3A+CgkJPHA+PGI+TW9kaWZ5aW5nIGFsbCB0aGlzLi4uPC9iPjxici8+CgkJVGhlcmUgYXJlIHNvbWUgdGhpbmdzIHRoYXQgeW91IGNhbiBjaGFuZ2UsIHNvbWUgdGhhdCB5b3UgY2FuJ3QsIGFuZCBzb21lIHRoYXQgeW91IGNhbiBhdCBhIHByaWNlLjwvcD4KCQk8cD5MZXQncyBzYXkgeW91IGRvbid0IGxpa2UgdGhlIHdvcmQgIjxiPmRldGFpbDwvYj4iIGluIHRoZSB1cmwsIGFuZCB3b3VsZCBsaWtlIHRvIGNoYW5nZSBpdCB0byBzb21ldGhpbmcgZWxzZSoqLiBGaXJzdCwgbGV0J3Mgbm90IHRoYXQgdGhlICJbRGRdIiBwYXJ0IGluIHRoZSB1cmwgc3RydWN0dXJlIHNheXMgdGhhdCB0aGVyZSBjYW4gYmUgZWl0aGVyIGEgIkQiIG9yIGEgImQiIGhlcmUuIAoJCUluIG90aGVyIHdvcmRzLCA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvZGV0YWlsL25hbWVvZm9iamVjdC81LzwvY29kZT4gaXMgdGhlIHNhbWUgdGhpbmcgYXMgPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL0RldGFpbC9uYW1lb2ZvYmplY3QvNS88L2NvZGU+Ljxici8+CgkJWW91IGNhbiBjaGFuZ2UgdGhlIHdvcmQgImRldGFpbCIgZm9yIHNvbWV0aGluZyBlbHNlLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBhbmQgcmVtZW1iZXIgdGhhdCB0aGUgdXJsIGNhcnJ5IGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBzaG91bGQgYmUgc2hvd24uIEZvciBleGFtcGxlLCBpZiBvbmUgb2YgeW91ciBsZXZlbCBpcyBuYW1lZCAicHJvZHVjdCIsIHlvdSBjb3VsZG4ndCByZXBsYWNlIHRoZSB3b3JkICJkZXRhaWwiIGJ5IHRoZSB3b3JkICJwcm9kdWN0Ii4gSWYgeW91IGRpZCwgdGhlIG1vZHVsZSBjb3VsZG4ndCBrbm93IGlmIHRoZSB3b3JkICJwcm9kdWN0IiBpdCBlbmNvdW50ZXJzIG1lYW5zIHRoYXQgd2UncmUgd2F0Y2hpbmcgdGhlIGRldGFpbHMgb2YgYW4gaXRlbSwgb3IgaWYgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgd2F0Y2hpbmcgYSBsaXN0IG9mIHRoZSBpdGVtcyBpbiB0aGUgInByb2R1Y3QiIGxldmVsLjwvcD4KCQk8cD5TbyBsZXQncyBzYXkgd2Ugd2FudCB0byBjaGFuZ2UgImRldGFpbCIgZm9yICJ2aWV3IiAocHJvdmlkZWQgdGhhdCB5b3UgZG9uJ3QgaGF2ZSBhIGxldmVsIGNhbGxlZCAidmlldyIpLiBJbiBsaW5lICMxLCB3ZSB3b3VsZCByZXBsYWNlIDxjb2RlPihbRGRdZXRhaWwpPC9jb2RlPiB3aXRoIDxjb2RlPih2aWV3KTwvY29kZT4gKG9yIDxjb2RlPihbVnZdaWV3KTwvY29kZT4sIGlmIHlvdSB3YW50IGl0IHRvIGFjY2VwdCBib3RoICJWaWV3IiBhbmQgInZpZXciKS48L3A+CgkJPHA+PHU+QnV0IHRoaXMgaXMgbm90IGVub3VnaC48L3U+IFlvdSd2ZSBjaGFuZ2VkIHRoZSB3YXkgdGhlIHVybHMgYXJlIGludGVycHJldGVkLCBidXQgbm90IHRoZSB3YXkgdGhleSBhcmUgY3JlYXRlZC4gSW4gdGhlIHNhbWUgZmlsZSwgc2VhcmNoIGZvciB0aGUgQnVpbGRQcmV0dHlVUkxzIGZ1bmN0aW9uLiBJdCBzaG91bGQgY29udGFpbiBzb21ldGhpbmcgbGlrZSB0aGlzOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KIzEJCSRwcmV0dHl1cmwgPSAibmFtZW9mbW9kdWxlLyI7CiMyCQlpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSl7CiMzCQkJJHByZXR0eXVybCAuPSAiZGV0YWlsLyIuJHBhcmFtc1siYWxpYXMiXTsKIzQJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pKXsKIzUJCQkkcHJldHR5dXJsIC49ICRwYXJhbXNbIndoYXQiXS4iLyIuJHBhcmFtc1sicGFyZW50Il07CiM2CQl9ZWxzZXsKIzcJCQkkcHJldHR5dXJsIC49ICRwYXJhbXNbIndoYXQiXTsKIzgJCX0KIzkJCWlmKCFpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiBpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSkgJiYgaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pKQkkcHJldHR5dXJsIC49ICIvIi4kcGFyYW1zWyJwYWdlaW5kZXgiXS4iLyIuJHBhcmFtc1sibmJwZXJwYWdlIl07CiMxMAkJJHByZXR0eXVybCAuPSAiLyIuJHJldHVybmlkOwojMTEJCXJldHVybiAkcHJldHR5dXJsOzwvcHJlPgoJCTxwPlRoaXMgZnVuY3Rpb24gdHJhbnNmb3JtcyB0aGUgcGFyYW1ldGVycyBpbnRvIGEgdXJsLjxici8+CgkJTGluZSAjMSBzdGFydHMgd2l0aCB0aGUgbW9kdWxlJ3MgbmFtZS48YnIvPgoJCUluIGxpbmVzICMyLSMzLCBpZiB3ZSB3YW50IHRvIHdhdGNoIHRoZSBkZXRhaWxzIG9mIGFuIGl0ZW0sIHdlIGFkZCB0aGUgImRldGFpbC8iIGJsb2NrIHRvIHRoZSB1cmwuPGJyLz4KCQlJZiB0aGlzIGlzbid0IHRoZSBjYXNlLCB3ZSBhZGQgdGhlIGxldmVsIG9mIHRoZSBpdGVtcyB3ZSB3YW50IHRvIHNob3cgYW5kLCBpZiBzcGVjaWZpZWQsIHRoZSBwYXJlbnQgKGxpbmVzICM0IHRvICM4KS4gSW4gbGluZSAjOSwgaWYgd2UncmUgc2VwYXJhdGluZyBpbnRvIHBhZ2VzIHdlIGFkZCB0aGUgcGFnZSB3ZSB3aXNoIHRvIGxvb2sgYW5kIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcGVyIHBhZ2UuCgkJRmluYWxseSwgaW4gbGluZSAjMTAsIHdlIGFkZCB0aGUgaWQgb2YgdGhlIHBhZ2UgaW4gd2hpY2ggaXQgc2hvdWxkIGJlIGRpc3BsYXllZC48L3A+CgkJPHA+SWYgd2UgY2hhbmdlZCAiW0RkXWV0YWlsIiB0byAiW1Z2XWlldyIgaW4gdGhlIFNldFBhcmFtZXRlcnMoKSBmdW5jdGlvbiwgd2UgbXVzdCBhbHNvIGNoYW5nZSB0aGUgImRldGFpbC8iIGluIGxpbmUgIzMgZm9yICJ2aWV3LyIuPGJyLz5Ob3csIHRoaXMgc2hvdWxkIGRvIHRoZSB0cmljay48L3A+CgkJPHA+PGI+Q2FuIEkgZ2V0IHJpZCBvZiB0aGUgcmV0dXJuaWQ/PC9iPjxici8+Tm8sIG5vdCByZWFsbHkuIEhvd2V2ZXIsIGlmIHlvdSB0aGUgbW9kdWxlIGlzIDx1PmFsd2F5czwvdT4gZGlzcGxheWVkIGluIHRoZSBzYW1lIHBhZ2UgKGkuZS4sIGlmIGl0J3MgPHU+YWx3YXlzPC91PiB0aGUgc2FtZSBudW1iZXIpLCB3ZSBjb3VsZCByZW1vdmUgaXQgZnJvbSB0aGUgdXJsIGFuZCBwcm92aWRlIGl0IGluIGFub3RoZXIgd2F5LiBIZXJlJ3MgaG93IHRvIGRvIGl0OjwvcD4KCQk8cD5MZXQncyBzYXkgdGhlIGlkIG9mIHRoZSBwYWdlIGluIHdoaWNoIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGNhbGxlZCAodGhlIG51bWJlciB3ZSdyZSB0cnlpbmcgdG8gZ2V0IHJpZCBvZikgaXMgNS48YnIvPgoJCTEuIGluIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24gb2YgeW91ciBtb2R1bGUsIHJlbW92ZSBhbGwgPGNvZGU+XC8oP1A8cmV0dXJuaWQ+WzAtOV0rKTwvY29kZT4gcGFydHMuIChpdCB3b3VsZCBiZSBhIGdvb2QgaWRlYSB0byBjb3B5IGFuZCBwYXN0ZSB0aGUgb3JpZ2luYWwgbGluZXMganVzdCBpbiBjYXNlLi4uIHlvdSBjYW4gY29tbWVudCBsaW5lcyB1c2luZyA8Y29kZT4vLzwvY29kZT4pLjxici8+CgkJMi4gaW4gdGhlIEJ1aWxkUHJldHR5VVJMcygpIGZ1bmN0aW9uIG9mIHlvdXIgbW9kdWxlLCBjb21tZW50IChhZGQgPGNvZGU+Ly88L2NvZGU+IGJlZm9yZSBpdCkgdGhlIGxpbmUgIzEwICg8Y29kZT4vLyAkcHJldHR5dXJsIC49ICIvIi4kcmV0dXJuaWQ7PC9jb2RlPikuPGJyLz4KCQkzLiB3ZSBub3cgbmVlZCB0byBwcm92aWRlIHRoZSBpZC4gR28gYmFjayB0byB0aGUgU2V0UGFyYW1ldGVycygpIGZ1bmN0aW9uLCBhbmQgZm9yIGVhY2ggbGluZSwganVzdCBhZnRlciB0aGUgPGNvZGU+JCIvPC9jb2RlPiBwYXJ0IChhbmQgYmVmb3JlIHRoZSBjbG9zdXJlIG9mIHRoZSBwYXJlbnRoZXNpcyksIGFkZCA8Y29kZT4sIGFycmF5KCJyZXR1cm5pZCI9PjUpPC9jb2RlPiAod2l0aCB0aGUgY29tbWEpLCB3aGVyZSAiNSIgaXMgeW91ciBpZC4gRm9yIGV4YW1wbGUsIHRoaXM6PGJyLz4KCQk8Y29kZT4kdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspJC8iKTs8L2NvZGU+PGJyLz4KCQlzaG91bGQgYmVjb21lOjxici8+CgkJPGNvZGU+JHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyhbRGRdZXRhaWwpXC8oP1A8YWxpYXM+W15cL10rKSQvIiwgYXJyYXkoInJldHVybmlkIj0+NSkpOzwvY29kZT48YnIvPgoJCShSZW1lbWJlciBub3QganVzdCB0byBjb3B5IGFuZCBwYXN0ZSBsaW5lcyBmcm9tIHRoaXMgaGVscCwgYmVjYXVzZSB5b3VyIG1vZHVsZSBpcyBwcm9iYWJseSA8aT5ub3Q8L2k+IG5hbWVkICJuYW1lb2Ztb2R1bGUiKTxici8+CgkJVGhpcyBzaG91bGQgZG8gdGhlIHRyaWNrLCBidXQgdGhlIG1vZHVsZSB3aWxsIG5ldmVyIHVzZSBhbm90aGVyIHBhZ2UgdG8gZGlzcGxheSBpdHMgY29udGVudC48L3A+CgkJPHA+PHU+RmluYWwgbm90aWNlOjwvdT4gSWYgeW91IGNoYW5nZSB0aGUgcHJldHR5IHVybHMgYW5kIG1ha2UgdXNlIG9mIHRoZSAiaXNfc2VsZWN0ZWQiIGF0dHJpYnV0ZXMgaW4geW91ciB0ZW1wbGF0ZXMsIHlvdSBtaWdodCBhbHNvIGhhdmUgdG8gY2hhbmdlIHRoZSBnZXRfbW9kdWxlR2V0VmFycygpIGZ1bmN0aW9uICh0YWtlIGEgbG9vayA8YSBocmVmPSIjcTE0Ij5oZXJlPC9hPikuPC9wPgoJCTxwIHN0eWxlPSJmb250LXNpemU6IDExcHg7Ij48YnIvPiogaWYgdGhlcmUgaXMgb25seSBvbmUgaXRlbSB0byBkaXNwbGF5LCBhbmQgaWYgeW91IGFyZW4ndCB1c2luZyB0aGUgImZvcmNlbGlzdCIgcGFyYW1ldGVyLCB0aGUgZGV0YWlscyB3aWxsIGJlIGRpc3BsYXllZCBpbnN0ZWFkIG9mIGEgbGlzdC48YnIvPgoJCSoqIG5vLCB5b3UgY2FuJ3QganVzdCBnZXQgcmlkIG9mIGl0LCB1bmxlc3MgeW91IGNoYW5nZSBhbGwgcmVnaXN0ZXJlZCB1cmxzLi4uIGZvciBleGFtcGxlLCBpbnN0ZWFkIG9mIGhhdmluZyBhICIvZGV0YWlsLyIsIGFsbCBvdGhlciB1cmxzIGNvdWxkIGhhdmUgYSAiL2xpc3QvIiBibG9jay48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxOCI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkNhbiBJIG1ha2UgbXkgbW9kdWxlIGFsd2F5cyBhY3QgYXMgaWYgdGhlICJmb3JjZWxpc3QiIHBhcmFtZXRlciB3YXMgZW5hYmxlZD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDsiPlNpbmNlIDEuOC42LCB0aGlzIGhhcyBiZWNvbWUgYSBzaW1wbGUgb3B0aW9uIHRvIHR1cm4gb24gaW4gdGhlICJTZXR0aW5ncyIgdGFiLi4uPC9wPgoJCTxwPjxiPlllcy48L2I+PC9wPgoJCTxwPk9wZW4gdGhlIGFjdGlvbi5kZWZhdWx0LnBocCBmaWxlLiBBcm91bmQgdGhlIGxpbmUgIzE2IHlvdSBzaG91bGQgc2VlIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgoJCSRmb3JjZWxpc3QgPSBpc3NldCgkcGFyYW1zWyJmb3JjZWxpc3QiXSk/JHBhcmFtc1siZm9yY2VsaXN0Il06ZmFsc2U7PC9wcmU+CgkJPHA+V2hhdCB0aGlzIHNheXMgaXMgdGhhdCBpZiB0aGUgZm9yY2VsaXN0IHBhcmFtZXRlciBoYXMgYmVlbiBzZXQsIHdlIHVzZSB0aGlzIHZhbHVlLCBhbmQgaWYgaXQgaGFzbid0LCB3ZSB1c2UgdGhlIHZhbHVlICJmYWxzZSIuPGJyLz4KCQlDaGFuZ2luZyB0aGlzIDxjb2RlPmZhbHNlPC9jb2RlPiB0byBhIDxjb2RlPnRydWU8L2NvZGU+IHdvdWxkIG1lYW4gdGhhdCB0aGUgZm9yY2VsaXN0IG1vZGUgaXMgYWx3YXlzIGVuYWJsZWQsIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlLjxici8+CgkJQnV0IHRoYXQncyBub3QgZXhhY3RseSB3aGF0IHdlIHdhbnQsIGZvciB0aGlzIHdvdWxkIG1lYW4gdGhhdCB3ZSBhbHdheXMgZGlzcGxheSBhIGxpc3QsIGV2ZW4gd2hlbiB3ZSdyZSB0cnlpbmcgdG8gZGlzcGxheSBhbiBpdGVtJ3MgZGV0YWlscy4gU28gdGhlIHByb3BlciBjb2RlIHdvdWxkIGJlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkkZm9yY2VsaXN0ID0gaXNzZXQoJHBhcmFtc1siZm9yY2VsaXN0Il0pPyRwYXJhbXNbImZvcmNlbGlzdCJdOihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKT9mYWxzZTp0cnVlKTs8L3ByZT4KCQk8cD5UaGlzIHdheSwgJGZvcmNlbGlzdCB3aWxsIGJlIGZhbHNlIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlLCBhbmQgdW5sZXNzIGFuIGFsaWFzICh1c2VkIGluIGRldGFpbCBsaW5rcykgaXMgc3BlY2lmaWVkLjwvcD4KCQk8cD4oVHdvIGxpbmVzIGJlbG93LCB5b3UgY291bGQgZG8gdGhlIHNhbWUga2luZCBvZiB0aGluZyBmb3IgdGhlICJpbmxpbmUiIHBhcmFtZXRlci4uLik8L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoJCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTE0Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+V2hhdCdzIHdpdGggdGhpcyBnZXRfbW9kdWxlR2V0VmFycygpIGZ1bmN0aW9uPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+PGI+V2hhdCBpcyBpdCBmb3I/IEFuZCB3aHkgaXMgaXQgc3VjaCBhIG1lc3M/PC9iPjwvcD4KCQk8cD5JbiB0aGUgbWFpbiBtb2R1bGUgZmlsZSwgdGhlcmUgaXMgYSBmdW5jdGlvbiBjYWxsZWQgZ2V0X21vZHVsZUdldFZhcnMoKS4gQmFzaWNhbGx5LCB0aGUgZnVuY3Rpb24gcmV0cmlldmUgdGhlIG1vZHVsZSBhY3Rpb24gcGFyYW1ldGVycyBmcm9tIHRoZSB1cmwuPGJyLz4KCQlJbWFnaW5lIHRoYXQgaW4geW91ciB0ZW1wbGF0ZSwgaW4gYSBjb2x1bW4gb24gdGhlIGxlZnQsIHlvdSBjYWxsIHRoZSBtb2R1bGUgdG8gZGlzcGxheSBhIGNhdGVnb3J5IGxpc3QuIFdoZW4geW91IGNsaWNrIG9uIGFuIGNhdGVnb3J5LCB0aGUgbGlzdCBzdGF5cyB0aGVyZSwgYnV0IHRoZSBtYWluIGNvbnRlbnQgYmxvY2sgZGlzcGxheXMgdGhlIGNoaWxkcmVuIHdpdGhpbiB0aGF0IGNhdGVnb3J5LiBOb3csIGluIHRoZSBjYXRlZ29yeSBsaXN0LCB5b3UgbWlnaHQgd2FudCB0byBzaG93IHdoaWNoIGNhdGVnb3J5IGlzIHNlbGVjdGVkICh1c2luZyB0aGUgJGl0ZW0tPmlzX3NlbGVjdGVkIGF0dHJpYnV0ZSkuIEJ1dCB0aGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBjYXRlZ29yeSBsaXN0IGlzIGNhbGxlZCA8aT5iZWZvcmU8L2k+IHRoZSBtYWluIG1vZHVsZSBhY3Rpb24gKHRoZSBsaXN0IG9mIGNoaWxkcmVuKSwgYW5kIHRodXMgdGhlIGFjdGlvbiBwYXJhbWV0ZXJzIGFyZW4ndCB5ZXQgcGFyc2VkLjxici8+CgkJVGhpcyBzdWJqZWN0IGhhcyBiZWVuIGRpc2N1c3NlZCBpbiB0aGUgZm9ydW1zICg8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcvaW5kZXgucGhwL3RvcGljLDMzMzM0LjAuaHRtbCI+aGVyZTwvYT4pLCBhbmQgSSBjaG9zZSB0aGUgc29sdXRpb24gdGhhdCBpcyB0aGUgZWFzaWVzdCB0byBpbXBsZW1lbnQgZm9yIHRoZSB1c2VyOiByZXRyaWV2ZSB0aGUgcGFyYW1ldGVycyBmcm9tIHRoZSB1cmwgZXZlbiBiZWZvcmUgdGhleSBhcmUgcGFyc2VkIGJ5IHRoZSBjbXMuIEl0J3MgYSByYXRoZXIgY29tcGxpY2F0ZWQgZnVuY3Rpb24gYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgcHJldHR5dXJscyBhbmQgcmV3cml0dGVuIHVybHMuLi48YnIvPgoJCU9mIGNvdXJzZSwgaXQgbWVhbnMgdGhhdCBpZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhlIHdheSBwcmV0dHl1cmxzIGFyZSBtYWRlIGFuZCBzdGlsbCB1c2UgdGhlIGlzX3NlbGVjdGVkIGF0dHJpYnV0ZSwgeW91J3JlIGdvbm5hIGhhdmUgdG8gcGxheSBpbiB0aGlzIGluZWxlZ2FudCBjb2RlLiBCdXQgaGV5LCBJJ20gd3JpdGluZyB0aGlzIGp1c3QgdG8gbWFrZSBpdCBjbGVhcmVyLi4uPC9wPgoJCTxici8+PHA+PGI+SG93IGRvZXMgaXQgd29yaywgYW5kIGhvdyB0byBjaGFuZ2UgaXQ/PC9iPjwvcD4KCQk8cD5CZWZvcmUgd2UgZ28sIGhlcmUncyBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCWZ1bmN0aW9uIGdldF9tb2R1bGVHZXRWYXJzKCl7CiMxCQkvLyB1bm9ydGhvZG94IGhhY2sgc28gdGhhdCBkaWZmZXJlbnQgY2FsbHMgb2YgdGhlIG1vZHVsZSBzcGVhayB3aXRoIGVhY2ggb3RoZXIKIzIJCS8vIGJhc2ljYWxseSwgd2UgcmV0cmlldmUgcGFyYW1ldGVycyBpbiB0aGUgdXJsIHRoYXQgd2VyZSBtZWFudCBmb3Igb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBtb2R1bGUKIzMJCWdsb2JhbCAkX0dFVDsKIzQJCWdsb2JhbCAkZ0NtczsKIzUJCSRnbG9iYWxtb2R1bGV2YXJzID0gYXJyYXkoKTsKIzYJCWlmKGlzc2V0KCRfR0VUWyJtYWN0Il0pKXsKIzcJCQkvLyBpZiB3ZSBhcmVuJ3QgdXNpbmcgcHJldHR5IHVybHMuLi4KIzgJCQkkbW9kaW5mbyA9IGV4cGxvZGUoIiwiLCRfR0VUWyJtYWN0Il0pOwojOQkJCWlmKGlzc2V0KCRtb2RpbmZvKSAmJiAkbW9kaW5mb1swXSA9PSAkdGhpcy0+R2V0TmFtZSgpKXsKIzEwCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYXJlbnQiXSkpCiMxMQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhcmVudCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJwYXJlbnQiXTsKIzEyCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJ3aGF0Il0pKQojMTMJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJ3aGF0Il09JF9HRVRbJG1vZGluZm9bMV0uIndoYXQiXTsKIzE0CQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJhbGlhcyJdKSkKIzE1CQkJCQkkZ2xvYmFsbW9kdWxldmFyc1siYWxpYXMiXT0kX0dFVFskbW9kaW5mb1sxXS4iYWxpYXMiXTsKIzE2CQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYWdlaW5kZXgiXSkpCiMxNwkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJwYWdlaW5kZXgiXTsKIzE4CQkJfQojMTkJCX1lbHNlaWYoJGdDbXMtPmNvbmZpZ1siaW50ZXJuYWxfcHJldHR5X3VybHMiXSB8fCAkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSl7CiMyMAkJCSRwYXJhbXMgPSBhcnJheSgpOwojMjEJCQlpZigkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSAmJiBpc3NldCgkX0dFVFsicGFnZSJdKSl7CiMyMgkJCQkvLyBpZiB3ZSBhcmUgdXNpbmcgYW4gZXh0ZXJuYWwgbW9kX3Jld3JpdGUsIGFzc3VtaW5nIHlvdSBhcmUgdXNpbmcgdGhlIHZlcnkKIzIzCQkJCS8vIGJhc2ljIHJld3JpdGUgd2hpY2ggcHV0cyB0aGUgbW9kdWxlIGluZm9ybWF0aW9ucyBpbnNpZGUgdGhlIHBhZ2UgdmFyaWFibGUKIzI0CQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi8iLCRfR0VUWyJwYWdlIl0pOwojMjUJCQkJZm9yZWFjaCgkcGFydHMgYXMgJHBhcnQpewojMjYJCQkJCWlmKCRwYXJ0ICE9ICIiKQkkcGFyYW1zW10gPSAkcGFydDsKIzI3CQkJCX0KIzI4CQkJfWVsc2VpZighJGdDbXMtPmNvbmZpZ1siYXNzdW1lX21vZF9yZXdyaXRlIl0gJiYgJGdDbXMtPmNvbmZpZ1siaW50ZXJuYWxfcHJldHR5X3VybHMiXSAmJiBpc3NldCgkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXSkpewojMjkJCQkJLy8gaWYgd2UgYXJlIHVzaW5nIHRoZSBpbnRlcm5hbCBwcmV0dHkgdXJscwojMzAJCQkJJHBhcnRzID0gZXhwbG9kZSgiLyIsJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pOwojMzEJCQkJJHN0YXJ0ZWQgPSBmYWxzZTsKIzMyCQkJCWZvcmVhY2goJHBhcnRzIGFzICRwYXJ0KXsKIzMzCQkJCQlpZigkc3RhcnRlZCAmJiAkcGFydCAhPSAiIikJJHBhcmFtc1tdID0gJHBhcnQ7CiMzNAkJCQkJaWYoc3RydG9sb3dlcigkcGFydCkgPT0gImluZGV4LnBocCIpCSRzdGFydGVkID0gdHJ1ZTsKIzM1CQkJCX0KIzM2CQkJfQojMzcJCQlpZihpc3NldCgkcGFyYW1zWzBdKSAmJiBzdHJ0b2xvd2VyKCRwYXJhbXNbMF0pID09IHN0cnRvbG93ZXIoJHRoaXMtPkdldE5hbWUoKSkpewojMzgJCQkJIC8vIHdlIGFyZSBpbiBhIG1vZHVsZSBhY3Rpb24KIzM5CQkJCWlmKCFpc3NldCgkcGFyYW1zWzFdKSB8fCBzdHJ0b2xvd2VyKCRwYXJhbXNbMV0pID09ICJxdWVyeSIpewojNDAKIzQxCQkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sxXSkgJiYgc3RydG9sb3dlcigkcGFyYW1zWzFdKSA9PSAiZGV0YWlsIil7CiM0MgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICJ0c3ViYSI7CiM0MwkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbImFsaWFzIl0gPSAkcGFyYW1zWzJdOwojNDQJCQkJfWVsc2V7CiM0NQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICRwYXJhbXNbMV07CiM0NgkJCQkJc3dpdGNoKGNvdW50KCRwYXJhbXMpKXsKIzQ3CQkJCQkJY2FzZSA2OgojNDgJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1szXTsKIzQ5CQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbNF07CiM1MAkJCQkJCWNhc2UgNDoKIzUxCQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYXJlbnQiXSA9ICRwYXJhbXNbMl07CiM1MgkJCQkJCQlicmVhazsKIzUzCQkJCQkJY2FzZSA1OgojNTQJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1syXTsKIzU1CQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbM107CiM1NgkJCQkJCQlicmVhazsKIzU3CQkJCQl9CiM1OAkJCQl9CiM1OQkJCX0KIzYwCQl9CiM2MQkJcmV0dXJuICRnbG9iYWxtb2R1bGV2YXJzOwoJfTwvcHJlPgoJCTxwPk5vdyB0aGVyZSBhcmUgZm91ciBwb3NzaWJsZSBzY2VuYXJpb3M6PGJyLz4KCQkxLiBUaGVyZSBpcyBubyByZXdyaXRlIG9yIHByZXR0eXVybHMgYXQgYWxsICh0aGF0J3MgdGhlIGVhc2llc3QuLi4gbGluZXMgNyB0byAxOCBkZWFsIHdpdGggdGhpcyk8YnIvPgoJCTIuIFdlIGFyZSB1c2luZyBpbnRlcm5hbCBwcmV0dHl1cmxzIHdpdGhvdXQgbW9kX3Jld3JpdGUgKGxpbmVzIDI5IHRvIDM1LCBhbmQgMzcgdG8gNTkpPGJyLz4KCQkzLiBXZSBhcmUgdXNpbmcgaW50ZXJuYWwgcHJldHR5dXJscyBhbG9uZyB3aXRoIHRoZSBzdGFuZGFyZCBhc3N1bWVkIG1vZF9yZXdyaXRlIChsaW5lcyAyMiB0byAzNywgYW5kIDM3IHRvIDU5KTxici8+CgkJNC4gV2UgYXJlIHVzaW5nIGEgbm9uLXN0YW5kYXJkIG1vZF9yZXdyaXRlLi4uIGluIHRoYXQgY2FzZSwgeW91J2xsIGVpdGhlciBoYXZlIHRvIGZvcmdldCBhYm91dCB0aGUgaXNfc2VsZWN0ZWQgYXR0cmlidXRlIG9yIHRvIHdyaXRlIHRoZSBjb2RlIHlvdXJzZWxmLjwvcD4KCQk8cD48Yj5DYXNlIDE6IGdvb2Qgb2wnIHVybHM8L2I+PGJyLz4KCQlJZiB3ZSBmaW5kIHRoZSAibWFjdCIgaW4gdGhlIEdFVCBwYXJhbWV0ZXJzLCB0aGVuIHdlIGFyZSBkZWFsaW5nIHdpdGggc3RhbmRhcmQgdXJscy4gV2UganVzdCBoYXZlIHRvIGJyZWFrIHRoZSBtYWN0IHZhbHVlIGludG8gcGllY2VzLCBtYWtlIHN1cmUgaXQncyBhbiBhY3Rpb24gb2Ygb3VyIG1vZHVsZSwgYW5kIHJldHJpZXZlIHRoZSBkaWZmZXJlbnQgcGFyYW1ldGVycyBieSB0aGVpciBuYW1lIChhbG9uZyB3aXRoIHRoZSAkaWQpLjwvcD4KCQk8cD48Yj5DYXNlIDI6IGludGVybmFsIHByZXR0eSB1cmxzPC9iPjxici8+CgkJTGluZXMgMjkgdG8gMzUgcmV0cmlldmUgdGhlIHVybCwgc2VwYXJhdGUgaXQgaW50byBwYXJ0cyAoZWFjaCBwYXJ0IGJlaW5nIGEgZmFrZSBmb2xkZXIgaW4gdGhlIHVybCksIGFuZCBvbmx5IGtlZXAgdGhlIHBhcnRzIHRoYXQgYXJlIGFmdGVyIHRoZSAiaW5kZXgucGhwLyIuPC9wPgoJCTxwPkxpbmVzIDM3IHRvIDU5IHRyeSB0byBmaWd1cmUganVzdCB3aGF0IHBhcmFtZXRlcnMgdGhlc2UgcGFydHMgY291bGQgYmUuIFJlbWVtYmVyIHRoYXQgd2UgaGFkIHRoZSBmb2xsb3dpbmcgcm91dGVzIHJlZ2lzdGVyZWQ6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgojMQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiMyCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiMzCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cGFyZW50PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzQJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiM1CSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cGFyZW50PlteXC9dKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7PC9wcmU+CgkJPHA+Um91dGUgIzEgaXMgaGFuZGxlZCBieSB0aGUgbGluZXMgNDEtNDMuIE90aGVyd2lzZSwgaXQgd2lsbCBkZXBlbmQgb24gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzLiBJZiB0aGVyZSBhcmUgNiwgd2Uga25vdyB3ZSdyZSB1c2luZyByb3V0ZSAjNSA6ICRwYXJhbXNbMF0gaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSwgJHBhcmFtc1sxXSB0aGUgbmFtZSBvZiB0aGUgbGV2ZWwgKHdoYXQpLCAkcGFyYW1zWzJdIHRoZSBuYW1lIG9mIHRoZSBwYXJlbnQsICRwYXJhbXNbM10gdGhlIHBhZ2VpbmRleCwgYW5kIHNvIG9uLi4uPGJyLz4KCQlMaWtld2lzZSwgaWYgd2UgaGF2ZSA1IHBhcmFtcywgd2Uga25vdyB3ZSdyZSB1c2luZyByb3V0ZSAjNCwgYW5kIHdpdGggNCBwYXJhbXMsIHdlIGtub3cgd2UncmUgdXNpbmcgcm91dGUgIzMuIElmIHdlIHdlcmUgdXNpbmcgcm91dGUgIzIsIHRoZXJlIHdvdWxkbid0IGJlIGFueXRoaW5nIHRvIHJldHJpZXZlIGFueXdheS48YnIvPgoJCUlmIHRoZSBtb2R1bGUgYWN0aW9uIGlzIGEgcXVlcnkgKGxpbmVzIDM5LTQwKSwgd2UgZG9uJ3QgcmV0cmlldmUgYW55dGhpbmcuLi48L3A+CgkJPHA+U28gYmFzaWNhbGx5LCBpZiB5b3UgY2hhbmdlIHRoZSByb3V0ZXMsIHlvdSd2ZSBnb3QgdG8gY2hhbmdlIGxpbmVzIDM3IHRvIDU5LjwvcD4KCQk8cD48Yj5DYXNlIDM6IGludGVybmFsIHByZXR0eSB1cmxzIHdpdGggc3RhbmRhcmQgbW9kX3Jld3JpdGU8L2I+PGJyLz4JCQoJCUluIHRoaXMgY2FzZSwgdGhlIHBhdGggdGhhdCdzIGFmdGVyICJpbmRleC5waHAvIiBpbiBjYXNlIDIgaXMgc2ltcGx5IHBhc3NlZCB0aHJvdWdoIHRoZSAicGFnZSIgR0VUIHBhcmFtZXRlci4gU28gb25jZSB3ZSd2ZSByZXRyaWV2ZWQgaXQsIHRoZSB0YXNrIGlzIGp1c3QgbGlrZSBjYXNlIDIuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CQkKCQkKPC9kaXY+CjxwIGFsaWduPSJyaWdodCI+UGllcnJlLUx1YyBHZXJtYWluPC9wPgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/function.createFieldForm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cjw/cGhwCgkJJGNvbXBhcmVjaG9pY2VzID0gYXJyYXkoJHRoaXMtPkxhbmcoImNvbnRhaW5zIikgPT4xLCAkdGhpcy0+TGFuZygiaXNleGFjdGx5IikgPT4wLCAkdGhpcy0+TGFuZygiaXNub3QiKSA9PjIsICR0aGlzLT5MYW5nKCJpc2hpZ2hlcnRoYW4iKSA9PjMsICR0aGlzLT5MYW5nKCJpc2xvd2VydGhhbiIpID0+NCk7CgkJJGRhdGVjb21wYXJlY2hvaWNlcyA9IGFycmF5KCR0aGlzLT5MYW5nKCJxdWVyeXVzZSIpID0+ICJOQSIsICR0aGlzLT5MYW5nKCJpc2FmdGVyIikgPT4zLCAkdGhpcy0+TGFuZygiaXNiZWZvcmUiKSA9PjQsICR0aGlzLT5MYW5nKCJpc2JldHdlZW4iKSA9PjUpOwoJCSRvcmRlcmNob2ljZXMgPSBhcnJheSgiQVNDIj0+IkFTQyIsIkRFU0MiPT4iREVTQyIpOwoKCQkkb3V0cHV0ID0gYXJyYXkoKTsKCgkJc3dpdGNoKCR3aGF0KXsKCQkJY2FzZSAidmVoaWNsZXR5cGUiOgoJCQkJJG91dHB1dFsiY2xhc3NpZmljYXRpb24iXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJ2ZWhpY2xldHlwZV9jbGFzc2lmaWNhdGlvbiIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfY2xhc3NpZmljYXRpb24iLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX2NsYXNzaWZpY2F0aW9uIiwiIiwzMCkpOwoJCQkJJG91dHB1dFsibmFtZSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoIm5hbWUiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX25hbWUiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX25hbWUiLCIiLDMwKSk7CgkJCQkKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidG1wdGltZSIsIHRpbWUoKSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInNfYW5kIiwgJHRoaXMtPkxhbmcoInRoaXNhbmR0aGlzIikpOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0bXBfcHJlZml4IiwgJGlkLiJkYXRlX2RhdGVfbW9kaWZpZWRfIik7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRtcF9wcmVmaXgyIiwgJGlkLiJkYXRlX2RhdGVfbW9kaWZpZWRfcGFydDJfIik7CgkJCQkkdG1wdGVtcGxhdGUgPSAne2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXBfcHJlZml4IHRpbWU9JHRtcHRpbWUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEwIn0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXBfcHJlZml4IHRpbWU9JHRtcHRpbWUgfTxkaXYgaWQ9IicuJGlkLidkYXRlX21vZGlmaWVkX3BhcnQyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPiB7JHNfYW5kfSB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcF9wcmVmaXgyIHRpbWU9JHRtcHRpbWUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEwIn0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXBfcHJlZml4MiB0aW1lPSR0bXB0aW1lIH08L2Rpdj4nOwoJCQkJJHRtcG91dCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiY29tcGFyZV9kYXRlX21vZGlmaWVkIiwkZGF0ZWNvbXBhcmVjaG9pY2VzLC0xLCJOQSIsIiBvbmNoYW5nZT1cImRhdGVpbnB1dF9jaGFuZ2Vjb21wYXJlKCciLiRpZC4iZGF0ZV9tb2RpZmllZCcsIHRoaXMudmFsdWUpO1wiIikuIiAiLiR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdG1wdGVtcGxhdGUpOwoJCQkJJHRtcG91dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCJmaWVsZF9kYXRlX21vZGlmaWVkIiwgIl9fZGF0ZV9maWVsZCIpOwoJCQkJJG91dHB1dFsiZGF0ZV9tb2RpZmllZCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoImRhdGVfbW9kaWZpZWQiKSwgJHRtcG91dCk7CgkJCQkkb3JkZXJmaWVsZG9wdGlvbnMgPSBhcnJheSgiIj0+IiIsImNsYXNzaWZpY2F0aW9uIj0+ImNsYXNzaWZpY2F0aW9uIiwiaWQiPT4iaWQiLCJuYW1lIj0+Im5hbWUiLCJhbGlhcyI9PiJhbGlhcyIsIml0ZW1fb3JkZXIiPT4iaXRlbV9vcmRlciIsImRhdGVfbW9kaWZpZWQiPT4iZGF0ZV9tb2RpZmllZCIpOwoJCQkJJG91dHB1dFsib3JkZXJieSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoIm9yZGVyYnlmaWVsZCIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIm9yZGVyIiwkb3JkZXJmaWVsZG9wdGlvbnMpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIm9yZGVyX3R5cGUiLCRvcmRlcmNob2ljZXMpKTsKCQkJCWJyZWFrOwoJCQljYXNlICJ2ZWhpY2xlIjoKCQkJCSRvdXRwdXRbInllYXIiXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJ2ZWhpY2xlX3llYXIiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX3llYXIiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX3llYXIiLCIiLDMwKSk7CgkJCQkkdG1wb3B0aW9ucyA9ICR0aGlzLT5nZXRfZmllbGRvcHRpb25zKCJ2ZWhpY2xlX21ha2UiKTsKCQkJCSR0bXBvcHRpb25zWyIiXSA9ICIiOwoJCQkJJG91dHB1dFsibWFrZSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInZlaGljbGVfbWFrZSIpLCR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCJmaWVsZF9tYWtlW10iLCR0bXBvcHRpb25zKSk7CgkJCQkkb3V0cHV0WyJtb2RlbCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInZlaGljbGVfbW9kZWwiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX21vZGVsIiwkY29tcGFyZWNob2ljZXMsLTEsMSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJmaWVsZF9tb2RlbCIsIiIsMzApKTsKCQkJCSRvdXRwdXRbIm1pbGFnZSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInZlaGljbGVfbWlsYWdlIiksICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiY29tcGFyZV9taWxhZ2UiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX21pbGFnZSIsIiIsMzApKTsKCQkJCSRvdXRwdXRbInZlaGljbGVjb25kaXRpb24iXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJ2ZWhpY2xlX3ZlaGljbGVjb25kaXRpb24iKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX3ZlaGljbGVjb25kaXRpb24iLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX3ZlaGljbGVjb25kaXRpb24iLCIiLDMwKSk7CgkJCQkkb3V0cHV0WyJjb2xvciJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInZlaGljbGVfY29sb3IiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX2NvbG9yIiwkY29tcGFyZWNob2ljZXMsLTEsMSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJmaWVsZF9jb2xvciIsIiIsMzApKTsKCQkJCSRvdXRwdXRbInByaWNlIl0gPSBhcnJheSgkdGhpcy0+TGFuZygidmVoaWNsZV9wcmljZSIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfcHJpY2UiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX3ByaWNlIiwiIiwzMCkpOwoJCQkJJG91dHB1dFsiZW5naW5lIl0gPSBhcnJheSgkdGhpcy0+TGFuZygidmVoaWNsZV9lbmdpbmUiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX2VuZ2luZSIsJGNvbXBhcmVjaG9pY2VzLC0xLDEpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmllbGRfZW5naW5lIiwiIiwzMCkpOwoJCQkJJHRtcG9wdGlvbnMgPSAkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygidmVoaWNsZV9mZWF0dXJlcyIpOwoJCQkJJHRtcG9wdGlvbnNbIiJdID0gIiI7CgkJCQkkb3V0cHV0WyJmZWF0dXJlcyJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInZlaGljbGVfZmVhdHVyZXMiKSwkdGhpcy0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwiZmllbGRfZmVhdHVyZXNbXSIsJHRtcG9wdGlvbnMpKTsKCQkJCSRvdXRwdXRbImRlc2NyaXB0aW9uIl0gPSBhcnJheSgkdGhpcy0+TGFuZygidmVoaWNsZV9kZXNjcmlwdGlvbiIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfZGVzY3JpcHRpb24iLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX2Rlc2NyaXB0aW9uIiwiIiwzMCkpOwoJCQkJJG91dHB1dFsicGFyZW50Il0gPSBhcnJheSgkdGhpcy0+TGFuZygicGFyZW50IikpOwoJCQkJJHBhcmVudG9wdGlvbnMgPSAkdGhpcy0+Z2V0X2hpZXJhcmNoeW9wdGlvbnMoInZlaGljbGUiKTsKCQkJCSRvdXRwdXRbInBhcmVudCJdW10gPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImZpZWxkX3BhcmVudCIsJHBhcmVudG9wdGlvbnMpOwoJCQkJJG91dHB1dFsibmFtZSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoIm5hbWUiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX25hbWUiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX25hbWUiLCIiLDMwKSk7CgkJCQkKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidG1wdGltZSIsIHRpbWUoKSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInNfYW5kIiwgJHRoaXMtPkxhbmcoInRoaXNhbmR0aGlzIikpOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0bXBfcHJlZml4IiwgJGlkLiJkYXRlX2RhdGVfbW9kaWZpZWRfIik7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRtcF9wcmVmaXgyIiwgJGlkLiJkYXRlX2RhdGVfbW9kaWZpZWRfcGFydDJfIik7CgkJCQkkdG1wdGVtcGxhdGUgPSAne2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXBfcHJlZml4IHRpbWU9JHRtcHRpbWUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEwIn0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXBfcHJlZml4IHRpbWU9JHRtcHRpbWUgfTxkaXYgaWQ9IicuJGlkLidkYXRlX21vZGlmaWVkX3BhcnQyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPiB7JHNfYW5kfSB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcF9wcmVmaXgyIHRpbWU9JHRtcHRpbWUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEwIn0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXBfcHJlZml4MiB0aW1lPSR0bXB0aW1lIH08L2Rpdj4nOwoJCQkJJHRtcG91dCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiY29tcGFyZV9kYXRlX21vZGlmaWVkIiwkZGF0ZWNvbXBhcmVjaG9pY2VzLC0xLCJOQSIsIiBvbmNoYW5nZT1cImRhdGVpbnB1dF9jaGFuZ2Vjb21wYXJlKCciLiRpZC4iZGF0ZV9tb2RpZmllZCcsIHRoaXMudmFsdWUpO1wiIikuIiAiLiR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdG1wdGVtcGxhdGUpOwoJCQkJJHRtcG91dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCJmaWVsZF9kYXRlX21vZGlmaWVkIiwgIl9fZGF0ZV9maWVsZCIpOwoJCQkJJG91dHB1dFsiZGF0ZV9tb2RpZmllZCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoImRhdGVfbW9kaWZpZWQiKSwgJHRtcG91dCk7CgkJCQkkb3JkZXJmaWVsZG9wdGlvbnMgPSBhcnJheSgiIj0+IiIsInllYXIiPT4ieWVhciIsIm1ha2UiPT4ibWFrZSIsIm1vZGVsIj0+Im1vZGVsIiwibWlsYWdlIj0+Im1pbGFnZSIsInZlaGljbGVjb25kaXRpb24iPT4idmVoaWNsZWNvbmRpdGlvbiIsImNvbG9yIj0+ImNvbG9yIiwicHJpY2UiPT4icHJpY2UiLCJlbmdpbmUiPT4iZW5naW5lIiwiZmVhdHVyZXMiPT4iZmVhdHVyZXMiLCJkZXNjcmlwdGlvbiI9PiJkZXNjcmlwdGlvbiIsInBhcmVudCI9PiJwYXJlbnQiLCJpZCI9PiJpZCIsIm5hbWUiPT4ibmFtZSIsImFsaWFzIj0+ImFsaWFzIiwiaXRlbV9vcmRlciI9PiJpdGVtX29yZGVyIiwiZGF0ZV9tb2RpZmllZCI9PiJkYXRlX21vZGlmaWVkIik7CgkJCQkkb3V0cHV0WyJvcmRlcmJ5Il0gPSBhcnJheSgkdGhpcy0+TGFuZygib3JkZXJieWZpZWxkIiksICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwib3JkZXIiLCRvcmRlcmZpZWxkb3B0aW9ucykuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwib3JkZXJfdHlwZSIsJG9yZGVyY2hvaWNlcykpOwoJCQkJYnJlYWs7CgkJCQoJCX0KCQllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CglmdW5jdGlvbiBkYXRlaW5wdXRfY2hhbmdlY29tcGFyZShmaWVsZG5hbWUsIG5ld3ZhbHVlKXsKCQlpZihuZXd2YWx1ZSA9PSA1KXsKCQkJdmFyIG5ld3N0YXRlID0gImlubGluZSI7CgkJfWVsc2V7CgkJCXZhciBuZXdzdGF0ZSA9ICJub25lIjsKCQl9CgkJaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmllbGRuYW1lKyJfcGFydDIiKSkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmllbGRuYW1lKyJfcGFydDIiKS5zdHlsZS5kaXNwbGF5ID0gbmV3c3RhdGU7CgkJcmV0dXJuIHRydWU7Cgl9Cjwvc2NyaXB0PgonOwoJCWlmKCRhc3NpZ24pewoJCQlmb3JlYWNoKCRvdXRwdXQgYXMgJGtleT0+JHZhbHVlKXsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigka2V5LiJfbGFiZWwiLCAkdmFsdWVbMF0pOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCRrZXkuIl9pbnB1dCIsICR2YWx1ZVsxXSk7CgkJCX0KCQl9ZWxzZXsKCQkJZWNobyAiPHRhYmxlIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBMaWdodEdyYXk7IHBhZGRpbmctbGVmdDogMTBweDtcIj4iOwoJCQlmb3JlYWNoKCRvdXRwdXQgYXMgJGtleT0+JHZhbHVlKXsKCQkJCWlmKCRrZXkgIT0gIm9yZGVyYnkiKQllY2hvICIKCQkJCTx0cj48dGQ+Ii4kdmFsdWVbMF0uIjwvdGQ+PHRkPiIuJHZhbHVlWzFdLiI8L3RkPjwvdHI+IjsKCQkJfQoJCQkJZWNobyAiCgkJCTwvdGFibGU+PGJyLz4iOwoJCQllY2hvICI8cD4iLiRvdXRwdXRbIm9yZGVyYnkiXVswXS4iOiAiLiRvdXRwdXRbIm9yZGVyYnkiXVsxXS4iPC9wPiI7CgkJfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.plGetFileInfo.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCWlmKCFpc3NldCgkZmlsZXBhdGgpKQlleGl0OwoJCgkkaW5mbyA9IGFycmF5KCk7CgkKCSRpbmZvWyJmaWxlbmFtZSJdID0gYmFzZW5hbWUoJGZpbGVwYXRoKTsKCQoJJHNpemUgPSBmaWxlc2l6ZSgkZmlsZXBhdGgpOwoJJGluZm9bInNpemUiXSA9ICRzaXplOwoJaWYoJHNpemUgPiAxMDczNzQxODI0KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDczNzQxODI0KSwyKS4nIEdCJzsKCX1lbHNlaWYoJHNpemUgPiAxMDQ4NTc2KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDQ4NTc2KSwyKS4nIE1CJzsKCX1lbHNlaWYoJHNpemUgPiAxMDI0KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDI0KSwyKS4nIEtCJzsKCX1lbHNlewoJCSRzaXplIC49ICcgYnl0ZXMnOwoJfQoJJGluZm9bInNpemVfd2Zvcm1hdCJdID0gJHNpemU7CgkKCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlcGF0aCwgIi4iKSwgMSkpOwoJJGluZm9bImV4dCJdID0gJGV4dGVuc2lvbjsKCWlmKGluX2FycmF5KCRleHRlbnNpb24sIGFycmF5KCdmbHYnLCdzd2YnLCd3bXYnLCdtb3YnKSkpewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mbWVkaWEuZ2lmIjsKCX1lbHNlaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2pwZWcnLCdqcGcnLCdwbmcnLCdnaWYnKSkpewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mcGFpbnQuZ2lmIjsKCX1lbHNlewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mZG9jLmdpZiI7Cgl9CgkKCSRpbmZvWyJpbWFnZXNpemUiXSA9IGZhbHNlOwoJJGltZ2luZiA9IGdldGltYWdlc2l6ZSgkZmlsZXBhdGgpOwoJaWYoaXNzZXQoJGltZ2luZlsxXSkpewoJCSRpbmZvWyJ3aWR0aCJdID0gJGltZ2luZlswXTsKCQkkaW5mb1siaGVpZ2h0Il0gPSAkaW1naW5mWzFdOwoJCSRpbmZvWyJpbWFnZXNpemUiXSA9ICRpbWdpbmZbMF0uJ3gnLiRpbWdpbmZbMV07CgkJaWYoaXNzZXQoJGltZ2luZlsibWltZSJdKSkJJGluZm9bIm1pbWUiXSA9ICRpbWdpbmZbIm1pbWUiXTsKCX0KCQoJJGluZm9bIm93bmVyIl0gPSBmaWxlb3duZXIoJGZpbGVwYXRoKTsKCSRpbmZvWyJwZXJtaXNzaW9ucyJdID0gZmlsZXBlcm1zKCRmaWxlcGF0aCk7CgkKCSRpbmZvWyJmaWxlbXRpbWUiXSA9IGZpbGVtdGltZSgkZmlsZXBhdGgpOwoJJGluZm9bIm1vZGlmaWVkIl0gPSBkYXRlKCJZLW0tZCBHOmkiLCAkaW5mb1siZmlsZW10aW1lIl0pOwoJCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/function.plresize.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gZnVuY3Rpb24gcGxSZXNpemUoJGZ1bGxwYXRoLCAkbmV3cGF0aCwgJG5ld3dpZHRoLCAkbmV3aGVpZ2h0PWZhbHNlLCAkdHJhbnNwYXJlbmN5PWZhbHNlLCAkY3JvcD1mYWxzZSkgewoJJG5hbWUgPSBzdHJfcmVwbGFjZSgnLy8nLCcvJywkZnVsbHBhdGgpOwoJaWYoIWZpbGVfZXhpc3RzKCRuYW1lKSkJcmV0dXJuIGZhbHNlOwoJJGltYWdlX2luZm9zID0gZ2V0aW1hZ2VzaXplKCRuYW1lKTsKCQoJJGRvcmVzaXplID0gdHJ1ZTsKCWlmKCAkaW1hZ2VfaW5mb3NbMF0gPD0gJG5ld3dpZHRoICYmICgkbmV3aGVpZ2h0ID09IGZhbHNlIHx8ICRpbWFnZV9pbmZvc1sxXSA8PSAkbmV3aGVpZ2h0KSApewoJCSRyZXR1cm4gPSBmYWxzZTsKCX1lbHNlewoJCSRuZXduYW1lID0gKCRuZXdwYXRoID09ICcnPyRmdWxscGF0aDokbmV3cGF0aCk7CgkJJGFyciA9IHNwbGl0KCJcLiIsJG5hbWUpOwoJCSRleHQgPSBzdHJ0b2xvd2VyKCRhcnJbY291bnQoJGFyciktMV0pOwoKCQlpZigkZXh0PT0ianBlZyIgfHwgJGV4dD09ImpwZyIpewoJCQkkaW1nID0gQGltYWdlY3JlYXRlZnJvbWpwZWcoJG5hbWUpOwoJCX0gZWxzZWlmKCRleHQ9PSJwbmciKXsKCQkJJGltZyA9IEBpbWFnZWNyZWF0ZWZyb21wbmcoJG5hbWUpOwoJCX0gZWxzZWlmKCRleHQ9PSJnaWYiKSB7CgkJCSRpbWcgPSBAaW1hZ2VjcmVhdGVmcm9tZ2lmKCRuYW1lKTsKCQl9CgkJaWYoISRpbWcpICAgcmV0dXJuIGZhbHNlOwoKCQkkb2xkX3ggPSBpbWFnZVNYKCRpbWcpOwoJCSRvbGRfeSA9IGltYWdlU1koJGltZyk7CgoJCWlmKCRuZXdoZWlnaHQgJiYgJGNyb3ApewoJCQkvLyBmaW5kIHRoZSB3YW50ZWQgcmF0aW8KCQkJJHdhbnRlZHJhdGlvID0gJG5ld3dpZHRoLyRuZXdoZWlnaHQ7CgkJCSRjdXJyZW50cmF0aW8gPSAkb2xkX3gvJG9sZF95OwoJCQlpZigkY3VycmVudHJhdGlvID4gJHdhbnRlZHJhdGlvKXsKCQkJCS8vIHdpZHRoIGlzIHRvbyBsYXJnZQoJCQkJJGNyb3BfeCA9IChpbnQpICgkb2xkX3kgKiAkd2FudGVkcmF0aW8pOwoJCQkJJGNyb3BfeSA9ICRvbGRfeTsKCQkJCSRpbnRfdyA9IChpbnQpICgoJG9sZF94IC0gJGNyb3BfeCkgLyAyKTsKCQkJCSRpbnRfaCA9IDA7CgkJCX1lbHNlaWYoJGN1cnJlbnRyYXRpbyA8ICR3YW50ZWRyYXRpbyl7CgkJCQkvLyBoZWlnaHQgaXMgdG9vIGxhcmdlCgkJCQkkY3JvcF94ID0gJG9sZF94OwoJCQkJJGNyb3BfeSA9IChpbnQpICgkb2xkX3ggLyAkd2FudGVkcmF0aW8pOwoJCQkJJGludF9oID0gKGludCkgKCgkb2xkX3kgLSAkY3JvcF95KSAvIDIpOwoJCQkJJGludF93ID0gMDsKCQkJfQoJCQlpZigkY3VycmVudHJhdGlvICE9ICR3YW50ZWRyYXRpbyl7CgkJCQkvLyB3ZSBmaXJzdCBjcm9wCgkJCQkkZGltZyA9IEltYWdlQ3JlYXRlVHJ1ZUNvbG9yKCRjcm9wX3gsICRjcm9wX3kpOwoJCQkJaWYoaW1hZ2Vjb3B5cmVzYW1wbGVkKCRkaW1nLCRpbWcsMCwwLCRpbnRfdywkaW50X2gsJGNyb3BfeCwkY3JvcF95LCRjcm9wX3gsJGNyb3BfeSkpewoJCQkJCWltYWdlZGVzdHJveSgkaW1nKTsKCQkJCQkkaW1nID0gJGRpbWc7CgkJCQl9CgkJCX0KCQkJJG9sZF94ID0gJGNyb3BfeDsKCQkJJG9sZF95ID0gJGNyb3BfeTsKCQkJJHRodW1iX2ggPSAkbmV3aGVpZ2h0OwoJCQkkdGh1bWJfdyA9ICRuZXd3aWR0aDsKCQl9ZWxzZXsKCQkJJHJhdGlvID0gJG5ld2hlaWdodD9taW4oJG5ld3dpZHRoIC8gJGltYWdlX2luZm9zWzBdLCAkbmV3aGVpZ2h0IC8gJGltYWdlX2luZm9zWzFdKTooJG5ld3dpZHRoIC8gJGltYWdlX2luZm9zWzBdKTsKCQkJJHRodW1iX2ggPSAkaW1hZ2VfaW5mb3NbMV0gKiAkcmF0aW87CgkJCSR0aHVtYl93ID0gJGltYWdlX2luZm9zWzBdICogJHJhdGlvOwoJCX0KCgkJJG5ld19pbWcgPSBJbWFnZUNyZWF0ZVRydWVDb2xvcigkdGh1bWJfdywgJHRodW1iX2gpOwoJICAgCgkJaWYoJHRyYW5zcGFyZW5jeSkgewoJCQlpZigkZXh0PT0icG5nIikgewoJCQkJaW1hZ2VhbHBoYWJsZW5kaW5nKCRuZXdfaW1nLCBmYWxzZSk7CgkJCQkkY29sb3JUcmFuc3BhcmVudCA9IGltYWdlY29sb3JhbGxvY2F0ZWFscGhhKCRuZXdfaW1nLCAwLCAwLCAwLCAxMjcpOwoJCQkJaW1hZ2VmaWxsKCRuZXdfaW1nLCAwLCAwLCAkY29sb3JUcmFuc3BhcmVudCk7CgkJCQlpbWFnZXNhdmVhbHBoYSgkbmV3X2ltZywgdHJ1ZSk7CgkJCX0gZWxzZWlmKCRleHQ9PSJnaWYiKSB7CgkJCQkkdHJucHJ0X2luZHggPSBpbWFnZWNvbG9ydHJhbnNwYXJlbnQoJGltZyk7CgkJCQlpZiAoJHRybnBydF9pbmR4ID49IDApIHsKCQkJCQkvL2l0cyB0cmFuc3BhcmVudAoJCQkJCSR0cm5wcnRfY29sb3IgPSBpbWFnZWNvbG9yc2ZvcmluZGV4KCRpbWcsICR0cm5wcnRfaW5keCk7CgkJCQkJJHRybnBydF9pbmR4ID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRuZXdfaW1nLCAkdHJucHJ0X2NvbG9yWydyZWQnXSwgJHRybnBydF9jb2xvclsnZ3JlZW4nXSwgJHRybnBydF9jb2xvclsnYmx1ZSddKTsKCQkJCQlpbWFnZWZpbGwoJG5ld19pbWcsIDAsIDAsICR0cm5wcnRfaW5keCk7CgkJCQkJaW1hZ2Vjb2xvcnRyYW5zcGFyZW50KCRuZXdfaW1nLCAkdHJucHJ0X2luZHgpOwoJCQkJfQoJCQl9CgkJfSBlbHNlIHsKCQkJSW1hZ2VmaWxsKCRuZXdfaW1nLCAwLCAwLCBpbWFnZWNvbG9yYWxsb2NhdGUoJG5ld19pbWcsIDI1NSwgMjU1LCAyNTUpKTsKCQl9CgkJaW1hZ2Vjb3B5cmVzYW1wbGVkKCRuZXdfaW1nLCAkaW1nLCAwLDAsMCwwLCAkdGh1bWJfdywgJHRodW1iX2gsICRvbGRfeCwgJG9sZF95KTsKCgkJaWYoZmlsZV9leGlzdHMoJG5ld25hbWUpKQlAdW5saW5rKCRuZXduYW1lKTsKCgkJaWYoJGV4dD09ImpwZWciIHx8ICRleHQ9PSJqcGciKXsKCQkJaW1hZ2VqcGVnKCRuZXdfaW1nLCAkbmV3bmFtZSk7CgkJCSRyZXR1cm4gPSB0cnVlOwoJCX0gZWxzZWlmKCRleHQ9PSJwbmciKXsKCQkJaW1hZ2VwbmcoJG5ld19pbWcsICRuZXduYW1lKTsKCQkJJHJldHVybiA9IHRydWU7CgkJfSBlbHNlaWYoJGV4dD09ImdpZiIpIHsKCQkJaW1hZ2VnaWYoJG5ld19pbWcsICRuZXduYW1lKTsKCQkJJHJldHVybiA9IHRydWU7CgkJfQoJCWltYWdlZGVzdHJveSgkbmV3X2ltZyk7CgkJaW1hZ2VkZXN0cm95KCRpbWcpOwoJCWlmKCRyZXR1cm4pICRyZXR1cm4gPSAkbmV3bmFtZTsKCX0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhZABLAOf8AAAGCQMGAQsEAwwDEQgFCxYDDQ8JBwkLBwUMDw0KDxcNBQ8RDhIQExUQDg0SFBUTFxkXGxsXFhgZFhwbHiIbER8bGhsfIR0fHSAeISIkIiUjJiUlHiknKicoJiEqKTAoHDcoFi0rLiQuLyktLywtKiovJy0uNjAuMTIxNDcyMTA0NjI0MTY0ODY3NUA2NjI6O0Y4FTo4Ozs5MkU4IDg6Nz86OT07P0A/QjxBQ0FBOkBBPzxEQEVDRkhDQl1DE0tGRUdIRklIQUlHS0VJTENLR1BOUklRTk5QTk1RVFNRVVNVU1dVWVNXWVFZVVdZVlpYXFBcXGVaM11bYGBbWlxeW1hhXVphYmFfY19hXmZkZ19naGRnZGlnam1rb2Nub2ttamltcHFvc3Rydm50dnhzcnJ1cnh2enx5fXd8fnp8eYB7epN+MoB+gniBfISChn2GgXuHh4GGiIWHhImHi46Lj4uNiomNkISQkYeQi5GOko+RjpWQj5aTl4qXmZmUk5CWmpWXlI2alJqYnJmbmIahq56cn5WfnJmeoI+jopOiqJOknZ+hnqOgpKekqJuntKKnqZSqvaaopaansaCqpaqorKqsqaGtuqittq6ssKiusKWxsp6zyK6yr7Owta2ytLazt6u3uLS2s6m5xq66tbO4u665wbq4vLi9wKXB0bK/v7u9ur68wLa+xrfCvcPAxb3CxcDDv73FzcfEyMLHysbIxMDKxcrHy7XM3rzL2MnLyMzKzsbMzs/N0crP0dPNzMfRzM7QzdLQ1MzS1MLU4crT28/U19XT19PV0cnY7NjW2s3Z4dPY2tbY1dvY3NXa3N3a39fc39rc2eDe4trg4t7g3dXi6+Pg5efi4Obj6OPl4eDm6Ojl6uXn5N3q8efp5uro7OXq7enr6Ozq7uvt6u7s8Oju8fLs6+3v6+7w7fXv7vLw9Ozy9fDy7/Hz8PT28/f1+fL3+vv19Pb49P339vf69vX7/vn7+Pz6/vr8+f388/v9+v/8+v/8//n+//z/+/7//CH+EUNyZWF0ZWQgd2l0aCBHSU1QACwAAAAAZABLAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmPb0CdSnj6A+gfhuisSnD98/e/rw2cOHzx4+fUI38rQnzx07asBy0cp1LBq1cPbw0bTIk6C+efHMXZOFqZAfQIMWPYoUCpavu9nk4SNoDx9Cngb7/ev3r18/fQQNj+TJ8588dOGAffKjhgwZNWTUyNFzKFOoUJxCrfJ17Bi1cPZS/7N3UJ9AnvgK9qtHu94/fPoQ6t7N+5++eemurdrDZQoVLFi2fCljOc2iV71+/arVqlKlUKqAlabWTp48ewZ5/uJLba+d+XXryq2b1ksb7X/7eCKcT/8gPnnefO2Z0qP/jyNOOIHFFgR+UUYlqaTSSiu1NDhKJYtUEgotwNBSiRz2/KMPPvZ418453mRDzYjZZDONNtosMw00uxADTj3/5KNPfTQWpA89/+hjTzvUqJKGDjTQUIMOQBxhpBJHOIGFE1QAMgoooIwi5SgLwqJKJHXUAUgotKhSYonUfClmiSNag+I00JRTTDfVVLOOPfvUKOc/+PyjTzvAhALLIC0ESYMOQByhBBVHAAHEEXJgoUQVhkDJCR5vRKqHHFgokcYitByTjTfejIMOO+a1w86o6JxzDjrjeAMOONqAU442/sWwgsotw6yDz5z06fOPPvjYo8sXQBxRRiUt0NDEF2/gYcgkdQCxAxBEUJHGEUZUYYgmbcihB4FpLAINPOu0A4888JSLHjrolAPOOeWUg66p6Jaz6jffgFNON7jcAoko6+CDK0L63FPPO5hIYYUTSlCxyBct3IGIIhDjEUQOFOcQhBxyGGFEE204IQcguXjjDj31lIteOeKkTO/K32xDL6fejBPOOOeMY+o54IjzjTTSNGOLNePYM9DQRBdN9D331HMIGGB8IUcaX1ARSQtQQIxIH0TIoLUMFCshBxAeHFEHMPLgQ4937KATjjclXmPN23Bbg83c2GyTDafheEPN/jHZhBPOOeWQQw7P32yzTTbhyGP04kbzc08jWnhxByBV6EADCXLE4cEYhgRixA5BtkDDChlcAAQgx6DjTqjnhOPNNSOOGE00PD/DM89wY6NNiZxSo4ceqpyDzjnegCMOOSmLA844nLZjjz6MM67PPbaM4YUWfeBBBA0rkLACJUyIUEYTOOCgQwsdSKBDHbRk480445zjzZcjQjMNNM5AA40zzfTf/zM8e9vcsgEzU3njHN7IhjfO0a5yrKoc5/BGiaIhD3tEz2j6wAc4wBAHKEDhDm8wghKAQIILcAETLxDBC3AQAxLoQA60mB01sgGzcJgKftRQRSb+cIlYEKMa/s7wX/+ewbO3zS0bMINZNtDRDnSMCl3oOkc4vJENapQhGxcsmj7wYY9BwAEORkDCGEgBi2PkAhBW6EAj/jCCEeAgC4XYhTS0sap0qCMd73hHPOLxDne0IxOvAIcyWGEJR7CCGMtIhv+ecTtrzE0b2fAGirxxDnSdAx3tGBU6zjGOElEjGseIRDTwkcV/MOYf+qAGF9zgBhyYoQtJWIIQYpAFPjjgCLCowyKOkQ1vRMMboWqHO+ThDnm8Ix7zEEc5tLGOesADF7hAhjKc0QtjNCMZwSiGNovhDGhIwxpzo5c4TIUudrSDHeoQhzakkQxpPCMZyWiGLOpRyoHgQx5y/ogDF5LAgxgkAAM3MAMf+BAGJtQBGNTIxjjOwQ50tMMd3pGHO8zDDnSYIx3YKMc0dkGPelRDFLfoRinAIQtrNGMZznAGNKYBjWlMwxpz28Y3xFEOdLCjHexAhziwIQ1j8EIWxpBGM4whiDnUo572cIc3crGFMUhBCCzggRgasYpVfOITtggGM6KRDW+E4xzsMI886GEPesiDHegIhzeycQ1t9EIbswAGNRIBCUigYhjreEUysNGMlOrPpdOwBt2+IY5zoKMd6PBGNqwRDFvIIhi2CEYymiGILGShHEPL7ED0IY9sHIMawJBDHOaQB0Gs4hnSCMYqTMELaUwjG94I/hU7stEOebgjVOw4hzeyQY3eunQWu8hEHxJBiLoOQxuvsIU4rOEM/enPpdaYW8rUUY5xZIMa0aAGNJphC1e4YhWyEEQIWGAGKYiDJ5odmj7OkY1zRCMc8niHOr5hjf4lwxjNwAY51CEOb2Tjv9E4BjW88V9v3Mwb/6XG7PQ3jWS4ghSaSIQolFGNaVDCFtiQhjOWkVJouNQa2xCHOtSxjWgwIxe0mB00niELV8hCEDFIAANicIYuaIMn9kivQPQxDk6xYxzZ0MY3wDFicWBDiM2Yxux6S43/wgILNACCHZiRDW9kgxrRYAYzlrGM/gXDGLt4RSkkcQlSmKIZz3AG/pe57AxoTOMbKcNGM4IBjFzQIhLMiEb/eDEHFBCAAQwgwA3ogAlhhAMf+tCxPv5BD3FoAxq22EX/hBEMXuhCF70QBped4VxoPGMa1nBFBQQgAAIQgAOFwEY2eguNZThDGLzoRTKcAQ2XPsOlz+hfMowRDGEIIxnNcOkyerGLXuwiF7mgxSKOwQxVbOECADjAAgCQAAeAYRaeyAQz2qEPHf8DH9/o3xwYkABTrOITtrg0L3qhzWWktNPTkAYXBNAACEjhDGfgQh5UEYpIHCIOsxBGMYTRC18vAxrOEGIykmEMYwSDF7bAxCdIcYpXzGIXs6AFsiMhByUsIAAHOEAA/g7ggAQgwROvGMMsoiEPHePjH/KQRjKa0QgM3KARsnCFLXTBC170QptcTmlKoTGNZaSAASzYQw0iUIEKTEEOcYjDIR5BimUUoxdY74UwuNwMafQvGbyQRSPOwAMGJCAMnjjFLHohjF14Ig0tCLncAyD3CYzhFK/AejDGkRpvu4MXjTBGMvIghSy4whS20EXPhbHNZaRUf8uAhjBIgIE5MKABBmjAAQIwATsIoxjQcMYyiiGMXgijGMtI6TKMEQxeuEIMIUgAARIQgiTY4RTF2MUsXlGEBQTgAAs4QAACcIAFhPwIj3jFLLA+C2Ggwx3ysIc+0uuOMUxgCbb4xAQS/tAIW+jCFrrgha+L4Qz9AXYa0MhFCcBwAgIo4AMbGD4AHiALlwp9GcUQhjaF0Ytd2EIWrrAEBPAAHMADWWAGdCAIaHAImeAJpIADchcAIbcAByABShAJsDALWLcLh3AIrkAN4SAP9oAP6eUOXNAFPJAFusAIc2AKsqALvBAMxbAMzgANgIUiKDINwFACccAACUABHyABASABCAABQuBS0MBlxSAMvbALTrgLumALsiALMbAEYmAGbsAGYZAEHJAAKnAImUAKh7AAB7AAckcCX1AJsAALuSAMvUAKY2AFdrAK1DAO8mAP+JBZ+vAP8oAGRaABGlAItmALwTALwlAM/sswDTzzNnPzDeDwDdqADctAA2BwABvgAi5wARnQAioAAQjACNLQDMtgDMHga73whJdmC7KQBFLABEPQAQgQAACAAA6AAFxACZ9ACnEAAQkAAU/wB6vwCrLQC8sgDLZgB0IwBGPACL2QDeggD/aADwMhEPrwD/ZwCBwQAxhgA64wC94oDNDgUm/zNnQzN9tgDckgBExwAAoQBTOQAhdAAxewAB0wBOMoDc3AZcXga76WDLpgC4KQAAQwfAcwfAeQAAkAAYKACabwCZTAB5/gCrKgC8aQDMFgC4yQBCxQBGdACbwwDdmADvJgD/gwjdPYCSzwACGgAXTwCq8wC8Xg/gwuJQ3jWJPWgA3SkAxLoAQHoABr4AMyQAI6IAEZQAUQYArfsA3YYA0upU3LkFLW0AiNYAtLQADDN3wHsAAQMAEJ0AWfsAqyUFW2YAw8kwy2IAhFEAI2IAVz8AnGYA3f4A3o4A72gA8mORDQcAMMcAIogAK74I3CsAzF0D/98ww8wzPj2AxSUAUGUABr4AM1oAMrsAISkAEQcAXfIA7bgA3S4Axcpj/OcAU3EAOU4AonIHcHMHwJgAFFgAnetQq28AzbIA3BYApucAMYcAJC0AWF4ArNgA3bIA7jgA7yYA/6cJcC8Q5XwAEocAMQwAizgHXOsAwLV50L9wyE+QzN/pAFX8ABAwADINAASrACC3ABC+AAGtAM37AN1jAN0OAMa9YLQiAEPGAKtpAJLXAAAXAAGXAEdIAJn8AIboAJshAMz6ALjZAFHIABHGADUjAHmKALz4AN9AIO58AO9oAP+oCc/1APcTABCRACGsAEu+CNu1AMuyALrrAKriALg8gLwRAMyWAMeSAFGrAABwAAD3ABC0ACFyABGKABn/AN2CANzeAMy7BNxYAJfLAKumALr6AKgwAIlRAKnsAHV4ACHOAGsmAMweAKRTABE6ABMZAEbNAIstAMcyMO3yAO5XAO7WAP+KAPHFoPwKABE6ABKoABriAMxhAMydBzgsoL/rowiIMoC67wCTaAAyUgARZwARlwAB1AAhmAAyzACNhgDdLgDGu2TcZwabbgCq9wCp6QCXbABCNwAkvAB6vAC7JACV2AAhigATGQBGdQCK5gDNKADeCgDasCDuWADu1gD/rAoQIhD0qwABKgAxDQCM3wDOKgDuIgDc2QDMHQcMnQP4eZDFdwAzHAAA8gAQtwABcABB2AARxAB9YwN9YAWPrTDMYQDLowhbawCk+AAjYgBoVgCqvgCp3ABjeAARPAATGwBGfACKvAC89gDd8ADjATDuNwDu0gD/ZgrAKBD6HQAhIABA5wA64gC6bQCKvAC81gDMlgDAu3cITZDJ0g/gUokAAEcJUHoAM0AAAP0AWyYA3PIHRcpk3BYAzJIA3WIA3NoAurIAuuYAqN4AZCgAEToAEhwANX4AaMsArBwDPb8A3iAA7eEA7hMA7ngA7uQA/4YLH/YA/tUAYkQAITkABswAdJMAEacANXYAZ0wAiroAvGkLLNkAzG0AVSEAMJcJUBkAEZAAAYsASYIA3NAA3TAA0uBQ3TYA3S8DbNYAyy4AqmgAluUAQcAAETgAEoIARcQAeNsAq8kAzSgA3bkDzgEA7jELvn0A7yYA/6YLb6YA/R8AVK4ACmlgAQgAEhcAJ9eQIcEAIhwAI8kARZIAZsMAdswAJSEAMJQAAq/uAAAAAABJAEHCAI2CAN1jANKaU/y5AMxsALtiALq8AIZyAEGPAAE4ABJ2ADT2AGfIAJshAMyfAM1oAN9JI84GAq43AO7OAO9IAPZqsP+GAP8pALThACLCAEV8AFZoBv+BYGXHAFUrAERSAEPHADMcACfXkDS3ACCRACGKABCRACSZAAXWANzyANzqA/xSAMveAKlEAHYSAEGgABDwABGnACN7AEYpAHlLAKthAMzSAN2LANK5M85FAOpnIO6NAO8mAP+mC2+pAa8oAOuUAKV2UKVWUKV9UJUskIgsAHeUAHbsAGZiAGXZAFS8ACRSAEGoABHFAESeAADHADycAL/qTwCHMQBlJwAxwwAQzwABCAARpwAjaQBFlwBnzwCKQwC8KQDM4wDSiyMr/aQOWALuzQDvJAD/agDxzKE/qAD6lBD+0QDbswhbYQDLxgDDEqqJcmC66wCqbwCZ2ACY3ACILABjcQAjwgBDzAAQ6AAAhgATgwBDzAAiYQzSwQAzcgBEkgBVxgBm7AB4yACatgC8BwDMzQW9mQRF47DlOMLujADu3gDvJAD/agD8aKyvqAD6khD9nQC7pgC7zwDM1wmIS5cMZgDMlgDDHKC7ogC65gCpTgBkKgARiAASMwBGAQBxZtwWzgBnSQB3wgCIzQCJjwCabgCroQDMnQDNFA/g3Z4A3hMA7hMA6mErumgi7sECreQQ/2gA8Wi8r/oA/4kBresAwxGgxzU5Nz8zbYYA2HSZgpGww9pwuDuAve6I2vYKiGemlYHQzGkAz9Iw3WgA0wEw7jMMXqrM7sECru4B2pgQ/6gJz0/Nb6gA/oYA3NsHDYsA0sk9eGYzhzMzfWIA3NkLILp6TFsAzNIHTOsAwr2wzPIA1vgw3fkDJTPNmmwg7mgS7m4R3ykBpMgQ/6gJxwjcr48A/y8A3WwDPWkDLkMGIjRg7JkzyCQw7i8A3YIA3PsLLSMA3OpQ1JxCngsDLJIzjqIDjqQNmmgg7t4A7KbR7eQQ+pgQ9vjZyh/o3K/2AP6wAOc2MNsV0O5KAOgsParI0e60AO4vAN4/gM6A0N0yANLqUNZa3O4K0O6zBi6zBi66DOk90Omq3Z9JAa+MATZhvg+iAP5wAz4zAq7IAOU/ze6mwq6OAN2GANh3mYzyAN2PAN68AO5oHgoxJMHs4O6MIO42Aq6NAO9HDiJ54a+MATAd7i+mAP7oAOpsIO7uDhNm4e7IAu7BAOc/M2Pm4N0mANc7MO7HDjRh4q6HAO6MIO7SAPqfHk+KAPLT7l/8AT9uAO7cAO7kAPmq3c7nDk5nEO34ANP44NbzM31lAO7ODhXt7mXm4e54Au7GAe7kAP/6APTMETVE7l/vqAD/ag2fRgD4J+4vut2V4eKuLwDX3d1z+uDewgD8HkDoW+3+7QDuxgHu4gD/RgD/igD3v+6dOIDycu6KRe6vaA4pPuDupADuKQ1ywDDu0w6d6B4rQuD+7QDu7gHfRgD/igD6D+6/+gD0yhD51d7J1t6oJOD/KQR+oQ24KTMoJTDu2g2ZpND6WO4vZAD5pND/aAD/+gD8Ae7gOhD0xxl8aOD6TuHR7O4ezQDu4gD8he6iduD/qAD6WOyuKe7/qAD/pwl3Dd2fZAD9Tu5sotD4J+7p0t6PjwD/pQ7Kic7/nOE3uuD/aA4tSu2fSAD6HNoaEN8R7/6edu6vigDx9fG/Imf5dwbez6cPIs3/LT+NYuH/Mn/9Yyv+cBAQA7]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/instantsearch.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gY3RsbW1fc2VhcmNoKHdoYXQsaW53aGF0KXsKCXZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlud2hhdCk7CglpZighZGVzdGluYXRpb24pIHJldHVybjsKCXZhciBldmVuID0gZmFsc2U7Cgl2YXIgdGhlcm93cyA9IGRlc3RpbmF0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ciIpOwoJZm9yKGk9MDtpPHRoZXJvd3MubGVuZ3RoO2krKyl7CgkJdmFyIHRoZWNsYXNzID0gKGV2ZW4/InJvdzIiOiJyb3cxIik7CgkJdmFyIG5ld3N0eWxlID0gIm5vbmUiOwoJCXZhciB0aGVjb2x1bW5zID0gdGhlcm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKCQlmb3Ioaj0wO2o8dGhlY29sdW1ucy5sZW5ndGg7aisrKXsKCQkJaWYodGhlY29sdW1uc1tqXS5jbGFzc05hbWUgIT0gImN0bG1tX25vc2VhcmNoIil7CgkJCQl2YXIgdG1wYSA9IHRoZWNvbHVtbnNbal0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTsKCQkJCWlmKHRtcGEgJiYgdG1wYS5pbm5lckhUTUwudG9Mb3dlckNhc2UoKS5pbmRleE9mKHdoYXQudG9Mb3dlckNhc2UoKSkgPj0gMCkJbmV3c3R5bGUgPSAidGFibGUtcm93IjsKCQkJCWlmKCF0bXBhICYmIHRoZWNvbHVtbnNbal0uaW5uZXJIVE1MLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih3aGF0LnRvTG93ZXJDYXNlKCkpID49IDApCQluZXdzdHlsZSA9ICJ0YWJsZS1yb3ciOwoJCQl9CgkJfQoJCXRoZXJvd3NbaV0uc3R5bGUuZGlzcGxheSA9IG5ld3N0eWxlOwoJCWlmKG5ld3N0eWxlICE9ICJub25lIil7CgkJCXRoZXJvd3NbaV0uY2xhc3NOYW1lID0gdGhlY2xhc3M7CgkJCXRoZXJvd3NbaV0ub25tb3VzZW92ZXIgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSArPSAiaG92ZXIiOyB9OwoJCQl0aGVyb3dzW2ldLm9ubW91c2VvdXQgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lLnN1YnN0cigwLDQpOyB9OwoJCQlldmVuID0gIWV2ZW47CgkJfQoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/instantsort.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gY3RsbW1fc29ydFJvd3ModGFibGVpZCxjb2xpbmRleCxkZXNjLG51bWVyaWMpewoJLy8gdGFibGVpZCBpcyB0aGUgaWQgb2YgdGhlIHRhYmxlIHRvIHNvcnQKCS8vIGNvbGluZGV4IGlzIGFnYWluc3Qgd2hpY2ggY29sdW1uIHRvIHNvcnQgKDAtPiBmaXJzdCwgMS0+IHNlY29uZC4uLikKCS8vIGRlc2MgbWFrZXMgdGhlIHNvcnQgZGVzY2VuZGluZwoJLy8gbnVtZXJpYyBtYWtlcyB0aGUgc29ydCBudW1lcmljCglpZighZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVpZCkpCXJldHVybiBmYWxzZTsKCXZhciB0aGVyb3dzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVpZCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRyIik7CglpZighdGhlcm93c1swXSB8fCAhdGhlcm93c1swXS5jZWxsc1tjb2xpbmRleF0pCXJldHVybiBmYWxzZTsKCQoJdmFyIHNvcnRlZCA9IG5ldyBBcnJheSgpOwoJZm9yKGk9MDsgaTx0aGVyb3dzLmxlbmd0aDsgaSsrKXsKCQl2YXIgdGhlYXMgPSB0aGVyb3dzW2ldLmNlbGxzW2NvbGluZGV4XS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpOwoJCWlmKHRoZWFzWzBdKXsKCQkJdmFyIHNvcnRkYXRhID0gdGhlYXNbMF0uaW5uZXJIVE1MOwoJCX1lbHNlewoJCQl2YXIgc29ydGRhdGEgPSB0aGVyb3dzW2ldLmNlbGxzW2NvbGluZGV4XS5pbm5lckhUTUw7CgkJfQoJCXNvcnRlZC5wdXNoKFtzb3J0ZGF0YSwgdGhlcm93c1tpXV0pOwoJCXRoZXJvd3NbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGVyb3dzW2ldKTsKCQlpLS07Cgl9CglpZihudW1lcmljKXsKCQlpZihkZXNjKXsKCQkJc29ydGVkLnNvcnQoZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGJbMF0tYVswXTsgfSk7CgkJfWVsc2V7CgkJCXNvcnRlZC5zb3J0KGZ1bmN0aW9uKGEsYil7IHJldHVybiBhWzBdLWJbMF07IH0pOwoJCX0KCX1lbHNlewoJCWlmKGRlc2MpewoJCQlzb3J0ZWQuc29ydChmdW5jdGlvbihhLGIpeyByZXR1cm4gYVswXS50b0xvd2VyQ2FzZSgpIDwgYlswXS50b0xvd2VyQ2FzZSgpOyB9KTsKCQl9ZWxzZXsKCQkJc29ydGVkLnNvcnQoZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGFbMF0udG9Mb3dlckNhc2UoKSA+IGJbMF0udG9Mb3dlckNhc2UoKTsgfSk7CgkJfQoJfQoKCXZhciB0YWJsZWJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJsZWlkKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXTsKCXZhciBldmVuID0gdHJ1ZTsKCWZvcihpPTA7IGk8c29ydGVkLmxlbmd0aDsgaSsrKXsKCQlldmVuID0gIWV2ZW47CgkJdmFyIHRoZWNsYXNzID0gKGV2ZW4/InJvdzIiOiJyb3cxIik7CgkJc29ydGVkW2ldWzFdLmNsYXNzTmFtZSA9IHRoZWNsYXNzOwoJCXNvcnRlZFtpXVsxXS5vbm1vdXNlb3ZlciA9IGZ1bmN0aW9uKCl7IHRoaXMuY2xhc3NOYW1lICs9ICJob3ZlciI7IH07CgkJc29ydGVkW2ldWzFdLm9ubW91c2VvdXQgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lLnN1YnN0cigwLDQpOyB9OwoJCXRhYmxlYm9keS5hcHBlbmRDaGlsZChzb3J0ZWRbaV1bMV0pOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCgkkbGFuZ1siZnJpZW5kbHluYW1lIl0gPSAiQXV0b21vYmlsZSBMaXN0aW5nIjsNCgkkbGFuZ1sibW9kZGVzY3JpcHRpb24iXSA9ICJBdXRvbW9iaWxlIExpc3RpbmciOw0KCSRsYW5nWyJhZG1pbmRlc2NyaXB0aW9uIl0gPSAiQXV0b21vYmlsZSBMaXN0aW5nIGZvciBjYXJzLCB0cnVja3MsIGJpa2VzLHBhcnRzIjsNCg0KCSRsYW5nWyJwYWdlbWVudWRlbGltaXRlciJdID0gIiZuYnNwOyYjMTI0OyZuYnNwOyI7DQoJJGxhbmdbInBhZ2VtZW51b3ZlcmZsb3ciXSA9ICImbmJzcDsuLi4mbmJzcDsiOw0KCQ0KLy8gc3RyaW5ncyBmb3IgdmVoaWNsZXR5cGUNCgkkbGFuZ1sidmVoaWNsZXR5cGUiXSA9ICJWZWhpY2xlIFR5cGUiOw0KCSRsYW5nWyJ2ZWhpY2xldHlwZV9wbHVyYWwiXSA9ICJWZWhpY2xlIFR5cGUiOw0KCSRsYW5nWyJhZGRfdmVoaWNsZXR5cGUiXSA9ICJBZGQgVmVoaWNsZSBUeXBlIjsNCgkkbGFuZ1siZWRpdF92ZWhpY2xldHlwZSJdID0gIkVkaXQgVmVoaWNsZSBUeXBlIjsNCgkkbGFuZ1siZmlsdGVyYnlfdmVoaWNsZXR5cGUiXSA9ICJGaWx0ZXIgYnkgVmVoaWNsZSBUeXBlIjsNCgkkbGFuZ1sidmVoaWNsZXR5cGVfY2xhc3NpZmljYXRpb24iXSA9ICJDbGFzc2lmaWNhdGlvbiI7DQoJJGxhbmdbInByb21wdF9kZWxldGV2ZWhpY2xldHlwZSJdID0gIllvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoaXMgVmVoaWNsZSBUeXBlICglcyk/IEFsbCBjaGlsZHJlbiB3aWxsIGJlIGxvc3QuIERvIHlvdSB3aXNoIHRvIGNvbnRpbnVlPyI7DQoJDQovLyBzdHJpbmdzIGZvciB2ZWhpY2xlDQoJJGxhbmdbInZlaGljbGUiXSA9ICJ2ZWhpY2xlIjsNCgkkbGFuZ1sidmVoaWNsZV9wbHVyYWwiXSA9ICJWZWhpY2xlcyI7DQoJJGxhbmdbImFkZF92ZWhpY2xlIl0gPSAiQWRkIHZlaGljbGUiOw0KCSRsYW5nWyJlZGl0X3ZlaGljbGUiXSA9ICJFZGl0IHZlaGljbGUiOw0KCSRsYW5nWyJmaWx0ZXJieV92ZWhpY2xlIl0gPSAiRmlsdGVyIGJ5IHZlaGljbGUiOw0KCSRsYW5nWyJ2ZWhpY2xlX3llYXIiXSA9ICJZZWFyIjsNCgkkbGFuZ1sidmVoaWNsZV9tYWtlIl0gPSAiTWFrZSI7DQoJJGxhbmdbInZlaGljbGVfbW9kZWwiXSA9ICJNb2RlbCI7DQoJJGxhbmdbInZlaGljbGVfbWlsYWdlIl0gPSAiTWlsYWdlIjsNCgkkbGFuZ1sidmVoaWNsZV92ZWhpY2xlY29uZGl0aW9uIl0gPSAiQ29uZGl0aW9uIjsNCgkkbGFuZ1sidmVoaWNsZV9jb2xvciJdID0gImNvbG9yIjsNCgkkbGFuZ1sidmVoaWNsZV9wcmljZSJdID0gIlByaWNlIjsNCgkkbGFuZ1sidmVoaWNsZV9lbmdpbmUiXSA9ICJFbmdpbmUgVHlwZSI7DQoJJGxhbmdbInZlaGljbGVfZmVhdHVyZXMiXSA9ICJGZWF0dXJlcyI7DQoJJGxhbmdbInZlaGljbGVfcGljdHVyZXMiXSA9ICJBZGRpdGlvbmFsIFBpY3R1cmVzIjsNCgkkbGFuZ1sidmVoaWNsZV9tYWlucGljdHVyZSJdID0gIk1haW4gUGljdHVyZSI7DQoJJGxhbmdbInZlaGljbGVfc2VsZWN0X21haW5waWN0dXJlIl0gPSAiU2VsZWN0IE1haW4gUGljdHVyZSI7DQoJJGxhbmdbInZlaGljbGVfZGVzY3JpcHRpb24iXSA9ICJEZXNjcmlwdGlvbiI7DQoJJGxhbmdbInByb21wdF9kZWxldGV2ZWhpY2xlIl0gPSAiWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhpcyB2ZWhpY2xlICglcyk/IERvIHlvdSB3aXNoIHRvIGNvbnRpbnVlPyI7DQoJJGxhbmdbInRlbXBsYXRlaGVscCJdID0gJzxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBTbWFydHkgdmFyaWFibGVzIGZvciBsaXN0IHRlbXBsYXRlIG9mOiB2ZWhpY2xldHlwZTwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj48dWw+DQoJPGxpPiRsZXZlbHRpdGxlPC9saT4NCgk8bGk+JHBhcmVudG9iaiAoaWYgcGFyZW50IGlzIHNwZWNpZmllZCk8L2xpPg0KCTxsaT4kaXRlbWxpc3QgKGFycmF5IG9mIGl0ZW1zKTwvbGk+DQoJPGxpPiRpdGVtLSZndDtpc19zZWxlY3RlZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtuYmNoaWxkcmVuIChpZiBsb2FkZWQpPC9saT4NCgk8bGk+JGl0ZW0tJmd0O25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7YWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGV0YWlsbGluazwvbGk+DQoJPGxpPiRpdGVtLSZndDtkZXRhaWx1cmw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7Y2xhc3NpZmljYXRpb248L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNkZWZhdWx0PC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9jcmVhdGVkPC9saT4NCgk8L3VsPjxici8+PGJyLz48L2Rpdj48L2Rpdj48ZGl2PjxoMyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fZGlzcGxheXRvZ2dsZSh0aGlzKTsiPiZndDsgU21hcnR5IHZhcmlhYmxlcyBmb3IgbGlzdCB0ZW1wbGF0ZSBvZjogdmVoaWNsZTwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj48dWw+DQoJPGxpPiRsZXZlbHRpdGxlPC9saT4NCgk8bGk+JHBhcmVudG9iaiAoaWYgcGFyZW50IGlzIHNwZWNpZmllZCk8L2xpPg0KCTxsaT4kaXRlbWxpc3QgKGFycmF5IG9mIGl0ZW1zKTwvbGk+DQoJPGxpPiRpdGVtLSZndDtpc19zZWxlY3RlZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtuYW1lPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2FsaWFzPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RldGFpbGxpbms8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGV0YWlsdXJsPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3llYXI8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bWFrZTwvbGk+DQoJPGxpPiRpdGVtLSZndDttYWtlX25hbWV2YWx1ZTwvbGk+DQoJPGxpPiRpdGVtLSZndDttb2RlbDwvbGk+DQoJPGxpPiRpdGVtLSZndDttaWxhZ2U8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7dmVoaWNsZWNvbmRpdGlvbjwvbGk+DQoJPGxpPiRpdGVtLSZndDtjb2xvcjwvbGk+DQoJPGxpPiRpdGVtLSZndDtwcmljZTwvbGk+DQoJPGxpPiRpdGVtLSZndDtlbmdpbmU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZmVhdHVyZXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZmVhdHVyZXNfbmFtZXZhbHVlPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BpY3R1cmVzIChhcnJheSBvZiBmaWxlIG9iamVjdHMpPC9saT4NCgk8bGk+JGl0ZW0tJmd0O21haW5waWN0dXJlIChmaWxlIG9iamVjdCk8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGVzY3JpcHRpb248L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50X2lkPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9hbGlhczwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfbmFtZTwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRsaW5rPC9saT4NCgk8bGk+JHRpZW0tJmd0O3BhcmVudHVybDwvbGk+DQoJPGxpPiRpdGVtLSZndDtpc2RlZmF1bHQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9tb2RpZmllZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtkYXRlX2NyZWF0ZWQ8L2xpPg0KCTwvdWw+PGJyLz48YnIvPjwvZGl2PjwvZGl2PjxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBTbWFydHkgdmFyaWFibGVzIGZvciB0aGUgZGV0YWlsIHRlbXBsYXRlPC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPjx1bD4NCgk8bGk+JGxldmVsdGl0bGU8L2xpPg0KCTxsaT4kcHJldmlvdXNfaXRlbSAoaWYgbG9hZGVkKTwvbGk+DQoJPGxpPiRuZXh0X2l0ZW0gKGlmIGxvYWRlZCk8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bmFtZTwvbGk+DQoJPGxpPiRpdGVtLSZndDthbGlhczwvbGk+DQoJPGxpPiRpdGVtLSZndDt5ZWFyPC9saT4NCgk8bGk+JGl0ZW0tJmd0O21ha2U8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bWFrZV9uYW1ldmFsdWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bW9kZWw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bWlsYWdlPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3ZlaGljbGVjb25kaXRpb248L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7Y29sb3I8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cHJpY2U8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZW5naW5lPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2ZlYXR1cmVzPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2ZlYXR1cmVzX25hbWV2YWx1ZTwvbGk+DQoJPGxpPiRpdGVtLSZndDtwaWN0dXJlcyAoYXJyYXkgb2YgZmlsZSBvYmplY3RzKTwvbGk+DQoJPGxpPiRpdGVtLSZndDttYWlucGljdHVyZSAoZmlsZSBvYmplY3QpPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2Rlc2NyaXB0aW9uPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9pZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfYWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50X25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50bGluazwvbGk+DQoJPGxpPiR0aWVtLSZndDtwYXJlbnR1cmw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNkZWZhdWx0PC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9jcmVhdGVkPC9saT4NCgk8bGk+JGxhYmVscy0+Li4uPC9saT4NCgk8L3VsPjxici8+PHA+SW4gdGhlIGZpbmFsIGxldmVsIGRldGFpbCB0ZW1wbGF0ZSwgdXNlIHRoZSBvYmplY3QgJGxhYmVscyB0byBwcmludCBsYW5ndWFnZS1zZW5zaWJsZSBmaWVsZCBsYWJlbHMgKCRsYWJlbHMtPmZpZWxkbmFtZSkuPC9wPjxwPllvdSBtYXkgcmVhY2ggdGhlIHBhcmVudCBvYmplY3RzIHVzaW5nICRpdGVtLT5wYXJlbnRfb2JqZWN0LT5wYXJlbnRfb2JqZWN0LT4uLi4gYW5kIHNvIG9uLjwvcD48YnIvPjwvZGl2PjwvZGl2Pg0KPGRpdj48aDMgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX2Rpc3BsYXl0b2dnbGUodGhpcyk7Ij4mZ3Q7IEZpbGUgT2JqZWN0PC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPg0KPHVsPg0KPGxpPiRmaWxlLSZndDtmaWxlcGF0aCAocmVsYXRpdmUpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7ZXh0PC9saT4NCjxsaT4kZmlsZS0mZ3Q7dXJsIChhYnNvbHV0ZSB1cmwpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7c2l6ZSAoc2l6ZSBpbiBieXRlcyk8L2xpPg0KPGxpPiRmaWxlLSZndDtzaXplX3dmb3JtYXQgKGZvcm1hdGVkIHNpemUpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7aW1hZ2VzaXplIChmb3IgaW1hZ2VzIG9ubHkpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7d2lkdGggKGZvciBpbWFnZXMgb25seSk8L2xpPg0KPGxpPiRmaWxlLSZndDtoZWlnaHQgKGZvciBpbWFnZXMgb25seSk8L2xpPg0KPGxpPiRmaWxlLSZndDtpbWFnZSAoaW1hZ2UgdGFnOyBmb3IgaW1hZ2VzIG9ubHkpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7dGh1bWJuYWlsICh0aHVtYm5haWwgdXJsLCBpZiBhcHBsaWNhYmxlKTwvbGk+DQo8bGk+JGZpbGUtJmd0O2ZpbGVtdGltZSAobGFzdCBtb2RpZmllZCwgdW5peCB0aW1lKTwvbGk+DQo8bGk+JGZpbGUtJmd0O21vZGlmaWVkIChsYXN0IG1vZGlmaWVkLCBmb3JtYXRlZCB0aW1lKTwvbGk+DQo8L3VsPjxici8+PGJyLz48L2Rpdj48L2Rpdj4NCjxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBCcmVhZGNydW1iczwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj4NCgkJCQk8cD5XaGVuIHlvdSBhcmUgaW4gYSBtb2R1bGUgdGVtcGxhdGUsIHlvdSBtYXkgY2FsbCB0aGUgYnJlYWRjcnVtYnMgdXNpbmcgdGhlIHthdXRvc19icmVhZGNydW1ic30gdGFnLiBZb3UgbWF5IHVzZSB0aGUgc2FtZSBwYXJhbWV0ZXJzIGFzIHRoZSBjbXMgY29yZSBicmVhZGNydW1icyB0YWcgKGluaXRpYWwsIGRlbGltaXRlciwgY2xhc3NpZCwgY3VycmVudGNsYXNzaWQpLCBhcyB3ZWxsIGFzIHRoZSAic3RhcnRsZXZlbCIgcGFyYW1ldGVyLjxici8+DQoJCQkJT3V0c2lkZSBtb2R1bGUgdGVtcGxhdGVzLCBhbnl3aGVyZSBvbiB0aGUgcGFnZSwgeW91IG1heSBjYWxsIHRoZSBicmVhZGNydW1icyBhY3Rpb24ge2Ntc19tb2R1bGUgbW9kdWxlPSJhdXRvcyIgYWN0aW9uPSJicmVhZGNydW1icyJ9LCBvbmNlIGFnYWluIHVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnMuPC9wPjwvZGl2PjwvZGl2Pic7DQoNCi8vIEZvciBmaWxlIGZpZWxkcw0KJGxhbmdbIlJlbW92ZSJdID0gIlJlbW92ZSI7DQokbGFuZ1siZGVsZXRlIl0gPSAiRGVsZXRlIjsNCiRsYW5nWyJicm93c2VmaWxlc3RpdGxlIl0gPSAiVXBsb2FkIGEgbmV3IGZpbGUgb3Igc2VsZWN0IGEgZmlsZSBiZWxvdy4iOw0KJGxhbmdbInNob3dpbmdkaXIiXSA9ICJTaG93aW5nIGRpcmVjdG9yeSI7DQokbGFuZ1siYnJvd3NlZmlsZXNyZXNpemUiXSA9ICJUaGUgcGljdHVyZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcmVzaXplZCBmb3IgdGhlIG1vZHVsZS4iOw0KJGxhbmdbImJyb3dzZWZpbGVjdXJyZW50cGF0aCJdID0gIkN1cnJlbnRseSBzZWVpbmcgZmlsZXMgaW4gOiAiOw0KJGxhbmdbInBhcmVudGRpciJdID0gIlBhcmVudCBEaXJlY3RvcnkiOw0KJGxhbmdbImFkZGFmaWxlIl0gPSAiQWRkIGZpbGUocykiOw0KJGxhbmdbInN1Ym1pdHRpbmdfZmlsZSJdID0gIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBmaWxlIGlzIGJlaW5nIHVwbG9hZGVkLi4uIjsNCiRsYW5nWyJmaWxlbmFtZSJdID0gIkZpbGVuYW1lIjsNCiRsYW5nWyJpbWFnZXNpemUiXSA9ICJJbWFnZSBzaXplIjsNCiRsYW5nWyJmaWxlZXh0Il0gPSAiRXh0IjsNCiRsYW5nWyJmaWxlc2l6ZSJdID0gIkZpbGUgc2l6ZSI7DQokbGFuZ1sibGFzdG1vZCJdID0gIkxhc3QgbW9kaWZpZWQiOw0KJGxhbmdbImZpbGVvd25lciJdID0gIk93bmVyIjsNCiRsYW5nWyJmaWxlcGVybXMiXSA9ICJQZXJtaXNzaW9ucyI7DQokbGFuZ1sidmlld2FsbGltYWdlcyJdID0gIlZpZXcgYWxsIGltYWdlcyI7DQokbGFuZ1sicG9zdG1heHNpemUiXSA9ICJOb3RpY2U6IHRoZSBwb3N0IG1heCBzaXplIGlzICI7DQokbGFuZ1siYWRkZmlsZWlucHV0Il0gPSAiQWRkIGFub3RoZXIgZmlsZSI7DQokbGFuZ1siemlwZmlsZW5vdGljZSJdID0gIlRoZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhlIHJvb3Qgb2YgdGhlIGFyY2hpdmUuIjsNCiRsYW5nWyJ1cGxvYWR6aXBmaWxlIl0gPSAiVXBsb2FkIHppcCBhcmNoaXZlIjsNCg0KLy8gc3RyaW5ncyBmb3IgZ2VuZXJhbCBmaWVsZHMNCiRsYW5nWyJpZCJdID0gImlkIjsNCiRsYW5nWyJuYW1lIl0gPSAiTmFtZSI7DQokbGFuZ1siYWxpYXMiXSA9ICJBbGlhcyI7DQokbGFuZ1siaXNkZWZhdWx0Il0gPSAiSXMgZGVmYXVsdD8iOw0KJGxhbmdbImFjdGl2ZSJdID0gIkFjdGl2ZSI7DQokbGFuZ1sicGFyZW50Il0gPSAiUGFyZW50IjsNCiRsYW5nWyJzdWJtaXQiXSA9ICJTdWJtaXQiOw0KJGxhbmdbImNhbmNlbCJdID0gIkNhbmNlbCI7DQokbGFuZ1sibmJjaGlsZHJlbiJdID0gIk5iIG9mIGl0ZW1zIjsNCiRsYW5nWyJkYXRlX21vZGlmaWVkIl0gPSAiTGFzdCBtb2RpZmljYXRpb24iOw0KJGxhbmdbImRhdGVfY3JlYXRlZCJdID0gIkNyZWF0aW9uIjsNCgkNCi8vIEdFTkVSQUwNCiRsYW5nWyJwYWdlcyJdID0gIlBhZ2VzOiAiOw0KJGxhbmdbIm5leHRwYWdlIl0gPSAiTmV4dCBwYWdlIjsNCiRsYW5nWyJwcmV2aW91c3BhZ2UiXSA9ICJQcmV2aW91cyBwYWdlIjsNCiRsYW5nWyJhY3RpdmF0ZSJdID0gIkFjdGl2YXRlIjsNCiRsYW5nWyJ1bmFjdGl2YXRlIl0gPSAiVHVybiBvZmYiOw0KJGxhbmdbInNlYXJjaHRoaXN0YWJsZSJdID0gIlNlYXJjaCB0aGlzIHRhYmxlIGZvcjoiOw0KJGxhbmdbInJlc2V0b3JkZXIiXSA9ICJSZXNldCBvcmRlciI7DQokbGFuZ1siWWVzIl0gPSAiWWVzIjsNCiRsYW5nWyJObyJdID0gIk5vIjsNCiRsYW5nWyJBY3Rpb25zIl0gPSAiQWN0aW9ucyI7DQokbGFuZ1sicmVvcmRlciJdID0gIlJlb3JkZXIiOw0KJGxhbmdbImxpc3R0ZW1wbGF0ZSJdID0gIkxpc3QgdGVtcGxhdGUgZm9yIjsNCiRsYW5nWyJ0ZW1wbGF0ZXMiXSA9ICJUZW1wbGF0ZXMiOw0KJGxhbmdbInRlbXBsYXRlIl0gPSAiVGVtcGxhdGUiOw0KJGxhbmdbImRlZmF1bHR0ZW1wbGF0ZXMiXSA9ICJEZWZhdWx0IHRlbXBsYXRlcyI7DQokbGFuZ1sidGVtcGxhdGV2YXJzIl0gPSAiVGVtcGxhdGUgdmFyaWFibGVzIjsNCiRsYW5nWyJlZGl0dGVtcGxhdGUiXSA9ICJFZGl0IHRlbXBsYXRlIjsNCiRsYW5nWyJkZWZ0ZW1wbGF0ZWZvciJdID0gIkRlZmF1bHQgbGlzdCB0ZW1wbGF0ZSBmb3IgbGV2ZWwgIjsNCiRsYW5nWyJkZWZkZXRhaWx0ZW1wbGF0ZSJdID0gIkRlZmF1bHQgZGV0YWlsIHRlbXBsYXRlIjsNCiRsYW5nWyJkZWZzZWFyY2hyZXN1bHRzdGVtcGxhdGUiXSA9ICJEZWZhdWx0IHRlbXBsYXRlIGZvciBzZWFyY2ggcmVzdWx0cyI7DQokbGFuZ1siZGVmZW1wdHl0ZW1wbGF0ZSJdID0gIlRlbXBsYXRlIGZvciBlbXB0eSByZXN1bHQgc2V0cyI7DQokbGFuZ1sidXNlbGV2ZWxsaXN0dHBsIl0gPSAiVXNlIHRoZSBsaXN0IHRlbXBsYXRlIG9mIHRoZSBhcHByb3ByaWF0ZSBsZXZlbCI7DQokbGFuZ1siYWRkdGVtcGxhdGUiXSA9ICJBZGQgdGVtcGxhdGUiOw0KJGxhbmdbImZpbHRlcmJ5Il0gPSAiRmlsdGVyIGJ5IjsNCiRsYW5nWyJzaG93aW5nb25seSJdID0gIkZpbHRlcjogIjsNCiRsYW5nWyJzaG93YWxsIl0gPSAiU2hvdyBhbGwgKG5vIGZpbHRlcikiOw0KJGxhbmdbImZpZWxkb3B0aW9ucyJdID0gIkZpZWxkIG9wdGlvbnMiOw0KJGxhbmdbImFkZG9wdGlvbiJdID0gIkFkZCBhbiBvcHRpb24iOw0KJGxhbmdbIm1vZGlmeWFub3B0aW9uIl0gPSAiTW9kaWZ5IGFuIG9wdGlvbiI7DQokbGFuZ1sibWVzc2FnZV9kZWxldGVkIl0gPSAiRWxlbWVudCBkZWxldGVkIjsNCiRsYW5nWyJtZXNzYWdlX21vZGlmaWVkIl0gPSAiTW9kaWZpY2F0aW9uIHNhdmVkIjsNCiRsYW5nWyJ3YXJuaW5nX3RhYiJdID0gIk5vdGljZTogU2F2ZSBjaGFuZ2VzIGluIG90aGVyIHRhYnMgYmVmb3JlIHdvcmtpbmcgaW4gdGhpcyBvbmUuLi4iOw0KJGxhbmdbImVycm9yX21pc3NnaW52YWx1ZSJdID0gIk9uZSBvciBtb3JlIG5lY2Vzc2FyeSB2YWx1ZXMgaGF2ZSBub3QgYmVlbiBlbnRlcmVkLiI7DQokbGFuZ1siZXJyb3JfYWxyZWFkeWV4aXN0cyJdID0gIlRoZXJlIGlzIGFscmVhZHkgYW4gZWxlbWVudCBiZWFyaW5nIHRoYXQgbmFtZS4iOw0KJGxhbmdbImVycm9yX2RhdGUiXSA9ICJUaGUgZGF0ZSB5b3UgaGF2ZSBlbnRlcmVkIGlzIGludmFsaWQuIjsNCiRsYW5nWyJlcnJvcl9ub3BhcmVudCJdID0gIk5vIHBhcmVudCBpcyBkZWZpbmVkISI7DQokbGFuZ1siZXJyb3Jfbm90Zm91bmQiXSA9ICJUaGUgaXRlbSBjb3VsZCBub3QgYmUgZm91bmQuIjsNCiRsYW5nWyJlcnJvcl9ub2l0ZW1mb3VuZCJdID0gIk5vIGl0ZW0gZm91bmQuIjsNCiRsYW5nWyJlcnJvcl9kZW5pZWQiXSA9ICJQZXJtaXNzaW9uIGRlbmllZCI7DQokbGFuZ1siZXJyb3Jfd3JvbmdxdWVyeSJdID0gIkludmFsaWQgcXVlcnkuIjsNCiRsYW5nWyJlcnJvcl9mZWFkZGRlbmllZCJdID0gIllvdSBkbyBub3QgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byBjb250aW51ZS4iOw0KJGxhbmdbImVycm9yX3dyb25nZmlsZXR5cGUiXSA9ICJUaGlzIHR5cGUgb2YgZmlsZSBpcyBub3QgYWxsb3dlZCBoZXJlLiI7DQokbGFuZ1siZXJyb3JfY2FwdGNoYSJdID0gIlRoZSB0ZXh0IGdpdmVuIGRvZXMgbm90IG1hdGNoIHRoZSBjYXB0Y2hhIGltYWdlLiI7DQokbGFuZ1siZXJyb3JfZmlsZXRvb2JpZyJdID0gIlRoZSBmaWxlIGlzIHRvIGJpZyB0byBiZSB1cGxvYWRlZCBoZXJlLiI7DQokbGFuZ1siZ2l2ZW5lcnJvciJdID0gIkVycm9yOiAiOw0KJGxhbmdbImZpbmFsdGVtcGxhdGUiXSA9ICJEaXNwbGF5IHRlbXBsYXRlIGZvciBmaW5hbCBsZXZlbCAodmVoaWNsZSkiOw0KJGxhbmdbInByb21wdF9kZWxldGVvcHRpb24iXSA9ICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgb3B0aW9uPyI7DQokbGFuZ1sicHJvbXB0X2dlbmVyYWxkZWxldGUiXSA9ICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXM/IjsNCiRsYW5nWyJwcm9tcHRfY2FwdGNoYSJdID0gIkVudGVyIHRoZSB0ZXh0IGZyb20gdGhlIGltYWdlLiI7DQokbGFuZ1sicXVlcmllcyJdID0gIlF1ZXJpZXMiOw0KJGxhbmdbInF1ZXJ5Il0gPSAiUXVlcnkiOw0KJGxhbmdbInJlc3VsdHMiXSA9ICJSZXN1bHRzIjsNCiRsYW5nWyJjcmVhdGVxdWVyeSJdID0gIkNyZWF0ZSBhIG5ldyBxdWVyeSI7DQokbGFuZ1sicHJvbXB0X3F1ZXJ5Il0gPSAiQ3JlYXRlIGEgcXVlcnkgZm9yIHdoaWNoIGxldmVsPyI7DQokbGFuZ1sib3JkZXJieWZpZWxkIl0gPSAiT3JkZXIgYnkiOw0KJGxhbmdbImRhdGVfbW9kaWZpZWQiXSA9ICJEYXRlIG1vZGlmaWVkIjsNCiRsYW5nWyJmcm9udGVuZF9zdWJtaXQiXSA9ICJTdWJtaXQiOw0KDQoNCi8vIEJSRUFEQ1JVTUJTIDoNCiRsYW5nWyJ5b3VhcmVoZXJlIl0gPSAiWW91IGFyZSBoZXJlOiAiOw0KJGxhbmdbImJyZWFkY3J1bWJzX2RlbGltaXRlciJdID0gIiAmZ3Q7ICI7DQoNCi8vIFNFQVJDSCA6DQokbGFuZ1sic2VhcmNodGl0bGUiXSA9ICJTZWFyY2giOw0KJGxhbmdbInNlYXJjaGFnYWluIl0gPSAiRG8gYW5vdGhlciBzZWFyY2giOw0KJGxhbmdbInNlYXJjaGJ0biJdID0gIlNlYXJjaCEiOw0KJGxhbmdbImNvbnRhaW5zIl0gPSAiQ29udGFpbnMiOw0KJGxhbmdbImlzZXhhY3RseSJdID0gIklzIGV4YWN0bHkiOw0KJGxhbmdbImlzbm90Il0gPSAiSXMgbm90IjsNCiRsYW5nWyJpc2hpZ2hlcnRoYW4iXSA9ICJJcyBoaWdoZXIgdGhhbiI7DQokbGFuZ1siaXNsb3dlcnRoYW4iXSA9ICJJcyBsb3dlciB0aGFuIjsNCiRsYW5nWyJpc2FmdGVyIl0gPSAiSXMgYWZ0ZXIiOw0KJGxhbmdbImlzYmVmb3JlIl0gPSAiSXMgYmVmb3JlIjsNCiRsYW5nWyJpc2JldHdlZW4iXSA9ICJJcyBiZXR3ZWVuIjsNCiRsYW5nWyJ0aGlzYW5kdGhpcyJdID0gImFuZCI7DQokbGFuZ1sicXVlcnl1c2UiXSA9ICJOb3QgdXNlZCI7DQokbGFuZ1sicXVlcnluYW1lIl0gPSAiUXVlcnkgbmFtZSI7DQoNCi8vIElNUE9SVCAvIEVYUE9SVA0KJGxhbmdbImV4cG9ydF90aXRsZSJdID0gIkV4cG9ydCBpdGVtcyB0byB4bWwiOw0KJGxhbmdbImV4cG9ydHdoaWNobGV2ZWxzIl0gPSAiV2hpY2ggdGFibGVzIHNob3VsZCBiZSBleHBvcnRlZD8iOw0KJGxhbmdbImV4cG9ydF90ZW1wbGF0ZXMiXSA9ICJFeHBvcnQgdGVtcGxhdGVzIHRvbz8iOw0KJGxhbmdbImltcG9ydF90aXRsZSJdID0gIkltcG9ydCBmcm9tIHhtbCBmaWxlIjsNCiRsYW5nWyJpbXBvcnRfZmlsZXByb21wdCJdID0gIlNlbGVjdCB4bWwgZmlsZSBmcm9tIHdoaWNoIHRvIGltcG9ydC4iOw0KJGxhbmdbImltcG9ydF9kb25lIl0gPSAiSW1wb3J0IGRvbmUuICVzIHJlY29yZHMgd2hlcmUgaW1wb3J0ZWQuIjsNCiRsYW5nWyJpbXBvcnRfZW50cmllcyJdID0gIlRoZSBmaWxlIGNvbnRhaW5zICVzIHJlY29yZHMuIjsNCiRsYW5nWyJpbXBvcnRfZGVsZXRlIl0gPSAiRGVsZXRlIHRhYmxlIGNvbnRlbnQgYmVmb3JlIGltcG9ydGluZz8iOw0KJGxhbmdbImltcG9ydHdoaWNobGV2ZWxzIl0gPSAiV2hpY2ggdGFibGVzIHNob3VsZCBiZSBpbXBvcnRlZD8iOw0KJGxhbmdbImltcG9ydF90ZW1wbGF0ZXMiXSA9ICJJbXBvcnQgdGVtcGxhdGVzIHRvbz8iOw0KJGxhbmdbImNvdWxkbm90aW1wb3J0Il0gPSAiVGhlcmUgd2FzIGFuIGVycm9yIGltcG9ydGluZyByZWNvcmRzIGZvcjogIjsNCiRsYW5nWyJlcnJvcl9pbnZhbGlkeG1sIl0gPSAiVGhlIGZpbGUgeW91IHByb3ZpZGVkIGlzIG5vdCBhIHZhbGlkIHhtbCBleHBvcnQgZm9yIHRoaXMgbW9kdWxlLiI7DQoNCi8vIE1PRFVMRSBJTlRFUkFDVElPTg0KJGxhbmdbInBvc3RpbnN0YWxsIl0gPSAiTW9kdWxlIHN1Y2Nlc3NmdWxseSBhZGRlZC48YnIvPiBEb24ndCBmb3JnZXQgdG8gZ2l2ZSB5b3VyIHVzZXJzIHRoZSBwZXJtaXNzaW9uIHRvIHVzZSB0aGlzIG1vZHVsZSEiOw0KJGxhbmdbInBvc3R1bmluc3RhbGwiXSA9ICJNb2R1bGUgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuIjsNCiRsYW5nWyJyZWFsbHlfdW5pbnN0YWxsIl0gPSAiQWxsIG9mIHRoaXMgbW9kdWxlJ3MgY29udGVudCB3aWxsIGJlIGxvc3QuIENvbnRpbnVlPyI7DQokbGFuZ1sidW5pbnN0YWxsZWQiXSA9ICJNb2R1bGUgVW5pbnN0YWxsZWQuIjsNCiRsYW5nWyJpbnN0YWxsZWQiXSA9ICJNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuIjsNCiRsYW5nWyJoZWxwIl0gPSAiPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQoJCQkJPHA+VGhpcyBtb2R1bGUgbWFuYWdlcyBhbmQgZGlzcGxheXMgYW4gQXV0b21vYmlsZSBjYXRhbG9ndWUuPC9wPg0KCQkJPGJyLz48aDM+SG93IERvIEkgVXNlIEl0PzwvaDM+DQoJCQkJPGJyLz48aDQ+UGVybWlzc2lvbnM8L2g0Pg0KCQkJCQk8cD5NYWtlIHN1cmUgeW91ciB1c2VycyBoYXZlIHRoZSBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucy4gSWYgeW91IGFyZSBub3QgdXNpbmcgdGhlIGFjY2VzcyByZXN0cmljdGlvbiBvcHRpb24gKHNlZSBzZXR0aW5ncyksIHRoZSBcImF1dG9zOiBOb3JtYWwgdXNlclwiIHBlcm1pc3Npb24gd2lsbCBiZSBlbm91Z2ggdG8gdXNlIHRoZSBtb2R1bGUuIEluIHRoZSBzZXR0aW5ncyB0YWIsIHlvdSBjYW4gY2hvb3NlIHdoaWNoIHRhYnMgd2lsbCBiZSBkaXNwbGF5ZWQgZm9yIHRoZSBub3JtYWwgdXNlci4gT25seSB0aGUgYWRtaW5pc3RyYXRvciBhbmQgdXNlcnMgd2l0aCB0aGUgXCJhdXRvczogQWR2YW5jZWRcIiBwZXJtaXNzaW9uIHdpbGwgaGF2ZSBhY2Nlc3MgdG8gc2V0dGluZ3MgdGFiLjxici8+DQoJCQkJCUlmIHlvdSB3aXNoIHRvIGRlZmluZSBsZXZlbC1zcGVjaWZpYyBwZXJtaXNzaW9ucywgYWN0aXZhdGUgdGhlIGFjY2VzcyByZXN0cmljdGlvbiBvcHRpb24gaW4gdGhlIHNldHRpbmdzIHRhYiBhbmQgZ2l2ZSB0aGUgXCJhdXRvczogTWFuYWdlIG5hbWVfb2ZfbGV2ZWxcIiBwZXJtaXNzaW9uIHRvIHRoZSBhcHByb3ByaWF0ZSB1c2Vycy48L3A+DQoJCQkJPGJyLz48aDQ+QmFzaWNzPC9oND4NCgkJCQkJPHA+VG8gY2FsbCB0aGUgbW9kdWxlLCBzaW1wbHkgdXNlIHRoZSBmb2xsb3dpbmcgdGFnOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF1dG9zXCJ9PC9wPg0KCQkJCQk8cD5JbiB0aGlzIGNhc2UgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgbGV2ZWwgZWxlbWVudHMgKHZlaGljbGUpIHdpbGwgYmUgZGlzcGxheWVkLiBUbyBzZWxlY3QgYSBsZXZlbCwgdXNlIHRoZSBcIndoYXRcIiBwYXJhbWV0ZXI6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXV0b3NcIiB3aGF0PVwidmVoaWNsZVwifTxici8+DQoJCQkJCTxpPlRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBcIndoYXRcIiBwYXJhbWV0ZXIgYXJlIDogdmVoaWNsZXR5cGUsIHZlaGljbGU8L2k+PC9wPg0KCQkJCQk8cD5Zb3UgbWF5IGFsc28gYXNrIGZvciBlbGVtZW50cyB3aG8gYmVsb25nIHRvIGEgc3BlY2lmaWMgcGFyZW50Ojxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF1dG9zXCIgcGFyZW50PVwiYWxpYXNfb2ZfcGFyZW50XCJ9PC9wPg0KCQkJCQk8cD5Zb3UgbWF5IGZpbmFsbHkgYXNrIGZvciBhIHNwZWNpZmljIGVsZW1lbnQ6PGJyPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJhdXRvc1wiIGFsaWFzPVwiYWxpYXNfb2ZfaXRlbVwifTwvcD4NCgkJCQk8YnIvPjxoND5TZXBhcmF0aW5nIGludG8gcGFnZXM8L2g0Pg0KCQkJCQk8cD5Zb3UgbWF5IGxpbWl0IHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gYmUgc2hvd24gb24gb25lIHBhZ2U6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXV0b3NcIiBuYnBlcnBhZ2U9XCI1XCJ9PGJyLz4NCgkJCQkJSW4gdGhlIHRlbXBsYXRlLCB5b3UgY2FuIGJ1aWxkIHRoZSBwYWdlIG1lbnUgdXNpbmcgdGhlIGZvbGxvd2luZyB0YWdzOjxici8+DQoJCQkJCXsiLickJy4icGFnZV9zaG93aW5nfSwgeyIuJyQnLiJwYWdlX3RvdGFsaXRlbXN9LCB7Ii4nJCcuInBhZ2VfcGFnZW51bWJlcnN9LCB7Ii4nJCcuInBhZ2VfbmV4dH0sIHsiLickJy4icGFnZV9wcmV2aW91c308L3A+DQoJCQkJPGJyLz48aDQ+VXNpbmcgcXVlcmllczwvaDQ+DQoJCQkJCTxwPlRvIGdldCBhIGxpc3Qgb2YgaXRlbSB0aGF0IG1lZXQgc3BlY2lmaWMgY3JpdGVyaWEsIHlvdSBjYW4gY3JlYXRlIGEgcXVlcnkgdXNpbmcgdGhlIHF1ZXJpZXMgdGFiIG9mIHRoZSBhZG1pbiBwYW5lbCwgYW5kIGNhbGwgdGhlbSB1c2luZyB0aGUgXCJxdWVyeVwiIHBhcmFtZXRlcjo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJhdXRvc1wiIHF1ZXJ5PVwiNVwifTwvcD4NCgkJCQkJPHA+PGk+SWYgdGhlIG9wdGlvbiB0byBhbGxvdyBtYW51ZWwgc3FsIHF1ZXJpZXMgaXMgZW5hYmxlZDwvaT4gKHNlZSBcIlNldHRpbmdzXCIgdGFiKSwgeW91IG1heSBhbHNvIHByb3ZpZGUgdGhlIHNxbCBxdWVyeSBkaXJlY3RseSB3aXRoIHRoZSBxdWVyeSBwYXJhbWV0ZXIuIEZvciBleGFtcGxlOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF1dG9zXCIgd2hhdD1cInZlaGljbGVcIiBxdWVyeT1cIkEuZGF0ZV9tb2RpZmllZCA+ICcyMDA5LTAzLTE1JyBBTkQgQS5hY3RpdmUgPSAxXCJ9PGJyLz4NCgkJCQkJVGhlIHF1ZXJ5IHBhcmFtZXRlciBjYW4gb25seSBob2xkIHRoZSBXSEVSRSBjbGF1c2Ugb2YgdGhlIHF1ZXJ5LCBhbmQgc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSBXSEVSRSBjb21tYW5kIGl0c2VsZi4gVG8gYXZvaWQgcHJvYmxlbXMsIHRoZSBwcmVmaXggXCJBLlwiIHNob3VsZCBiZSB1c2VkIGJlZm9yZSBmaWVsZCBuYW1lcyAod2hlcmUgYXBwbGljYWJsZSwgdGhlIFwiQi5cIiBwcmVmaXggY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBjcml0ZXJpYSBvbiB0aGUgcGFyZW50J3MgZmllbGRzKS48YnIvPg0KCQkJCQlBbHRob3VnaCB0aGUgYWJzdHJhY3Rpb24gbGF5ZXIgaXMgbm90IGVhc2lseSBwcm9uZSB0byBpbmplY3Rpb25zLCByZW1lbWJlciB0aGF0IGFjdGl2YXRpbmcgdGhpcyBvcHRpb24gbWVhbnMgZ2l2aW5nIGEgc3FsIG9wZW5pbmcgd2l0aGluIHRoZSB0ZW1wbGF0ZXMgYW5kIGJlIGNhcmVmdWwuPC9wPg0KCQkJCTxici8+PGg0PlRoZSBsaW5rIGFjdGlvbjwvaDQ+DQoJCQkJCTxwPllvdSBtYXkgdXNlIHRoZSBhY3Rpb24gPGI+XCJsaW5rXCI8L2I+IHRvIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIGRlZmF1bHQgYWN0aW9uLCB1c2luZyB0aGUgc2FtZSBwYXJhbWV0ZXJzOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF1dG9zXCIgYWN0aW9uPVwibGlua1wiIHdoYXQ9XCJ2ZWhpY2xlXCIgcmFuZG9tPVwiMVwifTxici8+DQoJCQkJCXdvdWxkIGNyZWF0ZSBhIGxpbmsgdG8gYSByYW5kb20gZWxlbWVudCBvZiB0aGlzIGxldmVsLjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgc2l0ZW1hcCBhY3Rpb248L2g0Pg0KCQkJCQk8cD5JZiB5b3VyIG1vZHVsZSBpcyBub3Qgc2hhcmluZyBjaGlsZHJlbiwgeW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj5cInNpdGVtYXBcIjwvYj4gdG8gY3JlYXRlIGEgbW9kdWxlIHNpdGVtYXA6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXV0b3NcIiBhY3Rpb249XCJzaXRlbWFwXCJ9PGJyLz4NCgkJCQkJWW91IGNhbiBzZWxlY3QgdGhlIGxldmVscyB1c2luZyB0aGUgXCJ3aGF0XCIgcGFyYW1ldGVyLCBhbmQgbWF5IHNlbGVjdCBtb3JlIHRoYW4gb25lIHVzaW5nIFwifFwiIDogd2hhdD1cImxldmVsMXxsZXZlbDJcIi48YnIvPg0KCQkJCQlPdGhlciBhdmFpbGFibGUgcGFyYW1ldGVycyBmb3IgdGhpcyBhY3Rpb24gYXJlIFwiZGV0YWlscGFnZVwiIGFuZCBcImlubGluZVwiLjxici8+DQoJCQkJCVRvIGNyZWF0ZSBhIGdvb2dsZSBzaXRlbWFwLCBzZWUgdGhlIDxhIGhyZWY9XCIuLi9tb2R1bGVzL2F1dG9zL2RvYy9mYXEuaHRtbCNxMTZcIiB0YXJnZXQ9XCJfYmxhbmtcIj5GQVE8L2E+LjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgc2VhcmNoIGFjdGlvbjwvaDQ+DQoJCQkJCTxwPllvdSBtYXkgdXNlIHRoZSBhY3Rpb24gPGI+XCJzZWFyY2hcIjwvYj4gdG8gZGlzcGxheSBhIHNlYXJjaCBmb3JtOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF1dG9zXCIgYWN0aW9uPVwic2VhcmNoXCJ9PGJyLz4NCgkJCQkJVXNlIHRoZSBcInNlYXJjaG1vZGVcIiBwYXJhbWV0ZXIgdG8gc3dpdGNoIGJldHdlZW4gYWR2YW5jZWQgKGRlZmF1bHQpIGFuZCBzaW1wbGUgbW9kZS4gWW91IG1heSBzcGVjaWZ5IHRoZSBsZXZlbCBpbiB3aGljaCB0byBzZWFyY2ggdXNpbmcgdGhlIFwid2hhdFwiIHBhcmFtZXRlci4gWW91IGNhbm5vdCB1c2UgdGhlIGFkdmFuY2VkIHNlYXJjaCBtb2RlIGluIGFsbCBsZXZlbHMgYXQgdGhlIHNhbWUgdGltZS48YnIvPg0KCQkJCQlUaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgY2FuIGJlIHVzZWQgd2l0aCB0aGUgc2VhcmNoIGFjdGlvbjogd2hhdCwgbGltaXQsIG5icGVycGFnZSwgb3JkZXJieSwgZGV0YWlscGFnZSwgbGlzdHRlbXBsYXRlLCBpbmxpbmUsIHNlYXJjaG1vZGUuPGJyLz4NCgkJCQkJU2VlIGF1dG9zL3RlbXBsYXRlcy9zZWFyY2gudHBsIHRvIG1vZGlmeSB0aGUgc2VhcmNoIGZvcm0uPC9wPjxici8+DQoJCQkJPHA+Rm9yIG1vcmUgaGVscCwgeW91IG1heSB0YWtlIGEgbG9vayBhdCB0aGUgPGEgaHJlZj1cIi4uL21vZHVsZXMvYXV0b3MvZG9jL2ZhcS5odG1sXCIgdGFyZ2V0PVwiX2JsYW5rXCI+RkFRPC9hPi48L3A+DQoJCQk8YnIvPjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KCQkJCTxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBDVExNb2R1bGVNYWtlciwgYW5kIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuPC9wPjxici8+PGJyLz4iOw0KDQovL0VWRU5UUw0KJGxhbmdbImV2ZW50ZGVzY19tb2RpZmllZCJdID0gIkNhbGxlZCBhZnRlciBhbiBlbGVtZW50IGhhcyBiZWVuIG1vZGlmaWVkLiBQYXJhbXM6IFwid2hhdFwiPT5sZXZlbCBvZiB0aGUgZWxlbWVudCwgXCJpdGVtaWRcIj0+aWQgb2YgdGhlIGVsZW1lbnQsIFwiYWxpYXNcIj0+YWxpYXMgb2YgdGhlIGVsZW1lbnQuIjsNCiRsYW5nWyJldmVudGRlc2NfZGVsZXRlZCJdID0gIkNhbGxlZCBhZnRlciBhbiBlbGVtZW50IGhhcyBiZWVuIGRlbGV0ZWQuIFBhcmFtczogXCJ3aGF0XCI9PmxldmVsIG9mIHRoZSBlbGVtZW50LiI7DQokbGFuZ1siZXZlbnRkZXNjX2FkZGVkIl0gPSAiQ2FsbGVkIGFmdGVyIGFuIGVsZW1lbnQgaGFzIGJlZW4gYWRkZWQuIFBhcmFtczogXCJ3aGF0XCI9PmxldmVsIG9mIHRoZSBlbGVtZW50LCBcIml0ZW1pZFwiPT5pZCBvZiB0aGUgZWxlbWVudCwgXCJhbGlhc1wiPT5hbGlhcyBvZiB0aGUgZWxlbWVudC4iOw0KDQovL1BSRUZFUkVOQ0VTDQokbGFuZ1sicHJlZmVyZW5jZXMiXSA9ICJTZXR0aW5ncyI7DQokbGFuZ1sicHJlZl90YWJkaXNwbGF5Il0gPSAiQWRtaW4gdGFicyBzaG93biB0byB0aGUgbm9ybWFsIHVzZXIiOw0KJGxhbmdbImhlbHBfdGFiZGlzcGxheSJdID0gIihOb3JtYWwgdXNlcnMgYXJlIHRob3NlIHdobyBoYXZlIGJlZW4gZ2l2ZW4gdGhlIFwiYXV0b3M6IG5vcm1hbCB1c2VyXCIgcGVybWlzc2lvbi4gVGhlIGxldmVsLXNwZWNpZmljIG1hbmFnZSBwZXJtaXNzaW9ucyBvdmVycmlkZSB0aGUgdmlzaWJsZSB0YWJzIHNlbGVjdGVkIGhlcmUuKSI7DQokbGFuZ1sicHJlZl9zZWFyY2htb2R1bGVfaW5kZXgiXSA9ICJJbmRleCB0aGUgZm9sbG93aW5nIGxldmVscyBmb3IgdGhlIHNlYXJjaCBtb2R1bGUiOw0KJGxhbmdbImhlbHBfc2VhcmNobW9kdWxlX2luZGV4Il0gPSAiKFRoaXMgaGFzIG5vIGVmZmVjdCBvbiB0aGlzIG1vZHVsZSBvd24gaW50ZXJuYWwgc2VhcmNoIGFjdGlvbi4gQWxzbyBub3RlIHRoYXQgYWZ0ZXIgY2hhbmdpbmcgdGhlc2Ugc2V0dGluZ3MgeW91IG1pZ2h0IGhhdmUgdG8gcmVpbmRleCB0byBnZXQgb2YgcHJldmlvdXNseSBpbmRleGVkIGRhdGEsIHdoaWNoIHlvdSBtYXkgZG8gaW4gRXh0ZW5zaW9uLSZndDtTZWFyY2guKSI7DQokbGFuZ1sicHJlZl9uZXdpdGVtc2ZpcnN0Il0gPSAiTmV3IGl0ZW1zIHNob3VsZCBhcHBlYXIgb24gdG9wIGZvciB0aGUgZm9sbG93aW5nIGxldmVscyI7DQokbGFuZ1siaGVscF9uZXdpdGVtc2ZpcnN0Il0gPSAiKE9idmlvdXNseSwgaWYgdGhlIGxldmVsIGlzIG5vdCBjaGVja2VkIGhlcmUsIG5ldyBpdGVtcyB3aWxsIGFwcGVhciBhdCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0KSI7DQokbGFuZ1sicHJlZl9yZXN0cmljdF9wZXJtaXNzaW9ucyJdID0gIlNob3VsZCB3ZSA8Yj5yZXN0cmljdDwvYj4gdGhlIG1hbmFnZW1lbnQgb2YgaXRlbXMgdG8gdGhlIHVzZXJzIHdobyBoYXZlIHNwZWNpZmljIG1hbmFnZW1lbnQgcGVybWlzc2lvbnMgZm9yIHRoZSBsZXZlbD8gKGlmIHlvdSBkbyBub3Qgd2lzaCB0byBzcGVjaWZ5IGRpZmZlcmVudCBwZXJtaXNzaW9ucyBmb3IgZGlmZmVyZW50IGxldmVscywgeW91IGNhbiB1bmNoZWNrIHRoaXMgYW5kIHNpbXBseSB1c2UgdGhlIFwiYXV0b3M6IG5vcm1hbCB1c2VyXCIgcGVybWlzc2lvbi4pIjsNCiRsYW5nWyJwcmVmX2Rpc3BsYXlfZmlsdGVyIl0gPSAiRGlzcGxheSA8Yj5maWx0ZXI8L2I+IG9uIHRoZSBtb2R1bGUgYWRtaW4gcGFuZWw/IjsNCiRsYW5nWyJwcmVmX2Rpc3BsYXlfaW5zdGFudHNlYXJjaCJdID0gIkRpc3BsYXkgPGI+aW5zdGFudCBzZWFyY2g8L2I+IG9uIHRoZSBtb2R1bGUgYWRtaW4gcGFuZWw/IjsNCiRsYW5nWyJwcmVmX2Rpc3BsYXlfaW5zdGFudHNvcnQiXSA9ICJEaXNwbGF5IDxiPmluc3RhbnQgc29ydDwvYj4gYnkgY29sdW1uIGxpbmtzPyI7DQokbGFuZ1sicHJlZl9lZGl0YWJsZV9hbGlhc2VzIl0gPSAiU2hvdWxkIHRoZSA8Yj5hbGlhczwvYj4gb2YgaXRlbXMgYmUgbWFudWFsbHkgZWRpdGFibGU/IjsNCiRsYW5nWyJwcmVmX2ZvcmNlX2xpc3QiXSA9ICJTaG91bGQgdGhlIDxiPmZvcmNlbGlzdDwvYj4gcGFyYW1ldGVyIGJlIGVuYWJsZWQgYnkgZGVmYXVsdD8gKGxpc3QgdmlldyB3aWxsIGJlIHNob3duIGV2ZW4gd2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBpdGVtKSI7DQokbGFuZ1sicHJlZl9kZWxldGVfZmlsZXMiXSA9ICJXaGVuIGFuIGl0ZW0gaXMgPGI+ZGVsZXRlZDwvYj4sIHNob3VsZCB0aGUgYXNzb2NpYXRlZCBmaWxlcyBiZSBhbHNvIGRlbGV0ZWQ/IChwcm92aWRlZCB0aGUgaXRlbSBoYXMgYW55IGZpbGUgZmllbGRzLi4uKSI7DQokbGFuZ1sicHJlZl9hbGxvd19zcWwiXSA9ICJBbGxvdyBtYW51YWwgU1FMIHF1ZXJpZXM/ICh3aXRoIHRoZSBcInF1ZXJ5XCIgcGFyYW1ldGVyKSI7DQokbGFuZ1sicHJlZl91c2VfaGllcmFyY2h5Il0gPSAiRGlzcGxheSBmdWxsIGhpZXJhcmNoeSBpbiBmaWx0ZXIgYW5kIHBhcmVudCBkcm9wZG93bj8gKGFkbWluIHBhbmVsKSI7DQokbGFuZ1sicHJlZl9vcmRlcmJ5bmFtZSJdID0gIk9yZGVyIHBhcmVudCBkcm9wZG93bnMgYnkgbmFtZT8iOw0KJGxhbmdbInByZWZfc2hvd3RodW1ibmFpbHMiXSA9ICJEaXNwbGF5IGFsbCB0aHVtYm5haWxzIGluc3RlYWQgb2YgYSB0YWJsZSB3aGVuIHNlbGVjdGVkIGltYWdlIGZpbGVzPyI7DQokbGFuZ1sicHJlZl9tYXhzaG93bnBhZ2VzIl0gPSAiTWF4IG51bWJlciBvZiBwYWdlcyBkaXNwbGF5ZWQgaW4gdGhlIHBhZ2UgbWVudTogIjsNCiRsYW5nWyJwcmVmX2F1dG9pbmNyZW1lbnRfYWxpYXMiXSA9ICJBdXRvLWluY3JlbWVudCBhbGlhc2VzIGluIGNhc2Ugb2YgaWRlbnRpY2FsIG5hbWVzPyI7DQokbGFuZ1sicHJlZl9kZWNvZGVlbnRpdGllcyJdID0gIkRlY29kZSBodG1sIGVudGl0aWVzIG9uIGZyb250ZW5kIGZvcm0gc3VibWlzc2lvbi4iOw0KJGxhbmdbInByZWZfZnJvbnRlbmQiXSA9ICJGcm9udGVuZCBlZGl0IjsNCiRsYW5nWyJoZWxwX2Zyb250ZW5kIl0gPSAiRm9yIHNlY3VyaXR5LCBmcm9udGVuZCBlZGl0aW9uIHNob3VsZCBiZSB1c2VkIHdpdGggdGhlIEZyb250IEVuZCBVc2VycyBtb2R1bGUuIFNlZSA8YSBocmVmPVwibW9kdWxlcy9hdXRvcy9kb2MvZmFxLmh0bWwjcTIwXCIgdGFyZ2V0PVwiX2JsYW5rXCI+RmFxPC9hPiBmb3IgaGVscCBvbiBwZXJtaXNzaW9uIGludGVncmF0aW9uLiI7DQokbGFuZ1sicHJlZl9mZV93eXNpd3lnIl0gPSAiRW5hYmxlIHd5c2l3eWcgaW4gdGhlIGZyb250ZW5kIChtdXN0IGJlIGVuYWJsZWQgaW4gdGhlIEdsb2JhbCBTZXR0aW5ncyB0b28pIjsNCiRsYW5nWyJwcmVmX2ZlX2RlY29kZWVudGl0aWVzIl0gPSAiRGVjb2RlIGh0bWwgZW50aXRpZXMgZnJvbSBmcm9udGVuZCBmb3Jtcy4gVGhpcyBpcyBub3QgcmVjb21tYW5kZWQuIjsNCiRsYW5nWyJwcmVmX2ZlX2FsbG93ZmlsZXMiXSA9ICJBbGxvdyBmaWxlIHVwbG9hZCBmcm9tIHRoZSBmcm9udGVuZC4iOw0KJGxhbmdbInByZWZfZmVfYWxsb3duYW1lY2hhbmdlIl0gPSAiQWxsb3cgZnJvbnRlbmQgdXNlcnMgdG8gY2hhbmdlIHRoZSBuYW1lIChhbmQgdGhyb3VnaCBpdCB0aGUgYWxpYXMpIG9mIHRoZSBpdGVtIHRoZXkgYXJlIGVkaXRpbmcuIjsNCiRsYW5nWyJwcmVmX2ZlX2FsbG93YWRkbmV3Il0gPSAiQWxsb3cgZnJvbnRlbmQgdXNlcnMgdG8gYWRkIG5ldyBlbGVtZW50cy4iOw0KJGxhbmdbInByZWZfZmVfdXNlY2FwdGNoYSJdID0gIlVzZSBjYXB0Y2hhPyAobW9kdWxlIENhcHRjaGEgcmVxdWlyZWQpIjsNCiRsYW5nWyJwcmVmX2ZlX2FmdGVyc3VibWl0Il0gPSAiT25jZSB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQsIHJlZGlyZWN0IHRvICI7DQokbGFuZ1sicHJlZl9mZV9tYXhmaWxlc2l6ZSJdID0gIk1heGltdW0gc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBmaWxlcyB1cGxvYWRlZCB0aHJvdWdoIHRoZSBmcm9udGVuZCAoY2Fubm90IGJlIG92ZXIgcGhwLmluaSBsaW1pdCkiOw0KJGxhbmdbInByZWZfYWxsb3dfY29tcGxleF9vcmRlciJdID0gIkFsbG93IGNvbXBsZXggXCJvcmRlcmJ5XCIgcGFyYW1ldGVycyAoYmV0YSkuIjsNCiRsYW5nWyJwcmVmX2FkbWlucGFnZXMiXSA9ICJOdW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UgaW4gdGhlIGFkbWluIHBhbmVsICgwID0gcGFzIGRlIHBhZ2luYXRpb24pLiI7DQokbGFuZ1sicHJlZl9sb2FkX25iY2hpbGRyZW4iXSA9ICJMb2FkIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gKGl0ZW0tJmd0O25iY2hpbGRyZW4pIGZvciBhbGwgaXRlbXM/IjsNCiRsYW5nWyJwcmVmX2xvYWRfbmV4dHByZXZpb3VzIl0gPSAiTG9hZCBuZXh0L3ByZXZpb3VzIGxpbmtzPyAoZGV0YWlsIHZpZXcgb25seSkiOw0KJGxhbmdbInByZWZfdXNlX3Nlc3Npb24iXSA9ICJVc2Ugc2Vzc2lvbiB0byBzdG9yZSBhZG1pbiBwYW5lbCBmaWx0ZXJzLiI7DQokbGFuZ1sicHJlZl9sZXZlbHBhZ2luYXRpb24iXSA9ICJEZWZhdWx0IG51bWJlciBvZiBlbGVtZW50IHBlciBwYWdlIGZvciB0aGUgZnJvbnRlbmQiOw0KJGxhbmdbImhlbHBfbGV2ZWxwYWdpbmF0aW9uIl0gPSAiKEVtcHR5IG9yIDAgZm9yIHdpbGwgZGlzYWJsZSBkZWZhdWx0IHBhZ2luYXRpb24uIFRoZSBuYnBlcnBhZ2UgcGFyYW1ldGVyIG92ZXJyaWRlcyB0aGVzZSBzZXR0aW5ncy4pIjsNCg0KLy9QQVJBTUVURVJTDQokbGFuZ1sicGhlbHBfYWN0aW9uIl0gPSAiUG9zc2libGUgYWN0aW9uczogXCJsaW5rXCIsIFwic2VhcmNoXCIsIFwiYnJlYWRjcnVtYnNcIiwgXCJkZWZhdWx0XCIsIFwic2l0ZW1hcFwiLiI7DQokbGFuZ1sicGhlbHBfd2hhdCJdID0gIkFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbGV2ZWwgeW91IHdpc2ggdG8gZGlzcGxheS4gUG9zc2libGUgdmFsdWVzIGFyZSA6IDxpPnZlaGljbGV0eXBlLCB2ZWhpY2xlPC9pPiI7DQokbGFuZ1sicGhlbHBfYWxpYXMiXSA9ICJBbGlhcyBvZiB0aGUgaXRlbSB5b3Ugd2lzaCB0byBkaXNwbGF5LiI7DQokbGFuZ1sicGhlbHBfcGFyZW50Il0gPSAiSWYgeW91IHdpc2ggdG8gbGltaXQgdGhlIGRpc3BsYXllZCBlbGVtZW50cyB0byB0aG9zZSB3aG8gYmVsb25nIHRvIGEgc3BlY2lmaWMgcGFyZW50LCBlbnRlciB0aGUgcGFyZW50IGFsaWFzIGhlcmUuIjsNCiRsYW5nWyJwaGVscF9saW1pdCJdID0gIkxpbWl0IHRoZSBudW1iZXIgb2YgaXRlbSByZXR1cm5lZCBieSB0aGUgcXVlcnkgKDAgPSBubyBsaW1pdCkiOw0KJGxhbmdbInBoZWxwX25icGVycGFnZSJdID0gIlNldCB0aGUgbnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2UuIjsNCiRsYW5nWyJwaGVscF9vcmRlcmJ5Il0gPSAiWW91IGNhbiBzZXQgdG8gXCJtb2RpZmllZFwiLCBcImNyZWF0ZWRcIiBvciB0aGUgbmFtZSBvZiBhIGZpZWxkIHRvIG9yZGVyIGl0ZW1zIGluIHRoaXMgd2F5LiBBbnkgb3RoZXIgdmFsdWUgd2lsbCBvcmRlciB3aXRoIHRoZSBpdGVtIG9yZGVyLiI7DQokbGFuZ1sicGhlbHBfZGV0YWlscGFnZSJdID0gIlNwZWNpZnkgdGhlIGFsaWFzIG9mIHRoZSBwYWdlIGluIHdoaWNoIGxpbmtzIHRvIGNoaWxkIGVsZW1lbnRzIHNob3VsZCBiZSBzZW50IChpZiBub25lIGlzIHNwZWNpZmllZCwgY3VycmVudCBwYWdlIGlzIHVzZWQpIjsNCiRsYW5nWyJwaGVscF9zaG93ZGVmYXVsdCJdID0gIlNldCB0byBcInRydWVcIiBpZiB5b3Ugd2lzaCB0byBkaXNwbGF5IHRoZSBkZWZhdWx0IGVsZW1lbnQuIjsNCiRsYW5nWyJwaGVscF9yYW5kb20iXSA9ICJTZXQgdG8gYSBudW1iZXIgdG8gc2hvdyBhIG51bWJlciBvZiByYW5kb20gZWxlbWVudHMgZnJvbSB5b3VyIHF1ZXJ5LiI7DQokbGFuZ1sicGhlbHBfZmluYWx0ZW1wbGF0ZSJdID0gIlNwZWNpZnkgdGhlIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSBmb3IgdGhlIGRldGFpbCB2aWV3IG9mIHRoZSBmaW5hbCBsZXZlbC4iOw0KJGxhbmdbInBoZWxwX2xpc3R0ZW1wbGF0ZSJdID0gIlNwZWNpZnkgdGhlIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSBmb3IgdGhlIGxpc3Qgdmlldy4iOw0KJGxhbmdbInBoZWxwX2ZvcmNlbGlzdCJdID0gIlNldCB0byAxIGlmIHlvdSB3aXNoIHRvIGRpc3BsYXkgYSBsaXN0IHZpZXcgZXZlbiB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIGVsZW1lbnQuIjsNCiRsYW5nWyJwaGVscF9pbnRlcm5hbCJdID0gIkZvciBpbnRlcm5hbCB1c2U7IHNwZWNpZnkgdGhlIHBhZ2UgKHdoZW4gdXNpbmcgbmJwZXJwYWdlKS4iOw0KJGxhbmdbInBoZWxwX3F1ZXJ5Il0gPSAiRm9yIG9wdGlvbmFsIHVzZSB3aXRoIHRoZSBcImRlZmF1bHRcIiBhY3Rpb24uIFNwZWNpZmllcyB0aGUgaWQgb2YgdGhlIHF1ZXJ5IHRvIHVzZS4iOw0KJGxhbmdbInBoZWxwX2lubGluZSJdID0gIk1ha2VzIHRoZSBsaW5rcyBpbmxpbmUuIjsNCiRsYW5nWyJwaGVscF9zZWFyY2htb2RlIl0gPSAiRm9yIHVzZSB3aXRoIHRoZSBcInNlYXJjaFwiIGFjdGlvbi4gU2V0IHRvIFwic2ltcGxlXCIgdG8gc2VhcmNoIGluIGFsbCB0ZXh0IGZpZWxkcywgYW5kIFwiYWR2YW5jZWRcIiB0byBzZWFyY2ggaW4gc3BlY2lmaWMgZmllbGRzLiI7DQokbGFuZ1sicGhlbHBfdG9hY3Rpb24iXSA9ICJGb3IgdXNlIHdpdGggdGhlIFwibGlua1wiIGFjdGlvbi4gU2V0cyB0aGUgYWN0aW9uIHRvIHdoaWNoIHRoZSBsaW5rIHNob3VsZCByZWRpcmVjdC4iOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24NCiRkYiA9ICYkdGhpcy0+Y21zLT5kYjsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCgkJDQovLyBteXNxbC1zcGVjaWZpYywgYnV0IGlnbm9yZWQgYnkgb3RoZXIgZGF0YWJhc2UNCiR0YWJvcHRhcnJheSA9IGFycmF5KCJteXNxbCIgPT4gIlRZUEU9TXlJU0FNIik7DQoJCQ0KDQovLyBDcmVhdGVzIHRoZSB2ZWhpY2xldHlwZSB0YWJsZQ0KJGZsZHMgPSAiDQoJY2xhc3NpZmljYXRpb24gQyg2NCksDQoJaWQgSSBLRVksDQoJbmFtZSBDKDY0KSwNCglhbGlhcyBDKDY0KSwNCglpdGVtX29yZGVyIEksDQoJYWN0aXZlIEwsDQoJaXNkZWZhdWx0IEwsDQogICAgZGF0ZV9tb2RpZmllZCAiLkNNU19BRE9EQl9EVC4iLA0KCWRhdGVfY3JlYXRlZCAiLkNNU19BRE9EQl9EVC4iDQoJIjsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGV0eXBlIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGV0eXBlX3NlcSIpOw0KDQoNCi8vIENyZWF0ZXMgdGhlIHZlaGljbGUgdGFibGUNCiRmbGRzID0gIg0KCXllYXIgQygxMCksDQoJbWFrZSBJLA0KCW1vZGVsIEMoNjQpLA0KCW1pbGFnZSBDKDY0KSwNCgl2ZWhpY2xlY29uZGl0aW9uIEMoNjQpLA0KCWNvbG9yIEMoMzIpLA0KCXByaWNlIEMoMzIpLA0KCWVuZ2luZSBDKDMyKSwNCglmZWF0dXJlcyBDKDI1NSksDQoJbWFpbnBpY3R1cmUgQygyNTUpLA0KCWRlc2NyaXB0aW9uIFgsDQoJcGFyZW50IEksDQoJaWQgSSBLRVksDQoJbmFtZSBDKDY0KSwNCglhbGlhcyBDKDY0KSwNCglpdGVtX29yZGVyIEksDQoJYWN0aXZlIEwsDQoJaXNkZWZhdWx0IEwsDQogICAgZGF0ZV9tb2RpZmllZCAiLkNNU19BRE9EQl9EVC4iLA0KCWRhdGVfY3JlYXRlZCAiLkNNU19BRE9EQl9EVC4iDQoJIjsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGUiLCAkZmxkcywgJHRhYm9wdGFycmF5KTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfdmVoaWNsZV9zZXEiKTsNCg0KDQovLyBDcmVhdGUgdGhlIGZpZWxkb3B0aW9ucyB0YWJsZQ0KJGZsZHMgPSAiDQoJaWQgSSwNCglmaWVsZCBDKDEyOCksDQoJbmFtZSBDKDMyKSwNCglpdGVtX29yZGVyIEkNCgkiOw0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX2ZpZWxkb3B0aW9ucyIsICRmbGRzLCAkdGFib3B0KTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfZmllbGRvcHRpb25zX3NlcSIpOw0KDQoNCi8vIENyZWF0ZXMgdGhlIHRhYmxlIGZvciBtdWx0aXBsZSBmaWxlcw0KJGZsZHMgPSAiDQogICAgZmlsZWlkIEksDQoJaXRlbWlkIEksDQoJZmllbGRuYW1lIEMoNjQpLA0KCWZpbGVwYXRoIEMoMjU1KQ0KCSI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc19tdWx0aXBsZWZpbGVzZmllbGRzIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX211bHRpcGxlZmlsZXNmaWVsZHNfc2VxIik7DQoNCg0KDQoNCi8vIENyZWF0ZXMgdGhlIHF1ZXJpZXMgdGFibGUNCiRmbGRzID0gIg0KICAgIGlkIEksDQoJbmFtZSBDKDY0KSwNCgl3aGF0IEMoMzIpLA0KCXdoZXJlY2xhdXNlIEMoMjU1KSwNCgl3aGVyZXZhbHVlcyBDKDI1NSksDQoJcXVlcnlvcmRlciBDKDMyKQ0KCSI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc19zYXZlZF9xdWVyaWVzIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3NhdmVkX3F1ZXJpZXNfc2VxIik7DQoNCg0KLy8gSU5TRVJUSU5HIERFRkFVTFQgVEVNUExBVEVTDQoJJHRlbXBsYXRlID0gJzxoMj57JGxldmVsdGl0bGV9PC9oMj4NCntpZiAkaXRlbWNvdW50ID4gMH0NCjx1bD4NCntmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09Iml0ZW0ifQ0KPGxpIHtpZiAkaXRlbS0+aXNfc2VsZWN0ZWR9Y2xhc3M9ImFjdGl2ZSJ7L2lmfT57JGl0ZW0tPmRldGFpbGxpbmt9PC9saT4NCjx0YWJsZSBib3JkZXI9IjEiIHdpZHRoPSI1MDAiPg0KPHRyPjx0ZCByb3dzcGFuPSIyIiB3aWR0aD0iMTAwIj48YSBocmVmPXskaXRlbS0+ZGV0YWlsdXJsfT48aW1nIHNyYz0idXBsb2Fkcy97JGl0ZW0tPm1haW5waWN0dXJlLT50aHVtYm5haWx9IiBhbHQ9InskaXRlbS0+bmFtZX0iLz48L2E+DQo8L3RkPg0KPHRoPlllYXI6IHskaXRlbS0+eWVhcn08L3RoPg0KPHRoPiBNYWtlIDogeyRpdGVtLT5tYWtlX25hbWV2YWx1ZX08L3RoPiAgDQo8dGg+UHJpY2U6ICR7JGl0ZW0tPnByaWNlfTwvdGg+ICANCjwvdHI+DQo8dHI+DQo8dGQgY29sc3Bhbj0iMyI+eyRpdGVtLT5kZXNjcmlwdGlvbn0gPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0Key9mb3JlYWNofQ0KPC91bD4NCntpZiAkcGFnZV9wYWdlbnVtYmVyc30NCjxkaXYgaWQ9InBhZ2VtZW51IiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+DQp7JHBhZ2VfcHJldmlvdXN9Jm5ic3A7IHskcGFnZV9zaG93aW5nfS97JHBhZ2VfdG90YWxpdGVtc30gJm5ic3A7eyRwYWdlX25leHR9PGJyLz4NCnskcGFnZV9wYWdlbnVtYmVyc30NCjwvZGl2Pg0Key9pZn0NCntlbHNlfQ0KPHA+eyRlcnJvcl9tc2d9PC9wPg0Key9pZn0NCic7DQokdGhpcy0+U2V0VGVtcGxhdGUoImxpc3RfZGVmYXVsdCIsJHRlbXBsYXRlLCR0aGlzLT5HZXROYW1lKCkpOw0KICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfdmVoaWNsZXR5cGUiLCJsaXN0X2RlZmF1bHQiKTsNCiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlX3ZlaGljbGUiLCJsaXN0X2RlZmF1bHQiKTsNCg0KJHRlbXBsYXRlID0gJzxoMz57JGl0ZW0tPm5hbWV9PC9oMz4NCjxwPnskbGFiZWxzLT55ZWFyfTogeyRpdGVtLT55ZWFyfTwvcD4NCjxwPnskbGFiZWxzLT5tYWtlfTogeyRpdGVtLT5tYWtlX25hbWV2YWx1ZX08L3A+DQo8cD57JGxhYmVscy0+bW9kZWx9OiB7JGl0ZW0tPm1vZGVsfTwvcD4NCjxwPnskbGFiZWxzLT5taWxhZ2V9OiB7JGl0ZW0tPm1pbGFnZX08L3A+DQo8cD57JGxhYmVscy0+dmVoaWNsZWNvbmRpdGlvbn06IHskaXRlbS0+dmVoaWNsZWNvbmRpdGlvbn08L3A+DQo8cD57JGxhYmVscy0+Y29sb3J9OiB7JGl0ZW0tPmNvbG9yfTwvcD4NCjxwPnskbGFiZWxzLT5wcmljZX06IHskaXRlbS0+cHJpY2V9PC9wPg0KPHA+eyRsYWJlbHMtPmVuZ2luZX06IHskaXRlbS0+ZW5naW5lfTwvcD4NCjxwPnskbGFiZWxzLT5mZWF0dXJlc306IA0Ke2ZvcmVhY2ggZnJvbT0kaXRlbS0+ZmVhdHVyZXNfbmFtZXZhbHVlIGl0ZW09Im9uZXZhbHVlIn17aWYgJHRtcGZsYWd9LCB7L2lmfXskb25ldmFsdWV9e2Fzc2lnbiB2YXI9InRtcGZsYWciIHZhbHVlPXRydWV9ey9mb3JlYWNofTwvcD4NCntpZiBjb3VudCgkaXRlbS0+cGljdHVyZXMpID4gMH08YnIvPg0KCTxmaWVsZHNldD48bGVnZW5kPnskbGFiZWxzLT5waWN0dXJlc306PC9sZWdlbmQ+PHVsPg0KCQl7Zm9yZWFjaCBmcm9tPSRpdGVtLT5waWN0dXJlcyBpdGVtPSJmaWxlIn0NCgkJCTxsaT48YSBocmVmPSJ7JGZpbGUtPnVybH0iPjxpbWcgc3JjPSJ7JGZpbGUtPnRodW1ibmFpbH0iIGJvcmRlcj0iMCIgYWx0PSIiLz48L2E+DQoJCXsvZm9yZWFjaH08L3VsPg0KCTwvZmllbGRzZXQ+PGJyLz4NCnsvaWZ9DQp7aWYgJGl0ZW0tPm1haW5waWN0dXJlICE9ICIifTxwPnskaXRlbS0+bWFpbnBpY3R1cmUtPmltYWdlfTwvcD57L2lmfQ0KPHA+eyRsYWJlbHMtPmRlc2NyaXB0aW9ufTo8YnIvPnskaXRlbS0+ZGVzY3JpcHRpb259PC9wPg0KJzsNCiR0aGlzLT5TZXRUZW1wbGF0ZSgiZmluYWxfZGVmYXVsdCIsJHRlbXBsYXRlLCR0aGlzLT5HZXROYW1lKCkpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoImZpbmFsdGVtcGxhdGUiLCJmaW5hbF9kZWZhdWx0Iik7DQoNCiR0ZW1wbGF0ZSA9ICc8cD57JGVycm9yX21zZ308L3A+DQp7aWYgJGJhY2tsaW5rfTxwPnskYmFja2xpbmt9PC9wPnsvaWZ9JzsNCiR0aGlzLT5TZXRUZW1wbGF0ZSgibm9fcmVzdWx0IiwkdGVtcGxhdGUsJHRoaXMtPkdldE5hbWUoKSk7DQoNCi8vIENSRUFUSU5HIFBFUk1JU1NJT05TIDoNCg0KLy8gcGVybWlzc2lvbnMNCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCJhdXRvc19ub3JtYWx1c2VyIiwgImF1dG9zOiBOb3JtYWwgdXNlciIpOw0KJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oImF1dG9zX2FkdmFuY2VkIiwgImF1dG9zOiBBZHZhbmNlZCIpOw0KCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCJhdXRvc19tYW5hZ2VfdmVoaWNsZXR5cGUiLCAiYXV0b3M6IE1hbmFnZSB2ZWhpY2xldHlwZSIpOw0KCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCJhdXRvc19tYW5hZ2VfdmVoaWNsZSIsICJhdXRvczogTWFuYWdlIHZlaGljbGUiKTsNCi8vIGFjdGl2YXRpbmcgZGVmYXVsdCBwcmVmZXJlbmNlcw0KCSRkZWZwcmVmcyA9IGFycmF5KCJ0YWJkaXNwbGF5X3ZlaGljbGV0eXBlIiwibG9hZF9uZXh0cHJldmlvdXMiLCJzZWFyY2htb2R1bGVfaW5kZXhfdmVoaWNsZXR5cGUiLCJ0YWJkaXNwbGF5X3ZlaGljbGUiLCJzZWFyY2htb2R1bGVfaW5kZXhfdmVoaWNsZSIsIm5ld2l0ZW1zZmlyc3RfdmVoaWNsZSIsInJlc3RyaWN0X3Blcm1pc3Npb25zIiwib3JkZXJieW5hbWUiLCJkaXNwbGF5X2ZpbHRlciIsImRpc3BsYXlfaW5zdGFudHNlYXJjaCIsImRpc3BsYXlfaW5zdGFudHNvcnQiLCJkZWxldGVfZmlsZXMiLCJzaG93dGh1bWJuYWlscyIsImxvYWRfbmJjaGlsZHJlbiIsInVzZV9zZXNzaW9uIik7DQoJZm9yZWFjaCgkZGVmcHJlZnMgYXMgJG9uZXByZWYpCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCRvbmVwcmVmLHRydWUpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJlbXB0eXRlbXBsYXRlIiwiKioiKTsNCg0KLy8gZXZlbnRzDQoJJHRoaXMtPkNyZWF0ZUV2ZW50KCJhdXRvc19hZGRlZCIpOw0KCSR0aGlzLT5DcmVhdGVFdmVudCgiYXV0b3NfbW9kaWZpZWQiKTsNCgkkdGhpcy0+Q3JlYXRlRXZlbnQoImF1dG9zX2RlbGV0ZWQiKTsNCgkNCi8vIHByZXBhcmUgaW5mb3JtYXRpb24gZm9yIGFuIGV2ZW50dWFsIHVwZ3JhZGUNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgibWFrZXJ2ZXJzaW9uIiwiMS44LjkuMyIpOw0KDQovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cNCgkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCJmcmllbmRseW5hbWUiKSwgJHRoaXMtPkxhbmcoImluc3RhbGxlZCIsJHRoaXMtPkdldFZlcnNpb24oKSkpOw0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24NCiRkYiA9ICYkdGhpcy0+Y21zLT5kYjsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCg0KDQoNCgkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGV0eXBlIik7DQoJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCSRkYi0+RHJvcFNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGV0eXBlX3NlcSIpOw0KCQ0KDQoJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc192ZWhpY2xlIik7DQoJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCSRkYi0+RHJvcFNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGVfc2VxIik7DQoJDQoJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc19maWVsZG9wdGlvbnMiKTsNCgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJJGRiLT5Ecm9wU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfZmllbGRvcHRpb25zX3NlcSIpOw0KCQ0KCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfbXVsdGlwbGVmaWxlc2ZpZWxkcyIpOw0KCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkkZGItPkRyb3BTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc19tdWx0aXBsZWZpbGVzZmllbGRzX3NlcSIpOw0KCQ0KDQoJLy8kc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3RlbXBsYXRlcyIpOw0KCS8vJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgiIiwkdGhpcy0+R2V0TmFtZSgpKTsNCgkNCgkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3NhdmVkX3F1ZXJpZXMiKTsNCgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJJGRiLT5Ecm9wU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3Nfc2F2ZWRfcXVlcmllc19zZXEiKTsNCg0KLy8gcGVybWlzc2lvbnMNCgkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbigiYXV0b3NfbWFuYWdlX3ZlaGljbGV0eXBlIik7DQoJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oImF1dG9zX21hbmFnZV92ZWhpY2xlIik7DQoJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oImF1dG9zX2FkdmFuY2VkIik7DQoJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsNCgkNCi8vIGV2ZW50cw0KCSR0aGlzLT5SZW1vdmVFdmVudCgiYXV0b3NfYWRkZWQiKTsNCgkkdGhpcy0+UmVtb3ZlRXZlbnQoImF1dG9zX21vZGlmaWVkIik7DQoJJHRoaXMtPlJlbW92ZUV2ZW50KCJhdXRvc19kZWxldGVkIik7DQoNCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoImZyaWVuZGx5bmFtZSIpLCAkdGhpcy0+TGFuZygidW5pbnN0YWxsZWQiKSk7DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokZGIgPSYgJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKJHRhYm9wdCA9IGFycmF5KCJteXNxbCIgPT4gIlRZUEU9TXlJU0FNIik7CgovLyBQQVJUIDE6IFRoaXMgZG9lcyB0aGUgdXBncmFkZSBmb3IgdGhlIENUTE1vZHVsZU1ha2VyIHBhcnQKLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBvbmx5IGJhY2t3YXJkIGNvbXBhdGlibGUgdG8gQ1RMTW9kdWxlTWFrZXIgMS42LjMuIEkgY291bGRuJ3QgZ28gYW55IGZ1cnRoZXIgYmVoaW5kIGJlY2F1c2UgYXQgdGhhdCB0aW1lIHRoZSBtYWtlciB2ZXJzaW9uIHdhc24ndCBzYXZlZCBhbnl3aGVyZQoKJG9sZG1ha2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoIm1ha2VydmVyc2lvbiIsICJ2ZXJ5b2xkIik7Cgpzd2l0Y2goJG9sZG1ha2VyKXsKCS8vIEJFR0lOIFNXSVRDSCgkb2xkbWFrZXIpCgoJY2FzZSAidmVyeW9sZCI6CgkJLy8gdGhlIG1vZHVsZSB3YXMgY3JlYXRlZCB3aXRoIHZlcnNpb24gMS42LjMgb3IgcHJpb3IuCgkJJHRoaXMtPkNyZWF0ZUV2ZW50KCJhdXRvc19hZGRlZCIpOwoJCSR0aGlzLT5DcmVhdGVFdmVudCgiYXV0b3NfbW9kaWZpZWQiKTsKCQkkdGhpcy0+Q3JlYXRlRXZlbnQoImF1dG9zX2RlbGV0ZWQiKTsKCQlicmVhazsKCWNhc2UgIjEuNi40IjoKCWNhc2UgIjEuNyI6CgljYXNlICIxLjcuMSI6CgljYXNlICIxLjcuMiI6CgljYXNlICIxLjcuMyI6CgljYXNlICIxLjcuNCI6CgkJCgkJLy8gb3B0aW9uIHZhbHVlcyBmb3IgZHluYW1pYyBsaXN0IGZpZWxkcyBhcmUgbm93IGFsbCBpbiB0aGUgc2FtZSB0YWJsZQoKCQkvLyBDcmVhdGUgdGhlIG5ldyBmaWVsZG9wdGlvbnMgdGFibGUKCQkkbmV3dGFibGUgPSBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc19maWVsZG9wdGlvbnMiOwoJCSRmbGRzID0gIgoJCQlpZCBJLAoJCQlmaWVsZCBDKDEyOCksCgkJCW5hbWUgQygzMiksCgkJCWl0ZW1fb3JkZXIgSQoJCQkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCgkbmV3dGFibGUsICRmbGRzLCAkdGFib3B0KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJJGRiLT5DcmVhdGVTZXF1ZW5jZSgkbmV3dGFibGUuIl9zZXEiKTsKCgkJLy8gdHJhbnNmZXIgdGhlIGV4aXN0aW5nIG9wdGlvbnMKCQkkbGlzdGZpZWxkcyA9IGFycmF5KGFycmF5KCJCIiwgInZlaGljbGUiLCAibWFrZSIpLGFycmF5KCJCIiwgInZlaGljbGUiLCAiZmVhdHVyZXMiKSk7CgkJJG1heGlkID0gMDsKCQlmb3JlYWNoKCRsaXN0ZmllbGRzIGFzICRmaWVsZCl7CgkJCSRvbGR0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zXyIuJGZpZWxkWzBdLiJfIi4kZmllbGRbMl0uIl9vcHRpb25zIjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCJTRUxFQ1QgKiBGUk9NICIuJG9sZHRhYmxlKTsKCQkJJGl0ZW1fb3JkZXIgPSAxOwoJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7CgkJCQlpZigkcm93WyJpZCJdID4gJG1heGlkKQkkbWF4aWQgPSAkcm93WyJpZCJdOwoJCQkJJG5ld2lkID0gJGRiLT5HZW5JRCgkbmV3dGFibGUuIl9zZXEiKTsKCQkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLiRuZXd0YWJsZS4iIFNFVCBpZD0/LCBmaWVsZD0/LCBuYW1lPT8sIGl0ZW1fb3JkZXI9PyI7CgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcm93WyJpZCJdLCAkZmllbGRbMV0uIl8iLiRmaWVsZFsyXSwgJHJvd1sibmFtZSJdLCAkaXRlbV9vcmRlcikpOwoJCQkJJGl0ZW1fb3JkZXIrKzsKCQkJfQoJCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCRvbGR0YWJsZSk7CgkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkJJGRiLT5Ecm9wU2VxdWVuY2UoJG9sZHRhYmxlLiJfc2VxIik7CgkJfQoJCS8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5leHQgb3B0aW9ucyB3b24ndCBoYXZlIHRoZSBzYW1lIGlkcwoJCSRkdW1teWlkID0gJGRiLT5HZW5JRCgkbmV3dGFibGUuIl9zZXEiKTsKCQl3aGlsZSgkZHVtbXlpZCA8PSAkbWF4aWQpewoJCQkkZHVtbXlpZCA9ICRkYi0+R2VuSUQoJG5ld3RhYmxlLiJfc2VxIik7CgkJfTsKCWNhc2UgIjEuOC4xIjoKCWNhc2UgIjEuOC4yIjoKCWNhc2UgIjEuOC4yLjIiOgoJY2FzZSAiMS44LjMiOgoJY2FzZSAiMS44LjMuMSI6CgkJLy8gQ3JlYXRlcyB0aGUgcXVlcmllcyB0YWJsZQoJCSRmbGRzID0gIgoJCQlpZCBJLAoJCQluYW1lIEMoNjQpLAoJCQl3aGF0IEMoMzIpLAoJCQl3aGVyZWNsYXVzZSBDKDI1NSksCgkJCXdoZXJldmFsdWVzIEMoMjU1KSwKCQkJcXVlcnlvcmRlciBDKDMyKQoJCQkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc19zYXZlZF9xdWVyaWVzIiwgJGZsZHMsICR0YWJvcHQpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3NhdmVkX3F1ZXJpZXNfc2VxIik7CgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oImF1dG9zX2FkdmFuY2VkIiwgImF1dG9zOiBBZHZhbmNlZCIpOwoJY2FzZSAiMS44LjQiOgoJY2FzZSAiMS44LjQuMSI6CgljYXNlICIxLjguNSI6CgljYXNlICIxLjguNS4xIjoKCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbigiYXV0b3Nfbm9ybWFsdXNlciIsICJhdXRvczogTm9ybWFsIHVzZXIiKTsKCQkvLyBhY3RpdmF0aW5nIGRlZmF1bHQgcHJlZmVyZW5jZXMKCQkkZGVmcHJlZnMgPSBhcnJheSgidGFiZGlzcGxheV92ZWhpY2xldHlwZSIsInNlYXJjaG1vZHVsZV9pbmRleF92ZWhpY2xldHlwZSIsInRhYmRpc3BsYXlfdmVoaWNsZSIsInNlYXJjaG1vZHVsZV9pbmRleF92ZWhpY2xlIiwibmV3aXRlbXNmaXJzdF92ZWhpY2xlIiwiZGVsZXRlZmlsZXMiLCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsImRpc3BsYXlfZmlsdGVyIiwiZGlzcGxheV9pbnN0YW50c2VhcmNoIik7CgkJZm9yZWFjaCgkZGVmcHJlZnMgYXMgJG9uZXByZWYpCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCRvbmVwcmVmLHRydWUpOwoJY2FzZSAiMS44LjYiOgoJY2FzZSAiMS44LjYuMSI6CgljYXNlICIxLjguNyI6CgljYXNlICIxLjguNy4xIjoKCQlpZigkZGItPmRidHlwZSA9PSAibXlzcWwiIHx8ICRkYi0+ZGJ0eXBlID09ICJteXNxbGkiKXsKCQkJLy8gbXN5cWwKCQkJJHF1ZXJpZXMgPSBhcnJheSgpOwoJCQkkcXVlcmllc1tdID0gIkFMVEVSIFRBQkxFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfdmVoaWNsZXR5cGUgQUREIENPTFVNTiBkYXRlX2NyZWF0ZWQgREFURVRJTUUiOwoJCQkkcXVlcmllc1tdID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGV0eXBlIFNFVCBkYXRlX2NyZWF0ZWQ9ZGF0ZV9tb2RpZmllZCI7CgkJCSRxdWVyaWVzW10gPSAiQUxURVIgVEFCTEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc192ZWhpY2xlIEFERCBDT0xVTU4gZGF0ZV9jcmVhdGVkIERBVEVUSU1FIjsKCQkJJHF1ZXJpZXNbXSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc192ZWhpY2xlIFNFVCBkYXRlX2NyZWF0ZWQ9ZGF0ZV9tb2RpZmllZCI7CgkJCWZvcmVhY2goJHF1ZXJpZXMgYXMgJHF1ZXJ5KQkJbXlzcWxfcXVlcnkoJHF1ZXJ5KTsKCgkJfWVsc2V7CgkJCS8vIG5vbi1teXNxbAoJCQkkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F1dG9zX3ZlaGljbGV0eXBlIiwgImRhdGVfY3JlYXRlZCAiLkNNU19BRE9EQl9EVCk7CgkJCSRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfdmVoaWNsZSIsICJkYXRlX2NyZWF0ZWQgIi5DTVNfQURPREJfRFQpOwoJCQkKCQl9CgljYXNlICIxLjguNy4yIjoKCWNhc2UgIjEuOC44IjoKCWNhc2UgIjEuOC44LjEiOgoJY2FzZSAiMS44LjguMiI6CgljYXNlICIxLjguOC4zIjoKCWNhc2UgIjEuOC44LjQiOgoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJhZG1pbnBhZ2VzIiwwKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgibG9hZF9uYmNoaWxkcmVuIix0cnVlKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgibG9hZF9uZXh0cHJldmlvdXMiLGZhbHNlKTsKCWNhc2UgIjEuOC45IjoKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgidXNlX3Nlc3Npb24iLHRydWUpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJkZWZlbXB0eXRlbXBsYXRlIiwiKioiKTsKCQkKCS8vIEVORCBTV0lUQ0goJG9sZG1ha2VyKQp9CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgibWFrZXJ2ZXJzaW9uIiwgIjEuOC45LjMiKTsKCgkKLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi8vIFBBUlQgMiA6IFRoaXMgZG9lcyB0aGUgdXBncmFkZSBmb3IgZmllbGQgY2hhbmdlcwovLyBUaGlzIGlzIHdyaXR0ZW4gYXV0b21hdGljYWxseS4uLiBzbyBpdCdzIGEgbWVzcy4KLy8gWU9VIFNIT1VMRCBDSEVDSyBUSElTIENPREUgQkVGT1JFIFVTSU5HIElUIQoKaWYoIWlzc2V0KCRjdXJyZW50X3ZlcnNpb24pKSAkY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247CgppZigkZGItPmRidHlwZSA9PSAibXlzcWwiIHx8ICRkYi0+ZGJ0eXBlID09ICJteXNxbGkiKXsKCS8vIEJFR0lOIE9GIFVQR1JBREUgQ09ERSBGT1IgTVlTUUwuLi4Kc3dpdGNoKCRjdXJyZW50X3ZlcnNpb24pewoJY2FzZSAiMS4zIjoKCQkJJHF1ZXJpZXMgPSBhcnJheSgpOwoJCQkkcXVlcmllc1tdID0gIkFMVEVSIFRBQkxFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXV0b3NfdmVoaWNsZSBBTFRFUiBDT0xVTU4gZW5naW5lIGVuZ2luZSBWQVJDSEFSKDMyKSI7CgkJCWZvcmVhY2goJHF1ZXJpZXMgYXMgJHF1ZXJ5KQkJbXlzcWxfcXVlcnkoJHF1ZXJ5KTsKCQkJCgkvLyBlbmQgc3dpdGNoCgl9Cn1lbHNlewoJLy8gQkVHSU4gT0YgVVBHUkFERSBDT0RFIEZPUiBOT04tTVlTUUwgKHVzaW5nIEFET0RCLCB3aGljaCBtYXkgbGlrZWx5IG5vdCBiZSBmdWxseSBzdXBwb3J0ZWQpCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKc3dpdGNoKCRjdXJyZW50X3ZlcnNpb24pewoJLy8gQkVHSU4gU1dJVENIKCRjdXJyZW50X3ZlcnNpb24pCgljYXNlICIxLjMiOgoJCQoJCSRmbGRzID0gIgoJCXllYXIgQygxMCksCgkJbWFrZSBJLAoJCW1vZGVsIEMoNjQpLAoJCW1pbGFnZSBDKDY0KSwKCQl2ZWhpY2xlY29uZGl0aW9uIEMoNjQpLAoJCWNvbG9yIEMoMzIpLAoJCXByaWNlIEMoMzIpLAoJCWVuZ2luZSBDKDMyKSwKCQlmZWF0dXJlcyBDKDI1NSksCgkJcGljdHVyZXMgLAoJCW1haW5waWN0dXJlIEMoMjU1KSwKCQlkZXNjcmlwdGlvbiBYLAoJCXBhcmVudCBJLAoJCWlkIEkgS0VZLAoJCW5hbWUgQyg2NCksCgkJYWxpYXMgQyg2NCksCgkJaXRlbV9vcmRlciBJLAoJCWFjdGl2ZSBMLAoJCWlzZGVmYXVsdCBMLAogCSAgIGRhdGVfbW9kaWZpZWQgIi5DTVNfQURPREJfRFQuIgoJCSI7CgoJCSRzcWxhcnJheSA9ICRkaWN0LT5BbHRlckNvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdXRvc192ZWhpY2xlIiwgImVuZ2luZSBDKDMyKSIsICRmbGRzLCAkdGFib3B0KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJYnJlYWs7CQoJLy8gRU5EIFNXSVRDSCgkY3VycmVudF92ZXJzaW9uKQoJfQp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRmaWx0ZXIgfHwgJGluc3RhbnRzZWFyY2h9PGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB0ZXh0LWFsaWduOiByaWdodDsiPnskZmlsdGVyfXtpZiAkZmlsdGVyICYmICRpbnN0YW50c2VhcmNofTxici8+ey9pZn17JGluc3RhbnRzZWFyY2h9PC9kaXY+ey9pZn0KPHA+eyRhZGRuZXd9IHskcmVvcmRlcn08L3A+CntpZiBjb3VudCgkaXRlbWxpc3QpID4gMH0KPGRpdiBzdHlsZT0iY2xlYXI6IHJpZ2h0OyI+Cjx0YWJsZSB7aWYgJHRhYmxlaWR9aWQ9InskdGFibGVpZH0iIHsvaWZ9Y2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgo8dGhlYWQ+PHRyPgoJe2ZvcmVhY2ggZnJvbT0kYWRtaW5zaG93IGl0ZW09Y29sdW1ufQoJCTx0aD57JGNvbHVtblswXX08L3RoPgoJey9mb3JlYWNofQo8L3RyPjwvdGhlYWQ+Cjx0Ym9keT4Ke2N5Y2xlIHZhbHVlcz0icm93Mixyb3cxIiBhc3NpZ249cm93Y2xhc3MgcmVzZXQ9dHJ1ZX0Ke2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT1vbmVpdGVtfQp7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzc30KPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4KCXtmb3JlYWNoIGZyb209JGFkbWluc2hvdyBpdGVtPWNvbHVtbn0KCQl7YXNzaWduIHZhcj1vbmV2YWwgdmFsdWU9JGNvbHVtblsxXX0KCQk8dGR7aWYgJGNvbHVtblsyXX0gY2xhc3M9ImN0bG1tX25vc2VhcmNoInsvaWZ9Pnskb25laXRlbS0+JG9uZXZhbH08L3RkPgoJey9mb3JlYWNofQo8L3RyPgp7L2ZvcmVhY2h9CjwvdGJvZHk+CjwvdGFibGU+CjwvZGl2Pgp7aWYgJHBhZ2VpbmZvfQo8cCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+e2lmICRwcmV2aW91c3BhZ2V9eyRwcmV2aW91c3BhZ2V9ICZuYnNwOyB7L2lmfXskcGFnZWluZm99e2lmICRuZXh0cGFnZX0gJm5ic3A7IHskbmV4dHBhZ2V9ey9pZn08YnIvPgp7JHBhZ2VzfTwvcD4Key9pZn0KPHA+eyRhZGRuZXd9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/browsefiles.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskYnJvd3NldGl0bGV9PC9oMj4Ke2lmICRwb3N0bWF4c2l6ZX08cCBhbGlnbj0icmlnaHQiPnskcG9zdG1heHNpemV9PC9wPnsvaWZ9CnskZm9ybXN0YXJ0fQoKe2lmICRhZGRmaWxlaW5wdXR9CjxmaWVsZHNldCBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB3aWR0aDogMzAlOyBtYXJnaW46IDE1cHg7IHBhZGRpbmc6IDVweDsiPjxsZWdlbmQ+PGI+eyR6aXB0aXRsZX08L2I+PC9sZWdlbmQ+CjxwPnskemlwbm90aWNlfTwvcD4Ke2lmICRyZXNpemVub3RpY2V9PHA+eyRyZXNpemVub3RpY2V9PC9wPnsvaWZ9CjxwPnskemlwaW5wdXR9IHskemlwc3VibWl0fTwvcD4KPC9maWVsZHNldD4Key9pZn0KPGZpZWxkc2V0IHN0eWxlPSJtYXJnaW46IDE1cHg7IHBhZGRpbmc6IDVweDsiPjxsZWdlbmQ+PGI+eyR1cGxvYWR0aXRsZX08L2I+PC9sZWdlbmQ+CntpZiAkcmVzaXplbm90aWNlfTxwPnskcmVzaXplbm90aWNlfTwvcD57L2lmfQp7JGZpbGVpbnB1dH0Ke2lmICRhZGRmaWxlaW5wdXR9PHA+eyRhZGRmaWxlaW5wdXR9PC9wPnsvaWZ9CjxwPnskc3VibWl0fTwvcD4KPC9maWVsZHNldD4KCnskZm9ybWVuZH0KCjxici8+CntpZiAkaW5zdGFudHNlYXJjaH08ZGl2IHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij57JGluc3RhbnRzZWFyY2h9PC9kaXY+ey9pZn0KPHA+eyRzaG93aW5nZGlyfTwvcD4KPGRpdiBzdHlsZT0iY2xlYXI6IHJpZ2h0OyI+Cjx0YWJsZSBpZD0iZmlsZWxpc3RfdGFibGUiIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KPHRoZWFkPjx0cj4KCTx0aD57JHNvcnRsaW5rc1swXX17JGhlYWRlcnMtPmZpbGVuYW1lfTwvdGg+Cgk8dGg+eyRudW1lcmljX3NvcnRsaW5rc1sxXX17JGhlYWRlcnMtPmltYWdlc2l6ZX08L3RoPgoJPHRoPnskc29ydGxpbmtzWzJdfXskaGVhZGVycy0+ZXh0fTwvdGg+Cgk8dGg+eyRudW1lcmljX3NvcnRsaW5rc1szXX17JGhlYWRlcnMtPnNpemV9PC90aD4KCTx0aD57JG51bWVyaWNfc29ydGxpbmtzWzRdfXskaGVhZGVycy0+bW9kaWZpZWR9PC90aD4KCTx0aCB3aWR0aD0iMTI4Ij57JGhlYWRlcnMtPmRlbGV0ZWxpbmt9PC90aD4KPC90cj48L3RoZWFkPgo8dGJvZHk+CntjeWNsZSB2YWx1ZXM9InJvdzIscm93MSIgYXNzaWduPXJvd2NsYXNzIHJlc2V0PXRydWV9Cntmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09b25laXRlbX0Ke2N5Y2xlIHZhbHVlcz0icm93Mixyb3cxIiBhc3NpZ249cm93Y2xhc3N9Cjx0ciBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+Cgk8dGQ+eyRvbmVpdGVtLT5waWN9IHskb25laXRlbS0+dGhlbGlua308L3RkPgoJPHRkIGNsYXNzPSJjdGxtbV9ub3NlYXJjaCI+eyRvbmVpdGVtLT5pbWFnZXNpemV9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+ZXh0fTwvdGQ+Cgk8dGQgY2xhc3M9ImN0bG1tX25vc2VhcmNoIj57JG9uZWl0ZW0tPnNpemV9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+bW9kaWZpZWR9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+ZGVsZXRlbGlua308L3RkPgo8L3RyPgp7L2ZvcmVhY2h9CjwvdGJvZHk+CjwvdGFibGU+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/editA.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQp7aWYgJGl0ZW1hbGlhc308c3BhbiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBmb250LXNpemU6IDgwJSI+eyRpdGVtYWxpYXN9PC9zcGFuPnsvaWZ9DQo8aDE+eyRlZGl0dGl0bGV9PC9oMT4NCjxwPnskc3VibWl0fSB7JGFwcGx5fSB7JGNhbmNlbH08L3A+DQo8YnIvPjxici8+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG5hbWVfbGFiZWx9KiA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCXtpZiAkYWxpYXNfaW5wdXR9PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFsaWFzX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgl7L2lmfQ0KDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGNsYXNzaWZpY2F0aW9uX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNsYXNzaWZpY2F0aW9uX2lucHV0fTwvcD4NCgk8L2Rpdj4NCjxici8+DQo8cD57JHN1Ym1pdH0geyRhcHBseX0geyRjYW5jZWx9PC9wPg0K]]></data>
	</file>
	<file>
	  <filename>/templates/editB.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQp7aWYgJGl0ZW1hbGlhc308c3BhbiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBmb250LXNpemU6IDgwJSI+eyRpdGVtYWxpYXN9PC9zcGFuPnsvaWZ9DQo8aDE+eyRlZGl0dGl0bGV9PC9oMT4NCjxwPnskc3VibWl0fSB7JGFwcGx5fSB7JGNhbmNlbH08L3A+DQo8YnIvPjxici8+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG5hbWVfbGFiZWx9KiA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCXtpZiAkYWxpYXNfaW5wdXR9PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFsaWFzX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgl7L2lmfQ0KDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHBhcmVudF9sYWJlbH0qIDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcGFyZW50X2lucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskeWVhcl9sYWJlbH0qIDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskeWVhcl9pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1ha2VfbGFiZWx9IDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbWFrZV9pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZGVsX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1vZGVsX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbWlsYWdlX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1pbGFnZV9pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHZlaGljbGVjb25kaXRpb25fbGFiZWx9IDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdmVoaWNsZWNvbmRpdGlvbl9pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGNvbG9yX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvbG9yX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJpY2VfbGFiZWx9IDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcHJpY2VfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRlbmdpbmVfbGFiZWx9IDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZW5naW5lX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskZmVhdHVyZXNfbGFiZWx9IDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZmVhdHVyZXNfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtYWlucGljdHVyZV9sYWJlbH0gOjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRtYWlucGljdHVyZV9pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGRlc2NyaXB0aW9uX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRlc2NyaXB0aW9uX2lucHV0fTwvcD4NCgk8L2Rpdj4NCjxici8+DQo8cD57JHN1Ym1pdH0geyRhcHBseX0geyRjYW5jZWx9PC9wPg0K]]></data>
	</file>
	<file>
	  <filename>/templates/search.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9e2lmICR3aGF0fTogeyR3aGF0fXsvaWZ9PC9oMj4KPHA+eyRzZWFyY2hmaWVsZH17JHN1Ym1pdH08L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search_generalresults.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskbGV2ZWx0aXRsZX08L2gyPgo8dWwgY2xhc3M9ImN0bF9zZWFyY2hyZXN1bHRzIj4Ke2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT0iaXRlbSJ9CjxsaT57JGl0ZW0tPmRldGFpbGxpbmt9PC9saT4Key9mb3JlYWNofQo8L3VsPgp7aWYgJHBhZ2VtZW51fTxwPnskcGFnZW1lbnV9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search_vehicle.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9OiB7JHdoYXR9PC9oMj4KPHRhYmxlPgo8dHI+PHRkPnskeWVhcl9sYWJlbH08L3RkPjx0ZD57JHllYXJfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskbWFrZV9sYWJlbH08L3RkPjx0ZD57JG1ha2VfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskbW9kZWxfbGFiZWx9PC90ZD48dGQ+eyRtb2RlbF9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRtaWxhZ2VfbGFiZWx9PC90ZD48dGQ+eyRtaWxhZ2VfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskdmVoaWNsZWNvbmRpdGlvbl9sYWJlbH08L3RkPjx0ZD57JHZlaGljbGVjb25kaXRpb25faW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskY29sb3JfbGFiZWx9PC90ZD48dGQ+eyRjb2xvcl9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRwcmljZV9sYWJlbH08L3RkPjx0ZD57JHByaWNlX2lucHV0fTwvdGQ+PC90cj4KPHRyPjx0ZD57JGVuZ2luZV9sYWJlbH08L3RkPjx0ZD57JGVuZ2luZV9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRmZWF0dXJlc19sYWJlbH08L3RkPjx0ZD57JGZlYXR1cmVzX2lucHV0fTwvdGQ+PC90cj4KPHRyPjx0ZD57JGRlc2NyaXB0aW9uX2xhYmVsfTwvdGQ+PHRkPnskZGVzY3JpcHRpb25faW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskcGFyZW50X2xhYmVsfTwvdGQ+PHRkPnskcGFyZW50X2lucHV0fTwvdGQ+PC90cj4KPHRyPjx0ZD57JG5hbWVfbGFiZWx9PC90ZD48dGQ+eyRuYW1lX2lucHV0fTwvdGQ+PC90cj4KPHRyPjx0ZD57JGRhdGVfbW9kaWZpZWRfbGFiZWx9PC90ZD48dGQ+eyRkYXRlX21vZGlmaWVkX2lucHV0fTwvdGQ+PC90cj4KPC90YWJsZT4KPHA+eyRzdWJtaXR9PC9wPg==]]></data>
	</file>
	<file>
	  <filename>/templates/search_vehicletype.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9OiB7JHdoYXR9PC9oMj4KPHRhYmxlPgo8dHI+PHRkPnskY2xhc3NpZmljYXRpb25fbGFiZWx9PC90ZD48dGQ+eyRjbGFzc2lmaWNhdGlvbl9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRuYW1lX2xhYmVsfTwvdGQ+PHRkPnskbmFtZV9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRkYXRlX21vZGlmaWVkX2xhYmVsfTwvdGQ+PHRkPnskZGF0ZV9tb2RpZmllZF9pbnB1dH08L3RkPjwvdHI+CjwvdGFibGU+CjxwPnskc3VibWl0fTwvcD4=]]></data>
	</file>
</module>
