<?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>UpCoupon</name>
	<version>0.0.8</version>
  <mincmsversion>1.9.1</mincmsversion>
	<help><![CDATA[CjxoMj5Eb2N1bWVudGF0aW9uPC9oMj48YnIgLz4KClRoZSBVcENvdXBvbiBtb2R1bGUgaGFzIGJlZW4gZGV2ZWxvcGVkIGZvciBhIHNob3Agb3duZXJzIGFzc29jaWF0aW9uLiBFYWNoIHllYXIgdGhlIGFzc29jaWF0aW9uIG9yZ2FuaXplcyBhIGxvdHRlcnkgYW1vbmdzdCBpdHMgY3VzdG9tZXJzLiBXaGVuIG9uZSBzcGVuZHMgYW4geCBhbW91bnQgaW4gYSBwYXJ0aWNpcGF0aW5nIHNob3AsIG9uZSByZWNlaXZlcyBhIHZvdWNoZXIgd2l0aCBhICdDb3Vwb24gQ29kZScuIAoKVG8gam9pbiB0aGUgbG90dGVyeSwgdGhlIGN1c3RvbWVyIGhhcyB0byBlbnRlciB0aGUgJ0NvdXBvbiBDb2RlJyBvbiB0aGUgYXNzb3NpYXRpb24td2Vic2l0ZSwgdG9nZXRoZXIgd2l0aCBvdGhlciBkZXRhaWxzLCBzdWNoIGFzIG5hbWUgYW5kIGFkZHJlc3MuIDxiciAvPjxiciAvPgoKPGgyPlRoZSBhZG1pbiBpbnRlcmZhY2Ugb2YgdGhpcyBtb2R1bGUgaGFzIHZhcmlvdXMgZnVuY3Rpb25hbGl0aWVzOjwvaDI+PGJyIC8+Cgo8Yj5Db3Vwb24gQWN0aW9uczwvYj4gLSB0YWIgPGJyIC8+CgpIZXJlIHlvdSBjYW4gYWRkIHNldmVyYWwgbG90dGVyaWVzLiA8YnIgLz4KClN1Y2ggYXMgYSBzdW1tZXIgbG90dGVyeSBvciBhIHdpbnRlciBsb3R0ZXJ5LiBFYWNoIGxvdHRlcnkgbmVlZHMgdG8gaGF2ZSBhIHRpdGxlLCBhbGlhcywgZGVzY3JpcHRpb24sIHN0YXJ0ZGF0ZSwgZW5kZGF0ZSBhbmQgc3RhdHVzLiA8YnIgLz48YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IFRoZSBzdGFydGRhdGUgb2YgdGhlICdDb3Vwb24gQWN0aW9uJyBhbHdheXMgaGFzIHRvIGJlIGFuIGVhcmxpZXIgZGF0ZSB0aGFuIHRoZSBlbmRkYXRlLiA8YnIgLz48YnIgLz4KCjxiPkNvdXBvbiBQZXJpb2RzPC9iPiAtIHRhYiA8YnIgLz4KCkhlcmUgdGhlIHBlcmlvZHMgaW4gd2hpY2ggdGhlIGRyYXcocykgdGFrZShzKSBwbGFjZSBjYW4gYmUgYWRkZWQuIDxiciAvPgoKVGhlIHN1bW1lciBsb3R0ZXJ5IGNvdWxkIGZvciBpbnN0YW5jZSBoYXZlIGZvdXIgd2Vla2x5IGRyYXdzIGFuZCBhIGZpbmFsIGRyYXcgYXQgdGhlIGVuZCBvZiB0aGUgcGVyaW9kLiBFYWNoICcgQ291cG9uIFBlcmlvZCcgbmVlZHMgdG8gaGF2ZSBhIGNvdXBvbl9hY3RpZSAoYXMgc3VibWl0dGVkIHVuZGVyICcgQ291cG9uIEFjdGlvbnMnKSwgdGl0bGUsIHN0YXJ0ZGF0ZSwgZW5kZGF0ZSwgRmluYWwgZHJhdyAoeWVzL25vKSBhbmQgc3RhdHVzLiA8YnIgLz48YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IFRoZSBzdGFydGRhdGUgb2YgdGhlICdDb3Vwb24gUGVyaW9kJyBhbHdheXMgaGFzIHRvIGJlIGFuIGVhcmxpZXIgZGF0ZSB0aGFuIHRoZSBlbmRkYXRlIGFuZCBoYXMgdG8gb2NjdXIgd2l0aGluIHRoZSBzdGFydC0gYW5kIGVuZGRhdGUgb2YgdGhlICcgQ291cG9uIEFjdGlvbicuPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBVc3VhbGx5IGFsbCBjdXN0b21lcnMgcGFydGljaXBhdGluZyBpbiB0aGUgbG90dGVyeSBoYXZlIGEgY2hhbmNlIG9uIHdpbm5pbmcgdGhlIGZpbmFsIGRyYXcuIFRoZXJlZm9yZSB0aGUgcGVyaW9kIG9mIHRoZSAnRmluYWwgZHJhdycgdXN1YWxseSBzdGFydHMgYXQgdGhlIHN0YXJ0ZGF0ZSBvZiB0aGUgJ0NvdXBvbiBBY3Rpb24nIHVwIGFuZCB1bnRpbCB0aGUgZW5kZGF0ZSBvZiB0aGUgJ0NvdXBvbiBBY3Rpb24nLiAgPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPlRpcDwvYj48L2ZvbnQ+IE1ha2Ugc3VyZSB0aGF0IHRoZSBzdGFydGRhdGUgc3RhcnRzIGF0IDAwOjAwOjAwIGFuZCBlbmRzIGF0IDIzOjU5OjU5LiBJbiBkb2luZyBzbywgYSBsb3R0ZXJ5IG9yIHBlcmlvZCBydW5zIGZvciAyNCBob3VycyAoYW4gZW50aXJlIGNhbGVuZGVyIGRheSkuPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPlRpcDwvYj48L2ZvbnQ+IFRoZSAnQ291cG9uIFBlcmlvZCcgaXMgYnkgZGVmYXVsdCBzb3J0ZWQgYnkgZW5kZGF0ZS4gQnkgYWRqdXN0aW5nIHRoZSBlbmRkYXRlLXRpbWUgd2l0aCBqdXN0IG9uZSBzZWNvbmQsIHRoZSBvcmRlciBpcyBhZGp1c3RlZCBhcyB3ZWxsLiBJdCB3b3VsZCBiZSBzdHJhbmdlIGlmIC0gYXQgdGhlIGZyb250ZW5kIC0gdGhlIEZpbmFsIGRyYXcgaXMgc2hvd24gcHJpb3IgdG8gdGhlIGxhc3QgZHJhdyhub3QgdGhlIEZpbmFsIGRyYXcpLiBUaGVyZWZvcmUgaXQgaXMgYWR2aXNlZCB0byAtIGlmIHRoZSBGaW5hbCBkcmF3IGhhcyB0aGUgc2FtZSBlbmRkYXRlIGFzIHRoZSBsYXN0IChub24tZmluYWwpIGRyYXcgLSBhZGp1c3QgdGhlIGVuZGRhdGUtdGltZSBvZiBvbmUgb2YgdGhlbSwgaW4gb3JkZXIgdG8gaGF2ZSB0byByaWdodCBvcmRlciBzaG93biBhdCB0aGUgZnJvbnRlbmQuPGJyIC8+PGJyIC8+Cgo8Yj5Qcml6ZXM8L2I+IC0gdGFiIDxiciAvPgoKUHJpemVzIGNhbiBiZSBjb25uZWN0ZWQgdG8gZWFjaCAnQ291cG9uIEFjdGlvbicgb3IgJ0NvdXBvbiBQZXJpb2QnLiBXaGVuIGFkZGluZyBhIHByaXplLCBDb3Vwb24gQ29kZSwgQ291cG9uIEFjdGlvbiwgUHJpemUgY29kZSwgdGl0bGUsIGRlc2NyaXB0aW9uLCBudW1iZXIgYW5kIHN0YXR1cyBoYXZlIHRvIGJlIGVudGVyZWQuIDxiciAvPjxiciAvPgoKPGI+V2lubmVyczwvYj4gLSB0YWIgPGJyIC8+CgpPdXQgb2YgdGhlIHJlZ2lzdGVyZWQgY291cG9uIGNvZGVzLCBvbmUgb3IgbW9yZSB3aW5uZXJzIGNhbiBiZSBkcmF3bi4gQWZ0ZXIgc2VsZWN0aW5nICdDb3Vwb24gQWN0aW9uJywgJ0NvdXBvbiBQZXJpb2QnIGFuZCBwcml6ZSwgb25lIGNhbiBjbGljayBvbiB0aGUgIiBEcmF3IGNvdXBvbicgYnV0dG9uLiBUaGUgd2lubmVyIGlzIHJhbmRvbWx5IGRyYXduIGZyb20gdGhlIGRhdGFiYXNlIHdpdGggcmVnaXN0ZXJlZCBjb3Vwb24gY29kZXMgYW5kIGlzIHNob3duLiA8YnIgLz48YnIgLz4KCjxiPlN0YXRpc3RpY3M8L2I+IC0gdGFiIDxiciAvPgoKV2hlbiByZWdpc3RlcmluZyBhIGNvdXBvbiBjb2RlLCBhIHRpbWVzdGFtcCBpcyBnZW5lcmF0ZWQgYW5kIHNhdmVkLiBCeSB1c2luZyB0aGlzIHRpbWVzdGFtcCB0b2dldGhlciB3aXRoIHRoZSBzdGFydC0gYW5kIGVuZGRhdGUgb2YgYSAnIENvdXBvbiBBY3Rpb24nIGFuZCAnQ291cG9uIFBlcmlvZCB0aGUgc3RhdGlzdGljcyBhcmUgY3JlYXRlZC4gPGJyIC8+PGJyIC8+Cgo8Yj5UZW1wbGF0ZXM8L2I+IC0gdGFiIDxiciAvPgoKVGhlIFVwQ291cG9uIG1vZHVsZSBoYXMgdmFyaW91cyB0ZW1wbGF0ZXMsIHN1Y2ggYXMgdGhlIHRlbXBsYXRlIFJlZ2lzdHJhdGlvbiwgV2lubmVyIGFuZCBQcml6ZXMuIFRoZSB0ZW1wbGF0ZXMgYXJlIHVzZWQgZm9yIHRoZSBmcm9udGVuZC4gV2hlbiBhZGRpbmcgYSB0ZW1wbGF0ZXMsIGEgbmFtZSwgdGVtcGxhdGUgdHlwZSBhbmQgdGVtcGxhdGUgY29kZSBjYW4gYmUgZW50ZXJlZC4gPGJyIC8+PGJyIC8+CgpCeSB1c2luZyB0aGUgZmFjdG9yeSBzZXR0aW5ncyBidXR0b24sIHRoZSB0ZW1wbGF0ZSBjb2RlIGZpZWxkIGF1dG9tYXRpY2FsbHkgaXMgc2V0IHRvIHVzZSB0aGUgZGVmYXVsdCB0ZW1wbGF0ZS4gPGJyIC8+PGJyIC8+Cgo8Yj5QcmVmZXJlbmNlczwvYj4gLSB0YWIgPGJyIC8+CgpBIGN1c3RvbWVyIHdobyBoYXMgcmVnaXN0ZXJlZCBoaXMgJ0NvdXBvbiBDb2RlJywgd2lsbCByZWNlaXZlIGEgY29uZmlybWF0aW9uIGJ5IGUtbWFpbCwgaWYgYWxsIGUtbWFpbCBwcmVmZXJlbmNlcyBhcmUgY29ycmVjbHR5IGNvbXBsZXRlZC4gPGJyIC8+PGJyIC8+Cgo8aDI+U3VwcG9ydDwvaDI+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5UaGUgYXV0aG9yKHMpLCBhcm5vdWQgZXQgYWxsIGNhbiBzb21ldGltZXMgYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIAo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQKb2YgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+bGljZW5zZTwvYT4gZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoKPGgyPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDI+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMSwgQXJub3VkIHZhbiBTdXN0ZXJlbiA8YSBocmVmPSJtYWlsdG86YXJub3VkQHVwc2VydmljZS5ubCI+Jmx0O2Fybm91ZEB1cHNlcnZpY2UubmwmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgoKPHN0cm9uZz5TdXBwb3J0IG1vcmUgbW9kcyBsaWtlIHRoaXM6PC9zdHJvbmc+Cgo8cD4KPGZvcm0gYWN0aW9uPSJodHRwczovL3d3dy5wYXlwYWwuY29tL2NnaS1iaW4vd2Vic2NyIiBtZXRob2Q9InBvc3QiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjbWQiIHZhbHVlPSJfcy14Y2xpY2siPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJlbmNyeXB0ZWQiIHZhbHVlPSItLS0tLUJFR0lOIFBLQ1M3LS0tLS1NSUlIVHdZSktvWklodmNOQVFjRW9JSUhRRENDQnp3Q0FRRXhnZ0V3TUlJQkxBSUJBRENCbERDQmpqRUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdUQWtOQk1SWXdGQVlEVlFRSEV3MU5iM1Z1ZEdGcGJpQldhV1YzTVJRd0VnWURWUVFLRXd0UVlYbFFZV3dnU1c1akxqRVRNQkVHQTFVRUN4UUtiR2wyWlY5alpYSjBjekVSTUE4R0ExVUVBeFFJYkdsMlpWOWhjR2t4SERBYUJna3Foa2lHOXcwQkNRRVdEWEpsUUhCaGVYQmhiQzVqYjIwQ0FRQXdEUVlKS29aSWh2Y05BUUVCQlFBRWdZQW5MV3ZqWWkyY1FZQzRUeFlsU2htYjhMOG1UZjN4d1ZpSlU1a3l6YUpWUmtCblcvSkJGVDBSQ283UkZHV1FZTE9LNkJCNm5nOTZuYzFIT2FDeG1INmlxMk1KcVN2K0U4MTFoQ01lQTh4Wjdxekp0d0M4Nk5oRnNueVlubW94WXRUWXEvME5ncGQvajNUOU43RTlYVTMwQ0VJdlZvNkMwZnhPdmVBbktKK2pZakVMTUFrR0JTc09Bd0lhQlFBd2djd0dDU3FHU0liM0RRRUhBVEFVQmdncWhraUc5dzBEQndRSUVtWlZvVGg2SVVXQWdhZ3h5elg5U3p3b3lPYTRmZHo5MnM3WnJtdzE1R2J0ZUxpekFtaHJDQmFVT3MzUzFpVjNlTlNOKzBIa1RxQXZvREpidmgwazF5bWpaYVBrMDViVWFZMTRqc3RZOEsranExaVNWVGlJY0hZc3ljalZBSk9GN0Z2TnZkUGh2ZnJMY3cwZFdEMlppNm5yQ0JmdVF3anB2YlM5QncrenV3amsvK1VEdUJsM1BzS21RTFQxTTdrQklpUlNwMW1UWHV5RCt2M2FjNksvRUh6b25wWmdyT2pQdC9wZmlMZjZHdFh4SFcyZ2dnT0hNSUlEZ3pDQ0F1eWdBd0lCQWdJQkFEQU5CZ2txaGtpRzl3MEJBUVVGQURDQmpqRUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdUQWtOQk1SWXdGQVlEVlFRSEV3MU5iM1Z1ZEdGcGJpQldhV1YzTVJRd0VnWURWUVFLRXd0UVlYbFFZV3dnU1c1akxqRVRNQkVHQTFVRUN4UUtiR2wyWlY5alpYSjBjekVSTUE4R0ExVUVBeFFJYkdsMlpWOWhjR2t4SERBYUJna3Foa2lHOXcwQkNRRVdEWEpsUUhCaGVYQmhiQzVqYjIwd0hoY05NRFF3TWpFek1UQXhNekUxV2hjTk16VXdNakV6TVRBeE16RTFXakNCampFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ1RBa05CTVJZd0ZBWURWUVFIRXcxTmIzVnVkR0ZwYmlCV2FXVjNNUlF3RWdZRFZRUUtFd3RRWVhsUVlXd2dTVzVqTGpFVE1CRUdBMVVFQ3hRS2JHbDJaVjlqWlhKMGN6RVJNQThHQTFVRUF4UUliR2wyWlY5aGNHa3hIREFhQmdrcWhraUc5dzBCQ1FFV0RYSmxRSEJoZVhCaGJDNWpiMjB3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQU1GSFR0MzhSTXhMWEp5TzJTbVMrTmRsNzJUN29LSjR1NHV3KzZhd250QUxXaDAzUGV3bUlKdXpiQUxTY3NUUzRzWm9TMWZLY2lCR29oMTFnSWZIenlsdmtkTmUvaEpsNjYvUkdxcmo1ckZiMDhzQUFCTlR6RFRpcXFOcEplQnNZcy9jMmFpR296cHRYMlJsbkJrdEgrU1VOcEFhalc3MjROdjJXdmhpZjZzRkFnTUJBQUdqZ2U0d2dlc3dIUVlEVlIwT0JCWUVGSmFmZkx2R2J4ZTlXVDlTMXdvYjdCRFdaSlJyTUlHN0JnTlZIU01FZ2JNd2diQ0FGSmFmZkx2R2J4ZTlXVDlTMXdvYjdCRFdaSlJyb1lHVXBJR1JNSUdPTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNCTUNRMEV4RmpBVUJnTlZCQWNURFUxdmRXNTBZV2x1SUZacFpYY3hGREFTQmdOVkJBb1RDMUJoZVZCaGJDQkpibU11TVJNd0VRWURWUVFMRkFwc2FYWmxYMk5sY25Sek1SRXdEd1lEVlFRREZBaHNhWFpsWDJGd2FURWNNQm9HQ1NxR1NJYjNEUUVKQVJZTmNtVkFjR0Y1Y0dGc0xtTnZiWUlCQURBTUJnTlZIUk1FQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0JBSUZmT2xhYWdGcmw3MStqcTZPS2lkYldGU0UrUTRGcVJPdmRnSU9OdGgrOGtTSy8vWS80aWh1RTRZbXZ6bjVjZUUzUy9pQlNRUU1qeXZiK3MyVFdiUVlEd2NwMTI5T1BJYkQ5ZXBkcjR0Sk9VTmlTb2p3N0JId1lSaVBoNThTMXhHbEZnSEZYd3JFQmIzZGdOYk1VYSt1NHFlY3RzTUFYcFZIbkQ5d0l5Zm1ITVlJQm1qQ0NBWllDQVFFd2daUXdnWTR4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSUV3SkRRVEVXTUJRR0ExVUVCeE1OVFc5MWJuUmhhVzRnVm1sbGR6RVVNQklHQTFVRUNoTUxVR0Y1VUdGc0lFbHVZeTR4RXpBUkJnTlZCQXNVQ214cGRtVmZZMlZ5ZEhNeEVUQVBCZ05WQkFNVUNHeHBkbVZmWVhCcE1Sd3dHZ1lKS29aSWh2Y05BUWtCRmcxeVpVQndZWGx3WVd3dVkyOXRBZ0VBTUFrR0JTc09Bd0lhQlFDZ1hUQVlCZ2txaGtpRzl3MEJDUU14Q3dZSktvWklodmNOQVFjQk1Cd0dDU3FHU0liM0RRRUpCVEVQRncweE1URXdNakl4TVRJd016UmFNQ01HQ1NxR1NJYjNEUUVKQkRFV0JCUmxGN3ZWWDVMWDJYNUl0WTdjbXdBL1JaVEF0VEFOQmdrcWhraUc5dzBCQVFFRkFBU0JnSXJ5WWVrSGhTcitmV0hlbVUvWDZzWXFmZEJ1WTQ5ZDcra0NJcG1kYnRLUlpTK3pDLzgxV2h6OVBMaGh1TmxXU3J4U2N5bVFleCtWbkZnU2dmckdQMTc0Tnp3S0lzOHJkS1l5SHBDaE5abFZQN3BKZUFyYnR1bmRVaXN2cnBjOHdQeGxyak5DTXhSRS9yTlhIZVBtR3V1S2J2UmppM2owbklXZmtGNnVCemNPLS0tLS1FTkQgUEtDUzctLS0tLQoiPgo8aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsb2JqZWN0cy5jb20vZW5fVVMvaS9idG4vYnRuX2RvbmF0ZUNDX0xHLmdpZiIgYm9yZGVyPSIwIiBuYW1lPSJzdWJtaXQiIGFsdD0iUGF5UGFsIC0gVGhlIHNhZmVyLCBlYXNpZXIgd2F5IHRvIHBheSBvbmxpbmUhIj4KPGltZyBhbHQ9IiIgYm9yZGVyPSIwIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbG9iamVjdHMuY29tL25sX05ML2kvc2NyL3BpeGVsLmdpZiIgd2lkdGg9IjEiIGhlaWdodD0iMSI+CjwvZm9ybT48YnIvPjxici8+Cgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgoKPGJyIC8+CjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+VXBVdGlscyA9Jmd0OyAwLjAuNDwvbGk+PC91bD48aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb249IiIgLSAKPGJyIC8+Cjxjb2RlPntVcENvdXBvbiBhY3Rpb249J3Nob3dfcmVnaXN0ZXInfTwvY29kZT4gLSBTaG93IHRoZSByZWdpc3RyYXRpb24gcGFnZS4gPGJyIC8+Cjxjb2RlPntVcENvdXBvbiBhY3Rpb249J3Nob3dfcHJpemUnfTwvY29kZT4gLSBTaG93IHRoZSBwcml6ZSBwYWdlLiA8YnIgLz4KPGNvZGU+e1VwQ291cG9uIGFjdGlvbj0nc2hvd193aW5uZXInfTwvY29kZT4gLSBTaG93IHRoZSB3aW5uZXIgcGFnZS4gPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBJZiBubyBhY3Rpb24gaXMgc3BlY2lmaWVkLCBhIHdhcm5pbmcgd2lsbCBiZSBzaG93bi4gPGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBGb3IgdGhlICdzaG93X3JlZ2lzdGVyJyBhY3Rpb24gaXQncyBwb3NzaWJsZSB0byBjaGVjayBmaWVsZCB2YWx1ZXMgdmlhIEphdmFTY3JpcHQuIFRvZG8gc28gYmUgc3VyZSB0byBsb2FkIGpxdWVyeS52YWxpZGF0ZS5qcyB5b3UgY2FuIGZpbmQgdGhpcyBmaWxlIGludG8gdGhlIG1vZHVsZXMvVXBDb3Vwb24vanMgZm9sZGVyLjxiciAvPjxiciAvPgoKPGI+KiBCZWZvcmUgdGhlIGNvdXBvbiBhY3Rpb24gdGFrZXMgcGxhY2UgdGhlIHVwY291cG9uX2NvZGUgZGF0YWJhc2UgbXVzdCBiZSBmaWxsZWQgd2l0aCBjb2Rlcy4gVGhlIHdlYmRldmVsb3BlciBzaG91bGQgd3JpdGUgYSBxdWVyeSB0byBzZXQgY291cG9uX3ByaXplX2lkIHRvICcwJyBhbmQgY291cG9uX2NvZGUgdG8gYSAxNiBkaWdpdCBjb2RlLiBGb3IgZXhhbXBsZTogSU5TRVJUIElOVE8gY21zX21vZHVsZV91cGNvdXBvbl9jb2RlIFZBTFVFUyAoJycsICcwJywgJycsICcwMDAwMDAwMDAwMDAwMDAwJywgJycpPC9iPjxiciAvPgoKPGJyIC8+CjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdGVtcGxhdGU9IiIgLSA8YnIgLz4KPGNvZGU+e1VwQ291cG9uIGFjdGlvbj0nc2hvd19yZWdpc3RlcicgdGVtcGxhdGU9J25hbWVfb2ZfcmVnaXN0ZXJfdGVtcGxhdGUnfTwvY29kZT4gPGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBJZiBubyB0ZW1wbGF0ZSBpcyBzcGVjaWZpZWQsIG9yIHRoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZSBpcyB1bmtub3duLCB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSB3aWxsIGJlIHVzZWQuIDwvYnIgPjwvYnIgPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gSWYgbm8gc3RhbmRhcmQgdGVtcGxhdGUgY2FuIGJlIGZvdW5kLCB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSAoZmFjdG9yeSBzZXR0aW5ncykgc2hhbGwgYmUgdXNlZC4gPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBUaGUgYXZhaWxhYmxlIHRlbXBsYXRlcyBjYW4gYmUgZm91bmQgdW5kZXIgdGhlICdUZW1wbGF0ZXMnICB0YWIuIDxiciAvPgoKPGJyIC8+PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBjb3Vwb25fYWN0aW9uX2lkPSIiIC0gPGJyIC8+Cjxjb2RlPntVcENvdXBvbiBhY3Rpb249J3Nob3dfcHJpemUnIGNvdXBvbl9hY3Rpb25faWQ9JzEnfTwvY29kZT4gLSBTaG93IGFsbCBwcml6ZXMgYmVsb25naW5nIHRvIGNvdXBvbl9hY3Rpb25faWQgJzEnLiA8YnIgLz48YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IFRoZSAnY291cG9uX2FjdGlvbl9pZCcgY2FuIGJlIGZvdW5kIHVuZGVyICdDb3Vwb24gQWN0aW9ucycgdGFiLiBJdCBpcyBzaG93biBpbiBmcm9udCBvZiB0aGUgdGl0bGUgb2YgZWFjaCBzcGVjaWZpYyBhY3Rpb24uICdDb3Vwb24gQWN0aW9ucycgd2hpY2ggYXJlIHNldCB0byBpbmFjdGl2ZSBhcmUgbm90IHNob3duLgoKCjxiciAvPjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBBcm5vdWQgdmFuIFN1c3RlcmVuICZsdDthcm5vdWRAdXBzZXJ2aWNlLm5sJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDAuMC44PGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PGJyLz4KCjxiPjAuMC44IHZlcnNpb248L2I+IC0gMjIgb2t0IDIwMTEgPGJyIC8+Cgo8dWw+CjxsaT5NYWtlIGRlcGVuZGVuZCBvbiBVcFV0aWxzJz0+JzAuMC40PC9saT4KPGxpPkFkZCBQYXlQYWwgZG9uYXRpb24gYnV0dG9uIHRvIGRvY3VtZW50YXRpb248L2xpPgo8bGk+Q01TTVMgMS4xMCBjb21wYXRpYmxlPC9saT4KPC91bD4KCjxiPjAuMC43IHZlcnNpb248L2I+IC0gMTIgYXVnIDIwMTEgPGJyIC8+Cgo8dWw+CjxsaT5BZGQgYXV0b2xvYWRlcjwvbGk+CjxsaT5QbGFjZSBjb25zdGFudHMgb3V0c2lkZSBtb2R1bGUgY2xhc3M8L2xpPgo8bGk+TWFrZSBkZXBlbmRlbmQgb24gVXBVdGlscyc9PicwLjAuMzwvbGk+CjwvdWw+CgoKPGI+MC4wLjYgdmVyc2lvbjwvYj4gLSAyMCBqdW4gMjAxMSA8YnIgLz4KCjx1bD4KPGxpPk1ha2UgY291cG9uX2FjdGlvbl9pZCBvcHRpb25hbCBmb3Igc2hvd19wcml6ZSBhY3Rpb248L2xpPgo8bGk+VHdlYWsgdXNlciBub3RpZmljYXRpb24gZm9yIHBlcmlvZCBhZGQsIGVkaXQsIGRlbGV0ZTwvbGk+CjxsaT5SZW1vdmUgYW5jaG9yIGZyb20gZmFjdG9yeSB0ZW1wbGF0ZSBwcml6ZTwvbGk+CjxsaT5Nb2R1bGUgYWRkZWQgdG8gdHJhbnNsYXRpb24gY2VudGVyPC9saT4KPGxpPkFkZGVkIGR1dGNoIHRyYW5zbGF0aW9uIGxhbmcvZXh0L25sX05MLnBocDwvbGk+CjwvdWw+Cgo8Yj4wLjAuNSB2ZXJzaW9uIGluaXRpYWwgdmVyc2lvbjwvYj4gLSA5IGp1biAyMDExCgoKCgoKCjxiciAvPg==]]></about>
	<description><![CDATA[A module to setup an online lottery, coupon code registration system.]]></description>
	<requires>
	  <requiredname>UpUtils</requiredname>
	  <requiredversion>0.0.4</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.action_add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uYWN0aW9uX2FkZF9lZGl0LnBocCAxIDIwMTEtMDYtMTIgMTU6MjU6MjdaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENoZWNrUGVybWlzc2lvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgnYWN0aW9uJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGFwcGx5IGFuZCBjYW5jZWwKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGFwcGx5X2J1dHRvbl9jbGlja2VkID0gJzAnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkgewogICAgaWYgKCRwYXJhbXNbJ3N1Ym1pdCddID09ICR0aGlzLT5MYW5nKCdhcHBseScpKSB7CiAgICAgICAgJGFwcGx5X2J1dHRvbl9jbGlja2VkID0gJzEnOwogICAgfQp9CgppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7CiAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdhY3Rpb24nKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT2JqZWN0CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRhY3Rpb25kYiA9IG5ldyBjb3Vwb25fYWN0aW9uREFPKCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgZmV0Y2ggcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwa2V5ID0gJyc7CiRtb2R1cyA9ICdhZGQnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3BrZXknXSkpIHsKICAgICRwa2V5ID0gJHBhcmFtc1sncGtleSddOwogICAgJG1vZHVzID0gJ2VkaXQnOwogICAgCiAgICAkcm93cyA9ICRhY3Rpb25kYi0+ZmV0Y2goJHBrZXkpOwogICAgCiAgICBmb3JlYWNoICgkcm93c1swXSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgIAogICAgICAgIGlmIChwcmVnX21hdGNoKCIvZGF0ZS9pIiwgJGtleSkpIHsKICAgICAgICAgICAgJHska2V5fSA9ICRhY3Rpb25kYi0+dW5peF90aW1lX3N0YW1wKCR2YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHska2V5fSA9ICR2YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAgICAgCn0gZWxzZSB7CgogICAgJG1vZHVzID0gJ2FkZCc7CiAgICAKICAgICR0aXRsZSA9ICcnOwogICAgJGFsaWFzID0gJyc7CiAgICAkZGVzY3JpcHRpb24gPSAnJzsKICAgICRzdGFydF9kYXRlID0gdGltZSgpOwogICAgJGVuZF9kYXRlID0gdGltZSgpOwogICAgJHN0YXR1cyA9ICcxJzsKICAgIAp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ3RpdGxlJ10pICkgeyAgICAKICAgICR0aXRsZSA9IHRyaW0oJHBhcmFtc1sndGl0bGUnXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1snYWxpYXMnXSkgKSB7CiAgICAkYWxpYXMgPSBVcEhlbHBlcjo6YWxwaGFfbnVtZXJpY19sb3dlcigkcGFyYW1zWydhbGlhcyddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydkZXNjcmlwdGlvbiddKSApIHsKICAgICRkZXNjcmlwdGlvbiA9IHRyaW0oJHBhcmFtc1snZGVzY3JpcHRpb24nXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1snc3RhcnRfZGF0ZV9Nb250aCddKSApIHsKICAgICRzdGFydF9kYXRlID0gbWt0aW1lKCRwYXJhbXNbJ3N0YXJ0X2RhdGVfSG91ciddLCAkcGFyYW1zWydzdGFydF9kYXRlX01pbnV0ZSddLCAkcGFyYW1zWydzdGFydF9kYXRlX1NlY29uZCddLCAkcGFyYW1zWydzdGFydF9kYXRlX01vbnRoJ10sICRwYXJhbXNbJ3N0YXJ0X2RhdGVfRGF5J10sICRwYXJhbXNbJ3N0YXJ0X2RhdGVfWWVhciddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydlbmRfZGF0ZV9Nb250aCddKSApIHsKICAgICRlbmRfZGF0ZSA9IG1rdGltZSgkcGFyYW1zWydlbmRfZGF0ZV9Ib3VyJ10sICRwYXJhbXNbJ2VuZF9kYXRlX01pbnV0ZSddLCAkcGFyYW1zWydlbmRfZGF0ZV9TZWNvbmQnXSwgJHBhcmFtc1snZW5kX2RhdGVfTW9udGgnXSwgJHBhcmFtc1snZW5kX2RhdGVfRGF5J10sICRwYXJhbXNbJ2VuZF9kYXRlX1llYXInXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1snc3RhdHVzJ10pICkgewogICAgJHN0YXR1cyA9IHRyaW0oJHBhcmFtc1snc3RhdHVzJ10pOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2hlY2sgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICkgewogICAgJGVycm9yID0gRkFMU0U7CiAgICAKICAgIGlmICggZW1wdHkoJHRpdGxlKSApIHsKICAgICAgICAkZXJyb3IgLj0gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25vX3NfZ2l2ZW4nLCBhcnJheSgkdGhpcy0+TGFuZygndGl0bGUnKSkpKTsKICAgIH0KCiAgICBpZiAoIGVtcHR5KCRhbGlhcykgKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdub19zX2dpdmVuJywgYXJyYXkoJHRoaXMtPkxhbmcoJ2FsaWFzJykpKSk7CiAgICB9IAogICAgCiAgICBpZiAoIGVtcHR5KCRkZXNjcmlwdGlvbikgKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdub19zX2dpdmVuJywgYXJyYXkoJHRoaXMtPkxhbmcoJ2Rlc2NyaXB0aW9uJykpKSk7CiAgICB9IAogICAgCiAgICBpZiAoJHN0YXJ0X2RhdGUgPj0gJGVuZF9kYXRlKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkZGF0ZXMnKSk7ICAgICAgCiAgICB9CiAgICAKICAgIGlmICggJGVycm9yID09IEZBTFNFICkgewogICAgICAgICRyb3dzID0gJGFjdGlvbmRiLT5mZXRjaCgkYWxpYXMsICdhbGlhcycpOwogICAgICAgIAogICAgICAgIGlmIChpc3NldCgkcm93c1swXSkpIHsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICgkcm93c1swXVsnY291cG9uX2FjdGlvbl9pZCddICE9ICRwa2V5KSB7IAogICAgICAgICAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdzX3NfYWxyZWFkeWdpdmVuJywgYXJyYXkoJHRoaXMtPkxhbmcoJ2FsaWFzJyksICRyb3dzWzBdWydhbGlhcyddKSkpOwogICAgICAgICAgICAgICAgJGFsaWFzID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIGlmICggJGVycm9yICE9PSBGQUxTRSApIHsKICAgICAgICBlY2hvICRlcnJvcjsKICAgIH0gZWxzZSB7CgogICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+ICR0aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzJyA9PiAkYWxpYXMsCiAgICAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbicgPT4gJGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAnc3RhcnRfZGF0ZScgPT4gJGFjdGlvbmRiLT5kYl90aW1lX3N0YW1wKCRzdGFydF9kYXRlKSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2VuZF9kYXRlJyA9PiAkYWN0aW9uZGItPmRiX3RpbWVfc3RhbXAoJGVuZF9kYXRlKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnID0+ICRzdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICAkZGJfYXJyYXlbJ2NvdXBvbl9hY3Rpb25faWQnXSA9ICRwa2V5OyAKICAgICAgICAgICAgJGFjdGlvbmRiLT51cGRhdGUoJGRiX2FycmF5KTsgICAgICAgICAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY291cG9uX2FjdGlvbl9pZCA9ICRhY3Rpb25kYi0+aW5zZXJ0KCRkYl9hcnJheSk7IAogICAgICAgICAgICAkZGJfYXJyYXlbJ2NvdXBvbl9hY3Rpb25faWQnXSA9ICRjb3Vwb25fYWN0aW9uX2lkOwogICAgICAgIH0KICAgICAgICAgCiAgICB9CiAgICAKICAgIGlmICggISRlcnJvciApIHsKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICBAJHRoaXMtPlNlbmRFdmVudCgnVXBDb3Vwb25BY3Rpb25FZGl0ZWQnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGlvbl9tZXNzYWdlJz0+ICdzX2VkaXRlZCxhY3Rpb25fcycsICdhY3RpdmVfdGFiJyA9PiAnYWN0aW9uJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgQCR0aGlzLT5TZW5kRXZlbnQoJ1VwQ291cG9uQWN0aW9uQWRkZWQnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGlvbl9tZXNzYWdlJz0+ICdzX2FkZGVkLGFjdGlvbl9zJywgJ2FjdGl2ZV90YWInID0+ICdhY3Rpb24nKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCRhcHBseV9idXR0b25fY2xpY2tlZCA9PSAnMScpIHsKICAgICAgICAgICAgJHBhcmFtc1sncGtleSddID0gJGRiX2FycmF5Wydjb3Vwb25fYWN0aW9uX2lkJ107CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdhY3Rpb25fYWRkX2VkaXQnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAKfSAvLyBzdWJtaXQgCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGJ1aWxkIGFuZCBwcm9jY2VzcyB0ZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWN0aW9uX2FkZF9lZGl0JywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RpdGxlJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd0aXRsZScsICR0aXRsZSwgMjAsIDEwMCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhbGlhc190ZXh0JywgJHRoaXMtPkxhbmcoJ2FsaWFzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FsaWFzX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhbGlhcycsICRhbGlhcywgMjAsIDQ1KSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Rlc2NyaXB0aW9uX3RleHQnLCAkdGhpcy0+TGFuZygnZGVzY3JpcHRpb24nKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZGVzY3JpcHRpb25faW5wdXQnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEodHJ1ZSwgJGlkLCAkZGVzY3JpcHRpb24sICdkZXNjcmlwdGlvbicpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZGF0ZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXJ0X2RhdGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZGF0ZV9wcmVmaXgnLCAkaWQuJ3N0YXJ0X2RhdGVfJyk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZGF0ZScsICRzdGFydF9kYXRlKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2RhdGVfdGV4dCcsICR0aGlzLT5MYW5nKCdlbmRfZGF0ZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfZGF0ZV9wcmVmaXgnLCAkaWQuJ2VuZF9kYXRlXycpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF9kYXRlJywgJGVuZF9kYXRlKTsKCiRzdGF0dXNkcm9wZG93biA9IGFycmF5KCk7CiRzdGF0dXNkcm9wZG93blskdGhpcy0+TGFuZygnaW5hY3RpdmUnKV0gPSAnMCc7CiRzdGF0dXNkcm9wZG93blskdGhpcy0+TGFuZygnYWN0aXZlJyldID0gJzEnOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGF0dXNfdGV4dCcsICR0aGlzLT5MYW5nKCdzdGF0dXMnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhdHVzX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnc3RhdHVzJywgJHN0YXR1c2Ryb3Bkb3duLCAtMSwgJHN0YXR1cykpOwoKaWYgKCRtb2R1cyA9PSAnZWRpdCcpIHsgICAgCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdwa2V5JywgJHBrZXkpKTsKfSBlbHNlIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywgJycpOwp9ICAgIAoKaWYgKCRtb2R1cyA9PSAnZWRpdCcpIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdlZGl0JykpKTsKfSBlbHNlIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdhZGQnKSkpOwp9ICAgIAogICAgCiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2NhbmNlbCcsICR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhcHBseScsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnYXBwbHknKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FjdGlvbl9hZGRfZWRpdC50cGwnKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.action_change_status.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uYWN0aW9uX2NoYW5nZV9zdGF0dXMucGhwIDEgMjAxMS0wNi0xMiAxNToyNToyN1ogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcsIGFycmF5KCdhY3Rpb24nKSkpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwa2V5ID0gJyc7CgppZiAoaXNzZXQoJHBhcmFtc1sncGtleSddKSkgewogICAgJHBrZXkgPSAkcGFyYW1zWydwa2V5J107Cn0KCiRzdGF0dXMgPSAkcGFyYW1zWydzdGF0dXMnXSA9PSAnMScgPyAnMScgOiAnMCc7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokZGJfYXJyYXkgPSBhcnJheSgnY291cG9uX2FjdGlvbl9pZCcgPT4gJHBrZXksICdzdGF0dXMnID0+ICRzdGF0dXMpOwoKJGFjdGlvbmRiID0gbmV3IGNvdXBvbl9hY3Rpb25EQU8oKTsKJGFjdGlvbmRiLT51cGRhdGUoJGRiX2FycmF5KTsKCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvbkFjdGlvbkVkaXRlZCcsICRkYl9hcnJheSk7CiRwYXJhbXMgPSBhcnJheSgnYWN0aW9uX21lc3NhZ2UnPT4gJ3NfY2hhbmdlZF9zdGF0dXMsYWN0aW9uX3MnLCAnYWN0aXZlX3RhYicgPT4gJ2FjdGlvbicpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.action_delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uYWN0aW9uX2RlbGV0ZS5waHAgMSAyMDExLTA2LTEyIDE1OjI1OjI3WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMSBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDaGVja1Blcm1pc3Npb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ2FjdGlvbicpKSk7CiAgICByZXR1cm47ICAKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokcGtleSA9ICcnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3BrZXknXSkpIHsKICAgICRwa2V5ID0gJHBhcmFtc1sncGtleSddOwp9IGVsc2UgewogICAgJHBhcmFtc1snZXJyb3InXSA9ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5sYW5nKCdub3RfYWxsb3dlZCcpKTsKCSRwYXJhbXNbJ2FjdGl2ZV90YWInXSA9ICdhY3Rpb24nOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGFjdGlvbmRiID0gbmV3IGNvdXBvbl9hY3Rpb25EQU8oKTsKCi8vIGZldGNoIGluZm9ybWF0aW9uIGFib3V0IGFjdGlvbiAodG8gYmUgdXNlZCBpbiBTZW5kRXZlbnQpCiRhY3Rpb25fZGF0YSA9ICRhY3Rpb25kYi0+ZmV0Y2goJHBrZXkpOwoKLy8gZGVsZXRlIGFjdGlvbgokYWN0aW9uZGItPmRlbGV0ZSgkcGtleSk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGNhbGwgZXZlbnQgLyByZWRpcmVjdAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGV2ZW50X2FycmF5ID0gYXJyYXkoKTsKCmZvcmVhY2ggKCRhY3Rpb25fZGF0YVswXSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgJGV2ZW50X2FycmF5WyRrZXldID0gJHZhbHVlOyAgICAKfQoKQCR0aGlzLT5TZW5kRXZlbnQoJ1VwQ291cG9uQWN0aW9uRGVsZXRlZCcsICRldmVudF9hcnJheSk7CiRwYXJhbXMgPSBhcnJheSgnYWN0aW9uX21lc3NhZ2UnID0+ICdzX2RlbGV0ZWQsYWN0aW9uX3MnLCAnYWN0aXZlX3RhYicgPT4gJ2FjdGlvbicpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uZGVmYXVsdC5waHAgMSAyMDExLTA2LTEyIDE1OjI1OjI3WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMSBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCmVjaG8gJHRoaXMtPkxhbmcoJ25vdF9hbGxvd2VkJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uZGVmYXVsdGFkbWluLnBocCAxIDIwMTEtMDYtMTIgMTU6MjU6MjdaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVGFiSGVhZGVycwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CgppZiAoRkFMU0UgPT0gZW1wdHkoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgewogICAgJHRhYiA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsKfSBlbHNlIHsKICAgICR0YWIgPSAnJzsKfQoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSApIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignYWN0aW9uJywkdGhpcy0+TGFuZygnYWN0aW9uX3AnKSwgKCdhY3Rpb24nID09ICR0YWIpID8gdHJ1ZTpmYWxzZSk7Cn0KCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykgKSB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3BlcmlvZCcsJHRoaXMtPkxhbmcoJ3BlcmlvZF9wJyksICgncGVyaW9kJyA9PSAkdGFiKSA/IHRydWU6ZmFsc2UpOwp9CgppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpICkgewogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcml6ZScsJHRoaXMtPkxhbmcoJ3ByaXplX3AnKSwgKCdwcml6ZScgPT0gJHRhYikgPyB0cnVlOmZhbHNlKTsKfQoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSApIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignd2lubmVyJywkdGhpcy0+TGFuZygnd2lubmVyX3AnKSwgKCd3aW5uZXInID09ICR0YWIpID8gdHJ1ZTpmYWxzZSk7Cn0KCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykgKSB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3N0YXRpc3RpY3MnLCR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX3AnKSwgKCdzdGF0aXN0aWNzJyA9PSAkdGFiKSA/IHRydWU6ZmFsc2UpOwp9CgppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigndGVtcGxhdGVzJywkdGhpcy0+TGFuZygndGVtcGxhdGVzX3AnKSwgKCd0ZW1wbGF0ZXMnID09ICR0YWIpPyB0cnVlOmZhbHNlKTsKfQoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgewogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcmVmZXJlbmNlcycsJHRoaXMtPkxhbmcoJ3ByZWZlcmVuY2VzX3AnKSwgKCdwcmVmZXJlbmNlcycgPT0gJHRhYik/IHRydWU6ZmFsc2UpOwp9CgplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIG9iamVjdHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRhZG1pbnRoZW1lID0gY21zbXMoKS0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ107CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFRhYkNvbnRlbnQKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSApIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdhY3Rpb24nLCAkcGFyYW1zKTsKICAgIGluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl90YWJfYWN0aW9uLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykgKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigncGVyaW9kJywgJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fdGFiX3BlcmlvZC5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpICkgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3ByaXplJywgJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fdGFiX3ByaXplLnBocCcpOyAgICAKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpICkgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3dpbm5lcicsICRwYXJhbXMpOwogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX3RhYl93aW5uZXIucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSApIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdzdGF0aXN0aWNzJywgJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fdGFiX3N0YXRpc3RpY3MucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigndGVtcGxhdGVzJywgJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fdGFiX3RlbXBsYXRlcy5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9ICAgIAoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3ByZWZlcmVuY2VzJywgJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fdGFiX3ByZWZlcmVuY2VzLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0gICAgCiAgICAKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.period_add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucGVyaW9kX2FkZF9lZGl0LnBocCA3IDIwMTEtMDYtMjAgMTg6NTk6NTRaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENoZWNrUGVybWlzc2lvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgncGVyaW9kJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGFwcGx5IGFuZCBjYW5jZWwKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGFwcGx5X2J1dHRvbl9jbGlja2VkID0gJzAnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkgewogICAgaWYgKCRwYXJhbXNbJ3N1Ym1pdCddID09ICR0aGlzLT5MYW5nKCdhcHBseScpKSB7CiAgICAgICAgJGFwcGx5X2J1dHRvbl9jbGlja2VkID0gJzEnOwogICAgfQp9CgppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7CiAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdwZXJpb2QnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT2JqZWN0CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRhY3Rpb25kYiA9IG5ldyBjb3Vwb25fYWN0aW9uREFPKCk7CiRwZXJpb2RkYiA9IG5ldyBjb3Vwb25fcGVyaW9kREFPKCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgZmV0Y2ggcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwa2V5ID0gJyc7CiRtb2R1cyA9ICdhZGQnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3BrZXknXSkpIHsKICAgICRwa2V5ID0gJHBhcmFtc1sncGtleSddOwogICAgJG1vZHVzID0gJ2VkaXQnOwogICAgCiAgICAkcm93cyA9ICRwZXJpb2RkYi0+ZmV0Y2goJHBrZXkpOwogICAgCiAgICBmb3JlYWNoICgkcm93c1swXSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgIAogICAgICAgIGlmIChwcmVnX21hdGNoKCIvZGF0ZS9pIiwgJGtleSkpIHsKICAgICAgICAgICAgJHska2V5fSA9ICRwZXJpb2RkYi0+dW5peF90aW1lX3N0YW1wKCR2YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHska2V5fSA9ICR2YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAgICAgCn0gZWxzZSB7CgogICAgJG1vZHVzID0gJ2FkZCc7CgogICAgJGNvdXBvbl9hY3Rpb25faWQgPSAnJzsgICAgCiAgICAkdGl0bGUgPSAnJzsKICAgICRzdGFydF9kYXRlID0gdGltZSgpOwogICAgJGVuZF9kYXRlID0gdGltZSgpOwogICAgJGlzX2ZpbmFsID0gJzAnOwogICAgJHN0YXR1cyA9ICcxJzsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fYWN0aW9uX2lkJ10pICkgewogICAgJGNvdXBvbl9hY3Rpb25faWQgPSAkcGFyYW1zWydjb3Vwb25fYWN0aW9uX2lkJ107Cn0KCmlmICggaXNzZXQoJHBhcmFtc1sndGl0bGUnXSkgKSB7ICAgIAogICAgJHRpdGxlID0gdHJpbSgkcGFyYW1zWyd0aXRsZSddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydzdGFydF9kYXRlX01vbnRoJ10pICkgewogICAgJHN0YXJ0X2RhdGUgPSBta3RpbWUoJHBhcmFtc1snc3RhcnRfZGF0ZV9Ib3VyJ10sICRwYXJhbXNbJ3N0YXJ0X2RhdGVfTWludXRlJ10sICRwYXJhbXNbJ3N0YXJ0X2RhdGVfU2Vjb25kJ10sICRwYXJhbXNbJ3N0YXJ0X2RhdGVfTW9udGgnXSwgJHBhcmFtc1snc3RhcnRfZGF0ZV9EYXknXSwgJHBhcmFtc1snc3RhcnRfZGF0ZV9ZZWFyJ10pOwp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ2VuZF9kYXRlX01vbnRoJ10pICkgewogICAgJGVuZF9kYXRlID0gbWt0aW1lKCRwYXJhbXNbJ2VuZF9kYXRlX0hvdXInXSwgJHBhcmFtc1snZW5kX2RhdGVfTWludXRlJ10sICRwYXJhbXNbJ2VuZF9kYXRlX1NlY29uZCddLCAkcGFyYW1zWydlbmRfZGF0ZV9Nb250aCddLCAkcGFyYW1zWydlbmRfZGF0ZV9EYXknXSwgJHBhcmFtc1snZW5kX2RhdGVfWWVhciddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydpc19maW5hbCddKSApIHsKICAgICRpc19maW5hbCA9IHRyaW0oJHBhcmFtc1snaXNfZmluYWwnXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1snc3RhdHVzJ10pICkgewogICAgJHN0YXR1cyA9IHRyaW0oJHBhcmFtc1snc3RhdHVzJ10pOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2hlY2sgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICkgewogICAgJGVycm9yID0gRkFMU0U7CiAgICAKICAgIGlmICggZW1wdHkoJGNvdXBvbl9hY3Rpb25faWQpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCdhY3Rpb24nKSkpKTsKICAgIH0KICAgIAogICAgaWYgKCBlbXB0eSgkdGl0bGUpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCd0aXRsZScpKSkpOwogICAgfQogICAgCiAgICBpZiAoJHN0YXJ0X2RhdGUgPj0gJGVuZF9kYXRlKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkZGF0ZXMnKSk7ICAgICAgCiAgICB9CiAgICAKICAgIGlmICggJGVycm9yID09IEZBTFNFICkgewogICAgCiAgICAgICAgJGFjdGlvbl9kYXRhICAgICAgICA9ICRhY3Rpb25kYi0+ZmV0Y2goJGNvdXBvbl9hY3Rpb25faWQpOwogICAgICAgICRhY3Rpb25fc3RhcnRfZGF0ZSAgPSAkYWN0aW9uZGItPnVuaXhfdGltZV9zdGFtcCgkYWN0aW9uX2RhdGFbJzAnXVsnc3RhcnRfZGF0ZSddKTsKICAgICAgICAkYWN0aW9uX2VuZF9kYXRlICAgID0gJGFjdGlvbmRiLT51bml4X3RpbWVfc3RhbXAoJGFjdGlvbl9kYXRhWycwJ11bJ2VuZF9kYXRlJ10pOwogICAgCiAgICAgICAgaWYgKCRzdGFydF9kYXRlIDwgJGFjdGlvbl9zdGFydF9kYXRlIHx8ICRlbmRfZGF0ZSA+ICRhY3Rpb25fZW5kX2RhdGUpIHsKICAgICAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdzX3NfY291cG9ucGVyaW9kX21pc21hdGNoJywgYXJyYXkoJGFjdGlvbl9kYXRhWycwJ11bJ3N0YXJ0X2RhdGUnXSwgJGFjdGlvbl9kYXRhWycwJ11bJ2VuZF9kYXRlJ10pKSk7ICAgCiAgICAgICAgfQogICAgCiAgICB9CiAgICAKICAgIGlmICggJGVycm9yICE9PSBGQUxTRSApIHsKICAgICAgICBlY2hvICRlcnJvcjsKICAgIH0gZWxzZSB7CgogICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAnY291cG9uX2FjdGlvbl9pZCcgPT4gJGNvdXBvbl9hY3Rpb25faWQsCiAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZScgPT4gJHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAnc3RhcnRfZGF0ZScgPT4gJHBlcmlvZGRiLT5kYl90aW1lX3N0YW1wKCRzdGFydF9kYXRlKSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2VuZF9kYXRlJyA9PiAkcGVyaW9kZGItPmRiX3RpbWVfc3RhbXAoJGVuZF9kYXRlKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICdpc19maW5hbCcgPT4gJGlzX2ZpbmFsLAogICAgICAgICAgICAgICAgICAgICAgICAnc3RhdHVzJyA9PiAkc3RhdHVzCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgCiAgICAgICAKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICAkZGJfYXJyYXlbJ2NvdXBvbl9wZXJpb2RfaWQnXSA9ICRwa2V5OyAKICAgICAgICAgICAgJHBlcmlvZGRiLT51cGRhdGUoJGRiX2FycmF5KTsgICAgICAgICAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY291cG9uX3BlcmlvZF9pZCA9ICRwZXJpb2RkYi0+aW5zZXJ0KCRkYl9hcnJheSk7IAogICAgICAgICAgICAkZGJfYXJyYXlbJ2NvdXBvbl9wZXJpb2RfaWQnXSA9ICRjb3Vwb25fcGVyaW9kX2lkOwogICAgICAgIH0KICAgICAgICAgCiAgICB9CiAgICAKICAgIGlmICggISRlcnJvciApIHsKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICBAJHRoaXMtPlNlbmRFdmVudCgnVXBDb3Vwb25QZXJpb2RFZGl0ZWQnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoJ3BlcmlvZF9tZXNzYWdlJz0+ICdzX2VkaXRlZCxwZXJpb2RfcycsICdhY3RpdmVfdGFiJyA9PiAncGVyaW9kJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgQCR0aGlzLT5TZW5kRXZlbnQoJ1VwQ291cG9uUGVyaW9kQWRkZWQnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoJ3BlcmlvZF9tZXNzYWdlJz0+ICdzX2FkZGVkLHBlcmlvZF9zJywgJ2FjdGl2ZV90YWInID0+ICdwZXJpb2QnKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCRhcHBseV9idXR0b25fY2xpY2tlZCA9PSAnMScpIHsKICAgICAgICAgICAgJHBhcmFtc1sncGtleSddID0gJGRiX2FycmF5Wydjb3Vwb25fcGVyaW9kX2lkJ107CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdwZXJpb2RfYWRkX2VkaXQnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAKfSAvLyBzdWJtaXQgCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGJ1aWxkIGFuZCBwcm9jY2VzcyB0ZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAncGVyaW9kX2FkZF9lZGl0JywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoKJGFjdGlvbmRyb3Bkb3duID0gYXJyYXkoKTsKJGFjdGlvbmRyb3Bkb3duID0gJGFjdGlvbmRiLT5mZXRjaF9hY3Rpb25kcm9wZG93bigpOwoKaWYgKGVtcHR5KCRhY3Rpb25kcm9wZG93bikpIHsKICAgICRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ2NvdXBvbl9hY3Rpb25fbWlzc2luZycsICdhY3RpdmVfdGFiJyA9PiAnYWN0aW9uJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKfQoKJGFjdGlvbl9pbnB1dCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2NvdXBvbl9hY3Rpb25faWQnLCBhcnJheSgpLCAtMSwgJGNvdXBvbl9hY3Rpb25faWQpOwokYWN0aW9uX2lucHV0ID0gVXBIZWxwZXI6Om1vZGlmeV9pbnB1dF9kcm9wZG93bigkYWN0aW9uX2lucHV0LCAkYWN0aW9uZHJvcGRvd24sICRjb3Vwb25fYWN0aW9uX2lkKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aW9uX3RleHQnLCAkdGhpcy0+TGFuZygnYWN0aW9uJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FjdGlvbl9pbnB1dCcsICRhY3Rpb25faW5wdXQpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RpdGxlJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd0aXRsZScsICR0aXRsZSwgMjAsIDEwMCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlX3RleHQnLCAkdGhpcy0+TGFuZygnc3RhcnRfZGF0ZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlX3ByZWZpeCcsICRpZC4nc3RhcnRfZGF0ZV8nKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlJywgJHN0YXJ0X2RhdGUpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfZGF0ZV90ZXh0JywgJHRoaXMtPkxhbmcoJ2VuZF9kYXRlJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF9kYXRlX3ByZWZpeCcsICRpZC4nZW5kX2RhdGVfJyk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2RhdGUnLCAkZW5kX2RhdGUpOwoKJGlzX2ZpbmFsZHJvcGRvd24gPSBhcnJheSgpOwokaXNfZmluYWxkcm9wZG93blskdGhpcy0+TGFuZygnbm8nKV0gPSAnMCc7CiRpc19maW5hbGRyb3Bkb3duWyR0aGlzLT5MYW5nKCd5ZXMnKV0gPSAnMSc7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lzX2ZpbmFsX3RleHQnLCAkdGhpcy0+TGFuZygnaXNfZmluYWwnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaXNfZmluYWxfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpc19maW5hbCcsICRpc19maW5hbGRyb3Bkb3duLCAtMSwgJGlzX2ZpbmFsKSk7Cgokc3RhdHVzZHJvcGRvd24gPSBhcnJheSgpOwokc3RhdHVzZHJvcGRvd25bJHRoaXMtPkxhbmcoJ2luYWN0aXZlJyldID0gJzAnOwokc3RhdHVzZHJvcGRvd25bJHRoaXMtPkxhbmcoJ2FjdGl2ZScpXSA9ICcxJzsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhdHVzX3RleHQnLCAkdGhpcy0+TGFuZygnc3RhdHVzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXR1c19pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3N0YXR1cycsICRzdGF0dXNkcm9wZG93biwgLTEsICRzdGF0dXMpKTsKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7ICAgIAogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAncGtleScsICRwa2V5KSk7Cn0gZWxzZSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICcnKTsKfSAgICAKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnZWRpdCcpKSk7Cn0gZWxzZSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnYWRkJykpKTsKfSAgICAKICAgIAokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYXBwbHknLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ2FwcGx5JykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwZXJpb2RfYWRkX2VkaXQudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.period_change_status.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucGVyaW9kX2NoYW5nZV9zdGF0dXMucGhwIDEgMjAxMS0wNi0xMiAxNToyNToyN1ogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcsIGFycmF5KCdwZXJpb2QnKSkpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwa2V5ID0gJyc7CgppZiAoaXNzZXQoJHBhcmFtc1sncGtleSddKSkgewogICAgJHBrZXkgPSAkcGFyYW1zWydwa2V5J107Cn0KCiRzdGF0dXMgPSAkcGFyYW1zWydzdGF0dXMnXSA9PSAnMScgPyAnMScgOiAnMCc7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokZGJfYXJyYXkgPSBhcnJheSgnY291cG9uX3BlcmlvZF9pZCcgPT4gJHBrZXksICdzdGF0dXMnID0+ICRzdGF0dXMpOwoKJHBlcmlvZGRiID0gbmV3IGNvdXBvbl9wZXJpb2REQU8oKTsKJHBlcmlvZGRiLT51cGRhdGUoJGRiX2FycmF5KTsKCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblBlcmlvZEVkaXRlZCcsICRkYl9hcnJheSk7CiRwYXJhbXMgPSBhcnJheSgncGVyaW9kX21lc3NhZ2UnPT4gJ3NfY2hhbmdlZF9zdGF0dXMscGVyaW9kX3MnLCAnYWN0aXZlX3RhYicgPT4gJ3BlcmlvZCcpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.period_delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucGVyaW9kX2RlbGV0ZS5waHAgNyAyMDExLTA2LTIwIDE4OjU5OjU0WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMSBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDaGVja1Blcm1pc3Npb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ3BlcmlvZCcpKSk7CiAgICByZXR1cm47ICAKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokcGtleSA9ICcnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3BrZXknXSkpIHsKICAgICRwa2V5ID0gJHBhcmFtc1sncGtleSddOwp9IGVsc2UgewogICAgJHBhcmFtc1snZXJyb3InXSA9ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5sYW5nKCdub3RfYWxsb3dlZCcpKTsKCSRwYXJhbXNbJ2FjdGl2ZV90YWInXSA9ICdwZXJpb2QnOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHBlcmlvZGRiID0gbmV3IGNvdXBvbl9wZXJpb2REQU8oKTsKCi8vIGZldGNoIGluZm9ybWF0aW9uIGFib3V0IHBlcmlvZCAodG8gYmUgdXNlZCBpbiBTZW5kRXZlbnQpCiRwZXJpb2RfZGF0YSA9ICRwZXJpb2RkYi0+ZmV0Y2goJHBrZXkpOwoKLy8gZGVsZXRlIGFjdGlvbgokcGVyaW9kZGItPmRlbGV0ZSgkcGtleSk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGNhbGwgZXZlbnQgLyByZWRpcmVjdAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGV2ZW50X2FycmF5ID0gYXJyYXkoKTsKCmZvcmVhY2ggKCRhY3Rpb25fZGF0YVswXSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgJGV2ZW50X2FycmF5WyRrZXldID0gJHZhbHVlOyAgICAKfQoKQCR0aGlzLT5TZW5kRXZlbnQoJ1VwQ291cG9uUGVyaW9kRGVsZXRlZCcsICRldmVudF9hcnJheSk7CiRwYXJhbXMgPSBhcnJheSgncGVyaW9kX21lc3NhZ2UnID0+ICdzX2RlbGV0ZWQscGVyaW9kX3MnLCAnYWN0aXZlX3RhYicgPT4gJ3BlcmlvZCcpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.preferences_add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucHJlZmVyZW5jZXNfYWRkX2VkaXQucGhwIDEgMjAxMS0wNi0xMiAxNToyNToyN1ogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgncHJlZmVyZW5jZXMnKSkpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgUmVkaXJlY3Qgb24gY2FuY2VsCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsKICAgICRwYXJhbXMgPSBhcnJheSgnYWN0aXZlX3RhYicgPT4gJ3ByZWZlcmVuY2VzJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGVtYWlsX3JlZ2lzdGVyZWRfY2hlY2sgPSBpc3NldCgkcGFyYW1zWydlbWFpbF9yZWdpc3RlcmVkX2NoZWNrJ10pID8gMSA6IDA7CgokZW1haWxfcmVnaXN0ZXJlZF9zdWJqZWN0ID0gdHJpbShwcmVnX3JlcGxhY2UoJy9bXkEtWmEtejAtOVxzLV0vJywgJycsICRwYXJhbXNbJ2VtYWlsX3JlZ2lzdGVyZWRfc3ViamVjdCddKSk7CgokZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsID0gaXNfZW1haWwodHJpbSgkcGFyYW1zWydlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnXSkpICA/IHRyaW0oJHBhcmFtc1snZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsJ10pIDogJyc7CgokZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX25hbWUgPSB0cmltKHByZWdfcmVwbGFjZSgnL1teQS1aYS16MC05XHMtXS8nLCAnJywgJHBhcmFtc1snZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX25hbWUnXSkpOwoKJGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZSA9IHRyaW0oJHBhcmFtc1snZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlJ10pOwoKJGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXIgPSB0cmltKCRwYXJhbXNbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXInXSk7CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9jaGVjaycsICRlbWFpbF9yZWdpc3RlcmVkX2NoZWNrKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2VtYWlsX3JlZ2lzdGVyZWRfc3ViamVjdCcsICRlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsJywgJGVtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19lbWFpbCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZScsICRlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZSk7CiR0aGlzLT5TZXRUZW1wbGF0ZSgnZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlJywgJGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZSk7CiR0aGlzLT5TZXRUZW1wbGF0ZSgnZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3dpbm5lcicsICRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyKTsKCmlmICggKCRlbWFpbF9yZWdpc3RlcmVkX2NoZWNrID09IDEgKSAmJgogICAgICgkZW1haWxfcmVnaXN0ZXJlZF9zdWJqZWN0ICE9ICcnKSAmJgogICAgICgkZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsICE9ICcnKSAmJgogICAgICgkZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX25hbWUgIT0gJycpICYmCiAgICAgKCRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2UgIT0gJycpICYmCiAgICAgKCRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyICE9ICcnKSApIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX3RydWVfZmFsc2UnLCAxKTsKfSBlbHNlIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX3RydWVfZmFsc2UnLCAwKTsgCn0KCi8vIGJhc2VkIG9uIHRoZSBuZXcgc2V0dGluZ3Mgd2UgbWlnaHQgdHJpZ2dlciBzb21lIGFjdGlvbnMKCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblByZWZlcmVuY2VzRWRpdGVkJywgJHBhcmFtcyk7CiRwYXJhbXMgPSBhcnJheSgncHJlZmVyZW5jZXNfbWVzc2FnZSc9PiAnc19lZGl0ZWQscHJlZmVyZW5jZXNfcycsICdhY3RpdmVfdGFiJyA9PiAncHJlZmVyZW5jZXMnKTsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.prize_add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucHJpemVfYWRkX2VkaXQucGhwIDEgMjAxMS0wNi0xMiAxNToyNToyN1ogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcsIGFycmF5KCdwcml6ZScpKSk7CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBhcHBseSBhbmQgY2FuY2VsCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRhcHBseV9idXR0b25fY2xpY2tlZCA9ICcwJzsKCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkpIHsKICAgIGlmICgkcGFyYW1zWydzdWJtaXQnXSA9PSAkdGhpcy0+TGFuZygnYXBwbHknKSkgewogICAgICAgICRhcHBseV9idXR0b25fY2xpY2tlZCA9ICcxJzsKICAgIH0KfQoKaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSkgewogICAgJHBhcmFtcyA9IGFycmF5KCdhY3RpdmVfdGFiJyA9PiAncHJpemUnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT2JqZWN0CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwcml6ZWRiID0gbmV3IGNvdXBvbl9wcml6ZURBTygpOwokYWN0aW9uZGIgPSBuZXcgY291cG9uX2FjdGlvbkRBTygpOwokcGVyaW9kZGIgPSBuZXcgY291cG9uX3BlcmlvZERBTygpOwokbWl4ZWRkYiA9IG5ldyBjb3Vwb25fbWl4ZWREQU8oKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBmZXRjaCBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHBrZXkgPSAnJzsKJG1vZHVzID0gJ2FkZCc7CgppZiAoaXNzZXQoJHBhcmFtc1sncGtleSddKSkgewogICAgJHBrZXkgPSAkcGFyYW1zWydwa2V5J107CiAgICAkbW9kdXMgPSAnZWRpdCc7CiAgICAKICAgICRyb3dzID0gJHByaXplZGItPmZldGNoKCRwa2V5KTsKICAgIAogICAgZm9yZWFjaCAoJHJvd3NbMF0gYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAKICAgICAgICBpZiAocHJlZ19tYXRjaCgiL2RhdGUvaSIsICRrZXkpKSB7CiAgICAgICAgICAgICR7JGtleX0gPSAkcHJpemVkYi0+dW5peF90aW1lX3N0YW1wKCR2YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHska2V5fSA9ICR2YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAKfSBlbHNlIHsKCiAgICAkbW9kdXMgPSAnYWRkJzsKICAgIAogICAgJGNvdXBvbl9hY3Rpb25faWQgPSAnJzsKICAgICRjb3Vwb25fcGVyaW9kX2lkID0gJyc7CiAgICAkcHJpemVfY29kZSA9ICcnOwogICAgJHRpdGxlID0gJyc7CiAgICAkZGVzY3JpcHRpb24gPSAnJzsKICAgICRudW1iZXIgPSAnJzsKICAgICRzdGF0dXMgPSAnMSc7CiAgICAKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fYWN0aW9uX2lkJ10pICkgeyAgICAKICAgICRjb3Vwb25fYWN0aW9uX2lkID0gcHJlZ19yZXBsYWNlKCcvW14wLTldKi8nLCAnJywgJHBhcmFtc1snY291cG9uX2FjdGlvbl9pZCddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fcGVyaW9kX2lkJ10pICkgeyAgICAKICAgICRjb3Vwb25fcGVyaW9kX2lkID0gcHJlZ19yZXBsYWNlKCcvW14wLTldKi8nLCAnJywgJHBhcmFtc1snY291cG9uX3BlcmlvZF9pZCddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydwcml6ZV9jb2RlJ10pICkgewogICAgJHByaXplX2NvZGUgPSBVcEhlbHBlcjo6YWxwaGFfbnVtZXJpY19sb3dlcigkcGFyYW1zWydwcml6ZV9jb2RlJ10pOwp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ3RpdGxlJ10pICkgeyAgICAKICAgICR0aXRsZSA9IHRyaW0oJHBhcmFtc1sndGl0bGUnXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1snZGVzY3JpcHRpb24nXSkgKSB7ICAgIAogICAgJGRlc2NyaXB0aW9uID0gdHJpbSgkcGFyYW1zWydkZXNjcmlwdGlvbiddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydudW1iZXInXSkgKSB7ICAgIAogICAgJG51bWJlciA9IHByZWdfcmVwbGFjZSgnL1teMC05XSovJywgJycsICRwYXJhbXNbJ251bWJlciddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydzdGF0dXMnXSkgKSB7CiAgICAkc3RhdHVzID0gdHJpbSgkcGFyYW1zWydzdGF0dXMnXSk7Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBjaGVjayBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAkZXJyb3IgPSBGQUxTRTsKICAgIAogICAgaWYgKCBlbXB0eSgkY291cG9uX2FjdGlvbl9pZCkgKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdub19zX2dpdmVuJywgYXJyYXkoJHRoaXMtPkxhbmcoJ2FjdGlvbicpKSkpOyAgICAgICAgCiAgICB9CiAgICAKICAgIGlmICggZW1wdHkoJGNvdXBvbl9wZXJpb2RfaWQpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCdwZXJpb2QnKSkpKTsgICAgICAgIAogICAgfQoKICAgIGlmICggZW1wdHkoJHByaXplX2NvZGUpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCdwcml6ZV9jb2RlJykpKSk7CiAgICB9IAogICAgCiAgICBpZiAoIGVtcHR5KCR0aXRsZSkgKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdub19zX2dpdmVuJywgYXJyYXkoJHRoaXMtPkxhbmcoJ3RpdGxlJykpKSk7CiAgICB9CgogICAgaWYgKCBlbXB0eSgkZGVzY3JpcHRpb24pICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCdkZXNjcmlwdGlvbicpKSkpOwogICAgfQogICAgCiAgICBpZiAoIGVtcHR5KCRudW1iZXIpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCdudW1iZXInKSkpKTsKICAgIH0KICAgICAgICAKICAgIGlmICggJGVycm9yICE9PSBGQUxTRSApIHsKICAgICAgICBlY2hvICRlcnJvcjsKICAgIH0gZWxzZSB7CgogICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAncHJpemVfY29kZScgPT4gJHByaXplX2NvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZScgPT4gJHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nID0+ICRkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcicgPT4gJG51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXR1cycgPT4gJHN0YXR1cywKICAgICAgICAgICAgICAgICAgICAgICAgJ2NvdXBvbl9hY3Rpb25faWQnID0+ICRjb3Vwb25fYWN0aW9uX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAnY291cG9uX3BlcmlvZF9pZCcgPT4gJGNvdXBvbl9wZXJpb2RfaWQKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICAkZGJfYXJyYXlbJ2NvdXBvbl9wcml6ZV9pZCddID0gJHBrZXk7ICAgICAgICAgICAgCiAgICAgICAgICAgICRwcml6ZWRiLT51cGRhdGUoJGRiX2FycmF5KTsgICAgICAgICAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY291cG9uX3ByaXplX2lkID0gJHByaXplZGItPmluc2VydCgkZGJfYXJyYXkpOyAKICAgICAgICAgICAgJGRiX2FycmF5Wydjb3Vwb25fcHJpemVfaWQnXSA9ICRjb3Vwb25fcHJpemVfaWQ7CiAgICAgICAgfQogICAgICAgICAKICAgIH0KICAgIAogICAgaWYgKCAhJGVycm9yICkgewogICAgICAgIAogICAgICAgIGlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7CiAgICAgICAgICAgIEAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblByaXplRWRpdGVkJywgJGRiX2FycmF5KTsKICAgICAgICAgICAgJHBhcmFtcyA9IGFycmF5KCdwcml6ZV9tZXNzYWdlJz0+ICdzX2VkaXRlZCxwcml6ZV9zJywgJ2FjdGl2ZV90YWInID0+ICdwcml6ZScpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIEAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblByaXplQWRkZWQnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoJ3ByaXplX21lc3NhZ2UnPT4gJ3NfYWRkZWQscHJpemVfcycsICdhY3RpdmVfdGFiJyA9PiAncHJpemUnKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCRhcHBseV9idXR0b25fY2xpY2tlZCA9PSAnMScpIHsKICAgICAgICAgICAgJHBhcmFtc1sncGtleSddID0gJGRiX2FycmF5Wydjb3Vwb25fcHJpemVfaWQnXTsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ3ByaXplX2FkZF9lZGl0JywgJHJldHVybmlkLCAkcGFyYW1zKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIAogICAgfQogICAgCn0gLy8gc3VibWl0IAoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBidWlsZCBhbmQgcHJvY2Nlc3MgdGVtcGxhdGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3ByaXplX2FkZF9lZGl0JywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoKJGFjdGlvbmRyb3Bkb3duID0gYXJyYXkoKTsKJGFjdGlvbmRyb3Bkb3duID0gJGFjdGlvbmRiLT5mZXRjaF9hY3Rpb25kcm9wZG93bigpOwoKaWYgKGVtcHR5KCRhY3Rpb25kcm9wZG93bikpIHsKICAgICRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ2NvdXBvbl9hY3Rpb25fbWlzc2luZycsICdhY3RpdmVfdGFiJyA9PiAnYWN0aW9uJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKfQoKJGFjdGlvbl9pbnB1dCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2NvdXBvbl9hY3Rpb25faWQnLCBhcnJheSgpLCAtMSwgJGNvdXBvbl9hY3Rpb25faWQsICdpZD0iYWN0aW9uZHJvcGRvd24iJyk7CiRhY3Rpb25faW5wdXQgPSBVcEhlbHBlcjo6bW9kaWZ5X2lucHV0X2Ryb3Bkb3duKCRhY3Rpb25faW5wdXQsICRhY3Rpb25kcm9wZG93biwgJGNvdXBvbl9hY3Rpb25faWQpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhY3Rpb25fdGV4dCcsICR0aGlzLT5MYW5nKCdhY3Rpb24nKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aW9uX2lucHV0JywgJGFjdGlvbl9pbnB1dCk7CgokcGVyaW9kZHJvcGRvd24gPSBhcnJheSgpOwokcGVyaW9kZHJvcGRvd24gPSAkcGVyaW9kZGItPmZldGNoX3BlcmlvZGRyb3Bkb3duKCk7CgppZiAoZW1wdHkoJHBlcmlvZGRyb3Bkb3duKSkgewogICAgJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnY291cG9uX3BlcmlvZF9taXNzaW5nJywgJ2FjdGl2ZV90YWInID0+ICdwZXJpb2QnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwp9CgokcGVyaW9kX2lucHV0ID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnY291cG9uX3BlcmlvZF9pZCcsIGFycmF5KCksIC0xLCAkY291cG9uX3BlcmlvZF9pZCwgJ2lkPSJwZXJpb2Rkcm9wZG93biInKTsKJHBlcmlvZF9pbnB1dCA9IFVwSGVscGVyOjptb2RpZnlfaW5wdXRfZHJvcGRvd24oJHBlcmlvZF9pbnB1dCwgJHBlcmlvZGRyb3Bkb3duLCAkY291cG9uX3BlcmlvZF9pZCk7CgokYWN0aW9uX3BlcmlvZF9qcyA9ICRtaXhlZGRiLT5mZXRjaF9hY3Rpb25fcGVyaW9kX2pzKCk7CiRwZXJpb2RfanMgPSBVcEhlbHBlcjo6YXJyYXlfb2ZfYXJyYXlfdG9fanNvbigkYWN0aW9uX3BlcmlvZF9qcyk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BlcmlvZF90ZXh0JywgJHRoaXMtPkxhbmcoJ3BlcmlvZCcpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwZXJpb2RfaW5wdXQnLCAkcGVyaW9kX2lucHV0KTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwZXJpb2RfanMnLCAkcGVyaW9kX2pzKTsKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7ICAKICAgICRzZWxlY3RlZF9wZXJpb2RfanMgPSAkcm93c1snMCddWydjb3Vwb25fcGVyaW9kX2lkJ107Cn0gZWxzZSB7CiAgICAkc2VsZWN0ZWRfcGVyaW9kX2pzID0gJyc7ICAgIAp9CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NlbGVjdGVkX3BlcmlvZF9qcycsICRzZWxlY3RlZF9wZXJpb2RfanMpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcml6ZV9jb2RlX3RleHQnLCAkdGhpcy0+TGFuZygncHJpemVfY29kZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcml6ZV9jb2RlX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwcml6ZV9jb2RlJywgJHByaXplX2NvZGUsIDIwLCA0NSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RpdGxlJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd0aXRsZScsICR0aXRsZSwgMjAsIDEwMCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZXNjcmlwdGlvbl90ZXh0JywgJHRoaXMtPkxhbmcoJ2Rlc2NyaXB0aW9uJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Rlc2NyaXB0aW9uX2lucHV0JywgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKHRydWUsICRpZCwgJGRlc2NyaXB0aW9uLCAnZGVzY3JpcHRpb24nKSk7CgokbnVtYmVyZHJvcGRvd24gPSBhcnJheSgpOwoKZm9yICgkaSA9IDE7ICRpIDw9IDI1OyAkaSsrKSB7CiAgICAkbnVtYmVyZHJvcGRvd25bJGldID0gJGk7ICAgIAp9CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ251bWJlcl90ZXh0JywgJHRoaXMtPkxhbmcoJ251bWJlcicpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdudW1iZXJfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdudW1iZXInLCAkbnVtYmVyZHJvcGRvd24sIC0xLCAkbnVtYmVyKSk7CgoKJHN0YXR1c2Ryb3Bkb3duID0gYXJyYXkoKTsKJHN0YXR1c2Ryb3Bkb3duWyR0aGlzLT5MYW5nKCdpbmFjdGl2ZScpXSA9ICcwJzsKJHN0YXR1c2Ryb3Bkb3duWyR0aGlzLT5MYW5nKCdhY3RpdmUnKV0gPSAnMSc7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXR1c190ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXR1cycpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGF0dXNfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzdGF0dXMnLCAkc3RhdHVzZHJvcGRvd24sIC0xLCAkc3RhdHVzKSk7CgppZiAoJG1vZHVzID09ICdlZGl0JykgeyAgICAKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3BrZXknLCAkcGtleSkpOwp9IGVsc2UgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAnJyk7Cn0gICAgCgppZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ2VkaXQnKSkpOwp9IGVsc2UgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ2FkZCcpKSk7Cn0gICAgCiAgICAKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FwcGx5JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdhcHBseScpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncHJpemVfYWRkX2VkaXQudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.prize_change_status.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucHJpemVfY2hhbmdlX3N0YXR1cy5waHAgMSAyMDExLTA2LTEyIDE1OjI1OjI3WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMSBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDaGVja1Blcm1pc3Npb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ3ByaXplJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokcGtleSA9ICcnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3BrZXknXSkpIHsKICAgICRwa2V5ID0gJHBhcmFtc1sncGtleSddOwp9Cgokc3RhdHVzID0gJHBhcmFtc1snc3RhdHVzJ10gPT0gJzEnID8gJzEnIDogJzAnOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGRiX2FycmF5ID0gYXJyYXkoJ2NvdXBvbl9wcml6ZV9pZCcgPT4gJHBrZXksICdzdGF0dXMnID0+ICRzdGF0dXMpOwoKJHByaXplZGIgPSBuZXcgY291cG9uX3ByaXplREFPKCk7CiRwcml6ZWRiLT51cGRhdGUoJGRiX2FycmF5KTsKCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblByaXplRWRpdGVkJywgJGRiX2FycmF5KTsKJHBhcmFtcyA9IGFycmF5KCdwcml6ZV9tZXNzYWdlJz0+ICdzX2NoYW5nZWRfc3RhdHVzLHByaXplX3MnLCAnYWN0aXZlX3RhYicgPT4gJ3ByaXplJyk7CiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.prize_delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucHJpemVfZGVsZXRlLnBocCAxIDIwMTEtMDYtMTIgMTU6MjU6MjdaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENoZWNrUGVybWlzc2lvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgncHJpemUnKSkpOwogICAgcmV0dXJuOyAgCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHBrZXkgPSAnJzsKCmlmIChpc3NldCgkcGFyYW1zWydwa2V5J10pKSB7CiAgICAkcGtleSA9ICRwYXJhbXNbJ3BrZXknXTsKfSBlbHNlIHsKICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+bGFuZygnbm90X2FsbG93ZWQnKSk7CgkkcGFyYW1zWydhY3RpdmVfdGFiJ10gPSAncHJpemUnOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHByaXplZGIgPSBuZXcgY291cG9uX3ByaXplREFPKCk7CgovLyBmZXRjaCBpbmZvcm1hdGlvbiBhYm91dCBwcml6ZSAodG8gYmUgdXNlZCBpbiBTZW5kRXZlbnQpCiRwcml6ZV9kYXRhID0gJHByaXplZGItPmZldGNoKCRwa2V5KTsKCi8vIGRlbGV0ZSBwcml6ZQokcHJpemVkYi0+ZGVsZXRlKCRwa2V5KTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2FsbCBldmVudCAvIHJlZGlyZWN0CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokZXZlbnRfYXJyYXkgPSBhcnJheSgpOwoKZm9yZWFjaCAoJHByaXplX2RhdGFbMF0gYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICRldmVudF9hcnJheVska2V5XSA9ICR2YWx1ZTsgICAgCn0KCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblByaXplRGVsZXRlZCcsICRldmVudF9hcnJheSk7CiRwYXJhbXMgPSBhcnJheSgncHJpemVfbWVzc2FnZScgPT4gJ3NfZGVsZXRlZCxwcml6ZV9zJywgJ2FjdGl2ZV90YWInID0+ICdwcml6ZScpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.show_delete_cookie.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uc2hvd19kZWxldGVfY29va2llLnBocCAxIDIwMTEtMDYtMTIgMTU6MjU6MjdaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIG9iamVjdHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKLy9yZXF1aXJlKGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksICdsaWInLCAnY2xhc3NlcycsICdVcENvb2tpZS5jbGFzcy5waHAnKSk7CgokY29va2llID0gbmV3IFVwQ29va2llKCczMTUzNjAwMCcpOwokY29va2llLT5kZWxldGUoJ3Rva2VuJyk7IAoKJHRoaXMtPlJlZGlyZWN0Rm9yRnJvbnRFbmQoJGlkLCAkcmV0dXJuaWQsICdzaG93X3JlZ2lzdGVyJyk7CnJldHVybjsKCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/action.show_prize.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uc2hvd19wcml6ZS5waHAgNyAyMDExLTA2LTIwIDE4OjU5OjU0WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMSBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBmZXRjaCBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGFsbF90ZW1wbGF0ZXMgPSAkdGhpcy0+TGlzdFRlbXBsYXRlcygpOwoKJHRlbXBsYXRlID0gJzAnOwoKaWYgKCBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSApIHsgICAgICAKICAgICR0ZW1wbGF0ZSA9IFVwSGVscGVyOjphbHBoYV9udW1lcmljX2xvd2VyKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOwogICAgJHRlbXBsYXRlID0gJ3ByaXplXycuICR0ZW1wbGF0ZTsKICAgIAogICAgJHRtcCA9ICcwJzsKICAgIAogICAgZm9yZWFjaCAoJGFsbF90ZW1wbGF0ZXMgYXMgJGsgPT4gJHYpIHsKICAgICAgICBpZiAoJHRlbXBsYXRlID09ICR2KSB7CiAgICAgICAgICAgICR0bXAgPSAnMSc7CiAgICAgICAgfQogICAgfQogICAgCiAgICAkdGVtcGxhdGUgPSAoJHRtcCA9PSAnMScpID8gJHRlbXBsYXRlIDogJzAnOwogICAgCn0KCmlmICggaXNzZXQoJHBhcmFtc1snY291cG9uX2FjdGlvbl9pZCddKSApIHsgICAgCiAgICAkY291cG9uX2FjdGlvbl9pZCA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkcGFyYW1zWydjb3Vwb25fYWN0aW9uX2lkJ10pKTsgICAgCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9ncmFtCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRxdWVyeSA9ICJTRUxFQ1QgdDEudGl0bGUgQVMgYWN0aW9uX3RpdGxlLAogICAgICAgICAgICB0MS5hbGlhcyBBUyBhY3Rpb25fYWxpYXMsCiAgICAgICAgICAgIHQxLmRlc2NyaXB0aW9uIEFTIGFjdGlvbl9kZXNjcmlwdGlvbiwKICAgICAgICAgICAgdDEuc3RhcnRfZGF0ZSBBUyBhY3Rpb25fc3RhcnRfZGF0ZSwKICAgICAgICAgICAgdDEuZW5kX2RhdGUgQVMgYWN0aW9uX2VuZF9kYXRlLAogICAgICAgICAgICB0Mi50aXRsZSBBUyBwZXJpb2RfdGl0bGUsCiAgICAgICAgICAgIHQyLnN0YXJ0X2RhdGUgQVMgIHBlcmlvZF9zdGFydF9kYXRlLAogICAgICAgICAgICB0Mi5lbmRfZGF0ZSBBUyBwZXJpb2RfZW5kX2RhdGUsCiAgICAgICAgICAgIHQyLmlzX2ZpbmFsIEFTIHBlcmlvZF9maW5hbCwKICAgICAgICAgICAgdDMucHJpemVfY29kZSBBUyBwcml6ZV9jb2RlLCAKICAgICAgICAgICAgdDMudGl0bGUgQVMgcHJpemVfdGl0bGUsCiAgICAgICAgICAgIHQzLmRlc2NyaXB0aW9uIEFTIHByaXplX2Rlc2NyaXB0aW9uLAogICAgICAgICAgICB0My5udW1iZXIgQVMgcHJpemVfbnVtYmVyCiAgICAgICAgRlJPTSAiLiBVUENPVVBPTl9BQ1RJT05fVEFCTEUuICIgdDEsCiAgICAgICAgICAgICIuIFVQQ09VUE9OX1BFUklPRF9UQUJMRS4gIiB0MiwgICAgCiAgICAgICAgICAgICIuIFVQQ09VUE9OX1BSSVpFX1RBQkxFLiAiIHQzCiAgICAgICAgV0hFUkUgdDEuY291cG9uX2FjdGlvbl9pZCA9IHQyLmNvdXBvbl9hY3Rpb25faWQKICAgICAgICBBTkQgdDIuY291cG9uX3BlcmlvZF9pZCA9IHQzLmNvdXBvbl9wZXJpb2RfaWQKICAgICAgICBBTkQgdDEuc3RhdHVzID0gMQogICAgICAgIEFORCB0Mi5zdGF0dXMgPSAxCiAgICAgICAgQU5EIHQzLnN0YXR1cyA9IDEiOwoKaWYgKHByZWdfbWF0Y2goIi9eWzAtOV17MSw1fSQvIix0cmltKCRjb3Vwb25fYWN0aW9uX2lkKSkgKSB7CiAgICAkcXVlcnkgLj0gIiBBTkQgdDEuY291cG9uX2FjdGlvbl9pZCA9ID8iOwp9CiAgICAgICAgCiRxdWVyeSAuPSAiIE9SREVSIEJZIHQyLmVuZF9kYXRlIjsKCiRkYiA9IGNtc21zKCktPkdldERiKCk7CgppZiAocHJlZ19tYXRjaCgiL15bMC05XXsxLDV9JC8iLHRyaW0oJGNvdXBvbl9hY3Rpb25faWQpKSApIHsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjb3Vwb25fYWN0aW9uX2lkKSk7Cn0gZWxzZSB7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsgICAgCn0KCiRkYl9yZXN1bHQgPSBhcnJheSgpOwoKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAKICAgICRvYmogPSBuZXcgc3RkY2xhc3M7CiAgICAKICAgIGZvcmVhY2ggKCRyb3cgYXMgJGsgPT4gJHYpIHsKICAgICAgICAkb2JqLT4kayA9ICRyb3dbJGtdOwogICAgfQogICAgICAgIAogICAgJGRiX3Jlc3VsdFtdID0gJG9iajsKICAgIAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgYXNzaWduIHNtYXJ0eSB2YXJpYWJsZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRkYl9yZXN1bHQpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRkYl9yZXN1bHQpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aW9uX3NfdGV4dCcsICR0aGlzLT5MYW5nKCdhY3Rpb25fcycpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhY3Rpb25fcF90ZXh0JywgJHRoaXMtPkxhbmcoJ2FjdGlvbl9wJykpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwZXJpb2Rfc190ZXh0JywgJHRoaXMtPkxhbmcoJ3BlcmlvZF9zJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BlcmlvZF9wX3RleHQnLCAkdGhpcy0+TGFuZygncGVyaW9kX3AnKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3ByaXplX3NfdGV4dCcsICR0aGlzLT5MYW5nKCdwcml6ZV9zJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3ByaXplX3BfdGV4dCcsICR0aGlzLT5MYW5nKCdwcml6ZV9wJykpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlX3RleHQnLCAkdGhpcy0+TGFuZygnc3RhcnRfZGF0ZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfZGF0ZV90ZXh0JywgJHRoaXMtPkxhbmcoJ2VuZF9kYXRlJykpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFByb2Nlc3NUZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoJHRlbXBsYXRlICE9ICcwJykgewogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCR0ZW1wbGF0ZSk7IAp9IGVsc2UgewogICAgJHRlbXBsYXRlX3R5cGVfa2V5ID0gJ2RlZmF1bHRfcHJpemVfdGVtcGxhdGUnOwogICAgJHRlbXBsYXRlICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCR0ZW1wbGF0ZV90eXBlX2tleSk7CiAgICAKICAgICR0bXAgPSAnMCc7CiAgICAKICAgIGZvcmVhY2ggKCRhbGxfdGVtcGxhdGVzIGFzICRrID0+ICR2KSB7CiAgICAgICAgaWYgKCR0ZW1wbGF0ZSAgPT0gJHYpIHsKICAgICAgICAgICAgJHRtcCA9ICcxJzsKICAgICAgICB9CiAgICB9CiAgICAKICAgICR0ZW1wbGF0ZSA9ICgkdG1wID09ICcxJykgPyAkdGVtcGxhdGUgOiAnMCc7CgogICAgaWYgKCR0ZW1wbGF0ZSA9PSAnMCcpIHsKICAgICAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2ZhY3RvcnlfdGVtcGxhdGVfcHJpemUudHBsJyk7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOyAKICAgIH0KICAgICAKfQoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.show_register.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uc2hvd19yZWdpc3Rlci5waHAgNSAyMDExLTA2LTIwIDEwOjExOjIzWiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMSBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBvYmplY3RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi8vcmVxdWlyZShjbXNfam9pbl9wYXRoKGRpcm5hbWUoX19GSUxFX18pLCAnbGliJywgJ2NsYXNzZXMnLCAnVXBDb29raWUuY2xhc3MucGhwJykpOwoKJGNvb2tpZSA9IG5ldyBVcENvb2tpZSgnMzE1MzYwMDAnKTsKJGlwID0gVXBIZWxwZXI6OmdldF9pcCgpOwokY3VzdG9tZXJkYiA9IG5ldyBjb3Vwb25fY3VzdG9tZXJEQU8oKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyByZXRyaWV2ZSBleGlzdGluZyBjdXN0b21lcl9kYXRhCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRtb2R1cyA9ICdpbnNlcnQnOwoKaWYgKCAhIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSApIHsKICAgICRjaGVja3N1bSA9ICRjb29raWUtPmdldCgndG9rZW4nKTsKICAgIAogICAgJGN1c3RvbWVyX2RhdGEgPSBhcnJheSgpOwogICAgCiAgICBpZiAoc3RybGVuKCRjaGVja3N1bSkgPT0gJzMyJykgewogICAgICAgICRjdXN0b21lcl9kYXRhID0gJGN1c3RvbWVyZGItPmZldGNoX2J5X2lwX2NoZWNrc3VtKCRpcCwgJGNoZWNrc3VtKTsKICAgICAgICAKICAgICAgICBpZiAoJGN1c3RvbWVyX2RhdGFbJzAnXVsnY2hlY2tzdW0nXSA9PSAkY2hlY2tzdW0pIHsKICAgICAgICAgICAgJG1vZHVzID0gJ2VkaXQnOwogICAgICAgICAgICAKICAgICAgICAgICAgZm9yZWFjaCAoJGN1c3RvbWVyX2RhdGFbMF0gYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgICAgICQkayA9ICR2OyAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGZldGNoIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokYWxsX3RlbXBsYXRlcyA9ICR0aGlzLT5MaXN0VGVtcGxhdGVzKCk7CgokdGVtcGxhdGUgPSAnMCc7CgppZiAoIGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICkgeyAgICAgIAogICAgJHRlbXBsYXRlID0gVXBIZWxwZXI6OmFscGhhX251bWVyaWNfbG93ZXIoJHBhcmFtc1sndGVtcGxhdGUnXSk7CiAgICAkdGVtcGxhdGUgPSAncmVnaXN0ZXJfJy4gJHRlbXBsYXRlOwogICAgCiAgICAkdG1wID0gJzAnOwogICAgCiAgICBmb3JlYWNoICgkYWxsX3RlbXBsYXRlcyBhcyAkayA9PiAkdikgewogICAgICAgIGlmICgkdGVtcGxhdGUgPT0gJHYpIHsKICAgICAgICAgICAgJHRtcCA9ICcxJzsKICAgICAgICB9CiAgICB9CiAgICAKICAgICR0ZW1wbGF0ZSA9ICgkdG1wID09ICcxJykgPyAkdGVtcGxhdGUgOiAnMCc7CiAgICAKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydmaXJzdF9uYW1lJ10pICkgeyAKICAgICRmaXJzdF9uYW1lID0gdHJpbShmaWx0ZXJfdmFyKCRwYXJhbXNbJ2ZpcnN0X25hbWUnXSwgRklMVEVSX1NBTklUSVpFX1NUUklORywgRklMVEVSX0ZMQUdfTk9fRU5DT0RFX1FVT1RFUykpOwp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ2xhc3RfbmFtZSddKSApIHsKICAgICRsYXN0X25hbWUgPSB0cmltKGZpbHRlcl92YXIoJHBhcmFtc1snbGFzdF9uYW1lJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcsIEZJTFRFUl9GTEFHX05PX0VOQ09ERV9RVU9URVMpKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydlbWFpbCddKSApIHsgICAgCiAgICAkZW1haWwgPSB0cmltKGZpbHRlcl92YXIoJHBhcmFtc1snZW1haWwnXSwgRklMVEVSX1NBTklUSVpFX0VNQUlMKSk7ICAgCn0KCmlmICggaXNzZXQoJHBhcmFtc1sncGhvbmUnXSkgKSB7ICAgIAogICAgJHBob25lID0gdHJpbShwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICRwYXJhbXNbJ3Bob25lJ10pKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fY29kZV8wMSddKSApIHsgICAgCiAgICAkY291cG9uX2NvZGVfMDEgPSB0cmltKHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHBhcmFtc1snY291cG9uX2NvZGVfMDEnXSkpOyAgICAKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fY29kZV8wMiddKSApIHsgICAgCiAgICAkY291cG9uX2NvZGVfMDIgPSB0cmltKHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHBhcmFtc1snY291cG9uX2NvZGVfMDInXSkpOyAgCn0KCmlmICggaXNzZXQoJHBhcmFtc1snY291cG9uX2NvZGVfMDMnXSkgKSB7ICAgIAogICAgJGNvdXBvbl9jb2RlXzAzID0gdHJpbShwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICRwYXJhbXNbJ2NvdXBvbl9jb2RlXzAzJ10pKTsgIAp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ2NvdXBvbl9jb2RlXzA0J10pICkgeyAgICAKICAgICRjb3Vwb25fY29kZV8wNCA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkcGFyYW1zWydjb3Vwb25fY29kZV8wNCddKSk7ICAKfQoKJGNvdXBvbl9jb2RlID0gJGNvdXBvbl9jb2RlXzAxLiAkY291cG9uX2NvZGVfMDIuICRjb3Vwb25fY29kZV8wMy4gJGNvdXBvbl9jb2RlXzA0OwoKaWYgKCBpc3NldCgkcGFyYW1zWyd0ZXJtc19hbmRfY29uZGl0aW9ucyddKSApIHsgICAgCiAgICAkdGVybXNfYW5kX2NvbmRpdGlvbnMgPSB0cmltKHByZWdfcmVwbGFjZSgnL1teMV0vJywgJycsICRwYXJhbXNbJ3Rlcm1zX2FuZF9jb25kaXRpb25zJ10pKTsgCn0KCmlmICggaXNzZXQoJHBhcmFtc1snbmV3c2xldHRlciddKSApIHsgICAgCiAgICAkbmV3c2xldHRlciA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvW14xXS8nLCAnJywgJHBhcmFtc1snbmV3c2xldHRlciddKSk7Cn0KCmlmICggISBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgJiYgJG1vZHVzICE9ICdlZGl0JykgewogICAgJG5ld3NsZXR0ZXIgPSAnMSc7Cn0gICAgCiAgICAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGNoZWNrIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokZXJyb3JfYXJyYXkgPSBhcnJheSgnMScpOwoKaWYgKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAKICAgICRlcnJvcl9hcnJheSA9IGFycmF5KCk7CiAgICAKICAgIGlmICggZW1wdHkoJGZpcnN0X25hbWUpICkgewogICAgICAgICRlcnJvcl9hcnJheVsnZmlyc3RfbmFtZSddID0gJzEnOwogICAgfQogICAgICAgIAogICAgaWYgKCBlbXB0eSgkbGFzdF9uYW1lKSApIHsKICAgICAgICAkZXJyb3JfYXJyYXlbJ2xhc3RfbmFtZSddID0gJzEnOwogICAgfQogICAgCiAgICBpZiAoICFpc19lbWFpbCgkZW1haWwpICkgewogICAgICAgICRlcnJvcl9hcnJheVsnZW1haWwnXSA9ICcxJzsKICAgIH0KICAgIAogICAgaWYgKCBzdHJsZW4oJHBob25lKSAhPSAnMTAnICkgewogICAgICAgICRlcnJvcl9hcnJheVsncGhvbmUnXSA9ICAnMSc7CiAgICB9CiAgICAKICAgIGlmICggc3RybGVuKCRjb3Vwb25fY29kZSkgIT0gJzE2JyApIHsKICAgICAgICAkZXJyb3JfYXJyYXlbJ2NvdXBvbl9jb2RlJ10gPSAnMSc7CiAgICB9CiAgICAKICAgIGlmICggZW1wdHkoJHRlcm1zX2FuZF9jb25kaXRpb25zKSApIHsKICAgICAgICAkZXJyb3JfYXJyYXlbJ3Rlcm1zX2FuZF9jb25kaXRpb25zJ10gPSAnMSc7CiAgICB9CiAgICAKfQoKICAgIGlmICggY291bnQoJGVycm9yX2FycmF5KSA+PSAxICkgewogICAgICAgICRzbWFydHktPmFzc2lnbignZXJyb3JfYXJyYXknLCAkZXJyb3JfYXJyYXkpOwogICAgfSBlbHNlIHsKIAogICAgICAgICRjaGVja3N1bSA9ICRjb29raWUtPmdldCgndG9rZW4nKTsKICAgICAgICAgICAgICAgIAogICAgICAgIGlmIChzdHJsZW4oJGNoZWNrc3VtKSA9PSAnMzInKSB7CiAgICAgICAgICAgICRjdXN0b21lcl9kYXRhID0gJGN1c3RvbWVyZGItPmZldGNoX2J5X2lwX2NoZWNrc3VtKCRpcCwgJGNoZWNrc3VtKTsKCiAgICAgICAgICAgIGlmICgkY3VzdG9tZXJfZGF0YVsnMCddWydjaGVja3N1bSddID09ICRjaGVja3N1bSkgewogICAgICAgICAgICAgICAgJG1vZHVzID0gJ2VkaXQnOwogICAgICAgICAgICAgICAgJGNvdXBvbl9jdXN0b21lcl9pZCA9ICRjdXN0b21lcl9kYXRhWycwJ11bJ2NvdXBvbl9jdXN0b21lcl9pZCddOwogICAgICAgICAgICB9CiAgICAgICAgfSAgICAgCiAgICAgICAgCiAgICAgICAgaWYgKCRtb2R1cyA9PSAnZWRpdCcpIHsKICAgICAgICAgICAgCiAgICAgICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgJ2ZpcnN0X25hbWUnID0+ICRmaXJzdF9uYW1lLAogICAgICAgICAgICAgICAgJ2xhc3RfbmFtZScgPT4gJGxhc3RfbmFtZSwKICAgICAgICAgICAgICAgICdlbWFpbCcgPT4gJGVtYWlsLAogICAgICAgICAgICAgICAgJ3Bob25lJyA9PiAkcGhvbmUsCiAgICAgICAgICAgICAgICAnbmV3c2xldHRlcicgPT4gJG5ld3NsZXR0ZXIsCiAgICAgICAgICAgICAgICAndGltZXN0YW1wJyA9PiAkY3VzdG9tZXJkYi0+dW5peF90aW1lX3N0YW1wKCksCiAgICAgICAgICAgICAgICAnY291cG9uX2N1c3RvbWVyX2lkJyA9PiAkY291cG9uX2N1c3RvbWVyX2lkCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIAogICAgICAgICAgICAkY3VzdG9tZXJkYi0+dXBkYXRlKCRkYl9hcnJheSk7CiAgICAgICAgCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgCiAgICAgICAgICAgICRwYXNzd29yZCA9IFVwSGVscGVyOjpyYW5kb21fcGFzc3dvcmQoKTsKICAgICAgICAgICAgJHNhbHQgPSByYW5kKDEwMDAwMDAsOTk5OTk5OTkpOwogICAgICAgICAgICAkY2hlY2tzdW0gPSBtZDUoJHBhc3N3b3JkLiRzYWx0KTsKICAgICAgICAgICAgCiAgICAgICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgJ2ZpcnN0X25hbWUnID0+ICRmaXJzdF9uYW1lLAogICAgICAgICAgICAgICAgJ2xhc3RfbmFtZScgPT4gJGxhc3RfbmFtZSwKICAgICAgICAgICAgICAgICdlbWFpbCcgPT4gJGVtYWlsLAogICAgICAgICAgICAgICAgJ3Bob25lJyA9PiAkcGhvbmUsCiAgICAgICAgICAgICAgICAnbmV3c2xldHRlcicgPT4gJG5ld3NsZXR0ZXIsCiAgICAgICAgICAgICAgICAnaXAnID0+ICRpcCwgCiAgICAgICAgICAgICAgICAnc3RhdHVzJyA9PiAxLAogICAgICAgICAgICAgICAgJ3Bhc3N3b3JkJyA9PiAkcGFzc3dvcmQsCiAgICAgICAgICAgICAgICAnc2FsdCcgPT4gJHNhbHQsCiAgICAgICAgICAgICAgICAnY2hlY2tzdW0nID0+ICRjaGVja3N1bSwKICAgICAgICAgICAgICAgICdyZWdpc3RyYXRpb25fZGF0ZScgPT4gJGN1c3RvbWVyZGItPmRiX3RpbWVfc3RhbXAoKSwKICAgICAgICAgICAgICAgICd0aW1lc3RhbXAnID0+ICRjdXN0b21lcmRiLT51bml4X3RpbWVfc3RhbXAoKQogICAgICAgICAgICApOwogICAgICAgICAgICAKICAgICAgICAgICAgJGRiX2FycmF5Wydjb3Vwb25fY3VzdG9tZXJfaWQnXSA9ICRjdXN0b21lcmRiLT5pbnNlcnQoJGRiX2FycmF5KTsKICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgICRjb29raWUtPnNldCgndG9rZW4nLCAkY2hlY2tzdW0pOyAKCiAgICAgICAgJGNvZGVkYiA9IG5ldyBjb3Vwb25fY29kZURBTygpOyAgICAgICAgCiAgICAgICAgJGNvdXBvbl9kYXRhID0gJGNvZGVkYi0+ZmV0Y2goJGNvdXBvbl9jb2RlLCAnY291cG9uX2NvZGUnKTsKICAgICAgICAKICAgICAgICBpZiAoJGNvdXBvbl9kYXRhWycwJ11bJ2NvdXBvbl9jdXN0b21lcl9pZCddID09IDApIHsKICAgICAgICAgICAgJGlzX3Rha2VuID0gJzAnOyAgIAogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRpc190YWtlbiA9ICcxJzsKICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICBpZiAoICgkY291cG9uX2RhdGFbJzAnXVsnY291cG9uX2NvZGUnXSA9PSAkY291cG9uX2NvZGUpICYmICghJGlzX3Rha2VuKSApIHsKCiAgICAgICAgICAgICRkYl9hcnJheV8wMiA9IGFycmF5KAogICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCcgPT4gJGNvZGVkYi0+dW5peF90aW1lX3N0YW1wKCksCiAgICAgICAgICAgICAgICAnY291cG9uX2N1c3RvbWVyX2lkJyA9PiAkZGJfYXJyYXlbJ2NvdXBvbl9jdXN0b21lcl9pZCddLAogICAgICAgICAgICAgICAgJ2NvdXBvbl9jb2RlX2lkJyA9PiAkY291cG9uX2RhdGFbJzAnXVsnY291cG9uX2NvZGVfaWQnXQogICAgICAgICAgICApOwogICAgICAgICAgICAKICAgICAgICAgICAgJGNvZGVkYi0+dXBkYXRlKCRkYl9hcnJheV8wMik7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2VtYWlsX3JlZ2lzdGVyZWRfdHJ1ZV9mYWxzZScsMCkgPT0gMSkgewogICAgICAgICAgICAgICAgJG1haWwgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0NNU01haWxlcicpOwogICAgICAgICAgICAgICAgaWYgKCRtYWlsICE9PSBGQUxTRSkgewogICAgICAgICAgICAgICAgICAgICRtYWlsLT5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgICRtYWlsLT5TZXRTdWJqZWN0KCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAkZW1haWxfYXJyYXkgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0X25hbWUnID0+ICRmaXJzdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAnbGFzdF9uYW1lJyA9PiAkbGFzdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAnZW1haWwnID0+ICRlbWFpbCwKICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob25lJyA9PiAkcGhvbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICduZXdzbGV0dGVyJyA9PiAkbmV3c2xldHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCcgPT4gJGNvZGVkYi0+dW5peF90aW1lX3N0YW1wKCksIAogICAgICAgICAgICAgICAgICAgICAgICAnZGJfdGltZXN0YW1wJyA9PiAkY29kZWRiLT5kYl90aW1lX3N0YW1wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICdkYXNoZWRfY291cG9uX2NvZGUnID0+IGltcGxvZGUoJy0nLCBzdHJfc3BsaXQoJGNvdXBvbl9jb2RlLCA0KSksCiAgICAgICAgICAgICAgICAgICAgICAgICdjb3Vwb25fY29kZScgPT4gJGNvdXBvbl9jb2RlCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZW1haWwnLCAkZW1haWxfYXJyYXkpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICRib2R5ID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0aGlzLT5HZXRUZW1wbGF0ZSgnZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlJykpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICRtYWlsLT5TZXRCb2R5KCRib2R5KTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAkbWFpbC0+U2V0RnJvbSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsJykpOwogICAgICAgICAgICAgICAgICAgICRtYWlsLT5TZXRGcm9tTmFtZSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX25hbWUnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAkZnVsbF9uYW1lID0gJGRiX2FycmF5WydmaXJzdF9uYW1lJ10gLiAnICcuICRkYl9hcnJheVsnbGFzdF9uYW1lJ107IAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICRtYWlsLT5BZGRBZGRyZXNzKCRkYl9hcnJheVsnZW1haWwnXSwgJGZ1bGxfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgJHJlcyA9ICRtYWlsLT5TZW5kKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpc19yZWdpc3RlcmVkJywgJzEnKTsKICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Nfc19jb3Vwb25fY29kZV9yZWdpc3RlcmVkX3RleHQnLCAkdGhpcy0+TGFuZygnc19zX2NvdXBvbl9jb2RlX3JlZ2lzdGVyZWQnLCBhcnJheSgkZmlyc3RfbmFtZSwgJGxhc3RfbmFtZSkpKTsKICAgICAgICAKICAgICAgICAkdGVybXNfYW5kX2NvbmRpdGlvbnMgPSAnMCc7CiAgICAgICAgJGNvdXBvbl9jb2RlXzAxID0gJyc7CiAgICAgICAgJGNvdXBvbl9jb2RlXzAyID0gJyc7CiAgICAgICAgJGNvdXBvbl9jb2RlXzAzID0gJyc7CiAgICAgICAgJGNvdXBvbl9jb2RlXzA0ID0gJyc7CiAgICAgICAgICAgCiAgICB9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgYnVpbGQgYW5kIHByb2Nlc3MgdGVtcGxhdGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtX2lkJywgJGlkKTsKCiRzdGFydGZvcm0gPSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3Nob3dfcmVnaXN0ZXInLCAkcmV0dXJuaWQsICdwb3N0Jyk7CgpwcmVnX21hdGNoX2FsbCgnLyhpZCk9KCJbXiJdKiIpL2knLCAkc3RhcnRmb3JtLCAkbWF0Y2hlcyk7CiRmdWxsX2Zvcm1faWQgPSBzdHJfcmVwbGFjZSgnIicsICcnLCAkbWF0Y2hlc1syXVswXSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Z1bGxfZm9ybV9pZCcsICRmdWxsX2Zvcm1faWQpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkc3RhcnRmb3JtKTsKCiRkZWxldGVfY291cG9uX2NvZGVfY29va2llX2xpbmsgPSAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnc2hvd19kZWxldGVfY29va2llJywgJ2NvbnRlbnRzJywgJycsICcnLCAndHJ1ZScsICd0cnVlJywgJ2FkZHRleHQnLCAnZmFsc2UnKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZGVsZXRlX2NvdXBvbl9jb2RlX2Nvb2tpZV9saW5rJywgJGRlbGV0ZV9jb3Vwb25fY29kZV9jb29raWVfbGluayk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2RlbGV0ZV9jb3Vwb25fY29kZV9jb29raWVfdGV4dCcsICR0aGlzLT5MYW5nKCdzX2RlbGV0ZV9jb3Vwb25fY29kZV9jb29raWUnLCBhcnJheSgkZGVsZXRlX2NvdXBvbl9jb2RlX2Nvb2tpZV9saW5rKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZWxldGVfdGV4dCcsICR0aGlzLT5MYW5nKCdkZWxldGUnKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3JlZ2lzdGVyX2NvdXBvbl9jb2RlX3RleHQnLCAkdGhpcy0+TGFuZygncmVnaXN0ZXJfY291cG9uX2NvZGUnKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZpcnN0X25hbWVfdGV4dCcsICR0aGlzLT5MYW5nKCdmaXJzdF9uYW1lJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZpcnN0X25hbWVfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2ZpcnN0X25hbWUnLCAkZmlyc3RfbmFtZSwgNDAsIDEwMCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdsYXN0X25hbWVfdGV4dCcsICR0aGlzLT5MYW5nKCdsYXN0X25hbWUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignbGFzdF9uYW1lX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdsYXN0X25hbWUnLCAkbGFzdF9uYW1lLCA0MCwgMTAwKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VtYWlsX3RleHQnLCAkdGhpcy0+TGFuZygnZW1haWwnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZW1haWxfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2VtYWlsJywgJGVtYWlsLCA0MCwgNDUpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbigncGhvbmVfdGV4dCcsICR0aGlzLT5MYW5nKCdwaG9uZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwaG9uZV9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAncGhvbmUnLCAkcGhvbmUsIDQwLCAxMCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb3Vwb25fY29kZV90ZXh0JywgJHRoaXMtPkxhbmcoJ2NvdXBvbl9jb2RlJykpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb3Vwb25fY29kZV8wMV9pbnB1dCcsIHByZWdfcmVwbGFjZSgnL2NsYXNzPSJjbXNfdGV4dGZpZWxkIi8nLCAnY2xhc3M9ImNtc190ZXh0ZmllbGRfc21hbGwiJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdjb3Vwb25fY29kZV8wMScsICRjb3Vwb25fY29kZV8wMSwgMTAsIDQpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NvdXBvbl9jb2RlXzAyX2lucHV0JywgcHJlZ19yZXBsYWNlKCcvY2xhc3M9ImNtc190ZXh0ZmllbGQiLycsICdjbGFzcz0iY21zX3RleHRmaWVsZF9zbWFsbCInLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2NvdXBvbl9jb2RlXzAyJywgJGNvdXBvbl9jb2RlXzAyLCAxMCwgNCkpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignY291cG9uX2NvZGVfMDNfaW5wdXQnLCBwcmVnX3JlcGxhY2UoJy9jbGFzcz0iY21zX3RleHRmaWVsZCIvJywgJ2NsYXNzPSJjbXNfdGV4dGZpZWxkX3NtYWxsIicsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY291cG9uX2NvZGVfMDMnLCAkY291cG9uX2NvZGVfMDMsIDEwLCA0KSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb3Vwb25fY29kZV8wNF9pbnB1dCcsIHByZWdfcmVwbGFjZSgnL2NsYXNzPSJjbXNfdGV4dGZpZWxkIi8nLCAnY2xhc3M9ImNtc190ZXh0ZmllbGRfc21hbGwiJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdjb3Vwb25fY29kZV8wNCcsICRjb3Vwb25fY29kZV8wNCwgMTAsIDQpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Rlcm1zX2FuZF9jb25kaXRpb25zX3RleHQnLCAkdGhpcy0+TGFuZygndGVybXNfYW5kX2NvbmRpdGlvbnMnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVybXNfYW5kX2NvbmRpdGlvbnNfYWdyZWVfdGV4dCcsICR0aGlzLT5MYW5nKCd0ZXJtc19hbmRfY29uZGl0aW9uc19hZ3JlZScpKTsKJHNtYXJ0eS0+YXNzaWduKCd0ZXJtc19hbmRfY29uZGl0aW9uc19pbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCd0ZXJtc19hbmRfY29uZGl0aW9ucycsJzEnLCAkdGVybXNfYW5kX2NvbmRpdGlvbnMpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignbmV3c2xldHRlcl90ZXh0JywgJHRoaXMtPkxhbmcoJ25ld3NsZXR0ZXInKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignbmV3c2xldHRlcl9hZ3JlZV90ZXh0JywgJHRoaXMtPkxhbmcoJ25ld3NsZXR0ZXJfYWdyZWUnKSk7CiRzbWFydHktPmFzc2lnbignbmV3c2xldHRlcl9pbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCduZXdzbGV0dGVyJywnMScsICRuZXdzbGV0dGVyKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywgJHRoaXMtPkNyZWF0ZUlucHV0UmVzZXQoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CgoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgUHJvY2Vzc1RlbXBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICgkdGVtcGxhdGUgIT0gJzAnKSB7CiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHRlbXBsYXRlKTsgCn0gZWxzZSB7CiAgICAkdGVtcGxhdGVfdHlwZV9rZXkgPSAnZGVmYXVsdF9yZWdpc3Rlcl90ZW1wbGF0ZSc7CiAgICAkdGVtcGxhdGUgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJHRlbXBsYXRlX3R5cGVfa2V5KTsKICAgIAogICAgJHRtcCA9ICcwJzsKICAgIAogICAgZm9yZWFjaCAoJGFsbF90ZW1wbGF0ZXMgYXMgJGsgPT4gJHYpIHsKICAgICAgICBpZiAoJHRlbXBsYXRlICA9PSAkdikgewogICAgICAgICAgICAkdG1wID0gJzEnOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJHRlbXBsYXRlID0gKCR0bXAgPT0gJzEnKSA/ICR0ZW1wbGF0ZSA6ICcwJzsKCiAgICBpZiAoJHRlbXBsYXRlID09ICcwJykgewogICAgICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZmFjdG9yeV90ZW1wbGF0ZV9yZWdpc3Rlci50cGwnKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCR0ZW1wbGF0ZSk7IAogICAgfQogICAgIAp9CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.show_winner.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uc2hvd193aW5uZXIucGhwIDEgMjAxMS0wNi0xMiAxNToyNToyN1ogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKLyoKCi0gY29sbGVjdCB3aW5uZXIgZGF0YQotIHNobWx6OiBpbXBsZW1lbnQKCiovCgoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBmZXRjaCBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGFsbF90ZW1wbGF0ZXMgPSAkdGhpcy0+TGlzdFRlbXBsYXRlcygpOwoKJHRlbXBsYXRlID0gJzAnOwoKaWYgKCBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSApIHsgICAgICAKICAgICR0ZW1wbGF0ZSA9IFVwSGVscGVyOjphbHBoYV9udW1lcmljX2xvd2VyKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOwogICAgJHRlbXBsYXRlID0gJ3dpbm5lcl8nLiAkdGVtcGxhdGU7CiAgICAKICAgICR0bXAgPSAnMCc7CiAgICAKICAgIGZvcmVhY2ggKCRhbGxfdGVtcGxhdGVzIGFzICRrID0+ICR2KSB7CiAgICAgICAgaWYgKCR0ZW1wbGF0ZSA9PSAkdikgewogICAgICAgICAgICAkdG1wID0gJzEnOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJHRlbXBsYXRlID0gKCR0bXAgPT0gJzEnKSA/ICR0ZW1wbGF0ZSA6ICcwJzsKICAgIAp9CgokY291cG9uX2FjdGlvbl9pZCA9ICcnOwoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fYWN0aW9uX2lkJ10pICkgeyAgICAKICAgICRjb3Vwb25fYWN0aW9uX2lkID0gdHJpbShwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICRwYXJhbXNbJ2NvdXBvbl9hY3Rpb25faWQnXSkpOyAgICAKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJG1peGVkZGIgPSBuZXcgY291cG9uX21peGVkREFPKCk7Cgokd2lubmVyc19kYXRhID0gYXJyYXkoKTsKCmlmICgkY291cG9uX2FjdGlvbl9pZCA9PSAnJykgewogICAgJHdpbm5lcnNfZGF0YSA9ICRtaXhlZGRiLT5mZXRjaF93aW5uZXJzKCk7ICAgIAp9IGVsc2UgewogICAgJHdpbm5lcnNfZGF0YSA9ICRtaXhlZGRiLT5mZXRjaF93aW5uZXJzKCRjb3Vwb25fYWN0aW9uX2lkLCAndDEuY291cG9uX2FjdGlvbl9pZCcpOwp9ICAgIAogICAgCiR3aW5uZXJhcnJheSA9IGFycmF5KCk7CgkKZm9yZWFjaCAoJHdpbm5lcnNfZGF0YSBhcyAka2V5ID0+ICR2YWx1ZSkgewoKICAgICRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsKICAgIAogICAgZm9yZWFjaCAoJHZhbHVlIGFzICRzdWJfa2V5ID0+ICRzdWJfdmFsdWUpIHsKICAgICAgICAkb25lcm93LT4kc3ViX2tleSA9ICR2YWx1ZVskc3ViX2tleV07ICAgCiAgICB9CiAgICAKICAgICRvbmVyb3ctPmRhc2hlZF9jb3Vwb25fY29kZSA9ICBpbXBsb2RlKCctJywgc3RyX3NwbGl0KCRvbmVyb3ctPmNvdXBvbl9jb2RlLCA0KSk7CiAgICAKICAgICRvbmVyb3ctPmRhc2hlZF9waG9uZSA9ICBpbXBsb2RlKCcgJywgc3RyX3NwbGl0KCRvbmVyb3ctPnBob25lLCAzKSk7CiAgICAgICAgCiAgICAkd2lubmVyYXJyYXlbXSA9ICRvbmVyb3c7CiAgICAKfQoKJHNtYXJ0eS0+YXNzaWduKCd3aW5uZXJfcF90ZXh0JywgJHRoaXMtPkxhbmcoJ3dpbm5lcl9wJykpOwokc21hcnR5LT5hc3NpZ24oJ3ByaXplX2NvZGVfdGV4dCcsICR0aGlzLT5MYW5nKCdwcml6ZV9jb2RlJykpOwokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX3RleHQnLCAkdGhpcy0+TGFuZygndGl0bGUnKSk7CiRzbWFydHktPmFzc2lnbignbmFtZV90ZXh0JywgJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiRzbWFydHktPmFzc2lnbignZW1haWxfdGV4dCcsICR0aGlzLT5MYW5nKCdlbWFpbCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdwaG9uZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3Bob25lJykpOwokc21hcnR5LT5hc3NpZ24oJ2NvdXBvbl9jb2RlX3RleHQnLCAkdGhpcy0+TGFuZygnY291cG9uX2NvZGUnKSk7CiRzbWFydHktPmFzc2lnbignd2l0aGRyYXdfY291cG9uX3RleHQnLCAkdGhpcy0+TGFuZygnd2l0aGRyYXdfY291cG9uJykpOwoJCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3dpbm5lcml0ZW1zJywgJHdpbm5lcmFycmF5KTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd3aW5uZXJpdGVtY291bnQnLCBjb3VudCgkd2lubmVyYXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBQcm9jZXNzVGVtcGxhdGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCR0ZW1wbGF0ZSAhPSAnMCcpIHsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOyAKfSBlbHNlIHsKICAgICR0ZW1wbGF0ZV90eXBlX2tleSA9ICdkZWZhdWx0X3dpbm5lcl90ZW1wbGF0ZSc7CiAgICAkdGVtcGxhdGUgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJHRlbXBsYXRlX3R5cGVfa2V5KTsKICAgIAogICAgJHRtcCA9ICcwJzsKICAgIAogICAgZm9yZWFjaCAoJGFsbF90ZW1wbGF0ZXMgYXMgJGsgPT4gJHYpIHsKICAgICAgICBpZiAoJHRlbXBsYXRlICA9PSAkdikgewogICAgICAgICAgICAkdG1wID0gJzEnOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJHRlbXBsYXRlID0gKCR0bXAgPT0gJzEnKSA/ICR0ZW1wbGF0ZSA6ICcwJzsKCiAgICBpZiAoJHRlbXBsYXRlID09ICcwJykgewogICAgICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZmFjdG9yeV90ZW1wbGF0ZV93aW5uZXIudHBsJyk7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOyAKICAgIH0KICAgICAKfQoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.template_add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24udGVtcGxhdGVfYWRkX2VkaXQucGhwIDEgMjAxMS0wNi0xMiAxNToyNToyN1ogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ3RlbXBsYXRlcycpKSk7CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgZmFjdG9yeSwgYXBwbHkgYW5kIGNhbmNlbAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKGlzc2V0KCRwYXJhbXNbJ2ZhY3RvcnknXSkpIHsKICAgICRmYWN0b3J5X3RlbXBsYXRlID0gJ2ZhY3RvcnlfdGVtcGxhdGVfJy4gJHBhcmFtc1sndGVtcGxhdGVfdHlwZSddOwogICAgJHBhcmFtc1sndGVtcGxhdGVfY29kZSddID0gJHRoaXMtPkdldFRlbXBsYXRlRnJvbUZpbGUoJGZhY3RvcnlfdGVtcGxhdGUpOwp9CgokYXBwbHlfYnV0dG9uX2NsaWNrZWQgPSAnMCc7CgppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKSB7CiAgICBpZiAoJHBhcmFtc1snc3VibWl0J10gPT0gJHRoaXMtPkxhbmcoJ2FwcGx5JykpIHsKICAgICAgICAkYXBwbHlfYnV0dG9uX2NsaWNrZWQgPSAnMSc7CiAgICB9Cn0KCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsKICAgICRwYXJhbXMgPSBhcnJheSgnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBmZXRjaCBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiR0ZW1wbGF0ZV90eXBlX2xpc3QgPSAkdGhpcy0+X2dldF90ZW1wbGF0ZV90eXBlKCk7CgokcGtleSA9ICcnOwokbW9kdXMgPSAnYWRkJzsKCmlmIChpc3NldCgkcGFyYW1zWydwa2V5J10pKSB7CiAgICAkcGtleSA9ICRwYXJhbXNbJ3BrZXknXTsKICAgICRtb2R1cyA9ICdlZGl0JzsKICAgICAgICAKICAgICRuYW1lID0gcHJlZ19yZXBsYWNlKCcvXignIC4gam9pbigifCIsIGFycmF5X2tleXMoJHRlbXBsYXRlX3R5cGVfbGlzdCkpIC4gJylfLycsICcnLCAkcGtleSk7CiAgICAgIAogICAgZm9yZWFjaCAoYXJyYXlfa2V5cygkdGVtcGxhdGVfdHlwZV9saXN0KSBhcyAkaykgIHsKICAgICAgICBpZiAoIHByZWdfbWF0Y2goIi9eJGsvIiwgJHBrZXksICRtYXRjaGVzKSApIHsKICAgICAgICAgICAgJHRlbXBsYXRlX3R5cGUgPSAkdGVtcGxhdGVfdHlwZV9saXN0WyRrXTsKICAgICAgICAgICAgJHRlbXBsYXRlX3R5cGVfZWRpdCA9ICRrOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICAKICAgICR0ZW1wbGF0ZV9jb2RlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwa2V5KTsKICAgIAp9IGVsc2UgewogICAgCiAgICAkbW9kdXMgPSAnYWRkJzsKICAgIAogICAgJG5hbWUgPSAnJzsKICAgICR0ZW1wbGF0ZV90eXBlID0gJ3JlZ2lzdGVyJzsKICAgICR0ZW1wbGF0ZV9jb2RlID0gJyc7CiAgICAKfQoKaWYgKCBpc3NldCgkcGFyYW1zWyduYW1lJ10pICkgeyAgICAgIAogICAgJG5hbWUgPSBVcEhlbHBlcjo6YWxwaGFfbnVtZXJpY19sb3dlcigkcGFyYW1zWyduYW1lJ10pOwp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlX3R5cGUnXSkgKSB7ICAgIAogICAgJHRlbXBsYXRlX3R5cGUgPSB0cmltKCRwYXJhbXNbJ3RlbXBsYXRlX3R5cGUnXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1sndGVtcGxhdGVfY29kZSddKSApIHsgICAgCiAgICAkdGVtcGxhdGVfY29kZSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGVfY29kZSddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydlcnJvciddKSApIHsKICAgICRlcnJvcl9tc2cgPSAkdGhpcy0+TGFuZygkcGFyYW1zWydlcnJvciddKTsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGVycm9yX21zZyk7Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2hlY2sgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSApIHsKICAgICRlcnJvciA9IEZBTFNFOwogICAgCiAgICBpZiAoIGVtcHR5KCRuYW1lKSApIHsKICAgICAgICAkZXJyb3IgLj0gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25vX3NfZ2l2ZW4nLCBhcnJheSgkdGhpcy0+TGFuZygnbmFtZScpKSkpOwogICAgfQoKICAgIGlmICggZW1wdHkoJHRlbXBsYXRlX2NvZGUpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCd0ZW1wbGF0ZV9jb2RlJykpKSk7CiAgICB9IAoKICAgIGlmICggJGVycm9yICE9PSBGQUxTRSApIHsKICAgICAgICBlY2hvICRlcnJvcjsKICAgIH0gZWxzZSB7CgogICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAnbmFtZScgPT4gJG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICd0ZW1wbGF0ZV90eXBlJyA9PiAkdGVtcGxhdGVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbXBsYXRlX2NvZGUnID0+ICR0ZW1wbGF0ZV9jb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgCiAgICAgICAgLy8gc3RyaXAgdW53YW50ZWQgY2hhcnMgZnJvbSAkbmFtZQogICAgICAgIAogICAgICAgICR0ZW1wbGF0ZV9uYW1lID0gJHRlbXBsYXRlX3R5cGUgLiAnXycgLiAkbmFtZTsKICAgICAgICAgICAgICAgIAogICAgICAgIGlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBvbmx5IHZlcmlmeSB0aGUgdGVtcGxhdGUgd2hlbiB0aGUgbmFtZSB3aWxsIGNoYW5nZSEKICAgICAgICAgICAgCiAgICAgICAgICAgICR0eHQgPSAnJzsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICgkcGtleSAhPSAkdGVtcGxhdGVfbmFtZSkgewogICAgICAgICAgICAgICAgJHR4dCA9IHRyaW0oJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZV9uYW1lKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICgkdHh0ICE9ICIiKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJGRiX2FycmF5WyduYW1lJ10gPSAnJzsKICAgICAgICAgICAgICAgICRkYl9hcnJheVsncGtleSddID0gJHBrZXk7CiAgICAgICAgICAgICAgICAkZGJfYXJyYXlbJ2Vycm9yJ10gPSAndGVtcGxhdGVfZXhpc3RzJzsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwndGVtcGxhdGVfYWRkX2VkaXQnLCcnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAkdGhpcy0+RGVsZXRlVGVtcGxhdGUoJHBrZXkpOwogICAgICAgICAgICAkdGhpcy0+U2V0VGVtcGxhdGUoJHRlbXBsYXRlX25hbWUsICR0ZW1wbGF0ZV9jb2RlKTsKICAgICAgICAgICAgCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICR0eHQgPSB0cmltKCR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVfbmFtZSkpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCR0eHQgIT0gIiIpIHsKCiAgICAgICAgICAgICAgICAkZGJfYXJyYXlbJ25hbWUnXSA9ICcnOwogICAgICAgICAgICAgICAgJGRiX2FycmF5WydlcnJvciddID0gJ3RlbXBsYXRlX2V4aXN0cyc7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ3RlbXBsYXRlX2FkZF9lZGl0JywnJywgJGRiX2FycmF5KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgJGRiX2FycmF5Wydwa2V5J10gPSAkdGVtcGxhdGVfbmFtZTsKICAgICAgICAgICAgJHRoaXMtPlNldFRlbXBsYXRlKCR0ZW1wbGF0ZV9uYW1lLCAkdGVtcGxhdGVfY29kZSk7CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICAgCiAgICB9CiAgICAKICAgIGlmICggISRlcnJvciApIHsKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICBAJHRoaXMtPlNlbmRFdmVudCgnVXBDb3Vwb25UZW1wbGF0ZUVkaXRlZCcsICRkYl9hcnJheSk7CiAgICAgICAgICAgICRwYXJhbXMgPSBhcnJheSgndGVtcGxhdGVzX21lc3NhZ2UnPT4gJ3NfZWRpdGVkLHRlbXBsYXRlc19zJywgJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXMnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBAJHRoaXMtPlNlbmRFdmVudCgnVXBDb3Vwb25UZW1wbGF0ZUFkZGVkJywgJGRiX2FycmF5KTsKICAgICAgICAgICAgJHBhcmFtcyA9IGFycmF5KCd0ZW1wbGF0ZXNfbWVzc2FnZSc9PiAnc19hZGRlZCx0ZW1wbGF0ZXNfcycsICdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICgkYXBwbHlfYnV0dG9uX2NsaWNrZWQgPT0gJzEnKSB7CiAgICAgICAgICAgICRwYXJhbXNbJ3BrZXknXSA9ICR0ZW1wbGF0ZV9uYW1lOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAndGVtcGxhdGVfYWRkX2VkaXQnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgfQogICAgICAgIAogCn0gLy8gc3VibWl0IAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBidWlsZCBhbmQgcHJvY2VzcyB0ZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3RlbXBsYXRlX2FkZF9lZGl0JywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduYW1lX3RleHQnLCAkdGhpcy0+TGFuZygnbmFtZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduYW1lX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICduYW1lJywgJG5hbWUsIDIwLCAxMDApKTsKCiR0ZW1wbGF0ZV90eXBlX2Ryb3Bkb3duID0gYXJyYXkoKTsKJHRlbXBsYXRlX3R5cGVfZHJvcGRvd25bJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX3JlZ2lzdGVyJyldID0gJ3JlZ2lzdGVyJzsKJHRlbXBsYXRlX3R5cGVfZHJvcGRvd25bJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX3dpbm5lcicpXSA9ICd3aW5uZXInOwokdGVtcGxhdGVfdHlwZV9kcm9wZG93blskdGhpcy0+TGFuZygndGVtcGxhdGVfcHJpemUnKV0gPSAncHJpemUnOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZV90eXBlX3RleHQnLCAkdGhpcy0+TGFuZygndGVtcGxhdGVfdHlwZScpKTsKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7CiAgICAKICAgIGlmIChpc3NldCgkcGFyYW1zWydmYWN0b3J5J10pKSB7CiAgICAgICAgJHRlbXBsYXRlX3R5cGVfZWRpdCA9ICR0ZW1wbGF0ZV90eXBlOyAgICAgICAgCiAgICB9CiAgICAKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfdHlwZV9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3RlbXBsYXRlX3R5cGUnLCAkdGVtcGxhdGVfdHlwZV9kcm9wZG93biwgLTEsICR0ZW1wbGF0ZV90eXBlX2VkaXQpKTsKfSBlbHNlIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfdHlwZV9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3RlbXBsYXRlX3R5cGUnLCAkdGVtcGxhdGVfdHlwZV9kcm9wZG93biwgLTEsICR0ZW1wbGF0ZV90eXBlKSk7Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfY29kZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX2NvZGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfY29kZV9pbnB1dCcsICR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgJGlkLCAkdGVtcGxhdGVfY29kZSwgJ3RlbXBsYXRlX2NvZGUnKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZhY3RvcnknLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnZmFjdG9yeScsICR0aGlzLT5MYW5nKCdmYWN0b3J5JykpKTsKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7ICAgIAogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAncGtleScsICRwa2V5KSk7Cn0gZWxzZSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICcnKTsKfSAgICAKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnZWRpdCcpKSk7Cn0gZWxzZSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnYWRkJykpKTsKfSAgICAKICAgIAokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYXBwbHknLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ2FwcGx5JykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd0ZW1wbGF0ZV9hZGRfZWRpdC50cGwnKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.template_change_default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24udGVtcGxhdGVfY2hhbmdlX2RlZmF1bHQucGhwIDEgMjAxMS0wNi0xMiAxNToyNToyN1ogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ3RlbXBsYXRlJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRlbXBsYXRlX3R5cGUgPSAkdGhpcy0+X2dldF90ZW1wbGF0ZV90eXBlKCk7CgokbmFtZSA9IHByZWdfcmVwbGFjZSgnL14oJyAuIGpvaW4oInwiLCBhcnJheV9rZXlzKCR0ZW1wbGF0ZV90eXBlKSkgLiAnKV8vJywgJycsICRwYXJhbXNbJ3BrZXknXSk7Cgpmb3JlYWNoIChhcnJheV9rZXlzKCR0ZW1wbGF0ZV90eXBlKSBhcyAkaykgIHsKICAgIGlmICggcHJlZ19tYXRjaCgiL14kay8iLCAkcGFyYW1zWydwa2V5J10sICRtYXRjaGVzKSApIHsKICAgICAgICAkdGVtcGxhdGVfdHlwZSA9ICRrOwogICAgICAgIGJyZWFrOwogICAgfQp9CgokcHJlZmVyZW5jZV9uYW1lID0gJ2RlZmF1bHRfJy4gJHRlbXBsYXRlX3R5cGUuICdfdGVtcGxhdGUnOwokcHJlZmVyZW5jZV92YWx1ZSA9ICRwYXJhbXNbJ3BrZXknXTsKCmlmICgkcGFyYW1zWydkZWZhdWx0J10gPT0gJzEnKSB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgkcHJlZmVyZW5jZV9uYW1lLCAkcHJlZmVyZW5jZV92YWx1ZSk7Cn0gZWxzZSB7CiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJHByZWZlcmVuY2VfbmFtZSkgPT0gJHByZWZlcmVuY2VfdmFsdWUpIHsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgkcHJlZmVyZW5jZV9uYW1lKTsKICAgIH0KfQogICAgCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblRlbXBsYXRlRWRpdGVkJywgYXJyYXkoJHByZWZlcmVuY2VfbmFtZSwgJHByZWZlcmVuY2VfdmFsdWUpKTsKJHBhcmFtcyA9IGFycmF5KCd0ZW1wbGF0ZXNfbWVzc2FnZSc9PiAnc19jaGFuZ2VkX2RlZmF1bHQsdGVtcGxhdGVzX3MnLCAnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.template_delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24udGVtcGxhdGVfZGVsZXRlLnBocCAxIDIwMTEtMDYtMTIgMTU6MjU6MjdaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDaGVja1Blcm1pc3Npb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgndGVtcGxhdGVzJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwa2V5ID0gJyc7CgppZiAoaXNzZXQoJHBhcmFtc1sncGtleSddKSkgewogICAgJHBrZXkgPSAkcGFyYW1zWydwa2V5J107Cn0gZWxzZSB7CiAgICAkcGFyYW1zWydlcnJvciddID0gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPmxhbmcoJ25vdF9hbGxvd2VkJykpOwoJJHBhcmFtc1snYWN0aXZlX3RhYiddID0gJ3RlbXBsYXRlcyc7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9ncmFtCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGVtcGxhdGVfdHlwZSA9ICR0aGlzLT5fZ2V0X3RlbXBsYXRlX3R5cGUoKTsKCmZvcmVhY2ggKGFycmF5X2tleXMoJHRlbXBsYXRlX3R5cGUpIGFzICRrKSAgewogICAgaWYgKCBwcmVnX21hdGNoKCIvXiRrLyIsICRwa2V5LCAkbWF0Y2hlcykgKSB7CiAgICAgICAgJHRlbXBsYXRlX3R5cGUgPSAkazsKICAgICAgICBicmVhazsKICAgIH0KfQoKJHByZWZlcmVuY2VfbmFtZSA9ICdkZWZhdWx0XycuICR0ZW1wbGF0ZV90eXBlIC4gJ190ZW1wbGF0ZSc7CiRwcmVmZXJlbmNlX3ZhbHVlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJHByZWZlcmVuY2VfbmFtZSk7CgppZiAoJHByZWZlcmVuY2VfdmFsdWUgPT0gJHBrZXkpIHsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCRwcmVmZXJlbmNlX25hbWUpOwp9CgokdGVtcGxhdGUgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKCRwa2V5KTsKCiR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkdGVtcGxhdGUpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBjYWxsIGV2ZW50IC8gcmVkaXJlY3QKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRldmVudF9hcnJheVsncGtleSddID0gJHBrZXk7CgpAJHRoaXMtPlNlbmRFdmVudCgnVXBDb3Vwb25UZW1wbGF0ZURlbGV0ZWQnLCAkZXZlbnRfYXJyYXkpOwokcGFyYW1zID0gYXJyYXkoJ3RlbXBsYXRlc19tZXNzYWdlJz0+ICdzX2RlbGV0ZWQsdGVtcGxhdGVzX3MnLCAnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKcmV0dXJuOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.winner_draw_coupon.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ud2lubmVyX2RyYXdfY291cG9uLnBocCAxIDIwMTEtMDYtMTIgMTU6MjU6MjdaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENoZWNrUGVybWlzc2lvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgncHJpemUnKSkpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRjb3Vwb25fcHJpemVfaWQgPSAnJzsKCmlmIChpc3NldCgkcGFyYW1zWydjb3Vwb25fcHJpemVfaWQnXSkpIHsKICAgICRjb3Vwb25fcHJpemVfaWQgPSB0cmltKHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHBhcmFtc1snY291cG9uX3ByaXplX2lkJ10pKTsKfQoKJGNvdXBvbl9wZXJpb2RfaWQgPSAnJzsKCmlmIChpc3NldCgkcGFyYW1zWydjb3Vwb25fcGVyaW9kX2lkJ10pKSB7CiAgICAkY291cG9uX3BlcmlvZF9pZCA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkcGFyYW1zWydjb3Vwb25fcGVyaW9kX2lkJ10pKTsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGNvZGVkYiA9IG5ldyBjb3Vwb25fY29kZURBTygpOwokbWl4ZWRkYiA9IG5ldyBjb3Vwb25fbWl4ZWREQU8oKTsKJHBlcmlvZGRiID0gbmV3IGNvdXBvbl9wZXJpb2REQU8oKTsKCi8vIGZpZ3VyZSBvdXQgdGhlIHN0YXJ0X3RzIGFuZCBlbmRfdHMgdmlhIHRoZSBjb3Vwb25fcGVyaW9kX2lkCiRwZXJpb2Rfcm93ID0gJHBlcmlvZGRiLT5mZXRjaCgkY291cG9uX3BlcmlvZF9pZCk7CiRzdGFydF90cyA9ICRwZXJpb2RkYi0+dW5peF90aW1lX3N0YW1wKCRwZXJpb2Rfcm93WzBdWydzdGFydF9kYXRlJ10pOwokZW5kX3RzID0gJHBlcmlvZGRiLT51bml4X3RpbWVfc3RhbXAoJHBlcmlvZF9yb3dbMF1bJ2VuZF9kYXRlJ10pOwoKLy8gZHJhdyBhIGNvdXBvbiAKJGNvdXBvbl9yb3cgPSAkY29kZWRiLT5kcmF3X2NvdXBvbigkc3RhcnRfdHMsICRlbmRfdHMpOwoKaWYgKGVtcHR5KCRjb3Vwb25fcm93KSkgewogICAgJHBhcmFtcyA9IGFycmF5KCd3aW5uZXJfbWVzc2FnZSc9PiAnbmVlZF9yZWdpc3RlcmVkX2N1c3RvbWVyLCcsICdhY3RpdmVfdGFiJyA9PiAnd2lubmVyJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKICAgIHJldHVybjsKfQoKLy8gYXNzaWduIHByaXplIHRvIHVzZXIKJGRiX2FycmF5ID0gYXJyYXkoJ2NvdXBvbl9wcml6ZV9pZCcgPT4gJGNvdXBvbl9wcml6ZV9pZCwgJ2NvdXBvbl9jb2RlX2lkJyA9PiAkY291cG9uX3Jvd1snY291cG9uX2NvZGVfaWQnXSk7CiRjb2RlZGItPnVwZGF0ZSgkZGJfYXJyYXkpOwoKLy8gZmV0Y2ggaW5mb3JtYXRpb24gb2YgdGhlIHdpbm5lciB0byBiZSB1c2VkIGluIHRoZSB3aW5uZXIgbm90aWZpY2F0aW9uIGUtbWFpbAokd2lubmVyX2FycmF5ID0gJG1peGVkZGItPmZldGNoX3dpbm5lcnMoJGNvdXBvbl9yb3dbJ2NvdXBvbl9jb2RlX2lkJ10sICd0NS5jb3Vwb25fY29kZV9pZCcpOwoKaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX3RydWVfZmFsc2UnLDApID09IDEpIHsKICAgICRtYWlsID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdDTVNNYWlsZXInKTsKICAgIGlmICgkbWFpbCAhPT0gRkFMU0UpIHsKICAgICAgICAkbWFpbC0+cmVzZXQoKTsKICAgICAgICAkbWFpbC0+U2V0U3ViamVjdCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9zdWJqZWN0JykpOwogICAgICAgIAogICAgICAgICRlbWFpbF9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAnYWN0aW9uX3RpdGxlJyAgICAgICAgICA9PiAkd2lubmVyX2FycmF5WzBdWydhY3Rpb25fdGl0bGUnXSwgCiAgICAgICAgICAgICdjb3Vwb25fYWN0aW9uX2lkJyAgICAgID0+ICR3aW5uZXJfYXJyYXlbMF1bJ2NvdXBvbl9hY3Rpb25faWQnXSwKICAgICAgICAgICAgJ3BlcmlvZF90aXRsZScgICAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsncGVyaW9kX3RpdGxlJ10sCiAgICAgICAgICAgICdjb3Vwb25fcGVyaW9kX2lkJyAgICAgID0+ICR3aW5uZXJfYXJyYXlbMF1bJ2NvdXBvbl9wZXJpb2RfaWQnXSwKICAgICAgICAgICAgJ3ByaXplX3RpdGxlJyAgICAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsncHJpemVfdGl0bGUnXSwKICAgICAgICAgICAgJ3ByaXplX2NvZGUnICAgICAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsncHJpemVfY29kZSddLAogICAgICAgICAgICAnbnVtYmVyJyAgICAgICAgICAgICAgICA9PiAkd2lubmVyX2FycmF5WzBdWydudW1iZXInXSwKICAgICAgICAgICAgJ2NvdXBvbl9wcml6ZV9pZCcgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsnY291cG9uX3ByaXplX2lkJ10sCiAgICAgICAgICAgICdjb3Vwb25fY3VzdG9tZXJfaWQnICAgID0+ICR3aW5uZXJfYXJyYXlbMF1bJ2NvdXBvbl9jdXN0b21lcl9pZCddLAogICAgICAgICAgICAnZmlyc3RfbmFtZScgICAgICAgICAgICA9PiAkd2lubmVyX2FycmF5WzBdWydmaXJzdF9uYW1lJ10sCiAgICAgICAgICAgICdsYXN0X25hbWUnICAgICAgICAgICAgID0+ICR3aW5uZXJfYXJyYXlbMF1bJ2xhc3RfbmFtZSddLAogICAgICAgICAgICAnZW1haWwnICAgICAgICAgICAgICAgICA9PiAkd2lubmVyX2FycmF5WzBdWydlbWFpbCddLAogICAgICAgICAgICAnZGFzaGVkX3Bob25lJyAgICAgICAgICA9PiBpbXBsb2RlKCctJywgc3RyX3NwbGl0KCR3aW5uZXJfYXJyYXlbMF1bJ3Bob25lJ10sIDMpKSwKICAgICAgICAgICAgJ3Bob25lJyAgICAgICAgICAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsncGhvbmUnXSwKICAgICAgICAgICAgJ2NvdXBvbl9jb2RlX2lkJyAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsnY291cG9uX2NvZGVfaWQnXSwKICAgICAgICAgICAgJ2RiX3RpbWVzdGFtcCcgICAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsndGltZXN0YW1wJ10sCiAgICAgICAgICAgICdkYXNoZWRfY291cG9uX2NvZGUnICAgID0+IGltcGxvZGUoJy0nLCBzdHJfc3BsaXQoJHdpbm5lcl9hcnJheVswXVsnY291cG9uX2NvZGUnXSwgNCkpLAogICAgICAgICAgICAnY291cG9uX2NvZGUnICAgICAgICAgICA9PiAkd2lubmVyX2FycmF5WzBdWydjb3Vwb25fY29kZSddCiAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbWFpbCcsICRlbWFpbF9hcnJheSk7CiAgICAgICAgCiAgICAgICAgJGJvZHkgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRoaXMtPkdldFRlbXBsYXRlKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJykpOwogICAgICAgICAgICAgICAgCiAgICAgICAgJG1haWwtPlNldEJvZHkoJGJvZHkpOwogICAgICAgICRtYWlsLT5TZXRGcm9tKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnKSk7CiAgICAgICAgJG1haWwtPlNldEZyb21OYW1lKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZScpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICRmdWxsX25hbWUgPSAkd2lubmVyX2FycmF5WzBdWydmaXJzdF9uYW1lJ10gLiAnICcuICR3aW5uZXJfYXJyYXlbMF1bJ2xhc3RfbmFtZSddOyAKICAgICAgICAKICAgICAgICAkbWFpbC0+QWRkQWRkcmVzcygkd2lubmVyX2FycmF5WzBdWydlbWFpbCddLCAkZnVsbF9uYW1lKTsKICAgICAgICAKICAgICAgICAkcmVzID0gJG1haWwtPlNlbmQoKTsKICAgIH0KfQoKQCR0aGlzLT5TZW5kRXZlbnQoJ1VwQ291cG9uV2lubmVyQWRkZWQnLCAkZGJfYXJyYXkpOwokcGFyYW1zID0gYXJyYXkoJ3dpbm5lcl9tZXNzYWdlJz0+ICdzX2FkZGVkLHdpbm5lcl9zJywgJ2FjdGl2ZV90YWInID0+ICd3aW5uZXInKTsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.winner_withdraw_coupon.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ud2lubmVyX3dpdGhkcmF3X2NvdXBvbi5waHAgMSAyMDExLTA2LTEyIDE1OjI1OjI3WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMSBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDaGVja1Blcm1pc3Npb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ3ByaXplJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokY291cG9uX2NvZGVfaWQgPSAnJzsKCmlmIChpc3NldCgkcGFyYW1zWydjb3Vwb25fY29kZV9pZCddKSkgewogICAgJGNvdXBvbl9jb2RlX2lkID0gdHJpbShwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICRwYXJhbXNbJ2NvdXBvbl9jb2RlX2lkJ10pKTsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGRiX2FycmF5ID0gYXJyYXkoJ2NvdXBvbl9jb2RlX2lkJyA9PiAkY291cG9uX2NvZGVfaWQsICdjb3Vwb25fcHJpemVfaWQnID0+ICcwJyk7CgokY29kZWRiID0gbmV3IGNvdXBvbl9jb2RlREFPKCk7CgokY29kZWRiLT51cGRhdGUoJGRiX2FycmF5KTsKCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvbldpbm5lckFkZGVkJywgJGRiX2FycmF5KTsKJHBhcmFtcyA9IGFycmF5KCd3aW5uZXJfbWVzc2FnZSc9PiAnc19kZWxldGVkLHdpbm5lcl9zJywgJ2FjdGl2ZV90YWInID0+ICd3aW5uZXInKTsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGJyLz4KCjxiPjAuMC44IHZlcnNpb248L2I+IC0gMjIgb2t0IDIwMTEgPGJyIC8+Cgo8dWw+CjxsaT5NYWtlIGRlcGVuZGVuZCBvbiBVcFV0aWxzJz0+JzAuMC40PC9saT4KPGxpPkFkZCBQYXlQYWwgZG9uYXRpb24gYnV0dG9uIHRvIGRvY3VtZW50YXRpb248L2xpPgo8bGk+Q01TTVMgMS4xMCBjb21wYXRpYmxlPC9saT4KPC91bD4KCjxiPjAuMC43IHZlcnNpb248L2I+IC0gMTIgYXVnIDIwMTEgPGJyIC8+Cgo8dWw+CjxsaT5BZGQgYXV0b2xvYWRlcjwvbGk+CjxsaT5QbGFjZSBjb25zdGFudHMgb3V0c2lkZSBtb2R1bGUgY2xhc3M8L2xpPgo8bGk+TWFrZSBkZXBlbmRlbmQgb24gVXBVdGlscyc9PicwLjAuMzwvbGk+CjwvdWw+CgoKPGI+MC4wLjYgdmVyc2lvbjwvYj4gLSAyMCBqdW4gMjAxMSA8YnIgLz4KCjx1bD4KPGxpPk1ha2UgY291cG9uX2FjdGlvbl9pZCBvcHRpb25hbCBmb3Igc2hvd19wcml6ZSBhY3Rpb248L2xpPgo8bGk+VHdlYWsgdXNlciBub3RpZmljYXRpb24gZm9yIHBlcmlvZCBhZGQsIGVkaXQsIGRlbGV0ZTwvbGk+CjxsaT5SZW1vdmUgYW5jaG9yIGZyb20gZmFjdG9yeSB0ZW1wbGF0ZSBwcml6ZTwvbGk+CjxsaT5Nb2R1bGUgYWRkZWQgdG8gdHJhbnNsYXRpb24gY2VudGVyPC9saT4KPGxpPkFkZGVkIGR1dGNoIHRyYW5zbGF0aW9uIGxhbmcvZXh0L25sX05MLnBocDwvbGk+CjwvdWw+Cgo8Yj4wLjAuNSB2ZXJzaW9uIGluaXRpYWwgdmVyc2lvbjwvYj4gLSA5IGp1biAyMDExCgoKCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/show_register.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogKiAjIGZvcm1zCiAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgKi8KCi8qIG1haW5mb3JtICovIAoKLmZvcm1kaXYgewogICAgY29sb3I6ICMwMDAwMDA7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICBmbG9hdDogbGVmdDsgCiAgICB3aWR0aDogNzIwcHg7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIHsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwMDAwOwp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93eCwKZmllbGRzZXQubWFpbmZvcm0gLnJvdyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDk5JTsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBjbGVhcjogYm90aDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLmhlYWRlciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDk5JTsKICAgIGNvbG9yOiAjMDBhNWYwOwogICAgZm9udC1zaXplOiAxLjVlbTsKICAgIGxpbmUtaGVpZ2h0OiAxZW07CiAgICBtYXJnaW4tYm90dG9tOiAzNnB4OwogICAgY2xlYXI6IGJvdGg7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IGxhYmVsLApmaWVsZHNldC5tYWluZm9ybSAucm93IGxhYmVsIHsKICAgIGZvbnQtc2l6ZTogNzUlOwogICAgY29sb3I6ICMwMDAwMDA7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZzogNHB4IDRweCA0cHggNHB4OwogICAgd2lkdGg6IDE0OHB4OyAvKiAxNjAgLSA0IC0gNCAtIDQgZXh0cmEgKi8KICAgIG1hcmdpbi1ib3R0b206IDFweDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBzcGFuLnJlcXVpcmVkLApmaWVsZHNldC5tYWluZm9ybSAucm93eCBzcGFuLnJlcXVpcmVkIHsKICAgIGZsb2F0OiByaWdodDsKICAgIGNvbG9yOiAjZTQwMDc0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IHNwYW4uZXJyb3IsCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IHNwYW4uZXJyb3IgewogICAgZGlzcGxheTogaW5saW5lOwogICAgZmxvYXQ6IHJpZ2h0OwogICAgY29sb3I6ICNlNDAwNzQ7CiAgICBmb250LXNpemU6IDUwJTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL21vZHVsZXMvVXBDb3Vwb24vaW1hZ2VzL2Fycm93X2Zvcm1fZXJyb3IuZ2lmJyk7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyNHB4IGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBwYWRkaW5nOiA0cHggMHB4IDRweCAzOXB4OwogICAgd2lkdGg6IDI1MHB4OyAvKiAyNDAgLSA0IC0gMTQgICovCiAgICBoZWlnaHQ6IDI0cHg7CiAgICBsaW5lLWhlaWdodDogMjRweDsKfSAgICAKCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgbGFiZWwuY2hlY2tib3hfdHh0LApmaWVsZHNldC5tYWluZm9ybSAucm93eCBsYWJlbC5jaGVja2JveF90eHQgewogICAgd2lkdGg6IDIwMHB4OyAKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBzcGFuLmJnLCAKZmllbGRzZXQubWFpbmZvcm0gLnJvd3ggc3Bhbi5iZyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZzogNHB4IDRweCA0cHggNHB4OwogICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvbW9kdWxlcy9pbWFnZXMvcGF0dGVybi1ncmV5LmdpZicpOwp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IHNwYW4udHh0LCAKZmllbGRzZXQubWFpbmZvcm0gLnJvd3ggc3Bhbi50eHQgewogICAgZm9udC1zaXplOiA1MCU7CiAgICBjb2xvcjogIzAwMDAwMDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nOiA0cHggNHB4IDRweCA0cHg7CiAgICBtYXJnaW4tYm90dG9tOiA0cHg7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IHNwYW4uYmctcmFkaW8sCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IHNwYW4uYmctY2hlY2tib3ggewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmc6IDRweCA0cHggNHB4IDRweDsKICAgIG1hcmdpbi1ib3R0b206IDRweDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBzZWxlY3QgewogICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsKICAgIHdpZHRoOiAyMzBweDsKICAgIGhlaWdodDogMjBweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGE1ZjA7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQgewogICAgd2lkdGg6IDIzMHB4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgIzAwYTVmMDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBpbnB1dC5jbXNfdGV4dGZpZWxkX3NtYWxsIHsKICAgIHdpZHRoOiA1M3B4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgIzAwYTVmMDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyAuaW5wdXRmaWxlIHsKICAgIHdpZHRoOiAyMzBweDsKICAgIGhlaWdodDogMjRweDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyAuaW5wdXRmaWxlOmhvdmVyIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IC0yNHB4Owp9CgovKiBmaWxlX2lucHV0ICovCgpmaWVsZHNldC5tYWluZm9ybSAucm93IC5maWxlX2lucHV0X3RleHRib3ggewogICAgZGlzcGxheTogaW5saW5lOwogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogMTcwcHg7CiAgICBmbG9hdDogbGVmdDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyAuZmlsZV9pbnB1dF90ZXh0Ym94X2Vycm9yIHsKICAgIGRpc3BsYXk6IGlubGluZTsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDE3MHB4OwogICAgZmxvYXQ6IGxlZnQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTQwMDc0OwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IC5maWxlX2lucHV0X2RpdiB7CiAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICBmbG9hdDogbGVmdDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgCiAgICB3aWR0aDogNjBweDsgCiAgICBoZWlnaHQ6IDI0cHg7IAogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyAuZmlsZV9pbnB1dF9idXR0b24gewogICAgZGlzcGxheTogaW5saW5lOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAogICAgdG9wOiAwcHg7CiAgICB3aWR0aDogNjBweDsgCiAgICBoZWlnaHQ6IDI0cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTAwOwogICAgZm9udC1zaXplOiA4MCU7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGNvbG9yOiAjMDAwMDAwOwogICAgYm9yZGVyOiAwOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IC5maWxlX2lucHV0X2hpZGRlbiwKZmllbGRzZXQubWFpbmZvcm0gLnJvdyAuY21zX2Jyb3dzZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMHB4OyAKICAgIHRvcDogMHB4OyAKICAgIHdpZHRoOiA2MHB4OwogICAgaGVpZ2h0OiAyNHB4OwogICAgZm9udC1zaXplOiA0NXB4OwogICAgb3BhY2l0eTogMC4wOyAKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsgCiAgICAtbXMtZmlsdGVyOiAiYWxwaGEob3BhY2l0eT0wKSI7IAogICAgLWtodG1sLW9wYWNpdHk6IDA7IAogICAgLW1vei1vcGFjaXR5OiAwOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgoKLyogL2ZpbGVfaW5wdXQgKi8KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQuZXJyb3IgewogICAgYm9yZGVyOiAxcHggc29saWQgI2U0MDA3NDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBpbnB1dDpob3ZlciwgCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQ6Zm9jdXMsCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQuZmlsZTpob3ZlciwgCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQuZmlsZTpmb2N1cyB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTQwMDc0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IHNlbGVjdDpob3ZlciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTQwMDc0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IHNlbGVjdC5lcnJvciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTQwMDc0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IG9wdGlvbjpob3ZlciwgCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgb3B0aW9uOmZvY3VzIHsKICAgIGJhY2tncm91bmQ6ICNjY2VkZmM7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgdGV4dGFyZWEgewogICAgd2lkdGg6IDIzMHB4OwogICAgaGVpZ2h0OiAxMDZweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGE1ZjA7CiAgICBvdmVyZmxvdzogYXV0bzsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyB0ZXh0YXJlYTpob3ZlciwgCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgdGV4dGFyZWE6Zm9jdXMgewogICAgYm9yZGVyOiAxcHggc29saWQgI2U0MDA3NDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyB0ZXh0YXJlYS5lcnJvciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTQwMDc0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93eCBsYWJlbC5yYWRpbyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIC8qIHdpZHRoOiA5N3B4OyAqLwogICAgdGV4dC1pbmRlbnQ6IC0xNXB4OwogICAgcGFkZGluZzogNHB4IDRweCA0cHggMTVweDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL21vZHVsZXMvVXBDb3Vwb24vaW1hZ2VzL21haW5mb3JtLXJhZGlvLWJnLmdpZicpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93eCBsYWJlbC5jaGVja2JveCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIC8qIHdpZHRoOiA5OSU7ICovCiAgICB0ZXh0LWluZGVudDogLTE1cHg7CiAgICBwYWRkaW5nOiA0cHggNHB4IDRweCAxNXB4OwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvbW9kdWxlcy9VcENvdXBvbi9pbWFnZXMvbWFpbmZvcm0tY2hlY2tib3gtYmcuZ2lmJyk7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IGxhYmVsLnJhZGlvLWJpZyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxNXB4OwogICAgdGV4dC1pbmRlbnQ6IC0xNXB4OwogICAgcGFkZGluZzogNHB4IDRweCA0cHggMTVweDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL21vZHVsZXMvVXBDb3Vwb24vaW1hZ2VzL21haW5mb3JtLXJhZGlvLWJnLmdpZicpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93eCBsYWJlbC5jaGVja2JveC1iaWcgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTVweDsKICAgIHRleHQtaW5kZW50OiAtMTVweDsKICAgIHBhZGRpbmc6IDRweCA0cHggNHB4IDE1cHg7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9tb2R1bGVzL1VwQ291cG9uL2ltYWdlcy9tYWluZm9ybS1jaGVja2JveC1iZy5naWYnKTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgY2VudGVyOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvd3ggc3Bhbi5yYWRpby1iaWcsCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IHNwYW4uY2hlY2tib3gtYmlnIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogMjA1cHg7ICAgIAp9ICAgIAoKZmllbGRzZXQubWFpbmZvcm0gLnJvd3ggaW5wdXQucmFkaW8sCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IGlucHV0LmNoZWNrYm94IHsKICAgIHdpZHRoOiAxM3B4OwogICAgaGVpZ2h0OiAxM3B4OwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMHB4IDBweCAwcHggNHB4OwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRvcDogLTFweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXI6IDA7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgLmJ1dHRvbi1jb250YWluZXIgewogICAgZGlzcGxheTogYmxvY2s7IAogICAgZmxvYXQ6IGxlZnQ7IAogICAgd2lkdGg6IDEyMHB4Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IGlucHV0LmNtc19zdWJtaXQsCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQuY21zX3Jlc2V0IHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICB3aWR0aDogMTE1cHg7CiAgICBoZWlnaHQ6IDI0cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGZvbnQtc2l6ZTogODAlOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwMDsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCB0b3A7CiAgICBib3JkZXI6IDAgbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDBweDsKICAgIC8qIHBhZGRpbmc6IDI0cHggMHB4IDBweCAwcHg7ICovICAvKiA8LS0tIHJlbW92ZSB0ZXh0ICovIAogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBpbnB1dFt0eXBlPXN1Ym1pdF06aG92ZXIuY21zX3N1Ym1pdCwKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBpbnB1dFt0eXBlPXJlc2V0XTpob3Zlci5jbXNfcmVzZXQgewogICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/docs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/docs/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3CgogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgpzb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MuCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAp0byB0YWtlIGF3YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHdvcmtzLiAgQnkgY29udHJhc3QsCnRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQpzb2Z0d2FyZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFdlLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB1c2UgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3N0IG9mIG91ciBzb2Z0d2FyZTsgaXQgYXBwbGllcyBhbHNvIHRvCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91CndhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3CmZyZWUgcHJvZ3JhbXMsIGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5b3UKdGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuICBUaGVyZWZvcmUsIHlvdSBoYXZlCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZgp5b3UgbW9kaWZ5IGl0OiByZXNwb25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lwaWVudHMgdGhlIHNhbWUKZnJlZWRvbXMgdGhhdCB5b3UgcmVjZWl2ZWQuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUKb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKa25vdyB0aGVpciByaWdodHMuCgogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoKKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIExpY2Vuc2UKZ2l2aW5nIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSBpdC4KCiAgRm9yIHRoZSBkZXZlbG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4cGxhaW5zCnRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZSBzb2Z0d2FyZS4gIEZvciBib3RoIHVzZXJzJyBhbmQKYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcwpjaGFuZ2VkLCBzbyB0aGF0IHRoZWlyIHByb2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KYXV0aG9ycyBvZiBwcmV2aW91cyB2ZXJzaW9ucy4KCiAgU29tZSBkZXZpY2VzIGFyZSBkZXNpZ25lZCB0byBkZW55IHVzZXJzIGFjY2VzcyB0byBpbnN0YWxsIG9yIHJ1bgptb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUgc29mdHdhcmUgaW5zaWRlIHRoZW0sIGFsdGhvdWdoIHRoZSBtYW51ZmFjdHVyZXIKY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKcHJvdGVjdGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlLiAgVGhlIHN5c3RlbWF0aWMKcGF0dGVybiBvZiBzdWNoIGFidXNlIG9jY3VycyBpbiB0aGUgYXJlYSBvZiBwcm9kdWN0cyBmb3IgaW5kaXZpZHVhbHMgdG8KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCmhhdmUgZGVzaWduZWQgdGhpcyB2ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGliaXQgdGhlIHByYWN0aWNlIGZvciB0aG9zZQpwcm9kdWN0cy4gIElmIHN1Y2ggcHJvYmxlbXMgYXJpc2Ugc3Vic3RhbnRpYWxseSBpbiBvdGhlciBkb21haW5zLCB3ZQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKb2YgdGhlIEdQTCwgYXMgbmVlZGVkIHRvIHByb3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMuCgogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuClN0YXRlcyBzaG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8gcmVzdHJpY3QgZGV2ZWxvcG1lbnQgYW5kIHVzZSBvZgpzb2Z0d2FyZSBvbiBnZW5lcmFsLXB1cnBvc2UgY29tcHV0ZXJzLCBidXQgaW4gdGhvc2UgdGhhdCBkbywgd2Ugd2lzaCB0bwphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKbWFrZSBpdCBlZmZlY3RpdmVseSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgdGhlIEdQTCBhc3N1cmVzIHRoYXQKcGF0ZW50cyBjYW5ub3QgYmUgdXNlZCB0byByZW5kZXIgdGhlIHByb2dyYW0gbm9uLWZyZWUuCgogIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCm1vZGlmaWNhdGlvbiBmb2xsb3cuCgogICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFORCBDT05ESVRJT05TCgogIDAuIERlZmluaXRpb25zLgoKICAiVGhpcyBMaWNlbnNlIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgIkNvcHlyaWdodCIgYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMgb2YKd29ya3MsIHN1Y2ggYXMgc2VtaWNvbmR1Y3RvciBtYXNrcy4KCiAgIlRoZSBQcm9ncmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRlciB0aGlzCkxpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4gICJMaWNlbnNlZXMiIGFuZAoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCgogIFRvICJtb2RpZnkiIGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCmV4YWN0IGNvcHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9mIHRoZQplYXJsaWVyIHdvcmsgb3IgYSB3b3JrICJiYXNlZCBvbiIgdGhlIGVhcmxpZXIgd29yay4KCiAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3JhbSBvciBhIHdvcmsgYmFzZWQKb24gdGhlIFByb2dyYW0uCgogIFRvICJwcm9wYWdhdGUiIGEgd29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKcGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKZGlzdHJpYnV0aW9uICh3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uKSwgbWFraW5nIGF2YWlsYWJsZSB0byB0aGUKcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgoKICBUbyAiY29udmV5IiBhIHdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90aGVyCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAphIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgoKICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKdG8gdGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJsZQpmZWF0dXJlIHRoYXQgKDEpIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UsIGFuZCAoMikKdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUKZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQp3b3JrIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZgp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQptZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgoKICAxLiBTb3VyY2UgQ29kZS4KCiAgVGhlICJzb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsKZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQpmb3JtIG9mIGEgd29yay4KCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgppbnRlcmZhY2VzIHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4KCiAgVGhlICJTeXN0ZW0gTGlicmFyaWVzIiBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVkZSBhbnl0aGluZywgb3RoZXIKdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhhdCBNYWpvcgpDb21wb25lbnQsIGFuZCAoYikgc2VydmVzIG9ubHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCmltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCiJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5zIGEgbWFqb3IgZXNzZW50aWFsIGNvbXBvbmVudAooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtCihpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHdvcmsgcnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCnByb2R1Y2UgdGhlIHdvcmssIG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0LgoKICBUaGUgIkNvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMgYWxsCnRoZSBzb3VyY2UgY29kZSBuZWVkZWQgdG8gZ2VuZXJhdGUsIGluc3RhbGwsIGFuZCAoZm9yIGFuIGV4ZWN1dGFibGUKd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bwpjb250cm9sIHRob3NlIGFjdGl2aXRpZXMuICBIb3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKU3lzdGVtIExpYnJhcmllcywgb3IgZ2VuZXJhbC1wdXJwb3NlIHRvb2xzIG9yIGdlbmVyYWxseSBhdmFpbGFibGUgZnJlZQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9yIGV4YW1wbGUsIENvcnJlc3BvbmRpbmcgU291cmNlCmluY2x1ZGVzIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2UgZmlsZXMgZm9yCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQpsaW5rZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gcmVxdWlyZSwKc3VjaCBhcyBieSBpbnRpbWF0ZSBkYXRhIGNvbW11bmljYXRpb24gb3IgY29udHJvbCBmbG93IGJldHdlZW4gdGhvc2UKc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgoKICBUaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IHVzZXJzCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZwpTb3VyY2UuCgogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdApzYW1lIHdvcmsuCgogIDIuIEJhc2ljIFBlcm1pc3Npb25zLgoKICBBbGwgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZApjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRseSBhZmZpcm1zIHlvdXIgdW5saW1pdGVkCnBlcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0uICBUaGUgb3V0cHV0IGZyb20gcnVubmluZyBhCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwpjb250ZW50LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3dsZWRnZXMgeW91cgpyaWdodHMgb2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQgYnkgY29weXJpZ2h0IGxhdy4KCiAgWW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdApjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucwppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCm9mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQp3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCm5vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVyZWQgd29ya3MKZm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKeW91ciBjb3B5cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5vdCBhbGxvd2VkOyBzZWN0aW9uIDEwCm1ha2VzIGl0IHVubmVjZXNzYXJ5LgoKICAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgoKICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCjExIG9mIHRoZSBXSVBPIGNvcHlyaWdodCB0cmVhdHkgYWRvcHRlZCBvbiAyMCBEZWNlbWJlciAxOTk2LCBvcgpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCm1lYXN1cmVzLgoKICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCmNpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgppcyBlZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aCByZXNwZWN0IHRvCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKdXNlcnMsIHlvdXIgb3IgdGhpcmQgcGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9uIG9mCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCgogIDQuIENvbnZleWluZyBWZXJiYXRpbSBDb3BpZXMuCgogIFlvdSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJjZSBjb2RlIGFzIHlvdQpyZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdSBjb25zcGljdW91c2x5IGFuZAphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIHN0YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQpub24tcGVybWlzc2l2ZSB0ZXJtcyBhZGRlZCBpbiBhY2NvcmQgd2l0aCBzZWN0aW9uIDcgYXBwbHkgdG8gdGhlIGNvZGU7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCnJlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgoKICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksCmFuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Igd2FycmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCgogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuCgogIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKdGVybXMgb2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCiAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRhdGUuCgogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMKICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgogICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQgbW9kaWZpZXMgdGhlIHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bwogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4KCiAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29yaywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcwogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCiAgICBMaWNlbnNlIHdpbGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rpb24gNwogICAgYWRkaXRpb25hbCB0ZXJtcywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0cywKICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vCiAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhlIHdvcmsgaW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90CiAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBpZiB5b3UgaGF2ZSBzZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgoKICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBkaXNwbGF5CiAgICBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCiAgICB3b3JrIG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby4KCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAp3b3Jrcywgd2hpY2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAphbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCiJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAp1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawppbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRoZSBvdGhlcgpwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLgoKICA2LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKb2Ygc2VjdGlvbnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCm1hY2hpbmUtcmVhZGFibGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwKaW4gb25lIG9mIHRoZXNlIHdheXM6CgogICAgYSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0KICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgoKICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgYQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMKICAgIGxvbmcgYXMgeW91IG9mZmVyIHNwYXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAogICAgbW9kZWwsIHRvIGdpdmUgYW55b25lIHdobyBwb3NzZXNzZXMgdGhlIG9iamVjdCBjb2RlIGVpdGhlciAoMSkgYQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCiAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAogICAgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLCBmb3IgYSBwcmljZSBubwogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCiAgICBjb252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmcm9tIGEgbmV0d29yayBzZXJ2ZXIgYXQgbm8gY2hhcmdlLgoKICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlCiAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhpcwogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAogICAgd2l0aCBzdWJzZWN0aW9uIDZiLgoKICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCiAgICBwbGFjZSAoZ3JhdGlzIG9yIGZvciBhIGNoYXJnZSksIGFuZCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCiAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgdG8gY29weSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLiAgSWYgdGhlIHBsYWNlIHRvCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQogICAgdGhhdCBzdXBwb3J0cyBlcXVpdmFsZW50IGNvcHlpbmcgZmFjaWxpdGllcywgcHJvdmlkZWQgeW91IG1haW50YWluCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UsIHlvdSByZW1haW4gb2JsaWdhdGVkIHRvIGVuc3VyZSB0aGF0IGl0IGlzCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgoKICAgIGUpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbiwgcHJvdmlkZWQKICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCiAgICBTb3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCiAgICBjaGFyZ2UgdW5kZXIgc3Vic2VjdGlvbiA2ZC4KCiAgQSBzZXBhcmFibGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCmZyb20gdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGFzIGEgU3lzdGVtIExpYnJhcnksIG5lZWQgbm90IGJlCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KCiAgQSAiVXNlciBQcm9kdWN0IiBpcyBlaXRoZXIgKDEpIGEgImNvbnN1bWVyIHByb2R1Y3QiLCB3aGljaCBtZWFucyBhbnkKdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgppbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcHJvZHVjdCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgpwcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFydGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKdHlwaWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCmFjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAppcyBhIGNvbnN1bWVyIHByb2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBzdWJzdGFudGlhbApjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAp0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVjdC4KCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLApwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKYW5kIGV4ZWN1dGUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgYSBjb3ZlcmVkIHdvcmsgaW4gdGhhdCBVc2VyIFByb2R1Y3QgZnJvbQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKY29kZSBpcyBpbiBubyBjYXNlIHByZXZlbnRlZCBvciBpbnRlcmZlcmVkIHdpdGggc29sZWx5IGJlY2F1c2UKbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCgogIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgd29yayB1bmRlciB0aGlzIHNlY3Rpb24gaW4sIG9yIHdpdGgsIG9yCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCnBhcnQgb2YgYSB0cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQpVc2VyIFByb2R1Y3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2lwaWVudCBpbiBwZXJwZXR1aXR5IG9yIGZvciBhCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlCkNvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCmJ5IHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24uICBCdXQgdGhpcyByZXF1aXJlbWVudCBkb2VzIG5vdCBhcHBseQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAptb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCmJlZW4gaW5zdGFsbGVkIGluIFJPTSkuCgogIFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEKcmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNlcnZpY2UsIHdhcnJhbnR5LCBvciB1cGRhdGVzCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCnRoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKbmV0d29yayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYgbWF0ZXJpYWxseSBhbmQKYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCnByb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCgogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAppbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5CmRvY3VtZW50ZWQgKGFuZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgp1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4KCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4KCiAgIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiIGFyZSB0ZXJtcyB0aGF0IHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMKTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgpBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCmJlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIExpY2Vuc2UsIHRvIHRoZSBleHRlbnQKdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVseQp1bmRlciB0aG9zZSBwZXJtaXNzaW9ucywgYnV0IHRoZSBlbnRpcmUgUHJvZ3JhbSByZW1haW5zIGdvdmVybmVkIGJ5CnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4KCiAgV2hlbiB5b3UgY29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5b3VyIG9wdGlvbgpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKaXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgpyZW1vdmFsIGluIGNlcnRhaW4gY2FzZXMgd2hlbiB5b3UgbW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLApmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCgogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQphZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCnRoYXQgbWF0ZXJpYWwpIHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRoIHRlcm1zOgoKICAgIGEpIERpc2NsYWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQogICAgdGVybXMgb2Ygc2VjdGlvbnMgMTUgYW5kIDE2IG9mIHRoaXMgTGljZW5zZTsgb3IKCiAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2FsIG5vdGljZXMgb3IKICAgIGF1dGhvciBhdHRyaWJ1dGlvbnMgaW4gdGhhdCBtYXRlcmlhbCBvciBpbiB0aGUgQXBwcm9wcmlhdGUgTGVnYWwKICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yCgogICAgYykgUHJvaGliaXRpbmcgbWlzcmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3IKCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yCiAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCiAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJrczsgb3IKCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0CiAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgogICAgaXQpIHdpdGggY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZvcgogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgogICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgoKICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgpyZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CnJlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwgY29udGFpbnMgYSBub3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgpyZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCmEgZnVydGhlciByZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcgdW5kZXIgdGhpcwpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKbm90IHN1cnZpdmUgc3VjaCByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcuCgogIElmIHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKbXVzdCBwbGFjZSwgaW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcywgYSBzdGF0ZW1lbnQgb2YgdGhlCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZwp3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgoKICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQpmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwp0aGUgYWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IGVpdGhlciB3YXkuCgogIDguIFRlcm1pbmF0aW9uLgoKICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgaXQgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZApwYXJhZ3JhcGggb2Ygc2VjdGlvbiAxMSkuCgogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCmxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQpwcm92aXNpb25hbGx5LCB1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0bHkgYW5kCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKaG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMKcHJpb3IgdG8gNjAgZGF5cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgoKICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMKcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3RpZmllcyB5b3Ugb2YgdGhlCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKcmVjZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0CmNvcHlyaWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMgYWZ0ZXIKeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCgogIFRlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CnJlaW5zdGF0ZWQsIHlvdSBkbyBub3QgcXVhbGlmeSB0byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KCiAgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhhdmluZyBDb3BpZXMuCgogIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8gcmVjZWl2ZSBvcgpydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAgQW5jaWxsYXJ5IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCnRvIHJlY2VpdmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhvd2V2ZXIsCm5vdGhpbmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbwpub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKY292ZXJlZCB3b3JrLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4KCiAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgoKICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5CnJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZApwcm9wYWdhdGUgdGhhdCB3b3JrLCBzdWJqZWN0IHRvIHRoaXMgTGljZW5zZS4gIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgoKICBBbiAiZW50aXR5IHRyYW5zYWN0aW9uIiBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFuCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4Kb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9yZ2FuaXphdGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKd29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRyYW5zYWN0aW9uLCBlYWNoIHBhcnR5IHRvIHRoYXQKdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCmxpY2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVyZXN0IGhhZCBvciBjb3VsZApnaXZlIHVuZGVyIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNzaW9uIG9mIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKdGhlIHByZWRlY2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRzLgoKICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9mCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4KCiAgMTEuIFBhdGVudHMuCgogIEEgImNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVyIHRoaXMKTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCgogIEEgY29udHJpYnV0b3IncyAiZXNzZW50aWFsIHBhdGVudCBjbGFpbXMiIGFyZSBhbGwgcGF0ZW50IGNsYWltcwpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCmhlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgYnkgc29tZSBtYW5uZXIsIHBlcm1pdHRlZApieSB0aGlzIExpY2Vuc2UsIG9mIG1ha2luZywgdXNpbmcsIG9yIHNlbGxpbmcgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24sCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCmNvbnNlcXVlbmNlIG9mIGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAgRm9yCnB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIGluY2x1ZGVzIHRoZSByaWdodCB0byBncmFudApwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YKdGhpcyBMaWNlbnNlLgoKICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQpwYXRlbnQgbGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50IGNsYWltcywgdG8KbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0IGFuZCBvdGhlcndpc2UgcnVuLCBtb2RpZnkgYW5kCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCgogIEluIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFyYWdyYXBocywgYSAicGF0ZW50IGxpY2Vuc2UiIGlzIGFueSBleHByZXNzCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAooc3VjaCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQgbm90IHRvCnN1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAiZ3JhbnQiIHN1Y2ggYSBwYXRlbnQgbGljZW5zZSB0byBhCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCnBhdGVudCBhZ2FpbnN0IHRoZSBwYXJ0eS4KCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwKYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKdG8gY29weSwgZnJlZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHRocm91Z2ggYQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAp0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIHRvIGJlIHNvCmF2YWlsYWJsZSwgb3IgKDIpIGFycmFuZ2UgdG8gZGVwcml2ZSB5b3Vyc2VsZiBvZiB0aGUgYmVuZWZpdCBvZiB0aGUKcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhlIHBhdGVudApsaWNlbnNlIHRvIGRvd25zdHJlYW0gcmVjaXBpZW50cy4gICJLbm93aW5nbHkgcmVseWluZyIgbWVhbnMgeW91IGhhdmUKYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCmNvdmVyZWQgd29yayBpbiBhIGNvdW50cnksIG9yIHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKaW4gYSBjb3VudHJ5LCB3b3VsZCBpbmZyaW5nZSBvbmUgb3IgbW9yZSBpZGVudGlmaWFibGUgcGF0ZW50cyBpbiB0aGF0CmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCgogIElmLCBwdXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJhbnNhY3Rpb24gb3IKYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQpjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdvcmsgYXV0aG9yaXppbmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5Cm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKeW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKd29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuCgogIEEgcGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2VzIG5vdCBpbmNsdWRlIHdpdGhpbgp0aGUgc2NvcGUgb2YgaXRzIGNvdmVyYWdlLCBwcm9oaWJpdHMgdGhlIGV4ZXJjaXNlIG9mLCBvciBpcwpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKc3BlY2lmaWNhbGx5IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAp3b3JrIGlmIHlvdSBhcmUgYSBwYXJ0eSB0byBhbiBhcnJhbmdlbWVudCB3aXRoIGEgdGhpcmQgcGFydHkgdGhhdCBpcwppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50CnRvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCnRoZSB3b3JrLCBhbmQgdW5kZXIgd2hpY2ggdGhlIHRoaXJkIHBhcnR5IGdyYW50cywgdG8gYW55IG9mIHRoZQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKcGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMgb2YgdGhlIGNvdmVyZWQgd29yawpjb252ZXllZCBieSB5b3UgKG9yIGNvcGllcyBtYWRlIGZyb20gdGhvc2UgY29waWVzKSwgb3IgKGIpIHByaW1hcmlseQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdApjb250YWluIHRoZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJyYW5nZW1lbnQsCm9yIHRoYXQgcGF0ZW50IGxpY2Vuc2Ugd2FzIGdyYW50ZWQsIHByaW9yIHRvIDI4IE1hcmNoIDIwMDcuCgogIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBleGNsdWRpbmcgb3IgbGltaXRpbmcKYW55IGltcGxpZWQgbGljZW5zZSBvciBvdGhlciBkZWZlbnNlcyB0byBpbmZyaW5nZW1lbnQgdGhhdCBtYXkKb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgoKICAxMi4gTm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KCiAgSWYgY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgpvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCmNvdmVyZWQgd29yayBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91IG1heQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKdG8gY29sbGVjdCBhIHJveWFsdHkgZm9yIGZ1cnRoZXIgY29udmV5aW5nIGZyb20gdGhvc2UgdG8gd2hvbSB5b3UgY29udmV5CnRoZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhpcwpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCgogIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIHlvdSBoYXZlCnBlcm1pc3Npb24gdG8gbGluayBvciBjb21iaW5lIGFueSBjb3ZlcmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQpjb21iaW5lZCB3b3JrLCBhbmQgdG8gY29udmV5IHRoZSByZXN1bHRpbmcgd29yay4gIFRoZSB0ZXJtcyBvZiB0aGlzCkxpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0byB0aGUgcGFydCB3aGljaCBpcyB0aGUgY292ZXJlZCB3b3JrLApidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCnNlY3Rpb24gMTMsIGNvbmNlcm5pbmcgaW50ZXJhY3Rpb24gdGhyb3VnaCBhIG5ldHdvcmsgd2lsbCBhcHBseSB0byB0aGUKY29tYmluYXRpb24gYXMgc3VjaC4KCiAgMTQuIFJldmlzZWQgVmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlLgoKICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZgp0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCiAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgIm9yIGFueSBsYXRlciB2ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUKb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgbnVtYmVyZWQKdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCgogIElmIHRoZSBQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKcHVibGljIHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGEgdmVyc2lvbiBwZXJtYW5lbnRseSBhdXRob3JpemVzIHlvdQp0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJvZ3JhbS4KCiAgTGF0ZXIgbGljZW5zZSB2ZXJzaW9ucyBtYXkgZ2l2ZSB5b3UgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQKcGVybWlzc2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIGFyZSBpbXBvc2VkIG9uIGFueQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCmxhdGVyIHZlcnNpb24uCgogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgoKICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQKSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWQpPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTQpJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YKQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuCgogIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1PRElGSUVTIEFORC9PUiBDT05WRVlTClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQpHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUKVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRgpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRApQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFBST0dSQU1TKSwKRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgpTVUNIIERBTUFHRVMuCgogIDE3LiBJbnRlcnByZXRhdGlvbiBvZiBTZWN0aW9ucyAxNSBhbmQgMTYuCgogIElmIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5IGFuZCBsaW1pdGF0aW9uIG9mIGxpYWJpbGl0eSBwcm92aWRlZAphYm92ZSBjYW5ub3QgYmUgZ2l2ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFjY29yZGluZyB0byB0aGVpciB0ZXJtcywKcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCmFuIGFic29sdXRlIHdhaXZlciBvZiBhbGwgY2l2aWwgbGlhYmlsaXR5IGluIGNvbm5lY3Rpb24gd2l0aCB0aGUKUHJvZ3JhbSwgdW5sZXNzIGEgd2FycmFudHkgb3IgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdHkgYWNjb21wYW5pZXMgYQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcwoKICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CnBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuCgogIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0CnRvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKc3RhdGUgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgogIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQKbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOgoKICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KICAgIFRoaXMgcHJvZ3JhbSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCiAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCgpUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCm1pZ2h0IGJlIGRpZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQgYm94Ii4KCiAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHNjaG9vbCwKaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmIG5lY2Vzc2FyeS4KRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgYW5kIGhvdyB0byBhcHBseSBhbmQgZm9sbG93IHRoZSBHTlUgR1BMLCBzZWUKPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtCmludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdQptYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKdGhlIGxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZAo8aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw+Lgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_action.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfYWN0aW9uLnBocCAxIDIwMTEtMDYtMTIgMTU6MjU6MjdaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0gc3RhcnQgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRhY3Rpb25kYiA9IG5ldyBjb3Vwb25fYWN0aW9uREFPKCk7CgppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0X21hc3NkZWxldGVfYWN0aW9uJ10pKSB7CiAgICAKICAgIGlmKCBpc3NldCgkcGFyYW1zWydwa2V5cyddKSAmJiBpc19hcnJheSgkcGFyYW1zWydwa2V5cyddKSAmJgogICAgY291bnQoJHBhcmFtc1sncGtleXMnXSkgPiAwICkgewogICAgCiAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1sncGtleXMnXSBhcyAkcGtleSkgewogICAgICAgICAgICAkYWN0aW9uZGItPmRlbGV0ZSgkcGtleSk7ICAKICAgICAgICB9ICAgIAogICAgICAgIAogICAgICAgICRwYXJhbXMgPSBhcnJheSgnYWN0aW9uX21lc3NhZ2UnPT4gJ3NfZGVsZXRlZCxhY3Rpb25fcycsICdhY3RpdmVfdGFiJyA9PiAnYWN0aW9uJyk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICAKICAgIH0KICAgIAp9CgokYWN0aW9uX2RhdGEgPSAkYWN0aW9uZGItPmZldGNoX2FsbCgpOwoKJGVudHJ5YXJyYXkgPSBhcnJheSgpOwoKZm9yZWFjaCAoJGFjdGlvbl9kYXRhIGFzICRrZXkgPT4gJHZhbHVlKSB7CgogICAgJG9uZXJvdyA9IG5ldyBzdGRDbGFzcygpOwogICAgCiAgICBmb3JlYWNoICgkdmFsdWUgYXMgJHN1Yl9rZXkgPT4gJHN1Yl92YWx1ZSkgewogICAgICAgICRvbmVyb3ctPiRzdWJfa2V5ID0gJHZhbHVlWyRzdWJfa2V5XTsgICAKICAgIH0KICAgICAgICAKICAgICRvbmVyb3ctPmVkaXR1cmwgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhY3Rpb25fYWRkX2VkaXQnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgncGtleSc9PiR2YWx1ZVsnY291cG9uX2FjdGlvbl9pZCddKSwgJycsICd0cnVlJyk7CiAgICAKICAgICRvbmVyb3ctPmVkaXRfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICRpZCwgCiAgICAgICAgJ2FjdGlvbl9hZGRfZWRpdCcsIAogICAgICAgICRyZXR1cm5pZCwKICAgICAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLAogICAgICAgICR0aGlzLT5MYW5nKCdlZGl0JyksJycsJycsJ3N5c3RlbWljb24nKSwKICAgICAgICBhcnJheSgncGtleSc9PiR2YWx1ZVsnY291cG9uX2FjdGlvbl9pZCddKQogICAgKTsKCiAgICAkb25lcm93LT5kZWxldGVfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICRpZCwgCiAgICAgICAgJ2FjdGlvbl9kZWxldGUnLCAKICAgICAgICAkcmV0dXJuaWQsIAogICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywKICAgICAgICAkdGhpcy0+TGFuZygnZGVsZXRlJyksJycsJycsJ3N5c3RlbWljb24nKSwKICAgICAgICBhcnJheSgncGtleSc9PiR2YWx1ZVsnY291cG9uX2FjdGlvbl9pZCddKSwgCiAgICAgICAgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKQogICAgKTsKICAgIAogICAgJG9uZXJvdy0+c2VsZWN0ID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAncGtleXNbXScsICR2YWx1ZVsnY291cG9uX2FjdGlvbl9pZCddKTsKCiAgICBpZiAoICR2YWx1ZVsnc3RhdHVzJ10gPT0gJzEnICkgewogICAgICAgICRvbmVyb3ctPmFwcHJvdmVfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FjdGlvbl9jaGFuZ2Vfc3RhdHVzJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygncmV2ZXJ0X3N0YXR1cycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdzdGF0dXMnID0+IDAsICdwa2V5JyA9PiAkdmFsdWVbJ2NvdXBvbl9hY3Rpb25faWQnXSkpOwogICAgfSBlbHNlIHsKICAgICAgICAkb25lcm93LT5hcHByb3ZlX2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhY3Rpb25fY2hhbmdlX3N0YXR1cycsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdhcHByb3ZlX3N0YXR1cycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdzdGF0dXMnID0+IDEsICdwa2V5JyA9PiAkdmFsdWVbJ2NvdXBvbl9hY3Rpb25faWQnXSkpOyAgICAKICAgIH0KCiAgICAkZW50cnlhcnJheVtdID0gJG9uZXJvdzsKCn0KCQkKJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkZW50cnlhcnJheSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBkZWZpbmUgdGV4dCBmb3IgbGFiZWxzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMJCgkKJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RpdGxlJykpOwkKJHNtYXJ0eS0+YXNzaWduKCdhbGlhc190ZXh0JywgJHRoaXMtPkxhbmcoJ2FsaWFzJykpOwkKJHNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlX3RleHQnLCAkdGhpcy0+TGFuZygnc3RhcnRfZGF0ZScpKTsJCiRzbWFydHktPmFzc2lnbignZW5kX2RhdGVfdGV4dCcsICR0aGlzLT5MYW5nKCdlbmRfZGF0ZScpKTsJCiRzbWFydHktPmFzc2lnbignc3RhdHVzX3RleHQnLCAkdGhpcy0+TGFuZygnc3RhdHVzJykpOwkKJHNtYXJ0eS0+YXNzaWduKCdzZWxlY3RfdGV4dCcsICR0aGlzLT5MYW5nKCdzZWxlY3QnKSk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc2V0dXAgYnV0dG9ucyBhbmQgbGlua3MKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGZvcm1fcGFyYW1zID0gYXJyYXkoKTsKJGZvcm1fcGFyYW1zWydhY3RpdmVfdGFiJ10gPSAnYWN0aW9uJzsKCmlmIChpc3NldCgkcGFyYW1zWydhY3Rpb25fbWVzc2FnZSddKSkgewogICAgICAgICRhY3Rpb25fbWVzc2FnZSA9IGV4cGxvZGUoIiwiLCAkcGFyYW1zWydhY3Rpb25fbWVzc2FnZSddKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2FjdGlvbl9tZXNzYWdlJywkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJGFjdGlvbl9tZXNzYWdlWzBdLCBhcnJheSgkdGhpcy0+TGFuZygkYWN0aW9uX21lc3NhZ2VbMV0pKSkpKTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAncG9zdCcsICcnLCBmYWxzZSwgJycsICRmb3JtX3BhcmFtcywgJycpKTsKCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzZGVsZXRlJywKJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdF9tYXNzZGVsZXRlX2FjdGlvbicsICR0aGlzLT5MYW5nKCdkZWxldGVfc2VsZWN0ZWRfaXRlbXMnKSwgJycsICcnLCAkdGhpcy0+TGFuZygnYXJleW91c3VyZScpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FkZF9saW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAkaWQsIAogICAgJ2FjdGlvbl9hZGRfZWRpdCcsIAogICAgJHJldHVybmlkLCAKICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgCiAgICAkdGhpcy0+TGFuZygnc19hZGQnLCBhcnJheSgkdGhpcy0+TGFuZygnYWN0aW9uX3MnKSkpLAogICAgJycsCiAgICAnJywKICAgICdzeXN0ZW1pY29uJyksIAogICAgYXJyYXkoKSwgCiAgICAnJywgCiAgICBmYWxzZSwgCiAgICBmYWxzZSwgCiAgICAnJykgLicgJy4gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAnYWN0aW9uX2FkZF9lZGl0JywgCiAgICAgICAgJHJldHVybmlkLAogICAgICAgICR0aGlzLT5MYW5nKCdzX2FkZCcsIGFycmF5KCR0aGlzLT5MYW5nKCdhY3Rpb25fcycpKSksIAogICAgICAgIGFycmF5KCksCiAgICAgICAgJycsIAogICAgICAgIGZhbHNlLCAKICAgICAgICBmYWxzZSwgCiAgICAgICAgJ2NsYXNzPSJwYWdlb3B0aW9ucyInKQogICAgKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aW9uJywgJHRoaXMtPkxhbmcoJ2FjdGlvbl9zJykpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFByb2Nlc3NUZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FjdGlvbl9saXN0LnRwbCcpOwoJCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_period.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfcGVyaW9kLnBocCAxIDIwMTEtMDYtMTIgMTU6MjU6MjdaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0gc3RhcnQgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwZXJpb2RkYiA9IG5ldyBjb3Vwb25fcGVyaW9kREFPKCk7CiRhY3Rpb25kYiA9IG5ldyBjb3Vwb25fYWN0aW9uREFPKCk7CgppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0X21hc3NkZWxldGVfcGVyaW9kJ10pKSB7CiAgICAKICAgIGlmKCBpc3NldCgkcGFyYW1zWydwa2V5cyddKSAmJiBpc19hcnJheSgkcGFyYW1zWydwa2V5cyddKSAmJgogICAgY291bnQoJHBhcmFtc1sncGtleXMnXSkgPiAwICkgewogICAgCiAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1sncGtleXMnXSBhcyAkcGtleSkgewogICAgICAgICAgICAkcGVyaW9kZGItPmRlbGV0ZSgkcGtleSk7ICAKICAgICAgICB9ICAgIAogICAgICAgIAogICAgICAgICRwYXJhbXMgPSBhcnJheSgncGVyaW9kX21lc3NhZ2UnPT4gJ3NfZGVsZXRlZCxwZXJpb2RfcycsICdhY3RpdmVfdGFiJyA9PiAncGVyaW9kJyk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICAKICAgIH0KICAgIAp9CgokYWN0aW9uX2Ryb3Bkb3duID0gJGFjdGlvbmRiLT5mZXRjaF9hY3Rpb25kcm9wZG93bigpOwokcGVyaW9kX2Ryb3Bkb3duID0gJHBlcmlvZGRiLT5mZXRjaF9wZXJpb2Rkcm9wZG93bigpOwokcGVyaW9kX2RhdGEgPSAkcGVyaW9kZGItPmZldGNoX2FsbCgpOwoKJGVudHJ5YXJyYXkgPSBhcnJheSgpOwoKJHRydWVpbWFnZSA9ICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdzZXRmYWxzZScpLCcnLCcnLCdzeXN0ZW1pY29uJyk7CiRmYWxzZWltYWdlID0gJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdzZXR0cnVlJyksJycsJycsJ3N5c3RlbWljb24nKTsKCQpmb3JlYWNoICgkcGVyaW9kX2RhdGEgYXMgJGtleSA9PiAkdmFsdWUpIHsKCiAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CiAgICAKICAgIGZvcmVhY2ggKCR2YWx1ZSBhcyAkc3ViX2tleSA9PiAkc3ViX3ZhbHVlKSB7CiAgICAgICAgJG9uZXJvdy0+JHN1Yl9rZXkgPSAkdmFsdWVbJHN1Yl9rZXldOwogICAgICAgIAogICAgICAgIGlmICgkc3ViX2tleSA9PSAnY291cG9uX3BlcmlvZF9pZCcpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRwZXJpb2RfZHJvcGRvd25bJHZhbHVlWyRzdWJfa2V5XV0pKSB7ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRvbmVyb3ctPmNvdXBvbl9wZXJpb2RfdGl0bGUgPSAkcGVyaW9kX2Ryb3Bkb3duWyRvbmVyb3ctPmNvdXBvbl9wZXJpb2RfaWRdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICgkc3ViX2tleSA9PSAnY291cG9uX2FjdGlvbl9pZCcpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRhY3Rpb25fZHJvcGRvd25bJHZhbHVlWyRzdWJfa2V5XV0pKSB7ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRvbmVyb3ctPmNvdXBvbl9hY3Rpb25fdGl0bGUgPSAkYWN0aW9uX2Ryb3Bkb3duWyRvbmVyb3ctPmNvdXBvbl9hY3Rpb25faWRdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgfQogICAgICAgIAogICAgJG9uZXJvdy0+ZWRpdHVybCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3BlcmlvZF9hZGRfZWRpdCcsICRyZXR1cm5pZCwgJycsIGFycmF5KCdwa2V5Jz0+JHZhbHVlWydjb3Vwb25fcGVyaW9kX2lkJ10pLCAnJywgJ3RydWUnKTsKICAgIAogICAgJG9uZXJvdy0+ZWRpdF9saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAncGVyaW9kX2FkZF9lZGl0JywgCiAgICAgICAgJHJldHVybmlkLAogICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsCiAgICAgICAgJHRoaXMtPkxhbmcoJ2VkaXQnKSwnJywnJywnc3lzdGVtaWNvbicpLAogICAgICAgIGFycmF5KCdwa2V5Jz0+JHZhbHVlWydjb3Vwb25fcGVyaW9kX2lkJ10pCiAgICApOwoKICAgICRvbmVyb3ctPmRlbGV0ZV9saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAncGVyaW9kX2RlbGV0ZScsIAogICAgICAgICRyZXR1cm5pZCwgCiAgICAgICAgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLAogICAgICAgICR0aGlzLT5MYW5nKCdkZWxldGUnKSwnJywnJywnc3lzdGVtaWNvbicpLAogICAgICAgIGFycmF5KCdwa2V5Jz0+JHZhbHVlWydjb3Vwb25fcGVyaW9kX2lkJ10pLCAKICAgICAgICAkdGhpcy0+TGFuZygnYXJleW91c3VyZScpCiAgICApOwogICAgCiAgICAkb25lcm93LT5zZWxlY3QgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdwa2V5c1tdJywgJHZhbHVlWydjb3Vwb25fcGVyaW9kX2lkJ10pOwogICAgCiAgICAkb25lcm93LT5pc19maW5hbCA9ICRvbmVyb3ctPmlzX2ZpbmFsID09ICcxJyA/ICR0aGlzLT5MYW5nKCd5ZXMnKSA6ICR0aGlzLT5MYW5nKCdubycpOwogICAgCiAgICAgICAgCiAgICBpZiAoICR2YWx1ZVsnc3RhdHVzJ10gPT0gJzEnICkgewogICAgICAgICRvbmVyb3ctPmFwcHJvdmVfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3BlcmlvZF9jaGFuZ2Vfc3RhdHVzJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygncmV2ZXJ0X3N0YXR1cycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdzdGF0dXMnID0+IDAsICdwa2V5JyA9PiAkdmFsdWVbJ2NvdXBvbl9wZXJpb2RfaWQnXSkpOwogICAgfSBlbHNlIHsKICAgICAgICAkb25lcm93LT5hcHByb3ZlX2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdwZXJpb2RfY2hhbmdlX3N0YXR1cycsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdhcHByb3ZlX3N0YXR1cycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdzdGF0dXMnID0+IDEsICdwa2V5JyA9PiAkdmFsdWVbJ2NvdXBvbl9wZXJpb2RfaWQnXSkpOyAgICAKICAgIH0KCiAgICAkZW50cnlhcnJheVtdID0gJG9uZXJvdzsKCn0KCQkKJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkZW50cnlhcnJheSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBkZWZpbmUgdGV4dCBmb3IgbGFiZWxzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMJCgokc21hcnR5LT5hc3NpZ24oJ2FjdGlvbl90ZXh0JywgJHRoaXMtPkxhbmcoJ2FjdGlvbicpKTsJCiRzbWFydHktPmFzc2lnbigndGl0bGVfdGV4dCcsICR0aGlzLT5MYW5nKCd0aXRsZScpKTsJCiRzbWFydHktPmFzc2lnbignc3RhcnRfZGF0ZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXJ0X2RhdGUnKSk7CQokc21hcnR5LT5hc3NpZ24oJ2VuZF9kYXRlX3RleHQnLCAkdGhpcy0+TGFuZygnZW5kX2RhdGUnKSk7CQokc21hcnR5LT5hc3NpZ24oJ2lzX2ZpbmFsX3RleHQnLCAkdGhpcy0+TGFuZygnaXNfZmluYWwnKSk7CQokc21hcnR5LT5hc3NpZ24oJ3N0YXR1c190ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXR1cycpKTsJCiRzbWFydHktPmFzc2lnbignc2VsZWN0X3RleHQnLCAkdGhpcy0+TGFuZygnc2VsZWN0JykpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNldHVwIGJ1dHRvbnMgYW5kIGxpbmtzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRmb3JtX3BhcmFtcyA9IGFycmF5KCk7CiRmb3JtX3BhcmFtc1snYWN0aXZlX3RhYiddID0gJ3BlcmlvZCc7CgppZiAoaXNzZXQoJHBhcmFtc1sncGVyaW9kX21lc3NhZ2UnXSkpIHsKICAgICAgICAkcGVyaW9kX21lc3NhZ2UgPSBleHBsb2RlKCIsIiwgJHBhcmFtc1sncGVyaW9kX21lc3NhZ2UnXSk7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdwZXJpb2RfbWVzc2FnZScsJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCRwZXJpb2RfbWVzc2FnZVswXSwgYXJyYXkoJHRoaXMtPkxhbmcoJHBlcmlvZF9tZXNzYWdlWzFdKSkpKSk7Cn0KCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnJywgZmFsc2UsICcnLCAkZm9ybV9wYXJhbXMsICcnKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2RlbGV0ZScsCiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXRfbWFzc2RlbGV0ZV9wZXJpb2QnLCAkdGhpcy0+TGFuZygnZGVsZXRlX3NlbGVjdGVkX2l0ZW1zJyksICcnLCAnJywgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGRfbGluaycsICR0aGlzLT5DcmVhdGVMaW5rKAogICAgJGlkLCAKICAgICdwZXJpb2RfYWRkX2VkaXQnLCAKICAgICRyZXR1cm5pZCwgCiAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsIAogICAgJHRoaXMtPkxhbmcoJ3NfYWRkJywgYXJyYXkoJHRoaXMtPkxhbmcoJ3BlcmlvZF9zJykpKSwKICAgICcnLAogICAgJycsCiAgICAnc3lzdGVtaWNvbicpLCAKICAgIGFycmF5KCksIAogICAgJycsIAogICAgZmFsc2UsIAogICAgZmFsc2UsIAogICAgJycpIC4nICcuICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICRpZCwgCiAgICAgICAgJ3BlcmlvZF9hZGRfZWRpdCcsIAogICAgICAgICRyZXR1cm5pZCwKICAgICAgICAkdGhpcy0+TGFuZygnc19hZGQnLCBhcnJheSgkdGhpcy0+TGFuZygncGVyaW9kX3MnKSkpLCAKICAgICAgICBhcnJheSgpLAogICAgICAgICcnLCAKICAgICAgICBmYWxzZSwgCiAgICAgICAgZmFsc2UsIAogICAgICAgICdjbGFzcz0icGFnZW9wdGlvbnMiJykKICAgICk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BlcmlvZCcsICR0aGlzLT5MYW5nKCdwZXJpb2RfcycpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBQcm9jZXNzVGVtcGxhdGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwZXJpb2RfbGlzdC50cGwnKTsKCQojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_preferences.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfcHJlZmVyZW5jZXMucGhwIDEgMjAxMS0wNi0xMiAxNToyNToyN1ogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc2V0dXAgZm9ybQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoaXNzZXQoJHBhcmFtc1sncHJlZmVyZW5jZXNfbWVzc2FnZSddKSkgewogICAgICAgICRwcmVmZXJlbmNlc19tZXNzYWdlID0gZXhwbG9kZSgiLCIsICRwYXJhbXNbJ3ByZWZlcmVuY2VzX21lc3NhZ2UnXSk7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdwcmVmZXJlbmNlc19tZXNzYWdlJywkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJHByZWZlcmVuY2VzX21lc3NhZ2VbMF0sIGFycmF5KCR0aGlzLT5MYW5nKCRwcmVmZXJlbmNlc19tZXNzYWdlWzFdKSkpKSk7Cn0KCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwncHJlZmVyZW5jZXNfYWRkX2VkaXQnLCRyZXR1cm5pZCkpOwoKLy8kc21hcnR5LT5hc3NpZ24oJ3VuZGVyY29uc3RydWN0aW9uX3RleHQnLCAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJ3ByZWZlcmVuY2VzX3VuZGVyY29uc3RydWN0aW9uJykpKTsKCi8vIGVtYWlsX3JlZ2lzdGVyZWRfY3VzdG9tZXIKCiRzbWFydHktPmFzc2lnbignc2VjdGlvbl9lbWFpbF9yZWdpc3RlcmVkX2N1c3RvbWVyJywkdGhpcy0+TGFuZygncF9zZWN0aW9uX2VtYWlsX3JlZ2lzdGVyZWRfY3VzdG9tZXInKSk7CgppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2VtYWlsX3JlZ2lzdGVyZWRfdHJ1ZV9mYWxzZScsMCkgPT0gMSkgewogICAgJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX3RydWVfZmFsc2VfdGV4dCcsJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCdwX2VtYWlsX3JlZ2lzdGVyZWRfdHJ1ZScpKSk7ICAgIAp9IGVsc2UgewogICAgJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX3RydWVfZmFsc2VfdGV4dCcsJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ3BfZW1haWxfcmVnaXN0ZXJlZF9mYWxzZScpKSk7ICAgIAp9Cgokc21hcnR5LT5hc3NpZ24oJ2VtYWlsX3JlZ2lzdGVyZWRfY3VzdG9tZXJfdGV4dCcsJHRoaXMtPkxhbmcoJ3BfZW1haWxfcmVnaXN0ZXJlZF9jaGVjaycpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX2N1c3RvbWVyX2lucHV0JywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2VtYWlsX3JlZ2lzdGVyZWRfY2hlY2snLCcxJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9jaGVjaycsMCkpKTsKCiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9zdWJqZWN0X3RleHQnLCR0aGlzLT5MYW5nKCdwX2VtYWlsX3JlZ2lzdGVyZWRfc3ViamVjdCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3RfaW5wdXQnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QnLCR0aGlzLT5MYW5nKCdwX2VtYWlsX3JlZ2lzdGVyZWRfc3ViamVjdF9kZWZhdWx0JykpLDMwLDUwKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2VtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19lbWFpbF90ZXh0JywkdGhpcy0+TGFuZygncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnKSk7CiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsX2lucHV0JywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsJywnJyksMzAsMTAwKSk7CiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsX2hlbHAnLCR0aGlzLT5MYW5nKCdwX2VtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19lbWFpbF9oZWxwJykpOwoKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZV90ZXh0JywkdGhpcy0+TGFuZygncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZV9pbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2VtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19uYW1lJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX25hbWUnLCcnKSwzMCwxMDApKTsKCiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3RleHQnLCR0aGlzLT5MYW5nKCdwX2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJHRoaXMtPkdldFRlbXBsYXRlKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2UnKSwgJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZScpKTsKCiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnMnLCR0aGlzLT5MYW5nKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFycycpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFyc19saXN0JywkdGhpcy0+TGFuZygnZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnNfbGlzdCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFyc19saW5rJywkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW5mby5naWYnLCAkdGhpcy0+TGFuZygnZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnMnKSwnJywnJywnc3lzdGVtaWNvbicpKTsKCiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3dpbm5lcl90ZXh0JywkdGhpcy0+TGFuZygncF9lbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJykpOwokc21hcnR5LT5hc3NpZ24oJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJHRoaXMtPkdldFRlbXBsYXRlKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJyksICdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJykpOwoKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnMnLCR0aGlzLT5MYW5nKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnMnKSk7CiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3dpbm5lcl92YXJzX2xpc3QnLCR0aGlzLT5MYW5nKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnNfbGlzdCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnNfbGluaycsJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2luZm8uZ2lmJywgJHRoaXMtPkxhbmcoJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfdmFycycpLCcnLCcnLCdzeXN0ZW1pY29uJykpOwoKLyoKCiRzbWFydHktPmFzc2lnbignc2VjdGlvbl90aXRsZV8wMl90ZXh0JywkdGhpcy0+TGFuZygncHJlZmVyZW5jZXNfc2VjdGlvbl90aXRsZV8wMicpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZG91YmxlX3RleHQnLCR0aGlzLT5MYW5nKCdwcmVmZXJlbmNlc19kb3VibGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZG91YmxlX2lucHV0JywKCQkkdGhpcy0+TGFuZygncHJlZmVyZW5jZXNfZG91YmxlX3dpZHRoJykgLiAnOiZuYnNwOycgLgoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2RvdWJsZV9hJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RvdWJsZV9hJyw4MDApLCA0LCA0ICkgLgoJCSdweCAmbmJzcDsmbmJzcDsnIC4gJHRoaXMtPkxhbmcoJ3ByZWZlcmVuY2VzX2RvdWJsZV9oZWlnaHQnKSAuICc6Jm5ic3A7JyAuCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnZG91YmxlX2InLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZG91YmxlX2InLDgwMCksIDQsIDQgKSAuICdweCcKKTsKCiovCgokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kICgpKTsKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgUHJvY2Vzc1RlbXBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSAoJ3ByZWZlcmVuY2VzX2xpc3QudHBsJyk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_prize.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfcHJpemUucGhwIDEgMjAxMS0wNi0xMiAxNToyNToyN1ogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbSBzdGFydCAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHByaXplZGIgPSBuZXcgY291cG9uX3ByaXplREFPKCk7CiRhY3Rpb25kYiA9IG5ldyBjb3Vwb25fYWN0aW9uREFPKCk7CiRwZXJpb2RkYiA9IG5ldyBjb3Vwb25fcGVyaW9kREFPKCk7CiRtaXhlZGRiID0gbmV3IGNvdXBvbl9taXhlZERBTygpOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdF9tYXNzZGVsZXRlX3ByaXplJ10pKSB7CiAgICAKICAgIGlmKCBpc3NldCgkcGFyYW1zWydwa2V5cyddKSAmJiBpc19hcnJheSgkcGFyYW1zWydwa2V5cyddKSAmJgogICAgY291bnQoJHBhcmFtc1sncGtleXMnXSkgPiAwICkgewogICAgCiAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1sncGtleXMnXSBhcyAkcGtleSkgewogICAgICAgICAgICAkcHJpemVkYi0+ZGVsZXRlKCRwa2V5KTsgIAogICAgICAgIH0gICAgCiAgICAgICAgCiAgICAgICAgJHBhcmFtcyA9IGFycmF5KCdwcml6ZV9tZXNzYWdlJz0+ICdzX2RlbGV0ZWQscHJpemVfcycsICdhY3RpdmVfdGFiJyA9PiAncHJpemUnKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKICAgIAogICAgfQogICAgCn0KCiRwcml6ZV9kYXRhID0gJG1peGVkZGItPmZldGNoX3ByaXplcygpOwokYWN0aW9uZHJvcGRvd24gPSAkYWN0aW9uZGItPmZldGNoX2FjdGlvbmRyb3Bkb3duKCk7CiRwZXJpb2Rkcm9wZG93biA9ICRwZXJpb2RkYi0+ZmV0Y2hfcGVyaW9kZHJvcGRvd24oKTsKCiRlbnRyeWFycmF5ID0gYXJyYXkoKTsKCmZvcmVhY2ggKCRwcml6ZV9kYXRhIGFzICRrZXkgPT4gJHZhbHVlKSB7CgogICAgJG9uZXJvdyA9IG5ldyBzdGRDbGFzcygpOwogICAgCiAgICBmb3JlYWNoICgkdmFsdWUgYXMgJHN1Yl9rZXkgPT4gJHN1Yl92YWx1ZSkgewogICAgICAgICRvbmVyb3ctPiRzdWJfa2V5ID0gJHZhbHVlWyRzdWJfa2V5XTsgICAgCiAgICB9CiAgICAKICAgICRvbmVyb3ctPmNvdXBvbl9hY3Rpb25fdmFsdWUgPSAkYWN0aW9uZHJvcGRvd25bJG9uZXJvdy0+Y291cG9uX2FjdGlvbl9pZF07CiAgICAkb25lcm93LT5jb3Vwb25fcGVyaW9kX3ZhbHVlID0gJHBlcmlvZGRyb3Bkb3duWyRvbmVyb3ctPmNvdXBvbl9wZXJpb2RfaWRdOwogICAgCiAgICAkb25lcm93LT5lZGl0dXJsID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncHJpemVfYWRkX2VkaXQnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgncGtleSc9PiR2YWx1ZVsnY291cG9uX3ByaXplX2lkJ10pLCAnJywgJ3RydWUnKTsKICAgIAogICAgJG9uZXJvdy0+ZWRpdF9saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAncHJpemVfYWRkX2VkaXQnLCAKICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywKICAgICAgICAkdGhpcy0+TGFuZygnZWRpdCcpLCcnLCcnLCdzeXN0ZW1pY29uJyksCiAgICAgICAgYXJyYXkoJ3BrZXknPT4kdmFsdWVbJ2NvdXBvbl9wcml6ZV9pZCddKQogICAgKTsKCiAgICAkb25lcm93LT5kZWxldGVfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICRpZCwgCiAgICAgICAgJ3ByaXplX2RlbGV0ZScsIAogICAgICAgICRyZXR1cm5pZCwgCiAgICAgICAgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLAogICAgICAgICR0aGlzLT5MYW5nKCdkZWxldGUnKSwnJywnJywnc3lzdGVtaWNvbicpLAogICAgICAgIGFycmF5KCdwa2V5Jz0+JHZhbHVlWydjb3Vwb25fcHJpemVfaWQnXSksIAogICAgICAgICR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykKICAgICk7CiAgICAKICAgICRvbmVyb3ctPnNlbGVjdCA9ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3BrZXlzW10nLCAkdmFsdWVbJ2NvdXBvbl9wcml6ZV9pZCddKTsKCiAgICBpZiAoICR2YWx1ZVsnc3RhdHVzJ10gPT0gJzEnICkgewogICAgICAgICRvbmVyb3ctPmFwcHJvdmVfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3ByaXplX2NoYW5nZV9zdGF0dXMnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdyZXZlcnRfc3RhdHVzJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3N0YXR1cycgPT4gMCwgJ3BrZXknID0+ICR2YWx1ZVsnY291cG9uX3ByaXplX2lkJ10pKTsgICAgICAgIAogICAgfSBlbHNlIHsKICAgICAgICAkb25lcm93LT5hcHByb3ZlX2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdwcml6ZV9jaGFuZ2Vfc3RhdHVzJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywgJHRoaXMtPkxhbmcoJ2FwcHJvdmVfc3RhdHVzJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3N0YXR1cycgPT4gMSwgJ3BrZXknID0+ICR2YWx1ZVsnY291cG9uX3ByaXplX2lkJ10pKTsgICAgICAgIAogICAgfQoKICAgICRlbnRyeWFycmF5W10gPSAkb25lcm93OwoKfQoJCQokdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdpdGVtcycsICRlbnRyeWFycmF5KTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkZW50cnlhcnJheSkpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGRlZmluZSB0ZXh0IGZvciBsYWJlbHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwkKCQokc21hcnR5LT5hc3NpZ24oJ3ByaXplX2NvZGVfdGV4dCcsICR0aGlzLT5MYW5nKCdwcml6ZV9jb2RlJykpOwokc21hcnR5LT5hc3NpZ24oJ251bWJlcl90ZXh0JywgJHRoaXMtPkxhbmcoJ251bWJlcicpKTsKCiRzbWFydHktPmFzc2lnbigndGl0ZWxfdGV4dCcsICR0aGlzLT5MYW5nKCd0aXRlbCcpKTsJCiRzbWFydHktPmFzc2lnbignYWN0aW9uX3BlcmlvZF90ZXh0JywgJHRoaXMtPkxhbmcoJ2FjdGlvbl9wZXJpb2QnKSk7CQokc21hcnR5LT5hc3NpZ24oJ3N0YXR1c190ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXR1cycpKTsJCiRzbWFydHktPmFzc2lnbignc2VsZWN0X3RleHQnLCAkdGhpcy0+TGFuZygnc2VsZWN0JykpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNldHVwIGJ1dHRvbnMgYW5kIGxpbmtzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRmb3JtX3BhcmFtcyA9IGFycmF5KCk7CiRmb3JtX3BhcmFtc1snYWN0aXZlX3RhYiddID0gJ3ByaXplJzsKCmlmIChpc3NldCgkcGFyYW1zWydwcml6ZV9tZXNzYWdlJ10pKSB7CiAgICAgICAgJHByaXplX21lc3NhZ2UgPSBleHBsb2RlKCIsIiwgJHBhcmFtc1sncHJpemVfbWVzc2FnZSddKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ3ByaXplX21lc3NhZ2UnLCR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygkcHJpemVfbWVzc2FnZVswXSwgYXJyYXkoJHRoaXMtPkxhbmcoJHByaXplX21lc3NhZ2VbMV0pKSkpKTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAncG9zdCcsICcnLCBmYWxzZSwgJycsICRmb3JtX3BhcmFtcywgJycpKTsKCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzZGVsZXRlJywKJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdF9tYXNzZGVsZXRlX3ByaXplJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9zZWxlY3RlZF9pdGVtcycpLCAnJywgJycsICR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkX2xpbmsnLCAkdGhpcy0+Q3JlYXRlTGluaygKICAgICRpZCwgCiAgICAncHJpemVfYWRkX2VkaXQnLCAKICAgICRyZXR1cm5pZCwgCiAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsIAogICAgJHRoaXMtPkxhbmcoJ3NfYWRkJywgYXJyYXkoJHRoaXMtPkxhbmcoJ3ByaXplX3MnKSkpLAogICAgJycsCiAgICAnJywKICAgICdzeXN0ZW1pY29uJyksIAogICAgYXJyYXkoKSwgCiAgICAnJywgCiAgICBmYWxzZSwgCiAgICBmYWxzZSwgCiAgICAnJykgLicgJy4gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAncHJpemVfYWRkX2VkaXQnLCAKICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgJHRoaXMtPkxhbmcoJ3NfYWRkJywgYXJyYXkoJHRoaXMtPkxhbmcoJ3ByaXplX3MnKSkpLCAKICAgICAgICBhcnJheSgpLAogICAgICAgICcnLCAKICAgICAgICBmYWxzZSwgCiAgICAgICAgZmFsc2UsIAogICAgICAgICdjbGFzcz0icGFnZW9wdGlvbnMiJykKICAgICk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3ByaXplJywgJHRoaXMtPkxhbmcoJ3ByaXplX3MnKSk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgUHJvY2Vzc1RlbXBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncHJpemVfbGlzdC50cGwnKTsKCQojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_statistics.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfc3RhdGlzdGljcy5waHAgMiAyMDExLTA2LTEyIDE3OjA0OjEyWiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMSBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9ncmFtCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRxdWVyeSA9ICJTRUxFQ1QgdDEudGl0bGUgQVMgYWN0aW9uX3RpdGxlLAogICAgICAgICAgICAgICAgdDEuY291cG9uX2FjdGlvbl9pZCwKICAgICAgICAgICAgICAgIHQxLnN0YXJ0X2RhdGUgQVMgYWN0aW9uX3N0YXJ0X2RhdGUsCiAgICAgICAgICAgICAgICB0MS5lbmRfZGF0ZSBBUyBhY3Rpb25fZW5kX2RhdGUsCiAgICAgICAgICAgICAgICBVTklYX1RJTUVTVEFNUCh0MS5zdGFydF9kYXRlKSBBUyBhY3Rpb25fc3RhcnRfdHMsCiAgICAgICAgICAgICAgICBVTklYX1RJTUVTVEFNUCh0MS5lbmRfZGF0ZSkgQVMgYWN0aW9uX2VuZF90cywKICAgICAgICAgICAgICAgIHQyLnRpdGxlIEFTIHBlcmlvZF90aXRsZSwKICAgICAgICAgICAgICAgIHQyLmNvdXBvbl9wZXJpb2RfaWQsCiAgICAgICAgICAgICAgICB0Mi5zdGFydF9kYXRlIEFTIHBlcmlvZF9zdGFydF9kYXRlLAogICAgICAgICAgICAgICAgdDIuZW5kX2RhdGUgQVMgcGVyaW9kX2VuZF9kYXRlLAogICAgICAgICAgICAgICAgVU5JWF9USU1FU1RBTVAodDIuc3RhcnRfZGF0ZSkgQVMgcGVyaW9kX3N0YXJ0X3RzLAogICAgICAgICAgICAgICAgVU5JWF9USU1FU1RBTVAodDIuZW5kX2RhdGUpIEFTIHBlcmlvZF9lbmRfdHMKICAgICAgICAgICAgRlJPTSAiLlVQQ09VUE9OX0FDVElPTl9UQUJMRS4iIHQxLCAKICAgICAgICAgICAgICAgICIuVVBDT1VQT05fUEVSSU9EX1RBQkxFLiIgdDIKICAgICAgICAgICAgV0hFUkUgdDEuY291cG9uX2FjdGlvbl9pZCA9IHQyLmNvdXBvbl9hY3Rpb25faWQKICAgICAgICAgICAgQU5EIHQxLnN0YXR1cyA9ICcxJwogICAgICAgICAgICBBTkQgdDIuc3RhdHVzID0gJzEnCiAgICAgICAgICAgIE9SREVSIEJZIHQyLmVuZF9kYXRlIEFTQyI7CgokZGIgPSBjbXNtcygpLT5HZXREYigpOwoKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgokcXVlcnlfcGFydCA9ICJTRUxFQ1QgY291bnQoMSkgQVMgY291bnQsIAogICAgY29uY2F0KCd7bXlfa2V5fScpIEFTIG15X2tleSAKICAgIEZST00gIi5VUENPVVBPTl9DT0RFX1RBQkxFLiIgdDUsCiAgICAgICAgIi5VUENPVVBPTl9DVVNUT01FUl9UQUJMRS4iIHQ0IAogICAgV0hFUkUgdDUuY291cG9uX2N1c3RvbWVyX2lkID0gdDQuY291cG9uX2N1c3RvbWVyX2lkCiAgICBBTkQgdDQuc3RhdHVzID0gJzEnCiAgICBBTkQgdDUudGltZXN0YW1wID49ICd7cGVyaW9kX3N0YXJ0X3RzfScgCiAgICBBTkQgdDUudGltZXN0YW1wIDw9ICd7cGVyaW9kX2VuZF90c30nIjsKCiRxdWVyeSA9ICcnOwokZGJfcmVzdWx0ID0gYXJyYXkoKTsKCndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgCiAgICAkb2JqID0gbmV3IHN0ZGNsYXNzOwogICAgCiAgICBmb3JlYWNoICgkcm93IGFzICRrID0+ICR2KSB7CiAgICAgICAgJG9iai0+JGsgPSAkcm93WyRrXTsKICAgIH0KICAgICAgICAKICAgICRkYl9yZXN1bHRbXSA9ICRvYmo7CiAgICAKICAgIC8vIGJ1aWxkIHF1ZXJ5CiAgICAKICAgICR0ZW1wID0gJHF1ZXJ5X3BhcnQ7CiAgICAKICAgICR0ZW1wID0gc3RyX3JlcGxhY2UoJ3twZXJpb2Rfc3RhcnRfdHN9JywgJHJvd1sncGVyaW9kX3N0YXJ0X3RzJ10sICR0ZW1wKTsKICAgICR0ZW1wID0gc3RyX3JlcGxhY2UoJ3twZXJpb2RfZW5kX3RzfScsICRyb3dbJ3BlcmlvZF9lbmRfdHMnXSwgJHRlbXApOwogICAgJHRlbXAgPSBzdHJfcmVwbGFjZSgne215X2tleX0nLCAoJGRicmVzdWx0LT5DdXJyZW50Um93KCkgLTEpLCAkdGVtcCk7CiAgICAKICAgIGlmICgkZGJyZXN1bHQtPkN1cnJlbnRSb3coKSAhPSAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkpIHsKICAgICAgICAkdGVtcCAuPSAiXG5VTklPTiBBTExcbiI7CiAgICB9CgogICAgJHF1ZXJ5IC49ICR0ZW1wOwogICAgCn0KCi8vIGFkZCBjb3Vwb25fcGVyaW9kX2NvdW50CgokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCiRjb3Vwb25fYWN0aW9uX2NvdW50ID0gYXJyYXkoKTsKCndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgeyAgICAKICAgICRkYl9yZXN1bHRbJHJvd1snbXlfa2V5J11dLT5wZXJpb2RfY291bnQgPSAkcm93Wydjb3VudCddOwogICAgCiAgICAkY291cG9uX2FjdGlvbl9pZCA9ICRkYl9yZXN1bHRbJHJvd1snbXlfa2V5J11dLT5jb3Vwb25fYWN0aW9uX2lkOwogICAgICAgIAogICAgaWYgKGlzc2V0KCRjb3Vwb25fYWN0aW9uX2NvdW50WyRjb3Vwb25fYWN0aW9uX2lkXSkpIHsKICAgICAgICAkY291cG9uX2FjdGlvbl9jb3VudFskY291cG9uX2FjdGlvbl9pZF0gPSAoJGNvdXBvbl9hY3Rpb25fY291bnRbJGNvdXBvbl9hY3Rpb25faWRdICsgJHJvd1snY291bnQnXSk7ICAgICAKICAgIH0gZWxzZSB7CiAgICAgICAgJGNvdXBvbl9hY3Rpb25fY291bnRbJGNvdXBvbl9hY3Rpb25faWRdID0gJHJvd1snY291bnQnXTsgICAgICAgCiAgICB9CiAgICAgICAgCn0KCi8vIGFkZCBjb3Vwb25fYWN0aW9uX2NvdW50CgokY291cG9uX2FjdGlvbl9tYXRjaCA9ICcnOwoKZm9yZWFjaCAoJGRiX3Jlc3VsdCBhcyAkayA9PiAkdikgewogICAgJGFjdGlvbl9pZCA9ICRkYl9yZXN1bHRbJGtdLT5jb3Vwb25fYWN0aW9uX2lkOwogICAgJGRiX3Jlc3VsdFska10tPmFjdGlvbl9jb3VudCA9ICRjb3Vwb25fYWN0aW9uX2NvdW50WyRhY3Rpb25faWRdOwogICAgCiAgICBpZiAoJGNvdXBvbl9hY3Rpb25fbWF0Y2ggIT0gJGFjdGlvbl9pZCkgewogICAgICAgICRjb3Vwb25fYWN0aW9uX21hdGNoID0gJGFjdGlvbl9pZDsKICAgICAgICAkZGJfcmVzdWx0WyRrXS0+c2hvd19hY3Rpb25fdGl0bGUgPSAnMSc7CiAgICB9IGVsc2UgewogICAgICAgICRkYl9yZXN1bHRbJGtdLT5zaG93X2FjdGlvbl90aXRsZSA9ICcwJzsgICAgICAgIAogICAgfQogICAgCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBhc3NpZ24gc21hcnR5IHZhcmlhYmxlcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJGRiX3Jlc3VsdCk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGRiX3Jlc3VsdCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX3RleHQnLCAkdGhpcy0+TGFuZygndGl0bGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZGF0ZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXJ0X2RhdGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2RhdGVfdGV4dCcsICR0aGlzLT5MYW5nKCdlbmRfZGF0ZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdyZWdpc3RyYXRpb25zX3RleHQnLCAkdGhpcy0+TGFuZygncmVnaXN0cmF0aW9ucycpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBQcm9jZXNzVGVtcGxhdGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlICgnc3RhdGlzdGljc19saXN0LnRwbCcpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_templates.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfdGVtcGxhdGVzLnBocCAxIDIwMTEtMDYtMTIgMTU6MjU6MjdaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0gc3RhcnQgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiR0ZW1wbGF0ZV90eXBlID0gJHRoaXMtPl9nZXRfdGVtcGxhdGVfdHlwZSgpOwoKJGRlZmF1bHRfdGVtcGxhdGVzID0gYXJyYXkoKTsKJGRlZmF1bHRfdGVtcGxhdGVfdHlwZXMgPSBhcnJheSgpOwoKZm9yZWFjaCAoYXJyYXlfa2V5cygkdGVtcGxhdGVfdHlwZSkgYXMgJGspIHsKICAgICR0ZW1wbGF0ZV90eXBlX2tleSA9ICdkZWZhdWx0XycuICRrIC4gJ190ZW1wbGF0ZSc7CiAgICAkdGVtcGxhdGVfdHlwZV92YWx1ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCR0ZW1wbGF0ZV90eXBlX2tleSk7CiAgICAKICAgICRkZWZhdWx0X3RlbXBsYXRlX3R5cGVzWyRrXSA9ICRrOwogICAgCiAgICBpZiAoaXNzZXQoJHRlbXBsYXRlX3R5cGVfdmFsdWUpKSB7CiAgICAgICAgJGRlZmF1bHRfdGVtcGxhdGVzWyR0ZW1wbGF0ZV90eXBlX3ZhbHVlXSA9ICR0ZW1wbGF0ZV90eXBlX2tleTsgCiAgICB9CiAgICAKfQoKLy8gZGVsZXRlIGRlcHJlY2F0ZWQgdGVtcGxhdGUgcHJlZmVyZW5jZXMKCmZvcmVhY2ggKCRkZWZhdWx0X3RlbXBsYXRlX3R5cGVzIGFzICRrKSB7CiAgICAkX3ByZWZfbmFtZSA9ICdkZWZhdWx0XycuICRrIC4gJ190ZW1wbGF0ZSc7ICAgIAogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJF9wcmVmX25hbWUpOwp9Cgpmb3JlYWNoICgkZGVmYXVsdF90ZW1wbGF0ZXMgYXMgJGsgPT4gJHYpIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCR2LCAkayk7Cn0KCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXRfbWFzc2RlbGV0ZV90ZW1wbGF0ZXMnXSkpIHsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1sncGtleXMnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1sncGtleXMnXSkgJiYKY291bnQoJHBhcmFtc1sncGtleXMnXSkgPiAwICkgewoKICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydwa2V5cyddIGFzICRwa2V5KSB7ICAgICAgICAgICAgCiAgICAgICAgICAgICR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGtleSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoaXNzZXQoJGRlZmF1bHRfdGVtcGxhdGVzWyRwa2V5XSkpIHsKICAgICAgICAgICAgICAgICR0ZW1wbGF0ZV90eXBlX2tleSA9ICRkZWZhdWx0X3RlbXBsYXRlc1skcGtleV07ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJHRlbXBsYXRlX3R5cGVfa2V5KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHBhcmFtcyA9IGFycmF5KCd0ZW1wbGF0ZXNfbWVzc2FnZSc9PiAnc19kZWxldGVkLHRlbXBsYXRlc19zJywgJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXMnKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiAgICB9Cgp9CgokYWxsdGVtcGxhdGVzID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoKTsKCi8vIHJlbW92ZSBlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2UgaXMgdXNlZCBpbiB0aGUgc2V0dGluZ3MgdGFiCi8vIHJlbW92ZSBlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyIGlzIHVzZWQgaW4gdGhlIHNldHRpbmdzIHRhYgoKZm9yZWFjaCAoJGFsbHRlbXBsYXRlcyBhcyAkayA9PiAkdikgewogICAgaWYgKCR2ID09ICdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2UnKSB7CiAgICAgICAgdW5zZXQoJGFsbHRlbXBsYXRlc1ska10pOyAgICAgICAgCiAgICB9CiAgICBpZiAoJHYgPT0gJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXInKSB7CiAgICAgICAgdW5zZXQoJGFsbHRlbXBsYXRlc1ska10pOyAgICAgICAgCiAgICB9Cn0KCm5hdGNhc2Vzb3J0KCRhbGx0ZW1wbGF0ZXMpOwoKJGVudHJ5YXJyYXkgPSBhcnJheSgpOwoKZm9yZWFjaCggJGFsbHRlbXBsYXRlcyBhcyAkdHBsICkgewogICAgCiAgICAkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CiAgICAKICAgICRwa2V5ID0gJHRwbDsKICAgIAogICAgJG9uZXJvdy0+bmFtZSA9IHByZWdfcmVwbGFjZSgnL14oJyAuIGpvaW4oInwiLCBhcnJheV9rZXlzKCR0ZW1wbGF0ZV90eXBlKSkgLiAnKV8vJywgJycsICR0cGwpOwoKICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJHRlbXBsYXRlX3R5cGUpIGFzICRrKSAgewogICAgICAgIGlmICggcHJlZ19tYXRjaCgiL14kay8iLCAkcGtleSwgJG1hdGNoZXMpICkgewogICAgICAgICAgICAkb25lcm93LT50ZW1wbGF0ZV90eXBlID0gJHRlbXBsYXRlX3R5cGVbJGtdOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICAKICAgICRvbmVyb3ctPmVkaXR1cmwgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd0ZW1wbGF0ZV9hZGRfZWRpdCcsICRyZXR1cm5pZCwgJycsIGFycmF5KCdwa2V5Jz0+JHBrZXkpLCAnJywgJ3RydWUnKTsKICAgIAogICAgJG9uZXJvdy0+ZWRpdF9saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAndGVtcGxhdGVfYWRkX2VkaXQnLCAKICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywKICAgICAgICAkdGhpcy0+TGFuZygnZWRpdCcpLCcnLCcnLCdzeXN0ZW1pY29uJyksCiAgICAgICAgYXJyYXkoJ3BrZXknPT4kcGtleSkKICAgICk7CgogICAgJG9uZXJvdy0+ZGVsZXRlX2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAkaWQsIAogICAgICAgICd0ZW1wbGF0ZV9kZWxldGUnLCAKICAgICAgICAkcmV0dXJuaWQsIAogICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywKICAgICAgICAkdGhpcy0+TGFuZygnZGVsZXRlJyksJycsJycsJ3N5c3RlbWljb24nKSwKICAgICAgICBhcnJheSgncGtleSc9PiRwa2V5KSwgCiAgICAgICAgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKQogICAgKTsKICAgIAogICAgJG9uZXJvdy0+c2VsZWN0ID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAncGtleXNbXScsICRwa2V5KTsKICAgIAogICAgLy8gY2hhbmdlX2RlZmF1bHQKICAgIAogICAgJGRlZmF1bHQgPSBpc3NldCgkZGVmYXVsdF90ZW1wbGF0ZXNbJHBrZXldKSA/ICcxJyA6ICcwJzsKICAgIAogICAgaWYgKCAkZGVmYXVsdCA9PSAnMScgKSB7CiAgICAgICAgJG9uZXJvdy0+ZGVmYXVsdCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3RlbXBsYXRlX2NoYW5nZV9kZWZhdWx0JywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygncmV2ZXJ0X2RlZmF1bHQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZGVmYXVsdCcgPT4gMCwgJ3BrZXknID0+ICRwa2V5KSk7CiAgICB9IGVsc2UgewogICAgICAgICRvbmVyb3ctPmRlZmF1bHQgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd0ZW1wbGF0ZV9jaGFuZ2VfZGVmYXVsdCcsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdhcHByb3ZlX2RlZmF1bHQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZGVmYXVsdCcgPT4gMSwgJ3BrZXknID0+ICRwa2V5KSk7ICAgIAogICAgfQogICAgCQkJICAgIAogICAgJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7CgkKfQoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkZW50cnlhcnJheSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBkZWZpbmUgdGV4dCBmb3IgbGFiZWxzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMJCgokc21hcnR5LT5hc3NpZ24oJ25hbWVfdGV4dCcsICR0aGlzLT5MYW5nKCduYW1lJykpOwkKJHNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0X3RleHQnLCAkdGhpcy0+TGFuZygnZGVmYXVsdCcpKTsJCiRzbWFydHktPmFzc2lnbigndGVtcGxhdGVfdHlwZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX3R5cGUnKSk7CQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNldHVwIGJ1dHRvbnMgYW5kIGxpbmtzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRmb3JtX3BhcmFtcyA9IGFycmF5KCk7CiRmb3JtX3BhcmFtc1snYWN0aXZlX3RhYiddID0gJ3RlbXBsYXRlcyc7CgppZiAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGVzX21lc3NhZ2UnXSkpIHsKICAgICAgICAkdGVtcGxhdGVzX21lc3NhZ2UgPSBleHBsb2RlKCIsIiwgJHBhcmFtc1sndGVtcGxhdGVzX21lc3NhZ2UnXSk7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZXNfbWVzc2FnZScsJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCR0ZW1wbGF0ZXNfbWVzc2FnZVswXSwgYXJyYXkoJHRoaXMtPkxhbmcoJHRlbXBsYXRlc19tZXNzYWdlWzFdKSkpKSk7Cn0KCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnJywgZmFsc2UsICcnLCAkZm9ybV9wYXJhbXMsICcnKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2RlbGV0ZScsCiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXRfbWFzc2RlbGV0ZV90ZW1wbGF0ZXMnLCAkdGhpcy0+TGFuZygnZGVsZXRlX3NlbGVjdGVkX2l0ZW1zJyksICcnLCAnJywgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGRfbGluaycsICR0aGlzLT5DcmVhdGVMaW5rKAogICAgJGlkLCAKICAgICd0ZW1wbGF0ZV9hZGRfZWRpdCcsIAogICAgJHJldHVybmlkLCAKICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgCiAgICAkdGhpcy0+TGFuZygnc19hZGQnLCBhcnJheSgkdGhpcy0+TGFuZygndGVtcGxhdGVzX3MnKSkpLAogICAgJycsCiAgICAnJywKICAgICdzeXN0ZW1pY29uJyksIAogICAgYXJyYXkoKSwgCiAgICAnJywgCiAgICBmYWxzZSwgCiAgICBmYWxzZSwgCiAgICAnJykgLicgJy4gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAndGVtcGxhdGVfYWRkX2VkaXQnLCAKICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgJHRoaXMtPkxhbmcoJ3NfYWRkJywgYXJyYXkoJHRoaXMtPkxhbmcoJ3RlbXBsYXRlc19zJykpKSwKICAgICAgICBhcnJheSgpLAogICAgICAgICcnLCAKICAgICAgICBmYWxzZSwgCiAgICAgICAgZmFsc2UsIAogICAgICAgICdjbGFzcz0icGFnZW9wdGlvbnMiJykKICAgICk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgUHJvY2Vzc1RlbXBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgndGVtcGxhdGVzX2xpc3QudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_winner.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfd2lubmVyLnBocCAxIDIwMTEtMDYtMTIgMTU6MjU6MjdaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0gc3RhcnQgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwcml6ZWRiID0gbmV3IGNvdXBvbl9wcml6ZURBTygpOwokYWN0aW9uZGIgPSBuZXcgY291cG9uX2FjdGlvbkRBTygpOwokcGVyaW9kZGIgPSBuZXcgY291cG9uX3BlcmlvZERBTygpOwokY29kZWRiID0gbmV3IGNvdXBvbl9jb2RlREFPKCk7CiRtaXhlZGRiID0gbmV3IGNvdXBvbl9taXhlZERBTygpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0gc3RhcnQgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcml6ZXMgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwcml6ZV9kYXRhID0gJG1peGVkZGItPmZldGNoX2FjdGlvbl9wZXJpb2RfcHJpemVzKCk7CiRnaXZlbl9wcml6ZV9jb3VudCA9ICRjb2RlZGItPmZldGNoX2dpdmVuX3ByaXplX2NvdW50KCk7CgokcHJpemVhcnJheSA9IGFycmF5KCk7Cgpmb3JlYWNoICgkcHJpemVfZGF0YSBhcyAka2V5ID0+ICR2YWx1ZSkgewoKICAgICRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsKICAgIAogICAgZm9yZWFjaCAoJHZhbHVlIGFzICRzdWJfa2V5ID0+ICRzdWJfdmFsdWUpIHsKICAgICAgICAkb25lcm93LT4kc3ViX2tleSA9ICR2YWx1ZVskc3ViX2tleV07IAogICAgICAgIAogICAgICAgIGlmICgkc3ViX2tleSA9PSAnY291cG9uX3ByaXplX2lkJykgewogICAgICAgICAgICBpZiAoaXNzZXQoJGdpdmVuX3ByaXplX2NvdW50WyR2YWx1ZVskc3ViX2tleV1dKSkgewogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkY3VycmVudF9jb3VudCA9ICRnaXZlbl9wcml6ZV9jb3VudFskdmFsdWVbJHN1Yl9rZXldXTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJG9uZXJvdy0+ZnJlZSA9ICgkdmFsdWVbJ251bWJlciddIC0gJGN1cnJlbnRfY291bnQpOwogICAgICAgICAgICAgICAgJG9uZXJvdy0+Z2l2ZW4gPSAkY3VycmVudF9jb3VudDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRvbmVyb3ctPmZyZWUgPSAkdmFsdWVbJ251bWJlciddOwogICAgICAgICAgICAgICAgJG9uZXJvdy0+Z2l2ZW4gPSAnMCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAKICAgIGlmICgkb25lcm93LT5mcmVlKSB7CiAgICAgICAKICAgICAgICAkb25lcm93LT5kcmF3X2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAgICAgJGlkLCAKICAgICAgICAgICAgJ3dpbm5lcl9kcmF3X2NvdXBvbicsIAogICAgICAgICAgICAkcmV0dXJuaWQsIAogICAgICAgICAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vcnVuLmdpZicsCiAgICAgICAgICAgICR0aGlzLT5MYW5nKCdkcmF3X2NvdXBvbicpLCcnLCcnLCdzeXN0ZW1pY29uJyksCiAgICAgICAgICAgIGFycmF5KCdjb3Vwb25fcHJpemVfaWQnPT4kdmFsdWVbJ2NvdXBvbl9wcml6ZV9pZCddLCAnY291cG9uX3BlcmlvZF9pZCc9PiR2YWx1ZVsnY291cG9uX3BlcmlvZF9pZCddKSwgCiAgICAgICAgICAgICR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykKICAgICAgICApOwogICAgICAgIAogICAgfSBlbHNlIHsKICAgICAgICAkb25lcm93LT5kcmF3X2xpbmsgPSAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9leHRyYS95ZWxsb3cuZ2lmJywKICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2dpdmVuX251bWJlcicpLCcnLCcnLCdzeXN0ZW1pY29uJyk7CiAgICB9CiAgICAKICAgICRwcml6ZWFycmF5W10gPSAkb25lcm93OwogICAgCn0gICAgCgokdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdwcml6ZWl0ZW1zJywgJHByaXplYXJyYXkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3ByaXplaXRlbWNvdW50JywgY291bnQoJHByaXplYXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB3aW5uZXJzIAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokd2lubmVyc19kYXRhID0gJG1peGVkZGItPmZldGNoX3dpbm5lcnMoKTsKJHdpbm5lcmFycmF5ID0gYXJyYXkoKTsKCmZvcmVhY2ggKCR3aW5uZXJzX2RhdGEgYXMgJGtleSA9PiAkdmFsdWUpIHsKCiAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CiAgICAKICAgIGZvcmVhY2ggKCR2YWx1ZSBhcyAkc3ViX2tleSA9PiAkc3ViX3ZhbHVlKSB7CiAgICAgICAgJG9uZXJvdy0+JHN1Yl9rZXkgPSAkdmFsdWVbJHN1Yl9rZXldOyAgIAogICAgfQogICAgCiAgICAkb25lcm93LT5kYXNoZWRfY291cG9uX2NvZGUgPSAgaW1wbG9kZSgnLScsIHN0cl9zcGxpdCgkb25lcm93LT5jb3Vwb25fY29kZSwgNCkpOwogICAgCiAgICAkb25lcm93LT5kYXNoZWRfcGhvbmUgPSAgaW1wbG9kZSgnICcsIHN0cl9zcGxpdCgkb25lcm93LT5waG9uZSwgMykpOwogICAgICAgIAogICAgJG9uZXJvdy0+d2l0aGRyYXdfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICRpZCwgCiAgICAgICAgJ3dpbm5lcl93aXRoZHJhd19jb3Vwb24nLCAKICAgICAgICAkcmV0dXJuaWQsIAogICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywKICAgICAgICAkdGhpcy0+TGFuZygnd2l0aGRyYXdfY291cG9uJyksJycsJycsJ3N5c3RlbWljb24nKSwKICAgICAgICBhcnJheSgnY291cG9uX2NvZGVfaWQnPT4kdmFsdWVbJ2NvdXBvbl9jb2RlX2lkJ10pLCAKICAgICAgICAkdGhpcy0+TGFuZygnYXJleW91c3VyZScpCiAgICApOwogICAgCiAgICAkd2lubmVyYXJyYXlbXSA9ICRvbmVyb3c7CiAgICAKfQoJCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3dpbm5lcml0ZW1zJywgJHdpbm5lcmFycmF5KTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd3aW5uZXJpdGVtY291bnQnLCBjb3VudCgkd2lubmVyYXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBkZWZpbmUgdGV4dCBmb3IgbGFiZWxzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMJCgokc21hcnR5LT5hc3NpZ24oJ3ByaXplX3BfdGV4dCcsICR0aGlzLT5MYW5nKCdwcml6ZV9wJykpOwokc21hcnR5LT5hc3NpZ24oJ2ZyZWVfbnVtYmVyX3RleHQnLCAkdGhpcy0+TGFuZygnZnJlZV9udW1iZXInKSk7CiRzbWFydHktPmFzc2lnbignZ2l2ZW5fbnVtYmVyX3RleHQnLCAkdGhpcy0+TGFuZygnZ2l2ZW5fbnVtYmVyJykpOwokc21hcnR5LT5hc3NpZ24oJ2RyYXdfY291cG9uX3RleHQnLCAkdGhpcy0+TGFuZygnZHJhd19jb3Vwb24nKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3dpbm5lcl9wX3RleHQnLCAkdGhpcy0+TGFuZygnd2lubmVyX3AnKSk7CiRzbWFydHktPmFzc2lnbignbmFtZV90ZXh0JywgJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiRzbWFydHktPmFzc2lnbignZW1haWxfdGV4dCcsICR0aGlzLT5MYW5nKCdlbWFpbCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdwaG9uZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3Bob25lJykpOwokc21hcnR5LT5hc3NpZ24oJ2NvdXBvbl9jb2RlX3RleHQnLCAkdGhpcy0+TGFuZygnY291cG9uX2NvZGUnKSk7CiRzbWFydHktPmFzc2lnbignd2l0aGRyYXdfY291cG9uX3RleHQnLCAkdGhpcy0+TGFuZygnd2l0aGRyYXdfY291cG9uJykpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNldHVwIGZvcm0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGZvcm1fcGFyYW1zID0gYXJyYXkoKTsKJGZvcm1fcGFyYW1zWydhY3RpdmVfdGFiJ10gPSAnd2lubmVyJzsKCmlmIChpc3NldCgkcGFyYW1zWyd3aW5uZXJfbWVzc2FnZSddKSkgewogICAgICAgICR3aW5uZXJfbWVzc2FnZSA9IGV4cGxvZGUoIiwiLCAkcGFyYW1zWyd3aW5uZXJfbWVzc2FnZSddKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ3dpbm5lcl9tZXNzYWdlJywkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJHdpbm5lcl9tZXNzYWdlWzBdLCBhcnJheSgkdGhpcy0+TGFuZygkd2lubmVyX21lc3NhZ2VbMV0pKSkpKTsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFByb2Nlc3NUZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3dpbm5lcl9saXN0LnRwbCcpOwoJCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/arrow_form_error.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhBQAJAIAAAOQAdP///yH5BAEAAAEALAAAAAAFAAkAAAIMjAMHidsLXTRQMVoAADs=]]></data>
	</file>
	<file>
	  <filename>/images/mainform-checkbox-bg.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFgAWAJEAAP///8zMzP///wAAACH5BAEAAAIALAAAAAAWABYAAAIkBGJ4yesKW3yy0juz1Xj7DnLiN4bkaablirJqC7+yS8f1bFcFADs=]]></data>
	</file>
	<file>
	  <filename>/images/mainform-radio-bg.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFgAWALMAAP////n5+fb29uXl5dvb29jY2NTU1MzMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAWABYAAARTEMgppLGyzj2HPF8IBNxEiCCQpmWBvoC7nSq8SiTg1fzdZ7YgQOMrCo0/3iWJTC2bx2jyKXVWr0wREbvNJnc5KI82kYllJTGZE4btShQMYKnZRAAAOw==]]></data>
	</file>
	<file>
	  <filename>/images/pattern-grey.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhAwADAIAAAP///8zMzCwAAAAAAwADAAACBARyCQUAOw==]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/jquery-1.6.1.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjEuNi4xCiAqIGh0dHA6Ly9qcXVlcnkuY29tLwogKgogKiBDb3B5cmlnaHQgMjAxMSwgSm9obiBSZXNpZwogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBJbmNsdWRlcyBTaXp6bGUuanMKICogaHR0cDovL3NpenpsZWpzLmNvbS8KICogQ29weXJpZ2h0IDIwMTEsIFRoZSBEb2pvIEZvdW5kYXRpb24KICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgogKgogKiBEYXRlOiBUaHUgTWF5IDEyIDE1OjA0OjM2IDIwMTEgLTA0MDAKICovCihmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGN5KGEpe3JldHVybiBmLmlzV2luZG93KGEpP2E6YS5ub2RlVHlwZT09PTk/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3c6ITF9ZnVuY3Rpb24gY3YoYSl7aWYoIWNqW2FdKXt2YXIgYj1mKCI8IithKyI+IikuYXBwZW5kVG8oImJvZHkiKSxkPWIuY3NzKCJkaXNwbGF5Iik7Yi5yZW1vdmUoKTtpZihkPT09Im5vbmUifHxkPT09IiIpe2NrfHwoY2s9Yy5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxjay5mcmFtZUJvcmRlcj1jay53aWR0aD1jay5oZWlnaHQ9MCksYy5ib2R5LmFwcGVuZENoaWxkKGNrKTtpZighY2x8fCFjay5jcmVhdGVFbGVtZW50KWNsPShjay5jb250ZW50V2luZG93fHxjay5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LGNsLndyaXRlKCI8IWRvY3R5cGU+PGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTtiPWNsLmNyZWF0ZUVsZW1lbnQoYSksY2wuYm9keS5hcHBlbmRDaGlsZChiKSxkPWYuY3NzKGIsImRpc3BsYXkiKSxjLmJvZHkucmVtb3ZlQ2hpbGQoY2spfWNqW2FdPWR9cmV0dXJuIGNqW2FdfWZ1bmN0aW9uIGN1KGEsYil7dmFyIGM9e307Zi5lYWNoKGNwLmNvbmNhdC5hcHBseShbXSxjcC5zbGljZSgwLGIpKSxmdW5jdGlvbigpe2NbdGhpc109YX0pO3JldHVybiBjfWZ1bmN0aW9uIGN0KCl7Y3E9Yn1mdW5jdGlvbiBjcygpe3NldFRpbWVvdXQoY3QsMCk7cmV0dXJuIGNxPWYubm93KCl9ZnVuY3Rpb24gY2koKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1mdW5jdGlvbiBjaCgpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYil7fX1mdW5jdGlvbiBjYihhLGMpe2EuZGF0YUZpbHRlciYmKGM9YS5kYXRhRmlsdGVyKGMsYS5kYXRhVHlwZSkpO3ZhciBkPWEuZGF0YVR5cGVzLGU9e30sZyxoLGk9ZC5sZW5ndGgsaixrPWRbMF0sbCxtLG4sbyxwO2ZvcihnPTE7ZzxpO2crKyl7aWYoZz09PTEpZm9yKGggaW4gYS5jb252ZXJ0ZXJzKXR5cGVvZiBoPT0ic3RyaW5nIiYmKGVbaC50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbaF0pO2w9ayxrPWRbZ107aWYoaz09PSIqIilrPWw7ZWxzZSBpZihsIT09IioiJiZsIT09ayl7bT1sKyIgIitrLG49ZVttXXx8ZVsiKiAiK2tdO2lmKCFuKXtwPWI7Zm9yKG8gaW4gZSl7aj1vLnNwbGl0KCIgIik7aWYoalswXT09PWx8fGpbMF09PT0iKiIpe3A9ZVtqWzFdKyIgIitrXTtpZihwKXtvPWVbb10sbz09PSEwP249cDpwPT09ITAmJihuPW8pO2JyZWFrfX19fSFuJiYhcCYmZi5lcnJvcigiTm8gY29udmVyc2lvbiBmcm9tICIrbS5yZXBsYWNlKCIgIiwiIHRvICIpKSxuIT09ITAmJihjPW4/bihjKTpwKG8oYykpKX19cmV0dXJuIGN9ZnVuY3Rpb24gY2EoYSxjLGQpe3ZhciBlPWEuY29udGVudHMsZj1hLmRhdGFUeXBlcyxnPWEucmVzcG9uc2VGaWVsZHMsaCxpLGosaztmb3IoaSBpbiBnKWkgaW4gZCYmKGNbZ1tpXV09ZFtpXSk7d2hpbGUoZlswXT09PSIqIilmLnNoaWZ0KCksaD09PWImJihoPWEubWltZVR5cGV8fGMuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpKTtpZihoKWZvcihpIGluIGUpaWYoZVtpXSYmZVtpXS50ZXN0KGgpKXtmLnVuc2hpZnQoaSk7YnJlYWt9aWYoZlswXWluIGQpaj1mWzBdO2Vsc2V7Zm9yKGkgaW4gZCl7aWYoIWZbMF18fGEuY29udmVydGVyc1tpKyIgIitmWzBdXSl7aj1pO2JyZWFrfWt8fChrPWkpfWo9anx8a31pZihqKXtqIT09ZlswXSYmZi51bnNoaWZ0KGopO3JldHVybiBkW2pdfX1mdW5jdGlvbiBiXyhhLGIsYyxkKXtpZihmLmlzQXJyYXkoYikpZi5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHxiRi50ZXN0KGEpP2QoYSxlKTpiXyhhKyJbIisodHlwZW9mIGU9PSJvYmplY3QifHxmLmlzQXJyYXkoZSk/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoIWMmJmIhPW51bGwmJnR5cGVvZiBiPT0ib2JqZWN0Iilmb3IodmFyIGUgaW4gYiliXyhhKyJbIitlKyJdIixiW2VdLGMsZCk7ZWxzZSBkKGEsYil9ZnVuY3Rpb24gYiQoYSxjLGQsZSxmLGcpe2Y9Znx8Yy5kYXRhVHlwZXNbMF0sZz1nfHx7fSxnW2ZdPSEwO3ZhciBoPWFbZl0saT0wLGo9aD9oLmxlbmd0aDowLGs9YT09PWJVLGw7Zm9yKDtpPGomJihrfHwhbCk7aSsrKWw9aFtpXShjLGQsZSksdHlwZW9mIGw9PSJzdHJpbmciJiYoIWt8fGdbbF0/bD1iOihjLmRhdGFUeXBlcy51bnNoaWZ0KGwpLGw9YiQoYSxjLGQsZSxsLGcpKSk7KGt8fCFsKSYmIWdbIioiXSYmKGw9YiQoYSxjLGQsZSwiKiIsZykpO3JldHVybiBsfWZ1bmN0aW9uIGJaKGEpe3JldHVybiBmdW5jdGlvbihiLGMpe3R5cGVvZiBiIT0ic3RyaW5nIiYmKGM9YixiPSIqIik7aWYoZi5pc0Z1bmN0aW9uKGMpKXt2YXIgZD1iLnRvTG93ZXJDYXNlKCkuc3BsaXQoYlEpLGU9MCxnPWQubGVuZ3RoLGgsaSxqO2Zvcig7ZTxnO2UrKyloPWRbZV0saj0vXlwrLy50ZXN0KGgpLGomJihoPWguc3Vic3RyKDEpfHwiKiIpLGk9YVtoXT1hW2hdfHxbXSxpW2o/InVuc2hpZnQiOiJwdXNoIl0oYyl9fX1mdW5jdGlvbiBiRChhLGIsYyl7dmFyIGQ9Yj09PSJ3aWR0aCI/Yng6YnksZT1iPT09IndpZHRoIj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0O2lmKGM9PT0iYm9yZGVyIilyZXR1cm4gZTtmLmVhY2goZCxmdW5jdGlvbigpe2N8fChlLT1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK3RoaXMpKXx8MCksYz09PSJtYXJnaW4iP2UrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luIit0aGlzKSl8fDA6ZS09cGFyc2VGbG9hdChmLmNzcyhhLCJib3JkZXIiK3RoaXMrIldpZHRoIikpfHwwfSk7cmV0dXJuIGV9ZnVuY3Rpb24gYm4oYSxiKXtiLnNyYz9mLmFqYXgoe3VybDpiLnNyYyxhc3luYzohMSxkYXRhVHlwZToic2NyaXB0In0pOmYuZ2xvYmFsRXZhbCgoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoYmYsIi8qJDAqLyIpKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBibShhKXtmLm5vZGVOYW1lKGEsImlucHV0Iik/YmwoYSk6YS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmZi5ncmVwKGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IiksYmwpfWZ1bmN0aW9uIGJsKGEpe2lmKGEudHlwZT09PSJjaGVja2JveCJ8fGEudHlwZT09PSJyYWRpbyIpYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWR9ZnVuY3Rpb24gYmsoYSl7cmV0dXJuImdldEVsZW1lbnRzQnlUYWdOYW1lImluIGE/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOiJxdWVyeVNlbGVjdG9yQWxsImluIGE/YS5xdWVyeVNlbGVjdG9yQWxsKCIqIik6W119ZnVuY3Rpb24gYmooYSxiKXt2YXIgYztpZihiLm5vZGVUeXBlPT09MSl7Yi5jbGVhckF0dHJpYnV0ZXMmJmIuY2xlYXJBdHRyaWJ1dGVzKCksYi5tZXJnZUF0dHJpYnV0ZXMmJmIubWVyZ2VBdHRyaWJ1dGVzKGEpLGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGM9PT0ib2JqZWN0IiliLm91dGVySFRNTD1hLm91dGVySFRNTDtlbHNlIGlmKGMhPT0iaW5wdXQifHxhLnR5cGUhPT0iY2hlY2tib3giJiZhLnR5cGUhPT0icmFkaW8iKXtpZihjPT09Im9wdGlvbiIpYi5zZWxlY3RlZD1hLmRlZmF1bHRTZWxlY3RlZDtlbHNlIGlmKGM9PT0iaW5wdXQifHxjPT09InRleHRhcmVhIiliLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZX1lbHNlIGEuY2hlY2tlZCYmKGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCksYi52YWx1ZSE9PWEudmFsdWUmJihiLnZhbHVlPWEudmFsdWUpO2IucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyl9fWZ1bmN0aW9uIGJpKGEsYil7aWYoYi5ub2RlVHlwZT09PTEmJiEhZi5oYXNEYXRhKGEpKXt2YXIgYz1mLmV4cGFuZG8sZD1mLmRhdGEoYSksZT1mLmRhdGEoYixkKTtpZihkPWRbY10pe3ZhciBnPWQuZXZlbnRzO2U9ZVtjXT1mLmV4dGVuZCh7fSxkKTtpZihnKXtkZWxldGUgZS5oYW5kbGUsZS5ldmVudHM9e307Zm9yKHZhciBoIGluIGcpZm9yKHZhciBpPTAsaj1nW2hdLmxlbmd0aDtpPGo7aSsrKWYuZXZlbnQuYWRkKGIsaCsoZ1toXVtpXS5uYW1lc3BhY2U/Ii4iOiIiKStnW2hdW2ldLm5hbWVzcGFjZSxnW2hdW2ldLGdbaF1baV0uZGF0YSl9fX19ZnVuY3Rpb24gYmgoYSxiKXtyZXR1cm4gZi5ub2RlTmFtZShhLCJ0YWJsZSIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVuY3Rpb24gWChhLGIsYyl7Yj1ifHwwO2lmKGYuaXNGdW5jdGlvbihiKSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXt2YXIgZT0hIWIuY2FsbChhLGQsYSk7cmV0dXJuIGU9PT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gYT09PWI9PT1jfSk7aWYodHlwZW9mIGI9PSJzdHJpbmciKXt2YXIgZD1mLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlwZT09PTF9KTtpZihTLnRlc3QoYikpcmV0dXJuIGYuZmlsdGVyKGIsZCwhYyk7Yj1mLmZpbHRlcihiLGQpfXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiBmLmluQXJyYXkoYSxiKT49MD09PWN9KX1mdW5jdGlvbiBXKGEpe3JldHVybiFhfHwhYS5wYXJlbnROb2RlfHxhLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMX1mdW5jdGlvbiBPKGEsYil7cmV0dXJuKGEmJmEhPT0iKiI/YSsiLiI6IiIpK2IucmVwbGFjZShBLCJgIikucmVwbGFjZShCLCImIil9ZnVuY3Rpb24gTihhKXt2YXIgYixjLGQsZSxnLGgsaSxqLGssbCxtLG4sbyxwPVtdLHE9W10scj1mLl9kYXRhKHRoaXMsImV2ZW50cyIpO2lmKCEoYS5saXZlRmlyZWQ9PT10aGlzfHwhcnx8IXIubGl2ZXx8YS50YXJnZXQuZGlzYWJsZWR8fGEuYnV0dG9uJiZhLnR5cGU9PT0iY2xpY2siKSl7YS5uYW1lc3BhY2UmJihuPW5ldyBSZWdFeHAoIihefFxcLikiK2EubmFtZXNwYWNlLnNwbGl0KCIuIikuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIikpLGEubGl2ZUZpcmVkPXRoaXM7dmFyIHM9ci5saXZlLnNsaWNlKDApO2ZvcihpPTA7aTxzLmxlbmd0aDtpKyspZz1zW2ldLGcub3JpZ1R5cGUucmVwbGFjZSh5LCIiKT09PWEudHlwZT9xLnB1c2goZy5zZWxlY3Rvcik6cy5zcGxpY2UoaS0tLDEpO2U9ZihhLnRhcmdldCkuY2xvc2VzdChxLGEuY3VycmVudFRhcmdldCk7Zm9yKGo9MCxrPWUubGVuZ3RoO2o8aztqKyspe209ZVtqXTtmb3IoaT0wO2k8cy5sZW5ndGg7aSsrKXtnPXNbaV07aWYobS5zZWxlY3Rvcj09PWcuc2VsZWN0b3ImJighbnx8bi50ZXN0KGcubmFtZXNwYWNlKSkmJiFtLmVsZW0uZGlzYWJsZWQpe2g9bS5lbGVtLGQ9bnVsbDtpZihnLnByZVR5cGU9PT0ibW91c2VlbnRlciJ8fGcucHJlVHlwZT09PSJtb3VzZWxlYXZlIilhLnR5cGU9Zy5wcmVUeXBlLGQ9ZihhLnJlbGF0ZWRUYXJnZXQpLmNsb3Nlc3QoZy5zZWxlY3RvcilbMF0sZCYmZi5jb250YWlucyhoLGQpJiYoZD1oKTsoIWR8fGQhPT1oKSYmcC5wdXNoKHtlbGVtOmgsaGFuZGxlT2JqOmcsbGV2ZWw6bS5sZXZlbH0pfX19Zm9yKGo9MCxrPXAubGVuZ3RoO2o8aztqKyspe2U9cFtqXTtpZihjJiZlLmxldmVsPmMpYnJlYWs7YS5jdXJyZW50VGFyZ2V0PWUuZWxlbSxhLmRhdGE9ZS5oYW5kbGVPYmouZGF0YSxhLmhhbmRsZU9iaj1lLmhhbmRsZU9iaixvPWUuaGFuZGxlT2JqLm9yaWdIYW5kbGVyLmFwcGx5KGUuZWxlbSxhcmd1bWVudHMpO2lmKG89PT0hMXx8YS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXtjPWUubGV2ZWwsbz09PSExJiYoYj0hMSk7aWYoYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfX1yZXR1cm4gYn19ZnVuY3Rpb24gTChhLGMsZCl7dmFyIGU9Zi5leHRlbmQoe30sZFswXSk7ZS50eXBlPWEsZS5vcmlnaW5hbEV2ZW50PXt9LGUubGl2ZUZpcmVkPWIsZi5ldmVudC5oYW5kbGUuY2FsbChjLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmRbMF0ucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBGKCl7cmV0dXJuITB9ZnVuY3Rpb24gRSgpe3JldHVybiExfWZ1bmN0aW9uIG0oYSxjLGQpe3ZhciBlPWMrImRlZmVyIixnPWMrInF1ZXVlIixoPWMrIm1hcmsiLGk9Zi5kYXRhKGEsZSxiLCEwKTtpJiYoZD09PSJxdWV1ZSJ8fCFmLmRhdGEoYSxnLGIsITApKSYmKGQ9PT0ibWFyayJ8fCFmLmRhdGEoYSxoLGIsITApKSYmc2V0VGltZW91dChmdW5jdGlvbigpeyFmLmRhdGEoYSxnLGIsITApJiYhZi5kYXRhKGEsaCxiLCEwKSYmKGYucmVtb3ZlRGF0YShhLGUsITApLGkucmVzb2x2ZSgpKX0sMCl9ZnVuY3Rpb24gbChhKXtmb3IodmFyIGIgaW4gYSlpZihiIT09InRvSlNPTiIpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gayhhLGMsZCl7aWYoZD09PWImJmEubm9kZVR5cGU9PT0xKXt2YXIgZT0iZGF0YS0iK2MucmVwbGFjZShqLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCk7ZD1hLmdldEF0dHJpYnV0ZShlKTtpZih0eXBlb2YgZD09InN0cmluZyIpe3RyeXtkPWQ9PT0idHJ1ZSI/ITA6ZD09PSJmYWxzZSI/ITE6ZD09PSJudWxsIj9udWxsOmYuaXNOYU4oZCk/aS50ZXN0KGQpP2YucGFyc2VKU09OKGQpOmQ6cGFyc2VGbG9hdChkKX1jYXRjaChnKXt9Zi5kYXRhKGEsYyxkKX1lbHNlIGQ9Yn1yZXR1cm4gZH12YXIgYz1hLmRvY3VtZW50LGQ9YS5uYXZpZ2F0b3IsZT1hLmxvY2F0aW9uLGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBIKCl7aWYoIWUuaXNSZWFkeSl7dHJ5e2MuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goYSl7c2V0VGltZW91dChILDEpO3JldHVybn1lLnJlYWR5KCl9fXZhciBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBlLmZuLmluaXQoYSxiLGgpfSxmPWEualF1ZXJ5LGc9YS4kLGgsaT0vXig/OltePF0qKDxbXHdcV10rPilbXj5dKiR8IyhbXHdcLV0qKSQpLyxqPS9cUy8saz0vXlxzKy8sbD0vXHMrJC8sbT0vXGQvLG49L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxvPS9eW1xdLDp7fVxzXSokLyxwPS9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2cscT0vIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2cscj0vKD86Xnw6fCwpKD86XHMqXFspKy9nLHM9Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8sdD0vKG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3Ll0rKS8sdT0vKG1zaWUpIChbXHcuXSspLyx2PS8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykpPy8sdz1kLnVzZXJBZ2VudCx4LHkseixBPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsQj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEM9QXJyYXkucHJvdG90eXBlLnB1c2gsRD1BcnJheS5wcm90b3R5cGUuc2xpY2UsRT1TdHJpbmcucHJvdG90eXBlLnRyaW0sRj1BcnJheS5wcm90b3R5cGUuaW5kZXhPZixHPXt9O2UuZm49ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsaW5pdDpmdW5jdGlvbihhLGQsZil7dmFyIGcsaCxqLGs7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5ub2RlVHlwZSl7dGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKGE9PT0iYm9keSImJiFkJiZjLmJvZHkpe3RoaXMuY29udGV4dD1jLHRoaXNbMF09Yy5ib2R5LHRoaXMuc2VsZWN0b3I9YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKHR5cGVvZiBhPT0ic3RyaW5nIil7YS5jaGFyQXQoMCkhPT0iPCJ8fGEuY2hhckF0KGEubGVuZ3RoLTEpIT09Ij4ifHxhLmxlbmd0aDwzP2c9aS5leGVjKGEpOmc9W251bGwsYSxudWxsXTtpZihnJiYoZ1sxXXx8IWQpKXtpZihnWzFdKXtkPWQgaW5zdGFuY2VvZiBlP2RbMF06ZCxrPWQ/ZC5vd25lckRvY3VtZW50fHxkOmMsaj1uLmV4ZWMoYSksaj9lLmlzUGxhaW5PYmplY3QoZCk/KGE9W2MuY3JlYXRlRWxlbWVudChqWzFdKV0sZS5mbi5hdHRyLmNhbGwoYSxkLCEwKSk6YT1bay5jcmVhdGVFbGVtZW50KGpbMV0pXTooaj1lLmJ1aWxkRnJhZ21lbnQoW2dbMV1dLFtrXSksYT0oai5jYWNoZWFibGU/ZS5jbG9uZShqLmZyYWdtZW50KTpqLmZyYWdtZW50KS5jaGlsZE5vZGVzKTtyZXR1cm4gZS5tZXJnZSh0aGlzLGEpfWg9Yy5nZXRFbGVtZW50QnlJZChnWzJdKTtpZihoJiZoLnBhcmVudE5vZGUpe2lmKGguaWQhPT1nWzJdKXJldHVybiBmLmZpbmQoYSk7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPWh9dGhpcy5jb250ZXh0PWMsdGhpcy5zZWxlY3Rvcj1hO3JldHVybiB0aGlzfXJldHVybiFkfHxkLmpxdWVyeT8oZHx8ZikuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGQpLmZpbmQoYSl9aWYoZS5pc0Z1bmN0aW9uKGEpKXJldHVybiBmLnJlYWR5KGEpO2Euc2VsZWN0b3IhPT1iJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpO3JldHVybiBlLm1ha2VBcnJheShhLHRoaXMpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuNi4xIixsZW5ndGg6MCxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIEQuY2FsbCh0aGlzLDApfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/dGhpcy50b0FycmF5KCk6YTwwP3RoaXNbdGhpcy5sZW5ndGgrYV06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmNvbnN0cnVjdG9yKCk7ZS5pc0FycmF5KGEpP0MuYXBwbHkoZCxhKTplLm1lcmdlKGQsYSksZC5wcmV2T2JqZWN0PXRoaXMsZC5jb250ZXh0PXRoaXMuY29udGV4dCxiPT09ImZpbmQiP2Quc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK2M6YiYmKGQuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisiLiIrYisiKCIrYysiKSIpO3JldHVybiBkfSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGUuZWFjaCh0aGlzLGEsYil9LHJlYWR5OmZ1bmN0aW9uKGEpe2UuYmluZFJlYWR5KCkseS5kb25lKGEpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXtyZXR1cm4gYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhpcy5zbGljZShhLCthKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhELmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLEQuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOkMsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LGUuZm4uaW5pdC5wcm90b3R5cGU9ZS5mbixlLmV4dGVuZD1lLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGMsZCxmLGcsaCxpPWFyZ3VtZW50c1swXXx8e30saj0xLGs9YXJndW1lbnRzLmxlbmd0aCxsPSExO3R5cGVvZiBpPT0iYm9vbGVhbiImJihsPWksaT1hcmd1bWVudHNbMV18fHt9LGo9MiksdHlwZW9mIGkhPSJvYmplY3QiJiYhZS5pc0Z1bmN0aW9uKGkpJiYoaT17fSksaz09PWomJihpPXRoaXMsLS1qKTtmb3IoO2o8aztqKyspaWYoKGE9YXJndW1lbnRzW2pdKSE9bnVsbClmb3IoYyBpbiBhKXtkPWlbY10sZj1hW2NdO2lmKGk9PT1mKWNvbnRpbnVlO2wmJmYmJihlLmlzUGxhaW5PYmplY3QoZil8fChnPWUuaXNBcnJheShmKSkpPyhnPyhnPSExLGg9ZCYmZS5pc0FycmF5KGQpP2Q6W10pOmg9ZCYmZS5pc1BsYWluT2JqZWN0KGQpP2Q6e30saVtjXT1lLmV4dGVuZChsLGgsZikpOmYhPT1iJiYoaVtjXT1mKX1yZXR1cm4gaX0sZS5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oYil7YS4kPT09ZSYmKGEuJD1nKSxiJiZhLmpRdWVyeT09PWUmJihhLmpRdWVyeT1mKTtyZXR1cm4gZX0saXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9lLnJlYWR5V2FpdCsrOmUucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITAmJiEtLWUucmVhZHlXYWl0fHxhIT09ITAmJiFlLmlzUmVhZHkpe2lmKCFjLmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtlLmlzUmVhZHk9ITA7aWYoYSE9PSEwJiYtLWUucmVhZHlXYWl0PjApcmV0dXJuO3kucmVzb2x2ZVdpdGgoYyxbZV0pLGUuZm4udHJpZ2dlciYmZShjKS50cmlnZ2VyKCJyZWFkeSIpLnVuYmluZCgicmVhZHkiKX19LGJpbmRSZWFkeTpmdW5jdGlvbigpe2lmKCF5KXt5PWUuX0RlZmVycmVkKCk7aWYoYy5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIilyZXR1cm4gc2V0VGltZW91dChlLnJlYWR5LDEpO2lmKGMuYWRkRXZlbnRMaXN0ZW5lciljLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHosITEpLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZS5yZWFkeSwhMSk7ZWxzZSBpZihjLmF0dGFjaEV2ZW50KXtjLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLHopLGEuYXR0YWNoRXZlbnQoIm9ubG9hZCIsZS5yZWFkeSk7dmFyIGI9ITE7dHJ5e2I9YS5mcmFtZUVsZW1lbnQ9PW51bGx9Y2F0Y2goZCl7fWMuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsJiZiJiZIKCl9fX0saXNGdW5jdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4gZS50eXBlKGEpPT09ImZ1bmN0aW9uIn0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4gZS50eXBlKGEpPT09ImFycmF5In0saXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJnR5cGVvZiBhPT0ib2JqZWN0IiYmInNldEludGVydmFsImluIGF9LGlzTmFOOmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsfHwhbS50ZXN0KGEpfHxpc05hTihhKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD9TdHJpbmcoYSk6R1tBLmNhbGwoYSldfHwib2JqZWN0In0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXtpZighYXx8ZS50eXBlKGEpIT09Im9iamVjdCJ8fGEubm9kZVR5cGV8fGUuaXNXaW5kb3coYSkpcmV0dXJuITE7aWYoYS5jb25zdHJ1Y3RvciYmIUIuY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhQi5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITE7dmFyIGM7Zm9yKGMgaW4gYSk7cmV0dXJuIGM9PT1ifHxCLmNhbGwoYSxjKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgYX0scGFyc2VKU09OOmZ1bmN0aW9uKGIpe2lmKHR5cGVvZiBiIT0ic3RyaW5nInx8IWIpcmV0dXJuIG51bGw7Yj1lLnRyaW0oYik7aWYoYS5KU09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKTtpZihvLnRlc3QoYi5yZXBsYWNlKHAsIkAiKS5yZXBsYWNlKHEsIl0iKS5yZXBsYWNlKHIsIiIpKSlyZXR1cm4obmV3IEZ1bmN0aW9uKCJyZXR1cm4gIitiKSkoKTtlLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LHBhcnNlWE1MOmZ1bmN0aW9uKGIsYyxkKXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKSxkPWMuZG9jdW1lbnRFbGVtZW50LCghZHx8IWQubm9kZU5hbWV8fGQubm9kZU5hbWU9PT0icGFyc2VyZXJyb3IiKSYmZS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYik7cmV0dXJuIGN9LG5vb3A6ZnVuY3Rpb24oKXt9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYil7YiYmai50ZXN0KGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChhLGIpfSkoYil9LG5vZGVOYW1lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9VcHBlckNhc2UoKT09PWIudG9VcHBlckNhc2UoKX0sZWFjaDpmdW5jdGlvbihhLGMsZCl7dmFyIGYsZz0wLGg9YS5sZW5ndGgsaT1oPT09Ynx8ZS5pc0Z1bmN0aW9uKGEpO2lmKGQpe2lmKGkpe2ZvcihmIGluIGEpaWYoYy5hcHBseShhW2ZdLGQpPT09ITEpYnJlYWt9ZWxzZSBmb3IoO2c8aDspaWYoYy5hcHBseShhW2crK10sZCk9PT0hMSlicmVha31lbHNlIGlmKGkpe2ZvcihmIGluIGEpaWYoYy5jYWxsKGFbZl0sZixhW2ZdKT09PSExKWJyZWFrfWVsc2UgZm9yKDtnPGg7KWlmKGMuY2FsbChhW2ddLGcsYVtnKytdKT09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOkU/ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6RS5jYWxsKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjooYSsiIikucmVwbGFjZShrLCIiKS5yZXBsYWNlKGwsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtpZihhIT1udWxsKXt2YXIgZD1lLnR5cGUoYSk7YS5sZW5ndGg9PW51bGx8fGQ9PT0ic3RyaW5nInx8ZD09PSJmdW5jdGlvbiJ8fGQ9PT0icmVnZXhwInx8ZS5pc1dpbmRvdyhhKT9DLmNhbGwoYyxhKTplLm1lcmdlKGMsYSl9cmV0dXJuIGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiKXtpZihGKXJldHVybiBGLmNhbGwoYixhKTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoYltjXT09PWEpcmV0dXJuIGM7cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9YS5sZW5ndGgsZT0wO2lmKHR5cGVvZiBjLmxlbmd0aD09Im51bWJlciIpZm9yKHZhciBmPWMubGVuZ3RoO2U8ZjtlKyspYVtkKytdPWNbZV07ZWxzZSB3aGlsZShjW2VdIT09YilhW2QrK109Y1tlKytdO2EubGVuZ3RoPWQ7cmV0dXJuIGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU7Yz0hIWM7Zm9yKHZhciBmPTAsZz1hLmxlbmd0aDtmPGc7ZisrKWU9ISFiKGFbZl0sZiksYyE9PWUmJmQucHVzaChhW2ZdKTtyZXR1cm4gZH0sbWFwOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZixnLGg9W10saT0wLGo9YS5sZW5ndGgsaz1hIGluc3RhbmNlb2YgZXx8aiE9PWImJnR5cGVvZiBqPT0ibnVtYmVyIiYmKGo+MCYmYVswXSYmYVtqLTFdfHxqPT09MHx8ZS5pc0FycmF5KGEpKTtpZihrKWZvcig7aTxqO2krKylmPWMoYVtpXSxpLGQpLGYhPW51bGwmJihoW2gubGVuZ3RoXT1mKTtlbHNlIGZvcihnIGluIGEpZj1jKGFbZ10sZyxkKSxmIT1udWxsJiYoaFtoLmxlbmd0aF09Zik7cmV0dXJuIGguY29uY2F0LmFwcGx5KFtdLGgpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxjKXtpZih0eXBlb2YgYz09InN0cmluZyIpe3ZhciBkPWFbY107Yz1hLGE9ZH1pZighZS5pc0Z1bmN0aW9uKGEpKXJldHVybiBiO3ZhciBmPUQuY2FsbChhcmd1bWVudHMsMiksZz1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGMsZi5jb25jYXQoRC5jYWxsKGFyZ3VtZW50cykpKX07Zy5ndWlkPWEuZ3VpZD1hLmd1aWR8fGcuZ3VpZHx8ZS5ndWlkKys7cmV0dXJuIGd9LGFjY2VzczpmdW5jdGlvbihhLGMsZCxmLGcsaCl7dmFyIGk9YS5sZW5ndGg7aWYodHlwZW9mIGM9PSJvYmplY3QiKXtmb3IodmFyIGogaW4gYyllLmFjY2VzcyhhLGosY1tqXSxmLGcsZCk7cmV0dXJuIGF9aWYoZCE9PWIpe2Y9IWgmJmYmJmUuaXNGdW5jdGlvbihkKTtmb3IodmFyIGs9MDtrPGk7aysrKWcoYVtrXSxjLGY/ZC5jYWxsKGFba10sayxnKGFba10sYykpOmQsaCk7cmV0dXJuIGF9cmV0dXJuIGk/ZyhhWzBdLGMpOmJ9LG5vdzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSx1YU1hdGNoOmZ1bmN0aW9uKGEpe2E9YS50b0xvd2VyQ2FzZSgpO3ZhciBiPXMuZXhlYyhhKXx8dC5leGVjKGEpfHx1LmV4ZWMoYSl8fGEuaW5kZXhPZigiY29tcGF0aWJsZSIpPDAmJnYuZXhlYyhhKXx8W107cmV0dXJue2Jyb3dzZXI6YlsxXXx8IiIsdmVyc2lvbjpiWzJdfHwiMCJ9fSxzdWI6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJuIG5ldyBhLmZuLmluaXQoYixjKX1lLmV4dGVuZCghMCxhLHRoaXMpLGEuc3VwZXJjbGFzcz10aGlzLGEuZm49YS5wcm90b3R5cGU9dGhpcygpLGEuZm4uY29uc3RydWN0b3I9YSxhLnN1Yj10aGlzLnN1YixhLmZuLmluaXQ9ZnVuY3Rpb24oZCxmKXtmJiZmIGluc3RhbmNlb2YgZSYmIShmIGluc3RhbmNlb2YgYSkmJihmPWEoZikpO3JldHVybiBlLmZuLmluaXQuY2FsbCh0aGlzLGQsZixiKX0sYS5mbi5pbml0LnByb3RvdHlwZT1hLmZuO3ZhciBiPWEoYyk7cmV0dXJuIGF9LGJyb3dzZXI6e319KSxlLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtHWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pLHg9ZS51YU1hdGNoKHcpLHguYnJvd3NlciYmKGUuYnJvd3Nlclt4LmJyb3dzZXJdPSEwLGUuYnJvd3Nlci52ZXJzaW9uPXgudmVyc2lvbiksZS5icm93c2VyLndlYmtpdCYmKGUuYnJvd3Nlci5zYWZhcmk9ITApLGoudGVzdCgiwqAiKSYmKGs9L15bXHNceEEwXSsvLGw9L1tcc1x4QTBdKyQvKSxoPWUoYyksYy5hZGRFdmVudExpc3RlbmVyP3o9ZnVuY3Rpb24oKXtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHosITEpLGUucmVhZHkoKX06Yy5hdHRhY2hFdmVudCYmKHo9ZnVuY3Rpb24oKXtjLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiJiYoYy5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIix6KSxlLnJlYWR5KCkpfSk7cmV0dXJuIGV9KCksZz0iZG9uZSBmYWlsIGlzUmVzb2x2ZWQgaXNSZWplY3RlZCBwcm9taXNlIHRoZW4gYWx3YXlzIHBpcGUiLnNwbGl0KCIgIiksaD1bXS5zbGljZTtmLmV4dGVuZCh7X0RlZmVycmVkOmZ1bmN0aW9uKCl7dmFyIGE9W10sYixjLGQsZT17ZG9uZTpmdW5jdGlvbigpe2lmKCFkKXt2YXIgYz1hcmd1bWVudHMsZyxoLGksaixrO2ImJihrPWIsYj0wKTtmb3IoZz0wLGg9Yy5sZW5ndGg7ZzxoO2crKylpPWNbZ10saj1mLnR5cGUoaSksaj09PSJhcnJheSI/ZS5kb25lLmFwcGx5KGUsaSk6aj09PSJmdW5jdGlvbiImJmEucHVzaChpKTtrJiZlLnJlc29sdmVXaXRoKGtbMF0sa1sxXSl9cmV0dXJuIHRoaXN9LHJlc29sdmVXaXRoOmZ1bmN0aW9uKGUsZil7aWYoIWQmJiFiJiYhYyl7Zj1mfHxbXSxjPTE7dHJ5e3doaWxlKGFbMF0pYS5zaGlmdCgpLmFwcGx5KGUsZil9ZmluYWxseXtiPVtlLGZdLGM9MH19cmV0dXJuIHRoaXN9LHJlc29sdmU6ZnVuY3Rpb24oKXtlLnJlc29sdmVXaXRoKHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdGhpc30saXNSZXNvbHZlZDpmdW5jdGlvbigpe3JldHVybiEhY3x8ISFifSxjYW5jZWw6ZnVuY3Rpb24oKXtkPTEsYT1bXTtyZXR1cm4gdGhpc319O3JldHVybiBlfSxEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1mLl9EZWZlcnJlZCgpLGM9Zi5fRGVmZXJyZWQoKSxkO2YuZXh0ZW5kKGIse3RoZW46ZnVuY3Rpb24oYSxjKXtiLmRvbmUoYSkuZmFpbChjKTtyZXR1cm4gdGhpc30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGIuZG9uZS5hcHBseShiLGFyZ3VtZW50cykuZmFpbC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGZhaWw6Yy5kb25lLHJlamVjdFdpdGg6Yy5yZXNvbHZlV2l0aCxyZWplY3Q6Yy5yZXNvbHZlLGlzUmVqZWN0ZWQ6Yy5pc1Jlc29sdmVkLHBpcGU6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZi5EZWZlcnJlZChmdW5jdGlvbihkKXtmLmVhY2goe2RvbmU6W2EsInJlc29sdmUiXSxmYWlsOltjLCJyZWplY3QiXX0sZnVuY3Rpb24oYSxjKXt2YXIgZT1jWzBdLGc9Y1sxXSxoO2YuaXNGdW5jdGlvbihlKT9iW2FdKGZ1bmN0aW9uKCl7aD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxoJiZmLmlzRnVuY3Rpb24oaC5wcm9taXNlKT9oLnByb21pc2UoKS50aGVuKGQucmVzb2x2ZSxkLnJlamVjdCk6ZFtnXShoKX0pOmJbYV0oZFtnXSl9KX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtpZihhPT1udWxsKXtpZihkKXJldHVybiBkO2Q9YT17fX12YXIgYz1nLmxlbmd0aDt3aGlsZShjLS0pYVtnW2NdXT1iW2dbY11dO3JldHVybiBhfX0pLGIuZG9uZShjLmNhbmNlbCkuZmFpbChiLmNhbmNlbCksZGVsZXRlIGIuY2FuY2VsLGEmJmEuY2FsbChiLGIpO3JldHVybiBifSx3aGVuOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGkoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe2JbYV09YXJndW1lbnRzLmxlbmd0aD4xP2guY2FsbChhcmd1bWVudHMsMCk6YywtLWV8fGcucmVzb2x2ZVdpdGgoZyxoLmNhbGwoYiwwKSl9fXZhciBiPWFyZ3VtZW50cyxjPTAsZD1iLmxlbmd0aCxlPWQsZz1kPD0xJiZhJiZmLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hOmYuRGVmZXJyZWQoKTtpZihkPjEpe2Zvcig7YzxkO2MrKyliW2NdJiZmLmlzRnVuY3Rpb24oYltjXS5wcm9taXNlKT9iW2NdLnByb21pc2UoKS50aGVuKGkoYyksZy5yZWplY3QpOi0tZTtlfHxnLnJlc29sdmVXaXRoKGcsYil9ZWxzZSBnIT09YSYmZy5yZXNvbHZlV2l0aChnLGQ/W2FdOltdKTtyZXR1cm4gZy5wcm9taXNlKCl9fSksZi5zdXBwb3J0PWZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxiPWMuZG9jdW1lbnRFbGVtZW50LGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyO2Euc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCJ0IiksYS5pbm5lckhUTUw9IiAgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYScgc3R5bGU9J3RvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41NTsnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxlPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighZHx8IWQubGVuZ3RofHwhZSlyZXR1cm57fTtmPWMuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZz1mLmFwcGVuZENoaWxkKGMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGg9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxqPXtsZWFkaW5nV2hpdGVzcGFjZTphLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRib2R5OiFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovdG9wLy50ZXN0KGUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDplLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5Oi9eMC41NSQvLnRlc3QoZS5zdHlsZS5vcGFjaXR5KSxjc3NGbG9hdDohIWUuc3R5bGUuY3NzRmxvYXQsY2hlY2tPbjpoLnZhbHVlPT09Im9uIixvcHRTZWxlY3RlZDpnLnNlbGVjdGVkLGdldFNldEF0dHJpYnV0ZTphLmNsYXNzTmFtZSE9PSJ0IixzdWJtaXRCdWJibGVzOiEwLGNoYW5nZUJ1YmJsZXM6ITAsZm9jdXNpbkJ1YmJsZXM6ITEsZGVsZXRlRXhwYW5kbzohMCxub0Nsb25lRXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtXcmFwQmxvY2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITB9LGguY2hlY2tlZD0hMCxqLm5vQ2xvbmVDaGVja2VkPWguY2xvbmVOb2RlKCEwKS5jaGVja2VkLGYuZGlzYWJsZWQ9ITAsai5vcHREaXNhYmxlZD0hZy5kaXNhYmxlZDt0cnl7ZGVsZXRlIGEudGVzdH1jYXRjaChzKXtqLmRlbGV0ZUV4cGFuZG89ITF9IWEuYWRkRXZlbnRMaXN0ZW5lciYmYS5hdHRhY2hFdmVudCYmYS5maXJlRXZlbnQmJihhLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbiBiKCl7ai5ub0Nsb25lRXZlbnQ9ITEsYS5kZXRhY2hFdmVudCgib25jbGljayIsYil9KSxhLmNsb25lTm9kZSghMCkuZmlyZUV2ZW50KCJvbmNsaWNrIikpLGg9Yy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGgudmFsdWU9InQiLGguc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxqLnJhZGlvVmFsdWU9aC52YWx1ZT09PSJ0IixoLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxhLmFwcGVuZENoaWxkKGgpLGs9Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksay5hcHBlbmRDaGlsZChhLmZpcnN0Q2hpbGQpLGouY2hlY2tDbG9uZT1rLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxhLmlubmVySFRNTD0iIixhLnN0eWxlLndpZHRoPWEuc3R5bGUucGFkZGluZ0xlZnQ9IjFweCIsbD1jLmNyZWF0ZUVsZW1lbnQoImJvZHkiKSxtPXt2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRoOjAsaGVpZ2h0OjAsYm9yZGVyOjAsbWFyZ2luOjAsYmFja2dyb3VuZDoibm9uZSJ9O2ZvcihxIGluIG0pbC5zdHlsZVtxXT1tW3FdO2wuYXBwZW5kQ2hpbGQoYSksYi5pbnNlcnRCZWZvcmUobCxiLmZpcnN0Q2hpbGQpLGouYXBwZW5kQ2hlY2tlZD1oLmNoZWNrZWQsai5ib3hNb2RlbD1hLm9mZnNldFdpZHRoPT09Miwiem9vbSJpbiBhLnN0eWxlJiYoYS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUiLGEuc3R5bGUuem9vbT0xLGouaW5saW5lQmxvY2tOZWVkc0xheW91dD1hLm9mZnNldFdpZHRoPT09MixhLnN0eWxlLmRpc3BsYXk9IiIsYS5pbm5lckhUTUw9IjxkaXYgc3R5bGU9J3dpZHRoOjRweDsnPjwvZGl2PiIsai5zaHJpbmtXcmFwQmxvY2tzPWEub2Zmc2V0V2lkdGghPT0yKSxhLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQgc3R5bGU9J3BhZGRpbmc6MDtib3JkZXI6MDtkaXNwbGF5Om5vbmUnPjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4iLG49YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSxyPW5bMF0ub2Zmc2V0SGVpZ2h0PT09MCxuWzBdLnN0eWxlLmRpc3BsYXk9IiIsblsxXS5zdHlsZS5kaXNwbGF5PSJub25lIixqLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1yJiZuWzBdLm9mZnNldEhlaWdodD09PTAsYS5pbm5lckhUTUw9IiIsYy5kZWZhdWx0VmlldyYmYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoaT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGkuc3R5bGUud2lkdGg9IjAiLGkuc3R5bGUubWFyZ2luUmlnaHQ9IjAiLGEuYXBwZW5kQ2hpbGQoaSksai5yZWxpYWJsZU1hcmdpblJpZ2h0PShwYXJzZUludCgoYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGksbnVsbCl8fHttYXJnaW5SaWdodDowfSkubWFyZ2luUmlnaHQsMTApfHwwKT09PTApLGwuaW5uZXJIVE1MPSIiLGIucmVtb3ZlQ2hpbGQobCk7aWYoYS5hdHRhY2hFdmVudClmb3IocSBpbntzdWJtaXQ6MSxjaGFuZ2U6MSxmb2N1c2luOjF9KXA9Im9uIitxLHI9cCBpbiBhLHJ8fChhLnNldEF0dHJpYnV0ZShwLCJyZXR1cm47Iikscj10eXBlb2YgYVtwXT09ImZ1bmN0aW9uIiksaltxKyJCdWJibGVzIl09cjtyZXR1cm4gan0oKSxmLmJveE1vZGVsPWYuc3VwcG9ydC5ib3hNb2RlbDt2YXIgaT0vXig/Olx7LipcfXxcWy4qXF0pJC8saj0vKFthLXpdKShbQS1aXSkvZztmLmV4dGVuZCh7Y2FjaGU6e30sdXVpZDowLGV4cGFuZG86ImpRdWVyeSIrKGYuZm4uanF1ZXJ5K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLG5vRGF0YTp7ZW1iZWQ6ITAsb2JqZWN0OiJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGFwcGxldDohMH0saGFzRGF0YTpmdW5jdGlvbihhKXthPWEubm9kZVR5cGU/Zi5jYWNoZVthW2YuZXhwYW5kb11dOmFbZi5leHBhbmRvXTtyZXR1cm4hIWEmJiFsKGEpfSxkYXRhOmZ1bmN0aW9uKGEsYyxkLGUpe2lmKCEhZi5hY2NlcHREYXRhKGEpKXt2YXIgZz1mLmV4cGFuZG8saD10eXBlb2YgYz09InN0cmluZyIsaSxqPWEubm9kZVR5cGUsaz1qP2YuY2FjaGU6YSxsPWo/YVtmLmV4cGFuZG9dOmFbZi5leHBhbmRvXSYmZi5leHBhbmRvO2lmKCghbHx8ZSYmbCYmIWtbbF1bZ10pJiZoJiZkPT09YilyZXR1cm47bHx8KGo/YVtmLmV4cGFuZG9dPWw9KytmLnV1aWQ6bD1mLmV4cGFuZG8pLGtbbF18fChrW2xdPXt9LGp8fChrW2xdLnRvSlNPTj1mLm5vb3ApKTtpZih0eXBlb2YgYz09Im9iamVjdCJ8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWU/a1tsXVtnXT1mLmV4dGVuZChrW2xdW2ddLGMpOmtbbF09Zi5leHRlbmQoa1tsXSxjKTtpPWtbbF0sZSYmKGlbZ118fChpW2ddPXt9KSxpPWlbZ10pLGQhPT1iJiYoaVtmLmNhbWVsQ2FzZShjKV09ZCk7aWYoYz09PSJldmVudHMiJiYhaVtjXSlyZXR1cm4gaVtnXSYmaVtnXS5ldmVudHM7cmV0dXJuIGg/aVtmLmNhbWVsQ2FzZShjKV06aX19LHJlbW92ZURhdGE6ZnVuY3Rpb24oYixjLGQpe2lmKCEhZi5hY2NlcHREYXRhKGIpKXt2YXIgZT1mLmV4cGFuZG8sZz1iLm5vZGVUeXBlLGg9Zz9mLmNhY2hlOmIsaT1nP2JbZi5leHBhbmRvXTpmLmV4cGFuZG87aWYoIWhbaV0pcmV0dXJuO2lmKGMpe3ZhciBqPWQ/aFtpXVtlXTpoW2ldO2lmKGope2RlbGV0ZSBqW2NdO2lmKCFsKGopKXJldHVybn19aWYoZCl7ZGVsZXRlIGhbaV1bZV07aWYoIWwoaFtpXSkpcmV0dXJufXZhciBrPWhbaV1bZV07Zi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG98fGghPWE/ZGVsZXRlIGhbaV06aFtpXT1udWxsLGs/KGhbaV09e30sZ3x8KGhbaV0udG9KU09OPWYubm9vcCksaFtpXVtlXT1rKTpnJiYoZi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8/ZGVsZXRlIGJbZi5leHBhbmRvXTpiLnJlbW92ZUF0dHJpYnV0ZT9iLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pOmJbZi5leHBhbmRvXT1udWxsKX19LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kYXRhKGEsYixjLCEwKX0sYWNjZXB0RGF0YTpmdW5jdGlvbihhKXtpZihhLm5vZGVOYW1lKXt2YXIgYj1mLm5vRGF0YVthLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO2lmKGIpcmV0dXJuIGIhPT0hMCYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzaWQiKT09PWJ9cmV0dXJuITB9fSksZi5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxjKXt2YXIgZD1udWxsO2lmKHR5cGVvZiBhPT0idW5kZWZpbmVkIil7aWYodGhpcy5sZW5ndGgpe2Q9Zi5kYXRhKHRoaXNbMF0pO2lmKHRoaXNbMF0ubm9kZVR5cGU9PT0xKXt2YXIgZT10aGlzWzBdLmF0dHJpYnV0ZXMsZztmb3IodmFyIGg9MCxpPWUubGVuZ3RoO2g8aTtoKyspZz1lW2hdLm5hbWUsZy5pbmRleE9mKCJkYXRhLSIpPT09MCYmKGc9Zi5jYW1lbENhc2UoZy5zdWJzdHJpbmcoNSkpLGsodGhpc1swXSxnLGRbZ10pKX19cmV0dXJuIGR9aWYodHlwZW9mIGE9PSJvYmplY3QiKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRhdGEodGhpcyxhKX0pO3ZhciBqPWEuc3BsaXQoIi4iKTtqWzFdPWpbMV0/Ii4iK2pbMV06IiI7aWYoYz09PWIpe2Q9dGhpcy50cmlnZ2VySGFuZGxlcigiZ2V0RGF0YSIralsxXSsiISIsW2pbMF1dKSxkPT09YiYmdGhpcy5sZW5ndGgmJihkPWYuZGF0YSh0aGlzWzBdLGEpLGQ9ayh0aGlzWzBdLGEsZCkpO3JldHVybiBkPT09YiYmalsxXT90aGlzLmRhdGEoalswXSk6ZH1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Zih0aGlzKSxkPVtqWzBdLGNdO2IudHJpZ2dlckhhbmRsZXIoInNldERhdGEiK2pbMV0rIiEiLGQpLGYuZGF0YSh0aGlzLGEsYyksYi50cmlnZ2VySGFuZGxlcigiY2hhbmdlRGF0YSIralsxXSsiISIsZCl9KX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5yZW1vdmVEYXRhKHRoaXMsYSl9KX19KSxmLmV4dGVuZCh7X21hcms6ZnVuY3Rpb24oYSxjKXthJiYoYz0oY3x8ImZ4IikrIm1hcmsiLGYuZGF0YShhLGMsKGYuZGF0YShhLGMsYiwhMCl8fDApKzEsITApKX0sX3VubWFyazpmdW5jdGlvbihhLGMsZCl7YSE9PSEwJiYoZD1jLGM9YSxhPSExKTtpZihjKXtkPWR8fCJmeCI7dmFyIGU9ZCsibWFyayIsZz1hPzA6KGYuZGF0YShjLGUsYiwhMCl8fDEpLTE7Zz9mLmRhdGEoYyxlLGcsITApOihmLnJlbW92ZURhdGEoYyxlLCEwKSxtKGMsZCwibWFyayIpKX19LHF1ZXVlOmZ1bmN0aW9uKGEsYyxkKXtpZihhKXtjPShjfHwiZngiKSsicXVldWUiO3ZhciBlPWYuZGF0YShhLGMsYiwhMCk7ZCYmKCFlfHxmLmlzQXJyYXkoZCk/ZT1mLmRhdGEoYSxjLGYubWFrZUFycmF5KGQpLCEwKTplLnB1c2goZCkpO3JldHVybiBlfHxbXX19LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9Zi5xdWV1ZShhLGIpLGQ9Yy5zaGlmdCgpLGU7ZD09PSJpbnByb2dyZXNzIiYmKGQ9Yy5zaGlmdCgpKSxkJiYoYj09PSJmeCImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGQuY2FsbChhLGZ1bmN0aW9uKCl7Zi5kZXF1ZXVlKGEsYil9KSksYy5sZW5ndGh8fChmLnJlbW92ZURhdGEoYSxiKyJxdWV1ZSIsITApLG0oYSxiLCJxdWV1ZSIpKX19KSxmLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxjKXt0eXBlb2YgYSE9InN0cmluZyImJihjPWEsYT0iZngiKTtpZihjPT09YilyZXR1cm4gZi5xdWV1ZSh0aGlzWzBdLGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mLnF1ZXVlKHRoaXMsYSxjKTthPT09ImZ4IiYmYlswXSE9PSJpbnByb2dyZXNzIiYmZi5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVsYXk6ZnVuY3Rpb24oYSxiKXthPWYuZng/Zi5meC5zcGVlZHNbYV18fGE6YSxiPWJ8fCJmeCI7cmV0dXJuIHRoaXMucXVldWUoYixmdW5jdGlvbigpe3ZhciBjPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2YuZGVxdWV1ZShjLGIpfSxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gbSgpey0taHx8ZC5yZXNvbHZlV2l0aChlLFtlXSl9dHlwZW9mIGEhPSJzdHJpbmciJiYoYz1hLGE9YiksYT1hfHwiZngiO3ZhciBkPWYuRGVmZXJyZWQoKSxlPXRoaXMsZz1lLmxlbmd0aCxoPTEsaT1hKyJkZWZlciIsaj1hKyJxdWV1ZSIsaz1hKyJtYXJrIixsO3doaWxlKGctLSlpZihsPWYuZGF0YShlW2ddLGksYiwhMCl8fChmLmRhdGEoZVtnXSxqLGIsITApfHxmLmRhdGEoZVtnXSxrLGIsITApKSYmZi5kYXRhKGVbZ10saSxmLl9EZWZlcnJlZCgpLCEwKSloKyssbC5kb25lKG0pO20oKTtyZXR1cm4gZC5wcm9taXNlKCl9fSk7dmFyIG49L1tcblx0XHJdL2csbz0vXHMrLyxwPS9cci9nLHE9L14oPzpidXR0b258aW5wdXQpJC9pLHI9L14oPzpidXR0b258aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkkL2kscz0vXmEoPzpyZWEpPyQvaSx0PS9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLHU9L1w6Lyx2LHc7Zi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGIsITAsZi5hdHRyKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5yZW1vdmVBdHRyKHRoaXMsYSl9KX0scHJvcDpmdW5jdGlvbihhLGIpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGEsYiwhMCxmLnByb3ApfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGEpe2E9Zi5wcm9wRml4W2FdfHxhO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0cnl7dGhpc1thXT1iLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGMpe319KX0sYWRkQ2xhc3M6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIsYy5hdHRyKCJjbGFzcyIpfHwiIikpfSk7aWYoYSYmdHlwZW9mIGE9PSJzdHJpbmciKXt2YXIgYj0oYXx8IiIpLnNwbGl0KG8pO2Zvcih2YXIgYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKyl7dmFyIGU9dGhpc1tjXTtpZihlLm5vZGVUeXBlPT09MSlpZighZS5jbGFzc05hbWUpZS5jbGFzc05hbWU9YTtlbHNle3ZhciBnPSIgIitlLmNsYXNzTmFtZSsiICIsaD1lLmNsYXNzTmFtZTtmb3IodmFyIGk9MCxqPWIubGVuZ3RoO2k8ajtpKyspZy5pbmRleE9mKCIgIitiW2ldKyIgIik8MCYmKGgrPSIgIitiW2ldKTtlLmNsYXNzTmFtZT1mLnRyaW0oaCl9fX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsYy5hdHRyKCJjbGFzcyIpKSl9KTtpZihhJiZ0eXBlb2YgYT09InN0cmluZyJ8fGE9PT1iKXt2YXIgYz0oYXx8IiIpLnNwbGl0KG8pO2Zvcih2YXIgZD0wLGU9dGhpcy5sZW5ndGg7ZDxlO2QrKyl7dmFyIGc9dGhpc1tkXTtpZihnLm5vZGVUeXBlPT09MSYmZy5jbGFzc05hbWUpaWYoYSl7dmFyIGg9KCIgIitnLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UobiwiICIpO2Zvcih2YXIgaT0wLGo9Yy5sZW5ndGg7aTxqO2krKyloPWgucmVwbGFjZSgiICIrY1tpXSsiICIsIiAiKTtnLmNsYXNzTmFtZT1mLnRyaW0oaCl9ZWxzZSBnLmNsYXNzTmFtZT0iIn19cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGEsZD10eXBlb2YgYj09ImJvb2xlYW4iO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBkPWYodGhpcyk7ZC50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxjLGQuYXR0cigiY2xhc3MiKSxiKSxiKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihjPT09InN0cmluZyIpe3ZhciBlLGc9MCxoPWYodGhpcyksaT1iLGo9YS5zcGxpdChvKTt3aGlsZShlPWpbZysrXSlpPWQ/aTohaC5oYXNDbGFzcyhlKSxoW2k/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShlKX1lbHNlIGlmKGM9PT0idW5kZWZpbmVkInx8Yz09PSJib29sZWFuIil0aGlzLmNsYXNzTmFtZSYmZi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpmLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiJ9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGI9IiAiK2ErIiAiO2Zvcih2YXIgYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKylpZigoIiAiK3RoaXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFjZShuLCIgIikuaW5kZXhPZihiKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZT10aGlzWzBdO2lmKCFhcmd1bWVudHMubGVuZ3RoKXtpZihlKXtjPWYudmFsSG9va3NbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXXx8Zi52YWxIb29rc1tlLnR5cGVdO2lmKGMmJiJnZXQiaW4gYyYmKGQ9Yy5nZXQoZSwidmFsdWUiKSkhPT1iKXJldHVybiBkO3JldHVybihlLnZhbHVlfHwiIikucmVwbGFjZShwLCIiKX1yZXR1cm4gYn12YXIgZz1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZT1mKHRoaXMpLGg7aWYodGhpcy5ub2RlVHlwZT09PTEpe2c/aD1hLmNhbGwodGhpcyxkLGUudmFsKCkpOmg9YSxoPT1udWxsP2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9Zi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxmLnZhbEhvb2tzW3RoaXMudHlwZV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxoLCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9fSksZi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLnNlbGVjdGVkSW5kZXgsZD1bXSxlPWEub3B0aW9ucyxnPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihjPDApcmV0dXJuIG51bGw7Zm9yKHZhciBoPWc/YzowLGk9Zz9jKzE6ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqLnNlbGVjdGVkJiYoZi5zdXBwb3J0Lm9wdERpc2FibGVkPyFqLmRpc2FibGVkOmouZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpPT09bnVsbCkmJighai5wYXJlbnROb2RlLmRpc2FibGVkfHwhZi5ub2RlTmFtZShqLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtiPWYoaikudmFsKCk7aWYoZylyZXR1cm4gYjtkLnB1c2goYil9fWlmKGcmJiFkLmxlbmd0aCYmZS5sZW5ndGgpcmV0dXJuIGYoZVtjXSkudmFsKCk7cmV0dXJuIGR9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWYubWFrZUFycmF5KGIpO2YoYSkuZmluZCgib3B0aW9uIikuZWFjaChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9Zi5pbkFycmF5KGYodGhpcykudmFsKCksYyk+PTB9KSxjLmxlbmd0aHx8KGEuc2VsZWN0ZWRJbmRleD0tMSk7cmV0dXJuIGN9fX0sYXR0ckZuOnt2YWw6ITAsY3NzOiEwLGh0bWw6ITAsdGV4dDohMCxkYXRhOiEwLHdpZHRoOiEwLGhlaWdodDohMCxvZmZzZXQ6ITB9LGF0dHJGaXg6e3RhYmluZGV4OiJ0YWJJbmRleCJ9LGF0dHI6ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGc9YS5ub2RlVHlwZTtpZighYXx8Zz09PTN8fGc9PT04fHxnPT09MilyZXR1cm4gYjtpZihlJiZjIGluIGYuYXR0ckZuKXJldHVybiBmKGEpW2NdKGQpO2lmKCEoImdldEF0dHJpYnV0ZSJpbiBhKSlyZXR1cm4gZi5wcm9wKGEsYyxkKTt2YXIgaCxpLGo9ZyE9PTF8fCFmLmlzWE1MRG9jKGEpO2M9aiYmZi5hdHRyRml4W2NdfHxjLGk9Zi5hdHRySG9va3NbY10saXx8KCF0LnRlc3QoYyl8fHR5cGVvZiBkIT0iYm9vbGVhbiImJmQhPT1iJiZkLnRvTG93ZXJDYXNlKCkhPT1jLnRvTG93ZXJDYXNlKCk/diYmKGYubm9kZU5hbWUoYSwiZm9ybSIpfHx1LnRlc3QoYykpJiYoaT12KTppPXcpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7Zi5yZW1vdmVBdHRyKGEsYyk7cmV0dXJuIGJ9aWYoaSYmInNldCJpbiBpJiZqJiYoaD1pLnNldChhLGQsYykpIT09YilyZXR1cm4gaDthLnNldEF0dHJpYnV0ZShjLCIiK2QpO3JldHVybiBkfWlmKGkmJiJnZXQiaW4gaSYmailyZXR1cm4gaS5nZXQoYSxjKTtoPWEuZ2V0QXR0cmlidXRlKGMpO3JldHVybiBoPT09bnVsbD9iOmh9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYzthLm5vZGVUeXBlPT09MSYmKGI9Zi5hdHRyRml4W2JdfHxiLGYuc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGU/YS5yZW1vdmVBdHRyaWJ1dGUoYik6KGYuYXR0cihhLGIsIiIpLGEucmVtb3ZlQXR0cmlidXRlTm9kZShhLmdldEF0dHJpYnV0ZU5vZGUoYikpKSx0LnRlc3QoYikmJihjPWYucHJvcEZpeFtiXXx8YilpbiBhJiYoYVtjXT0hMSkpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihhLGIpe2lmKHEudGVzdChhLm5vZGVOYW1lKSYmYS5wYXJlbnROb2RlKWYuZXJyb3IoInR5cGUgcHJvcGVydHkgY2FuJ3QgYmUgY2hhbmdlZCIpO2Vsc2UgaWYoIWYuc3VwcG9ydC5yYWRpb1ZhbHVlJiZiPT09InJhZGlvIiYmZi5ub2RlTmFtZShhLCJpbnB1dCIpKXt2YXIgYz1hLnZhbHVlO2Euc2V0QXR0cmlidXRlKCJ0eXBlIixiKSxjJiYoYS52YWx1ZT1jKTtyZXR1cm4gYn19fSx0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBjPWEuZ2V0QXR0cmlidXRlTm9kZSgidGFiSW5kZXgiKTtyZXR1cm4gYyYmYy5zcGVjaWZpZWQ/cGFyc2VJbnQoYy52YWx1ZSwxMCk6ci50ZXN0KGEubm9kZU5hbWUpfHxzLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOmJ9fX0scHJvcEZpeDp7dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9ubHkiLCJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNlbGxwYWRkaW5nOiJjZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsY29udGVudGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUifSxwcm9wOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1hLm5vZGVUeXBlO2lmKCFhfHxlPT09M3x8ZT09PTh8fGU9PT0yKXJldHVybiBiO3ZhciBnLGgsaT1lIT09MXx8IWYuaXNYTUxEb2MoYSk7Yz1pJiZmLnByb3BGaXhbY118fGMsaD1mLnByb3BIb29rc1tjXTtyZXR1cm4gZCE9PWI/aCYmInNldCJpbiBoJiYoZz1oLnNldChhLGQsYykpIT09Yj9nOmFbY109ZDpoJiYiZ2V0ImluIGgmJihnPWguZ2V0KGEsYykpIT09Yj9nOmFbY119LHByb3BIb29rczp7fX0pLHc9e2dldDpmdW5jdGlvbihhLGMpe3JldHVybiBhW2YucHJvcEZpeFtjXXx8Y10/Yy50b0xvd2VyQ2FzZSgpOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7Yj09PSExP2YucmVtb3ZlQXR0cihhLGMpOihkPWYucHJvcEZpeFtjXXx8YyxkIGluIGEmJihhW2RdPWIpLGEuc2V0QXR0cmlidXRlKGMsYy50b0xvd2VyQ2FzZSgpKSk7cmV0dXJuIGN9fSxmLmF0dHJIb29rcy52YWx1ZT17Z2V0OmZ1bmN0aW9uKGEsYil7aWYodiYmZi5ub2RlTmFtZShhLCJidXR0b24iKSlyZXR1cm4gdi5nZXQoYSxiKTtyZXR1cm4gYS52YWx1ZX0sc2V0OmZ1bmN0aW9uKGEsYixjKXtpZih2JiZmLm5vZGVOYW1lKGEsImJ1dHRvbiIpKXJldHVybiB2LnNldChhLGIsYyk7YS52YWx1ZT1ifX0sZi5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZXx8KGYuYXR0ckZpeD1mLnByb3BGaXgsdj1mLmF0dHJIb29rcy5uYW1lPWYudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZDtkPWEuZ2V0QXR0cmlidXRlTm9kZShjKTtyZXR1cm4gZCYmZC5ub2RlVmFsdWUhPT0iIj9kLm5vZGVWYWx1ZTpifSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0QXR0cmlidXRlTm9kZShjKTtpZihkKXtkLm5vZGVWYWx1ZT1iO3JldHVybiBifX19LGYuZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXtmLmF0dHJIb29rc1tiXT1mLmV4dGVuZChmLmF0dHJIb29rc1tiXSx7c2V0OmZ1bmN0aW9uKGEsYyl7aWYoYz09PSIiKXthLnNldEF0dHJpYnV0ZShiLCJhdXRvIik7cmV0dXJuIGN9fX0pfSkpLGYuc3VwcG9ydC5ocmVmTm9ybWFsaXplZHx8Zi5lYWNoKFsiaHJlZiIsInNyYyIsIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxjKXtmLmF0dHJIb29rc1tjXT1mLmV4dGVuZChmLmF0dHJIb29rc1tjXSx7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBkPWEuZ2V0QXR0cmlidXRlKGMsMik7cmV0dXJuIGQ9PT1udWxsP2I6ZH19KX0pLGYuc3VwcG9ydC5zdHlsZXx8KGYuYXR0ckhvb2tzLnN0eWxlPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dC50b0xvd2VyQ2FzZSgpfHxifSxzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0PSIiK2J9fSksZi5zdXBwb3J0Lm9wdFNlbGVjdGVkfHwoZi5wcm9wSG9va3Muc2VsZWN0ZWQ9Zi5leHRlbmQoZi5wcm9wSG9va3Muc2VsZWN0ZWQse2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7YiYmKGIuc2VsZWN0ZWRJbmRleCxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSksZi5zdXBwb3J0LmNoZWNrT258fGYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2YudmFsSG9va3NbdGhpc109e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIik9PT1udWxsPyJvbiI6YS52YWx1ZX19fSksZi5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Zi52YWxIb29rc1t0aGlzXT1mLmV4dGVuZChmLnZhbEhvb2tzW3RoaXNdLHtzZXQ6ZnVuY3Rpb24oYSxiKXtpZihmLmlzQXJyYXkoYikpcmV0dXJuIGEuY2hlY2tlZD1mLmluQXJyYXkoZihhKS52YWwoKSxiKT49MH19KX0pO3ZhciB4PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkseT0vXC4oLiopJC8sej0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2ksQT0vXC4vZyxCPS8gL2csQz0vW15cd1xzLnxgXS9nLEQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShDLCJcXCQmIil9O2YuZXZlbnQ9e2FkZDpmdW5jdGlvbihhLGMsZCxlKXtpZihhLm5vZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgpe2lmKGQ9PT0hMSlkPUU7ZWxzZSBpZighZClyZXR1cm47dmFyIGcsaDtkLmhhbmRsZXImJihnPWQsZD1nLmhhbmRsZXIpLGQuZ3VpZHx8KGQuZ3VpZD1mLmd1aWQrKyk7dmFyIGk9Zi5fZGF0YShhKTtpZighaSlyZXR1cm47dmFyIGo9aS5ldmVudHMsaz1pLmhhbmRsZTtqfHwoaS5ldmVudHM9aj17fSksa3x8KGkuaGFuZGxlPWs9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBmIT0idW5kZWZpbmVkIiYmKCFhfHxmLmV2ZW50LnRyaWdnZXJlZCE9PWEudHlwZSk/Zi5ldmVudC5oYW5kbGUuYXBwbHkoay5lbGVtLGFyZ3VtZW50cyk6Yn0pLGsuZWxlbT1hLGM9Yy5zcGxpdCgiICIpO3ZhciBsLG09MCxuO3doaWxlKGw9Y1ttKytdKXtoPWc/Zi5leHRlbmQoe30sZyk6e2hhbmRsZXI6ZCxkYXRhOmV9LGwuaW5kZXhPZigiLiIpPi0xPyhuPWwuc3BsaXQoIi4iKSxsPW4uc2hpZnQoKSxoLm5hbWVzcGFjZT1uLnNsaWNlKDApLnNvcnQoKS5qb2luKCIuIikpOihuPVtdLGgubmFtZXNwYWNlPSIiKSxoLnR5cGU9bCxoLmd1aWR8fChoLmd1aWQ9ZC5ndWlkKTt2YXIgbz1qW2xdLHA9Zi5ldmVudC5zcGVjaWFsW2xdfHx7fTtpZighbyl7bz1qW2xdPVtdO2lmKCFwLnNldHVwfHxwLnNldHVwLmNhbGwoYSxlLG4sayk9PT0hMSlhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKGwsaywhMSk6YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib24iK2wsayl9cC5hZGQmJihwLmFkZC5jYWxsKGEsaCksaC5oYW5kbGVyLmd1aWR8fChoLmhhbmRsZXIuZ3VpZD1kLmd1aWQpKSxvLnB1c2goaCksZi5ldmVudC5nbG9iYWxbbF09ITB9YT1udWxsfX0sZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihhLGMsZCxlKXtpZihhLm5vZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgpe2Q9PT0hMSYmKGQ9RSk7dmFyIGcsaCxpLGosaz0wLGwsbSxuLG8scCxxLHIscz1mLmhhc0RhdGEoYSkmJmYuX2RhdGEoYSksdD1zJiZzLmV2ZW50cztpZighc3x8IXQpcmV0dXJuO2MmJmMudHlwZSYmKGQ9Yy5oYW5kbGVyLGM9Yy50eXBlKTtpZighY3x8dHlwZW9mIGM9PSJzdHJpbmciJiZjLmNoYXJBdCgwKT09PSIuIil7Yz1jfHwiIjtmb3IoaCBpbiB0KWYuZXZlbnQucmVtb3ZlKGEsaCtjKTtyZXR1cm59Yz1jLnNwbGl0KCIgIik7d2hpbGUoaD1jW2srK10pe3I9aCxxPW51bGwsbD1oLmluZGV4T2YoIi4iKTwwLG09W10sbHx8KG09aC5zcGxpdCgiLiIpLGg9bS5zaGlmdCgpLG49bmV3IFJlZ0V4cCgiKF58XFwuKSIrZi5tYXAobS5zbGljZSgwKS5zb3J0KCksRCkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIikpLHA9dFtoXTtpZighcCljb250aW51ZTtpZighZCl7Zm9yKGo9MDtqPHAubGVuZ3RoO2orKyl7cT1wW2pdO2lmKGx8fG4udGVzdChxLm5hbWVzcGFjZSkpZi5ldmVudC5yZW1vdmUoYSxyLHEuaGFuZGxlcixqKSxwLnNwbGljZShqLS0sMSl9Y29udGludWV9bz1mLmV2ZW50LnNwZWNpYWxbaF18fHt9O2ZvcihqPWV8fDA7ajxwLmxlbmd0aDtqKyspe3E9cFtqXTtpZihkLmd1aWQ9PT1xLmd1aWQpe2lmKGx8fG4udGVzdChxLm5hbWVzcGFjZSkpZT09bnVsbCYmcC5zcGxpY2Uoai0tLDEpLG8ucmVtb3ZlJiZvLnJlbW92ZS5jYWxsKGEscSk7aWYoZSE9bnVsbClicmVha319aWYocC5sZW5ndGg9PT0wfHxlIT1udWxsJiZwLmxlbmd0aD09PTEpKCFvLnRlYXJkb3dufHxvLnRlYXJkb3duLmNhbGwoYSxtKT09PSExKSYmZi5yZW1vdmVFdmVudChhLGgscy5oYW5kbGUpLGc9bnVsbCxkZWxldGUgdFtoXX1pZihmLmlzRW1wdHlPYmplY3QodCkpe3ZhciB1PXMuaGFuZGxlO3UmJih1LmVsZW09bnVsbCksZGVsZXRlIHMuZXZlbnRzLGRlbGV0ZSBzLmhhbmRsZSxmLmlzRW1wdHlPYmplY3QocykmJmYucmVtb3ZlRGF0YShhLGIsITApfX19LGN1c3RvbUV2ZW50OntnZXREYXRhOiEwLHNldERhdGE6ITAsY2hhbmdlRGF0YTohMH0sdHJpZ2dlcjpmdW5jdGlvbihjLGQsZSxnKXt2YXIgaD1jLnR5cGV8fGMsaT1bXSxqO2guaW5kZXhPZigiISIpPj0wJiYoaD1oLnNsaWNlKDAsLTEpLGo9ITApLGguaW5kZXhPZigiLiIpPj0wJiYoaT1oLnNwbGl0KCIuIiksaD1pLnNoaWZ0KCksaS5zb3J0KCkpO2lmKCEhZSYmIWYuZXZlbnQuY3VzdG9tRXZlbnRbaF18fCEhZi5ldmVudC5nbG9iYWxbaF0pe2M9dHlwZW9mIGM9PSJvYmplY3QiP2NbZi5leHBhbmRvXT9jOm5ldyBmLkV2ZW50KGgsYyk6bmV3IGYuRXZlbnQoaCksYy50eXBlPWgsYy5leGNsdXNpdmU9aixjLm5hbWVzcGFjZT1pLmpvaW4oIi4iKSxjLm5hbWVzcGFjZV9yZT1uZXcgUmVnRXhwKCIoXnxcXC4pIitpLmpvaW4oIlxcLig/Oi4qXFwuKT8iKSsiKFxcLnwkKSIpO2lmKGd8fCFlKWMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigpO2lmKCFlKXtmLmVhY2goZi5jYWNoZSxmdW5jdGlvbigpe3ZhciBhPWYuZXhwYW5kbyxiPXRoaXNbYV07YiYmYi5ldmVudHMmJmIuZXZlbnRzW2hdJiZmLmV2ZW50LnRyaWdnZXIoYyxkLGIuaGFuZGxlLmVsZW0KKX0pO3JldHVybn1pZihlLm5vZGVUeXBlPT09M3x8ZS5ub2RlVHlwZT09PTgpcmV0dXJuO2MucmVzdWx0PWIsYy50YXJnZXQ9ZSxkPWQ/Zi5tYWtlQXJyYXkoZCk6W10sZC51bnNoaWZ0KGMpO3ZhciBrPWUsbD1oLmluZGV4T2YoIjoiKTwwPyJvbiIraDoiIjtkb3t2YXIgbT1mLl9kYXRhKGssImhhbmRsZSIpO2MuY3VycmVudFRhcmdldD1rLG0mJm0uYXBwbHkoayxkKSxsJiZmLmFjY2VwdERhdGEoaykmJmtbbF0mJmtbbF0uYXBwbHkoayxkKT09PSExJiYoYy5yZXN1bHQ9ITEsYy5wcmV2ZW50RGVmYXVsdCgpKSxrPWsucGFyZW50Tm9kZXx8ay5vd25lckRvY3VtZW50fHxrPT09Yy50YXJnZXQub3duZXJEb2N1bWVudCYmYX13aGlsZShrJiYhYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKTtpZighYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIG4sbz1mLmV2ZW50LnNwZWNpYWxbaF18fHt9O2lmKCghby5fZGVmYXVsdHx8by5fZGVmYXVsdC5jYWxsKGUub3duZXJEb2N1bWVudCxjKT09PSExKSYmKGghPT0iY2xpY2sifHwhZi5ub2RlTmFtZShlLCJhIikpJiZmLmFjY2VwdERhdGEoZSkpe3RyeXtsJiZlW2hdJiYobj1lW2xdLG4mJihlW2xdPW51bGwpLGYuZXZlbnQudHJpZ2dlcmVkPWgsZVtoXSgpKX1jYXRjaChwKXt9biYmKGVbbF09biksZi5ldmVudC50cmlnZ2VyZWQ9Yn19cmV0dXJuIGMucmVzdWx0fX0saGFuZGxlOmZ1bmN0aW9uKGMpe2M9Zi5ldmVudC5maXgoY3x8YS5ldmVudCk7dmFyIGQ9KChmLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYy50eXBlXXx8W10pLnNsaWNlKDApLGU9IWMuZXhjbHVzaXZlJiYhYy5uYW1lc3BhY2UsZz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7Z1swXT1jLGMuY3VycmVudFRhcmdldD10aGlzO2Zvcih2YXIgaD0wLGk9ZC5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZFtoXTtpZihlfHxjLm5hbWVzcGFjZV9yZS50ZXN0KGoubmFtZXNwYWNlKSl7Yy5oYW5kbGVyPWouaGFuZGxlcixjLmRhdGE9ai5kYXRhLGMuaGFuZGxlT2JqPWo7dmFyIGs9ai5oYW5kbGVyLmFwcGx5KHRoaXMsZyk7ayE9PWImJihjLnJlc3VsdD1rLGs9PT0hMSYmKGMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigpKSk7aWYoYy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfX1yZXR1cm4gYy5yZXN1bHR9LHByb3BzOiJhbHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxhYmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUgbGF5ZXJYIGxheWVyWSBtZXRhS2V5IG5ld1ZhbHVlIG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNjcmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcgd2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oYSl7aWYoYVtmLmV4cGFuZG9dKXJldHVybiBhO3ZhciBkPWE7YT1mLkV2ZW50KGQpO2Zvcih2YXIgZT10aGlzLnByb3BzLmxlbmd0aCxnO2U7KWc9dGhpcy5wcm9wc1stLWVdLGFbZ109ZFtnXTthLnRhcmdldHx8KGEudGFyZ2V0PWEuc3JjRWxlbWVudHx8YyksYS50YXJnZXQubm9kZVR5cGU9PT0zJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50Tm9kZSksIWEucmVsYXRlZFRhcmdldCYmYS5mcm9tRWxlbWVudCYmKGEucmVsYXRlZFRhcmdldD1hLmZyb21FbGVtZW50PT09YS50YXJnZXQ/YS50b0VsZW1lbnQ6YS5mcm9tRWxlbWVudCk7aWYoYS5wYWdlWD09bnVsbCYmYS5jbGllbnRYIT1udWxsKXt2YXIgaD1hLnRhcmdldC5vd25lckRvY3VtZW50fHxjLGk9aC5kb2N1bWVudEVsZW1lbnQsaj1oLmJvZHk7YS5wYWdlWD1hLmNsaWVudFgrKGkmJmkuc2Nyb2xsTGVmdHx8aiYmai5zY3JvbGxMZWZ0fHwwKS0oaSYmaS5jbGllbnRMZWZ0fHxqJiZqLmNsaWVudExlZnR8fDApLGEucGFnZVk9YS5jbGllbnRZKyhpJiZpLnNjcm9sbFRvcHx8aiYmai5zY3JvbGxUb3B8fDApLShpJiZpLmNsaWVudFRvcHx8aiYmai5jbGllbnRUb3B8fDApfWEud2hpY2g9PW51bGwmJihhLmNoYXJDb2RlIT1udWxsfHxhLmtleUNvZGUhPW51bGwpJiYoYS53aGljaD1hLmNoYXJDb2RlIT1udWxsP2EuY2hhckNvZGU6YS5rZXlDb2RlKSwhYS5tZXRhS2V5JiZhLmN0cmxLZXkmJihhLm1ldGFLZXk9YS5jdHJsS2V5KSwhYS53aGljaCYmYS5idXR0b24hPT1iJiYoYS53aGljaD1hLmJ1dHRvbiYxPzE6YS5idXR0b24mMj8zOmEuYnV0dG9uJjQ/MjowKTtyZXR1cm4gYX0sZ3VpZDoxZTgscHJveHk6Zi5wcm94eSxzcGVjaWFsOntyZWFkeTp7c2V0dXA6Zi5iaW5kUmVhZHksdGVhcmRvd246Zi5ub29wfSxsaXZlOnthZGQ6ZnVuY3Rpb24oYSl7Zi5ldmVudC5hZGQodGhpcyxPKGEub3JpZ1R5cGUsYS5zZWxlY3RvciksZi5leHRlbmQoe30sYSx7aGFuZGxlcjpOLGd1aWQ6YS5oYW5kbGVyLmd1aWR9KSl9LHJlbW92ZTpmdW5jdGlvbihhKXtmLmV2ZW50LnJlbW92ZSh0aGlzLE8oYS5vcmlnVHlwZSxhLnNlbGVjdG9yKSxhKX19LGJlZm9yZXVubG9hZDp7c2V0dXA6ZnVuY3Rpb24oYSxiLGMpe2YuaXNXaW5kb3codGhpcykmJih0aGlzLm9uYmVmb3JldW5sb2FkPWMpfSx0ZWFyZG93bjpmdW5jdGlvbihhLGIpe3RoaXMub25iZWZvcmV1bmxvYWQ9PT1iJiYodGhpcy5vbmJlZm9yZXVubG9hZD1udWxsKX19fX0sZi5yZW1vdmVFdmVudD1jLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXthLmRldGFjaEV2ZW50JiZhLmRldGFjaEV2ZW50KCJvbiIrYixjKX0sZi5FdmVudD1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLnByZXZlbnREZWZhdWx0KXJldHVybiBuZXcgZi5FdmVudChhLGIpO2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP0Y6RSk6dGhpcy50eXBlPWEsYiYmZi5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1mLm5vdygpLHRoaXNbZi5leHBhbmRvXT0hMH0sZi5FdmVudC5wcm90b3R5cGU9e3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9Rjt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8fChhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1GO3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDshYXx8KGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1GLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9LGlzRGVmYXVsdFByZXZlbnRlZDpFLGlzUHJvcGFnYXRpb25TdG9wcGVkOkUsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6RX07dmFyIEc9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZWxhdGVkVGFyZ2V0O2EudHlwZT1hLmRhdGE7dHJ5e2lmKGImJmIhPT1jJiYhYi5wYXJlbnROb2RlKXJldHVybjt3aGlsZShiJiZiIT09dGhpcyliPWIucGFyZW50Tm9kZTtiIT09dGhpcyYmZi5ldmVudC5oYW5kbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKGQpe319LEg9ZnVuY3Rpb24oYSl7YS50eXBlPWEuZGF0YSxmLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2YuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7Zi5ldmVudC5zcGVjaWFsW2FdPXtzZXR1cDpmdW5jdGlvbihjKXtmLmV2ZW50LmFkZCh0aGlzLGIsYyYmYy5zZWxlY3Rvcj9IOkcsYSl9LHRlYXJkb3duOmZ1bmN0aW9uKGEpe2YuZXZlbnQucmVtb3ZlKHRoaXMsYixhJiZhLnNlbGVjdG9yP0g6Ryl9fX0pLGYuc3VwcG9ydC5zdWJtaXRCdWJibGVzfHwoZi5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oYSxiKXtpZighZi5ub2RlTmFtZSh0aGlzLCJmb3JtIikpZi5ldmVudC5hZGQodGhpcywiY2xpY2suc3BlY2lhbFN1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1iLnR5cGU7KGM9PT0ic3VibWl0Inx8Yz09PSJpbWFnZSIpJiZmKGIpLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGgmJkwoInN1Ym1pdCIsdGhpcyxhcmd1bWVudHMpfSksZi5ldmVudC5hZGQodGhpcywia2V5cHJlc3Muc3BlY2lhbFN1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1iLnR5cGU7KGM9PT0idGV4dCJ8fGM9PT0icGFzc3dvcmQiKSYmZihiKS5jbG9zZXN0KCJmb3JtIikubGVuZ3RoJiZhLmtleUNvZGU9PT0xMyYmTCgic3VibWl0Iix0aGlzLGFyZ3VtZW50cyl9KTtlbHNlIHJldHVybiExfSx0ZWFyZG93bjpmdW5jdGlvbihhKXtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuc3BlY2lhbFN1Ym1pdCIpfX0pO2lmKCFmLnN1cHBvcnQuY2hhbmdlQnViYmxlcyl7dmFyIEksSj1mdW5jdGlvbihhKXt2YXIgYj1hLnR5cGUsYz1hLnZhbHVlO2I9PT0icmFkaW8ifHxiPT09ImNoZWNrYm94Ij9jPWEuY2hlY2tlZDpiPT09InNlbGVjdC1tdWx0aXBsZSI/Yz1hLnNlbGVjdGVkSW5kZXg+LTE/Zi5tYXAoYS5vcHRpb25zLGZ1bmN0aW9uKGEpe3JldHVybiBhLnNlbGVjdGVkfSkuam9pbigiLSIpOiIiOmYubm9kZU5hbWUoYSwic2VsZWN0IikmJihjPWEuc2VsZWN0ZWRJbmRleCk7cmV0dXJuIGN9LEs9ZnVuY3Rpb24oYyl7dmFyIGQ9Yy50YXJnZXQsZSxnO2lmKCEhei50ZXN0KGQubm9kZU5hbWUpJiYhZC5yZWFkT25seSl7ZT1mLl9kYXRhKGQsIl9jaGFuZ2VfZGF0YSIpLGc9SihkKSwoYy50eXBlIT09ImZvY3Vzb3V0Inx8ZC50eXBlIT09InJhZGlvIikmJmYuX2RhdGEoZCwiX2NoYW5nZV9kYXRhIixnKTtpZihlPT09Ynx8Zz09PWUpcmV0dXJuO2lmKGUhPW51bGx8fGcpYy50eXBlPSJjaGFuZ2UiLGMubGl2ZUZpcmVkPWIsZi5ldmVudC50cmlnZ2VyKGMsYXJndW1lbnRzWzFdLGQpfX07Zi5ldmVudC5zcGVjaWFsLmNoYW5nZT17ZmlsdGVyczp7Zm9jdXNvdXQ6SyxiZWZvcmVkZWFjdGl2YXRlOkssY2xpY2s6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1mLm5vZGVOYW1lKGIsImlucHV0Iik/Yi50eXBlOiIiOyhjPT09InJhZGlvInx8Yz09PSJjaGVja2JveCJ8fGYubm9kZU5hbWUoYiwic2VsZWN0IikpJiZLLmNhbGwodGhpcyxhKX0sa2V5ZG93bjpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxjPWYubm9kZU5hbWUoYiwiaW5wdXQiKT9iLnR5cGU6IiI7KGEua2V5Q29kZT09PTEzJiYhZi5ub2RlTmFtZShiLCJ0ZXh0YXJlYSIpfHxhLmtleUNvZGU9PT0zMiYmKGM9PT0iY2hlY2tib3gifHxjPT09InJhZGlvIil8fGM9PT0ic2VsZWN0LW11bHRpcGxlIikmJksuY2FsbCh0aGlzLGEpfSxiZWZvcmVhY3RpdmF0ZTpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtmLl9kYXRhKGIsIl9jaGFuZ2VfZGF0YSIsSihiKSl9fSxzZXR1cDpmdW5jdGlvbihhLGIpe2lmKHRoaXMudHlwZT09PSJmaWxlIilyZXR1cm4hMTtmb3IodmFyIGMgaW4gSSlmLmV2ZW50LmFkZCh0aGlzLGMrIi5zcGVjaWFsQ2hhbmdlIixJW2NdKTtyZXR1cm4gei50ZXN0KHRoaXMubm9kZU5hbWUpfSx0ZWFyZG93bjpmdW5jdGlvbihhKXtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuc3BlY2lhbENoYW5nZSIpO3JldHVybiB6LnRlc3QodGhpcy5ub2RlTmFtZSl9fSxJPWYuZXZlbnQuc3BlY2lhbC5jaGFuZ2UuZmlsdGVycyxJLmZvY3VzPUkuYmVmb3JlYWN0aXZhdGV9Zi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxmLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZShhKXt2YXIgYz1mLmV2ZW50LmZpeChhKTtjLnR5cGU9YixjLm9yaWdpbmFsRXZlbnQ9e30sZi5ldmVudC50cmlnZ2VyKGMsbnVsbCxjLnRhcmdldCksYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYS5wcmV2ZW50RGVmYXVsdCgpfXZhciBkPTA7Zi5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe2QrKz09PTAmJmMuYWRkRXZlbnRMaXN0ZW5lcihhLGUsITApfSx0ZWFyZG93bjpmdW5jdGlvbigpey0tZD09PTAmJmMucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGUsITApfX19KSxmLmVhY2goWyJiaW5kIiwib25lIl0sZnVuY3Rpb24oYSxjKXtmLmZuW2NdPWZ1bmN0aW9uKGEsZCxlKXt2YXIgZztpZih0eXBlb2YgYT09Im9iamVjdCIpe2Zvcih2YXIgaCBpbiBhKXRoaXNbY10oaCxkLGFbaF0sZSk7cmV0dXJuIHRoaXN9aWYoYXJndW1lbnRzLmxlbmd0aD09PTJ8fGQ9PT0hMSllPWQsZD1iO2M9PT0ib25lIj8oZz1mdW5jdGlvbihhKXtmKHRoaXMpLnVuYmluZChhLGcpO3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZy5ndWlkPWUuZ3VpZHx8Zi5ndWlkKyspOmc9ZTtpZihhPT09InVubG9hZCImJmMhPT0ib25lIil0aGlzLm9uZShhLGQsZSk7ZWxzZSBmb3IodmFyIGk9MCxqPXRoaXMubGVuZ3RoO2k8ajtpKyspZi5ldmVudC5hZGQodGhpc1tpXSxhLGcsZCk7cmV0dXJuIHRoaXN9fSksZi5mbi5leHRlbmQoe3VuYmluZDpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhPT0ib2JqZWN0IiYmIWEucHJldmVudERlZmF1bHQpZm9yKHZhciBjIGluIGEpdGhpcy51bmJpbmQoYyxhW2NdKTtlbHNlIGZvcih2YXIgZD0wLGU9dGhpcy5sZW5ndGg7ZDxlO2QrKylmLmV2ZW50LnJlbW92ZSh0aGlzW2RdLGEsYik7cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmxpdmUoYixjLGQsYSl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MD90aGlzLnVuYmluZCgibGl2ZSIpOnRoaXMuZGllKGIsbnVsbCxjLGEpfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXtpZih0aGlzWzBdKXJldHVybiBmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXNbMF0sITApfSx0b2dnbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLGM9YS5ndWlkfHxmLmd1aWQrKyxkPTAsZT1mdW5jdGlvbihjKXt2YXIgZT0oZi5kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCl8fDApJWQ7Zi5kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCxlKzEpLGMucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtlLmd1aWQ9Yzt3aGlsZShkPGIubGVuZ3RoKWJbZCsrXS5ndWlkPWM7cmV0dXJuIHRoaXMuY2xpY2soZSl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pO3ZhciBNPXtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQiLG1vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifTtmLmVhY2goWyJsaXZlIiwiZGllIl0sZnVuY3Rpb24oYSxjKXtmLmZuW2NdPWZ1bmN0aW9uKGEsZCxlLGcpe3ZhciBoLGk9MCxqLGssbCxtPWd8fHRoaXMuc2VsZWN0b3Isbj1nP3RoaXM6Zih0aGlzLmNvbnRleHQpO2lmKHR5cGVvZiBhPT0ib2JqZWN0IiYmIWEucHJldmVudERlZmF1bHQpe2Zvcih2YXIgbyBpbiBhKW5bY10obyxkLGFbb10sbSk7cmV0dXJuIHRoaXN9aWYoYz09PSJkaWUiJiYhYSYmZyYmZy5jaGFyQXQoMCk9PT0iLiIpe24udW5iaW5kKGcpO3JldHVybiB0aGlzfWlmKGQ9PT0hMXx8Zi5pc0Z1bmN0aW9uKGQpKWU9ZHx8RSxkPWI7YT0oYXx8IiIpLnNwbGl0KCIgIik7d2hpbGUoKGg9YVtpKytdKSE9bnVsbCl7aj15LmV4ZWMoaCksaz0iIixqJiYoaz1qWzBdLGg9aC5yZXBsYWNlKHksIiIpKTtpZihoPT09ImhvdmVyIil7YS5wdXNoKCJtb3VzZWVudGVyIitrLCJtb3VzZWxlYXZlIitrKTtjb250aW51ZX1sPWgsTVtoXT8oYS5wdXNoKE1baF0rayksaD1oK2spOmg9KE1baF18fGgpK2s7aWYoYz09PSJsaXZlIilmb3IodmFyIHA9MCxxPW4ubGVuZ3RoO3A8cTtwKyspZi5ldmVudC5hZGQobltwXSwibGl2ZS4iK08oaCxtKSx7ZGF0YTpkLHNlbGVjdG9yOm0saGFuZGxlcjplLG9yaWdUeXBlOmgsb3JpZ0hhbmRsZXI6ZSxwcmVUeXBlOmx9KTtlbHNlIG4udW5iaW5kKCJsaXZlLiIrTyhoLG0pLGUpfXJldHVybiB0aGlzfX0pLGYuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2YuZm5bYl09ZnVuY3Rpb24oYSxjKXtjPT1udWxsJiYoYz1hLGE9bnVsbCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLmJpbmQoYixhLGMpOnRoaXMudHJpZ2dlcihiKX0sZi5hdHRyRm4mJihmLmF0dHJGbltiXT0hMCl9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHUoYSxiLGMsZCxlLGYpe2Zvcih2YXIgZz0wLGg9ZC5sZW5ndGg7ZzxoO2crKyl7dmFyIGk9ZFtnXTtpZihpKXt2YXIgaj0hMTtpPWlbYV07d2hpbGUoaSl7aWYoaS5zaXpjYWNoZT09PWMpe2o9ZFtpLnNpenNldF07YnJlYWt9aWYoaS5ub2RlVHlwZT09PTEpe2Z8fChpLnNpemNhY2hlPWMsaS5zaXpzZXQ9Zyk7aWYodHlwZW9mIGIhPSJzdHJpbmciKXtpZihpPT09Yil7aj0hMDticmVha319ZWxzZSBpZihrLmZpbHRlcihiLFtpXSkubGVuZ3RoPjApe2o9aTticmVha319aT1pW2FdfWRbZ109an19fWZ1bmN0aW9uIHQoYSxiLGMsZCxlLGYpe2Zvcih2YXIgZz0wLGg9ZC5sZW5ndGg7ZzxoO2crKyl7dmFyIGk9ZFtnXTtpZihpKXt2YXIgaj0hMTtpPWlbYV07d2hpbGUoaSl7aWYoaS5zaXpjYWNoZT09PWMpe2o9ZFtpLnNpenNldF07YnJlYWt9aS5ub2RlVHlwZT09PTEmJiFmJiYoaS5zaXpjYWNoZT1jLGkuc2l6c2V0PWcpO2lmKGkubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIpe2o9aTticmVha31pPWlbYV19ZFtnXT1qfX19dmFyIGE9LygoPzpcKCg/OlwoW14oKV0rXCl8W14oKV0rKStcKXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXlxbXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZyxkPTAsZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGc9ITEsaD0hMCxpPS9cXC9nLGo9L1xXLztbMCwwXS5zb3J0KGZ1bmN0aW9uKCl7aD0hMTtyZXR1cm4gMH0pO3ZhciBrPWZ1bmN0aW9uKGIsZCxmLGcpe2Y9Znx8W10sZD1kfHxjO3ZhciBoPWQ7aWYoZC5ub2RlVHlwZSE9PTEmJmQubm9kZVR5cGUhPT05KXJldHVybltdO2lmKCFifHx0eXBlb2YgYiE9InN0cmluZyIpcmV0dXJuIGY7dmFyIGksaixuLG8scSxyLHMsdCx1PSEwLHc9ay5pc1hNTChkKSx4PVtdLHk9Yjtkb3thLmV4ZWMoIiIpLGk9YS5leGVjKHkpO2lmKGkpe3k9aVszXSx4LnB1c2goaVsxXSk7aWYoaVsyXSl7bz1pWzNdO2JyZWFrfX19d2hpbGUoaSk7aWYoeC5sZW5ndGg+MSYmbS5leGVjKGIpKWlmKHgubGVuZ3RoPT09MiYmbC5yZWxhdGl2ZVt4WzBdXSlqPXYoeFswXSt4WzFdLGQpO2Vsc2V7aj1sLnJlbGF0aXZlW3hbMF1dP1tkXTprKHguc2hpZnQoKSxkKTt3aGlsZSh4Lmxlbmd0aCliPXguc2hpZnQoKSxsLnJlbGF0aXZlW2JdJiYoYis9eC5zaGlmdCgpKSxqPXYoYixqKX1lbHNleyFnJiZ4Lmxlbmd0aD4xJiZkLm5vZGVUeXBlPT09OSYmIXcmJmwubWF0Y2guSUQudGVzdCh4WzBdKSYmIWwubWF0Y2guSUQudGVzdCh4W3gubGVuZ3RoLTFdKSYmKHE9ay5maW5kKHguc2hpZnQoKSxkLHcpLGQ9cS5leHByP2suZmlsdGVyKHEuZXhwcixxLnNldClbMF06cS5zZXRbMF0pO2lmKGQpe3E9Zz97ZXhwcjp4LnBvcCgpLHNldDpwKGcpfTprLmZpbmQoeC5wb3AoKSx4Lmxlbmd0aD09PTEmJih4WzBdPT09In4ifHx4WzBdPT09IisiKSYmZC5wYXJlbnROb2RlP2QucGFyZW50Tm9kZTpkLHcpLGo9cS5leHByP2suZmlsdGVyKHEuZXhwcixxLnNldCk6cS5zZXQseC5sZW5ndGg+MD9uPXAoaik6dT0hMTt3aGlsZSh4Lmxlbmd0aClyPXgucG9wKCkscz1yLGwucmVsYXRpdmVbcl0/cz14LnBvcCgpOnI9IiIscz09bnVsbCYmKHM9ZCksbC5yZWxhdGl2ZVtyXShuLHMsdyl9ZWxzZSBuPXg9W119bnx8KG49aiksbnx8ay5lcnJvcihyfHxiKTtpZihlLmNhbGwobik9PT0iW29iamVjdCBBcnJheV0iKWlmKCF1KWYucHVzaC5hcHBseShmLG4pO2Vsc2UgaWYoZCYmZC5ub2RlVHlwZT09PTEpZm9yKHQ9MDtuW3RdIT1udWxsO3QrKyluW3RdJiYoblt0XT09PSEwfHxuW3RdLm5vZGVUeXBlPT09MSYmay5jb250YWlucyhkLG5bdF0pKSYmZi5wdXNoKGpbdF0pO2Vsc2UgZm9yKHQ9MDtuW3RdIT1udWxsO3QrKyluW3RdJiZuW3RdLm5vZGVUeXBlPT09MSYmZi5wdXNoKGpbdF0pO2Vsc2UgcChuLGYpO28mJihrKG8saCxmLGcpLGsudW5pcXVlU29ydChmKSk7cmV0dXJuIGZ9O2sudW5pcXVlU29ydD1mdW5jdGlvbihhKXtpZihyKXtnPWgsYS5zb3J0KHIpO2lmKGcpZm9yKHZhciBiPTE7YjxhLmxlbmd0aDtiKyspYVtiXT09PWFbYi0xXSYmYS5zcGxpY2UoYi0tLDEpfXJldHVybiBhfSxrLm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gayhhLG51bGwsbnVsbCxiKX0say5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gayhiLG51bGwsbnVsbCxbYV0pLmxlbmd0aD4wfSxrLmZpbmQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKCFhKXJldHVybltdO2Zvcih2YXIgZT0wLGY9bC5vcmRlci5sZW5ndGg7ZTxmO2UrKyl7dmFyIGcsaD1sLm9yZGVyW2VdO2lmKGc9bC5sZWZ0TWF0Y2hbaF0uZXhlYyhhKSl7dmFyIGo9Z1sxXTtnLnNwbGljZSgxLDEpO2lmKGouc3Vic3RyKGoubGVuZ3RoLTEpIT09IlxcIil7Z1sxXT0oZ1sxXXx8IiIpLnJlcGxhY2UoaSwiIiksZD1sLmZpbmRbaF0oZyxiLGMpO2lmKGQhPW51bGwpe2E9YS5yZXBsYWNlKGwubWF0Y2hbaF0sIiIpO2JyZWFrfX19fWR8fChkPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIj9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik6W10pO3JldHVybntzZXQ6ZCxleHByOmF9fSxrLmZpbHRlcj1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZixnLGg9YSxpPVtdLGo9YyxtPWMmJmNbMF0mJmsuaXNYTUwoY1swXSk7d2hpbGUoYSYmYy5sZW5ndGgpe2Zvcih2YXIgbiBpbiBsLmZpbHRlcilpZigoZj1sLmxlZnRNYXRjaFtuXS5leGVjKGEpKSE9bnVsbCYmZlsyXSl7dmFyIG8scCxxPWwuZmlsdGVyW25dLHI9ZlsxXTtnPSExLGYuc3BsaWNlKDEsMSk7aWYoci5zdWJzdHIoci5sZW5ndGgtMSk9PT0iXFwiKWNvbnRpbnVlO2o9PT1pJiYoaT1bXSk7aWYobC5wcmVGaWx0ZXJbbl0pe2Y9bC5wcmVGaWx0ZXJbbl0oZixqLGQsaSxlLG0pO2lmKCFmKWc9bz0hMDtlbHNlIGlmKGY9PT0hMCljb250aW51ZX1pZihmKWZvcih2YXIgcz0wOyhwPWpbc10pIT1udWxsO3MrKylpZihwKXtvPXEocCxmLHMsaik7dmFyIHQ9ZV4hIW87ZCYmbyE9bnVsbD90P2c9ITA6altzXT0hMTp0JiYoaS5wdXNoKHApLGc9ITApfWlmKG8hPT1iKXtkfHwoaj1pKSxhPWEucmVwbGFjZShsLm1hdGNoW25dLCIiKTtpZighZylyZXR1cm5bXTticmVha319aWYoYT09PWgpaWYoZz09bnVsbClrLmVycm9yKGEpO2Vsc2UgYnJlYWs7aD1hfXJldHVybiBqfSxrLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYX07dmFyIGw9ay5zZWxlY3RvcnM9e29yZGVyOlsiSUQiLCJOQU1FIiwiVEFHIl0sbWF0Y2g6e0lEOi8jKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspLyxDTEFTUzovXC4oKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLE5BTUU6L1xbbmFtZT1bJyJdKigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKVsnIl0qXF0vLEFUVFI6L1xbXHMqKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspXHMqKD86KFxTPz0pXHMqKD86KFsnIl0pKC4qPylcM3woIz8oPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikqKXwpfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKlwtXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XChccyooZXZlbnxvZGR8KD86WytcLV0/XGQrfCg/OlsrXC1dP1xkKik/blxzKig/OlsrXC1dXHMqXGQrKT8pKVxzKlwpKT8vLFBPUzovOihudGh8ZXF8Z3R8bHR8Zmlyc3R8bGFzdHxldmVufG9kZCkoPzpcKChcZCopXCkpPyg/PVteXC1dfCQpLyxQU0VVRE86LzooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykoPzpcKChbJyJdPykoKD86XChbXlwpXStcKXxbXlwoXCldKikrKVwyXCkpPy99LGxlZnRNYXRjaDp7fSxhdHRyTWFwOnsiY2xhc3MiOiJjbGFzc05hbWUiLCJmb3IiOiJodG1sRm9yIn0sYXR0ckhhbmRsZTp7aHJlZjpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInR5cGUiKX19LHJlbGF0aXZlOnsiKyI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYj09InN0cmluZyIsZD1jJiYhai50ZXN0KGIpLGU9YyYmIWQ7ZCYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtmb3IodmFyIGY9MCxnPWEubGVuZ3RoLGg7ZjxnO2YrKylpZihoPWFbZl0pe3doaWxlKChoPWgucHJldmlvdXNTaWJsaW5nKSYmaC5ub2RlVHlwZSE9PTEpO2FbZl09ZXx8aCYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yj9ofHwhMTpoPT09Yn1lJiZrLmZpbHRlcihiLGEsITApfSwiPiI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXR5cGVvZiBiPT0ic3RyaW5nIixlPTAsZj1hLmxlbmd0aDtpZihkJiYhai50ZXN0KGIpKXtiPWIudG9Mb3dlckNhc2UoKTtmb3IoO2U8ZjtlKyspe2M9YVtlXTtpZihjKXt2YXIgZz1jLnBhcmVudE5vZGU7YVtlXT1nLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iP2c6ITF9fX1lbHNle2Zvcig7ZTxmO2UrKyljPWFbZV0sYyYmKGFbZV09ZD9jLnBhcmVudE5vZGU6Yy5wYXJlbnROb2RlPT09Yik7ZCYmay5maWx0ZXIoYixhLCEwKX19LCIiOmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmPWQrKyxnPXU7dHlwZW9mIGI9PSJzdHJpbmciJiYhai50ZXN0KGIpJiYoYj1iLnRvTG93ZXJDYXNlKCksZT1iLGc9dCksZygicGFyZW50Tm9kZSIsYixmLGEsZSxjKX0sIn4iOmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmPWQrKyxnPXU7dHlwZW9mIGI9PSJzdHJpbmciJiYhai50ZXN0KGIpJiYoYj1iLnRvTG93ZXJDYXNlKCksZT1iLGc9dCksZygicHJldmlvdXNTaWJsaW5nIixiLGYsYSxlLGMpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT0idW5kZWZpbmVkIiYmIWMpe3ZhciBkPWIuZ2V0RWxlbWVudEJ5SWQoYVsxXSk7cmV0dXJuIGQmJmQucGFyZW50Tm9kZT9bZF06W119fSxOQU1FOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGIuZ2V0RWxlbWVudHNCeU5hbWUhPSJ1bmRlZmluZWQiKXt2YXIgYz1bXSxkPWIuZ2V0RWxlbWVudHNCeU5hbWUoYVsxXSk7Zm9yKHZhciBlPTAsZj1kLmxlbmd0aDtlPGY7ZSsrKWRbZV0uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1hWzFdJiZjLnB1c2goZFtlXSk7cmV0dXJuIGMubGVuZ3RoPT09MD9udWxsOmN9fSxUQUc6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCIpcmV0dXJuIGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYVsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXthPSIgIithWzFdLnJlcGxhY2UoaSwiIikrIiAiO2lmKGYpcmV0dXJuIGE7Zm9yKHZhciBnPTAsaDsoaD1iW2ddKSE9bnVsbDtnKyspaCYmKGVeKGguY2xhc3NOYW1lJiYoIiAiK2guY2xhc3NOYW1lKyIgIikucmVwbGFjZSgvW1x0XG5ccl0vZywiICIpLmluZGV4T2YoYSk+PTApP2N8fGQucHVzaChoKTpjJiYoYltnXT0hMSkpO3JldHVybiExfSxJRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXS5yZXBsYWNlKGksIiIpfSxUQUc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYVsxXS5yZXBsYWNlKGksIiIpLnRvTG93ZXJDYXNlKCl9LENISUxEOmZ1bmN0aW9uKGEpe2lmKGFbMV09PT0ibnRoIil7YVsyXXx8ay5lcnJvcihhWzBdKSxhWzJdPWFbMl0ucmVwbGFjZSgvXlwrfFxzKi9nLCIiKTt2YXIgYj0vKC0/KShcZCopKD86bihbK1wtXT9cZCopKT8vLmV4ZWMoYVsyXT09PSJldmVuIiYmIjJuInx8YVsyXT09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3QoYVsyXSkmJiIwbisiK2FbMl18fGFbMl0pO2FbMl09YlsxXSsoYlsyXXx8MSktMCxhWzNdPWJbM10tMH1lbHNlIGFbMl0mJmsuZXJyb3IoYVswXSk7YVswXT1kKys7cmV0dXJuIGF9LEFUVFI6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWFbMV09YVsxXS5yZXBsYWNlKGksIiIpOyFmJiZsLmF0dHJNYXBbZ10mJihhWzFdPWwuYXR0ck1hcFtnXSksYVs0XT0oYVs0XXx8YVs1XXx8IiIpLnJlcGxhY2UoaSwiIiksYVsyXT09PSJ+PSImJihhWzRdPSIgIithWzRdKyIgIik7cmV0dXJuIGF9LFBTRVVETzpmdW5jdGlvbihiLGMsZCxlLGYpe2lmKGJbMV09PT0ibm90IilpZigoYS5leGVjKGJbM10pfHwiIikubGVuZ3RoPjF8fC9eXHcvLnRlc3QoYlszXSkpYlszXT1rKGJbM10sbnVsbCxudWxsLGMpO2Vsc2V7dmFyIGc9ay5maWx0ZXIoYlszXSxjLGQsITBeZik7ZHx8ZS5wdXNoLmFwcGx5KGUsZyk7cmV0dXJuITF9ZWxzZSBpZihsLm1hdGNoLlBPUy50ZXN0KGJbMF0pfHxsLm1hdGNoLkNISUxELnRlc3QoYlswXSkpcmV0dXJuITA7cmV0dXJuIGJ9LFBPUzpmdW5jdGlvbihhKXthLnVuc2hpZnQoITApO3JldHVybiBhfX0sZmlsdGVyczp7ZW5hYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSExJiZhLnR5cGUhPT0iaGlkZGVuIn0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5jaGVja2VkPT09ITB9LHNlbGVjdGVkOmZ1bmN0aW9uKGEpe2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7cmV0dXJuIGEuc2VsZWN0ZWQ9PT0hMH0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybiEhYS5maXJzdENoaWxkfSxlbXB0eTpmdW5jdGlvbihhKXtyZXR1cm4hYS5maXJzdENoaWxkfSxoYXM6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiEhayhjWzNdLGEpLmxlbmd0aH0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybi9oXGQvaS50ZXN0KGEubm9kZU5hbWUpfSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0QXR0cmlidXRlKCJ0eXBlIiksYz1hLnR5cGU7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJ0ZXh0Ij09PWMmJihiPT09Y3x8Yj09PW51bGwpfSxyYWRpbzpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInJhZGlvIj09PWEudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJjaGVja2JveCI9PT1hLnR5cGV9LGZpbGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJmaWxlIj09PWEudHlwZX0scGFzc3dvcmQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJwYXNzd29yZCI9PT1hLnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKGI9PT0iaW5wdXQifHxiPT09ImJ1dHRvbiIpJiYic3VibWl0Ij09PWEudHlwZX0saW1hZ2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJpbWFnZSI9PT1hLnR5cGV9LHJlc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYj09PSJpbnB1dCJ8fGI9PT0iYnV0dG9uIikmJiJyZXNldCI9PT1hLnR5cGV9LGJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGI9PT0iaW5wdXQiJiYiYnV0dG9uIj09PWEudHlwZXx8Yj09PSJidXR0b24ifSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4vaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbi9pLnRlc3QoYS5ub2RlTmFtZSl9LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09YS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnR9fSxzZXRGaWx0ZXJzOntmaXJzdDpmdW5jdGlvbihhLGIpe3JldHVybiBiPT09MH0sbGFzdDpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYj09PWQubGVuZ3RoLTF9LGV2ZW46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MH0sb2RkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIlMj09PTF9LGx0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYjxjWzNdLTB9LGd0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj5jWzNdLTB9LG50aDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGNbM10tMD09PWJ9LGVxOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn19LGZpbHRlcjp7UFNFVURPOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWJbMV0sZj1sLmZpbHRlcnNbZV07aWYoZilyZXR1cm4gZihhLGMsYixkKTtpZihlPT09ImNvbnRhaW5zIilyZXR1cm4oYS50ZXh0Q29udGVudHx8YS5pbm5lclRleHR8fGsuZ2V0VGV4dChbYV0pfHwiIikuaW5kZXhPZihiWzNdKT49MDtpZihlPT09Im5vdCIpe3ZhciBnPWJbM107Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKWlmKGdbaF09PT1hKXJldHVybiExO3JldHVybiEwfWsuZXJyb3IoZSl9LENISUxEOmZ1bmN0aW9uKGEsYil7dmFyIGM9YlsxXSxkPWE7c3dpdGNoKGMpe2Nhc2Uib25seSI6Y2FzZSJmaXJzdCI6d2hpbGUoZD1kLnByZXZpb3VzU2libGluZylpZihkLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtpZihjPT09ImZpcnN0IilyZXR1cm4hMDtkPWE7Y2FzZSJsYXN0Ijp3aGlsZShkPWQubmV4dFNpYmxpbmcpaWYoZC5ub2RlVHlwZT09PTEpcmV0dXJuITE7cmV0dXJuITA7Y2FzZSJudGgiOnZhciBlPWJbMl0sZj1iWzNdO2lmKGU9PT0xJiZmPT09MClyZXR1cm4hMDt2YXIgZz1iWzBdLGg9YS5wYXJlbnROb2RlO2lmKGgmJihoLnNpemNhY2hlIT09Z3x8IWEubm9kZUluZGV4KSl7dmFyIGk9MDtmb3IoZD1oLmZpcnN0Q2hpbGQ7ZDtkPWQubmV4dFNpYmxpbmcpZC5ub2RlVHlwZT09PTEmJihkLm5vZGVJbmRleD0rK2kpO2guc2l6Y2FjaGU9Z312YXIgaj1hLm5vZGVJbmRleC1mO3JldHVybiBlPT09MD9qPT09MDpqJWU9PT0wJiZqL2U+PTB9fSxJRDpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVUeXBlPT09MSYmYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifSxUQUc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PSIqIiYmYS5ub2RlVHlwZT09PTF8fGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9LENMQVNTOmZ1bmN0aW9uKGEsYil7cmV0dXJuKCIgIisoYS5jbGFzc05hbWV8fGEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSsiICIpLmluZGV4T2YoYik+LTF9LEFUVFI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9bC5hdHRySGFuZGxlW2NdP2wuYXR0ckhhbmRsZVtjXShhKTphW2NdIT1udWxsP2FbY106YS5nZXRBdHRyaWJ1dGUoYyksZT1kKyIiLGY9YlsyXSxnPWJbNF07cmV0dXJuIGQ9PW51bGw/Zj09PSIhPSI6Zj09PSI9Ij9lPT09ZzpmPT09Iio9Ij9lLmluZGV4T2YoZyk+PTA6Zj09PSJ+PSI/KCIgIitlKyIgIikuaW5kZXhPZihnKT49MDpnP2Y9PT0iIT0iP2UhPT1nOmY9PT0iXj0iP2UuaW5kZXhPZihnKT09PTA6Zj09PSIkPSI/ZS5zdWJzdHIoZS5sZW5ndGgtZy5sZW5ndGgpPT09ZzpmPT09Inw9Ij9lPT09Z3x8ZS5zdWJzdHIoMCxnLmxlbmd0aCsxKT09PWcrIi0iOiExOmUmJmQhPT0hMX0sUE9TOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWJbMl0sZj1sLnNldEZpbHRlcnNbZV07aWYoZilyZXR1cm4gZihhLGMsYixkKX19fSxtPWwubWF0Y2guUE9TLG49ZnVuY3Rpb24oYSxiKXtyZXR1cm4iXFwiKyhiLTArMSl9O2Zvcih2YXIgbyBpbiBsLm1hdGNoKWwubWF0Y2hbb109bmV3IFJlZ0V4cChsLm1hdGNoW29dLnNvdXJjZSsvKD8hW15cW10qXF0pKD8hW15cKF0qXCkpLy5zb3VyY2UpLGwubGVmdE1hdGNoW29dPW5ldyBSZWdFeHAoLyheKD86LnxccnxcbikqPykvLnNvdXJjZStsLm1hdGNoW29dLnNvdXJjZS5yZXBsYWNlKC9cXChcZCspL2csbikpO3ZhciBwPWZ1bmN0aW9uKGEsYil7YT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLDApO2lmKGIpe2IucHVzaC5hcHBseShiLGEpO3JldHVybiBifXJldHVybiBhfTt0cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYy5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2RlcywwKVswXS5ub2RlVHlwZX1jYXRjaChxKXtwPWZ1bmN0aW9uKGEsYil7dmFyIGM9MCxkPWJ8fFtdO2lmKGUuY2FsbChhKT09PSJbb2JqZWN0IEFycmF5XSIpQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZCxhKTtlbHNlIGlmKHR5cGVvZiBhLmxlbmd0aD09Im51bWJlciIpZm9yKHZhciBmPWEubGVuZ3RoO2M8ZjtjKyspZC5wdXNoKGFbY10pO2Vsc2UgZm9yKDthW2NdO2MrKylkLnB1c2goYVtjXSk7cmV0dXJuIGR9fXZhciByLHM7Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/cj1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtnPSEwO3JldHVybiAwfWlmKCFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9ufHwhYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbilyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8tMToxO3JldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjQ/LTE6MX06KHI9ZnVuY3Rpb24oYSxiKXtpZihhPT09Yil7Zz0hMDtyZXR1cm4gMH1pZihhLnNvdXJjZUluZGV4JiZiLnNvdXJjZUluZGV4KXJldHVybiBhLnNvdXJjZUluZGV4LWIuc291cmNlSW5kZXg7dmFyIGMsZCxlPVtdLGY9W10saD1hLnBhcmVudE5vZGUsaT1iLnBhcmVudE5vZGUsaj1oO2lmKGg9PT1pKXJldHVybiBzKGEsYik7aWYoIWgpcmV0dXJuLTE7aWYoIWkpcmV0dXJuIDE7d2hpbGUoaillLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7aj1pO3doaWxlKGopZi51bnNoaWZ0KGopLGo9ai5wYXJlbnROb2RlO2M9ZS5sZW5ndGgsZD1mLmxlbmd0aDtmb3IodmFyIGs9MDtrPGMmJms8ZDtrKyspaWYoZVtrXSE9PWZba10pcmV0dXJuIHMoZVtrXSxmW2tdKTtyZXR1cm4gaz09PWM/cyhhLGZba10sLTEpOnMoZVtrXSxiLDEpfSxzPWZ1bmN0aW9uKGEsYixjKXtpZihhPT09YilyZXR1cm4gYzt2YXIgZD1hLm5leHRTaWJsaW5nO3doaWxlKGQpe2lmKGQ9PT1iKXJldHVybi0xO2Q9ZC5uZXh0U2libGluZ31yZXR1cm4gMX0pLGsuZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYj0iIixjO2Zvcih2YXIgZD0wO2FbZF07ZCsrKWM9YVtkXSxjLm5vZGVUeXBlPT09M3x8Yy5ub2RlVHlwZT09PTQ/Yis9Yy5ub2RlVmFsdWU6Yy5ub2RlVHlwZSE9PTgmJihiKz1rLmdldFRleHQoYy5jaGlsZE5vZGVzKSk7cmV0dXJuIGJ9LGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpLGU9Yy5kb2N1bWVudEVsZW1lbnQ7YS5pbm5lckhUTUw9IjxhIG5hbWU9JyIrZCsiJy8+IixlLmluc2VydEJlZm9yZShhLGUuZmlyc3RDaGlsZCksYy5nZXRFbGVtZW50QnlJZChkKSYmKGwuZmluZC5JRD1mdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGMuZ2V0RWxlbWVudEJ5SWQhPSJ1bmRlZmluZWQiJiYhZCl7dmFyIGU9Yy5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZT9lLmlkPT09YVsxXXx8dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSE9InVuZGVmaW5lZCImJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS5ub2RlVmFsdWU9PT1hWzFdP1tlXTpiOltdfX0sbC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmYS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBhLm5vZGVUeXBlPT09MSYmYyYmYy5ub2RlVmFsdWU9PT1ifSksZS5yZW1vdmVDaGlsZChhKSxlPWE9bnVsbH0oKSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5hcHBlbmRDaGlsZChjLmNyZWF0ZUNvbW1lbnQoIiIpKSxhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoPjAmJihsLmZpbmQuVEFHPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhWzFdKTtpZihhWzFdPT09IioiKXt2YXIgZD1bXTtmb3IodmFyIGU9MDtjW2VdO2UrKyljW2VdLm5vZGVUeXBlPT09MSYmZC5wdXNoKGNbZV0pO2M9ZH1yZXR1cm4gY30pLGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IixhLmZpcnN0Q2hpbGQmJnR5cGVvZiBhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlIT0idW5kZWZpbmVkIiYmYS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpIT09IiMiJiYobC5hdHRySGFuZGxlLmhyZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJocmVmIiwyKX0pLGE9bnVsbH0oKSxjLnF1ZXJ5U2VsZWN0b3JBbGwmJmZ1bmN0aW9uKCl7dmFyIGE9ayxiPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksZD0iX19zaXp6bGVfXyI7Yi5pbm5lckhUTUw9IjxwIGNsYXNzPSdURVNUJz48L3A+IjtpZighYi5xdWVyeVNlbGVjdG9yQWxsfHxiLnF1ZXJ5U2VsZWN0b3JBbGwoIi5URVNUIikubGVuZ3RoIT09MCl7az1mdW5jdGlvbihiLGUsZixnKXtlPWV8fGM7aWYoIWcmJiFrLmlzWE1MKGUpKXt2YXIgaD0vXihcdyskKXxeXC4oW1x3XC1dKyQpfF4jKFtcd1wtXSskKS8uZXhlYyhiKTtpZihoJiYoZS5ub2RlVHlwZT09PTF8fGUubm9kZVR5cGU9PT05KSl7aWYoaFsxXSlyZXR1cm4gcChlLmdldEVsZW1lbnRzQnlUYWdOYW1lKGIpLGYpO2lmKGhbMl0mJmwuZmluZC5DTEFTUyYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBwKGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShoWzJdKSxmKX1pZihlLm5vZGVUeXBlPT09OSl7aWYoYj09PSJib2R5IiYmZS5ib2R5KXJldHVybiBwKFtlLmJvZHldLGYpO2lmKGgmJmhbM10pe3ZhciBpPWUuZ2V0RWxlbWVudEJ5SWQoaFszXSk7aWYoIWl8fCFpLnBhcmVudE5vZGUpcmV0dXJuIHAoW10sZik7aWYoaS5pZD09PWhbM10pcmV0dXJuIHAoW2ldLGYpfXRyeXtyZXR1cm4gcChlLnF1ZXJ5U2VsZWN0b3JBbGwoYiksZil9Y2F0Y2goail7fX1lbHNlIGlmKGUubm9kZVR5cGU9PT0xJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT0ib2JqZWN0Iil7dmFyIG09ZSxuPWUuZ2V0QXR0cmlidXRlKCJpZCIpLG89bnx8ZCxxPWUucGFyZW50Tm9kZSxyPS9eXHMqWyt+XS8udGVzdChiKTtuP289by5yZXBsYWNlKC8nL2csIlxcJCYiKTplLnNldEF0dHJpYnV0ZSgiaWQiLG8pLHImJnEmJihlPWUucGFyZW50Tm9kZSk7dHJ5e2lmKCFyfHxxKXJldHVybiBwKGUucXVlcnlTZWxlY3RvckFsbCgiW2lkPSciK28rIiddICIrYiksZil9Y2F0Y2gocyl7fWZpbmFsbHl7bnx8bS5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gYShiLGUsZixnKX07Zm9yKHZhciBlIGluIGEpa1tlXT1hW2VdO2I9bnVsbH19KCksZnVuY3Rpb24oKXt2YXIgYT1jLmRvY3VtZW50RWxlbWVudCxiPWEubWF0Y2hlc1NlbGVjdG9yfHxhLm1vek1hdGNoZXNTZWxlY3Rvcnx8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3I7aWYoYil7dmFyIGQ9IWIuY2FsbChjLmNyZWF0ZUVsZW1lbnQoImRpdiIpLCJkaXYiKSxlPSExO3RyeXtiLmNhbGwoYy5kb2N1bWVudEVsZW1lbnQsIlt0ZXN0IT0nJ106c2l6emxlIil9Y2F0Y2goZil7ZT0hMH1rLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGMpe2M9Yy5yZXBsYWNlKC9cPVxzKihbXiciXF1dKilccypcXS9nLCI9JyQxJ10iKTtpZighay5pc1hNTChhKSl0cnl7aWYoZXx8IWwubWF0Y2guUFNFVURPLnRlc3QoYykmJiEvIT0vLnRlc3QoYykpe3ZhciBmPWIuY2FsbChhLGMpO2lmKGZ8fCFkfHxhLmRvY3VtZW50JiZhLmRvY3VtZW50Lm5vZGVUeXBlIT09MTEpcmV0dXJuIGZ9fWNhdGNoKGcpe31yZXR1cm4gayhjLG51bGwsbnVsbCxbYV0pLmxlbmd0aD4wfX19KCksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSd0ZXN0IGUnPjwvZGl2PjxkaXYgY2xhc3M9J3Rlc3QnPjwvZGl2PiI7aWYoISFhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aCE9PTApe2EubGFzdENoaWxkLmNsYXNzTmFtZT0iZSI7aWYoYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoPT09MSlyZXR1cm47bC5vcmRlci5zcGxpY2UoMSwwLCJDTEFTUyIpLGwuZmluZC5DTEFTUz1mdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9InVuZGVmaW5lZCImJiFjKXJldHVybiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYVsxXSl9LGE9bnVsbH19KCksYy5kb2N1bWVudEVsZW1lbnQuY29udGFpbnM/ay5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiBhIT09YiYmKGEuY29udGFpbnM/YS5jb250YWlucyhiKTohMCl9OmMuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2suY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2KX06ay5jb250YWlucz1mdW5jdGlvbigpe3JldHVybiExfSxrLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPShhP2Eub3duZXJEb2N1bWVudHx8YTowKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGI/Yi5ub2RlTmFtZSE9PSJIVE1MIjohMX07dmFyIHY9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9IiIsZj1iLm5vZGVUeXBlP1tiXTpiO3doaWxlKGM9bC5tYXRjaC5QU0VVRE8uZXhlYyhhKSllKz1jWzBdLGE9YS5yZXBsYWNlKGwubWF0Y2guUFNFVURPLCIiKTthPWwucmVsYXRpdmVbYV0/YSsiKiI6YTtmb3IodmFyIGc9MCxoPWYubGVuZ3RoO2c8aDtnKyspayhhLGZbZ10sZCk7cmV0dXJuIGsuZmlsdGVyKGUsZCl9O2YuZmluZD1rLGYuZXhwcj1rLnNlbGVjdG9ycyxmLmV4cHJbIjoiXT1mLmV4cHIuZmlsdGVycyxmLnVuaXF1ZT1rLnVuaXF1ZVNvcnQsZi50ZXh0PWsuZ2V0VGV4dCxmLmlzWE1MRG9jPWsuaXNYTUwsZi5jb250YWlucz1rLmNvbnRhaW5zfSgpO3ZhciBQPS9VbnRpbCQvLFE9L14oPzpwYXJlbnRzfHByZXZVbnRpbHxwcmV2QWxsKS8sUj0vLC8sUz0vXi5bXjojXFtcLixdKiQvLFQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLFU9Zi5leHByLm1hdGNoLlBPUyxWPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2YuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYyxkO2lmKHR5cGVvZiBhIT0ic3RyaW5nIilyZXR1cm4gZihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrKylpZihmLmNvbnRhaW5zKGJbY10sdGhpcykpcmV0dXJuITB9KTt2YXIgZT10aGlzLnB1c2hTdGFjaygiIiwiZmluZCIsYSksZyxoLGk7Zm9yKGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspe2c9ZS5sZW5ndGgsZi5maW5kKGEsdGhpc1tjXSxlKTtpZihjPjApZm9yKGg9ZztoPGUubGVuZ3RoO2grKylmb3IoaT0wO2k8ZztpKyspaWYoZVtpXT09PWVbaF0pe2Uuc3BsaWNlKGgtLSwxKTticmVha319cmV0dXJuIGV9LGhhczpmdW5jdGlvbihhKXt2YXIgYj1mKGEpO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgYT0wLGM9Yi5sZW5ndGg7YTxjO2ErKylpZihmLmNvbnRhaW5zKHRoaXMsYlthXSkpcmV0dXJuITB9KX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhYKHRoaXMsYSwhMSksIm5vdCIsYSl9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soWCh0aGlzLGEsITApLCJmaWx0ZXIiLGEpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIWEmJih0eXBlb2YgYT09InN0cmluZyI/Zi5maWx0ZXIoYSx0aGlzKS5sZW5ndGg+MDp0aGlzLmZpbHRlcihhKS5sZW5ndGg+MCl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkLGUsZz10aGlzWzBdO2lmKGYuaXNBcnJheShhKSl7dmFyIGgsaSxqPXt9LGs9MTtpZihnJiZhLmxlbmd0aCl7Zm9yKGQ9MCxlPWEubGVuZ3RoO2Q8ZTtkKyspaT1hW2RdLGpbaV18fChqW2ldPVUudGVzdChpKT9mKGksYnx8dGhpcy5jb250ZXh0KTppKTt3aGlsZShnJiZnLm93bmVyRG9jdW1lbnQmJmchPT1iKXtmb3IoaSBpbiBqKWg9altpXSwoaC5qcXVlcnk/aC5pbmRleChnKT4tMTpmKGcpLmlzKGgpKSYmYy5wdXNoKHtzZWxlY3RvcjppLGVsZW06ZyxsZXZlbDprfSk7Zz1nLnBhcmVudE5vZGUsaysrfX1yZXR1cm4gY312YXIgbD1VLnRlc3QoYSl8fHR5cGVvZiBhIT0ic3RyaW5nIj9mKGEsYnx8dGhpcy5jb250ZXh0KTowO2ZvcihkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKXtnPXRoaXNbZF07d2hpbGUoZyl7aWYobD9sLmluZGV4KGcpPi0xOmYuZmluZC5tYXRjaGVzU2VsZWN0b3IoZyxhKSl7Yy5wdXNoKGcpO2JyZWFrfWc9Zy5wYXJlbnROb2RlO2lmKCFnfHwhZy5vd25lckRvY3VtZW50fHxnPT09Ynx8Zy5ub2RlVHlwZT09PTExKWJyZWFrfX1jPWMubGVuZ3RoPjE/Zi51bmlxdWUoYyk6YztyZXR1cm4gdGhpcy5wdXNoU3RhY2soYywiY2xvc2VzdCIsYSl9LGluZGV4OmZ1bmN0aW9uKGEpe2lmKCFhfHx0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGYuaW5BcnJheSh0aGlzWzBdLGE/ZihhKTp0aGlzLnBhcmVudCgpLmNoaWxkcmVuKCkpO3JldHVybiBmLmluQXJyYXkoYS5qcXVlcnk/YVswXTphLHRoaXMpfSxhZGQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYT09InN0cmluZyI/ZihhLGIpOmYubWFrZUFycmF5KGEmJmEubm9kZVR5cGU/W2FdOmEpLGQ9Zi5tZXJnZSh0aGlzLmdldCgpLGMpO3JldHVybiB0aGlzLnB1c2hTdGFjayhXKGNbMF0pfHxXKGRbMF0pP2Q6Zi51bmlxdWUoZCkpfSxhbmRTZWxmOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRkKHRoaXMucHJldk9iamVjdCl9fSksZi5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiZiLm5vZGVUeXBlIT09MTE/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBmLm50aChhLDIsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIGYubnRoKGEsMiwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBmLnNpYmxpbmcoYS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBmLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGYubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDpmLm1ha2VBcnJheShhLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGMsZCl7dmFyIGU9Zi5tYXAodGhpcyxiLGMpLGc9VC5jYWxsKGFyZ3VtZW50cyk7UC50ZXN0KGEpfHwoZD1jKSxkJiZ0eXBlb2YgZD09InN0cmluZyImJihlPWYuZmlsdGVyKGQsZSkpLGU9dGhpcy5sZW5ndGg+MSYmIVZbYV0/Zi51bmlxdWUoZSk6ZSwodGhpcy5sZW5ndGg+MXx8Ui50ZXN0KGQpKSYmUS50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUsYSxnLmpvaW4oIiwiKSl9fSksZi5leHRlbmQoe2ZpbHRlcjpmdW5jdGlvbihhLGIsYyl7YyYmKGE9Ijpub3QoIithKyIpIik7cmV0dXJuIGIubGVuZ3RoPT09MT9mLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGJbMF0sYSk/W2JbMF1dOltdOmYuZmluZC5tYXRjaGVzKGEsYil9LGRpcjpmdW5jdGlvbihhLGMsZCl7dmFyIGU9W10sZz1hW2NdO3doaWxlKGcmJmcubm9kZVR5cGUhPT05JiYoZD09PWJ8fGcubm9kZVR5cGUhPT0xfHwhZihnKS5pcyhkKSkpZy5ub2RlVHlwZT09PTEmJmUucHVzaChnKSxnPWdbY107cmV0dXJuIGV9LG50aDpmdW5jdGlvbihhLGIsYyxkKXtiPWJ8fDE7dmFyIGU9MDtmb3IoO2E7YT1hW2NdKWlmKGEubm9kZVR5cGU9PT0xJiYrK2U9PT1iKWJyZWFrO3JldHVybiBhfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7dmFyIGM9W107Zm9yKDthO2E9YS5uZXh0U2libGluZylhLm5vZGVUeXBlPT09MSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY319KTt2YXIgWT0vIGpRdWVyeVxkKz0iKD86XGQrfG51bGwpIi9nLFo9L15ccysvLCQ9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9pZyxfPS88KFtcdzpdKykvLGJhPS88dGJvZHkvaSxiYj0vPHwmIz9cdys7LyxiYz0vPCg/OnNjcmlwdHxvYmplY3R8ZW1iZWR8b3B0aW9ufHN0eWxlKS9pLGJkPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLGJlPS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksYmY9L15ccyo8ISg/OlxbQ0RBVEFcW3xcLVwtKS8sYmc9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07Ymcub3B0Z3JvdXA9Ymcub3B0aW9uLGJnLnRib2R5PWJnLnRmb290PWJnLmNvbGdyb3VwPWJnLmNhcHRpb249YmcudGhlYWQsYmcudGg9YmcudGQsZi5zdXBwb3J0Lmh0bWxTZXJpYWxpemV8fChiZy5fZGVmYXVsdD1bMSwiZGl2PGRpdj4iLCI8L2Rpdj4iXSksZi5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLnRleHQoYS5jYWxsKHRoaXMsYixjLnRleHQoKSkpfSk7aWYodHlwZW9mIGEhPSJvYmplY3QiJiZhIT09YilyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxjKS5jcmVhdGVUZXh0Tm9kZShhKSk7cmV0dXJuIGYudGV4dCh0aGlzKX0sd3JhcEFsbDpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk7aWYodGhpc1swXSl7dmFyIGI9ZihhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmYS5maXJzdENoaWxkLm5vZGVUeXBlPT09MSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMpLGM9Yi5jb250ZW50cygpO2MubGVuZ3RoP2Mud3JhcEFsbChhKTpiLmFwcGVuZChhKX0pfSx3cmFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmKHRoaXMpLndyYXBBbGwoYSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2Yubm9kZU5hbWUodGhpcywiYm9keSIpfHxmKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLmFwcGVuZENoaWxkKGEpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuaW5zZXJ0QmVmb3JlKGEsdGhpcy5maXJzdENoaWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPWYoYXJndW1lbnRzWzBdKTthLnB1c2guYXBwbHkoYSx0aGlzLnRvQXJyYXkoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGEsImJlZm9yZSIsYXJndW1lbnRzKX19LGFmdGVyOmZ1bmN0aW9uKCl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KTtpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgYT10aGlzLnB1c2hTdGFjayh0aGlzLCJhZnRlciIsYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSxmKGFyZ3VtZW50c1swXSkudG9BcnJheSgpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ7KGQ9dGhpc1tjXSkhPW51bGw7YysrKWlmKCFhfHxmLmZpbHRlcihhLFtkXSkubGVuZ3RoKSFiJiZkLm5vZGVUeXBlPT09MSYmKGYuY2xlYW5EYXRhKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksZi5jbGVhbkRhdGEoW2RdKSksZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYjsoYj10aGlzW2FdKSE9bnVsbDthKyspe2Iubm9kZVR5cGU9PT0xJiZmLmNsZWFuRGF0YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGIuZmlyc3RDaGlsZCliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7YT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6YjtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtpZihhPT09YilyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5ub2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShZLCIiKTpudWxsO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmIWJjLnRlc3QoYSkmJihmLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2V8fCFaLnRlc3QoYSkpJiYhYmdbKF8uZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKCQsIjwkMT48LyQyPiIpO3RyeXtmb3IodmFyIGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspdGhpc1tjXS5ub2RlVHlwZT09PTEmJihmLmNsZWFuRGF0YSh0aGlzW2NdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLHRoaXNbY10uaW5uZXJIVE1MPWEpfWNhdGNoKGUpe3RoaXMuZW1wdHkoKS5hcHBlbmQoYSl9fWVsc2UgZi5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpO2MuaHRtbChhLmNhbGwodGhpcyxiLGMuaHRtbCgpKSl9KTp0aGlzLmVtcHR5KCkuYXBwZW5kKGEpO3JldHVybiB0aGlzfSxyZXBsYWNlV2l0aDpmdW5jdGlvbihhKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyksZD1jLmh0bWwoKTtjLnJlcGxhY2VXaXRoKGEuY2FsbCh0aGlzLGIsZCkpfSk7dHlwZW9mIGEhPSJzdHJpbmciJiYoYT1mKGEpLmRldGFjaCgpKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5uZXh0U2libGluZyxjPXRoaXMucGFyZW50Tm9kZTtmKHRoaXMpLnJlbW92ZSgpLGI/ZihiKS5iZWZvcmUoYSk6ZihjKS5hcHBlbmQoYSl9KX1yZXR1cm4gdGhpcy5sZW5ndGg/dGhpcy5wdXNoU3RhY2soZihmLmlzRnVuY3Rpb24oYSk/YSgpOmEpLCJyZXBsYWNlV2l0aCIsYSk6dGhpc30sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGcsaCxpLGo9YVswXSxrPVtdO2lmKCFmLnN1cHBvcnQuY2hlY2tDbG9uZSYmYXJndW1lbnRzLmxlbmd0aD09PTMmJnR5cGVvZiBqPT0ic3RyaW5nIiYmYmQudGVzdChqKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zih0aGlzKS5kb21NYW5pcChhLGMsZCwhMCl9KTtpZihmLmlzRnVuY3Rpb24oaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgZz1mKHRoaXMpO2FbMF09ai5jYWxsKHRoaXMsZSxjP2cuaHRtbCgpOmIpLGcuZG9tTWFuaXAoYSxjLGQpfSk7aWYodGhpc1swXSl7aT1qJiZqLnBhcmVudE5vZGUsZi5zdXBwb3J0LnBhcmVudE5vZGUmJmkmJmkubm9kZVR5cGU9PT0xMSYmaS5jaGlsZE5vZGVzLmxlbmd0aD09PXRoaXMubGVuZ3RoP2U9e2ZyYWdtZW50Oml9OmU9Zi5idWlsZEZyYWdtZW50KGEsdGhpcyxrKSxoPWUuZnJhZ21lbnQsaC5jaGlsZE5vZGVzLmxlbmd0aD09PTE/Zz1oPWguZmlyc3RDaGlsZDpnPWguZmlyc3RDaGlsZDtpZihnKXtjPWMmJmYubm9kZU5hbWUoZywidHIiKTtmb3IodmFyIGw9MCxtPXRoaXMubGVuZ3RoLG49bS0xO2w8bTtsKyspZC5jYWxsKGM/YmgodGhpc1tsXSxnKTp0aGlzW2xdLGUuY2FjaGVhYmxlfHxtPjEmJmw8bj9mLmNsb25lKGgsITAsITApOmgpfWsubGVuZ3RoJiZmLmVhY2goayxibil9cmV0dXJuIHRoaXN9fSksZi5idWlsZEZyYWdtZW50PWZ1bmN0aW9uKGEsYixkKXt2YXIgZSxnLGgsaT1iJiZiWzBdP2JbMF0ub3duZXJEb2N1bWVudHx8YlswXTpjO2EubGVuZ3RoPT09MSYmdHlwZW9mIGFbMF09PSJzdHJpbmciJiZhWzBdLmxlbmd0aDw1MTImJmk9PT1jJiZhWzBdLmNoYXJBdCgwKT09PSI8IiYmIWJjLnRlc3QoYVswXSkmJihmLnN1cHBvcnQuY2hlY2tDbG9uZXx8IWJkLnRlc3QoYVswXSkpJiYoZz0hMCxoPWYuZnJhZ21lbnRzW2FbMF1dLGgmJmghPT0xJiYoZT1oKSksZXx8KGU9aS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZi5jbGVhbihhLGksZSxkKSksZyYmKGYuZnJhZ21lbnRzW2FbMF1dPWg/ZToxKTtyZXR1cm57ZnJhZ21lbnQ6ZSxjYWNoZWFibGU6Z319LGYuZnJhZ21lbnRzPXt9LGYuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5jdGlvbihjKXt2YXIgZD1bXSxlPWYoYyksZz10aGlzLmxlbmd0aD09PTEmJnRoaXNbMF0ucGFyZW50Tm9kZTtpZihnJiZnLm5vZGVUeXBlPT09MTEmJmcuY2hpbGROb2Rlcy5sZW5ndGg9PT0xJiZlLmxlbmd0aD09PTEpe2VbYl0odGhpc1swXSk7cmV0dXJuIHRoaXN9Zm9yKHZhciBoPTAsaT1lLmxlbmd0aDtoPGk7aCsrKXt2YXIgaj0oaD4wP3RoaXMuY2xvbmUoITApOnRoaXMpLmdldCgpO2YoZVtoXSlbYl0oaiksZD1kLmNvbmNhdChqKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soZCxhLGUuc2VsZWN0b3IpfX0pLGYuZXh0ZW5kKHtjbG9uZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5jbG9uZU5vZGUoITApLGUsZyxoO2lmKCghZi5zdXBwb3J0Lm5vQ2xvbmVFdmVudHx8IWYuc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCkmJihhLm5vZGVUeXBlPT09MXx8YS5ub2RlVHlwZT09PTExKSYmIWYuaXNYTUxEb2MoYSkpe2JqKGEsZCksZT1iayhhKSxnPWJrKGQpO2ZvcihoPTA7ZVtoXTsrK2gpYmooZVtoXSxnW2hdKX1pZihiKXtiaShhLGQpO2lmKGMpe2U9YmsoYSksZz1iayhkKTtmb3IoaD0wO2VbaF07KytoKWJpKGVbaF0sZ1toXSl9fXJldHVybiBkfSxjbGVhbjpmdW5jdGlvbihhLGIsZCxlKXt2YXIgZztiPWJ8fGMsdHlwZW9mIGIuY3JlYXRlRWxlbWVudD09InVuZGVmaW5lZCImJihiPWIub3duZXJEb2N1bWVudHx8CmJbMF0mJmJbMF0ub3duZXJEb2N1bWVudHx8Yyk7dmFyIGg9W10saTtmb3IodmFyIGo9MCxrOyhrPWFbal0pIT1udWxsO2orKyl7dHlwZW9mIGs9PSJudW1iZXIiJiYoays9IiIpO2lmKCFrKWNvbnRpbnVlO2lmKHR5cGVvZiBrPT0ic3RyaW5nIilpZighYmIudGVzdChrKSlrPWIuY3JlYXRlVGV4dE5vZGUoayk7ZWxzZXtrPWsucmVwbGFjZSgkLCI8JDE+PC8kMj4iKTt2YXIgbD0oXy5leGVjKGspfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLG09YmdbbF18fGJnLl9kZWZhdWx0LG49bVswXSxvPWIuY3JlYXRlRWxlbWVudCgiZGl2Iik7by5pbm5lckhUTUw9bVsxXStrK21bMl07d2hpbGUobi0tKW89by5sYXN0Q2hpbGQ7aWYoIWYuc3VwcG9ydC50Ym9keSl7dmFyIHA9YmEudGVzdChrKSxxPWw9PT0idGFibGUiJiYhcD9vLmZpcnN0Q2hpbGQmJm8uZmlyc3RDaGlsZC5jaGlsZE5vZGVzOm1bMV09PT0iPHRhYmxlPiImJiFwP28uY2hpbGROb2RlczpbXTtmb3IoaT1xLmxlbmd0aC0xO2k+PTA7LS1pKWYubm9kZU5hbWUocVtpXSwidGJvZHkiKSYmIXFbaV0uY2hpbGROb2Rlcy5sZW5ndGgmJnFbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChxW2ldKX0hZi5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlJiZaLnRlc3QoaykmJm8uaW5zZXJ0QmVmb3JlKGIuY3JlYXRlVGV4dE5vZGUoWi5leGVjKGspWzBdKSxvLmZpcnN0Q2hpbGQpLGs9by5jaGlsZE5vZGVzfXZhciByO2lmKCFmLnN1cHBvcnQuYXBwZW5kQ2hlY2tlZClpZihrWzBdJiZ0eXBlb2YgKHI9ay5sZW5ndGgpPT0ibnVtYmVyIilmb3IoaT0wO2k8cjtpKyspYm0oa1tpXSk7ZWxzZSBibShrKTtrLm5vZGVUeXBlP2gucHVzaChrKTpoPWYubWVyZ2UoaCxrKX1pZihkKXtnPWZ1bmN0aW9uKGEpe3JldHVybiFhLnR5cGV8fGJlLnRlc3QoYS50eXBlKX07Zm9yKGo9MDtoW2pdO2orKylpZihlJiZmLm5vZGVOYW1lKGhbal0sInNjcmlwdCIpJiYoIWhbal0udHlwZXx8aFtqXS50eXBlLnRvTG93ZXJDYXNlKCk9PT0idGV4dC9qYXZhc2NyaXB0IikpZS5wdXNoKGhbal0ucGFyZW50Tm9kZT9oW2pdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaFtqXSk6aFtqXSk7ZWxzZXtpZihoW2pdLm5vZGVUeXBlPT09MSl7dmFyIHM9Zi5ncmVwKGhbal0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLGcpO2guc3BsaWNlLmFwcGx5KGgsW2orMSwwXS5jb25jYXQocykpfWQuYXBwZW5kQ2hpbGQoaFtqXSl9fXJldHVybiBofSxjbGVhbkRhdGE6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPWYuY2FjaGUsZT1mLmV4cGFuZG8sZz1mLmV2ZW50LnNwZWNpYWwsaD1mLnN1cHBvcnQuZGVsZXRlRXhwYW5kbztmb3IodmFyIGk9MCxqOyhqPWFbaV0pIT1udWxsO2krKyl7aWYoai5ub2RlTmFtZSYmZi5ub0RhdGFbai5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSljb250aW51ZTtjPWpbZi5leHBhbmRvXTtpZihjKXtiPWRbY10mJmRbY11bZV07aWYoYiYmYi5ldmVudHMpe2Zvcih2YXIgayBpbiBiLmV2ZW50cylnW2tdP2YuZXZlbnQucmVtb3ZlKGosayk6Zi5yZW1vdmVFdmVudChqLGssYi5oYW5kbGUpO2IuaGFuZGxlJiYoYi5oYW5kbGUuZWxlbT1udWxsKX1oP2RlbGV0ZSBqW2YuZXhwYW5kb106ai5yZW1vdmVBdHRyaWJ1dGUmJmoucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyksZGVsZXRlIGRbY119fX19KTt2YXIgYm89L2FscGhhXChbXildKlwpL2ksYnA9L29wYWNpdHk9KFteKV0qKS8sYnE9Ly0oW2Etel0pL2lnLGJyPS8oW0EtWl18Xm1zKS9nLGJzPS9eLT9cZCsoPzpweCk/JC9pLGJ0PS9eLT9cZC8sYnU9L15bK1wtXT0vLGJ2PS9bXitcLVwuXGRlXSsvZyxidz17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sYng9WyJMZWZ0IiwiUmlnaHQiXSxieT1bIlRvcCIsIkJvdHRvbSJdLGJ6LGJBLGJCLGJDPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX07Zi5mbi5jc3M9ZnVuY3Rpb24oYSxjKXtpZihhcmd1bWVudHMubGVuZ3RoPT09MiYmYz09PWIpcmV0dXJuIHRoaXM7cmV0dXJuIGYuYWNjZXNzKHRoaXMsYSxjLCEwLGZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZCE9PWI/Zi5zdHlsZShhLGMsZCk6Zi5jc3MoYSxjKX0pfSxmLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPWJ6KGEsIm9wYWNpdHkiLCJvcGFjaXR5Iik7cmV0dXJuIGM9PT0iIj8iMSI6Y31yZXR1cm4gYS5zdHlsZS5vcGFjaXR5fX19LGNzc051bWJlcjp7ekluZGV4OiEwLGZvbnRXZWlnaHQ6ITAsb3BhY2l0eTohMCx6b29tOiEwLGxpbmVIZWlnaHQ6ITAsd2lkb3dzOiEwLG9ycGhhbnM6ITB9LGNzc1Byb3BzOnsiZmxvYXQiOmYuc3VwcG9ydC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoISFhJiZhLm5vZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgmJiEhYS5zdHlsZSl7dmFyIGcsaCxpPWYuY2FtZWxDYXNlKGMpLGo9YS5zdHlsZSxrPWYuY3NzSG9va3NbaV07Yz1mLmNzc1Byb3BzW2ldfHxpO2lmKGQ9PT1iKXtpZihrJiYiZ2V0ImluIGsmJihnPWsuZ2V0KGEsITEsZSkpIT09YilyZXR1cm4gZztyZXR1cm4galtjXX1oPXR5cGVvZiBkO2lmKGg9PT0ibnVtYmVyIiYmaXNOYU4oZCl8fGQ9PW51bGwpcmV0dXJuO2g9PT0ic3RyaW5nIiYmYnUudGVzdChkKSYmKGQ9K2QucmVwbGFjZShidiwiIikrcGFyc2VGbG9hdChmLmNzcyhhLGMpKSksaD09PSJudW1iZXIiJiYhZi5jc3NOdW1iZXJbaV0mJihkKz0icHgiKTtpZigha3x8ISgic2V0ImluIGspfHwoZD1rLnNldChhLGQpKSE9PWIpdHJ5e2pbY109ZH1jYXRjaChsKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnO2M9Zi5jYW1lbENhc2UoYyksZz1mLmNzc0hvb2tzW2NdLGM9Zi5jc3NQcm9wc1tjXXx8YyxjPT09ImNzc0Zsb2F0IiYmKGM9ImZsb2F0Iik7aWYoZyYmImdldCJpbiBnJiYoZT1nLmdldChhLCEwLGQpKSE9PWIpcmV0dXJuIGU7aWYoYnopcmV0dXJuIGJ6KGEsYyl9LHN3YXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9O2Zvcih2YXIgZSBpbiBiKWRbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07Yy5jYWxsKGEpO2ZvcihlIGluIGIpYS5zdHlsZVtlXT1kW2VdfSxjYW1lbENhc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShicSxiQyl9fSksZi5jdXJDU1M9Zi5jc3MsZi5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe2YuY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU7aWYoYyl7YS5vZmZzZXRXaWR0aCE9PTA/ZT1iRChhLGIsZCk6Zi5zd2FwKGEsYncsZnVuY3Rpb24oKXtlPWJEKGEsYixkKX0pO2lmKGU8PTApe2U9YnooYSxiLGIpLGU9PT0iMHB4IiYmYkImJihlPWJCKGEsYixiKSk7aWYoZSE9bnVsbClyZXR1cm4gZT09PSIifHxlPT09ImF1dG8iPyIwcHgiOmV9aWYoZTwwfHxlPT1udWxsKXtlPWEuc3R5bGVbYl07cmV0dXJuIGU9PT0iInx8ZT09PSJhdXRvIj8iMHB4IjplfXJldHVybiB0eXBlb2YgZT09InN0cmluZyI/ZTplKyJweCJ9fSxzZXQ6ZnVuY3Rpb24oYSxiKXtpZighYnMudGVzdChiKSlyZXR1cm4gYjtiPXBhcnNlRmxvYXQoYik7aWYoYj49MClyZXR1cm4gYisicHgifX19KSxmLnN1cHBvcnQub3BhY2l0eXx8KGYuY3NzSG9va3Mub3BhY2l0eT17Z2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGJwLnRlc3QoKGImJmEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlLmZpbHRlcjphLnN0eWxlLmZpbHRlcil8fCIiKT9wYXJzZUZsb2F0KFJlZ0V4cC4kMSkvMTAwKyIiOmI/IjEiOiIifSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnN0eWxlLGQ9YS5jdXJyZW50U3R5bGU7Yy56b29tPTE7dmFyIGU9Zi5pc05hTihiKT8iIjoiYWxwaGEob3BhY2l0eT0iK2IqMTAwKyIpIixnPWQmJmQuZmlsdGVyfHxjLmZpbHRlcnx8IiI7Yy5maWx0ZXI9Ym8udGVzdChnKT9nLnJlcGxhY2UoYm8sZSk6ZysiICIrZX19KSxmKGZ1bmN0aW9uKCl7Zi5zdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHR8fChmLmNzc0hvb2tzLm1hcmdpblJpZ2h0PXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYztmLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sZnVuY3Rpb24oKXtiP2M9YnooYSwibWFyZ2luLXJpZ2h0IiwibWFyZ2luUmlnaHQiKTpjPWEuc3R5bGUubWFyZ2luUmlnaHR9KTtyZXR1cm4gY319KX0pLGMuZGVmYXVsdFZpZXcmJmMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGJBPWZ1bmN0aW9uKGEsYyl7dmFyIGQsZSxnO2M9Yy5yZXBsYWNlKGJyLCItJDEiKS50b0xvd2VyQ2FzZSgpO2lmKCEoZT1hLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKXJldHVybiBiO2lmKGc9ZS5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkpZD1nLmdldFByb3BlcnR5VmFsdWUoYyksZD09PSIiJiYhZi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGEpJiYoZD1mLnN0eWxlKGEsYykpO3JldHVybiBkfSksYy5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoYkI9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPWEuY3VycmVudFN0eWxlJiZhLmN1cnJlbnRTdHlsZVtiXSxlPWEucnVudGltZVN0eWxlJiZhLnJ1bnRpbWVTdHlsZVtiXSxmPWEuc3R5bGU7IWJzLnRlc3QoZCkmJmJ0LnRlc3QoZCkmJihjPWYubGVmdCxlJiYoYS5ydW50aW1lU3R5bGUubGVmdD1hLmN1cnJlbnRTdHlsZS5sZWZ0KSxmLmxlZnQ9Yj09PSJmb250U2l6ZSI/IjFlbSI6ZHx8MCxkPWYucGl4ZWxMZWZ0KyJweCIsZi5sZWZ0PWMsZSYmKGEucnVudGltZVN0eWxlLmxlZnQ9ZSkpO3JldHVybiBkPT09IiI/ImF1dG8iOmR9KSxiej1iQXx8YkIsZi5leHByJiZmLmV4cHIuZmlsdGVycyYmKGYuZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFdpZHRoLGM9YS5vZmZzZXRIZWlnaHQ7cmV0dXJuIGI9PT0wJiZjPT09MHx8IWYuc3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMmJihhLnN0eWxlLmRpc3BsYXl8fGYuY3NzKGEsImRpc3BsYXkiKSk9PT0ibm9uZSJ9LGYuZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuIWYuZXhwci5maWx0ZXJzLmhpZGRlbihhKX0pO3ZhciBiRT0vJTIwL2csYkY9L1xbXF0kLyxiRz0vXHI/XG4vZyxiSD0vIy4qJC8sYkk9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9tZyxiSj0vXig/OmNvbG9yfGRhdGV8ZGF0ZXRpbWV8ZW1haWx8aGlkZGVufG1vbnRofG51bWJlcnxwYXNzd29yZHxyYW5nZXxzZWFyY2h8dGVsfHRleHR8dGltZXx1cmx8d2VlaykkL2ksYks9L14oPzphYm91dHxhcHB8YXBwXC1zdG9yYWdlfC4rXC1leHRlbnNpb258ZmlsZXx3aWRnZXQpOiQvLGJMPS9eKD86R0VUfEhFQUQpJC8sYk09L15cL1wvLyxiTj0vXD8vLGJPPS88c2NyaXB0XGJbXjxdKig/Oig/ITxcL3NjcmlwdD4pPFtePF0qKSo8XC9zY3JpcHQ+L2dpLGJQPS9eKD86c2VsZWN0fHRleHRhcmVhKS9pLGJRPS9ccysvLGJSPS8oWz8mXSlfPVteJl0qLyxiUz0vXihbXHdcK1wuXC1dKzopKD86XC9cLyhbXlwvPyM6XSopKD86OihcZCspKT8pPy8sYlQ9Zi5mbi5sb2FkLGJVPXt9LGJWPXt9LGJXLGJYO3RyeXtiVz1lLmhyZWZ9Y2F0Y2goYlkpe2JXPWMuY3JlYXRlRWxlbWVudCgiYSIpLGJXLmhyZWY9IiIsYlc9YlcuaHJlZn1iWD1iUy5leGVjKGJXLnRvTG93ZXJDYXNlKCkpfHxbXSxmLmZuLmV4dGVuZCh7bG9hZDpmdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGEhPSJzdHJpbmciJiZiVClyZXR1cm4gYlQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZT1hLmluZGV4T2YoIiAiKTtpZihlPj0wKXt2YXIgZz1hLnNsaWNlKGUsYS5sZW5ndGgpO2E9YS5zbGljZSgwLGUpfXZhciBoPSJHRVQiO2MmJihmLmlzRnVuY3Rpb24oYyk/KGQ9YyxjPWIpOnR5cGVvZiBjPT0ib2JqZWN0IiYmKGM9Zi5wYXJhbShjLGYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxoPSJQT1NUIikpO3ZhciBpPXRoaXM7Zi5hamF4KHt1cmw6YSx0eXBlOmgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yyxjb21wbGV0ZTpmdW5jdGlvbihhLGIsYyl7Yz1hLnJlc3BvbnNlVGV4dCxhLmlzUmVzb2x2ZWQoKSYmKGEuZG9uZShmdW5jdGlvbihhKXtjPWF9KSxpLmh0bWwoZz9mKCI8ZGl2PiIpLmFwcGVuZChjLnJlcGxhY2UoYk8sIiIpKS5maW5kKGcpOmMpKSxkJiZpLmVhY2goZCxbYyxiLGFdKX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGYucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9mLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fGJQLnRlc3QodGhpcy5ub2RlTmFtZSl8fGJKLnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1mKHRoaXMpLnZhbCgpO3JldHVybiBjPT1udWxsP251bGw6Zi5pc0FycmF5KGMpP2YubWFwKGMsZnVuY3Rpb24oYSxjKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKGJHLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZShiRywiXHJcbiIpfX0pLmdldCgpfX0pLGYuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtmLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmJpbmQoYixhKX19KSxmLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oYSxjKXtmW2NdPWZ1bmN0aW9uKGEsZCxlLGcpe2YuaXNGdW5jdGlvbihkKSYmKGc9Z3x8ZSxlPWQsZD1iKTtyZXR1cm4gZi5hamF4KHt0eXBlOmMsdXJsOmEsZGF0YTpkLHN1Y2Nlc3M6ZSxkYXRhVHlwZTpnfSl9fSksZi5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVybiBmLmdldChhLGIsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmdldChhLGIsYywianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtiP2YuZXh0ZW5kKCEwLGEsZi5hamF4U2V0dGluZ3MsYik6KGI9YSxhPWYuZXh0ZW5kKCEwLGYuYWpheFNldHRpbmdzLGIpKTtmb3IodmFyIGMgaW57Y29udGV4dDoxLHVybDoxfSljIGluIGI/YVtjXT1iW2NdOmMgaW4gZi5hamF4U2V0dGluZ3MmJihhW2NdPWYuYWpheFNldHRpbmdzW2NdKTtyZXR1cm4gYX0sYWpheFNldHRpbmdzOnt1cmw6YlcsaXNMb2NhbDpiSy50ZXN0KGJYWzFdKSxnbG9iYWw6ITAsdHlwZToiR0VUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9wbGFpbiIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwiKiI6IiovKiJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpmLnBhcnNlSlNPTiwidGV4dCB4bWwiOmYucGFyc2VYTUx9fSxhamF4UHJlZmlsdGVyOmJaKGJVKSxhamF4VHJhbnNwb3J0OmJaKGJWKSxhamF4OmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gdyhhLGMsbCxtKXtpZihzIT09Mil7cz0yLHEmJmNsZWFyVGltZW91dChxKSxwPWIsbj1tfHwiIix2LnJlYWR5U3RhdGU9YT80OjA7dmFyIG8scix1LHc9bD9jYShkLHYsbCk6Yix4LHk7aWYoYT49MjAwJiZhPDMwMHx8YT09PTMwNCl7aWYoZC5pZk1vZGlmaWVkKXtpZih4PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSlmLmxhc3RNb2RpZmllZFtrXT14O2lmKHk9di5nZXRSZXNwb25zZUhlYWRlcigiRXRhZyIpKWYuZXRhZ1trXT15fWlmKGE9PT0zMDQpYz0ibm90bW9kaWZpZWQiLG89ITA7ZWxzZSB0cnl7cj1jYihkLHcpLGM9InN1Y2Nlc3MiLG89ITB9Y2F0Y2goeil7Yz0icGFyc2VyZXJyb3IiLHU9en19ZWxzZXt1PWM7aWYoIWN8fGEpYz0iZXJyb3IiLGE8MCYmKGE9MCl9di5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9YyxvP2gucmVzb2x2ZVdpdGgoZSxbcixjLHZdKTpoLnJlamVjdFdpdGgoZSxbdixjLHVdKSx2LnN0YXR1c0NvZGUoaiksaj1iLHQmJmcudHJpZ2dlcigiYWpheCIrKG8/IlN1Y2Nlc3MiOiJFcnJvciIpLFt2LGQsbz9yOnVdKSxpLnJlc29sdmVXaXRoKGUsW3YsY10pLHQmJihnLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3YsZF0pLC0tZi5hY3RpdmV8fGYuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSl9fXR5cGVvZiBhPT0ib2JqZWN0IiYmKGM9YSxhPWIpLGM9Y3x8e307dmFyIGQ9Zi5hamF4U2V0dXAoe30sYyksZT1kLmNvbnRleHR8fGQsZz1lIT09ZCYmKGUubm9kZVR5cGV8fGUgaW5zdGFuY2VvZiBmKT9mKGUpOmYuZXZlbnQsaD1mLkRlZmVycmVkKCksaT1mLl9EZWZlcnJlZCgpLGo9ZC5zdGF0dXNDb2RlfHx7fSxrLGw9e30sbT17fSxuLG8scCxxLHIscz0wLHQsdSx2PXtyZWFkeVN0YXRlOjAsc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihhLGIpe2lmKCFzKXt2YXIgYz1hLnRvTG93ZXJDYXNlKCk7YT1tW2NdPW1bY118fGEsbFthXT1ifXJldHVybiB0aGlzfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gcz09PTI/bjpudWxsfSxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYztpZihzPT09Mil7aWYoIW8pe289e307d2hpbGUoYz1iSS5leGVjKG4pKW9bY1sxXS50b0xvd2VyQ2FzZSgpXT1jWzJdfWM9b1thLnRvTG93ZXJDYXNlKCldfXJldHVybiBjPT09Yj9udWxsOmN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7c3x8KGQubWltZVR5cGU9YSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe2E9YXx8ImFib3J0IixwJiZwLmFib3J0KGEpLHcoMCxhKTtyZXR1cm4gdGhpc319O2gucHJvbWlzZSh2KSx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLHYuY29tcGxldGU9aS5kb25lLHYuc3RhdHVzQ29kZT1mdW5jdGlvbihhKXtpZihhKXt2YXIgYjtpZihzPDIpZm9yKGIgaW4gYSlqW2JdPVtqW2JdLGFbYl1dO2Vsc2UgYj1hW3Yuc3RhdHVzXSx2LnRoZW4oYixiKX1yZXR1cm4gdGhpc30sZC51cmw9KChhfHxkLnVybCkrIiIpLnJlcGxhY2UoYkgsIiIpLnJlcGxhY2UoYk0sYlhbMV0rIi8vIiksZC5kYXRhVHlwZXM9Zi50cmltKGQuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5zcGxpdChiUSksZC5jcm9zc0RvbWFpbj09bnVsbCYmKHI9YlMuZXhlYyhkLnVybC50b0xvd2VyQ2FzZSgpKSxkLmNyb3NzRG9tYWluPSEoIXJ8fHJbMV09PWJYWzFdJiZyWzJdPT1iWFsyXSYmKHJbM118fChyWzFdPT09Imh0dHA6Ij84MDo0NDMpKT09KGJYWzNdfHwoYlhbMV09PT0iaHR0cDoiPzgwOjQ0MykpKSksZC5kYXRhJiZkLnByb2Nlc3NEYXRhJiZ0eXBlb2YgZC5kYXRhIT0ic3RyaW5nIiYmKGQuZGF0YT1mLnBhcmFtKGQuZGF0YSxkLnRyYWRpdGlvbmFsKSksYiQoYlUsZCxjLHYpO2lmKHM9PT0yKXJldHVybiExO3Q9ZC5nbG9iYWwsZC50eXBlPWQudHlwZS50b1VwcGVyQ2FzZSgpLGQuaGFzQ29udGVudD0hYkwudGVzdChkLnR5cGUpLHQmJmYuYWN0aXZlKys9PT0wJiZmLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpO2lmKCFkLmhhc0NvbnRlbnQpe2QuZGF0YSYmKGQudXJsKz0oYk4udGVzdChkLnVybCk/IiYiOiI/IikrZC5kYXRhKSxrPWQudXJsO2lmKGQuY2FjaGU9PT0hMSl7dmFyIHg9Zi5ub3coKSx5PWQudXJsLnJlcGxhY2UoYlIsIiQxXz0iK3gpO2QudXJsPXkrKHk9PT1kLnVybD8oYk4udGVzdChkLnVybCk/IiYiOiI/IikrIl89Iit4OiIiKX19KGQuZGF0YSYmZC5oYXNDb250ZW50JiZkLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZC5jb250ZW50VHlwZSksZC5pZk1vZGlmaWVkJiYoaz1rfHxkLnVybCxmLmxhc3RNb2RpZmllZFtrXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsZi5sYXN0TW9kaWZpZWRba10pLGYuZXRhZ1trXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixmLmV0YWdba10pKSx2LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsZC5kYXRhVHlwZXNbMF0mJmQuYWNjZXB0c1tkLmRhdGFUeXBlc1swXV0/ZC5hY2NlcHRzW2QuZGF0YVR5cGVzWzBdXSsoZC5kYXRhVHlwZXNbMF0hPT0iKiI/IiwgKi8qOyBxPTAuMDEiOiIiKTpkLmFjY2VwdHNbIioiXSk7Zm9yKHUgaW4gZC5oZWFkZXJzKXYuc2V0UmVxdWVzdEhlYWRlcih1LGQuaGVhZGVyc1t1XSk7aWYoZC5iZWZvcmVTZW5kJiYoZC5iZWZvcmVTZW5kLmNhbGwoZSx2LGQpPT09ITF8fHM9PT0yKSl7di5hYm9ydCgpO3JldHVybiExfWZvcih1IGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbdV0oZFt1XSk7cD1iJChiVixkLGMsdik7aWYoIXApdygtMSwiTm8gVHJhbnNwb3J0Iik7ZWxzZXt2LnJlYWR5U3RhdGU9MSx0JiZnLnRyaWdnZXIoImFqYXhTZW5kIixbdixkXSksZC5hc3luYyYmZC50aW1lb3V0PjAmJihxPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2LmFib3J0KCJ0aW1lb3V0Iil9LGQudGltZW91dCkpO3RyeXtzPTEscC5zZW5kKGwsdyl9Y2F0Y2goeil7c3RhdHVzPDI/dygtMSx6KTpmLmVycm9yKHopfX1yZXR1cm4gdn0scGFyYW06ZnVuY3Rpb24oYSxjKXt2YXIgZD1bXSxlPWZ1bmN0aW9uKGEsYil7Yj1mLmlzRnVuY3Rpb24oYik/YigpOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2M9PT1iJiYoYz1mLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCk7aWYoZi5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIWYuaXNQbGFpbk9iamVjdChhKSlmLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IodmFyIGcgaW4gYSliXyhnLGFbZ10sYyxlKTtyZXR1cm4gZC5qb2luKCImIikucmVwbGFjZShiRSwiKyIpfX0pLGYuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fX0pO3ZhciBjYz1mLm5vdygpLGNkPS8oXD0pXD8oJnwkKXxcP1w/L2k7Zi5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBmLmV4cGFuZG8rIl8iK2NjKyt9fSksZi5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihiLGMsZCl7dmFyIGU9Yi5jb250ZW50VHlwZT09PSJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiJiZ0eXBlb2YgYi5kYXRhPT0ic3RyaW5nIjtpZihiLmRhdGFUeXBlc1swXT09PSJqc29ucCJ8fGIuanNvbnAhPT0hMSYmKGNkLnRlc3QoYi51cmwpfHxlJiZjZC50ZXN0KGIuZGF0YSkpKXt2YXIgZyxoPWIuanNvbnBDYWxsYmFjaz1mLmlzRnVuY3Rpb24oYi5qc29ucENhbGxiYWNrKT9iLmpzb25wQ2FsbGJhY2soKTpiLmpzb25wQ2FsbGJhY2ssaT1hW2hdLGo9Yi51cmwsaz1iLmRhdGEsbD0iJDEiK2grIiQyIjtiLmpzb25wIT09ITEmJihqPWoucmVwbGFjZShjZCxsKSxiLnVybD09PWomJihlJiYoaz1rLnJlcGxhY2UoY2QsbCkpLGIuZGF0YT09PWsmJihqKz0oL1w/Ly50ZXN0KGopPyImIjoiPyIpK2IuanNvbnArIj0iK2gpKSksYi51cmw9aixiLmRhdGE9ayxhW2hdPWZ1bmN0aW9uKGEpe2c9W2FdfSxkLmFsd2F5cyhmdW5jdGlvbigpe2FbaF09aSxnJiZmLmlzRnVuY3Rpb24oaSkmJmFbaF0oZ1swXSl9KSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtnfHxmLmVycm9yKGgrIiB3YXMgbm90IGNhbGxlZCIpO3JldHVybiBnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiI7cmV0dXJuInNjcmlwdCJ9fSksZi5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9qYXZhc2NyaXB0fGVjbWFzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe2YuZ2xvYmFsRXZhbChhKTtyZXR1cm4gYX19fSksZi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2EuY2FjaGU9PT1iJiYoYS5jYWNoZT0hMSksYS5jcm9zc0RvbWFpbiYmKGEudHlwZT0iR0VUIixhLmdsb2JhbD0hMSl9KSxmLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oYSl7aWYoYS5jcm9zc0RvbWFpbil7dmFyIGQsZT1jLmhlYWR8fGMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8Yy5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZixnKXtkPWMuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksZC5hc3luYz0iYXN5bmMiLGEuc2NyaXB0Q2hhcnNldCYmKGQuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGQuc3JjPWEudXJsLGQub25sb2FkPWQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7aWYoY3x8IWQucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChkLnJlYWR5U3RhdGUpKWQub25sb2FkPWQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsZSYmZC5wYXJlbnROb2RlJiZlLnJlbW92ZUNoaWxkKGQpLGQ9YixjfHxnKDIwMCwic3VjY2VzcyIpfSxlLmluc2VydEJlZm9yZShkLGUuZmlyc3RDaGlsZCl9LGFib3J0OmZ1bmN0aW9uKCl7ZCYmZC5vbmxvYWQoMCwxKX19fX0pO3ZhciBjZT1hLkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gY2cpY2dbYV0oMCwxKX06ITEsY2Y9MCxjZztmLmFqYXhTZXR0aW5ncy54aHI9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmY2goKXx8Y2koKX06Y2gsZnVuY3Rpb24oYSl7Zi5leHRlbmQoZi5zdXBwb3J0LHthamF4OiEhYSxjb3JzOiEhYSYmIndpdGhDcmVkZW50aWFscyJpbiBhfSl9KGYuYWpheFNldHRpbmdzLnhocigpKSxmLnN1cHBvcnQuYWpheCYmZi5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGMpe2lmKCFjLmNyb3NzRG9tYWlufHxmLnN1cHBvcnQuY29ycyl7dmFyIGQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxnKXt2YXIgaD1jLnhocigpLGksajtjLnVzZXJuYW1lP2gub3BlbihjLnR5cGUsYy51cmwsYy5hc3luYyxjLnVzZXJuYW1lLGMucGFzc3dvcmQpOmgub3BlbihjLnR5cGUsYy51cmwsYy5hc3luYyk7aWYoYy54aHJGaWVsZHMpZm9yKGogaW4gYy54aHJGaWVsZHMpaFtqXT1jLnhockZpZWxkc1tqXTtjLm1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUmJmgub3ZlcnJpZGVNaW1lVHlwZShjLm1pbWVUeXBlKSwhYy5jcm9zc0RvbWFpbiYmIWVbIlgtUmVxdWVzdGVkLVdpdGgiXSYmKGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTt0cnl7Zm9yKGogaW4gZSloLnNldFJlcXVlc3RIZWFkZXIoaixlW2pdKX1jYXRjaChrKXt9aC5zZW5kKGMuaGFzQ29udGVudCYmYy5kYXRhfHxudWxsKSxkPWZ1bmN0aW9uKGEsZSl7dmFyIGosayxsLG0sbjt0cnl7aWYoZCYmKGV8fGgucmVhZHlTdGF0ZT09PTQpKXtkPWIsaSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPWYubm9vcCxjZSYmZGVsZXRlIGNnW2ldKTtpZihlKWgucmVhZHlTdGF0ZSE9PTQmJmguYWJvcnQoKTtlbHNle2o9aC5zdGF0dXMsbD1oLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLG09e30sbj1oLnJlc3BvbnNlWE1MLG4mJm4uZG9jdW1lbnRFbGVtZW50JiYobS54bWw9biksbS50ZXh0PWgucmVzcG9uc2VUZXh0O3RyeXtrPWguc3RhdHVzVGV4dH1jYXRjaChvKXtrPSIifSFqJiZjLmlzTG9jYWwmJiFjLmNyb3NzRG9tYWluP2o9bS50ZXh0PzIwMDo0MDQ6aj09PTEyMjMmJihqPTIwNCl9fX1jYXRjaChwKXtlfHxnKC0xLHApfW0mJmcoaixrLG0sbCl9LCFjLmFzeW5jfHxoLnJlYWR5U3RhdGU9PT00P2QoKTooaT0rK2NmLGNlJiYoY2d8fChjZz17fSxmKGEpLnVubG9hZChjZSkpLGNnW2ldPWQpLGgub25yZWFkeXN0YXRlY2hhbmdlPWQpfSxhYm9ydDpmdW5jdGlvbigpe2QmJmQoMCwxKX19fX0pO3ZhciBjaj17fSxjayxjbCxjbT0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sY249L14oWytcLV09KT8oW1xkKy5cLV0rKShbYS16JV0qKSQvaSxjbyxjcD1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXSxjcSxjcj1hLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZXx8YS5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fGEub1JlcXVlc3RBbmltYXRpb25GcmFtZTtmLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGN1KCJzaG93IiwzKSxhLGIsYyk7Zm9yKHZhciBnPTAsaD10aGlzLmxlbmd0aDtnPGg7ZysrKWQ9dGhpc1tnXSxkLnN0eWxlJiYoZT1kLnN0eWxlLmRpc3BsYXksIWYuX2RhdGEoZCwib2xkZGlzcGxheSIpJiZlPT09Im5vbmUiJiYoZT1kLnN0eWxlLmRpc3BsYXk9IiIpLGU9PT0iIiYmZi5jc3MoZCwiZGlzcGxheSIpPT09Im5vbmUiJiZmLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGN2KGQubm9kZU5hbWUpKSk7Zm9yKGc9MDtnPGg7ZysrKXtkPXRoaXNbZ107aWYoZC5zdHlsZSl7ZT1kLnN0eWxlLmRpc3BsYXk7aWYoZT09PSIifHxlPT09Im5vbmUiKWQuc3R5bGUuZGlzcGxheT1mLl9kYXRhKGQsIm9sZGRpc3BsYXkiKXx8IiJ9fXJldHVybiB0aGlzfSxoaWRlOmZ1bmN0aW9uKGEsYixjKXtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGN1KCJoaWRlIiwzKSxhLGIsYyk7Zm9yKHZhciBkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKWlmKHRoaXNbZF0uc3R5bGUpe3ZhciBnPWYuY3NzKHRoaXNbZF0sImRpc3BsYXkiKTtnIT09Im5vbmUiJiYhZi5fZGF0YSh0aGlzW2RdLCJvbGRkaXNwbGF5IikmJmYuX2RhdGEodGhpc1tkXSwib2xkZGlzcGxheSIsZyl9Zm9yKGQ9MDtkPGU7ZCsrKXRoaXNbZF0uc3R5bGUmJih0aGlzW2RdLnN0eWxlLmRpc3BsYXk9Im5vbmUiKTtyZXR1cm4gdGhpc30sX3RvZ2dsZTpmLmZuLnRvZ2dsZSx0b2dnbGU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXR5cGVvZiBhPT0iYm9vbGVhbiI7Zi5pc0Z1bmN0aW9uKGEpJiZmLmlzRnVuY3Rpb24oYik/dGhpcy5fdG9nZ2xlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTphPT1udWxsfHxkP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWQ/YTpmKHRoaXMpLmlzKCI6aGlkZGVuIik7Zih0aGlzKVtiPyJzaG93IjoiaGlkZSJdKCl9KTp0aGlzLmFuaW1hdGUoY3UoInRvZ2dsZSIsMyksYSxiLGMpO3JldHVybiB0aGlzfSxmYWRlVG86ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuZmlsdGVyKCI6aGlkZGVuIikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Zi5zcGVlZChiLGMsZCk7aWYoZi5pc0VtcHR5T2JqZWN0KGEpKXJldHVybiB0aGlzLmVhY2goZS5jb21wbGV0ZSxbITFdKTthPWYuZXh0ZW5kKHt9LGEpO3JldHVybiB0aGlzW2UucXVldWU9PT0hMT8iZWFjaCI6InF1ZXVlIl0oZnVuY3Rpb24oKXtlLnF1ZXVlPT09ITEmJmYuX21hcmsodGhpcyk7dmFyIGI9Zi5leHRlbmQoe30sZSksYz10aGlzLm5vZGVUeXBlPT09MSxkPWMmJmYodGhpcykuaXMoIjpoaWRkZW4iKSxnLGgsaSxqLGssbCxtLG4sbztiLmFuaW1hdGVkUHJvcGVydGllcz17fTtmb3IoaSBpbiBhKXtnPWYuY2FtZWxDYXNlKGkpLGkhPT1nJiYoYVtnXT1hW2ldLGRlbGV0ZSBhW2ldKSxoPWFbZ10sZi5pc0FycmF5KGgpPyhiLmFuaW1hdGVkUHJvcGVydGllc1tnXT1oWzFdLGg9YVtnXT1oWzBdKTpiLmFuaW1hdGVkUHJvcGVydGllc1tnXT1iLnNwZWNpYWxFYXNpbmcmJmIuc3BlY2lhbEVhc2luZ1tnXXx8Yi5lYXNpbmd8fCJzd2luZyI7aWYoaD09PSJoaWRlIiYmZHx8aD09PSJzaG93IiYmIWQpcmV0dXJuIGIuY29tcGxldGUuY2FsbCh0aGlzKTtjJiYoZz09PSJoZWlnaHQifHxnPT09IndpZHRoIikmJihiLm92ZXJmbG93PVt0aGlzLnN0eWxlLm92ZXJmbG93LHRoaXMuc3R5bGUub3ZlcmZsb3dYLHRoaXMuc3R5bGUub3ZlcmZsb3dZXSxmLmNzcyh0aGlzLCJkaXNwbGF5Iik9PT0iaW5saW5lIiYmZi5jc3ModGhpcywiZmxvYXQiKT09PSJub25lIiYmKGYuc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PyhqPWN2KHRoaXMubm9kZU5hbWUpLGo9PT0iaW5saW5lIj90aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI6KHRoaXMuc3R5bGUuZGlzcGxheT0iaW5saW5lIix0aGlzLnN0eWxlLnpvb209MSkpOnRoaXMuc3R5bGUuZGlzcGxheT0iaW5saW5lLWJsb2NrIikpfWIub3ZlcmZsb3chPW51bGwmJih0aGlzLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iKTtmb3IoaSBpbiBhKWs9bmV3IGYuZngodGhpcyxiLGkpLGg9YVtpXSxjbS50ZXN0KGgpP2tbaD09PSJ0b2dnbGUiP2Q/InNob3ciOiJoaWRlIjpoXSgpOihsPWNuLmV4ZWMoaCksbT1rLmN1cigpLGw/KG49cGFyc2VGbG9hdChsWzJdKSxvPWxbM118fChmLmNzc051bWJlcltpXT8iIjoicHgiKSxvIT09InB4IiYmKGYuc3R5bGUodGhpcyxpLChufHwxKStvKSxtPShufHwxKS9rLmN1cigpKm0sZi5zdHlsZSh0aGlzLGksbStvKSksbFsxXSYmKG49KGxbMV09PT0iLT0iPy0xOjEpKm4rbSksay5jdXN0b20obSxuLG8pKTprLmN1c3RvbShtLGgsIiIpKTtyZXR1cm4hMH0pfSxzdG9wOmZ1bmN0aW9uKGEsYil7YSYmdGhpcy5xdWV1ZShbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9Zi50aW1lcnMsYz1hLmxlbmd0aDtifHxmLl91bm1hcmsoITAsdGhpcyk7d2hpbGUoYy0tKWFbY10uZWxlbT09PXRoaXMmJihiJiZhW2NdKCEwKSxhLnNwbGljZShjLDEpKX0pLGJ8fHRoaXMuZGVxdWV1ZSgpO3JldHVybiB0aGlzfX0pLGYuZWFjaCh7c2xpZGVEb3duOmN1KCJzaG93IiwxKSxzbGlkZVVwOmN1KCJoaWRlIiwxKSxzbGlkZVRvZ2dsZTpjdSgidG9nZ2xlIiwxKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxmLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEmJnR5cGVvZiBhPT0ib2JqZWN0Ij9mLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fGYuaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhZi5pc0Z1bmN0aW9uKGIpJiZifTtkLmR1cmF0aW9uPWYuZngub2ZmPzA6dHlwZW9mIGQuZHVyYXRpb249PSJudW1iZXIiP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBmLmZ4LnNwZWVkcz9mLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTpmLmZ4LnNwZWVkcy5fZGVmYXVsdCxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oYSl7ZC5xdWV1ZSE9PSExP2YuZGVxdWV1ZSh0aGlzKTphIT09ITEmJmYuX3VubWFyayh0aGlzKSxmLmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpfTtyZXR1cm4gZH0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGMrZCphfSxzd2luZzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4oLU1hdGguY29zKGEqTWF0aC5QSSkvMisuNSkqZCtjfX0sdGltZXJzOltdLGZ4OmZ1bmN0aW9uKGEsYixjKXt0aGlzLm9wdGlvbnM9Yix0aGlzLmVsZW09YSx0aGlzLnByb3A9YyxiLm9yaWc9Yi5vcmlnfHx7fX19KSxmLmZ4LnByb3RvdHlwZT17dXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLChmLmZ4LnN0ZXBbdGhpcy5wcm9wXXx8Zi5meC5zdGVwLl9kZWZhdWx0KSh0aGlzKX0sY3VyOmZ1bmN0aW9uKCl7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpcmV0dXJuIHRoaXMuZWxlbVt0aGlzLnByb3BdO3ZhciBhLGI9Zi5jc3ModGhpcy5lbGVtLHRoaXMucHJvcCk7cmV0dXJuIGlzTmFOKGE9cGFyc2VGbG9hdChiKSk/IWJ8fGI9PT0iYXV0byI/MDpiOmF9LGN1c3RvbTpmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gaChhKXtyZXR1cm4gZC5zdGVwKGEpfXZhciBkPXRoaXMsZT1mLmZ4LGc7dGhpcy5zdGFydFRpbWU9Y3F8fGNzKCksdGhpcy5zdGFydD1hLHRoaXMuZW5kPWIsdGhpcy51bml0PWN8fHRoaXMudW5pdHx8KGYuY3NzTnVtYmVyW3RoaXMucHJvcF0/IiI6InB4IiksdGhpcy5ub3c9dGhpcy5zdGFydCx0aGlzLnBvcz10aGlzLnN0YXRlPTAsaC5lbGVtPXRoaXMuZWxlbSxoKCkmJmYudGltZXJzLnB1c2goaCkmJiFjbyYmKGNyPyhjbz0xLGc9ZnVuY3Rpb24oKXtjbyYmKGNyKGcpLGUudGljaygpKX0sY3IoZykpOmNvPXNldEludGVydmFsKGUudGljayxlLmludGVydmFsKSl9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPWYuc3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCksdGhpcy5vcHRpb25zLnNob3c9ITAsdGhpcy5jdXN0b20odGhpcy5wcm9wPT09IndpZHRoInx8dGhpcy5wcm9wPT09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpLGYodGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPWYuc3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCksdGhpcy5vcHRpb25zLmhpZGU9ITAsdGhpcy5jdXN0b20odGhpcy5jdXIoKSwwKX0sc3RlcDpmdW5jdGlvbihhKXt2YXIgYj1jcXx8Y3MoKSxjPSEwLGQ9dGhpcy5lbGVtLGU9dGhpcy5vcHRpb25zLGcsaDtpZihhfHxiPj1lLmR1cmF0aW9uK3RoaXMuc3RhcnRUaW1lKXt0aGlzLm5vdz10aGlzLmVuZCx0aGlzLnBvcz10aGlzLnN0YXRlPTEsdGhpcy51cGRhdGUoKSxlLmFuaW1hdGVkUHJvcGVydGllc1t0aGlzLnByb3BdPSEwO2ZvcihnIGluIGUuYW5pbWF0ZWRQcm9wZXJ0aWVzKWUuYW5pbWF0ZWRQcm9wZXJ0aWVzW2ddIT09ITAmJihjPSExKTtpZihjKXtlLm92ZXJmbG93IT1udWxsJiYhZi5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3MmJmYuZWFjaChbIiIsIlgiLCJZIl0sZnVuY3Rpb24oYSxiKXtkLnN0eWxlWyJvdmVyZmxvdyIrYl09ZS5vdmVyZmxvd1thXX0pLGUuaGlkZSYmZihkKS5oaWRlKCk7aWYoZS5oaWRlfHxlLnNob3cpZm9yKHZhciBpIGluIGUuYW5pbWF0ZWRQcm9wZXJ0aWVzKWYuc3R5bGUoZCxpLGUub3JpZ1tpXSk7ZS5jb21wbGV0ZS5jYWxsKGQpfXJldHVybiExfWUuZHVyYXRpb249PUluZmluaXR5P3RoaXMubm93PWI6KGg9Yi10aGlzLnN0YXJ0VGltZSx0aGlzLnN0YXRlPWgvZS5kdXJhdGlvbix0aGlzLnBvcz1mLmVhc2luZ1tlLmFuaW1hdGVkUHJvcGVydGllc1t0aGlzLnByb3BdXSh0aGlzLnN0YXRlLGgsMCwxLGUuZHVyYXRpb24pLHRoaXMubm93PXRoaXMuc3RhcnQrKHRoaXMuZW5kLXRoaXMuc3RhcnQpKnRoaXMucG9zKSx0aGlzLnVwZGF0ZSgpO3JldHVybiEwfX0sZi5leHRlbmQoZi5meCx7dGljazpmdW5jdGlvbigpe2Zvcih2YXIgYT1mLnRpbWVycyxiPTA7YjxhLmxlbmd0aDsrK2IpYVtiXSgpfHxhLnNwbGljZShiLS0sMSk7YS5sZW5ndGh8fGYuZnguc3RvcCgpfSxpbnRlcnZhbDoxMyxzdG9wOmZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChjbyksY289bnVsbH0sc3BlZWRzOntzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LHN0ZXA6e29wYWNpdHk6ZnVuY3Rpb24oYSl7Zi5zdHlsZShhLmVsZW0sIm9wYWNpdHkiLGEubm93KX0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7YS5lbGVtLnN0eWxlJiZhLmVsZW0uc3R5bGVbYS5wcm9wXSE9bnVsbD9hLmVsZW0uc3R5bGVbYS5wcm9wXT0oYS5wcm9wPT09IndpZHRoInx8YS5wcm9wPT09ImhlaWdodCI/TWF0aC5tYXgoMCxhLm5vdyk6YS5ub3cpK2EudW5pdDphLmVsZW1bYS5wcm9wXT1hLm5vd319fSksZi5leHByJiZmLmV4cHIuZmlsdGVycyYmKGYuZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVybiBmLmdyZXAoZi50aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT1iLmVsZW19KS5sZW5ndGh9KTt2YXIgY3c9L150KD86YWJsZXxkfGgpJC9pLGN4PS9eKD86Ym9keXxodG1sKSQvaTsiZ2V0Qm91bmRpbmdDbGllbnRSZWN0ImluIGMuZG9jdW1lbnRFbGVtZW50P2YuZm4ub2Zmc2V0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF0sYztpZihhKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zi5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxiKX0pO2lmKCFifHwhYi5vd25lckRvY3VtZW50KXJldHVybiBudWxsO2lmKGI9PT1iLm93bmVyRG9jdW1lbnQuYm9keSlyZXR1cm4gZi5vZmZzZXQuYm9keU9mZnNldChiKTt0cnl7Yz1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKGQpe312YXIgZT1iLm93bmVyRG9jdW1lbnQsZz1lLmRvY3VtZW50RWxlbWVudDtpZighY3x8IWYuY29udGFpbnMoZyxiKSlyZXR1cm4gYz97dG9wOmMudG9wLGxlZnQ6Yy5sZWZ0fTp7dG9wOjAsbGVmdDowfTt2YXIgaD1lLmJvZHksaT1jeShlKSxqPWcuY2xpZW50VG9wfHxoLmNsaWVudFRvcHx8MCxrPWcuY2xpZW50TGVmdHx8aC5jbGllbnRMZWZ0fHwwLGw9aS5wYWdlWU9mZnNldHx8Zi5zdXBwb3J0LmJveE1vZGVsJiZnLnNjcm9sbFRvcHx8aC5zY3JvbGxUb3AsbT1pLnBhZ2VYT2Zmc2V0fHxmLnN1cHBvcnQuYm94TW9kZWwmJmcuc2Nyb2xsTGVmdHx8aC5zY3JvbGxMZWZ0LG49Yy50b3ArbC1qLG89Yy5sZWZ0K20taztyZXR1cm57dG9wOm4sbGVmdDpvfX06Zi5mbi5vZmZzZXQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXTtpZihhKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zi5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxiKX0pO2lmKCFifHwhYi5vd25lckRvY3VtZW50KXJldHVybiBudWxsO2lmKGI9PT1iLm93bmVyRG9jdW1lbnQuYm9keSlyZXR1cm4gZi5vZmZzZXQuYm9keU9mZnNldChiKTtmLm9mZnNldC5pbml0aWFsaXplKCk7dmFyIGMsZD1iLm9mZnNldFBhcmVudCxlPWIsZz1iLm93bmVyRG9jdW1lbnQsaD1nLmRvY3VtZW50RWxlbWVudCxpPWcuYm9keSxqPWcuZGVmYXVsdFZpZXcsaz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGw9Yi5vZmZzZXRUb3AsbT1iLm9mZnNldExlZnQ7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmYiE9PWkmJmIhPT1oKXtpZihmLm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRpb24mJmsucG9zaXRpb249PT0iZml4ZWQiKWJyZWFrO2M9aj9qLmdldENvbXB1dGVkU3R5bGUoYixudWxsKTpiLmN1cnJlbnRTdHlsZSxsLT1iLnNjcm9sbFRvcCxtLT1iLnNjcm9sbExlZnQsYj09PWQmJihsKz1iLm9mZnNldFRvcCxtKz1iLm9mZnNldExlZnQsZi5vZmZzZXQuZG9lc05vdEFkZEJvcmRlciYmKCFmLm9mZnNldC5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxsc3x8IWN3LnRlc3QoYi5ub2RlTmFtZSkpJiYobCs9cGFyc2VGbG9hdChjLmJvcmRlclRvcFdpZHRoKXx8MCxtKz1wYXJzZUZsb2F0KGMuYm9yZGVyTGVmdFdpZHRoKXx8MCksZT1kLGQ9Yi5vZmZzZXRQYXJlbnQpLGYub2Zmc2V0LnN1YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90VmlzaWJsZSYmYy5vdmVyZmxvdyE9PSJ2aXNpYmxlIiYmKGwrPXBhcnNlRmxvYXQoYy5ib3JkZXJUb3BXaWR0aCl8fDAsbSs9cGFyc2VGbG9hdChjLmJvcmRlckxlZnRXaWR0aCl8fDApLGs9Y31pZihrLnBvc2l0aW9uPT09InJlbGF0aXZlInx8ay5wb3NpdGlvbj09PSJzdGF0aWMiKWwrPWkub2Zmc2V0VG9wLG0rPWkub2Zmc2V0TGVmdDtmLm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRpb24mJmsucG9zaXRpb249PT0iZml4ZWQiJiYobCs9TWF0aC5tYXgoaC5zY3JvbGxUb3AsaS5zY3JvbGxUb3ApLG0rPU1hdGgubWF4KGguc2Nyb2xsTGVmdCxpLnNjcm9sbExlZnQpKTtyZXR1cm57dG9wOmwsbGVmdDptfX0sZi5vZmZzZXQ9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgYT1jLmJvZHksYj1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQsZSxnLGgsaT1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxqPSI8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7bWFyZ2luOjA7Ym9yZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDsnPjxkaXY+PC9kaXY+PC9kaXY+PHRhYmxlIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7bWFyZ2luOjA7Ym9yZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDsnIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+PHRyPjx0ZD48L3RkPjwvdHI+PC90YWJsZT4iO2YuZXh0ZW5kKGIuc3R5bGUse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowLG1hcmdpbjowLGJvcmRlcjowLHdpZHRoOiIxcHgiLGhlaWdodDoiMXB4Iix2aXNpYmlsaXR5OiJoaWRkZW4ifSksYi5pbm5lckhUTUw9aixhLmluc2VydEJlZm9yZShiLGEuZmlyc3RDaGlsZCksZD1iLmZpcnN0Q2hpbGQsZT1kLmZpcnN0Q2hpbGQsaD1kLm5leHRTaWJsaW5nLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCx0aGlzLmRvZXNOb3RBZGRCb3JkZXI9ZS5vZmZzZXRUb3AhPT01LHRoaXMuZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHM9aC5vZmZzZXRUb3A9PT01LGUuc3R5bGUucG9zaXRpb249ImZpeGVkIixlLnN0eWxlLnRvcD0iMjBweCIsdGhpcy5zdXBwb3J0c0ZpeGVkUG9zaXRpb249ZS5vZmZzZXRUb3A9PT0yMHx8ZS5vZmZzZXRUb3A9PT0xNSxlLnN0eWxlLnBvc2l0aW9uPWUuc3R5bGUudG9wPSIiLGQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsZC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLHRoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPWUub2Zmc2V0VG9wPT09LTUsdGhpcy5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldD1hLm9mZnNldFRvcCE9PWksYS5yZW1vdmVDaGlsZChiKSxmLm9mZnNldC5pbml0aWFsaXplPWYubm9vcH0sYm9keU9mZnNldDpmdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFRvcCxjPWEub2Zmc2V0TGVmdDtmLm9mZnNldC5pbml0aWFsaXplKCksZi5vZmZzZXQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQmJihiKz1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjKz1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpbkxlZnQiKSl8fDApO3JldHVybnt0b3A6YixsZWZ0OmN9fSxzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWYuY3NzKGEsInBvc2l0aW9uIik7ZD09PSJzdGF0aWMiJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKTt2YXIgZT1mKGEpLGc9ZS5vZmZzZXQoKSxoPWYuY3NzKGEsInRvcCIpLGk9Zi5jc3MoYSwibGVmdCIpLGo9KGQ9PT0iYWJzb2x1dGUifHxkPT09ImZpeGVkIikmJmYuaW5BcnJheSgiYXV0byIsW2gsaV0pPi0xLGs9e30sbD17fSxtLG47aj8obD1lLnBvc2l0aW9uKCksbT1sLnRvcCxuPWwubGVmdCk6KG09cGFyc2VGbG9hdChoKXx8MCxuPXBhcnNlRmxvYXQoaSl8fDApLGYuaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxnKSksYi50b3AhPW51bGwmJihrLnRvcD1iLnRvcC1nLnRvcCttKSxiLmxlZnQhPW51bGwmJihrLmxlZnQ9Yi5sZWZ0LWcubGVmdCtuKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxrKTplLmNzcyhrKX19LGYuZm4uZXh0ZW5kKHtwb3NpdGlvbjpmdW5jdGlvbigpe2lmKCF0aGlzWzBdKXJldHVybiBudWxsO3ZhciBhPXRoaXNbMF0sYj10aGlzLm9mZnNldFBhcmVudCgpLGM9dGhpcy5vZmZzZXQoKSxkPWN4LnRlc3QoYlswXS5ub2RlTmFtZSk/e3RvcDowLGxlZnQ6MH06Yi5vZmZzZXQoKTtjLnRvcC09cGFyc2VGbG9hdChmLmNzcyhhLCJtYXJnaW5Ub3AiKSl8fDAsYy5sZWZ0LT1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpbkxlZnQiKSl8fDAsZC50b3ArPXBhcnNlRmxvYXQoZi5jc3MoYlswXSwiYm9yZGVyVG9wV2lkdGgiKSl8fDAsZC5sZWZ0Kz1wYXJzZUZsb2F0KGYuY3NzKGJbMF0sImJvcmRlckxlZnRXaWR0aCIpKXx8MDtyZXR1cm57dG9wOmMudG9wLWQudG9wLGxlZnQ6Yy5sZWZ0LWQubGVmdH19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjLmJvZHk7d2hpbGUoYSYmIWN4LnRlc3QoYS5ub2RlTmFtZSkmJmYuY3NzKGEsInBvc2l0aW9uIik9PT0ic3RhdGljIilhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfSl9fSksZi5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9uKGEsYyl7dmFyIGQ9InNjcm9sbCIrYztmLmZuW2RdPWZ1bmN0aW9uKGMpe3ZhciBlLGc7aWYoYz09PWIpe2U9dGhpc1swXTtpZighZSlyZXR1cm4gbnVsbDtnPWN5KGUpO3JldHVybiBnPyJwYWdlWE9mZnNldCJpbiBnP2dbYT8icGFnZVlPZmZzZXQiOiJwYWdlWE9mZnNldCJdOmYuc3VwcG9ydC5ib3hNb2RlbCYmZy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbZF18fGcuZG9jdW1lbnQuYm9keVtkXTplW2RdfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtnPWN5KHRoaXMpLGc/Zy5zY3JvbGxUbyhhP2YoZykuc2Nyb2xsTGVmdCgpOmMsYT9jOmYoZykuc2Nyb2xsVG9wKCkpOnRoaXNbZF09Y30pfX0pLGYuZWFjaChbIkhlaWdodCIsIldpZHRoIl0sZnVuY3Rpb24oYSxjKXt2YXIgZD1jLnRvTG93ZXJDYXNlKCk7Zi5mblsiaW5uZXIiK2NdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbMF0/cGFyc2VGbG9hdChmLmNzcyh0aGlzWzBdLGQsInBhZGRpbmciKSk6bnVsbH0sZi5mblsib3V0ZXIiK2NdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzWzBdP3BhcnNlRmxvYXQoZi5jc3ModGhpc1swXSxkLGE/Im1hcmdpbiI6ImJvcmRlciIpKTpudWxsfSxmLmZuW2RdPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXNbMF07aWYoIWUpcmV0dXJuIGE9PW51bGw/bnVsbDp0aGlzO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyk7Y1tkXShhLmNhbGwodGhpcyxiLGNbZF0oKSkpfSk7aWYoZi5pc1dpbmRvdyhlKSl7dmFyIGc9ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY107cmV0dXJuIGUuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZ3x8ZS5kb2N1bWVudC5ib2R5WyJjbGllbnQiK2NdfHxnfWlmKGUubm9kZVR5cGU9PT05KXJldHVybiBNYXRoLm1heChlLmRvY3VtZW50RWxlbWVudFsiY2xpZW50IitjXSxlLmJvZHlbInNjcm9sbCIrY10sZS5kb2N1bWVudEVsZW1lbnRbInNjcm9sbCIrY10sZS5ib2R5WyJvZmZzZXQiK2NdLGUuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK2NdKTtpZihhPT09Yil7dmFyIGg9Zi5jc3MoZSxkKSxpPXBhcnNlRmxvYXQoaCk7cmV0dXJuIGYuaXNOYU4oaSk/aDppfXJldHVybiB0aGlzLmNzcyhkLHR5cGVvZiBhPT0ic3RyaW5nIj9hOmErInB4Iil9fSksYS5qUXVlcnk9YS4kPWZ9KSh3aW5kb3cpOw==]]></data>
	</file>
	<file>
	  <filename>/js/jquery.validate.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpRdWVyeSBWYWxpZGF0aW9uIFBsdWdpbiAxLjguMAogKgogKiBodHRwOi8vYmFzc2lzdGFuY2UuZGUvanF1ZXJ5LXBsdWdpbnMvanF1ZXJ5LXBsdWdpbi12YWxpZGF0aW9uLwogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDExIErDtnJuIFphZWZmZXJlcgogKgogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlczoKICogICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocAogKiAgIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbAogKi8KCihmdW5jdGlvbigkKSB7CgokLmV4dGVuZCgkLmZuLCB7CgkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi92YWxpZGF0ZQoJdmFsaWRhdGU6IGZ1bmN0aW9uKCBvcHRpb25zICkgewoKCQkvLyBpZiBub3RoaW5nIGlzIHNlbGVjdGVkLCByZXR1cm4gbm90aGluZzsgY2FuJ3QgY2hhaW4gYW55d2F5CgkJaWYgKCF0aGlzLmxlbmd0aCkgewoJCQlvcHRpb25zICYmIG9wdGlvbnMuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKCAibm90aGluZyBzZWxlY3RlZCwgY2FuJ3QgdmFsaWRhdGUsIHJldHVybmluZyBub3RoaW5nIiApOwoJCQlyZXR1cm47CgkJfQoKCQkvLyBjaGVjayBpZiBhIHZhbGlkYXRvciBmb3IgdGhpcyBmb3JtIHdhcyBhbHJlYWR5IGNyZWF0ZWQKCQl2YXIgdmFsaWRhdG9yID0gJC5kYXRhKHRoaXNbMF0sICd2YWxpZGF0b3InKTsKCQlpZiAoIHZhbGlkYXRvciApIHsKCQkJcmV0dXJuIHZhbGlkYXRvcjsKCQl9CgoJCXZhbGlkYXRvciA9IG5ldyAkLnZhbGlkYXRvciggb3B0aW9ucywgdGhpc1swXSApOwoJCSQuZGF0YSh0aGlzWzBdLCAndmFsaWRhdG9yJywgdmFsaWRhdG9yKTsKCgkJaWYgKCB2YWxpZGF0b3Iuc2V0dGluZ3Mub25zdWJtaXQgKSB7CgoJCQkvLyBhbGxvdyBzdXBwcmVzaW5nIHZhbGlkYXRpb24gYnkgYWRkaW5nIGEgY2FuY2VsIGNsYXNzIHRvIHRoZSBzdWJtaXQgYnV0dG9uCgkJCXRoaXMuZmluZCgiaW5wdXQsIGJ1dHRvbiIpLmZpbHRlcigiLmNhbmNlbCIpLmNsaWNrKGZ1bmN0aW9uKCkgewoJCQkJdmFsaWRhdG9yLmNhbmNlbFN1Ym1pdCA9IHRydWU7CgkJCX0pOwoKCQkJLy8gd2hlbiBhIHN1Ym1pdEhhbmRsZXIgaXMgdXNlZCwgY2FwdHVyZSB0aGUgc3VibWl0dGluZyBidXR0b24KCQkJaWYgKHZhbGlkYXRvci5zZXR0aW5ncy5zdWJtaXRIYW5kbGVyKSB7CgkJCQl0aGlzLmZpbmQoImlucHV0LCBidXR0b24iKS5maWx0ZXIoIjpzdWJtaXQiKS5jbGljayhmdW5jdGlvbigpIHsKCQkJCQl2YWxpZGF0b3Iuc3VibWl0QnV0dG9uID0gdGhpczsKCQkJCX0pOwoJCQl9CgoJCQkvLyB2YWxpZGF0ZSB0aGUgZm9ybSBvbiBzdWJtaXQKCQkJdGhpcy5zdWJtaXQoIGZ1bmN0aW9uKCBldmVudCApIHsKCQkJCWlmICggdmFsaWRhdG9yLnNldHRpbmdzLmRlYnVnICkKCQkJCQkvLyBwcmV2ZW50IGZvcm0gc3VibWl0IHRvIGJlIGFibGUgdG8gc2VlIGNvbnNvbGUgb3V0cHV0CgkJCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKCgkJCQlmdW5jdGlvbiBoYW5kbGUoKSB7CgkJCQkJaWYgKCB2YWxpZGF0b3Iuc2V0dGluZ3Muc3VibWl0SGFuZGxlciApIHsKCQkJCQkJaWYgKHZhbGlkYXRvci5zdWJtaXRCdXR0b24pIHsKCQkJCQkJCS8vIGluc2VydCBhIGhpZGRlbiBpbnB1dCBhcyBhIHJlcGxhY2VtZW50IGZvciB0aGUgbWlzc2luZyBzdWJtaXQgYnV0dG9uCgkJCQkJCQl2YXIgaGlkZGVuID0gJCgiPGlucHV0IHR5cGU9J2hpZGRlbicvPiIpLmF0dHIoIm5hbWUiLCB2YWxpZGF0b3Iuc3VibWl0QnV0dG9uLm5hbWUpLnZhbCh2YWxpZGF0b3Iuc3VibWl0QnV0dG9uLnZhbHVlKS5hcHBlbmRUbyh2YWxpZGF0b3IuY3VycmVudEZvcm0pOwoJCQkJCQl9CgkJCQkJCXZhbGlkYXRvci5zZXR0aW5ncy5zdWJtaXRIYW5kbGVyLmNhbGwoIHZhbGlkYXRvciwgdmFsaWRhdG9yLmN1cnJlbnRGb3JtICk7CgkJCQkJCWlmICh2YWxpZGF0b3Iuc3VibWl0QnV0dG9uKSB7CgkJCQkJCQkvLyBhbmQgY2xlYW4gdXAgYWZ0ZXJ3YXJkczsgdGhhbmtzIHRvIG5vLWJsb2NrLXNjb3BlLCBoaWRkZW4gY2FuIGJlIHJlZmVyZW5jZWQKCQkJCQkJCWhpZGRlbi5yZW1vdmUoKTsKCQkJCQkJfQoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJfQoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoKCQkJCS8vIHByZXZlbnQgc3VibWl0IGZvciBpbnZhbGlkIGZvcm1zIG9yIGN1c3RvbSBzdWJtaXQgaGFuZGxlcnMKCQkJCWlmICggdmFsaWRhdG9yLmNhbmNlbFN1Ym1pdCApIHsKCQkJCQl2YWxpZGF0b3IuY2FuY2VsU3VibWl0ID0gZmFsc2U7CgkJCQkJcmV0dXJuIGhhbmRsZSgpOwoJCQkJfQoJCQkJaWYgKCB2YWxpZGF0b3IuZm9ybSgpICkgewoJCQkJCWlmICggdmFsaWRhdG9yLnBlbmRpbmdSZXF1ZXN0ICkgewoJCQkJCQl2YWxpZGF0b3IuZm9ybVN1Ym1pdHRlZCA9IHRydWU7CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQkJcmV0dXJuIGhhbmRsZSgpOwoJCQkJfSBlbHNlIHsKCQkJCQl2YWxpZGF0b3IuZm9jdXNJbnZhbGlkKCk7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9KTsKCQl9CgoJCXJldHVybiB2YWxpZGF0b3I7Cgl9LAoJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vdmFsaWQKCXZhbGlkOiBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoICQodGhpc1swXSkuaXMoJ2Zvcm0nKSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZSgpLmZvcm0oKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgdmFsaWQgPSB0cnVlOwogICAgICAgICAgICB2YXIgdmFsaWRhdG9yID0gJCh0aGlzWzBdLmZvcm0pLnZhbGlkYXRlKCk7CiAgICAgICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKCQkJCXZhbGlkICY9IHZhbGlkYXRvci5lbGVtZW50KHRoaXMpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIHZhbGlkOwogICAgICAgIH0KICAgIH0sCgkvLyBhdHRyaWJ1dGVzOiBzcGFjZSBzZXBlcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvIHJldHJpZXZlIGFuZCByZW1vdmUKCXJlbW92ZUF0dHJzOiBmdW5jdGlvbihhdHRyaWJ1dGVzKSB7CgkJdmFyIHJlc3VsdCA9IHt9LAoJCQkkZWxlbWVudCA9IHRoaXM7CgkJJC5lYWNoKGF0dHJpYnV0ZXMuc3BsaXQoL1xzLyksIGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkgewoJCQlyZXN1bHRbdmFsdWVdID0gJGVsZW1lbnQuYXR0cih2YWx1ZSk7CgkJCSRlbGVtZW50LnJlbW92ZUF0dHIodmFsdWUpOwoJCX0pOwoJCXJldHVybiByZXN1bHQ7Cgl9LAoJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vcnVsZXMKCXJ1bGVzOiBmdW5jdGlvbihjb21tYW5kLCBhcmd1bWVudCkgewoJCXZhciBlbGVtZW50ID0gdGhpc1swXTsKCgkJaWYgKGNvbW1hbmQpIHsKCQkJdmFyIHNldHRpbmdzID0gJC5kYXRhKGVsZW1lbnQuZm9ybSwgJ3ZhbGlkYXRvcicpLnNldHRpbmdzOwoJCQl2YXIgc3RhdGljUnVsZXMgPSBzZXR0aW5ncy5ydWxlczsKCQkJdmFyIGV4aXN0aW5nUnVsZXMgPSAkLnZhbGlkYXRvci5zdGF0aWNSdWxlcyhlbGVtZW50KTsKCQkJc3dpdGNoKGNvbW1hbmQpIHsKCQkJY2FzZSAiYWRkIjoKCQkJCSQuZXh0ZW5kKGV4aXN0aW5nUnVsZXMsICQudmFsaWRhdG9yLm5vcm1hbGl6ZVJ1bGUoYXJndW1lbnQpKTsKCQkJCXN0YXRpY1J1bGVzW2VsZW1lbnQubmFtZV0gPSBleGlzdGluZ1J1bGVzOwoJCQkJaWYgKGFyZ3VtZW50Lm1lc3NhZ2VzKQoJCQkJCXNldHRpbmdzLm1lc3NhZ2VzW2VsZW1lbnQubmFtZV0gPSAkLmV4dGVuZCggc2V0dGluZ3MubWVzc2FnZXNbZWxlbWVudC5uYW1lXSwgYXJndW1lbnQubWVzc2FnZXMgKTsKCQkJCWJyZWFrOwoJCQljYXNlICJyZW1vdmUiOgoJCQkJaWYgKCFhcmd1bWVudCkgewoJCQkJCWRlbGV0ZSBzdGF0aWNSdWxlc1tlbGVtZW50Lm5hbWVdOwoJCQkJCXJldHVybiBleGlzdGluZ1J1bGVzOwoJCQkJfQoJCQkJdmFyIGZpbHRlcmVkID0ge307CgkJCQkkLmVhY2goYXJndW1lbnQuc3BsaXQoL1xzLyksIGZ1bmN0aW9uKGluZGV4LCBtZXRob2QpIHsKCQkJCQlmaWx0ZXJlZFttZXRob2RdID0gZXhpc3RpbmdSdWxlc1ttZXRob2RdOwoJCQkJCWRlbGV0ZSBleGlzdGluZ1J1bGVzW21ldGhvZF07CgkJCQl9KTsKCQkJCXJldHVybiBmaWx0ZXJlZDsKCQkJfQoJCX0KCgkJdmFyIGRhdGEgPSAkLnZhbGlkYXRvci5ub3JtYWxpemVSdWxlcygKCQkkLmV4dGVuZCgKCQkJe30sCgkJCSQudmFsaWRhdG9yLm1ldGFkYXRhUnVsZXMoZWxlbWVudCksCgkJCSQudmFsaWRhdG9yLmNsYXNzUnVsZXMoZWxlbWVudCksCgkJCSQudmFsaWRhdG9yLmF0dHJpYnV0ZVJ1bGVzKGVsZW1lbnQpLAoJCQkkLnZhbGlkYXRvci5zdGF0aWNSdWxlcyhlbGVtZW50KQoJCSksIGVsZW1lbnQpOwoKCQkvLyBtYWtlIHN1cmUgcmVxdWlyZWQgaXMgYXQgZnJvbnQKCQlpZiAoZGF0YS5yZXF1aXJlZCkgewoJCQl2YXIgcGFyYW0gPSBkYXRhLnJlcXVpcmVkOwoJCQlkZWxldGUgZGF0YS5yZXF1aXJlZDsKCQkJZGF0YSA9ICQuZXh0ZW5kKHtyZXF1aXJlZDogcGFyYW19LCBkYXRhKTsKCQl9CgoJCXJldHVybiBkYXRhOwoJfQp9KTsKCi8vIEN1c3RvbSBzZWxlY3RvcnMKJC5leHRlbmQoJC5leHByWyI6Il0sIHsKCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL2JsYW5rCglibGFuazogZnVuY3Rpb24oYSkge3JldHVybiAhJC50cmltKCIiICsgYS52YWx1ZSk7fSwKCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL2ZpbGxlZAoJZmlsbGVkOiBmdW5jdGlvbihhKSB7cmV0dXJuICEhJC50cmltKCIiICsgYS52YWx1ZSk7fSwKCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL3VuY2hlY2tlZAoJdW5jaGVja2VkOiBmdW5jdGlvbihhKSB7cmV0dXJuICFhLmNoZWNrZWQ7fQp9KTsKCi8vIGNvbnN0cnVjdG9yIGZvciB2YWxpZGF0b3IKJC52YWxpZGF0b3IgPSBmdW5jdGlvbiggb3B0aW9ucywgZm9ybSApIHsKCXRoaXMuc2V0dGluZ3MgPSAkLmV4dGVuZCggdHJ1ZSwge30sICQudmFsaWRhdG9yLmRlZmF1bHRzLCBvcHRpb25zICk7Cgl0aGlzLmN1cnJlbnRGb3JtID0gZm9ybTsKCXRoaXMuaW5pdCgpOwp9OwoKJC52YWxpZGF0b3IuZm9ybWF0ID0gZnVuY3Rpb24oc291cmNlLCBwYXJhbXMpIHsKCWlmICggYXJndW1lbnRzLmxlbmd0aCA9PSAxICkKCQlyZXR1cm4gZnVuY3Rpb24oKSB7CgkJCXZhciBhcmdzID0gJC5tYWtlQXJyYXkoYXJndW1lbnRzKTsKCQkJYXJncy51bnNoaWZ0KHNvdXJjZSk7CgkJCXJldHVybiAkLnZhbGlkYXRvci5mb3JtYXQuYXBwbHkoIHRoaXMsIGFyZ3MgKTsKCQl9OwoJaWYgKCBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBwYXJhbXMuY29uc3RydWN0b3IgIT0gQXJyYXkgICkgewoJCXBhcmFtcyA9ICQubWFrZUFycmF5KGFyZ3VtZW50cykuc2xpY2UoMSk7Cgl9CglpZiAoIHBhcmFtcy5jb25zdHJ1Y3RvciAhPSBBcnJheSApIHsKCQlwYXJhbXMgPSBbIHBhcmFtcyBdOwoJfQoJJC5lYWNoKHBhcmFtcywgZnVuY3Rpb24oaSwgbikgewoJCXNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKG5ldyBSZWdFeHAoIlxceyIgKyBpICsgIlxcfSIsICJnIiksIG4pOwoJfSk7CglyZXR1cm4gc291cmNlOwp9OwoKJC5leHRlbmQoJC52YWxpZGF0b3IsIHsKCglkZWZhdWx0czogewoJCW1lc3NhZ2VzOiB7fSwKCQlncm91cHM6IHt9LAoJCXJ1bGVzOiB7fSwKCQllcnJvckNsYXNzOiAiZXJyb3IiLAoJCXZhbGlkQ2xhc3M6ICJ2YWxpZCIsCgkJZXJyb3JFbGVtZW50OiAibGFiZWwiLAoJCWZvY3VzSW52YWxpZDogdHJ1ZSwKCQllcnJvckNvbnRhaW5lcjogJCggW10gKSwKCQllcnJvckxhYmVsQ29udGFpbmVyOiAkKCBbXSApLAoJCW9uc3VibWl0OiB0cnVlLAoJCWlnbm9yZTogW10sCgkJaWdub3JlVGl0bGU6IGZhbHNlLAoJCW9uZm9jdXNpbjogZnVuY3Rpb24oZWxlbWVudCkgewoJCQl0aGlzLmxhc3RBY3RpdmUgPSBlbGVtZW50OwoKCQkJLy8gaGlkZSBlcnJvciBsYWJlbCBhbmQgcmVtb3ZlIGVycm9yIGNsYXNzIG9uIGZvY3VzIGlmIGVuYWJsZWQKCQkJaWYgKCB0aGlzLnNldHRpbmdzLmZvY3VzQ2xlYW51cCAmJiAhdGhpcy5ibG9ja0ZvY3VzQ2xlYW51cCApIHsKCQkJCXRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQgJiYgdGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodC5jYWxsKCB0aGlzLCBlbGVtZW50LCB0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MsIHRoaXMuc2V0dGluZ3MudmFsaWRDbGFzcyApOwoJCQkJdGhpcy5hZGRXcmFwcGVyKHRoaXMuZXJyb3JzRm9yKGVsZW1lbnQpKS5oaWRlKCk7CgkJCX0KCQl9LAoJCW9uZm9jdXNvdXQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQkJaWYgKCAhdGhpcy5jaGVja2FibGUoZWxlbWVudCkgJiYgKGVsZW1lbnQubmFtZSBpbiB0aGlzLnN1Ym1pdHRlZCB8fCAhdGhpcy5vcHRpb25hbChlbGVtZW50KSkgKSB7CgkJCQl0aGlzLmVsZW1lbnQoZWxlbWVudCk7CgkJCX0KCQl9LAoJCW9ua2V5dXA6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQkJaWYgKCBlbGVtZW50Lm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWQgfHwgZWxlbWVudCA9PSB0aGlzLmxhc3RFbGVtZW50ICkgewoJCQkJdGhpcy5lbGVtZW50KGVsZW1lbnQpOwoJCQl9CgkJfSwKCQlvbmNsaWNrOiBmdW5jdGlvbihlbGVtZW50KSB7CgkJCS8vIGNsaWNrIG9uIHNlbGVjdHMsIHJhZGlvYnV0dG9ucyBhbmQgY2hlY2tib3hlcwoJCQlpZiAoIGVsZW1lbnQubmFtZSBpbiB0aGlzLnN1Ym1pdHRlZCApCgkJCQl0aGlzLmVsZW1lbnQoZWxlbWVudCk7CgkJCS8vIG9yIG9wdGlvbiBlbGVtZW50cywgY2hlY2sgcGFyZW50IHNlbGVjdCBpbiB0aGF0IGNhc2UKCQkJZWxzZSBpZiAoZWxlbWVudC5wYXJlbnROb2RlLm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWQpCgkJCQl0aGlzLmVsZW1lbnQoZWxlbWVudC5wYXJlbnROb2RlKTsKCQl9LAoJCWhpZ2hsaWdodDogZnVuY3Rpb24oIGVsZW1lbnQsIGVycm9yQ2xhc3MsIHZhbGlkQ2xhc3MgKSB7CgkJCSQoZWxlbWVudCkuYWRkQ2xhc3MoZXJyb3JDbGFzcykucmVtb3ZlQ2xhc3ModmFsaWRDbGFzcyk7CgkJfSwKCQl1bmhpZ2hsaWdodDogZnVuY3Rpb24oIGVsZW1lbnQsIGVycm9yQ2xhc3MsIHZhbGlkQ2xhc3MgKSB7CgkJCSQoZWxlbWVudCkucmVtb3ZlQ2xhc3MoZXJyb3JDbGFzcykuYWRkQ2xhc3ModmFsaWRDbGFzcyk7CgkJfQoJfSwKCgkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9WYWxpZGF0b3Ivc2V0RGVmYXVsdHMKCXNldERlZmF1bHRzOiBmdW5jdGlvbihzZXR0aW5ncykgewoJCSQuZXh0ZW5kKCAkLnZhbGlkYXRvci5kZWZhdWx0cywgc2V0dGluZ3MgKTsKCX0sCgoJbWVzc2FnZXM6IHsKCQlyZXF1aXJlZDogIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIiwKCQlyZW1vdGU6ICJQbGVhc2UgZml4IHRoaXMgZmllbGQuIiwKCQllbWFpbDogIlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuIiwKCQl1cmw6ICJQbGVhc2UgZW50ZXIgYSB2YWxpZCBVUkwuIiwKCQlkYXRlOiAiUGxlYXNlIGVudGVyIGEgdmFsaWQgZGF0ZS4iLAoJCWRhdGVJU086ICJQbGVhc2UgZW50ZXIgYSB2YWxpZCBkYXRlIChJU08pLiIsCgkJbnVtYmVyOiAiUGxlYXNlIGVudGVyIGEgdmFsaWQgbnVtYmVyLiIsCgkJZGlnaXRzOiAiUGxlYXNlIGVudGVyIG9ubHkgZGlnaXRzLiIsCgkJY3JlZGl0Y2FyZDogIlBsZWFzZSBlbnRlciBhIHZhbGlkIGNyZWRpdCBjYXJkIG51bWJlci4iLAoJCWVxdWFsVG86ICJQbGVhc2UgZW50ZXIgdGhlIHNhbWUgdmFsdWUgYWdhaW4uIiwKCQlhY2NlcHQ6ICJQbGVhc2UgZW50ZXIgYSB2YWx1ZSB3aXRoIGEgdmFsaWQgZXh0ZW5zaW9uLiIsCgkJbWF4bGVuZ3RoOiAkLnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBubyBtb3JlIHRoYW4gezB9IGNoYXJhY3RlcnMuIiksCgkJbWlubGVuZ3RoOiAkLnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBhdCBsZWFzdCB7MH0gY2hhcmFjdGVycy4iKSwKCQlyYW5nZWxlbmd0aDogJC52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuIHswfSBhbmQgezF9IGNoYXJhY3RlcnMgbG9uZy4iKSwKCQlyYW5nZTogJC52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuIHswfSBhbmQgezF9LiIpLAoJCW1heDogJC52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gezB9LiIpLAoJCW1pbjogJC52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gezB9LiIpCgl9LAoKCWF1dG9DcmVhdGVSYW5nZXM6IGZhbHNlLAoKCXByb3RvdHlwZTogewoKCQlpbml0OiBmdW5jdGlvbigpIHsKCQkJdGhpcy5sYWJlbENvbnRhaW5lciA9ICQodGhpcy5zZXR0aW5ncy5lcnJvckxhYmVsQ29udGFpbmVyKTsKCQkJdGhpcy5lcnJvckNvbnRleHQgPSB0aGlzLmxhYmVsQ29udGFpbmVyLmxlbmd0aCAmJiB0aGlzLmxhYmVsQ29udGFpbmVyIHx8ICQodGhpcy5jdXJyZW50Rm9ybSk7CgkJCXRoaXMuY29udGFpbmVycyA9ICQodGhpcy5zZXR0aW5ncy5lcnJvckNvbnRhaW5lcikuYWRkKCB0aGlzLnNldHRpbmdzLmVycm9yTGFiZWxDb250YWluZXIgKTsKCQkJdGhpcy5zdWJtaXR0ZWQgPSB7fTsKCQkJdGhpcy52YWx1ZUNhY2hlID0ge307CgkJCXRoaXMucGVuZGluZ1JlcXVlc3QgPSAwOwoJCQl0aGlzLnBlbmRpbmcgPSB7fTsKCQkJdGhpcy5pbnZhbGlkID0ge307CgkJCXRoaXMucmVzZXQoKTsKCgkJCXZhciBncm91cHMgPSAodGhpcy5ncm91cHMgPSB7fSk7CgkJCSQuZWFjaCh0aGlzLnNldHRpbmdzLmdyb3VwcywgZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewoJCQkJJC5lYWNoKHZhbHVlLnNwbGl0KC9ccy8pLCBmdW5jdGlvbihpbmRleCwgbmFtZSkgewoJCQkJCWdyb3Vwc1tuYW1lXSA9IGtleTsKCQkJCX0pOwoJCQl9KTsKCQkJdmFyIHJ1bGVzID0gdGhpcy5zZXR0aW5ncy5ydWxlczsKCQkJJC5lYWNoKHJ1bGVzLCBmdW5jdGlvbihrZXksIHZhbHVlKSB7CgkJCQlydWxlc1trZXldID0gJC52YWxpZGF0b3Iubm9ybWFsaXplUnVsZSh2YWx1ZSk7CgkJCX0pOwoKCQkJZnVuY3Rpb24gZGVsZWdhdGUoZXZlbnQpIHsKCQkJCXZhciB2YWxpZGF0b3IgPSAkLmRhdGEodGhpc1swXS5mb3JtLCAidmFsaWRhdG9yIiksCgkJCQkJZXZlbnRUeXBlID0gIm9uIiArIGV2ZW50LnR5cGUucmVwbGFjZSgvXnZhbGlkYXRlLywgIiIpOwoJCQkJdmFsaWRhdG9yLnNldHRpbmdzW2V2ZW50VHlwZV0gJiYgdmFsaWRhdG9yLnNldHRpbmdzW2V2ZW50VHlwZV0uY2FsbCh2YWxpZGF0b3IsIHRoaXNbMF0gKTsKCQkJfQoJCQkkKHRoaXMuY3VycmVudEZvcm0pCgkJCQkudmFsaWRhdGVEZWxlZ2F0ZSgiOnRleHQsIDpwYXNzd29yZCwgOmZpbGUsIHNlbGVjdCwgdGV4dGFyZWEiLCAiZm9jdXNpbiBmb2N1c291dCBrZXl1cCIsIGRlbGVnYXRlKQoJCQkJLnZhbGlkYXRlRGVsZWdhdGUoIjpyYWRpbywgOmNoZWNrYm94LCBzZWxlY3QsIG9wdGlvbiIsICJjbGljayIsIGRlbGVnYXRlKTsKCgkJCWlmICh0aGlzLnNldHRpbmdzLmludmFsaWRIYW5kbGVyKQoJCQkJJCh0aGlzLmN1cnJlbnRGb3JtKS5iaW5kKCJpbnZhbGlkLWZvcm0udmFsaWRhdGUiLCB0aGlzLnNldHRpbmdzLmludmFsaWRIYW5kbGVyKTsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9WYWxpZGF0b3IvZm9ybQoJCWZvcm06IGZ1bmN0aW9uKCkgewoJCQl0aGlzLmNoZWNrRm9ybSgpOwoJCQkkLmV4dGVuZCh0aGlzLnN1Ym1pdHRlZCwgdGhpcy5lcnJvck1hcCk7CgkJCXRoaXMuaW52YWxpZCA9ICQuZXh0ZW5kKHt9LCB0aGlzLmVycm9yTWFwKTsKCQkJaWYgKCF0aGlzLnZhbGlkKCkpCgkJCQkkKHRoaXMuY3VycmVudEZvcm0pLnRyaWdnZXJIYW5kbGVyKCJpbnZhbGlkLWZvcm0iLCBbdGhpc10pOwoJCQl0aGlzLnNob3dFcnJvcnMoKTsKCQkJcmV0dXJuIHRoaXMudmFsaWQoKTsKCQl9LAoKCQljaGVja0Zvcm06IGZ1bmN0aW9uKCkgewoJCQl0aGlzLnByZXBhcmVGb3JtKCk7CgkJCWZvciAoIHZhciBpID0gMCwgZWxlbWVudHMgPSAodGhpcy5jdXJyZW50RWxlbWVudHMgPSB0aGlzLmVsZW1lbnRzKCkpOyBlbGVtZW50c1tpXTsgaSsrICkgewoJCQkJdGhpcy5jaGVjayggZWxlbWVudHNbaV0gKTsKCQkJfQoJCQlyZXR1cm4gdGhpcy52YWxpZCgpOwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL1ZhbGlkYXRvci9lbGVtZW50CgkJZWxlbWVudDogZnVuY3Rpb24oIGVsZW1lbnQgKSB7CgkJCWVsZW1lbnQgPSB0aGlzLmNsZWFuKCBlbGVtZW50ICk7CgkJCXRoaXMubGFzdEVsZW1lbnQgPSBlbGVtZW50OwoJCQl0aGlzLnByZXBhcmVFbGVtZW50KCBlbGVtZW50ICk7CgkJCXRoaXMuY3VycmVudEVsZW1lbnRzID0gJChlbGVtZW50KTsKCQkJdmFyIHJlc3VsdCA9IHRoaXMuY2hlY2soIGVsZW1lbnQgKTsKCQkJaWYgKCByZXN1bHQgKSB7CgkJCQlkZWxldGUgdGhpcy5pbnZhbGlkW2VsZW1lbnQubmFtZV07CgkJCX0gZWxzZSB7CgkJCQl0aGlzLmludmFsaWRbZWxlbWVudC5uYW1lXSA9IHRydWU7CgkJCX0KCQkJaWYgKCAhdGhpcy5udW1iZXJPZkludmFsaWRzKCkgKSB7CgkJCQkvLyBIaWRlIGVycm9yIGNvbnRhaW5lcnMgb24gbGFzdCBlcnJvcgoJCQkJdGhpcy50b0hpZGUgPSB0aGlzLnRvSGlkZS5hZGQoIHRoaXMuY29udGFpbmVycyApOwoJCQl9CgkJCXRoaXMuc2hvd0Vycm9ycygpOwoJCQlyZXR1cm4gcmVzdWx0OwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL1ZhbGlkYXRvci9zaG93RXJyb3JzCgkJc2hvd0Vycm9yczogZnVuY3Rpb24oZXJyb3JzKSB7CgkJCWlmKGVycm9ycykgewoJCQkJLy8gYWRkIGl0ZW1zIHRvIGVycm9yIGxpc3QgYW5kIG1hcAoJCQkJJC5leHRlbmQoIHRoaXMuZXJyb3JNYXAsIGVycm9ycyApOwoJCQkJdGhpcy5lcnJvckxpc3QgPSBbXTsKCQkJCWZvciAoIHZhciBuYW1lIGluIGVycm9ycyApIHsKCQkJCQl0aGlzLmVycm9yTGlzdC5wdXNoKHsKCQkJCQkJbWVzc2FnZTogZXJyb3JzW25hbWVdLAoJCQkJCQllbGVtZW50OiB0aGlzLmZpbmRCeU5hbWUobmFtZSlbMF0KCQkJCQl9KTsKCQkJCX0KCQkJCS8vIHJlbW92ZSBpdGVtcyBmcm9tIHN1Y2Nlc3MgbGlzdAoJCQkJdGhpcy5zdWNjZXNzTGlzdCA9ICQuZ3JlcCggdGhpcy5zdWNjZXNzTGlzdCwgZnVuY3Rpb24oZWxlbWVudCkgewoJCQkJCXJldHVybiAhKGVsZW1lbnQubmFtZSBpbiBlcnJvcnMpOwoJCQkJfSk7CgkJCX0KCQkJdGhpcy5zZXR0aW5ncy5zaG93RXJyb3JzCgkJCQk/IHRoaXMuc2V0dGluZ3Muc2hvd0Vycm9ycy5jYWxsKCB0aGlzLCB0aGlzLmVycm9yTWFwLCB0aGlzLmVycm9yTGlzdCApCgkJCQk6IHRoaXMuZGVmYXVsdFNob3dFcnJvcnMoKTsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9WYWxpZGF0b3IvcmVzZXRGb3JtCgkJcmVzZXRGb3JtOiBmdW5jdGlvbigpIHsKCQkJaWYgKCAkLmZuLnJlc2V0Rm9ybSApCgkJCQkkKCB0aGlzLmN1cnJlbnRGb3JtICkucmVzZXRGb3JtKCk7CgkJCXRoaXMuc3VibWl0dGVkID0ge307CgkJCXRoaXMucHJlcGFyZUZvcm0oKTsKCQkJdGhpcy5oaWRlRXJyb3JzKCk7CgkJCXRoaXMuZWxlbWVudHMoKS5yZW1vdmVDbGFzcyggdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzICk7CgkJfSwKCgkJbnVtYmVyT2ZJbnZhbGlkczogZnVuY3Rpb24oKSB7CgkJCXJldHVybiB0aGlzLm9iamVjdExlbmd0aCh0aGlzLmludmFsaWQpOwoJCX0sCgoJCW9iamVjdExlbmd0aDogZnVuY3Rpb24oIG9iaiApIHsKCQkJdmFyIGNvdW50ID0gMDsKCQkJZm9yICggdmFyIGkgaW4gb2JqICkKCQkJCWNvdW50Kys7CgkJCXJldHVybiBjb3VudDsKCQl9LAoKCQloaWRlRXJyb3JzOiBmdW5jdGlvbigpIHsKCQkJdGhpcy5hZGRXcmFwcGVyKCB0aGlzLnRvSGlkZSApLmhpZGUoKTsKCQl9LAoKCQl2YWxpZDogZnVuY3Rpb24oKSB7CgkJCXJldHVybiB0aGlzLnNpemUoKSA9PSAwOwoJCX0sCgoJCXNpemU6IGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gdGhpcy5lcnJvckxpc3QubGVuZ3RoOwoJCX0sCgoJCWZvY3VzSW52YWxpZDogZnVuY3Rpb24oKSB7CgkJCWlmKCB0aGlzLnNldHRpbmdzLmZvY3VzSW52YWxpZCApIHsKCQkJCXRyeSB7CgkJCQkJJCh0aGlzLmZpbmRMYXN0QWN0aXZlKCkgfHwgdGhpcy5lcnJvckxpc3QubGVuZ3RoICYmIHRoaXMuZXJyb3JMaXN0WzBdLmVsZW1lbnQgfHwgW10pCgkJCQkJLmZpbHRlcigiOnZpc2libGUiKQoJCQkJCS5mb2N1cygpCgkJCQkJLy8gbWFudWFsbHkgdHJpZ2dlciBmb2N1c2luIGV2ZW50OyB3aXRob3V0IGl0LCBmb2N1c2luIGhhbmRsZXIgaXNuJ3QgY2FsbGVkLCBmaW5kTGFzdEFjdGl2ZSB3b24ndCBoYXZlIGFueXRoaW5nIHRvIGZpbmQKCQkJCQkudHJpZ2dlcigiZm9jdXNpbiIpOwoJCQkJfSBjYXRjaChlKSB7CgkJCQkJLy8gaWdub3JlIElFIHRocm93aW5nIGVycm9ycyB3aGVuIGZvY3VzaW5nIGhpZGRlbiBlbGVtZW50cwoJCQkJfQoJCQl9CgkJfSwKCgkJZmluZExhc3RBY3RpdmU6IGZ1bmN0aW9uKCkgewoJCQl2YXIgbGFzdEFjdGl2ZSA9IHRoaXMubGFzdEFjdGl2ZTsKCQkJcmV0dXJuIGxhc3RBY3RpdmUgJiYgJC5ncmVwKHRoaXMuZXJyb3JMaXN0LCBmdW5jdGlvbihuKSB7CgkJCQlyZXR1cm4gbi5lbGVtZW50Lm5hbWUgPT0gbGFzdEFjdGl2ZS5uYW1lOwoJCQl9KS5sZW5ndGggPT0gMSAmJiBsYXN0QWN0aXZlOwoJCX0sCgoJCWVsZW1lbnRzOiBmdW5jdGlvbigpIHsKCQkJdmFyIHZhbGlkYXRvciA9IHRoaXMsCgkJCQlydWxlc0NhY2hlID0ge307CgoJCQkvLyBzZWxlY3QgYWxsIHZhbGlkIGlucHV0cyBpbnNpZGUgdGhlIGZvcm0gKG5vIHN1Ym1pdCBvciByZXNldCBidXR0b25zKQoJCQkvLyB3b3JrYXJvdW5kICRRdWVyeShbXSkuYWRkIHVudGlsIGh0dHA6Ly9kZXYuanF1ZXJ5LmNvbS90aWNrZXQvMjExNCBpcyBzb2x2ZWQKCQkJcmV0dXJuICQoW10pLmFkZCh0aGlzLmN1cnJlbnRGb3JtLmVsZW1lbnRzKQoJCQkuZmlsdGVyKCI6aW5wdXQiKQoJCQkubm90KCI6c3VibWl0LCA6cmVzZXQsIDppbWFnZSwgW2Rpc2FibGVkXSIpCgkJCS5ub3QoIHRoaXMuc2V0dGluZ3MuaWdub3JlICkKCQkJLmZpbHRlcihmdW5jdGlvbigpIHsKCQkJCSF0aGlzLm5hbWUgJiYgdmFsaWRhdG9yLnNldHRpbmdzLmRlYnVnICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUuZXJyb3IoICIlbyBoYXMgbm8gbmFtZSBhc3NpZ25lZCIsIHRoaXMpOwoKCQkJCS8vIHNlbGVjdCBvbmx5IHRoZSBmaXJzdCBlbGVtZW50IGZvciBlYWNoIG5hbWUsIGFuZCBvbmx5IHRob3NlIHdpdGggcnVsZXMgc3BlY2lmaWVkCgkJCQlpZiAoIHRoaXMubmFtZSBpbiBydWxlc0NhY2hlIHx8ICF2YWxpZGF0b3Iub2JqZWN0TGVuZ3RoKCQodGhpcykucnVsZXMoKSkgKQoJCQkJCXJldHVybiBmYWxzZTsKCgkJCQlydWxlc0NhY2hlW3RoaXMubmFtZV0gPSB0cnVlOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0pOwoJCX0sCgoJCWNsZWFuOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CgkJCXJldHVybiAkKCBzZWxlY3RvciApWzBdOwoJCX0sCgoJCWVycm9yczogZnVuY3Rpb24oKSB7CgkJCXJldHVybiAkKCB0aGlzLnNldHRpbmdzLmVycm9yRWxlbWVudCArICIuIiArIHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcywgdGhpcy5lcnJvckNvbnRleHQgKTsKCQl9LAoKCQlyZXNldDogZnVuY3Rpb24oKSB7CgkJCXRoaXMuc3VjY2Vzc0xpc3QgPSBbXTsKCQkJdGhpcy5lcnJvckxpc3QgPSBbXTsKCQkJdGhpcy5lcnJvck1hcCA9IHt9OwoJCQl0aGlzLnRvU2hvdyA9ICQoW10pOwoJCQl0aGlzLnRvSGlkZSA9ICQoW10pOwoJCQl0aGlzLmN1cnJlbnRFbGVtZW50cyA9ICQoW10pOwoJCX0sCgoJCXByZXBhcmVGb3JtOiBmdW5jdGlvbigpIHsKCQkJdGhpcy5yZXNldCgpOwoJCQl0aGlzLnRvSGlkZSA9IHRoaXMuZXJyb3JzKCkuYWRkKCB0aGlzLmNvbnRhaW5lcnMgKTsKCQl9LAoKCQlwcmVwYXJlRWxlbWVudDogZnVuY3Rpb24oIGVsZW1lbnQgKSB7CgkJCXRoaXMucmVzZXQoKTsKCQkJdGhpcy50b0hpZGUgPSB0aGlzLmVycm9yc0ZvcihlbGVtZW50KTsKCQl9LAoKCQljaGVjazogZnVuY3Rpb24oIGVsZW1lbnQgKSB7CgkJCWVsZW1lbnQgPSB0aGlzLmNsZWFuKCBlbGVtZW50ICk7CgoJCQkvLyBpZiByYWRpby9jaGVja2JveCwgdmFsaWRhdGUgZmlyc3QgZWxlbWVudCBpbiBncm91cCBpbnN0ZWFkCgkJCWlmICh0aGlzLmNoZWNrYWJsZShlbGVtZW50KSkgewoJCQkJZWxlbWVudCA9IHRoaXMuZmluZEJ5TmFtZSggZWxlbWVudC5uYW1lICkubm90KHRoaXMuc2V0dGluZ3MuaWdub3JlKVswXTsKCQkJfQoKCQkJdmFyIHJ1bGVzID0gJChlbGVtZW50KS5ydWxlcygpOwoJCQl2YXIgZGVwZW5kZW5jeU1pc21hdGNoID0gZmFsc2U7CgkJCWZvciAodmFyIG1ldGhvZCBpbiBydWxlcyApIHsKCQkJCXZhciBydWxlID0geyBtZXRob2Q6IG1ldGhvZCwgcGFyYW1ldGVyczogcnVsZXNbbWV0aG9kXSB9OwoJCQkJdHJ5IHsKCQkJCQl2YXIgcmVzdWx0ID0gJC52YWxpZGF0b3IubWV0aG9kc1ttZXRob2RdLmNhbGwoIHRoaXMsIGVsZW1lbnQudmFsdWUucmVwbGFjZSgvXHIvZywgIiIpLCBlbGVtZW50LCBydWxlLnBhcmFtZXRlcnMgKTsKCgkJCQkJLy8gaWYgYSBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIGZpZWxkIGlzIG9wdGlvbmFsIGFuZCB0aGVyZWZvcmUgdmFsaWQsCgkJCQkJLy8gZG9uJ3QgbWFyayBpdCBhcyB2YWxpZCB3aGVuIHRoZXJlIGFyZSBubyBvdGhlciBydWxlcwoJCQkJCWlmICggcmVzdWx0ID09ICJkZXBlbmRlbmN5LW1pc21hdGNoIiApIHsKCQkJCQkJZGVwZW5kZW5jeU1pc21hdGNoID0gdHJ1ZTsKCQkJCQkJY29udGludWU7CgkJCQkJfQoJCQkJCWRlcGVuZGVuY3lNaXNtYXRjaCA9IGZhbHNlOwoKCQkJCQlpZiAoIHJlc3VsdCA9PSAicGVuZGluZyIgKSB7CgkJCQkJCXRoaXMudG9IaWRlID0gdGhpcy50b0hpZGUubm90KCB0aGlzLmVycm9yc0ZvcihlbGVtZW50KSApOwoJCQkJCQlyZXR1cm47CgkJCQkJfQoKCQkJCQlpZiggIXJlc3VsdCApIHsKCQkJCQkJdGhpcy5mb3JtYXRBbmRBZGQoIGVsZW1lbnQsIHJ1bGUgKTsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCX0gY2F0Y2goZSkgewoJCQkJCXRoaXMuc2V0dGluZ3MuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS5sb2coImV4Y2VwdGlvbiBvY2N1cmVkIHdoZW4gY2hlY2tpbmcgZWxlbWVudCAiICsgZWxlbWVudC5pZAoJCQkJCQkgKyAiLCBjaGVjayB0aGUgJyIgKyBydWxlLm1ldGhvZCArICInIG1ldGhvZCIsIGUpOwoJCQkJCXRocm93IGU7CgkJCQl9CgkJCX0KCQkJaWYgKGRlcGVuZGVuY3lNaXNtYXRjaCkKCQkJCXJldHVybjsKCQkJaWYgKCB0aGlzLm9iamVjdExlbmd0aChydWxlcykgKQoJCQkJdGhpcy5zdWNjZXNzTGlzdC5wdXNoKGVsZW1lbnQpOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9LAoKCQkvLyByZXR1cm4gdGhlIGN1c3RvbSBtZXNzYWdlIGZvciB0aGUgZ2l2ZW4gZWxlbWVudCBhbmQgdmFsaWRhdGlvbiBtZXRob2QKCQkvLyBzcGVjaWZpZWQgaW4gdGhlIGVsZW1lbnQncyAibWVzc2FnZXMiIG1ldGFkYXRhCgkJY3VzdG9tTWV0YU1lc3NhZ2U6IGZ1bmN0aW9uKGVsZW1lbnQsIG1ldGhvZCkgewoJCQlpZiAoISQubWV0YWRhdGEpCgkJCQlyZXR1cm47CgoJCQl2YXIgbWV0YSA9IHRoaXMuc2V0dGluZ3MubWV0YQoJCQkJPyAkKGVsZW1lbnQpLm1ldGFkYXRhKClbdGhpcy5zZXR0aW5ncy5tZXRhXQoJCQkJOiAkKGVsZW1lbnQpLm1ldGFkYXRhKCk7CgoJCQlyZXR1cm4gbWV0YSAmJiBtZXRhLm1lc3NhZ2VzICYmIG1ldGEubWVzc2FnZXNbbWV0aG9kXTsKCQl9LAoKCQkvLyByZXR1cm4gdGhlIGN1c3RvbSBtZXNzYWdlIGZvciB0aGUgZ2l2ZW4gZWxlbWVudCBuYW1lIGFuZCB2YWxpZGF0aW9uIG1ldGhvZAoJCWN1c3RvbU1lc3NhZ2U6IGZ1bmN0aW9uKCBuYW1lLCBtZXRob2QgKSB7CgkJCXZhciBtID0gdGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tuYW1lXTsKCQkJcmV0dXJuIG0gJiYgKG0uY29uc3RydWN0b3IgPT0gU3RyaW5nCgkJCQk/IG0KCQkJCTogbVttZXRob2RdKTsKCQl9LAoKCQkvLyByZXR1cm4gdGhlIGZpcnN0IGRlZmluZWQgYXJndW1lbnQsIGFsbG93aW5nIGVtcHR5IHN0cmluZ3MKCQlmaW5kRGVmaW5lZDogZnVuY3Rpb24oKSB7CgkJCWZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKCQkJCWlmIChhcmd1bWVudHNbaV0gIT09IHVuZGVmaW5lZCkKCQkJCQlyZXR1cm4gYXJndW1lbnRzW2ldOwoJCQl9CgkJCXJldHVybiB1bmRlZmluZWQ7CgkJfSwKCgkJZGVmYXVsdE1lc3NhZ2U6IGZ1bmN0aW9uKCBlbGVtZW50LCBtZXRob2QpIHsKCQkJcmV0dXJuIHRoaXMuZmluZERlZmluZWQoCgkJCQl0aGlzLmN1c3RvbU1lc3NhZ2UoIGVsZW1lbnQubmFtZSwgbWV0aG9kICksCgkJCQl0aGlzLmN1c3RvbU1ldGFNZXNzYWdlKCBlbGVtZW50LCBtZXRob2QgKSwKCQkJCS8vIHRpdGxlIGlzIG5ldmVyIHVuZGVmaW5lZCwgc28gaGFuZGxlIGVtcHR5IHN0cmluZyBhcyB1bmRlZmluZWQKCQkJCSF0aGlzLnNldHRpbmdzLmlnbm9yZVRpdGxlICYmIGVsZW1lbnQudGl0bGUgfHwgdW5kZWZpbmVkLAoJCQkJJC52YWxpZGF0b3IubWVzc2FnZXNbbWV0aG9kXSwKCQkJCSI8c3Ryb25nPldhcm5pbmc6IE5vIG1lc3NhZ2UgZGVmaW5lZCBmb3IgIiArIGVsZW1lbnQubmFtZSArICI8L3N0cm9uZz4iCgkJCSk7CgkJfSwKCgkJZm9ybWF0QW5kQWRkOiBmdW5jdGlvbiggZWxlbWVudCwgcnVsZSApIHsKCQkJdmFyIG1lc3NhZ2UgPSB0aGlzLmRlZmF1bHRNZXNzYWdlKCBlbGVtZW50LCBydWxlLm1ldGhvZCApLAoJCQkJdGhlcmVnZXggPSAvXCQ/XHsoXGQrKVx9L2c7CgkJCWlmICggdHlwZW9mIG1lc3NhZ2UgPT0gImZ1bmN0aW9uIiApIHsKCQkJCW1lc3NhZ2UgPSBtZXNzYWdlLmNhbGwodGhpcywgcnVsZS5wYXJhbWV0ZXJzLCBlbGVtZW50KTsKCQkJfSBlbHNlIGlmICh0aGVyZWdleC50ZXN0KG1lc3NhZ2UpKSB7CgkJCQltZXNzYWdlID0galF1ZXJ5LmZvcm1hdChtZXNzYWdlLnJlcGxhY2UodGhlcmVnZXgsICd7JDF9JyksIHJ1bGUucGFyYW1ldGVycyk7CgkJCX0KCQkJdGhpcy5lcnJvckxpc3QucHVzaCh7CgkJCQltZXNzYWdlOiBtZXNzYWdlLAoJCQkJZWxlbWVudDogZWxlbWVudAoJCQl9KTsKCgkJCXRoaXMuZXJyb3JNYXBbZWxlbWVudC5uYW1lXSA9IG1lc3NhZ2U7CgkJCXRoaXMuc3VibWl0dGVkW2VsZW1lbnQubmFtZV0gPSBtZXNzYWdlOwoJCX0sCgoJCWFkZFdyYXBwZXI6IGZ1bmN0aW9uKHRvVG9nZ2xlKSB7CgkJCWlmICggdGhpcy5zZXR0aW5ncy53cmFwcGVyICkKCQkJCXRvVG9nZ2xlID0gdG9Ub2dnbGUuYWRkKCB0b1RvZ2dsZS5wYXJlbnQoIHRoaXMuc2V0dGluZ3Mud3JhcHBlciApICk7CgkJCXJldHVybiB0b1RvZ2dsZTsKCQl9LAoKCQlkZWZhdWx0U2hvd0Vycm9yczogZnVuY3Rpb24oKSB7CgkJCWZvciAoIHZhciBpID0gMDsgdGhpcy5lcnJvckxpc3RbaV07IGkrKyApIHsKCQkJCXZhciBlcnJvciA9IHRoaXMuZXJyb3JMaXN0W2ldOwoJCQkJdGhpcy5zZXR0aW5ncy5oaWdobGlnaHQgJiYgdGhpcy5zZXR0aW5ncy5oaWdobGlnaHQuY2FsbCggdGhpcywgZXJyb3IuZWxlbWVudCwgdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLCB0aGlzLnNldHRpbmdzLnZhbGlkQ2xhc3MgKTsKCQkJCXRoaXMuc2hvd0xhYmVsKCBlcnJvci5lbGVtZW50LCBlcnJvci5tZXNzYWdlICk7CgkJCX0KCQkJaWYoIHRoaXMuZXJyb3JMaXN0Lmxlbmd0aCApIHsKCQkJCXRoaXMudG9TaG93ID0gdGhpcy50b1Nob3cuYWRkKCB0aGlzLmNvbnRhaW5lcnMgKTsKCQkJfQoJCQlpZiAodGhpcy5zZXR0aW5ncy5zdWNjZXNzKSB7CgkJCQlmb3IgKCB2YXIgaSA9IDA7IHRoaXMuc3VjY2Vzc0xpc3RbaV07IGkrKyApIHsKCQkJCQl0aGlzLnNob3dMYWJlbCggdGhpcy5zdWNjZXNzTGlzdFtpXSApOwoJCQkJfQoJCQl9CgkJCWlmICh0aGlzLnNldHRpbmdzLnVuaGlnaGxpZ2h0KSB7CgkJCQlmb3IgKCB2YXIgaSA9IDAsIGVsZW1lbnRzID0gdGhpcy52YWxpZEVsZW1lbnRzKCk7IGVsZW1lbnRzW2ldOyBpKysgKSB7CgkJCQkJdGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodC5jYWxsKCB0aGlzLCBlbGVtZW50c1tpXSwgdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLCB0aGlzLnNldHRpbmdzLnZhbGlkQ2xhc3MgKTsKCQkJCX0KCQkJfQoJCQl0aGlzLnRvSGlkZSA9IHRoaXMudG9IaWRlLm5vdCggdGhpcy50b1Nob3cgKTsKCQkJdGhpcy5oaWRlRXJyb3JzKCk7CgkJCXRoaXMuYWRkV3JhcHBlciggdGhpcy50b1Nob3cgKS5zaG93KCk7CgkJfSwKCgkJdmFsaWRFbGVtZW50czogZnVuY3Rpb24oKSB7CgkJCXJldHVybiB0aGlzLmN1cnJlbnRFbGVtZW50cy5ub3QodGhpcy5pbnZhbGlkRWxlbWVudHMoKSk7CgkJfSwKCgkJaW52YWxpZEVsZW1lbnRzOiBmdW5jdGlvbigpIHsKCQkJcmV0dXJuICQodGhpcy5lcnJvckxpc3QpLm1hcChmdW5jdGlvbigpIHsKCQkJCXJldHVybiB0aGlzLmVsZW1lbnQ7CgkJCX0pOwoJCX0sCgoJCXNob3dMYWJlbDogZnVuY3Rpb24oZWxlbWVudCwgbWVzc2FnZSkgewoJCQl2YXIgbGFiZWwgPSB0aGlzLmVycm9yc0ZvciggZWxlbWVudCApOwoJCQlpZiAoIGxhYmVsLmxlbmd0aCApIHsKCQkJCS8vIHJlZnJlc2ggZXJyb3Ivc3VjY2VzcyBjbGFzcwoJCQkJbGFiZWwucmVtb3ZlQ2xhc3MoKS5hZGRDbGFzcyggdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzICk7CgoJCQkJLy8gY2hlY2sgaWYgd2UgaGF2ZSBhIGdlbmVyYXRlZCBsYWJlbCwgcmVwbGFjZSB0aGUgbWVzc2FnZSB0aGVuCgkJCQlsYWJlbC5hdHRyKCJnZW5lcmF0ZWQiKSAmJiBsYWJlbC5odG1sKG1lc3NhZ2UpOwoJCQl9IGVsc2UgewoJCQkJLy8gY3JlYXRlIGxhYmVsCgkJCQlsYWJlbCA9ICQoIjwiICsgdGhpcy5zZXR0aW5ncy5lcnJvckVsZW1lbnQgKyAiLz4iKQoJCQkJCS5hdHRyKHsiZm9yIjogIHRoaXMuaWRPck5hbWUoZWxlbWVudCksIGdlbmVyYXRlZDogdHJ1ZX0pCgkJCQkJLmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcykKCQkJCQkuaHRtbChtZXNzYWdlIHx8ICIiKTsKCQkJCWlmICggdGhpcy5zZXR0aW5ncy53cmFwcGVyICkgewoJCQkJCS8vIG1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyB2aXNpYmxlLCBldmVuIGluIElFCgkJCQkJLy8gYWN0dWFsbHkgc2hvd2luZyB0aGUgd3JhcHBlZCBlbGVtZW50IGlzIGhhbmRsZWQgZWxzZXdoZXJlCgkJCQkJbGFiZWwgPSBsYWJlbC5oaWRlKCkuc2hvdygpLndyYXAoIjwiICsgdGhpcy5zZXR0aW5ncy53cmFwcGVyICsgIi8+IikucGFyZW50KCk7CgkJCQl9CgkJCQlpZiAoICF0aGlzLmxhYmVsQ29udGFpbmVyLmFwcGVuZChsYWJlbCkubGVuZ3RoICkKCQkJCQl0aGlzLnNldHRpbmdzLmVycm9yUGxhY2VtZW50CgkJCQkJCT8gdGhpcy5zZXR0aW5ncy5lcnJvclBsYWNlbWVudChsYWJlbCwgJChlbGVtZW50KSApCgkJCQkJCTogbGFiZWwuaW5zZXJ0QWZ0ZXIoZWxlbWVudCk7CgkJCX0KCQkJaWYgKCAhbWVzc2FnZSAmJiB0aGlzLnNldHRpbmdzLnN1Y2Nlc3MgKSB7CgkJCQlsYWJlbC50ZXh0KCIiKTsKCQkJCXR5cGVvZiB0aGlzLnNldHRpbmdzLnN1Y2Nlc3MgPT0gInN0cmluZyIKCQkJCQk/IGxhYmVsLmFkZENsYXNzKCB0aGlzLnNldHRpbmdzLnN1Y2Nlc3MgKQoJCQkJCTogdGhpcy5zZXR0aW5ncy5zdWNjZXNzKCBsYWJlbCApOwoJCQl9CgkJCXRoaXMudG9TaG93ID0gdGhpcy50b1Nob3cuYWRkKGxhYmVsKTsKCQl9LAoKCQllcnJvcnNGb3I6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQkJdmFyIG5hbWUgPSB0aGlzLmlkT3JOYW1lKGVsZW1lbnQpOwogICAgCQlyZXR1cm4gdGhpcy5lcnJvcnMoKS5maWx0ZXIoZnVuY3Rpb24oKSB7CgkJCQlyZXR1cm4gJCh0aGlzKS5hdHRyKCdmb3InKSA9PSBuYW1lOwoJCQl9KTsKCQl9LAoKCQlpZE9yTmFtZTogZnVuY3Rpb24oZWxlbWVudCkgewoJCQlyZXR1cm4gdGhpcy5ncm91cHNbZWxlbWVudC5uYW1lXSB8fCAodGhpcy5jaGVja2FibGUoZWxlbWVudCkgPyBlbGVtZW50Lm5hbWUgOiBlbGVtZW50LmlkIHx8IGVsZW1lbnQubmFtZSk7CgkJfSwKCgkJY2hlY2thYmxlOiBmdW5jdGlvbiggZWxlbWVudCApIHsKCQkJcmV0dXJuIC9yYWRpb3xjaGVja2JveC9pLnRlc3QoZWxlbWVudC50eXBlKTsKCQl9LAoKCQlmaW5kQnlOYW1lOiBmdW5jdGlvbiggbmFtZSApIHsKCQkJLy8gc2VsZWN0IGJ5IG5hbWUgYW5kIGZpbHRlciBieSBmb3JtIGZvciBwZXJmb3JtYW5jZSBvdmVyIGZvcm0uZmluZCgiW25hbWU9Li4uXSIpCgkJCXZhciBmb3JtID0gdGhpcy5jdXJyZW50Rm9ybTsKCQkJcmV0dXJuICQoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUobmFtZSkpLm1hcChmdW5jdGlvbihpbmRleCwgZWxlbWVudCkgewoJCQkJcmV0dXJuIGVsZW1lbnQuZm9ybSA9PSBmb3JtICYmIGVsZW1lbnQubmFtZSA9PSBuYW1lICYmIGVsZW1lbnQgIHx8IG51bGw7CgkJCX0pOwoJCX0sCgoJCWdldExlbmd0aDogZnVuY3Rpb24odmFsdWUsIGVsZW1lbnQpIHsKCQkJc3dpdGNoKCBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgKSB7CgkJCWNhc2UgJ3NlbGVjdCc6CgkJCQlyZXR1cm4gJCgib3B0aW9uOnNlbGVjdGVkIiwgZWxlbWVudCkubGVuZ3RoOwoJCQljYXNlICdpbnB1dCc6CgkJCQlpZiggdGhpcy5jaGVja2FibGUoIGVsZW1lbnQpICkKCQkJCQlyZXR1cm4gdGhpcy5maW5kQnlOYW1lKGVsZW1lbnQubmFtZSkuZmlsdGVyKCc6Y2hlY2tlZCcpLmxlbmd0aDsKCQkJfQoJCQlyZXR1cm4gdmFsdWUubGVuZ3RoOwoJCX0sCgoJCWRlcGVuZDogZnVuY3Rpb24ocGFyYW0sIGVsZW1lbnQpIHsKCQkJcmV0dXJuIHRoaXMuZGVwZW5kVHlwZXNbdHlwZW9mIHBhcmFtXQoJCQkJPyB0aGlzLmRlcGVuZFR5cGVzW3R5cGVvZiBwYXJhbV0ocGFyYW0sIGVsZW1lbnQpCgkJCQk6IHRydWU7CgkJfSwKCgkJZGVwZW5kVHlwZXM6IHsKCQkJImJvb2xlYW4iOiBmdW5jdGlvbihwYXJhbSwgZWxlbWVudCkgewoJCQkJcmV0dXJuIHBhcmFtOwoJCQl9LAoJCQkic3RyaW5nIjogZnVuY3Rpb24ocGFyYW0sIGVsZW1lbnQpIHsKCQkJCXJldHVybiAhISQocGFyYW0sIGVsZW1lbnQuZm9ybSkubGVuZ3RoOwoJCQl9LAoJCQkiZnVuY3Rpb24iOiBmdW5jdGlvbihwYXJhbSwgZWxlbWVudCkgewoJCQkJcmV0dXJuIHBhcmFtKGVsZW1lbnQpOwoJCQl9CgkJfSwKCgkJb3B0aW9uYWw6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQkJcmV0dXJuICEkLnZhbGlkYXRvci5tZXRob2RzLnJlcXVpcmVkLmNhbGwodGhpcywgJC50cmltKGVsZW1lbnQudmFsdWUpLCBlbGVtZW50KSAmJiAiZGVwZW5kZW5jeS1taXNtYXRjaCI7CgkJfSwKCgkJc3RhcnRSZXF1ZXN0OiBmdW5jdGlvbihlbGVtZW50KSB7CgkJCWlmICghdGhpcy5wZW5kaW5nW2VsZW1lbnQubmFtZV0pIHsKCQkJCXRoaXMucGVuZGluZ1JlcXVlc3QrKzsKCQkJCXRoaXMucGVuZGluZ1tlbGVtZW50Lm5hbWVdID0gdHJ1ZTsKCQkJfQoJCX0sCgoJCXN0b3BSZXF1ZXN0OiBmdW5jdGlvbihlbGVtZW50LCB2YWxpZCkgewoJCQl0aGlzLnBlbmRpbmdSZXF1ZXN0LS07CgkJCS8vIHNvbWV0aW1lcyBzeW5jaHJvbml6YXRpb24gZmFpbHMsIG1ha2Ugc3VyZSBwZW5kaW5nUmVxdWVzdCBpcyBuZXZlciA8IDAKCQkJaWYgKHRoaXMucGVuZGluZ1JlcXVlc3QgPCAwKQoJCQkJdGhpcy5wZW5kaW5nUmVxdWVzdCA9IDA7CgkJCWRlbGV0ZSB0aGlzLnBlbmRpbmdbZWxlbWVudC5uYW1lXTsKCQkJaWYgKCB2YWxpZCAmJiB0aGlzLnBlbmRpbmdSZXF1ZXN0ID09IDAgJiYgdGhpcy5mb3JtU3VibWl0dGVkICYmIHRoaXMuZm9ybSgpICkgewoJCQkJJCh0aGlzLmN1cnJlbnRGb3JtKS5zdWJtaXQoKTsKCQkJCXRoaXMuZm9ybVN1Ym1pdHRlZCA9IGZhbHNlOwoJCQl9IGVsc2UgaWYgKCF2YWxpZCAmJiB0aGlzLnBlbmRpbmdSZXF1ZXN0ID09IDAgJiYgdGhpcy5mb3JtU3VibWl0dGVkKSB7CgkJCQkkKHRoaXMuY3VycmVudEZvcm0pLnRyaWdnZXJIYW5kbGVyKCJpbnZhbGlkLWZvcm0iLCBbdGhpc10pOwoJCQkJdGhpcy5mb3JtU3VibWl0dGVkID0gZmFsc2U7CgkJCX0KCQl9LAoKCQlwcmV2aW91c1ZhbHVlOiBmdW5jdGlvbihlbGVtZW50KSB7CgkJCXJldHVybiAkLmRhdGEoZWxlbWVudCwgInByZXZpb3VzVmFsdWUiKSB8fCAkLmRhdGEoZWxlbWVudCwgInByZXZpb3VzVmFsdWUiLCB7CgkJCQlvbGQ6IG51bGwsCgkJCQl2YWxpZDogdHJ1ZSwKCQkJCW1lc3NhZ2U6IHRoaXMuZGVmYXVsdE1lc3NhZ2UoIGVsZW1lbnQsICJyZW1vdGUiICkKCQkJfSk7CgkJfQoKCX0sCgoJY2xhc3NSdWxlU2V0dGluZ3M6IHsKCQlyZXF1aXJlZDoge3JlcXVpcmVkOiB0cnVlfSwKCQllbWFpbDoge2VtYWlsOiB0cnVlfSwKCQl1cmw6IHt1cmw6IHRydWV9LAoJCWRhdGU6IHtkYXRlOiB0cnVlfSwKCQlkYXRlSVNPOiB7ZGF0ZUlTTzogdHJ1ZX0sCgkJZGF0ZURFOiB7ZGF0ZURFOiB0cnVlfSwKCQludW1iZXI6IHtudW1iZXI6IHRydWV9LAoJCW51bWJlckRFOiB7bnVtYmVyREU6IHRydWV9LAoJCWRpZ2l0czoge2RpZ2l0czogdHJ1ZX0sCgkJY3JlZGl0Y2FyZDoge2NyZWRpdGNhcmQ6IHRydWV9Cgl9LAoKCWFkZENsYXNzUnVsZXM6IGZ1bmN0aW9uKGNsYXNzTmFtZSwgcnVsZXMpIHsKCQljbGFzc05hbWUuY29uc3RydWN0b3IgPT0gU3RyaW5nID8KCQkJdGhpcy5jbGFzc1J1bGVTZXR0aW5nc1tjbGFzc05hbWVdID0gcnVsZXMgOgoJCQkkLmV4dGVuZCh0aGlzLmNsYXNzUnVsZVNldHRpbmdzLCBjbGFzc05hbWUpOwoJfSwKCgljbGFzc1J1bGVzOiBmdW5jdGlvbihlbGVtZW50KSB7CgkJdmFyIHJ1bGVzID0ge307CgkJdmFyIGNsYXNzZXMgPSAkKGVsZW1lbnQpLmF0dHIoJ2NsYXNzJyk7CgkJY2xhc3NlcyAmJiAkLmVhY2goY2xhc3Nlcy5zcGxpdCgnICcpLCBmdW5jdGlvbigpIHsKCQkJaWYgKHRoaXMgaW4gJC52YWxpZGF0b3IuY2xhc3NSdWxlU2V0dGluZ3MpIHsKCQkJCSQuZXh0ZW5kKHJ1bGVzLCAkLnZhbGlkYXRvci5jbGFzc1J1bGVTZXR0aW5nc1t0aGlzXSk7CgkJCX0KCQl9KTsKCQlyZXR1cm4gcnVsZXM7Cgl9LAoKCWF0dHJpYnV0ZVJ1bGVzOiBmdW5jdGlvbihlbGVtZW50KSB7CgkJdmFyIHJ1bGVzID0ge307CgkJdmFyICRlbGVtZW50ID0gJChlbGVtZW50KTsKCgkJZm9yICh2YXIgbWV0aG9kIGluICQudmFsaWRhdG9yLm1ldGhvZHMpIHsKCQkJdmFyIHZhbHVlID0gJGVsZW1lbnQuYXR0cihtZXRob2QpOwoJCQlpZiAodmFsdWUpIHsKCQkJCXJ1bGVzW21ldGhvZF0gPSB2YWx1ZTsKCQkJfQoJCX0KCgkJLy8gbWF4bGVuZ3RoIG1heSBiZSByZXR1cm5lZCBhcyAtMSwgMjE0NzQ4MzY0NyAoSUUpIGFuZCA1MjQyODggKHNhZmFyaSkgZm9yIHRleHQgaW5wdXRzCgkJaWYgKHJ1bGVzLm1heGxlbmd0aCAmJiAvLTF8MjE0NzQ4MzY0N3w1MjQyODgvLnRlc3QocnVsZXMubWF4bGVuZ3RoKSkgewoJCQlkZWxldGUgcnVsZXMubWF4bGVuZ3RoOwoJCX0KCgkJcmV0dXJuIHJ1bGVzOwoJfSwKCgltZXRhZGF0YVJ1bGVzOiBmdW5jdGlvbihlbGVtZW50KSB7CgkJaWYgKCEkLm1ldGFkYXRhKSByZXR1cm4ge307CgoJCXZhciBtZXRhID0gJC5kYXRhKGVsZW1lbnQuZm9ybSwgJ3ZhbGlkYXRvcicpLnNldHRpbmdzLm1ldGE7CgkJcmV0dXJuIG1ldGEgPwoJCQkkKGVsZW1lbnQpLm1ldGFkYXRhKClbbWV0YV0gOgoJCQkkKGVsZW1lbnQpLm1ldGFkYXRhKCk7Cgl9LAoKCXN0YXRpY1J1bGVzOiBmdW5jdGlvbihlbGVtZW50KSB7CgkJdmFyIHJ1bGVzID0ge307CgkJdmFyIHZhbGlkYXRvciA9ICQuZGF0YShlbGVtZW50LmZvcm0sICd2YWxpZGF0b3InKTsKCQlpZiAodmFsaWRhdG9yLnNldHRpbmdzLnJ1bGVzKSB7CgkJCXJ1bGVzID0gJC52YWxpZGF0b3Iubm9ybWFsaXplUnVsZSh2YWxpZGF0b3Iuc2V0dGluZ3MucnVsZXNbZWxlbWVudC5uYW1lXSkgfHwge307CgkJfQoJCXJldHVybiBydWxlczsKCX0sCgoJbm9ybWFsaXplUnVsZXM6IGZ1bmN0aW9uKHJ1bGVzLCBlbGVtZW50KSB7CgkJLy8gaGFuZGxlIGRlcGVuZGVuY3kgY2hlY2sKCQkkLmVhY2gocnVsZXMsIGZ1bmN0aW9uKHByb3AsIHZhbCkgewoJCQkvLyBpZ25vcmUgcnVsZSB3aGVuIHBhcmFtIGlzIGV4cGxpY2l0bHkgZmFsc2UsIGVnLiByZXF1aXJlZDpmYWxzZQoJCQlpZiAodmFsID09PSBmYWxzZSkgewoJCQkJZGVsZXRlIHJ1bGVzW3Byb3BdOwoJCQkJcmV0dXJuOwoJCQl9CgkJCWlmICh2YWwucGFyYW0gfHwgdmFsLmRlcGVuZHMpIHsKCQkJCXZhciBrZWVwUnVsZSA9IHRydWU7CgkJCQlzd2l0Y2ggKHR5cGVvZiB2YWwuZGVwZW5kcykgewoJCQkJCWNhc2UgInN0cmluZyI6CgkJCQkJCWtlZXBSdWxlID0gISEkKHZhbC5kZXBlbmRzLCBlbGVtZW50LmZvcm0pLmxlbmd0aDsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAiZnVuY3Rpb24iOgoJCQkJCQlrZWVwUnVsZSA9IHZhbC5kZXBlbmRzLmNhbGwoZWxlbWVudCwgZWxlbWVudCk7CgkJCQkJCWJyZWFrOwoJCQkJfQoJCQkJaWYgKGtlZXBSdWxlKSB7CgkJCQkJcnVsZXNbcHJvcF0gPSB2YWwucGFyYW0gIT09IHVuZGVmaW5lZCA/IHZhbC5wYXJhbSA6IHRydWU7CgkJCQl9IGVsc2UgewoJCQkJCWRlbGV0ZSBydWxlc1twcm9wXTsKCQkJCX0KCQkJfQoJCX0pOwoKCQkvLyBldmFsdWF0ZSBwYXJhbWV0ZXJzCgkJJC5lYWNoKHJ1bGVzLCBmdW5jdGlvbihydWxlLCBwYXJhbWV0ZXIpIHsKCQkJcnVsZXNbcnVsZV0gPSAkLmlzRnVuY3Rpb24ocGFyYW1ldGVyKSA/IHBhcmFtZXRlcihlbGVtZW50KSA6IHBhcmFtZXRlcjsKCQl9KTsKCgkJLy8gY2xlYW4gbnVtYmVyIHBhcmFtZXRlcnMKCQkkLmVhY2goWydtaW5sZW5ndGgnLCAnbWF4bGVuZ3RoJywgJ21pbicsICdtYXgnXSwgZnVuY3Rpb24oKSB7CgkJCWlmIChydWxlc1t0aGlzXSkgewoJCQkJcnVsZXNbdGhpc10gPSBOdW1iZXIocnVsZXNbdGhpc10pOwoJCQl9CgkJfSk7CgkJJC5lYWNoKFsncmFuZ2VsZW5ndGgnLCAncmFuZ2UnXSwgZnVuY3Rpb24oKSB7CgkJCWlmIChydWxlc1t0aGlzXSkgewoJCQkJcnVsZXNbdGhpc10gPSBbTnVtYmVyKHJ1bGVzW3RoaXNdWzBdKSwgTnVtYmVyKHJ1bGVzW3RoaXNdWzFdKV07CgkJCX0KCQl9KTsKCgkJaWYgKCQudmFsaWRhdG9yLmF1dG9DcmVhdGVSYW5nZXMpIHsKCQkJLy8gYXV0by1jcmVhdGUgcmFuZ2VzCgkJCWlmIChydWxlcy5taW4gJiYgcnVsZXMubWF4KSB7CgkJCQlydWxlcy5yYW5nZSA9IFtydWxlcy5taW4sIHJ1bGVzLm1heF07CgkJCQlkZWxldGUgcnVsZXMubWluOwoJCQkJZGVsZXRlIHJ1bGVzLm1heDsKCQkJfQoJCQlpZiAocnVsZXMubWlubGVuZ3RoICYmIHJ1bGVzLm1heGxlbmd0aCkgewoJCQkJcnVsZXMucmFuZ2VsZW5ndGggPSBbcnVsZXMubWlubGVuZ3RoLCBydWxlcy5tYXhsZW5ndGhdOwoJCQkJZGVsZXRlIHJ1bGVzLm1pbmxlbmd0aDsKCQkJCWRlbGV0ZSBydWxlcy5tYXhsZW5ndGg7CgkJCX0KCQl9CgoJCS8vIFRvIHN1cHBvcnQgY3VzdG9tIG1lc3NhZ2VzIGluIG1ldGFkYXRhIGlnbm9yZSBydWxlIG1ldGhvZHMgdGl0bGVkICJtZXNzYWdlcyIKCQlpZiAocnVsZXMubWVzc2FnZXMpIHsKCQkJZGVsZXRlIHJ1bGVzLm1lc3NhZ2VzOwoJCX0KCgkJcmV0dXJuIHJ1bGVzOwoJfSwKCgkvLyBDb252ZXJ0cyBhIHNpbXBsZSBzdHJpbmcgdG8gYSB7c3RyaW5nOiB0cnVlfSBydWxlLCBlLmcuLCAicmVxdWlyZWQiIHRvIHtyZXF1aXJlZDp0cnVlfQoJbm9ybWFsaXplUnVsZTogZnVuY3Rpb24oZGF0YSkgewoJCWlmKCB0eXBlb2YgZGF0YSA9PSAic3RyaW5nIiApIHsKCQkJdmFyIHRyYW5zZm9ybWVkID0ge307CgkJCSQuZWFjaChkYXRhLnNwbGl0KC9ccy8pLCBmdW5jdGlvbigpIHsKCQkJCXRyYW5zZm9ybWVkW3RoaXNdID0gdHJ1ZTsKCQkJfSk7CgkJCWRhdGEgPSB0cmFuc2Zvcm1lZDsKCQl9CgkJcmV0dXJuIGRhdGE7Cgl9LAoKCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL1ZhbGlkYXRvci9hZGRNZXRob2QKCWFkZE1ldGhvZDogZnVuY3Rpb24obmFtZSwgbWV0aG9kLCBtZXNzYWdlKSB7CgkJJC52YWxpZGF0b3IubWV0aG9kc1tuYW1lXSA9IG1ldGhvZDsKCQkkLnZhbGlkYXRvci5tZXNzYWdlc1tuYW1lXSA9IG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gbWVzc2FnZSA6ICQudmFsaWRhdG9yLm1lc3NhZ2VzW25hbWVdOwoJCWlmIChtZXRob2QubGVuZ3RoIDwgMykgewoJCQkkLnZhbGlkYXRvci5hZGRDbGFzc1J1bGVzKG5hbWUsICQudmFsaWRhdG9yLm5vcm1hbGl6ZVJ1bGUobmFtZSkpOwoJCX0KCX0sCgoJbWV0aG9kczogewoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9NZXRob2RzL3JlcXVpcmVkCgkJcmVxdWlyZWQ6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtZW50LCBwYXJhbSkgewoJCQkvLyBjaGVjayBpZiBkZXBlbmRlbmN5IGlzIG1ldAoJCQlpZiAoICF0aGlzLmRlcGVuZChwYXJhbSwgZWxlbWVudCkgKQoJCQkJcmV0dXJuICJkZXBlbmRlbmN5LW1pc21hdGNoIjsKCQkJc3dpdGNoKCBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgKSB7CgkJCWNhc2UgJ3NlbGVjdCc6CgkJCQkvLyBjb3VsZCBiZSBhbiBhcnJheSBmb3Igc2VsZWN0LW11bHRpcGxlIG9yIGEgc3RyaW5nLCBib3RoIGFyZSBmaW5lIHRoaXMgd2F5CgkJCQl2YXIgdmFsID0gJChlbGVtZW50KS52YWwoKTsKCQkJCXJldHVybiB2YWwgJiYgdmFsLmxlbmd0aCA+IDA7CgkJCWNhc2UgJ2lucHV0JzoKCQkJCWlmICggdGhpcy5jaGVja2FibGUoZWxlbWVudCkgKQoJCQkJCXJldHVybiB0aGlzLmdldExlbmd0aCh2YWx1ZSwgZWxlbWVudCkgPiAwOwoJCQlkZWZhdWx0OgoJCQkJcmV0dXJuICQudHJpbSh2YWx1ZSkubGVuZ3RoID4gMDsKCQkJfQoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL01ldGhvZHMvcmVtb3RlCgkJcmVtb3RlOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCwgcGFyYW0pIHsKCQkJaWYgKCB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpICkKCQkJCXJldHVybiAiZGVwZW5kZW5jeS1taXNtYXRjaCI7CgoJCQl2YXIgcHJldmlvdXMgPSB0aGlzLnByZXZpb3VzVmFsdWUoZWxlbWVudCk7CgkJCWlmICghdGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tlbGVtZW50Lm5hbWVdICkKCQkJCXRoaXMuc2V0dGluZ3MubWVzc2FnZXNbZWxlbWVudC5uYW1lXSA9IHt9OwoJCQlwcmV2aW91cy5vcmlnaW5hbE1lc3NhZ2UgPSB0aGlzLnNldHRpbmdzLm1lc3NhZ2VzW2VsZW1lbnQubmFtZV0ucmVtb3RlOwoJCQl0aGlzLnNldHRpbmdzLm1lc3NhZ2VzW2VsZW1lbnQubmFtZV0ucmVtb3RlID0gcHJldmlvdXMubWVzc2FnZTsKCgkJCXBhcmFtID0gdHlwZW9mIHBhcmFtID09ICJzdHJpbmciICYmIHt1cmw6cGFyYW19IHx8IHBhcmFtOwoKCQkJaWYgKCB0aGlzLnBlbmRpbmdbZWxlbWVudC5uYW1lXSApIHsKCQkJCXJldHVybiAicGVuZGluZyI7CgkJCX0KCQkJaWYgKCBwcmV2aW91cy5vbGQgPT09IHZhbHVlICkgewoJCQkJcmV0dXJuIHByZXZpb3VzLnZhbGlkOwoJCQl9CgoJCQlwcmV2aW91cy5vbGQgPSB2YWx1ZTsKCQkJdmFyIHZhbGlkYXRvciA9IHRoaXM7CgkJCXRoaXMuc3RhcnRSZXF1ZXN0KGVsZW1lbnQpOwoJCQl2YXIgZGF0YSA9IHt9OwoJCQlkYXRhW2VsZW1lbnQubmFtZV0gPSB2YWx1ZTsKCQkJJC5hamF4KCQuZXh0ZW5kKHRydWUsIHsKCQkJCXVybDogcGFyYW0sCgkJCQltb2RlOiAiYWJvcnQiLAoJCQkJcG9ydDogInZhbGlkYXRlIiArIGVsZW1lbnQubmFtZSwKCQkJCWRhdGFUeXBlOiAianNvbiIsCgkJCQlkYXRhOiBkYXRhLAoJCQkJc3VjY2VzczogZnVuY3Rpb24ocmVzcG9uc2UpIHsKCQkJCQl2YWxpZGF0b3Iuc2V0dGluZ3MubWVzc2FnZXNbZWxlbWVudC5uYW1lXS5yZW1vdGUgPSBwcmV2aW91cy5vcmlnaW5hbE1lc3NhZ2U7CgkJCQkJdmFyIHZhbGlkID0gcmVzcG9uc2UgPT09IHRydWU7CgkJCQkJaWYgKCB2YWxpZCApIHsKCQkJCQkJdmFyIHN1Ym1pdHRlZCA9IHZhbGlkYXRvci5mb3JtU3VibWl0dGVkOwoJCQkJCQl2YWxpZGF0b3IucHJlcGFyZUVsZW1lbnQoZWxlbWVudCk7CgkJCQkJCXZhbGlkYXRvci5mb3JtU3VibWl0dGVkID0gc3VibWl0dGVkOwoJCQkJCQl2YWxpZGF0b3Iuc3VjY2Vzc0xpc3QucHVzaChlbGVtZW50KTsKCQkJCQkJdmFsaWRhdG9yLnNob3dFcnJvcnMoKTsKCQkJCQl9IGVsc2UgewoJCQkJCQl2YXIgZXJyb3JzID0ge307CgkJCQkJCXZhciBtZXNzYWdlID0gcmVzcG9uc2UgfHwgdmFsaWRhdG9yLmRlZmF1bHRNZXNzYWdlKCBlbGVtZW50LCAicmVtb3RlIiApOwoJCQkJCQllcnJvcnNbZWxlbWVudC5uYW1lXSA9IHByZXZpb3VzLm1lc3NhZ2UgPSAkLmlzRnVuY3Rpb24obWVzc2FnZSkgPyBtZXNzYWdlKHZhbHVlKSA6IG1lc3NhZ2U7CgkJCQkJCXZhbGlkYXRvci5zaG93RXJyb3JzKGVycm9ycyk7CgkJCQkJfQoJCQkJCXByZXZpb3VzLnZhbGlkID0gdmFsaWQ7CgkJCQkJdmFsaWRhdG9yLnN0b3BSZXF1ZXN0KGVsZW1lbnQsIHZhbGlkKTsKCQkJCX0KCQkJfSwgcGFyYW0pKTsKCQkJcmV0dXJuICJwZW5kaW5nIjsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9NZXRob2RzL21pbmxlbmd0aAoJCW1pbmxlbmd0aDogZnVuY3Rpb24odmFsdWUsIGVsZW1lbnQsIHBhcmFtKSB7CgkJCXJldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpIHx8IHRoaXMuZ2V0TGVuZ3RoKCQudHJpbSh2YWx1ZSksIGVsZW1lbnQpID49IHBhcmFtOwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL01ldGhvZHMvbWF4bGVuZ3RoCgkJbWF4bGVuZ3RoOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCwgcGFyYW0pIHsKCQkJcmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgfHwgdGhpcy5nZXRMZW5ndGgoJC50cmltKHZhbHVlKSwgZWxlbWVudCkgPD0gcGFyYW07CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9yYW5nZWxlbmd0aAoJCXJhbmdlbGVuZ3RoOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCwgcGFyYW0pIHsKCQkJdmFyIGxlbmd0aCA9IHRoaXMuZ2V0TGVuZ3RoKCQudHJpbSh2YWx1ZSksIGVsZW1lbnQpOwoJCQlyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KSB8fCAoIGxlbmd0aCA+PSBwYXJhbVswXSAmJiBsZW5ndGggPD0gcGFyYW1bMV0gKTsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9NZXRob2RzL21pbgoJCW1pbjogZnVuY3Rpb24oIHZhbHVlLCBlbGVtZW50LCBwYXJhbSApIHsKCQkJcmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgfHwgdmFsdWUgPj0gcGFyYW07CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9tYXgKCQltYXg6IGZ1bmN0aW9uKCB2YWx1ZSwgZWxlbWVudCwgcGFyYW0gKSB7CgkJCXJldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpIHx8IHZhbHVlIDw9IHBhcmFtOwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL01ldGhvZHMvcmFuZ2UKCQlyYW5nZTogZnVuY3Rpb24oIHZhbHVlLCBlbGVtZW50LCBwYXJhbSApIHsKCQkJcmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgfHwgKCB2YWx1ZSA+PSBwYXJhbVswXSAmJiB2YWx1ZSA8PSBwYXJhbVsxXSApOwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL01ldGhvZHMvZW1haWwKCQllbWFpbDogZnVuY3Rpb24odmFsdWUsIGVsZW1lbnQpIHsKCQkJLy8gY29udHJpYnV0ZWQgYnkgU2NvdHQgR29uemFsZXo6IGh0dHA6Ly9wcm9qZWN0cy5zY290dHNwbGF5Z3JvdW5kLmNvbS9lbWFpbF9hZGRyZXNzX3ZhbGlkYXRpb24vCgkJCXJldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpIHx8IC9eKCgoW2Etel18XGR8WyEjXCQlJidcKlwrXC1cLz1cP1xeX2B7XHx9fl18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKyhcLihbYS16XXxcZHxbISNcJCUmJ1wqXCtcLVwvPVw/XF5fYHtcfH1+XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkrKSopfCgoXHgyMikoKCgoXHgyMHxceDA5KSooXHgwZFx4MGEpKT8oXHgyMHxceDA5KSspPygoW1x4MDEtXHgwOFx4MGJceDBjXHgwZS1ceDFmXHg3Zl18XHgyMXxbXHgyMy1ceDViXXxbXHg1ZC1ceDdlXXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KFxcKFtceDAxLVx4MDlceDBiXHgwY1x4MGQtXHg3Zl18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSkpKigoKFx4MjB8XHgwOSkqKFx4MGRceDBhKSk/KFx4MjB8XHgwOSkrKT8oXHgyMikpKUAoKChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuKSsoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4/JC9pLnRlc3QodmFsdWUpOwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL01ldGhvZHMvdXJsCgkJdXJsOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCkgewoJCQkvLyBjb250cmlidXRlZCBieSBTY290dCBHb256YWxlejogaHR0cDovL3Byb2plY3RzLnNjb3R0c3BsYXlncm91bmQuY29tL2lyaS8KCQkJcmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgfHwgL14oaHR0cHM/fGZ0cCk6XC9cLygoKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OikqQCk/KCgoXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKSl8KCgoW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSlcLikrKChbYS16XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuPykoOlxkKik/KShcLygoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6fEApKyhcLygoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCkqKSopPyk/KFw/KCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCl8W1x1RTAwMC1cdUY4RkZdfFwvfFw/KSopPyhcIygoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6fEApfFwvfFw/KSopPyQvaS50ZXN0KHZhbHVlKTsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9NZXRob2RzL2RhdGUKCQlkYXRlOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCkgewoJCQlyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KSB8fCAhL0ludmFsaWR8TmFOLy50ZXN0KG5ldyBEYXRlKHZhbHVlKSk7CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9kYXRlSVNPCgkJZGF0ZUlTTzogZnVuY3Rpb24odmFsdWUsIGVsZW1lbnQpIHsKCQkJcmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgfHwgL15cZHs0fVtcLy1dXGR7MSwyfVtcLy1dXGR7MSwyfSQvLnRlc3QodmFsdWUpOwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL01ldGhvZHMvbnVtYmVyCgkJbnVtYmVyOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCkgewoJCQlyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KSB8fCAvXi0/KD86XGQrfFxkezEsM30oPzosXGR7M30pKykoPzpcLlxkKyk/JC8udGVzdCh2YWx1ZSk7CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9kaWdpdHMKCQlkaWdpdHM6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtZW50KSB7CgkJCXJldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpIHx8IC9eXGQrJC8udGVzdCh2YWx1ZSk7CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9jcmVkaXRjYXJkCgkJLy8gYmFzZWQgb24gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MdWhuCgkJY3JlZGl0Y2FyZDogZnVuY3Rpb24odmFsdWUsIGVsZW1lbnQpIHsKCQkJaWYgKCB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpICkKCQkJCXJldHVybiAiZGVwZW5kZW5jeS1taXNtYXRjaCI7CgkJCS8vIGFjY2VwdCBvbmx5IGRpZ2l0cyBhbmQgZGFzaGVzCgkJCWlmICgvW14wLTktXSsvLnRlc3QodmFsdWUpKQoJCQkJcmV0dXJuIGZhbHNlOwoJCQl2YXIgbkNoZWNrID0gMCwKCQkJCW5EaWdpdCA9IDAsCgkJCQliRXZlbiA9IGZhbHNlOwoKCQkJdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9cRC9nLCAiIik7CgoJCQlmb3IgKHZhciBuID0gdmFsdWUubGVuZ3RoIC0gMTsgbiA+PSAwOyBuLS0pIHsKCQkJCXZhciBjRGlnaXQgPSB2YWx1ZS5jaGFyQXQobik7CgkJCQl2YXIgbkRpZ2l0ID0gcGFyc2VJbnQoY0RpZ2l0LCAxMCk7CgkJCQlpZiAoYkV2ZW4pIHsKCQkJCQlpZiAoKG5EaWdpdCAqPSAyKSA+IDkpCgkJCQkJCW5EaWdpdCAtPSA5OwoJCQkJfQoJCQkJbkNoZWNrICs9IG5EaWdpdDsKCQkJCWJFdmVuID0gIWJFdmVuOwoJCQl9CgoJCQlyZXR1cm4gKG5DaGVjayAlIDEwKSA9PSAwOwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL01ldGhvZHMvYWNjZXB0CgkJYWNjZXB0OiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCwgcGFyYW0pIHsKCQkJcGFyYW0gPSB0eXBlb2YgcGFyYW0gPT0gInN0cmluZyIgPyBwYXJhbS5yZXBsYWNlKC8sL2csICd8JykgOiAicG5nfGpwZT9nfGdpZiI7CgkJCXJldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpIHx8IHZhbHVlLm1hdGNoKG5ldyBSZWdFeHAoIi4oIiArIHBhcmFtICsgIikkIiwgImkiKSk7CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9lcXVhbFRvCgkJZXF1YWxUbzogZnVuY3Rpb24odmFsdWUsIGVsZW1lbnQsIHBhcmFtKSB7CgkJCS8vIGJpbmQgdG8gdGhlIGJsdXIgZXZlbnQgb2YgdGhlIHRhcmdldCBpbiBvcmRlciB0byByZXZhbGlkYXRlIHdoZW5ldmVyIHRoZSB0YXJnZXQgZmllbGQgaXMgdXBkYXRlZAoJCQkvLyBUT0RPIGZpbmQgYSB3YXkgdG8gYmluZCB0aGUgZXZlbnQganVzdCBvbmNlLCBhdm9pZGluZyB0aGUgdW5iaW5kLXJlYmluZCBvdmVyaGVhZAoJCQl2YXIgdGFyZ2V0ID0gJChwYXJhbSkudW5iaW5kKCIudmFsaWRhdGUtZXF1YWxUbyIpLmJpbmQoImJsdXIudmFsaWRhdGUtZXF1YWxUbyIsIGZ1bmN0aW9uKCkgewoJCQkJJChlbGVtZW50KS52YWxpZCgpOwoJCQl9KTsKCQkJcmV0dXJuIHZhbHVlID09IHRhcmdldC52YWwoKTsKCQl9CgoJfQoKfSk7CgovLyBkZXByZWNhdGVkLCB1c2UgJC52YWxpZGF0b3IuZm9ybWF0IGluc3RlYWQKJC5mb3JtYXQgPSAkLnZhbGlkYXRvci5mb3JtYXQ7Cgp9KShqUXVlcnkpOwoKLy8gYWpheCBtb2RlOiBhYm9ydAovLyB1c2FnZTogJC5hamF4KHsgbW9kZTogImFib3J0IlssIHBvcnQ6ICJ1bmlxdWVwb3J0Il19KTsKLy8gaWYgbW9kZToiYWJvcnQiIGlzIHVzZWQsIHRoZSBwcmV2aW91cyByZXF1ZXN0IG9uIHRoYXQgcG9ydCAocG9ydCBjYW4gYmUgdW5kZWZpbmVkKSBpcyBhYm9ydGVkIHZpYSBYTUxIdHRwUmVxdWVzdC5hYm9ydCgpCjsoZnVuY3Rpb24oJCkgewoJdmFyIHBlbmRpbmdSZXF1ZXN0cyA9IHt9OwoJLy8gVXNlIGEgcHJlZmlsdGVyIGlmIGF2YWlsYWJsZSAoMS41KykKCWlmICggJC5hamF4UHJlZmlsdGVyICkgewoJCSQuYWpheFByZWZpbHRlcihmdW5jdGlvbihzZXR0aW5ncywgXywgeGhyKSB7CgkJCXZhciBwb3J0ID0gc2V0dGluZ3MucG9ydDsKCQkJaWYgKHNldHRpbmdzLm1vZGUgPT0gImFib3J0IikgewoJCQkJaWYgKCBwZW5kaW5nUmVxdWVzdHNbcG9ydF0gKSB7CgkJCQkJcGVuZGluZ1JlcXVlc3RzW3BvcnRdLmFib3J0KCk7CgkJCQl9CgkJCQlwZW5kaW5nUmVxdWVzdHNbcG9ydF0gPSB4aHI7CgkJCX0KCQl9KTsKCX0gZWxzZSB7CgkJLy8gUHJveHkgYWpheAoJCXZhciBhamF4ID0gJC5hamF4OwoJCSQuYWpheCA9IGZ1bmN0aW9uKHNldHRpbmdzKSB7CgkJCXZhciBtb2RlID0gKCAibW9kZSIgaW4gc2V0dGluZ3MgPyBzZXR0aW5ncyA6ICQuYWpheFNldHRpbmdzICkubW9kZSwKCQkJCXBvcnQgPSAoICJwb3J0IiBpbiBzZXR0aW5ncyA/IHNldHRpbmdzIDogJC5hamF4U2V0dGluZ3MgKS5wb3J0OwoJCQlpZiAobW9kZSA9PSAiYWJvcnQiKSB7CgkJCQlpZiAoIHBlbmRpbmdSZXF1ZXN0c1twb3J0XSApIHsKCQkJCQlwZW5kaW5nUmVxdWVzdHNbcG9ydF0uYWJvcnQoKTsKCQkJCX0KCQkJCXJldHVybiAocGVuZGluZ1JlcXVlc3RzW3BvcnRdID0gYWpheC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKCQkJfQoJCQlyZXR1cm4gYWpheC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoJCX07Cgl9Cn0pKGpRdWVyeSk7CgovLyBwcm92aWRlcyBjcm9zcy1icm93c2VyIGZvY3VzaW4gYW5kIGZvY3Vzb3V0IGV2ZW50cwovLyBJRSBoYXMgbmF0aXZlIHN1cHBvcnQsIGluIG90aGVyIGJyb3dzZXJzLCB1c2UgZXZlbnQgY2FwdXR1cmluZyAobmVpdGhlciBidWJibGVzKQoKLy8gcHJvdmlkZXMgZGVsZWdhdGUodHlwZTogU3RyaW5nLCBkZWxlZ2F0ZTogU2VsZWN0b3IsIGhhbmRsZXI6IENhbGxiYWNrKSBwbHVnaW4gZm9yIGVhc2llciBldmVudCBkZWxlZ2F0aW9uCi8vIGhhbmRsZXIgaXMgb25seSBjYWxsZWQgd2hlbiAkKGV2ZW50LnRhcmdldCkuaXMoZGVsZWdhdGUpLCBpbiB0aGUgc2NvcGUgb2YgdGhlIGpxdWVyeS1vYmplY3QgZm9yIGV2ZW50LnRhcmdldAo7KGZ1bmN0aW9uKCQpIHsKCS8vIG9ubHkgaW1wbGVtZW50IGlmIG5vdCBwcm92aWRlZCBieSBqUXVlcnkgY29yZSAoc2luY2UgMS40KQoJLy8gVE9ETyB2ZXJpZnkgaWYgalF1ZXJ5IDEuNCdzIGltcGxlbWVudGF0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCBvbGRlciBqUXVlcnkgc3BlY2lhbC1ldmVudCBBUElzCglpZiAoIWpRdWVyeS5ldmVudC5zcGVjaWFsLmZvY3VzaW4gJiYgIWpRdWVyeS5ldmVudC5zcGVjaWFsLmZvY3Vzb3V0ICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKCQkkLmVhY2goewoJCQlmb2N1czogJ2ZvY3VzaW4nLAoJCQlibHVyOiAnZm9jdXNvdXQnCgkJfSwgZnVuY3Rpb24oIG9yaWdpbmFsLCBmaXggKXsKCQkJJC5ldmVudC5zcGVjaWFsW2ZpeF0gPSB7CgkJCQlzZXR1cDpmdW5jdGlvbigpIHsKCQkJCQl0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIG9yaWdpbmFsLCBoYW5kbGVyLCB0cnVlICk7CgkJCQl9LAoJCQkJdGVhcmRvd246ZnVuY3Rpb24oKSB7CgkJCQkJdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnaW5hbCwgaGFuZGxlciwgdHJ1ZSApOwoJCQkJfSwKCQkJCWhhbmRsZXI6IGZ1bmN0aW9uKGUpIHsKCQkJCQlhcmd1bWVudHNbMF0gPSAkLmV2ZW50LmZpeChlKTsKCQkJCQlhcmd1bWVudHNbMF0udHlwZSA9IGZpeDsKCQkJCQlyZXR1cm4gJC5ldmVudC5oYW5kbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCQkJCX0KCQkJfTsKCQkJZnVuY3Rpb24gaGFuZGxlcihlKSB7CgkJCQllID0gJC5ldmVudC5maXgoZSk7CgkJCQllLnR5cGUgPSBmaXg7CgkJCQlyZXR1cm4gJC5ldmVudC5oYW5kbGUuY2FsbCh0aGlzLCBlKTsKCQkJfQoJCX0pOwoJfTsKCSQuZXh0ZW5kKCQuZm4sIHsKCQl2YWxpZGF0ZURlbGVnYXRlOiBmdW5jdGlvbihkZWxlZ2F0ZSwgdHlwZSwgaGFuZGxlcikgewoJCQlyZXR1cm4gdGhpcy5iaW5kKHR5cGUsIGZ1bmN0aW9uKGV2ZW50KSB7CgkJCQl2YXIgdGFyZ2V0ID0gJChldmVudC50YXJnZXQpOwoJCQkJaWYgKHRhcmdldC5pcyhkZWxlZ2F0ZSkpIHsKCQkJCQlyZXR1cm4gaGFuZGxlci5hcHBseSh0YXJnZXQsIGFyZ3VtZW50cyk7CgkJCQl9CgkJCX0pOwoJCX0KCX0pOwp9KShqUXVlcnkpOwo=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBoZWFkZXJzIGFuZCBsYWJlbHMKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLy8gLS0gY29tbW9uCgokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnVXBDb3Vwb24gTW9kdWxlJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdBIG1vZHVsZSB0byBzZXR1cCBhbiBvbmxpbmUgbG90dGVyeSwgY291cG9uIGNvZGUgcmVnaXN0cmF0aW9uIHN5c3RlbS4nOwoKJGxhbmdbJ2FwcHJvdmVfc3RhdHVzJ10gPSAnU2V0IHN0YXR1cyB0byBcJ0FjdGl2ZVwnJzsKJGxhbmdbJ3JldmVydF9zdGF0dXMnXSA9ICdTZXQgc3RhdHVzIHRvIFwnSW5hY3RpdmVcJyc7CgokbGFuZ1snYXBwcm92ZV9kZWZhdWx0J10gPSAnU2V0IGRlZmF1bHQgdG8gXCdBY3RpdmVcJyc7CiRsYW5nWydyZXZlcnRfZGVmYXVsdCddID0gJ1NldCBkZWZhdWx0IHRvIFwnSW5hY3RpdmVcJyc7CgokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aXZlJzsKJGxhbmdbJ2luYWN0aXZlJ10gPSAnSW5hY3RpdmUnOwokbGFuZ1sneWVzJ10gPSAnWWVzJzsKJGxhbmdbJ25vJ10gPSAnTm8nOwoKLy8gLS0gYWN0aW9uCgokbGFuZ1sndGl0bGUnXSA9ICdUaXRsZSc7CiRsYW5nWydhbGlhcyddID0gJ0FsaWFzJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ1N0YXJ0IGRhdGUnOwokbGFuZ1snZW5kX2RhdGUnXSA9ICdFbmQgZGF0ZSc7CiRsYW5nWydzdGF0dXMnXSA9ICdTdGF0dXMnOwokbGFuZ1snc2VsZWN0J10gPSAnU2VsZWN0JzsKCi8vIC0tIHBlcmlvZAoKJGxhbmdbJ2FjdGlvbiddID0gJ0NvdXBvbiBhY3Rpb24nOwokbGFuZ1snaXNfZmluYWwnXSA9ICdGaW5hbCBEcmF3Pyc7CgovLyAtLSBwcml6ZQoKJGxhbmdbJ3BlcmlvZCddID0gJ0NvdXBvbiBwZXJpb2QnOwokbGFuZ1sncHJpemVfY29kZSddID0gJ1ByaXplIGNvZGUnOwokbGFuZ1snbnVtYmVyJ10gPSAnTnVtYmVyJzsKCiRsYW5nWyd0b3RhbF9udW1iZXInXSA9ICdUb3RhbCc7CiRsYW5nWydmcmVlX251bWJlciddID0gJ0F2YWlsYWJsZSc7CiRsYW5nWydnaXZlbl9udW1iZXInXSA9ICdBbGxvdHRlZCc7CgokbGFuZ1snYWN0aW9uX3BlcmlvZCddID0gJ0NvdXBvbiBBY3Rpb24gLyBDb3Vwb24gUGVyaW9kJzsKCi8vIC0tIHdpbm5lcgoKJGxhbmdbJ2RyYXdfY291cG9uJ109ICdEcmF3IENvdXBvbic7CiRsYW5nWyd3aXRoZHJhd19jb3Vwb24nXT0gJ1dpdGhkcmF3IENvdXBvbic7CgovLyAtLSBzdGF0aXN0aWNzCgokbGFuZ1sncmVnaXN0cmF0aW9ucyddID0gJ1JlZ2lzdHJhdGlvbnMnOwoKLy8gLS0gdGVtcGxhdGVzCgokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1snZGVmYXVsdCddID0gJ0RlZmF1bHQnOwokbGFuZ1sndGVtcGxhdGVfdHlwZSddID0gJ1RlbXBsYXRlIHR5cGUnOwokbGFuZ1sndGVtcGxhdGVfcmVnaXN0ZXInXSA9ICdUZW1wbGF0ZSByZWdpc3RyYXRpb24nOwokbGFuZ1sndGVtcGxhdGVfd2lubmVyJ10gPSAnVGVtcGxhdGUgd2lubmVyJzsKJGxhbmdbJ3RlbXBsYXRlX3ByaXplJ10gPSAnVGVtcGxhdGUgcHJpemUnOwokbGFuZ1sndGVtcGxhdGVfY29kZSddID0gJ1RlbXBsYXRlIGNvZGUnOwoKLy8gLS0gcHJlZmVyZW5jZXMKCiRsYW5nWydwcmVmZXJlbmNlc191bmRlcmNvbnN0cnVjdGlvbiddID0gJ0N1cnJlbnRseSBwcmVmZXJlbmNlcyBhcmUgbm90IGFwcGxpZWQsIHRoZSBhZG1pbiBpbnRlcmZhY2Ugd2lsbCBzYXZlIHRoZSBkYXRhLic7CgovLyBlbWFpbF9yZWdpc3RlcmVkX2N1c3RvbWVyCgokbGFuZ1sncF9zZWN0aW9uX2VtYWlsX3JlZ2lzdGVyZWRfY3VzdG9tZXInXSA9ICdFLW1haWwgY3VzdG9tZXIgYWZ0ZXIgcmVnaXN0cmF0aW9uIG9mIGNvdXBvbiBjb2RlPyc7CgokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3RydWUnXSA9ICdDdXJycmVudGx5IGN1c3RvbWVyIHJlY2VpdmUgZS1tYWlsIG1lc3NhZ2VzLCBhbGwgcHJlZmVyZW5jZXMgYXJlIGNvbXBsZXRlZCBjb3JyZWN0bHkuJzsKCiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfZmFsc2UnXSA9ICdDdXJyZW50bHkgY3VzdG9tZXIgZG9lcyA8dT5ub3Q8L3U+IHJlY2VpdmUgZS1tYWlsIG1lc3NhZ2VzLiBOb3QgYWxsIHByZWZlcmVuY2VzIGFyZSBjb21wZXRlZCBjb3JyZWN0bHkuJzsKCiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfY2hlY2snXSA9ICdZZXMgaXMgb24sIG5vIGlzIG91dCc7CgokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QnXSA9ICdTdWJqZWN0IG9mIHRoZSBlLW1haWwgbWVzc2FnZSc7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfc3ViamVjdF9kZWZhdWx0J10gPSAnVGhhbmsgeW91IGZvciByZWdpc3RlcmluZyc7CgokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnXSA9ICdFLW1haWwgYWRkcmVzcyBzZW5kZXInOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWxfaGVscCddID0gJ0JlIGF3YXJlISBTb21lIHByb3ZpZGVycyBvbmx5IGFsbG93IGFuIGUtbWFpbCBhZGRyZXNzIHdoaWNoIGNvcnJlc3BvbmRzIHdpdGggdGhlIGRvbWFpbiBuYW1lLic7CgokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZSddID0gJ05hbWUgb2Ygc2VuZGVyJzsKCiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZSddID0gJ0UtbWFpbCAocmVnaXN0ZXJlZCB1c2VyKSBtZXNzYWdlJzsKCiRsYW5nWydlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFycyddID0gJ1doaWNoIHZhcmlhYmxlcyBtYXkgYmUgdXNlZCBpbiBhbiBlLW1haWwgKHJlZ2lzdGVyZWQgdXNlcikgbWVzc2FnZT8nOwoKJGxhbmdbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV92YXJzX2xpc3QnXSA9IDw8PEVPVAoKPGNvZGU+e1wkZW1haWwuZmlyc3RfbmFtZX08L2NvZGU+IC0gRmlyc3QgbmFtZTxiciAvPgo8Y29kZT57XCRlbWFpbC5sYXN0X25hbWV9PC9jb2RlPiAtIExhc3QgbmFtZTxiciAvPgo8Y29kZT57XCRlbWFpbC5lbWFpbH08L2NvZGU+IC0gRS1tYWlsPGJyIC8+Cjxjb2RlPntcJGVtYWlsLnBob25lfTwvY29kZT4gLSBUZWxlcGhvbmUgbnVtYmVyPGJyIC8+Cjxjb2RlPntcJGVtYWlsLm5ld3NsZXR0ZXJ9PC9jb2RlPiAtIE5ld3NsZXR0ZXIgMCA9IG5vIDEgPSB5ZXM8YnIgLz4KPGNvZGU+e1wkZW1haWwuY291cG9uX2NvZGV9PC9jb2RlPiAtIENvdXBvbiBjb2RlIHdpdGhvdXQgZGFzaGVzPGJyIC8+Cjxjb2RlPntcJGVtYWlsLmRhc2hlZF9jb3Vwb25fY29kZX08L2NvZGU+IC0gQ291cG9uIGNvZGUgd2l0aCBkYXNoZXM8YnIgLz4KPGNvZGU+e1wkZW1haWwudGltZXN0YW1wfTwvY29kZT4gLSBUaW1lc3RhbXAgaW4gdW5peCBmb3JtYXQ8YnIgLz4KPGNvZGU+e1wkZW1haWwuZGJfdGltZXN0YW1wfTwvY29kZT4gLSBUaW1lc3RhbXAgaW4gZGF0YWJhc2UgZm9ybWF0PGJyIC8+PGJyIC8+CgpJdCBpcyBwb3NzaWJsZSB0byB1c2UgU21hcnR5IG1vZGlmaWVycyBvciBmaWx0ZXJzIGZvciB0aGUgdmFyaWFibGUgaW4gdGhlIGUtbWFpbCBtZXNzYWdlLCBzdWNoIGFzOiA8YnIgLz4KPGNvZGU+e1wkZW1haWwuZGJfdGltZXN0YW1wfGRhdGVfZm9ybWF0OiIlZCAlQiAlWSJ9PC9jb2RlPjxiciAvPjxiciAvPgpFT1Q7CgokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJ10gPSAnRS1tYWlsICh3aW5uaW5nIHVzZXIpIG1lc3NhZ2UnOwoKJGxhbmdbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfdmFycyddID0gJ1doaWNoIHZhcmlhYmxlcyBtYXkgYmUgdXNlZCBpbiBhbiBlLW1haWwgKHdpbm5pbmcgdXNlcikgbWVzc2FnZT8nOwoKJGxhbmdbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfdmFyc19saXN0J10gPSA8PDxFT1QKCjxjb2RlPntcJGVtYWlsLmFjdGlvbl90aXRsZX08L2NvZGU+IC0gVGl0bGUgb2YgdGhlIGNvdXBvbiBhY3Rpb248YnIgLz4KPGNvZGU+e1wkZW1haWwuY291cG9uX2FjdGlvbl9pZH08L2NvZGU+IC0gVW5pcXVlIGlkIG9mIHRoZSBjb3Vwb24gYWN0aW9uPGJyIC8+Cjxjb2RlPntcJGVtYWlsLnBlcmlvZF90aXRsZX08L2NvZGU+IC0gVGl0bGUgb2YgdGhlIGNvdXBvbiBwZXJpb2Q8YnIgLz4KPGNvZGU+e1wkZW1haWwuY291cG9uX3BlcmlvZF9pZH08L2NvZGU+IC0gVW5pcXVlIGlkIG9mIHRoZSBjb3Vwb24gcGVyaW9kPGJyIC8+Cjxjb2RlPntcJGVtYWlsLnByaXplX3RpdGxlfTwvY29kZT4gLSBUaXRsZSBvZiB0aGUgcHJpemU8YnIgLz4KPGNvZGU+e1wkZW1haWwucHJpemVfY29kZX08L2NvZGU+IC0gQ29kZSBvZiB0aGUgcHJpemU8YnIgLz4KPGNvZGU+e1wkZW1haWwubnVtYmVyfTwvY29kZT4gLSBUb3RhbCBudW1iZXIgb2YgdGhpcyBwcml6ZTxiciAvPgo8Y29kZT57XCRlbWFpbC5jb3Vwb25fcHJpemVfaWR9PC9jb2RlPiAtIFVuaXF1ZSBpZCBvZiB0aGlzIHByaXplPGJyIC8+Cjxjb2RlPntcJGVtYWlsLmNvdXBvbl9jdXN0b21lcl9pZH08L2NvZGU+IC0gVW5pcXVlIGlkIG9mIHdpbm5pbmcgY3VzdG9tZXI8YnIgLz4KPGNvZGU+e1wkZW1haWwuZmlyc3RfbmFtZX08L2NvZGU+IC0gRmlyc3QgbmFtZTxiciAvPgo8Y29kZT57XCRlbWFpbC5sYXN0X25hbWV9PC9jb2RlPiAtIExhc3QgbmFtZTxiciAvPgo8Y29kZT57XCRlbWFpbC5lbWFpbH08L2NvZGU+IC0gRW1haWw8YnIgLz4KPGNvZGU+e1wkZW1haWwuZGFzaGVkX3Bob25lfTwvY29kZT4gLSBQaG9uZSBudW1iZXIgd2l0aCBkYXNoZXMgZXZlcnkgMyBkaWdpdHM8YnIgLz4KPGNvZGU+e1wkZW1haWwucGhvbmV9PC9jb2RlPiAtIFBob25lIG51bWJlciAod2l0aG91dCBkYXNoZXMpPGJyIC8+Cjxjb2RlPntcJGVtYWlsLmNvdXBvbl9jb2RlX2lkfTwvY29kZT4gLSBVbmlxdWUgaWQgb2YgdGhlIGNvdXBvbiBjb2RlPGJyIC8+Cjxjb2RlPntcJGVtYWlsLmRiX3RpbWVzdGFtcH08L2NvZGU+IC0gVGltZXN0YW1wLCB3aGVuIHdhcyB0aGUgY291cG9uIGNvZGUgcmVnaXN0ZXJlZDxiciAvPgo8Y29kZT57XCRlbWFpbC5kYXNoZWRfY291cG9uX2NvZGV9PC9jb2RlPiAtIENvdXBvbiBjb2RlIHdpdGggZGFzaGVzIGV2ZXJ5IDQgZGlnaXRzPGJyIC8+Cjxjb2RlPntcJGVtYWlsLmNvdXBvbl9jb2RlfTwvY29kZT4gLSBDb3Vwb24gY29kZSAod2l0aG91dCBkYXNoZXMpPGJyIC8+PGJyIC8+CgpJdCBpcyBwb3NzaWJsZSB0byB1c2UgU21hcnR5IG1vZGlmaWVycyBvciBmaWx0ZXJzIGZvciB0aGUgdmFyaWFibGUgaW4gdGhlIGUtbWFpbCBtZXNzYWdlLCBzdWNoIGFzOiA8YnIgLz4KPGNvZGU+e1wkZW1haWwuZGJfdGltZXN0YW1wfGRhdGVfZm9ybWF0OiIlZCAlQiAlWSJ9PC9jb2RlPjxiciAvPjxiciAvPgpFT1Q7CgovLyAtLSBmcm9udC1lbmQgCgokbGFuZ1sncmVnaXN0ZXJfY291cG9uX2NvZGUnXSA9ICdSZWdpc3RlciBjb3Vwb24gY29kZSc7CiRsYW5nWydmaXJzdF9uYW1lJ10gPSAnRmlyc3QgbmFtZSc7CiRsYW5nWydsYXN0X25hbWUnXSA9ICdMYXN0IG5hbWUnOwokbGFuZ1snZW1haWwnXSA9ICdFLW1haWwnOwokbGFuZ1sncGhvbmUnXSA9ICdUZWxlcGhvbmUgbnVtYmVyJzsKJGxhbmdbJ3Rlcm1zX2FuZF9jb25kaXRpb25zJ10gPSAnVGVybXMgYW5kIENvbmRpdGlvbnMnOwokbGFuZ1sndGVybXNfYW5kX2NvbmRpdGlvbnNfYWdyZWUnXSA9ICdZZXMsIEkgYWNjZXB0JzsKJGxhbmdbJ25ld3NsZXR0ZXInXSA9ICdOZXdzbGV0dGVyJzsKJGxhbmdbJ25ld3NsZXR0ZXJfYWdyZWUnXSA9ICdZZXMsIEkgbGlrZSB0byByZWNlaXZlIHRoZSBuZXdzbGV0dGVyJzsKJGxhbmdbJ2NvdXBvbl9jb2RlJ10gPSAnQ291cG9uIGNvZGUnOwoKJGxhbmdbJ3Nfc19jb3Vwb25fY29kZV9yZWdpc3RlcmVkJ10gPSAnRGVhciAlcyAlcywgPGJyIC8+PGJyIC8+IFlvdXIgY291cG9uIGNvZGUgaGFzIGJlZW4gcmVnaXN0ZXJlZC4gSWYgeW91IHdvdWxkIGxpa2UgdG8gcmVnaXN0ZXIgYW5vdGhlciBjb3Vwb24gY29kZSwgcGxlYXNlIGVudGVyIHRoZSBuZXh0IGNvdXBvbiBjb2RlIGFuZCBhY2NlcHQgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zLic7CgokbGFuZ1snc19kZWxldGVfY291cG9uX2NvZGVfY29va2llJ10gPSAnV291bGQgeW91IGxpa2UgdXMgdG8gZGVsZXRlIHRoZSBzYXZlZCBkYXRhIHRoYXQgd2FzIGVudGVyZWQgaW50byB0aGUgZm9ybSBvciB3b3VsZCB5b3UgbGlrZSB0byByZWdpc3RlciBhIGNvdXBvbiBjb2RlIGZvciBzb21lb25lIGVsc2U/IDxiciAvPjxiciAvPiAgQ2xpY2sgPGEgaHJlZj0iJXMiPmhlcmU8L2E+IHRvIGNsZWFyIHRoZSBmb3JtJzsKCiRsYW5nWydqc19yZXF1aXJlZCddID0gJ1JlcXVpcmVkJzsKJGxhbmdbJ2pzX29wdGlvbmFsJ10gPSAnT3B0aW9uYWwnOwokbGFuZ1snanNfZW1haWwnXSA9ICdFbnRlciBhIHZhbGlkZSBlLW1haWwgYWRkcmVzcyc7CiRsYW5nWydqc19udW1iZXInXSA9ICdPbmx5IGVudGVyIGRpZ2l0cyc7CiRsYW5nWydqc19taW5sZW5ndGgnXSA9ICdFbnRlciB7MH0gZGlnaXRzJzsgCiRsYW5nWydqc19taW5sZW5ndGhfbXVsdGlwbGUnXSA9ICdFbnRlciB7MH0gZGlnaXRzIHBlciBmaWVsZCc7CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogY29tbW9uIGVycm9yJ3MgYW5kIG1lc3NhZ2VzCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1BsZWFzZSwgbWFrZSBzdXJlIHRoYXQgdXNlcnMgd2hvIG1hbmFnZSBVcENvdXBvbiBhcmUgcHJvdmlkZWQgd2l0aCAmcXVvdDtVcENvdXBvbiZxdW90OyByaWdodHMuJzsKCiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnVXBDb3Vwb24gaXMgc3VjY2VzZnVsbHkgZGVpbnN0YWxsZWQuJzsKCiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnQXJlIHlvdSBzdXJlPyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgZGVuaWVkIChcJyVzXCcpJzsKJGxhbmdbJ2FjY2Vzc2FsbG93ZWQnXSA9ICdBY2Nlc3MgYWxsb3dlZCc7CiRsYW5nWydub3RfYWxsb3dlZCddID0gJ1RoaXMgaXMgbm90IGFsbG93ZWQnOwokbGFuZ1snbm9fc19naXZlbiddID0gJ1lvdSBkaWQgbm90IGVudGVyIGEgXCclc1wnICc7IAokbGFuZ1snc19ub3RnaXZlbiddID0gJ1wnJXNcJyBpcyBub3QgZmlsbGVkIGluJzsKJGxhbmdbJ3Nfc19hbHJlYWR5Z2l2ZW4nXSA9ICclczogXCclc1wnIGhhcyBhbHJlYWR5IGJlZW4gZW50ZXJlZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZGF0ZXMnXSA9ICdPbmUgb3IgbW9yZSBkYXRlIGZpZWxkcyBhcmUgaW52YWxpZCc7CgokbGFuZ1sndGVtcGxhdGVfZXhpc3RzJ10gPSAnVGhpcyB0ZW1wbGF0ZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydlcnJvcmluc2VydGluZ3RlbXBsYXRlJ10gPSAnVGhlIGZhY3Rvcnkgc2V0dGluZ3MgZGVmYXVsdCB0ZW1wbGF0ZSBjYW5ub3QgYmUgb3BlbmVkJzsgCgokbGFuZ1snY291cG9uX2FjdGlvbl9taXNzaW5nJ10gPSAnQmVmb3JlIFwnQ291cG9uIFBlcmlvZHNcJyBjYW4gYmUgZW50ZXJlZCwgYWN0aXZlIFwnQ291cG9uIEFjdGlvbnNcJyBzaG91bGQgYmUgYXZhaWxhYmxlJzsKCiRsYW5nWydjb3Vwb25fcGVyaW9kX21pc3NpbmcnXSA9ICdCZWZvcmUgXCdQcml6ZXNcJyBjYW4gYmUgZW50ZXJlZCwgYWN0aXZlIFwnQ291cG9uIFBlcmlvZHNcJyBzaG91bGQgYmUgYXZhaWxhYmxlJzsKCiRsYW5nWydzX3NfY291cG9ucGVyaW9kX21pc21hdGNoJ10gPSAnVGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZSBvZiB0aGUgXCdDb3Vwb24gUGVyaW9kXCcgaGFzIHRvIGJlIGJldHdlZW4gJXMgYW5kICVzJzsgCgokbGFuZ1snbmVlZF9yZWdpc3RlcmVkX2N1c3RvbWVyJ10gPSAnVG8gZHJhdyBhIGNvdXBvbiBmb3IgdGhpcyBwZXJpb2QgKG1vcmUpIHJlZ2lzdGVyZWQgY3VzdG9tZXJzIGFyZSBuZWVkZWQnOyAKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBzaW5ndWxhciwgcGx1cmFsIG5vdW4KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKJGxhbmdbJ2FjdGlvbl9zJ10gPSAnQ291cG9uIEFjdGlvbic7CiRsYW5nWydhY3Rpb25fcCddID0gJ0NvdXBvbiBBY3Rpb25zJzsKCiRsYW5nWydwZXJpb2RfcyddID0gJ0NvdXBvbiBQZXJpb2QnOwokbGFuZ1sncGVyaW9kX3AnXSA9ICdDb3Vwb24gUGVyaW9kcyc7CgokbGFuZ1sncHJpemVfcyddID0gJ1ByaXplJzsKJGxhbmdbJ3ByaXplX3AnXSA9ICdQcml6ZXMnOwoKJGxhbmdbJ3dpbm5lcl9zJ10gPSAnV2lubmVyJzsKJGxhbmdbJ3dpbm5lcl9wJ10gPSAnV2lubmVycyc7CgokbGFuZ1snc3RhdGlzdGljc19zJ10gPSAnU3RhdGlzdGljJzsKJGxhbmdbJ3N0YXRpc3RpY3NfcCddID0gJ1N0YXRpc3RpY3MnOwoKJGxhbmdbJ3RlbXBsYXRlc19zJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1sndGVtcGxhdGVzX3AnXSA9ICdUZW1wbGF0ZXMnOwoKJGxhbmdbJ3ByZWZlcmVuY2VzX3MnXSA9ICdQcmVmZXJlbmNlJzsKJGxhbmdbJ3ByZWZlcmVuY2VzX3AnXSA9ICdQcmVmZXJlbmNlcyc7CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogYWN0aW9ucwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovLyAtLSBjb21tb24KCiRsYW5nWydhZGQnXSA9ICdBZGQnOwokbGFuZ1snZWRpdCddID0gJ0VkaXQnOwokbGFuZ1snZGVsZXRlJ10gPSAnRGVsZXRlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWwnOwokbGFuZ1snYXBwbHknXSA9ICdBcHBseSc7CiRsYW5nWydmYWN0b3J5J10gPSAnRmFjdG9yeSBzZXR0aW5ncyc7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWRfaXRlbXMnXSA9ICdEZWxldGUgc2VsZWN0ZWQgaXRlbXMnOyAKCi8vIC0tIHNfCgokbGFuZ1snc19hZGQnXSA9ICdBZGQgJXMnOwokbGFuZ1snc19lZGl0J10gPSAnRWRpdCAlcyc7CiRsYW5nWydzX2RlbGV0ZSddID0gJ0RlbGV0ZSAlcyc7CiRsYW5nWydzX2NoYW5nZV9zdGF0dXMnXSA9ICdDaGFuZ2Ugc3RhdHVzICVzJzsKJGxhbmdbJ3NfY2hhbmdlX2RlZmF1bHQnXSA9ICdDaGFuZ2UgZGVmYXVsdCAlcyc7CgokbGFuZ1snc19hZGRlZCddID0gJyVzIGFkZGVkJzsKJGxhbmdbJ3NfZWRpdGVkJ10gPSAnJXMgZWRpdGVkJzsKJGxhbmdbJ3NfZGVsZXRlZCddID0gJyVzIGRlbGV0ZWQnOwokbGFuZ1snc19jaGFuZ2VkX3N0YXR1cyddID0gJyVzIHN0YXR1cyBjaGFuZ2VkJzsKJGxhbmdbJ3NfY2hhbmdlZF9kZWZhdWx0J10gPSAnJXMgZGVmYXVsdCBjaGFuZ2VkJzsKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBtb2R1bGUgZG9jdW1lbnRhdGlvbgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgokbGFuZ1snaGVscCddID0gPDw8RU9UCgo8aDI+RG9jdW1lbnRhdGlvbjwvaDI+PGJyIC8+CgpUaGUgVXBDb3Vwb24gbW9kdWxlIGhhcyBiZWVuIGRldmVsb3BlZCBmb3IgYSBzaG9wIG93bmVycyBhc3NvY2lhdGlvbi4gRWFjaCB5ZWFyIHRoZSBhc3NvY2lhdGlvbiBvcmdhbml6ZXMgYSBsb3R0ZXJ5IGFtb25nc3QgaXRzIGN1c3RvbWVycy4gV2hlbiBvbmUgc3BlbmRzIGFuIHggYW1vdW50IGluIGEgcGFydGljaXBhdGluZyBzaG9wLCBvbmUgcmVjZWl2ZXMgYSB2b3VjaGVyIHdpdGggYSAnQ291cG9uIENvZGUnLiAKClRvIGpvaW4gdGhlIGxvdHRlcnksIHRoZSBjdXN0b21lciBoYXMgdG8gZW50ZXIgdGhlICdDb3Vwb24gQ29kZScgb24gdGhlIGFzc29zaWF0aW9uLXdlYnNpdGUsIHRvZ2V0aGVyIHdpdGggb3RoZXIgZGV0YWlscywgc3VjaCBhcyBuYW1lIGFuZCBhZGRyZXNzLiA8YnIgLz48YnIgLz4KCjxoMj5UaGUgYWRtaW4gaW50ZXJmYWNlIG9mIHRoaXMgbW9kdWxlIGhhcyB2YXJpb3VzIGZ1bmN0aW9uYWxpdGllczo8L2gyPjxiciAvPgoKPGI+Q291cG9uIEFjdGlvbnM8L2I+IC0gdGFiIDxiciAvPgoKSGVyZSB5b3UgY2FuIGFkZCBzZXZlcmFsIGxvdHRlcmllcy4gPGJyIC8+CgpTdWNoIGFzIGEgc3VtbWVyIGxvdHRlcnkgb3IgYSB3aW50ZXIgbG90dGVyeS4gRWFjaCBsb3R0ZXJ5IG5lZWRzIHRvIGhhdmUgYSB0aXRsZSwgYWxpYXMsIGRlc2NyaXB0aW9uLCBzdGFydGRhdGUsIGVuZGRhdGUgYW5kIHN0YXR1cy4gPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBUaGUgc3RhcnRkYXRlIG9mIHRoZSAnQ291cG9uIEFjdGlvbicgYWx3YXlzIGhhcyB0byBiZSBhbiBlYXJsaWVyIGRhdGUgdGhhbiB0aGUgZW5kZGF0ZS4gPGJyIC8+PGJyIC8+Cgo8Yj5Db3Vwb24gUGVyaW9kczwvYj4gLSB0YWIgPGJyIC8+CgpIZXJlIHRoZSBwZXJpb2RzIGluIHdoaWNoIHRoZSBkcmF3KHMpIHRha2UocykgcGxhY2UgY2FuIGJlIGFkZGVkLiA8YnIgLz4KClRoZSBzdW1tZXIgbG90dGVyeSBjb3VsZCBmb3IgaW5zdGFuY2UgaGF2ZSBmb3VyIHdlZWtseSBkcmF3cyBhbmQgYSBmaW5hbCBkcmF3IGF0IHRoZSBlbmQgb2YgdGhlIHBlcmlvZC4gRWFjaCAnIENvdXBvbiBQZXJpb2QnIG5lZWRzIHRvIGhhdmUgYSBjb3Vwb25fYWN0aWUgKGFzIHN1Ym1pdHRlZCB1bmRlciAnIENvdXBvbiBBY3Rpb25zJyksIHRpdGxlLCBzdGFydGRhdGUsIGVuZGRhdGUsIEZpbmFsIGRyYXcgKHllcy9ubykgYW5kIHN0YXR1cy4gPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBUaGUgc3RhcnRkYXRlIG9mIHRoZSAnQ291cG9uIFBlcmlvZCcgYWx3YXlzIGhhcyB0byBiZSBhbiBlYXJsaWVyIGRhdGUgdGhhbiB0aGUgZW5kZGF0ZSBhbmQgaGFzIHRvIG9jY3VyIHdpdGhpbiB0aGUgc3RhcnQtIGFuZCBlbmRkYXRlIG9mIHRoZSAnIENvdXBvbiBBY3Rpb24nLjxiciAvPjxiciAvPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVXN1YWxseSBhbGwgY3VzdG9tZXJzIHBhcnRpY2lwYXRpbmcgaW4gdGhlIGxvdHRlcnkgaGF2ZSBhIGNoYW5jZSBvbiB3aW5uaW5nIHRoZSBmaW5hbCBkcmF3LiBUaGVyZWZvcmUgdGhlIHBlcmlvZCBvZiB0aGUgJ0ZpbmFsIGRyYXcnIHVzdWFsbHkgc3RhcnRzIGF0IHRoZSBzdGFydGRhdGUgb2YgdGhlICdDb3Vwb24gQWN0aW9uJyB1cCBhbmQgdW50aWwgdGhlIGVuZGRhdGUgb2YgdGhlICdDb3Vwb24gQWN0aW9uJy4gIDxiciAvPjxiciAvPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj5UaXA8L2I+PC9mb250PiBNYWtlIHN1cmUgdGhhdCB0aGUgc3RhcnRkYXRlIHN0YXJ0cyBhdCAwMDowMDowMCBhbmQgZW5kcyBhdCAyMzo1OTo1OS4gSW4gZG9pbmcgc28sIGEgbG90dGVyeSBvciBwZXJpb2QgcnVucyBmb3IgMjQgaG91cnMgKGFuIGVudGlyZSBjYWxlbmRlciBkYXkpLjxiciAvPjxiciAvPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj5UaXA8L2I+PC9mb250PiBUaGUgJ0NvdXBvbiBQZXJpb2QnIGlzIGJ5IGRlZmF1bHQgc29ydGVkIGJ5IGVuZGRhdGUuIEJ5IGFkanVzdGluZyB0aGUgZW5kZGF0ZS10aW1lIHdpdGgganVzdCBvbmUgc2Vjb25kLCB0aGUgb3JkZXIgaXMgYWRqdXN0ZWQgYXMgd2VsbC4gSXQgd291bGQgYmUgc3RyYW5nZSBpZiAtIGF0IHRoZSBmcm9udGVuZCAtIHRoZSBGaW5hbCBkcmF3IGlzIHNob3duIHByaW9yIHRvIHRoZSBsYXN0IGRyYXcobm90IHRoZSBGaW5hbCBkcmF3KS4gVGhlcmVmb3JlIGl0IGlzIGFkdmlzZWQgdG8gLSBpZiB0aGUgRmluYWwgZHJhdyBoYXMgdGhlIHNhbWUgZW5kZGF0ZSBhcyB0aGUgbGFzdCAobm9uLWZpbmFsKSBkcmF3IC0gYWRqdXN0IHRoZSBlbmRkYXRlLXRpbWUgb2Ygb25lIG9mIHRoZW0sIGluIG9yZGVyIHRvIGhhdmUgdG8gcmlnaHQgb3JkZXIgc2hvd24gYXQgdGhlIGZyb250ZW5kLjxiciAvPjxiciAvPgoKPGI+UHJpemVzPC9iPiAtIHRhYiA8YnIgLz4KClByaXplcyBjYW4gYmUgY29ubmVjdGVkIHRvIGVhY2ggJ0NvdXBvbiBBY3Rpb24nIG9yICdDb3Vwb24gUGVyaW9kJy4gV2hlbiBhZGRpbmcgYSBwcml6ZSwgQ291cG9uIENvZGUsIENvdXBvbiBBY3Rpb24sIFByaXplIGNvZGUsIHRpdGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyIGFuZCBzdGF0dXMgaGF2ZSB0byBiZSBlbnRlcmVkLiA8YnIgLz48YnIgLz4KCjxiPldpbm5lcnM8L2I+IC0gdGFiIDxiciAvPgoKT3V0IG9mIHRoZSByZWdpc3RlcmVkIGNvdXBvbiBjb2Rlcywgb25lIG9yIG1vcmUgd2lubmVycyBjYW4gYmUgZHJhd24uIEFmdGVyIHNlbGVjdGluZyAnQ291cG9uIEFjdGlvbicsICdDb3Vwb24gUGVyaW9kJyBhbmQgcHJpemUsIG9uZSBjYW4gY2xpY2sgb24gdGhlICIgRHJhdyBjb3Vwb24nIGJ1dHRvbi4gVGhlIHdpbm5lciBpcyByYW5kb21seSBkcmF3biBmcm9tIHRoZSBkYXRhYmFzZSB3aXRoIHJlZ2lzdGVyZWQgY291cG9uIGNvZGVzIGFuZCBpcyBzaG93bi4gPGJyIC8+PGJyIC8+Cgo8Yj5TdGF0aXN0aWNzPC9iPiAtIHRhYiA8YnIgLz4KCldoZW4gcmVnaXN0ZXJpbmcgYSBjb3Vwb24gY29kZSwgYSB0aW1lc3RhbXAgaXMgZ2VuZXJhdGVkIGFuZCBzYXZlZC4gQnkgdXNpbmcgdGhpcyB0aW1lc3RhbXAgdG9nZXRoZXIgd2l0aCB0aGUgc3RhcnQtIGFuZCBlbmRkYXRlIG9mIGEgJyBDb3Vwb24gQWN0aW9uJyBhbmQgJ0NvdXBvbiBQZXJpb2QgdGhlIHN0YXRpc3RpY3MgYXJlIGNyZWF0ZWQuIDxiciAvPjxiciAvPgoKPGI+VGVtcGxhdGVzPC9iPiAtIHRhYiA8YnIgLz4KClRoZSBVcENvdXBvbiBtb2R1bGUgaGFzIHZhcmlvdXMgdGVtcGxhdGVzLCBzdWNoIGFzIHRoZSB0ZW1wbGF0ZSBSZWdpc3RyYXRpb24sIFdpbm5lciBhbmQgUHJpemVzLiBUaGUgdGVtcGxhdGVzIGFyZSB1c2VkIGZvciB0aGUgZnJvbnRlbmQuIFdoZW4gYWRkaW5nIGEgdGVtcGxhdGVzLCBhIG5hbWUsIHRlbXBsYXRlIHR5cGUgYW5kIHRlbXBsYXRlIGNvZGUgY2FuIGJlIGVudGVyZWQuIDxiciAvPjxiciAvPgoKQnkgdXNpbmcgdGhlIGZhY3Rvcnkgc2V0dGluZ3MgYnV0dG9uLCB0aGUgdGVtcGxhdGUgY29kZSBmaWVsZCBhdXRvbWF0aWNhbGx5IGlzIHNldCB0byB1c2UgdGhlIGRlZmF1bHQgdGVtcGxhdGUuIDxiciAvPjxiciAvPgoKPGI+UHJlZmVyZW5jZXM8L2I+IC0gdGFiIDxiciAvPgoKQSBjdXN0b21lciB3aG8gaGFzIHJlZ2lzdGVyZWQgaGlzICdDb3Vwb24gQ29kZScsIHdpbGwgcmVjZWl2ZSBhIGNvbmZpcm1hdGlvbiBieSBlLW1haWwsIGlmIGFsbCBlLW1haWwgcHJlZmVyZW5jZXMgYXJlIGNvcnJlY2x0eSBjb21wbGV0ZWQuIDxiciAvPjxiciAvPgoKPGgyPlN1cHBvcnQ8L2gyPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgY21zIGRldmVsb3BtZW50IGZvcmdlIGF0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmciPmRldi5jbXNtYWRlc2ltcGxlLm9yZzwvYT4uPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8bGk+VGhlIGF1dGhvcihzKSwgYXJub3VkIGV0IGFsbCBjYW4gc29tZXRpbWVzIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yKHMpIGRpcmVjdGx5LjwvbGk+ICAKPC91bD4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0Cm9mIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPmxpY2Vuc2U8L2E+IGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KCjxoMj5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gyPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTEsIEFybm91ZCB2YW4gU3VzdGVyZW4gPGEgaHJlZj0ibWFpbHRvOmFybm91ZEB1cHNlcnZpY2UubmwiPiZsdDthcm5vdWRAdXBzZXJ2aWNlLm5sJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KCjxzdHJvbmc+U3VwcG9ydCBtb3JlIG1vZHMgbGlrZSB0aGlzOjwvc3Ryb25nPgoKPHA+Cjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZW5jcnlwdGVkIiB2YWx1ZT0iLS0tLS1CRUdJTiBQS0NTNy0tLS0tTUlJSFR3WUpLb1pJaHZjTkFRY0VvSUlIUURDQ0J6d0NBUUV4Z2dFd01JSUJMQUlCQURDQmxEQ0JqakVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnVEFrTkJNUll3RkFZRFZRUUhFdzFOYjNWdWRHRnBiaUJXYVdWM01SUXdFZ1lEVlFRS0V3dFFZWGxRWVd3Z1NXNWpMakVUTUJFR0ExVUVDeFFLYkdsMlpWOWpaWEowY3pFUk1BOEdBMVVFQXhRSWJHbDJaVjloY0dreEhEQWFCZ2txaGtpRzl3MEJDUUVXRFhKbFFIQmhlWEJoYkM1amIyMENBUUF3RFFZSktvWklodmNOQVFFQkJRQUVnWUFuTFd2allpMmNRWUM0VHhZbFNobWI4TDhtVGYzeHdWaUpVNWt5emFKVlJrQm5XL0pCRlQwUkNvN1JGR1dRWUxPSzZCQjZuZzk2bmMxSE9hQ3htSDZpcTJNSnFTditFODExaENNZUE4eFo3cXpKdHdDODZOaEZzbnlZbm1veFl0VFlxLzBOZ3BkL2ozVDlON0U5WFUzMENFSXZWbzZDMGZ4T3ZlQW5LSitqWWpFTE1Ba0dCU3NPQXdJYUJRQXdnY3dHQ1NxR1NJYjNEUUVIQVRBVUJnZ3Foa2lHOXcwREJ3UUlFbVpWb1RoNklVV0FnYWd4eXpYOVN6d295T2E0ZmR6OTJzN1pybXcxNUdidGVMaXpBbWhyQ0JhVU9zM1MxaVYzZU5TTiswSGtUcUF2b0RKYnZoMGsxeW1qWmFQazA1YlVhWTE0anN0WThLK2pxMWlTVlRpSWNIWXN5Y2pWQUpPRjdGdk52ZFBodmZyTGN3MGRXRDJaaTZuckNCZnVRd2pwdmJTOUJ3K3p1d2prLytVRHVCbDNQc0ttUUxUMU03a0JJaVJTcDFtVFh1eUQrdjNhYzZLL0VIem9ucFpnck9qUHQvcGZpTGY2R3RYeEhXMmdnZ09ITUlJRGd6Q0NBdXlnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQ0JqakVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnVEFrTkJNUll3RkFZRFZRUUhFdzFOYjNWdWRHRnBiaUJXYVdWM01SUXdFZ1lEVlFRS0V3dFFZWGxRWVd3Z1NXNWpMakVUTUJFR0ExVUVDeFFLYkdsMlpWOWpaWEowY3pFUk1BOEdBMVVFQXhRSWJHbDJaVjloY0dreEhEQWFCZ2txaGtpRzl3MEJDUUVXRFhKbFFIQmhlWEJoYkM1amIyMHdIaGNOTURRd01qRXpNVEF4TXpFMVdoY05NelV3TWpFek1UQXhNekUxV2pDQmpqRUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdUQWtOQk1SWXdGQVlEVlFRSEV3MU5iM1Z1ZEdGcGJpQldhV1YzTVJRd0VnWURWUVFLRXd0UVlYbFFZV3dnU1c1akxqRVRNQkVHQTFVRUN4UUtiR2wyWlY5alpYSjBjekVSTUE4R0ExVUVBeFFJYkdsMlpWOWhjR2t4SERBYUJna3Foa2lHOXcwQkNRRVdEWEpsUUhCaGVYQmhiQzVqYjIwd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNRkhUdDM4Uk14TFhKeU8yU21TK05kbDcyVDdvS0o0dTR1dys2YXdudEFMV2gwM1Bld21JSnV6YkFMU2NzVFM0c1pvUzFmS2NpQkdvaDExZ0lmSHp5bHZrZE5lL2hKbDY2L1JHcXJqNXJGYjA4c0FBQk5UekRUaXFxTnBKZUJzWXMvYzJhaUdvenB0WDJSbG5Ca3RIK1NVTnBBYWpXNzI0TnYyV3ZoaWY2c0ZBZ01CQUFHamdlNHdnZXN3SFFZRFZSME9CQllFRkphZmZMdkdieGU5V1Q5UzF3b2I3QkRXWkpSck1JRzdCZ05WSFNNRWdiTXdnYkNBRkphZmZMdkdieGU5V1Q5UzF3b2I3QkRXWkpScm9ZR1VwSUdSTUlHT01Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQk1DUTBFeEZqQVVCZ05WQkFjVERVMXZkVzUwWVdsdUlGWnBaWGN4RkRBU0JnTlZCQW9UQzFCaGVWQmhiQ0JKYm1NdU1STXdFUVlEVlFRTEZBcHNhWFpsWDJObGNuUnpNUkV3RHdZRFZRUURGQWhzYVhabFgyRndhVEVjTUJvR0NTcUdTSWIzRFFFSkFSWU5jbVZBY0dGNWNHRnNMbU52YllJQkFEQU1CZ05WSFJNRUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCQUlGZk9sYWFnRnJsNzEranE2T0tpZGJXRlNFK1E0RnFST3ZkZ0lPTnRoKzhrU0svL1kvNGlodUU0WW12em41Y2VFM1MvaUJTUVFNanl2YitzMlRXYlFZRHdjcDEyOU9QSWJEOWVwZHI0dEpPVU5pU29qdzdCSHdZUmlQaDU4UzF4R2xGZ0hGWHdyRUJiM2RnTmJNVWErdTRxZWN0c01BWHBWSG5EOXdJeWZtSE1ZSUJtakNDQVpZQ0FRRXdnWlF3Z1k0eEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlFd0pEUVRFV01CUUdBMVVFQnhNTlRXOTFiblJoYVc0Z1ZtbGxkekVVTUJJR0ExVUVDaE1MVUdGNVVHRnNJRWx1WXk0eEV6QVJCZ05WQkFzVUNteHBkbVZmWTJWeWRITXhFVEFQQmdOVkJBTVVDR3hwZG1WZllYQnBNUnd3R2dZSktvWklodmNOQVFrQkZnMXlaVUJ3WVhsd1lXd3VZMjl0QWdFQU1Ba0dCU3NPQXdJYUJRQ2dYVEFZQmdrcWhraUc5dzBCQ1FNeEN3WUpLb1pJaHZjTkFRY0JNQndHQ1NxR1NJYjNEUUVKQlRFUEZ3MHhNVEV3TWpJeE1USXdNelJhTUNNR0NTcUdTSWIzRFFFSkJERVdCQlJsRjd2Vlg1TFgyWDVJdFk3Y213QS9SWlRBdFRBTkJna3Foa2lHOXcwQkFRRUZBQVNCZ0lyeVlla0hoU3IrZldIZW1VL1g2c1lxZmRCdVk0OWQ3K2tDSXBtZGJ0S1JaUyt6Qy84MVdoejlQTGhodU5sV1NyeFNjeW1RZXgrVm5GZ1NnZnJHUDE3NE56d0tJczhyZEtZeUhwQ2hOWmxWUDdwSmVBcmJ0dW5kVWlzdnJwYzh3UHhscmpOQ014UkUvck5YSGVQbUd1dUtidlJqaTNqMG5JV2ZrRjZ1QnpjTy0tLS0tRU5EIFBLQ1M3LS0tLS0KIj4KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbG9iamVjdHMuY29tL2VuX1VTL2kvYnRuL2J0bl9kb25hdGVDQ19MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lISI+CjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9ubF9OTC9pL3Njci9waXhlbC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgo8L2Zvcm0+PGJyLz48YnIvPgoKPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4KCjxiciAvPgoKRU9UOwoKJGxhbmdbJ2hlbHBfYWN0aW9uJ10gPSA8PDxFT1QKCjxiciAvPgo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSdzaG93X3JlZ2lzdGVyJ308L2NvZGU+IC0gU2hvdyB0aGUgcmVnaXN0cmF0aW9uIHBhZ2UuIDxiciAvPgo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSdzaG93X3ByaXplJ308L2NvZGU+IC0gU2hvdyB0aGUgcHJpemUgcGFnZS4gPGJyIC8+Cjxjb2RlPntVcENvdXBvbiBhY3Rpb249J3Nob3dfd2lubmVyJ308L2NvZGU+IC0gU2hvdyB0aGUgd2lubmVyIHBhZ2UuIDxiciAvPjxiciAvPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gSWYgbm8gYWN0aW9uIGlzIHNwZWNpZmllZCwgYSB3YXJuaW5nIHdpbGwgYmUgc2hvd24uIDxiciAvPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gRm9yIHRoZSAnc2hvd19yZWdpc3RlcicgYWN0aW9uIGl0J3MgcG9zc2libGUgdG8gY2hlY2sgZmllbGQgdmFsdWVzIHZpYSBKYXZhU2NyaXB0LiBUb2RvIHNvIGJlIHN1cmUgdG8gbG9hZCBqcXVlcnkudmFsaWRhdGUuanMgeW91IGNhbiBmaW5kIHRoaXMgZmlsZSBpbnRvIHRoZSBtb2R1bGVzL1VwQ291cG9uL2pzIGZvbGRlci48YnIgLz48YnIgLz4KCjxiPiogQmVmb3JlIHRoZSBjb3Vwb24gYWN0aW9uIHRha2VzIHBsYWNlIHRoZSB1cGNvdXBvbl9jb2RlIGRhdGFiYXNlIG11c3QgYmUgZmlsbGVkIHdpdGggY29kZXMuIFRoZSB3ZWJkZXZlbG9wZXIgc2hvdWxkIHdyaXRlIGEgcXVlcnkgdG8gc2V0IGNvdXBvbl9wcml6ZV9pZCB0byAnMCcgYW5kIGNvdXBvbl9jb2RlIHRvIGEgMTYgZGlnaXQgY29kZS4gRm9yIGV4YW1wbGU6IElOU0VSVCBJTlRPIGNtc19tb2R1bGVfdXBjb3Vwb25fY29kZSBWQUxVRVMgKCcnLCAnMCcsICcnLCAnMDAwMDAwMDAwMDAwMDAwMCcsICcnKTwvYj48YnIgLz4KCjxiciAvPgoKRU9UOwoKJGxhbmdbJ2hlbHBfdGVtcGxhdGUnXSA9IDw8PEVPVAo8YnIgLz4KPGNvZGU+e1VwQ291cG9uIGFjdGlvbj0nc2hvd19yZWdpc3RlcicgdGVtcGxhdGU9J25hbWVfb2ZfcmVnaXN0ZXJfdGVtcGxhdGUnfTwvY29kZT4gPGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBJZiBubyB0ZW1wbGF0ZSBpcyBzcGVjaWZpZWQsIG9yIHRoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZSBpcyB1bmtub3duLCB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSB3aWxsIGJlIHVzZWQuIDwvYnIgPjwvYnIgPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gSWYgbm8gc3RhbmRhcmQgdGVtcGxhdGUgY2FuIGJlIGZvdW5kLCB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSAoZmFjdG9yeSBzZXR0aW5ncykgc2hhbGwgYmUgdXNlZC4gPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBUaGUgYXZhaWxhYmxlIHRlbXBsYXRlcyBjYW4gYmUgZm91bmQgdW5kZXIgdGhlICdUZW1wbGF0ZXMnICB0YWIuIDxiciAvPgoKPGJyIC8+CkVPVDsKCiRsYW5nWydoZWxwX2NvdXBvbl9hY3Rpb25faWQnXSA9IDw8PEVPVAo8YnIgLz4KPGNvZGU+e1VwQ291cG9uIGFjdGlvbj0nc2hvd19wcml6ZScgY291cG9uX2FjdGlvbl9pZD0nMSd9PC9jb2RlPiAtIFNob3cgYWxsIHByaXplcyBiZWxvbmdpbmcgdG8gY291cG9uX2FjdGlvbl9pZCAnMScuIDxiciAvPjxiciAvPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVGhlICdjb3Vwb25fYWN0aW9uX2lkJyBjYW4gYmUgZm91bmQgdW5kZXIgJ0NvdXBvbiBBY3Rpb25zJyB0YWIuIEl0IGlzIHNob3duIGluIGZyb250IG9mIHRoZSB0aXRsZSBvZiBlYWNoIHNwZWNpZmljIGFjdGlvbi4gJ0NvdXBvbiBBY3Rpb25zJyB3aGljaCBhcmUgc2V0IHRvIGluYWN0aXZlIGFyZSBub3Qgc2hvd24uCgoKPGJyIC8+CkVPVDsKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBldmVudCBkZXNjcmlwdGlvbiBhbmQgaGVscAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uQWN0aW9uQWRkZWQnXSA9ICdTZW50IHdoZW4gYW4gYWN0aW9uIGlzIGFkZGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvbkFjdGlvbkFkZGVkJ10gPSA8PDxFT1QKPHA+eCBTZW50IHdoZW4gYW4gYWN0aW9uIGlzIGFkZGVkPC9wPgoKPGgzPlBhcmFtZXRlcnM8L2gzPgo8dWw+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uQWN0aW9uRWRpdGVkJ10gPSAnU2VudCB3aGVuIGFuIGFjdGlvbiBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uQWN0aW9uRWRpdGVkJ10gPSA8PDxFT1QKPHA+U2VudCB3aGVuIGFuIGFjdGlvbiBpcyBlZGl0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjwvdWw+CkVPVDsKCiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25BY3Rpb25EZWxldGVkJ10gPSAnU2VudCB3aGVuIGFuIGFjdGlvbiBpcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvbkFjdGlvbkRlbGV0ZWQnXSA9IDw8PEVPVAo8cD5TZW50IHdoZW4gYW4gYWN0aW9uIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUGVyaW9kQWRkZWQnXSA9ICdTZW50IHdoZW4gYSBwZXJpb2QgaXMgYWRkZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUGVyaW9kQWRkZWQnXSA9IDw8PEVPVAo8cD54IFNlbnQgd2hlbiBhIHBlcmlvZCBpcyBhZGRlZDwvcD4KCjxoMz5QYXJhbWV0ZXJzPC9oMz4KPHVsPgo8bGk+PC9saT4KPC91bD4KRU9UOwoKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblBlcmlvZEVkaXRlZCddID0gJ1NlbnQgd2hlbiBhIHBlcmlvZCBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUGVyaW9kRWRpdGVkJ10gPSA8PDxFT1QKPHA+U2VudCB3aGVuIGEgcGVyaW9kIGlzIGVkaXRlZDwvcD4KCjxoMz5QYXJhbWV0ZXJzPC9oMz4KPHVsPgo8bGk+PC9saT4KPC91bD4KRU9UOwoKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblBlcmlvZERlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSBwZXJpb2QgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QZXJpb2REZWxldGVkJ10gPSA8PDxFT1QKPHA+U2VudCB3aGVuIGEgcGVyaW9kIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJpemVBZGRlZCddID0gJ1NlbnQgd2hlbiBhIHByaXplIGlzIGFkZGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByaXplQWRkZWQnXSA9IDw8PEVPVAo8cD54IFNlbnQgd2hlbiBhIHByaXplIGlzIGFkZGVkPC9wPgoKPGgzPlBhcmFtZXRlcnM8L2gzPgo8dWw+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJpemVFZGl0ZWQnXSA9ICdTZW50IHdoZW4gYSBwcml6ZSBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJpemVFZGl0ZWQnXSA9IDw8PEVPVAo8cD5TZW50IHdoZW4gYSBwcml6ZSBpcyBlZGl0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjwvdWw+CkVPVDsKCiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25Qcml6ZURlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSBwcml6ZSBpcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByaXplRGVsZXRlZCddID0gPDw8RU9UCjxwPlNlbnQgd2hlbiBhIHByaXplIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uV2lubmVyQWRkZWQnXSA9ICdTZW50IHdoZW4gYSB3aW5uZXIgaXMgYWRkZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uV2lubmVyQWRkZWQnXSA9IDw8PEVPVAo8cD54IFNlbnQgd2hlbiBhIHdpbm5lciBpcyBhZGRlZDwvcD4KCjxoMz5QYXJhbWV0ZXJzPC9oMz4KPHVsPgo8bGk+PC9saT4KPC91bD4KRU9UOwoKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbldpbm5lckVkaXRlZCddID0gJ1NlbnQgd2hlbiBhIHdpbm5lciBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uV2lubmVyRWRpdGVkJ10gPSA8PDxFT1QKPHA+U2VudCB3aGVuIGEgd2lubmVyIGlzIGVkaXRlZDwvcD4KCjxoMz5QYXJhbWV0ZXJzPC9oMz4KPHVsPgo8bGk+PC9saT4KPC91bD4KRU9UOwoKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbldpbm5lckRlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSB3aW5uZXIgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25XaW5uZXJEZWxldGVkJ10gPSA8PDxFT1QKPHA+U2VudCB3aGVuIGEgd2lubmVyIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uVGVtcGxhdGVBZGRlZCddID0gJ1NlbnQgd2hlbiBhIHRlbXBsYXRlIGlzIGFkZGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblRlbXBsYXRlQWRkZWQnXSA9IDw8PEVPVAo8cD54IFNlbnQgd2hlbiBhIHRlbXBsYXRlIGlzIGFkZGVkPC9wPgoKPGgzPlBhcmFtZXRlcnM8L2gzPgo8dWw+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uVGVtcGxhdGVFZGl0ZWQnXSA9ICdTZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uVGVtcGxhdGVFZGl0ZWQnXSA9IDw8PEVPVAo8cD5TZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBlZGl0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjwvdWw+CkVPVDsKCiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25UZW1wbGF0ZURlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblRlbXBsYXRlRGVsZXRlZCddID0gPDw8RU9UCjxwPlNlbnQgd2hlbiBhIHRlbXBsYXRlIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJlZmVyZW5jZUFkZGVkJ10gPSAnU2VudCB3aGVuIGEgcHJlZmVyZW5jZSBpcyBhZGRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QcmVmZXJlbmNlQWRkZWQnXSA9IDw8PEVPVAo8cD54IFNlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgYWRkZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjwvdWw+CkVPVDsKCiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QcmVmZXJlbmNlRWRpdGVkJ10gPSAnU2VudCB3aGVuIGEgcHJlZmVyZW5jZSBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJlZmVyZW5jZUVkaXRlZCddID0gPDw8RU9UCjxwPlNlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgZWRpdGVkPC9wPgoKPGgzPlBhcmFtZXRlcnM8L2gzPgo8dWw+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJlZmVyZW5jZURlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSBwcmVmZXJlbmNlIGlzIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJlZmVyZW5jZURlbGV0ZWQnXSA9IDw8PEVPVAo8cD5TZW50IHdoZW4gYSBwcmVmZXJlbmNlIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgojCiMgRU9GCiMK]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/fa_FA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1VwQ291cG9uIE1vZHVsZSc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnQSBtb2R1bGUgdG8gc2V0dXAgYW4gb25saW5lIGxvdHRlcnksIGNvdXBvbiBjb2RlIHJlZ2lzdHJhdGlvbiBzeXN0ZW0uJzsKJGxhbmdbJ2FwcHJvdmVfc3RhdHVzJ10gPSAnU2V0IHN0YXR1cyB0byAmIzAzOTtBY3RpdmUmIzAzOTsnOwokbGFuZ1sncmV2ZXJ0X3N0YXR1cyddID0gJ1NldCBzdGF0dXMgdG8gJiMwMzk7SW5hY3RpdmUmIzAzOTsnOwokbGFuZ1snYXBwcm92ZV9kZWZhdWx0J10gPSAnU2V0IGRlZmF1bHQgdG8gJiMwMzk7QWN0aXZlJiMwMzk7JzsKJGxhbmdbJ3JldmVydF9kZWZhdWx0J10gPSAnU2V0IGRlZmF1bHQgdG8gJiMwMzk7SW5hY3RpdmUmIzAzOTsnOwokbGFuZ1snYWN0aXZlJ10gPSAn2YHYudin2YQnOwokbGFuZ1snaW5hY3RpdmUnXSA9ICfYutuM2LEg2YHYudin2YQnOwokbGFuZ1sneWVzJ10gPSAn2KjZhNmHJzsKJGxhbmdbJ25vJ10gPSAn2K7bjNixJzsKJGxhbmdbJ3RpdGxlJ10gPSAn2LnZhtmI2KfZhic7CiRsYW5nWydhbGlhcyddID0gJ9mG2KfZhSDZhdiz2KrYudin2LEnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICfYqtmI2LbbjNit2KfYqic7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAn2KrYp9ix24zYriDYtNix2YjYuSc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ9iq2KfYsduM2K4g2b7Yp9uM2KfZhic7CiRsYW5nWydzdGF0dXMnXSA9ICdTdGF0dXMnOwokbGFuZ1snc2VsZWN0J10gPSAn2KfZhtiq2K7Yp9ioJzsKJGxhbmdbJ2FjdGlvbiddID0gJ0NvdXBvbiBhY3Rpb24nOwokbGFuZ1snaXNfZmluYWwnXSA9ICdGaW5hbCBEcmF3Pyc7CiRsYW5nWydwZXJpb2QnXSA9ICdDb3Vwb24gcGVyaW9kJzsKJGxhbmdbJ3ByaXplX2NvZGUnXSA9ICdQcml6ZSBjb2RlJzsKJGxhbmdbJ251bWJlciddID0gJ9i02YXYp9ix2YcnOwokbGFuZ1sndG90YWxfbnVtYmVyJ10gPSAnVG90YWwnOwokbGFuZ1snZnJlZV9udW1iZXInXSA9ICdBdmFpbGFibGUnOwokbGFuZ1snZ2l2ZW5fbnVtYmVyJ10gPSAnQWxsb3R0ZWQnOwokbGFuZ1snYWN0aW9uX3BlcmlvZCddID0gJ0NvdXBvbiBBY3Rpb24gLyBDb3Vwb24gUGVyaW9kJzsKJGxhbmdbJ2RyYXdfY291cG9uJ10gPSAnRHJhdyBDb3Vwb24nOwokbGFuZ1snd2l0aGRyYXdfY291cG9uJ10gPSAnV2l0aGRyYXcgQ291cG9uJzsKJGxhbmdbJ3JlZ2lzdHJhdGlvbnMnXSA9ICdSZWdpc3RyYXRpb25zJzsKJGxhbmdbJ25hbWUnXSA9ICfZhtin2YUnOwokbGFuZ1snZGVmYXVsdCddID0gJ9m+24zYtCZ6d25qO9mB2LHYtic7CiRsYW5nWyd0ZW1wbGF0ZV90eXBlJ10gPSAnVGVtcGxhdGUgdHlwZSc7CiRsYW5nWyd0ZW1wbGF0ZV9yZWdpc3RlciddID0gJ1RlbXBsYXRlIHJlZ2lzdHJhdGlvbic7CiRsYW5nWyd0ZW1wbGF0ZV93aW5uZXInXSA9ICdUZW1wbGF0ZSB3aW5uZXInOwokbGFuZ1sndGVtcGxhdGVfcHJpemUnXSA9ICdUZW1wbGF0ZSBwcml6ZSc7CiRsYW5nWyd0ZW1wbGF0ZV9jb2RlJ10gPSAnVGVtcGxhdGUgY29kZSc7CiRsYW5nWydwcmVmZXJlbmNlc191bmRlcmNvbnN0cnVjdGlvbiddID0gJ0N1cnJlbnRseSBwcmVmZXJlbmNlcyBhcmUgbm90IGFwcGxpZWQsIHRoZSBhZG1pbiBpbnRlcmZhY2Ugd2lsbCBzYXZlIHRoZSBkYXRhLic7CiRsYW5nWydwX3NlY3Rpb25fZW1haWxfcmVnaXN0ZXJlZF9jdXN0b21lciddID0gJ0UtbWFpbCBjdXN0b21lciBhZnRlciByZWdpc3RyYXRpb24gb2YgY291cG9uIGNvZGU/JzsKJGxhbmdbJ3BfZW1haWxfcmVnaXN0ZXJlZF90cnVlJ10gPSAnQ3VycnJlbnRseSBjdXN0b21lciByZWNlaXZlIGUtbWFpbCBtZXNzYWdlcywgYWxsIHByZWZlcmVuY2VzIGFyZSBjb21wbGV0ZWQgY29ycmVjdGx5Lic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfZmFsc2UnXSA9ICdDdXJyZW50bHkgY3VzdG9tZXIgZG9lcyA8dT5ub3Q8L3U+IHJlY2VpdmUgZS1tYWlsIG1lc3NhZ2VzLiBOb3QgYWxsIHByZWZlcmVuY2VzIGFyZSBjb21wZXRlZCBjb3JyZWN0bHkuJzsKJGxhbmdbJ3BfZW1haWxfcmVnaXN0ZXJlZF9jaGVjayddID0gJ1llcyBpcyBvbiwgbm8gaXMgb3V0JzsKJGxhbmdbJ3BfZW1haWxfcmVnaXN0ZXJlZF9zdWJqZWN0J10gPSAnU3ViamVjdCBvZiB0aGUgZS1tYWlsIG1lc3NhZ2UnOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3N1YmplY3RfZGVmYXVsdCddID0gJ1RoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmcnOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnXSA9ICdFLW1haWwgYWRkcmVzcyBzZW5kZXInOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWxfaGVscCddID0gJ0JlIGF3YXJlISBTb21lIHByb3ZpZGVycyBvbmx5IGFsbG93IGFuIGUtbWFpbCBhZGRyZXNzIHdoaWNoIGNvcnJlc3BvbmRzIHdpdGggdGhlIGRvbWFpbiBuYW1lLic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19uYW1lJ10gPSAnTmFtZSBvZiBzZW5kZXInOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2UnXSA9ICdFLW1haWwgKHJlZ2lzdGVyZWQgdXNlcikgbWVzc2FnZSc7CiRsYW5nWydlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFycyddID0gJ1doaWNoIHZhcmlhYmxlcyBtYXkgYmUgdXNlZCBpbiBhbiBlLW1haWwgKHJlZ2lzdGVyZWQgdXNlcikgbWVzc2FnZT8nOwokbGFuZ1snZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnNfbGlzdCddID0gJzxjb2RlPnskZW1haWwuZmlyc3RfbmFtZX08L2NvZGU+IC0gRmlyc3QgbmFtZTxiciAvPg0KPGNvZGU+eyRlbWFpbC5sYXN0X25hbWV9PC9jb2RlPiAtIExhc3QgbmFtZTxiciAvPg0KPGNvZGU+eyRlbWFpbC5lbWFpbH08L2NvZGU+IC0gRS1tYWlsPGJyIC8+DQo8Y29kZT57JGVtYWlsLnBob25lfTwvY29kZT4gLSBUZWxlcGhvbmUgbnVtYmVyPGJyIC8+DQo8Y29kZT57JGVtYWlsLm5ld3NsZXR0ZXJ9PC9jb2RlPiAtIE5ld3NsZXR0ZXIgMCA9IG5vIDEgPSB5ZXM8YnIgLz4NCjxjb2RlPnskZW1haWwuY291cG9uX2NvZGV9PC9jb2RlPiAtIENvdXBvbiBjb2RlIHdpdGhvdXQgZGFzaGVzPGJyIC8+DQo8Y29kZT57JGVtYWlsLmRhc2hlZF9jb3Vwb25fY29kZX08L2NvZGU+IC0gQ291cG9uIGNvZGUgd2l0aCBkYXNoZXM8YnIgLz4NCjxjb2RlPnskZW1haWwudGltZXN0YW1wfTwvY29kZT4gLSBUaW1lc3RhbXAgaW4gdW5peCBmb3JtYXQ8YnIgLz4NCjxjb2RlPnskZW1haWwuZGJfdGltZXN0YW1wfTwvY29kZT4gLSBUaW1lc3RhbXAgaW4gZGF0YWJhc2UgZm9ybWF0PGJyIC8+PGJyIC8+DQoNCkl0IGlzIHBvc3NpYmxlIHRvIHVzZSBTbWFydHkgbW9kaWZpZXJzIG9yIGZpbHRlcnMgZm9yIHRoZSB2YXJpYWJsZSBpbiB0aGUgZS1tYWlsIG1lc3NhZ2UsIHN1Y2ggYXM6IDxiciAvPg0KPGNvZGU+eyRlbWFpbC5kYl90aW1lc3RhbXB8ZGF0ZV9mb3JtYXQ6JnF1b3Q7JWQgJUIgJVkmcXVvdDt9PC9jb2RlPjxiciAvPjxiciAvPic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXInXSA9ICdFLW1haWwgKHdpbm5pbmcgdXNlcikgbWVzc2FnZSc7CiRsYW5nWydlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnMnXSA9ICdXaGljaCB2YXJpYWJsZXMgbWF5IGJlIHVzZWQgaW4gYW4gZS1tYWlsICh3aW5uaW5nIHVzZXIpIG1lc3NhZ2U/JzsKJGxhbmdbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfdmFyc19saXN0J10gPSAnPGNvZGU+eyRlbWFpbC5hY3Rpb25fdGl0bGV9PC9jb2RlPiAtIFRpdGxlIG9mIHRoZSBjb3Vwb24gYWN0aW9uPGJyIC8+DQo8Y29kZT57JGVtYWlsLmNvdXBvbl9hY3Rpb25faWR9PC9jb2RlPiAtIFVuaXF1ZSBpZCBvZiB0aGUgY291cG9uIGFjdGlvbjxiciAvPg0KPGNvZGU+eyRlbWFpbC5wZXJpb2RfdGl0bGV9PC9jb2RlPiAtIFRpdGxlIG9mIHRoZSBjb3Vwb24gcGVyaW9kPGJyIC8+DQo8Y29kZT57JGVtYWlsLmNvdXBvbl9wZXJpb2RfaWR9PC9jb2RlPiAtIFVuaXF1ZSBpZCBvZiB0aGUgY291cG9uIHBlcmlvZDxiciAvPg0KPGNvZGU+eyRlbWFpbC5wcml6ZV90aXRsZX08L2NvZGU+IC0gVGl0bGUgb2YgdGhlIHByaXplPGJyIC8+DQo8Y29kZT57JGVtYWlsLnByaXplX2NvZGV9PC9jb2RlPiAtIENvZGUgb2YgdGhlIHByaXplPGJyIC8+DQo8Y29kZT57JGVtYWlsLm51bWJlcn08L2NvZGU+IC0gVG90YWwgbnVtYmVyIG9mIHRoaXMgcHJpemU8YnIgLz4NCjxjb2RlPnskZW1haWwuY291cG9uX3ByaXplX2lkfTwvY29kZT4gLSBVbmlxdWUgaWQgb2YgdGhpcyBwcml6ZTxiciAvPg0KPGNvZGU+eyRlbWFpbC5jb3Vwb25fY3VzdG9tZXJfaWR9PC9jb2RlPiAtIFVuaXF1ZSBpZCBvZiB3aW5uaW5nIGN1c3RvbWVyPGJyIC8+DQo8Y29kZT57JGVtYWlsLmZpcnN0X25hbWV9PC9jb2RlPiAtIEZpcnN0IG5hbWU8YnIgLz4NCjxjb2RlPnskZW1haWwubGFzdF9uYW1lfTwvY29kZT4gLSBMYXN0IG5hbWU8YnIgLz4NCjxjb2RlPnskZW1haWwuZW1haWx9PC9jb2RlPiAtIEVtYWlsPGJyIC8+DQo8Y29kZT57JGVtYWlsLmRhc2hlZF9waG9uZX08L2NvZGU+IC0gUGhvbmUgbnVtYmVyIHdpdGggZGFzaGVzIGV2ZXJ5IDMgZGlnaXRzPGJyIC8+DQo8Y29kZT57JGVtYWlsLnBob25lfTwvY29kZT4gLSBQaG9uZSBudW1iZXIgKHdpdGhvdXQgZGFzaGVzKTxiciAvPg0KPGNvZGU+eyRlbWFpbC5jb3Vwb25fY29kZV9pZH08L2NvZGU+IC0gVW5pcXVlIGlkIG9mIHRoZSBjb3Vwb24gY29kZTxiciAvPg0KPGNvZGU+eyRlbWFpbC5kYl90aW1lc3RhbXB9PC9jb2RlPiAtIFRpbWVzdGFtcCwgd2hlbiB3YXMgdGhlIGNvdXBvbiBjb2RlIHJlZ2lzdGVyZWQ8YnIgLz4NCjxjb2RlPnskZW1haWwuZGFzaGVkX2NvdXBvbl9jb2RlfTwvY29kZT4gLSBDb3Vwb24gY29kZSB3aXRoIGRhc2hlcyBldmVyeSA0IGRpZ2l0czxiciAvPg0KPGNvZGU+eyRlbWFpbC5jb3Vwb25fY29kZX08L2NvZGU+IC0gQ291cG9uIGNvZGUgKHdpdGhvdXQgZGFzaGVzKTxiciAvPjxiciAvPg0KDQpJdCBpcyBwb3NzaWJsZSB0byB1c2UgU21hcnR5IG1vZGlmaWVycyBvciBmaWx0ZXJzIGZvciB0aGUgdmFyaWFibGUgaW4gdGhlIGUtbWFpbCBtZXNzYWdlLCBzdWNoIGFzOiA8YnIgLz4NCjxjb2RlPnskZW1haWwuZGJfdGltZXN0YW1wfGRhdGVfZm9ybWF0OiZxdW90OyVkICVCICVZJnF1b3Q7fTwvY29kZT48YnIgLz48YnIgLz4nOwokbGFuZ1sncmVnaXN0ZXJfY291cG9uX2NvZGUnXSA9ICdSZWdpc3RlciBjb3Vwb24gY29kZSc7CiRsYW5nWydmaXJzdF9uYW1lJ10gPSAnRmlyc3QgbmFtZSc7CiRsYW5nWydsYXN0X25hbWUnXSA9ICdMYXN0IG5hbWUnOwokbGFuZ1snZW1haWwnXSA9ICdFLW1haWwnOwokbGFuZ1sncGhvbmUnXSA9ICdUZWxlcGhvbmUgbnVtYmVyJzsKJGxhbmdbJ3Rlcm1zX2FuZF9jb25kaXRpb25zJ10gPSAnVGVybXMgYW5kIENvbmRpdGlvbnMnOwokbGFuZ1sndGVybXNfYW5kX2NvbmRpdGlvbnNfYWdyZWUnXSA9ICfYqNmE2YfYjCDZgtio2YjZhCDZhduMJnp3bmo72qnZhtmFJzsKJGxhbmdbJ25ld3NsZXR0ZXInXSA9ICfYrtio2LHZhtin2YXZhyc7CiRsYW5nWyduZXdzbGV0dGVyX2FncmVlJ10gPSAn2KjZhNmH2Iwg2YXbjCZ6d25qO9iu2YjYp9mH2YUg2K7YqNix2YbYp9mF2Ycg2LHYpyDYr9ix24zYp9mB2Kog2qnZhtmFJzsKJGxhbmdbJ2NvdXBvbl9jb2RlJ10gPSAnQ291cG9uIGNvZGUnOwokbGFuZ1snc19zX2NvdXBvbl9jb2RlX3JlZ2lzdGVyZWQnXSA9ICdEZWFyICVzICVzLCA8YnIgLz48YnIgLz4gWW91ciBjb3Vwb24gY29kZSBoYXMgYmVlbiByZWdpc3RlcmVkLiBJZiB5b3Ugd291bGQgbGlrZSB0byByZWdpc3RlciBhbm90aGVyIGNvdXBvbiBjb2RlLCBwbGVhc2UgZW50ZXIgdGhlIG5leHQgY291cG9uIGNvZGUgYW5kIGFjY2VwdCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMuJzsKJGxhbmdbJ3NfZGVsZXRlX2NvdXBvbl9jb2RlX2Nvb2tpZSddID0gJ1dvdWxkIHlvdSBsaWtlIHVzIHRvIGRlbGV0ZSB0aGUgc2F2ZWQgZGF0YSB0aGF0IHdhcyBlbnRlcmVkIGludG8gdGhlIGZvcm0gb3Igd291bGQgeW91IGxpa2UgdG8gcmVnaXN0ZXIgYSBjb3Vwb24gY29kZSBmb3Igc29tZW9uZSBlbHNlPyA8YnIgLz48YnIgLz4gIENsaWNrIDxhIGhyZWY9IiVzIj5oZXJlPC9hPiB0byBjbGVhciB0aGUgZm9ybSc7CiRsYW5nWydqc19yZXF1aXJlZCddID0gJ1JlcXVpcmVkJzsKJGxhbmdbJ2pzX29wdGlvbmFsJ10gPSAnT3B0aW9uYWwnOwokbGFuZ1snanNfZW1haWwnXSA9ICdFbnRlciBhIHZhbGlkZSBlLW1haWwgYWRkcmVzcyc7CiRsYW5nWydqc19udW1iZXInXSA9ICdPbmx5IGVudGVyIGRpZ2l0cyc7CiRsYW5nWydqc19taW5sZW5ndGgnXSA9ICdFbnRlciB7MH0gZGlnaXRzJzsKJGxhbmdbJ2pzX21pbmxlbmd0aF9tdWx0aXBsZSddID0gJ0VudGVyIHswfSBkaWdpdHMgcGVyIGZpZWxkJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnUGxlYXNlLCBtYWtlIHN1cmUgdGhhdCB1c2VycyB3aG8gbWFuYWdlIFVwQ291cG9uIGFyZSBwcm92aWRlZCB3aXRoICZxdW90O1VwQ291cG9uJnF1b3Q7IHJpZ2h0cy4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1VwQ291cG9uIGlzIHN1Y2Nlc2Z1bGx5IGRlaW5zdGFsbGVkLic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAn2KLbjNinINmF2LfZhdim2YYg2YfYs9iq24zYr9ifJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBkZW5pZWQgKCYjMDM5OyVzJiMwMzk7KSc7CiRsYW5nWydhY2Nlc3NhbGxvd2VkJ10gPSAnQWNjZXNzIGFsbG93ZWQnOwokbGFuZ1snbm90X2FsbG93ZWQnXSA9ICdUaGlzIGlzIG5vdCBhbGxvd2VkJzsKJGxhbmdbJ25vX3NfZ2l2ZW4nXSA9ICdZb3UgZGlkIG5vdCBlbnRlciBhICYjMDM5OyVzJiMwMzk7ICc7CiRsYW5nWydzX25vdGdpdmVuJ10gPSAnJiMwMzk7JXMmIzAzOTsgaXMgbm90IGZpbGxlZCBpbic7CiRsYW5nWydzX3NfYWxyZWFkeWdpdmVuJ10gPSAnJXM6ICYjMDM5OyVzJiMwMzk7IGhhcyBhbHJlYWR5IGJlZW4gZW50ZXJlZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZGF0ZXMnXSA9ICdPbmUgb3IgbW9yZSBkYXRlIGZpZWxkcyBhcmUgaW52YWxpZCc7CiRsYW5nWyd0ZW1wbGF0ZV9leGlzdHMnXSA9ICdUaGlzIHRlbXBsYXRlIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2Vycm9yaW5zZXJ0aW5ndGVtcGxhdGUnXSA9ICdUaGUgZmFjdG9yeSBzZXR0aW5ncyBkZWZhdWx0IHRlbXBsYXRlIGNhbm5vdCBiZSBvcGVuZWQnOwokbGFuZ1snY291cG9uX2FjdGlvbl9taXNzaW5nJ10gPSAnQmVmb3JlICYjMDM5O0NvdXBvbiBQZXJpb2RzJiMwMzk7IGNhbiBiZSBlbnRlcmVkLCBhY3RpdmUgJiMwMzk7Q291cG9uIEFjdGlvbnMmIzAzOTsgc2hvdWxkIGJlIGF2YWlsYWJsZSc7CiRsYW5nWydjb3Vwb25fcGVyaW9kX21pc3NpbmcnXSA9ICdCZWZvcmUgJiMwMzk7UHJpemVzJiMwMzk7IGNhbiBiZSBlbnRlcmVkLCBhY3RpdmUgJiMwMzk7Q291cG9uIFBlcmlvZHMmIzAzOTsgc2hvdWxkIGJlIGF2YWlsYWJsZSc7CiRsYW5nWydzX3NfY291cG9ucGVyaW9kX21pc21hdGNoJ10gPSAnVGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZSBvZiB0aGUgJiMwMzk7Q291cG9uIFBlcmlvZCYjMDM5OyBoYXMgdG8gYmUgYmV0d2VlbiAlcyBhbmQgJXMnOwokbGFuZ1snbmVlZF9yZWdpc3RlcmVkX2N1c3RvbWVyJ10gPSAnVG8gZHJhdyBhIGNvdXBvbiBmb3IgdGhpcyBwZXJpb2QgKG1vcmUpIHJlZ2lzdGVyZWQgY3VzdG9tZXJzIGFyZSBuZWVkZWQnOwokbGFuZ1snYWN0aW9uX3MnXSA9ICdDb3Vwb24gQWN0aW9uJzsKJGxhbmdbJ2FjdGlvbl9wJ10gPSAnQ291cG9uIEFjdGlvbnMnOwokbGFuZ1sncGVyaW9kX3MnXSA9ICdDb3Vwb24gUGVyaW9kJzsKJGxhbmdbJ3BlcmlvZF9wJ10gPSAnQ291cG9uIFBlcmlvZHMnOwokbGFuZ1sncHJpemVfcyddID0gJ1ByaXplJzsKJGxhbmdbJ3ByaXplX3AnXSA9ICdQcml6ZXMnOwokbGFuZ1snd2lubmVyX3MnXSA9ICdXaW5uZXInOwokbGFuZ1snd2lubmVyX3AnXSA9ICdXaW5uZXJzJzsKJGxhbmdbJ3N0YXRpc3RpY3NfcyddID0gJ1N0YXRpc3RpYyc7CiRsYW5nWydzdGF0aXN0aWNzX3AnXSA9ICdTdGF0aXN0aWNzJzsKJGxhbmdbJ3RlbXBsYXRlc19zJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1sndGVtcGxhdGVzX3AnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1sncHJlZmVyZW5jZXNfcyddID0gJ1ByZWZlcmVuY2UnOwokbGFuZ1sncHJlZmVyZW5jZXNfcCddID0gJ1ByZWZlcmVuY2VzJzsKJGxhbmdbJ2FkZCddID0gJ9in2LbYp9mB2YcnOwokbGFuZ1snZWRpdCddID0gJ9mI24zYsdin24zYtCc7CiRsYW5nWydkZWxldGUnXSA9ICfYrdiw2YEnOwokbGFuZ1snc3VibWl0J10gPSAn2KvYqNiqJzsKJGxhbmdbJ2NhbmNlbCddID0gJ9in2YbYtdix2KfZgSc7CiRsYW5nWydhcHBseSddID0gJ9in2KzYsdinJzsKJGxhbmdbJ2ZhY3RvcnknXSA9ICdGYWN0b3J5IHNldHRpbmdzJzsKJGxhbmdbJ2RlbGV0ZV9zZWxlY3RlZF9pdGVtcyddID0gJ9it2LDZgSDZhdmI2KfYsdivINin2YbYqtiu2KfYqCDYtNiv2YcnOwokbGFuZ1snc19hZGQnXSA9ICdBZGQgJXMnOwokbGFuZ1snc19lZGl0J10gPSAnRWRpdCAlcyc7CiRsYW5nWydzX2RlbGV0ZSddID0gJ0RlbGV0ZSAlcyc7CiRsYW5nWydzX2NoYW5nZV9zdGF0dXMnXSA9ICdDaGFuZ2Ugc3RhdHVzICVzJzsKJGxhbmdbJ3NfY2hhbmdlX2RlZmF1bHQnXSA9ICdDaGFuZ2UgZGVmYXVsdCAlcyc7CiRsYW5nWydzX2FkZGVkJ10gPSAnJXMgYWRkZWQnOwokbGFuZ1snc19lZGl0ZWQnXSA9ICclcyBlZGl0ZWQnOwokbGFuZ1snc19kZWxldGVkJ10gPSAnJXMgZGVsZXRlZCc7CiRsYW5nWydzX2NoYW5nZWRfc3RhdHVzJ10gPSAnJXMgc3RhdHVzIGNoYW5nZWQnOwokbGFuZ1snc19jaGFuZ2VkX2RlZmF1bHQnXSA9ICclcyBkZWZhdWx0IGNoYW5nZWQnOwokbGFuZ1snaGVscCddID0gJzxoMj5Eb2N1bWVudGF0aW9uPC9oMj48YnIgLz4NCg0KVGhlIFVwQ291cG9uIG1vZHVsZSBoYXMgYmVlbiBkZXZlbG9wZWQgZm9yIGEgc2hvcCBvd25lcnMgYXNzb2NpYXRpb24uIEVhY2ggeWVhciB0aGUgYXNzb2NpYXRpb24gb3JnYW5pemVzIGEgbG90dGVyeSBhbW9uZ3N0IGl0cyBjdXN0b21lcnMuIFdoZW4gb25lIHNwZW5kcyBhbiB4IGFtb3VudCBpbiBhIHBhcnRpY2lwYXRpbmcgc2hvcCwgb25lIHJlY2VpdmVzIGEgdm91Y2hlciB3aXRoIGEgJiMwMzk7Q291cG9uIENvZGUmIzAzOTsuIA0KDQpUbyBqb2luIHRoZSBsb3R0ZXJ5LCB0aGUgY3VzdG9tZXIgaGFzIHRvIGVudGVyIHRoZSAmIzAzOTtDb3Vwb24gQ29kZSYjMDM5OyBvbiB0aGUgYXNzb3NpYXRpb24td2Vic2l0ZSwgdG9nZXRoZXIgd2l0aCBvdGhlciBkZXRhaWxzLCBzdWNoIGFzIG5hbWUgYW5kIGFkZHJlc3MuIDxiciAvPjxiciAvPg0KDQo8aDI+VGhlIGFkbWluIGludGVyZmFjZSBvZiB0aGlzIG1vZHVsZSBoYXMgdmFyaW91cyBmdW5jdGlvbmFsaXRpZXM6PC9oMj48YnIgLz4NCg0KPGI+Q291cG9uIEFjdGlvbnM8L2I+IC0gdGFiIDxiciAvPg0KDQpIZXJlIHlvdSBjYW4gYWRkIHNldmVyYWwgbG90dGVyaWVzLiA8YnIgLz4NCg0KU3VjaCBhcyBhIHN1bW1lciBsb3R0ZXJ5IG9yIGEgd2ludGVyIGxvdHRlcnkuIEVhY2ggbG90dGVyeSBuZWVkcyB0byBoYXZlIGEgdGl0bGUsIGFsaWFzLCBkZXNjcmlwdGlvbiwgc3RhcnRkYXRlLCBlbmRkYXRlIGFuZCBzdGF0dXMuIDxiciAvPjxiciAvPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBUaGUgc3RhcnRkYXRlIG9mIHRoZSAmIzAzOTtDb3Vwb24gQWN0aW9uJiMwMzk7IGFsd2F5cyBoYXMgdG8gYmUgYW4gZWFybGllciBkYXRlIHRoYW4gdGhlIGVuZGRhdGUuIDxiciAvPjxiciAvPg0KDQo8Yj5Db3Vwb24gUGVyaW9kczwvYj4gLSB0YWIgPGJyIC8+DQoNCkhlcmUgdGhlIHBlcmlvZHMgaW4gd2hpY2ggdGhlIGRyYXcocykgdGFrZShzKSBwbGFjZSBjYW4gYmUgYWRkZWQuIDxiciAvPg0KDQpUaGUgc3VtbWVyIGxvdHRlcnkgY291bGQgZm9yIGluc3RhbmNlIGhhdmUgZm91ciB3ZWVrbHkgZHJhd3MgYW5kIGEgZmluYWwgZHJhdyBhdCB0aGUgZW5kIG9mIHRoZSBwZXJpb2QuIEVhY2ggJiMwMzk7IENvdXBvbiBQZXJpb2QmIzAzOTsgbmVlZHMgdG8gaGF2ZSBhIGNvdXBvbl9hY3RpZSAoYXMgc3VibWl0dGVkIHVuZGVyICYjMDM5OyBDb3Vwb24gQWN0aW9ucyYjMDM5OyksIHRpdGxlLCBzdGFydGRhdGUsIGVuZGRhdGUsIEZpbmFsIGRyYXcgKHllcy9ubykgYW5kIHN0YXR1cy4gPGJyIC8+PGJyIC8+DQoNCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IFRoZSBzdGFydGRhdGUgb2YgdGhlICYjMDM5O0NvdXBvbiBQZXJpb2QmIzAzOTsgYWx3YXlzIGhhcyB0byBiZSBhbiBlYXJsaWVyIGRhdGUgdGhhbiB0aGUgZW5kZGF0ZSBhbmQgaGFzIHRvIG9jY3VyIHdpdGhpbiB0aGUgc3RhcnQtIGFuZCBlbmRkYXRlIG9mIHRoZSAmIzAzOTsgQ291cG9uIEFjdGlvbiYjMDM5Oy48YnIgLz48YnIgLz4NCg0KPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVXN1YWxseSBhbGwgY3VzdG9tZXJzIHBhcnRpY2lwYXRpbmcgaW4gdGhlIGxvdHRlcnkgaGF2ZSBhIGNoYW5jZSBvbiB3aW5uaW5nIHRoZSBmaW5hbCBkcmF3LiBUaGVyZWZvcmUgdGhlIHBlcmlvZCBvZiB0aGUgJiMwMzk7RmluYWwgZHJhdyYjMDM5OyB1c3VhbGx5IHN0YXJ0cyBhdCB0aGUgc3RhcnRkYXRlIG9mIHRoZSAmIzAzOTtDb3Vwb24gQWN0aW9uJiMwMzk7IHVwIGFuZCB1bnRpbCB0aGUgZW5kZGF0ZSBvZiB0aGUgJiMwMzk7Q291cG9uIEFjdGlvbiYjMDM5Oy4gIDxiciAvPjxiciAvPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPlRpcDwvYj48L2ZvbnQ+IE1ha2Ugc3VyZSB0aGF0IHRoZSBzdGFydGRhdGUgc3RhcnRzIGF0IDAwOjAwOjAwIGFuZCBlbmRzIGF0IDIzOjU5OjU5LiBJbiBkb2luZyBzbywgYSBsb3R0ZXJ5IG9yIHBlcmlvZCBydW5zIGZvciAyNCBob3VycyAoYW4gZW50aXJlIGNhbGVuZGVyIGRheSkuPGJyIC8+PGJyIC8+DQoNCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+VGlwPC9iPjwvZm9udD4gVGhlICYjMDM5O0NvdXBvbiBQZXJpb2QmIzAzOTsgaXMgYnkgZGVmYXVsdCBzb3J0ZWQgYnkgZW5kZGF0ZS4gQnkgYWRqdXN0aW5nIHRoZSBlbmRkYXRlLXRpbWUgd2l0aCBqdXN0IG9uZSBzZWNvbmQsIHRoZSBvcmRlciBpcyBhZGp1c3RlZCBhcyB3ZWxsLiBJdCB3b3VsZCBiZSBzdHJhbmdlIGlmIC0gYXQgdGhlIGZyb250ZW5kIC0gdGhlIEZpbmFsIGRyYXcgaXMgc2hvd24gcHJpb3IgdG8gdGhlIGxhc3QgZHJhdyhub3QgdGhlIEZpbmFsIGRyYXcpLiBUaGVyZWZvcmUgaXQgaXMgYWR2aXNlZCB0byAtIGlmIHRoZSBGaW5hbCBkcmF3IGhhcyB0aGUgc2FtZSBlbmRkYXRlIGFzIHRoZSBsYXN0IChub24tZmluYWwpIGRyYXcgLSBhZGp1c3QgdGhlIGVuZGRhdGUtdGltZSBvZiBvbmUgb2YgdGhlbSwgaW4gb3JkZXIgdG8gaGF2ZSB0byByaWdodCBvcmRlciBzaG93biBhdCB0aGUgZnJvbnRlbmQuPGJyIC8+PGJyIC8+DQoNCjxiPlByaXplczwvYj4gLSB0YWIgPGJyIC8+DQoNClByaXplcyBjYW4gYmUgY29ubmVjdGVkIHRvIGVhY2ggJiMwMzk7Q291cG9uIEFjdGlvbiYjMDM5OyBvciAmIzAzOTtDb3Vwb24gUGVyaW9kJiMwMzk7LiBXaGVuIGFkZGluZyBhIHByaXplLCBDb3Vwb24gQ29kZSwgQ291cG9uIEFjdGlvbiwgUHJpemUgY29kZSwgdGl0bGUsIGRlc2NyaXB0aW9uLCBudW1iZXIgYW5kIHN0YXR1cyBoYXZlIHRvIGJlIGVudGVyZWQuIDxiciAvPjxiciAvPg0KDQo8Yj5XaW5uZXJzPC9iPiAtIHRhYiA8YnIgLz4NCg0KT3V0IG9mIHRoZSByZWdpc3RlcmVkIGNvdXBvbiBjb2Rlcywgb25lIG9yIG1vcmUgd2lubmVycyBjYW4gYmUgZHJhd24uIEFmdGVyIHNlbGVjdGluZyAmIzAzOTtDb3Vwb24gQWN0aW9uJiMwMzk7LCAmIzAzOTtDb3Vwb24gUGVyaW9kJiMwMzk7IGFuZCBwcml6ZSwgb25lIGNhbiBjbGljayBvbiB0aGUgJnF1b3Q7IERyYXcgY291cG9uJiMwMzk7IGJ1dHRvbi4gVGhlIHdpbm5lciBpcyByYW5kb21seSBkcmF3biBmcm9tIHRoZSBkYXRhYmFzZSB3aXRoIHJlZ2lzdGVyZWQgY291cG9uIGNvZGVzIGFuZCBpcyBzaG93bi4gPGJyIC8+PGJyIC8+DQoNCjxiPlN0YXRpc3RpY3M8L2I+IC0gdGFiIDxiciAvPg0KDQpXaGVuIHJlZ2lzdGVyaW5nIGEgY291cG9uIGNvZGUsIGEgdGltZXN0YW1wIGlzIGdlbmVyYXRlZCBhbmQgc2F2ZWQuIEJ5IHVzaW5nIHRoaXMgdGltZXN0YW1wIHRvZ2V0aGVyIHdpdGggdGhlIHN0YXJ0LSBhbmQgZW5kZGF0ZSBvZiBhICYjMDM5OyBDb3Vwb24gQWN0aW9uJiMwMzk7IGFuZCAmIzAzOTtDb3Vwb24gUGVyaW9kIHRoZSBzdGF0aXN0aWNzIGFyZSBjcmVhdGVkLiA8YnIgLz48YnIgLz4NCg0KPGI+VGVtcGxhdGVzPC9iPiAtIHRhYiA8YnIgLz4NCg0KVGhlIFVwQ291cG9uIG1vZHVsZSBoYXMgdmFyaW91cyB0ZW1wbGF0ZXMsIHN1Y2ggYXMgdGhlIHRlbXBsYXRlIFJlZ2lzdHJhdGlvbiwgV2lubmVyIGFuZCBQcml6ZXMuIFRoZSB0ZW1wbGF0ZXMgYXJlIHVzZWQgZm9yIHRoZSBmcm9udGVuZC4gV2hlbiBhZGRpbmcgYSB0ZW1wbGF0ZXMsIGEgbmFtZSwgdGVtcGxhdGUgdHlwZSBhbmQgdGVtcGxhdGUgY29kZSBjYW4gYmUgZW50ZXJlZC4gPGJyIC8+PGJyIC8+DQoNCkJ5IHVzaW5nIHRoZSBmYWN0b3J5IHNldHRpbmdzIGJ1dHRvbiwgdGhlIHRlbXBsYXRlIGNvZGUgZmllbGQgYXV0b21hdGljYWxseSBpcyBzZXQgdG8gdXNlIHRoZSBkZWZhdWx0IHRlbXBsYXRlLiA8YnIgLz48YnIgLz4NCg0KPGI+UHJlZmVyZW5jZXM8L2I+IC0gdGFiIDxiciAvPg0KDQpBIGN1c3RvbWVyIHdobyBoYXMgcmVnaXN0ZXJlZCBoaXMgJiMwMzk7Q291cG9uIENvZGUmIzAzOTssIHdpbGwgcmVjZWl2ZSBhIGNvbmZpcm1hdGlvbiBieSBlLW1haWwsIGlmIGFsbCBlLW1haWwgcHJlZmVyZW5jZXMgYXJlIGNvcnJlY2x0eSBjb21wbGV0ZWQuIDxiciAvPjxiciAvPg0KDQo8aDI+U3VwcG9ydDwvaDI+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IocyksIGFybm91ZCBldCBhbGwgY2FuIHNvbWV0aW1lcyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+bGljZW5zZTwvYT4gZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDI+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMj4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAxMSwgQXJub3VkIHZhbiBTdXN0ZXJlbiA8YSBocmVmPSJtYWlsdG86YXJub3VkQHVwc2VydmljZS5ubCI+PGFybm91ZEB1cHNlcnZpY2Uubmw+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+DQo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUw0KTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIA0Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+DQo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KT3IgcmVhZCBpdCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPm9ubGluZTwvYT48L3A+DQoNCjxiciAvPg0KJzsKJGxhbmdbJ2hlbHBfYWN0aW9uJ10gPSAnPGJyIC8+DQo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSYjMDM5O3Nob3dfcmVnaXN0ZXImIzAzOTt9PC9jb2RlPiAtIFNob3cgdGhlIHJlZ2lzdHJhdGlvbiBwYWdlLiA8YnIgLz4NCjxjb2RlPntVcENvdXBvbiBhY3Rpb249JiMwMzk7c2hvd19wcml6ZSYjMDM5O308L2NvZGU+IC0gU2hvdyB0aGUgcHJpemUgcGFnZS4gPGJyIC8+DQo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSYjMDM5O3Nob3dfd2lubmVyJiMwMzk7fTwvY29kZT4gLSBTaG93IHRoZSB3aW5uZXIgcGFnZS4gPGJyIC8+PGJyIC8+DQoNCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IElmIG5vIGFjdGlvbiBpcyBzcGVjaWZpZWQsIGEgd2FybmluZyB3aWxsIGJlIHNob3duLiA8YnIgLz4NCg0KPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gRm9yIHRoZSAmIzAzOTtzaG93X3JlZ2lzdGVyJiMwMzk7IGFjdGlvbiBpdCYjMDM5O3MgcG9zc2libGUgdG8gY2hlY2sgZmllbGQgdmFsdWVzIHZpYSBKYXZhU2NyaXB0LiBUb2RvIHNvIGJlIHN1cmUgdG8gbG9hZCBqcXVlcnkudmFsaWRhdGUuanMgeW91IGNhbiBmaW5kIHRoaXMgZmlsZSBpbnRvIHRoZSBtb2R1bGVzL1VwQ291cG9uL2pzIGZvbGRlci48YnIgLz48YnIgLz4NCg0KPGI+KiBCZWZvcmUgdGhlIGNvdXBvbiBhY3Rpb24gdGFrZXMgcGxhY2UgdGhlIHVwY291cG9uX2NvZGUgZGF0YWJhc2UgbXVzdCBiZSBmaWxsZWQgd2l0aCBjb2Rlcy4gVGhlIHdlYmRldmVsb3BlciBzaG91bGQgd3JpdGUgYSBxdWVyeSB0byBzZXQgY291cG9uX3ByaXplX2lkIHRvICYjMDM5OzAmIzAzOTsgYW5kIGNvdXBvbl9jb2RlIHRvIGEgMTYgZGlnaXQgY29kZS4gRm9yIGV4YW1wbGU6IElOU0VSVCBJTlRPIGNtc19tb2R1bGVfdXBjb3Vwb25fY29kZSBWQUxVRVMgKCYjMDM5OyYjMDM5OywgJiMwMzk7MCYjMDM5OywgJiMwMzk7JiMwMzk7LCAmIzAzOTswMDAwMDAwMDAwMDAwMDAwJiMwMzk7LCAmIzAzOTsmIzAzOTspPC9iPjxiciAvPg0KDQo8YnIgLz4NCic7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPGJyIC8+DQo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSYjMDM5O3Nob3dfcmVnaXN0ZXImIzAzOTsgdGVtcGxhdGU9JiMwMzk7bmFtZV9vZl9yZWdpc3Rlcl90ZW1wbGF0ZSYjMDM5O308L2NvZGU+IDxiciAvPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBJZiBubyB0ZW1wbGF0ZSBpcyBzcGVjaWZpZWQsIG9yIHRoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZSBpcyB1bmtub3duLCB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSB3aWxsIGJlIHVzZWQuIDwvYnIgPjwvYnIgPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBJZiBubyBzdGFuZGFyZCB0ZW1wbGF0ZSBjYW4gYmUgZm91bmQsIHRoZSBkZWZhdWx0IHRlbXBsYXRlIChmYWN0b3J5IHNldHRpbmdzKSBzaGFsbCBiZSB1c2VkLiA8YnIgLz48YnIgLz4NCg0KPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVGhlIGF2YWlsYWJsZSB0ZW1wbGF0ZXMgY2FuIGJlIGZvdW5kIHVuZGVyIHRoZSAmIzAzOTtUZW1wbGF0ZXMmIzAzOTsgIHRhYi4gPGJyIC8+DQoNCjxiciAvPic7CiRsYW5nWydoZWxwX2NvdXBvbl9hY3Rpb25faWQnXSA9ICc8YnIgLz4NCjxjb2RlPntVcENvdXBvbiBhY3Rpb249JiMwMzk7c2hvd19wcml6ZSYjMDM5OyBjb3Vwb25fYWN0aW9uX2lkPSYjMDM5OzEmIzAzOTt9PC9jb2RlPiAtIFNob3cgYWxsIHByaXplcyBiZWxvbmdpbmcgdG8gY291cG9uX2FjdGlvbl9pZCAmIzAzOTsxJiMwMzk7LiA8YnIgLz48YnIgLz4NCg0KPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVGhlICYjMDM5O2NvdXBvbl9hY3Rpb25faWQmIzAzOTsgY2FuIGJlIGZvdW5kIHVuZGVyICYjMDM5O0NvdXBvbiBBY3Rpb25zJiMwMzk7IHRhYi4gSXQgaXMgc2hvd24gaW4gZnJvbnQgb2YgdGhlIHRpdGxlIG9mIGVhY2ggc3BlY2lmaWMgYWN0aW9uLiAmIzAzOTtDb3Vwb24gQWN0aW9ucyYjMDM5OyB3aGljaCBhcmUgc2V0IHRvIGluYWN0aXZlIGFyZSBub3Qgc2hvd24uDQoNCg0KPGJyIC8+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbkFjdGlvbkFkZGVkJ10gPSAnU2VudCB3aGVuIGFuIGFjdGlvbiBpcyBhZGRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25BY3Rpb25BZGRlZCddID0gJzxwPnggU2VudCB3aGVuIGFuIGFjdGlvbiBpcyBhZGRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25BY3Rpb25FZGl0ZWQnXSA9ICdTZW50IHdoZW4gYW4gYWN0aW9uIGlzIGVkaXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25BY3Rpb25FZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYW4gYWN0aW9uIGlzIGVkaXRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25BY3Rpb25EZWxldGVkJ10gPSAnU2VudCB3aGVuIGFuIGFjdGlvbiBpcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvbkFjdGlvbkRlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYW4gYWN0aW9uIGlzIGRlbGV0ZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QZXJpb2RBZGRlZCddID0gJ1NlbnQgd2hlbiBhIHBlcmlvZCBpcyBhZGRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QZXJpb2RBZGRlZCddID0gJzxwPnggU2VudCB3aGVuIGEgcGVyaW9kIGlzIGFkZGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblBlcmlvZEVkaXRlZCddID0gJ1NlbnQgd2hlbiBhIHBlcmlvZCBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUGVyaW9kRWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgcGVyaW9kIGlzIGVkaXRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QZXJpb2REZWxldGVkJ10gPSAnU2VudCB3aGVuIGEgcGVyaW9kIGlzIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUGVyaW9kRGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIHBlcmlvZCBpcyBkZWxldGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJpemVBZGRlZCddID0gJ1NlbnQgd2hlbiBhIHByaXplIGlzIGFkZGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByaXplQWRkZWQnXSA9ICc8cD54IFNlbnQgd2hlbiBhIHByaXplIGlzIGFkZGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblByaXplRWRpdGVkJ10gPSAnU2VudCB3aGVuIGEgcHJpemUgaXMgZWRpdGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByaXplRWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgcHJpemUgaXMgZWRpdGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblByaXplRGVsZXRlZCddID0gJ1NlbnQgd2hlbiBhIHByaXplIGlzIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJpemVEZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgcHJpemUgaXMgZGVsZXRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbldpbm5lckFkZGVkJ10gPSAnU2VudCB3aGVuIGEgd2lubmVyIGlzIGFkZGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvbldpbm5lckFkZGVkJ10gPSAnPHA+eCBTZW50IHdoZW4gYSB3aW5uZXIgaXMgYWRkZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uV2lubmVyRWRpdGVkJ10gPSAnU2VudCB3aGVuIGEgd2lubmVyIGlzIGVkaXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25XaW5uZXJFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSB3aW5uZXIgaXMgZWRpdGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbldpbm5lckRlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSB3aW5uZXIgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25XaW5uZXJEZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgd2lubmVyIGlzIGRlbGV0ZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25UZW1wbGF0ZUFkZGVkJ10gPSAnU2VudCB3aGVuIGEgdGVtcGxhdGUgaXMgYWRkZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uVGVtcGxhdGVBZGRlZCddID0gJzxwPnggU2VudCB3aGVuIGEgdGVtcGxhdGUgaXMgYWRkZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uVGVtcGxhdGVFZGl0ZWQnXSA9ICdTZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uVGVtcGxhdGVFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBlZGl0ZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uVGVtcGxhdGVEZWxldGVkJ10gPSAnU2VudCB3aGVuIGEgdGVtcGxhdGUgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25UZW1wbGF0ZURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBkZWxldGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJlZmVyZW5jZUFkZGVkJ10gPSAnU2VudCB3aGVuIGEgcHJlZmVyZW5jZSBpcyBhZGRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QcmVmZXJlbmNlQWRkZWQnXSA9ICc8cD54IFNlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgYWRkZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJlZmVyZW5jZUVkaXRlZCddID0gJ1NlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgZWRpdGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByZWZlcmVuY2VFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBwcmVmZXJlbmNlIGlzIGVkaXRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QcmVmZXJlbmNlRGVsZXRlZCddID0gJ1NlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QcmVmZXJlbmNlRGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgZGVsZXRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTkyOTI0NjI4MC4xMzE4Nzk3NzA0LjEzMTg3OTc3MDQuMTMxODc5NzcwNC4xJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMS4xMC4xMzE4Nzk3NzA0JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMzE4Nzk3NzA0LjEuMS51dG1jc3I9Z29vZ2xlfHV0bWNjbj0ob3JnYW5pYyl8dXRtY21kPW9yZ2FuaWN8dXRtY3RyPWNtcyBtYWRlIHNpbXBsZSc7CiRsYW5nWydxY2EnXSA9ICdQMC0xOTE4MDg1OTU2LTEzMTg3OTc3MDQwOTQnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1VwQ291cG9uIE1vZHVsZSAnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0VlbiBtb2R1bGUgd2Fhcm1lZSBlZW4gb25saW5lIGxvdHRlcmlqLCBjb3Vwb24gY29kZSByZWdpc3RyYXRpZSBzeXN0ZWVtIG9wZ2V6ZXQga2FuIHdvcmRlbi4nOwokbGFuZ1snYXBwcm92ZV9zdGF0dXMnXSA9ICdaZXQgZGUgc3RhdHVzIG9wICYjMDM5O0FjdGllZiYjMDM5Oyc7CiRsYW5nWydyZXZlcnRfc3RhdHVzJ10gPSAnWmV0IGRlIHN0YXR1cyBvcCAmIzAzOTtJbmFjdGllZiYjMDM5Oyc7CiRsYW5nWydhcHByb3ZlX2RlZmF1bHQnXSA9ICdaZXQgZGUgc3RhbmRhYXJkIG9wICYjMDM5O0FjdGllZiYjMDM5Oyc7CiRsYW5nWydyZXZlcnRfZGVmYXVsdCddID0gJ1pldCBkZSBzdGFuZGFhcmQgb3AgJiMwMzk7SW5hY3RpZWYmIzAzOTsnOwokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aWVmJzsKJGxhbmdbJ2luYWN0aXZlJ10gPSAnSW5hY3RpZWYnOwokbGFuZ1sneWVzJ10gPSAnSmEnOwokbGFuZ1snbm8nXSA9ICdOZWUnOwokbGFuZ1sndGl0bGUnXSA9ICdUaXRlbCc7CiRsYW5nWydhbGlhcyddID0gJ0FsaWFzICc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ09tc2NocmlqdmluZyc7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnU3RhcnRkYXR1bSc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0VpbmRkYXR1bSc7CiRsYW5nWydzdGF0dXMnXSA9ICdTdGF0dXMgJzsKJGxhbmdbJ3NlbGVjdCddID0gJ1NlbGVjdGVlcic7CiRsYW5nWydhY3Rpb24nXSA9ICdDb3Vwb24gYWN0aWUnOwokbGFuZ1snaXNfZmluYWwnXSA9ICdJcyBmaW5hbGU/JzsKJGxhbmdbJ3BlcmlvZCddID0gJ0NvdXBvbiBwZXJpb2RlJzsKJGxhbmdbJ3ByaXplX2NvZGUnXSA9ICdQcmlqcyBjb2RlJzsKJGxhbmdbJ251bWJlciddID0gJ0FhbnRhbCc7CiRsYW5nWyd0b3RhbF9udW1iZXInXSA9ICdUb3RhYWwgYWFudGFsJzsKJGxhbmdbJ2ZyZWVfbnVtYmVyJ10gPSAnQmVzY2hpa2JhYXInOwokbGFuZ1snZ2l2ZW5fbnVtYmVyJ10gPSAnVmVybG9vdCc7CiRsYW5nWydhY3Rpb25fcGVyaW9kJ10gPSAnQ291cG9uIEFjdGllIC8gQ291cG9uIFBlcmlvZGUnOwokbGFuZ1snZHJhd19jb3Vwb24nXSA9ICdUcmVrIGxvdCc7CiRsYW5nWyd3aXRoZHJhd19jb3Vwb24nXSA9ICdUcmVrIGxvdCBpbic7CiRsYW5nWydyZWdpc3RyYXRpb25zJ10gPSAnQWFubWVsZGluZ2VuJzsKJGxhbmdbJ25hbWUnXSA9ICdOYWFtJzsKJGxhbmdbJ2RlZmF1bHQnXSA9ICdTdGFuZGFhcmQnOwokbGFuZ1sndGVtcGxhdGVfdHlwZSddID0gJ1NqYWJsb29uIHR5cGUnOwokbGFuZ1sndGVtcGxhdGVfcmVnaXN0ZXInXSA9ICdSZWdpc3RyZXJlbiBzamFibG9vbic7CiRsYW5nWyd0ZW1wbGF0ZV93aW5uZXInXSA9ICdXaW5uYWFyIHNqYWJsb29uJzsKJGxhbmdbJ3RlbXBsYXRlX3ByaXplJ10gPSAnUHJpanplbiBzamFibG9vbic7CiRsYW5nWyd0ZW1wbGF0ZV9jb2RlJ10gPSAnU2phYmxvb24gY29kZSc7CiRsYW5nWydwcmVmZXJlbmNlc191bmRlcmNvbnN0cnVjdGlvbiddID0gJ09wIGRpdCBtb21lbnQgd29yZGVuIGRlIHZvb3JrZXVyZW4gbm9nIG5pZXQgdG9lZ2VwYXN0LCBkZSBhZG1pbiBpbnRlcmZhY2Ugc2xhYXQgZGUgZ2VnZXZlbnMgd2VsIG9wLic7CiRsYW5nWydwX3NlY3Rpb25fZW1haWxfcmVnaXN0ZXJlZF9jdXN0b21lciddID0gJ0UtbWFpbCBrbGFudCBuYSBpbnZ1bGxlbiBjb3Vwb24gY29kZT8nOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3RydWUnXSA9ICdPcCBkaXQgbW9tZW50IHdvcmRlbiBlciBlLW1haWxzIHVpdGdlc3R1dXJkLCBhbGxlIHZvb3JrZXVyZW4gemlqbiBjb3JyZWN0IGluZ2V2dWxkLic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfZmFsc2UnXSA9ICdPcCBkaXQgbW9tZW50IHdvcmRlbiBlciA8dT5nZWVuPC91PiBlLW1haWxzIHVpdGdlc3R1dXJkLiBOb2cgbmlldCBhbGxlIHZvb3JrZXVyZW4gemlqbiBjb3JyZWN0IGluZ2V2dWxkLic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfY2hlY2snXSA9ICdKYSBpcyBhYW4sIG5lZSBpcyB1aXQnOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QnXSA9ICdUaXRlbCB2YW4gZS1tYWlsIGJlcmljaHQnOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3N1YmplY3RfZGVmYXVsdCddID0gJ0JlZGFua3Qgdm9vciBoZXQgcmVnaXN0cmVyZW4nOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnXSA9ICdFLW1haWwgYWRyZXMgemVuZGVyJzsKJGxhbmdbJ3BfZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsX2hlbHAnXSA9ICdMZXQgb3AhIEJpaiBzb21taWdlIHByb3ZpZGVycyBtYWcgYWxsZWVuIGVlbiBlLW1haWwgYWRyZXMgd29yZGVuIGdlYnJ1aWt0IGRpZSAgb3ZlcmVlbmtvbXQgbWV0IGRlIGRvbWVpbm5hYW0gZGllIGdlYnJ1aWt0IHdvcmR0Lic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19uYW1lJ10gPSAnTmFhbSB2YW4gZGUgemVuZGVyJzsKJGxhbmdbJ3BfZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlJ10gPSAnRS1tYWlsIChnZXJlZ2lzdHJlZXJkZSBnZWJydWlrZXIpIGJlcmljaHQnOwokbGFuZ1snZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnMnXSA9ICdXZWxrZSB2YXJpYWJlbGUga3VubmVuIGVyIGluIGhldCBFLW1haWwgKGdlcmVnaXN0cmVlcmRlIGdlYnJ1aWtlcikgYmVyaWNodCBnZWJydWlrdCB3b3JkZW4/JzsKJGxhbmdbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV92YXJzX2xpc3QnXSA9ICc8Y29kZT57JGVtYWlsLmZpcnN0X25hbWV9PC9jb2RlPiAtIFZvb3JuYWFtPGJyIC8+DQo8Y29kZT57JGVtYWlsLmxhc3RfbmFtZX08L2NvZGU+IC0gQWNodGVybmFhbTxiciAvPg0KPGNvZGU+eyRlbWFpbC5lbWFpbH08L2NvZGU+IC0gRS1tYWlsPGJyIC8+DQo8Y29kZT57JGVtYWlsLnBob25lfTwvY29kZT4gLSBUZWxlZm9vbm51bW1lcjxiciAvPg0KPGNvZGU+eyRlbWFpbC5uZXdzbGV0dGVyfTwvY29kZT4gLSAgTmlldXdzYnJpZWYgMCA9IG5lZSAxID0gamE8YnIgLz4NCjxjb2RlPnskZW1haWwuY291cG9uX2NvZGV9PC9jb2RlPiAtIENvdXBvbiBjb2RlIHpvbmRlciBzdHJlZXBqZXM8YnIgLz4NCjxjb2RlPnskZW1haWwuZGFzaGVkX2NvdXBvbl9jb2RlfTwvY29kZT4gLSBDb3Vwb24gY29kZSBtZXQgc3RyZWVwamVzPGJyIC8+DQo8Y29kZT57JGVtYWlsLnRpbWVzdGFtcH08L2NvZGU+IC0gVGlqZHNzdGVtcGVsIGluIHVuaXggZm9ybWFhdDxiciAvPg0KPGNvZGU+eyRlbWFpbC5kYl90aW1lc3RhbXB9PC9jb2RlPiAtIFRpamRzc3RlbXBlbCBpbiBkYXRhYmFzZSBmb3JtYWF0PGJyIC8+PGJyIC8+DQoNCkhldCBpcyBtb2dlbGlqayBvbSBvcCBkZSB2YXJpYWJlbGUgaW4gaGV0IEUtbWFpbCBiZXJpY2h0IFNtYXJ0eSBtb2RpZmllcnMgb2YgZmlsdGVycyB0b2UgdGUgcGFzc2VuIGFsczogPGJyIC8+DQo8Y29kZT57JGVtYWlsLmRiX3RpbWVzdGFtcHxkYXRlX2Zvcm1hdDomcXVvdDslZCAlQiAlWSZxdW90O308L2NvZGU+PGJyIC8+PGJyIC8+DQonOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJ10gPSAnRS1tYWlsICh3aW5uZW5kZSBnZWJydWlrZXIpIGJlcmljaHQnOwokbGFuZ1snZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3dpbm5lcl92YXJzJ10gPSAnV2Vsa2UgdmFyaWFiZWxlIGt1bm5lbiBlciBpbiBoZXQgRS1tYWlsICh3aW5uZW5kZSBnZWJydWlrZXIpIGJlcmljaHQgZ2VicnVpa3Qgd29yZGVuPyc7CiRsYW5nWydlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnNfbGlzdCddID0gJzxjb2RlPnskZW1haWwuYWN0aW9uX3RpdGxlfTwvY29kZT4gLSBUaXRlbCB2YW4gZGUgY291cG9uIGFjdGllPGJyIC8+DQo8Y29kZT57JGVtYWlsLmNvdXBvbl9hY3Rpb25faWR9PC9jb2RlPiAtIFVuaWVrIGlkIHZhbiBkZSBjb3Vwb24gYWN0aWU8YnIgLz4NCjxjb2RlPnskZW1haWwucGVyaW9kX3RpdGxlfTwvY29kZT4gLSBUaXRlbCB2YW4gZGUgY291cG9uIHBlcmlvZGU8YnIgLz4NCjxjb2RlPnskZW1haWwuY291cG9uX3BlcmlvZF9pZH08L2NvZGU+IC0gVW5pZWsgaWQgdmFuIGRlIGNvdXBvbiBwZXJpb2RlPGJyIC8+DQo8Y29kZT57JGVtYWlsLnByaXplX3RpdGxlfTwvY29kZT4gLSBUaXRlbCB2YW4gZGUgcHJpanM8YnIgLz4NCjxjb2RlPnskZW1haWwucHJpemVfY29kZX08L2NvZGU+IC0gQ29kZSB2YW4gZGUgcHJpanM8YnIgLz4NCjxjb2RlPnskZW1haWwubnVtYmVyfTwvY29kZT4gLSBUb3RhYWwgYWFudGFsIGtlZXIgZGF0IGRlemUgcHJpanMgd29yZHQgdmVybG9vdDxiciAvPg0KPGNvZGU+eyRlbWFpbC5jb3Vwb25fcHJpemVfaWR9PC9jb2RlPiAtIFVuaWVrIGlkIHZhbiBkZXplIHByaWpzPGJyIC8+DQo8Y29kZT57JGVtYWlsLmNvdXBvbl9jdXN0b21lcl9pZH08L2NvZGU+IC0gVW5pZWsgaWQgdmFuIGRlIHdpbm5lbmRlIGNvbnN1bWVudDxiciAvPg0KPGNvZGU+eyRlbWFpbC5maXJzdF9uYW1lfTwvY29kZT4gLSBWb29ybmFhbTxiciAvPg0KPGNvZGU+eyRlbWFpbC5sYXN0X25hbWV9PC9jb2RlPiAtIEFjaHRlcm5hYW08YnIgLz4NCjxjb2RlPnskZW1haWwuZW1haWx9PC9jb2RlPiAtIEVtYWlsPGJyIC8+DQo8Y29kZT57JGVtYWlsLmRhc2hlZF9waG9uZX08L2NvZGU+IC0gVGVsZWZvb25udW1tZXIgbWV0IHN0cmVlcGplcyBpZWRlcmUgMyBudW1tZXJzPGJyIC8+DQo8Y29kZT57JGVtYWlsLnBob25lfTwvY29kZT4gLSBUZWxlZm9vbm51bW1lciAoem9uZGVyIHN0cmVlcGplcyk8YnIgLz4NCjxjb2RlPnskZW1haWwuY291cG9uX2NvZGVfaWR9PC9jb2RlPiAtIFVuaWVrIGlkIHZhbiBkZSBjb3Vwb24gY29kZTxiciAvPg0KPGNvZGU+eyRlbWFpbC5kYl90aW1lc3RhbXB9PC9jb2RlPiAtIFRpamRzc3RlbXBlbCwgd2FubmVlciB3YXMgZGUgY291cG9uIGNvZGUgZ2VyZWdpc3RyZWVyZDxiciAvPg0KPGNvZGU+eyRlbWFpbC5kYXNoZWRfY291cG9uX2NvZGV9PC9jb2RlPiAtIENvdXBvbiBjb2RlIG1ldCBzdHJlZXBqZXMgaWVkZXJlIDQgbnVtbWVyczxiciAvPg0KPGNvZGU+eyRlbWFpbC5jb3Vwb25fY29kZX08L2NvZGU+IC0gQ291cG9uIGNvZGUgKHpvbmRlciBzdHJlZXBqZXMpPGJyIC8+PGJyIC8+DQoNCkhldCBpcyBtb2dlbGlqayBvbSBvcCBkZSB2YXJpYWJlbGUgaW4gaGV0IEUtbWFpbCBiZXJpY2h0IFNtYXJ0eSBtb2RpZmllcnMgb2YgZmlsdGVycyB0b2UgdGUgcGFzc2VuIGFsczogPGJyIC8+DQo8Y29kZT57JGVtYWlsLmRiX3RpbWVzdGFtcHxkYXRlX2Zvcm1hdDomcXVvdDslZCAlQiAlWSZxdW90O308L2NvZGU+PGJyIC8+PGJyIC8+DQonOwokbGFuZ1sncmVnaXN0ZXJfY291cG9uX2NvZGUnXSA9ICdDb3Vwb24gY29kZSByZWdpc3RyZXJlbic7CiRsYW5nWydmaXJzdF9uYW1lJ10gPSAnVm9vcm5hYW0nOwokbGFuZ1snbGFzdF9uYW1lJ10gPSAnQWNodGVybmFhbSc7CiRsYW5nWydlbWFpbCddID0gJ0VtYWlsJzsKJGxhbmdbJ3Bob25lJ10gPSAnVGVsZWZvb25udW1tZXInOwokbGFuZ1sndGVybXNfYW5kX2NvbmRpdGlvbnMnXSA9ICdBY3RpZXZvb3J3YWFyZGVuJzsKJGxhbmdbJ3Rlcm1zX2FuZF9jb25kaXRpb25zX2FncmVlJ10gPSAnSmEsIGlrIGdhIGFjY29vcmQnOwokbGFuZ1snbmV3c2xldHRlciddID0gJ05pZXV3c2JyaWVmJzsKJGxhbmdbJ25ld3NsZXR0ZXJfYWdyZWUnXSA9ICdKYSwgaWsgd2lsIGRlIG5pZXV3c2JyaWVmIG9udHZhbmdlbic7CiRsYW5nWydjb3Vwb25fY29kZSddID0gJ0NvdXBvbiBjb2RlICc7CiRsYW5nWydzX3NfY291cG9uX2NvZGVfcmVnaXN0ZXJlZCddID0gJ0Jlc3RlICVzICVzLCA8YnIgLz48YnIgLz4gVXcgY291cG9uIGNvZGUgaXMgZ2VyZWdpc3RyZWVyZC4gSW5kaWVuIHUgbm9nIGVlbiBjb3Vwb24gY29kZSB3aWx0IHJlZ2lzdGVyZW4gdnVsIGRhbiBkZSB2b2xnZW5kZSBjb3Vwb24gY29kZSBpbiBlbiBnYSBhY2Nvb3JkIG1ldCBkZSBhY3RpZXZvb3J3YWFyZGVuLic7CiRsYW5nWydzX2RlbGV0ZV9jb3Vwb25fY29kZV9jb29raWUnXSA9ICdXaWx0IGRlIGZvcm11bGllcmdlZ2V2ZW5zIGRpZSB3aWogYmV3YWFyZCBoZWJiZW4gdmVyd2lqZGVyZW4sIG9mIHZvb3IgaWVtYW5kIGFuZGVycyBlZW4gY291cG9uIGNvZGUgcmVnaXN0ZXJlbj8gPGJyIC8+PGJyIC8+ICBLbGlrIGRhbiA8YSBocmVmPSIlcyI+aGllcjwvYT4gb20gaGV0IGZvcm11bGllciBsZWVnIHRlIG1ha2VuJzsKJGxhbmdbJ2pzX3JlcXVpcmVkJ10gPSAnSW52dWxsZW4gdmVycGxpY2h0JzsKJGxhbmdbJ2pzX29wdGlvbmFsJ10gPSAnSW52dWxsZW4gb3B0aW9uZWVsJzsKJGxhbmdbJ2pzX2VtYWlsJ10gPSAnVnVsIGVlbiBnZWxkaWcgRS1tYWlsYWRyZXMgaW4nOwokbGFuZ1snanNfbnVtYmVyJ10gPSAnVnVsIGFsbGVlbiBjaWpmZXJzIGluJzsKJGxhbmdbJ2pzX21pbmxlbmd0aCddID0gJ1Z1bCB7MH0gY2lqZmVycyBpbic7CiRsYW5nWydqc19taW5sZW5ndGhfbXVsdGlwbGUnXSA9ICdWdWwgezB9IGNpamZlcnMgcGVyIHZlbGQgaW4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdab3JnIGVydm9vciBkYXQgZ2VicnVpa2VycyBkaWUgVXBDb3Vwb24gYmVoZXJlbiAmIzAzOTtVcENvdXBvbiYjMDM5OyByZWNodGVuIGtyaWpnZW4uJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdVcENvdXBvbiBpcyBzdWNjZXN2b2wgZ2VkZWluc3RhbGxlZXJkLic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnV2VldCB1IGhldCB6ZWtlcj8nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIGRlbmllZCAoJiMwMzk7JXMmIzAzOTspJzsKJGxhbmdbJ2FjY2Vzc2FsbG93ZWQnXSA9ICdUb2VnYW5nIHRvZWdlc3RhYW4nOwokbGFuZ1snbm90X2FsbG93ZWQnXSA9ICdEZXplIGFjdGllIGlzIG5pZXQgdG9lZ2VzdGFhbic7CiRsYW5nWydub19zX2dpdmVuJ10gPSAnRXIgaXMgZ2VlbiAmIzAzOTslcyYjMDM5OyBpbmdlZ2V2ZW4gJzsKJGxhbmdbJ3Nfbm90Z2l2ZW4nXSA9ICcmIzAzOTslcyYjMDM5OyBpcyBuaWV0IGluZ2V2dWxkJzsKJGxhbmdbJ3Nfc19hbHJlYWR5Z2l2ZW4nXSA9ICclczogJiMwMzk7JXMmIzAzOTsgaXMgYWwgaW5nZXZ1bGQnOwokbGFuZ1snZXJyb3JfaW52YWxpZGRhdGVzJ10gPSAnRWVuIG9mIG1lZXJkZXJlIGRhdHVtIHZlbGRlbiB6aWpuIG9uZ2VsZGlnJzsKJGxhbmdbJ3RlbXBsYXRlX2V4aXN0cyddID0gJ0hldCBzamFibG9vbiBiZXN0YWF0IGFsJzsKJGxhbmdbJ2Vycm9yaW5zZXJ0aW5ndGVtcGxhdGUnXSA9ICdIZXQgZmFicmlla3NpbnN0ZWxsaW5nZW4gc2phYmxvb24ga2FuIG5pZXQgZ2VvcGVuZCB3b3JkZW4nOwokbGFuZ1snY291cG9uX2FjdGlvbl9taXNzaW5nJ10gPSAnVm9vcmRhdCAmIzAzOTtDb3Vwb24gUGVyaW9kZXMmIzAzOTsgaW5nZXZ1bGQga3VubmVuIHdvcmRlbiwgZGllbmVuIGVyIGFjdGlldmUgJiMwMzk7Q291cG9uIEFjdGllcyYjMDM5OyBhYW53ZXppZyB0ZSB6aWpuJzsKJGxhbmdbJ2NvdXBvbl9wZXJpb2RfbWlzc2luZyddID0gJ1Zvb3JkYXQgJiMwMzk7UHJpanplbiYjMDM5OyBpbmdldnVsZCBrdW5uZW4gd29yZGVuLCBkaWVuZW4gZXIgYWN0aWV2ZSAmIzAzOTtDb3Vwb24gUGVyaW9kZXMmIzAzOTsgYWFud2V6aWcgdGUgemlqbic7CiRsYW5nWydzX3NfY291cG9ucGVyaW9kX21pc21hdGNoJ10gPSAnRGUgc3RhcnQtIGVuIGVpbmRkYXR1bSB2YW4gZGUgJiMwMzk7Q291cG9uIFBlcmlvZGUmIzAzOTsgZGllbnQgYmlubmVuICVzIGVuICVzIHRlIHZhbGxlbic7CiRsYW5nWyduZWVkX3JlZ2lzdGVyZWRfY3VzdG9tZXInXSA9ICdPbSBlZW4gbG90IHRlIGt1bm5lbiB0cmVra2VuIGluIGRlemUgcGVyaW9kZSB6aWpuIGVyIChtZWVyKSBnZXJlZ2lzdHJlZXJkZSBnZWJydWlrZXJzIG5vZGlnJzsKJGxhbmdbJ2FjdGlvbl9zJ10gPSAnQ291cG9uIEFjdGllJzsKJGxhbmdbJ2FjdGlvbl9wJ10gPSAnQ291cG9uIEFjdGllcyc7CiRsYW5nWydwZXJpb2RfcyddID0gJ0NvdXBvbiBQZXJpb2RlJzsKJGxhbmdbJ3BlcmlvZF9wJ10gPSAnQ291cG9uIFBlcmlvZGVzJzsKJGxhbmdbJ3ByaXplX3MnXSA9ICdQcmlqcyc7CiRsYW5nWydwcml6ZV9wJ10gPSAnUHJpanplbic7CiRsYW5nWyd3aW5uZXJfcyddID0gJ1dpbm5hYXInOwokbGFuZ1snd2lubmVyX3AnXSA9ICdXaW5uYWFycyc7CiRsYW5nWydzdGF0aXN0aWNzX3MnXSA9ICdTdGF0aXN0aWVrZW4nOwokbGFuZ1snc3RhdGlzdGljc19wJ10gPSAnU3RhdGlzdGlla2VuJzsKJGxhbmdbJ3RlbXBsYXRlc19zJ10gPSAnU2phYmxvb24nOwokbGFuZ1sndGVtcGxhdGVzX3AnXSA9ICdTamFibG9uZW4nOwokbGFuZ1sncHJlZmVyZW5jZXNfcyddID0gJ1Zvb3JrZXVyJzsKJGxhbmdbJ3ByZWZlcmVuY2VzX3AnXSA9ICdWb29ya2V1cmVuJzsKJGxhbmdbJ2FkZCddID0gJ1RvZXZvZWdlbic7CiRsYW5nWydlZGl0J10gPSAnQmV3ZXJrZW4nOwokbGFuZ1snZGVsZXRlJ10gPSAnVmVyd2lqZGVyZW4nOwokbGFuZ1snc3VibWl0J10gPSAnVmVyc3R1cmVuJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZXJlbic7CiRsYW5nWydhcHBseSddID0gJ1RvZXBhc3Nlbic7CiRsYW5nWydmYWN0b3J5J10gPSAnRmFicmlla3NpbnN0ZWxsaW5nZW4nOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkX2l0ZW1zJ10gPSAnVmVyd2lqZGVyIGdlc2VsZWN0ZWVyZGUgaXRlbXMnOwokbGFuZ1snc19hZGQnXSA9ICclcyB0b2V2b2VnZW4nOwokbGFuZ1snc19lZGl0J10gPSAnJXMgYmV3ZXJrZW4nOwokbGFuZ1snc19kZWxldGUnXSA9ICclcyB2ZXJ3aWpkZXJlbic7CiRsYW5nWydzX2NoYW5nZV9zdGF0dXMnXSA9ICclcyBzdGF0dXMgYWFucGFzc2VuJzsKJGxhbmdbJ3NfY2hhbmdlX2RlZmF1bHQnXSA9ICclcyBzdGFuZGFhcmQgYWFucGFzc2VuJzsKJGxhbmdbJ3NfYWRkZWQnXSA9ICclcyB0b2VnZXZvZWdkJzsKJGxhbmdbJ3NfZWRpdGVkJ10gPSAnJXMgYmV3ZXJrdCc7CiRsYW5nWydzX2RlbGV0ZWQnXSA9ICclcyB2ZXJ3aWpkZXJkJzsKJGxhbmdbJ3NfY2hhbmdlZF9zdGF0dXMnXSA9ICclcyBzdGF0dXMgYWFuZ2VwYXN0JzsKJGxhbmdbJ3NfY2hhbmdlZF9kZWZhdWx0J10gPSAnJXMgc3RhbmRhYXJkIGFhbmdlcGFzdCc7CiRsYW5nWydoZWxwJ10gPSAnPGgyPkRvY3VtZW50YXRpZTwvaDI+PGJyIC8+DQoNCkRlIFVwQ291cG9uIG1vZHVsZSBpcyBnZXNjaHJldmVuIHZvb3IgZWVuIHdpbmtlbGllcnMgdmVyZW5pbmlnaW5nLiBJZWRlcmUgamFhciBob3VkZW4gemUgZWVuIGFjdGllIHdhYXJiaWogd2lua2VsZW5kIHB1YmxpZWsgYmlqIGJlc3RlZGluZyB2YW4gZWVuIHggYmVkcmFnIGVlbiB2b3VjaGVyIG9udHZhbmd0IG1ldCBoaWVyb3AgZWVuICYjMDM5O0NvdXBvbiBDb2RlJiMwMzk7Lg0KDQpEZSBjb25zdW1lbnQgZ2FhdCBuYWFyIGRlIHZlcmVuaWdpbmctd2Vic2l0ZSB2b2VydCB6aWpuIE5BVyBnZWdldmVucyBlbiBkZSAmIzAzOTtDb3Vwb24gQ29kZSYjMDM5OyB2YW4gZGUgdm91Y2hlciBpbiBlbiBtYWFrdCBrYW5zIG9wIGVlbiBwcmlqcy4gPGJyIC8+PGJyIC8+DQoNCjxoMj5EZSAvYWRtaW4gaW50ZXJmYWNlIHZhbiBkZXplIG1vZHVsZSBrZW50IHZlcnNjaGlsbGVuZGUgZnVuY3Rpb25hbGl0ZWl0ZW46PC9oMj48YnIgLz4NCg0KPGI+Q291cG9uIEFjdGllczwvYj4gLSB0YWIgPGJyIC8+DQoNCkhpZXIga3VubmVuIHZlcnNjaGlsbGVuZGUgYWN0aWVzIGFhbmdlbWFha3Qgd29yZGVuLiA8YnIgLz4NCg0KQmlqdm9vcmJlZWxkIGVlbiAmIzAzOTt6b21lci1hY3RpZSYjMDM5OyAtIGVuL29mIGVlbiAmIzAzOTt3aW50ZXJhY3RpZSYjMDM5Oy4gSWVkZXJlIGFjdGllIHdvcmR0IHZvb3J6aWVuIHZhbiBlZW4gdGl0ZWwsIGFsaWFzLCBvbXNjaHJpanZpbmcsIHN0YXJ0ZGF0dW0sIGVpbmRkYXR1bSBlbiBzdGF0dXMuIDxiciAvPjxiciAvPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBEZSBzdGFydGRhdHVtIHZhbiBkZSBjb3Vwb24gYWN0aWUgZGllbnQgZWVyZGVyIHRlIHppam4gZGFuIGRlIGVpbmRkYXR1bSA8YnIgLz48YnIgLz4NCg0KPGI+Q291cG9uIFBlcmlvZGVzPC9iPiAtIHRhYiA8YnIgLz4NCg0KSGllciBrdW5uZW4gdmVyc2NoaWxsZW5kZSBwZXJpb2RlcyAvIHRyZWtraW5nZW4gYWFuZ2VtYWFrdCB3b3JkZW4uIDxiciAvPg0KDQpCaWp2b29yYmVlbGQgZGUgem9tZXItYWN0aWUgYmVzdGFhdCB1aXQgNCBwZXJpb2Rlcywgd2VlayBbMS00XS4gSWVkZXJlIHdlZWsgd29yZHQgZXIgZWVuIHRyZWtraW5nIGdlZGFhbiBlbiBhYW4gaGV0IGVpbmRlIHZhbiBkZSBhY3RpZSBlZW4gZmluYWxlIHRyZWtraW5nLiBJZWRlcmUgY291cG9uIHBlcmlvZCB3b3JkdCB2b29yemllbiB2YW4gZWVuIGNvdXBvbl9hY3RpZSAoaW5nZWdldmVuIG9uZGVyIGNvdXBvbiBhY3RpZXMpLCB0aXRlbCwgc3RhcnRkYXR1bSwgZWluZGRhdHVtLCBmaW5hbGUgamEvbmVlIGVuIHN0YXR1cy4gPGJyIC8+PGJyIC8+DQoNCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IERlIHN0YXJ0ZGF0dW0gdmFuIGRlIGNvdXBvbiBwZXJpb2RlIGRpZW5zdCBlZXJkZXIgdGUgemlqbiBkYW4gZGUgZWluZGRhdHVtIGVuIGJpbm5lbiBkZSBzdGFydC1lbiBlaW5kYXR1bSB2YW4gZGUgY291cG9uIGFjdGllIHRlIHZhbGxlbiA8YnIgLz48YnIgLz4NCg0KPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gRGUgZmluYWxlIGxvb3B0IG1lZXN0YWwgdmFuIGhldCBiZWdpbiB2YW4gZGUgY291cG9uIGFjdGllIHRvdCBoZXQgZWluZGUgdmFuIGRlIGNvdXBvbiBhY3RpZS4gIDxiciAvPjxiciAvPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPlRpcDwvYj48L2ZvbnQ+IEJlZ2luIGRlIHN0YXJ0ZGF0dW0gb3AgZWVuIHRpamQgdmFuOiAwMDowMDowMCBlbiBlaW5kaWcgb3AgZWVuIHRpamQgdmFuOiAyMzo1OTo1OSwgaGllcm1lZSBsb3BlbiBkZSBhY3RpZXMgb2YgcGVyaW9kZXMgb3ZlciBoZWxlIGRhZ2VuLjxiciAvPjxiciAvPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPlRpcDwvYj48L2ZvbnQ+IEJpaiBoZXQgd2VlcmdldmVuIHZhbiBkZSBDb3Vwb24gUGVyaW9kZSB3b3JkdCBkZSB3ZWVyZ2F2ZSBnZXNvcnRlZXJkIG9wIGVpbmRkYXR1bS4gRG9vciBkZSBlaW5kZGF0dW0gMSBzZWNvbmRlIGVlcmRlciBvZiBsYXRlciB0ZSB6ZXR0ZW4ga2FuIGRlIHZvbGdvcmRlIGFhbmdlcGFzdCB3b3JkZW4uIERpdCBpcyB6ZWtlciBhYW4gdGUgcmFkZW4sIHdhbm5lZXIgZGUgZmluYWxlIHRyZWtraW5nIGRlemVsZmRlIGVpbmRkYXR1bSBoZWVmdCBhbHMgZGUgbGFhdHN0ZSAobmlldC1maW5hbGUpIHRyZWtraW5nLiBIZXQgem91IGltbWVycyB2cmVlbWQgemlqbiwgd2FubmVlciBkZSBmaW5hbGUgdHJla2tpbmcgaW4gZGUgZnJvbnRlbmQgdm9vciBkZSBsYWF0c3RlIChuaWV0LWZpbmFsZSkgdHJla2tpbmcgd29yZHQgd2VlcmdlZ2V2ZW4uIERvb3IgZWVuIHZhbiBkZSBlaW5kZGF0dW0tdGlqZGVuIGFhbiB0ZSBwYXNzZW4sIGlzIGRpdCBlZW52b3VkaWcgdGUgb25kZXJ2YW5nZW4uPGJyIC8+PGJyIC8+DQoNCjxiPlByaWp6ZW48L2I+IC0gdGFiIDxiciAvPg0KDQpBYW4gaWVkZXJlIGNvdXBvbiBhY3RpZSAvIGNvdXBvbiBwZXJpb2Qga3VubmVuIHZlcnNjaGlsbGVuZGUgcHJpanplbiBnZWtvcHBlbGQgd29yZGVuLiBCaWogaGV0IHRvZXZvZWdlbiB2YW4gZWVuIHByaWpzIHdvcmRlbiBjb3Vwb24gYWN0aWUsIGNvdXBvbiBwZXJpb2QsIHByaWpzIGNvZGUsIHRpdGVsLCBvbXNjaHJpanZpbmcsIGFhbnRhbCBlbiBzdGF0dXMgaW5nZWdldmVuLiA8YnIgLz48YnIgLz4NCg0KPGI+V2lubmFhcnM8L2I+IC0gdGFiIDxiciAvPg0KDQpWaWEgZGUgbGlqc3QgdmFuIGdlcmVnaXN0cmVlcmRlIGNvdXBvbiBjb2RlcyB3b3JkZW4gaGllciBkZSB2ZXJzY2hpbGxlbmRlIHByaWp6ZW4gdmVybG9vdC4gTmFkYXQgY291cG9uIGFjdGllLCBjb3Vwb24gcGVyaW9kZSBlbiBwcmlqcyBnZXNlbGVjdGVlcmQgemlqbiB3b3JkdCBlciBvcCBkZSAmcXVvdDt0cmVrIGxvdCZxdW90OyBidXR0b24gZ2VrbGlrdC4gRGUgY29tcHV0ZXIgZG9ldCByYW5kb20gZWVuIGdyYWFpIHVpdCBkZSBkYXRhYmFzZSBlbiBkZSBwcmlqc3dpbm5hYXIgdmVyc2NoaWpudCBpbiBiZWVsZC4gPGJyIC8+PGJyIC8+DQoNCjxiPlN0YXRpc3RpZWtlbjwvYj4gLSB0YWIgPGJyIC8+DQoNCkJpaiBoZXQgcmVnaXN0cmVyZW4gdmFuIGRlIGNvdXBvbiBjb2RlIHdvcmR0IGVlbiB0aWpkc3RlbXBlbCBvcGdlc2xhZ2VuLiBBYW4gZGUgaGFuZCB2YW4gZGV6ZSB0aWpkc3N0ZW1wZWwgZW4gZGUgc3RhcnQtIGVuIGVpbmRkYXR1bSB2YW4gZWVuIGNvdXBvbiBhY3RpZSBlbiBjb3Vwb24gcGVyaW9kZSB3b3JkZW4gZGUgc3RhdGlzdGlla2VuIG9wZ2Vib3V3ZC4gPGJyIC8+PGJyIC8+DQoNCjxiPlNqYWJsb25lbjwvYj4gLSB0YWIgPGJyIC8+DQoNCkRlIFVwQ291cG9uIG1vZHVsZSBrZW50IHZlcnNjaGlsbGVuZGUgc2phYmxvbmVuIChSZWdpc3RyZXJlbiBzamFibG9vbiwgV2lubmFhciBzamFibG9vbiwgUHJpanplbiBzamFibG9vbikuIERlemUgc2phYmxvbmVuIHdvcmRlbiBnZWJydWlrdCBhYW4gZGUgdm9vcmthbnQgdmFuIGRlIHdlYnNpdGUuIEJpaiBoZXQgaW5nZXZlbiB2YW4gZWVuIHNqYWJsb29uIGthbiBlZW4gbmFhbSwgc2phYmxvb24gdHlwZSBlbiBkZSBzamFibG9vbiBjb2RlIGluZ2VnZXZlbiB3b3JkZW4uIDxiciAvPjxiciAvPg0KDQpEZSBmYWJyaWVrc2luc3RlbGxpbmdlbiBidXR0b24gem9yZ3QgZXJ2b29yIGRhdCBoZXQgc2phYmxvb24gY29kZSB2ZWxkIGdldnVsZCB3b3JkdCBtZXQgZWVuIHZvb3JiZWVsZCB0ZW1wbGF0ZS4gPGJyIC8+PGJyIC8+DQoNCjxiPlZvb3JrZXVyZW48L2I+IC0gdGFiIDxiciAvPg0KDQpCaWogaGV0IHJlZ2lzdHJlcmVuIHZhbiBlZW4gY291cG9uIGNvZGUgaXMgaGV0IG1vZ2VsaWprIG9tIGRlIHJlZ2lzdHJhbnQgZWVuIGJldmVzdGlnaW5ncyBlLW1haWwgdGUgc3R1cmVuLiBBbHMgYWxsZSBlLW1haWwgdm9vcmtldXJlbiBjb3JyZWN0IGluZ2V2dWxkIHppam4gemFsIGRlIGUtbWFpbCB2b2xnZW5zIGRlIGluZ2VnZXZlbiBnZWdldmVucyB2ZXJzdHV1cmQgd29yZGVuLiA8YnIgLz48YnIgLz4NCg0KPGgyPlN1cHBvcnQ8L2gyPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgY21zIGRldmVsb3BtZW50IGZvcmdlIGF0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmciPmRldi5jbXNtYWRlc2ltcGxlLm9yZzwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yKHMpLCBhcm5vdWQgZXQgYWxsIGNhbiBzb21ldGltZXMgYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yKHMpIGRpcmVjdGx5LjwvbGk+ICANCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPmxpY2Vuc2U8L2E+IGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCg0KPGgyPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDI+DQo8cD5Db3B5cmlnaHQgKGMpIDIwMTEsIEFybm91ZCB2YW4gU3VzdGVyZW4gPGEgaHJlZj0ibWFpbHRvOmFybm91ZEB1cHNlcnZpY2UubmwiPmFybm91ZEB1cHNlcnZpY2Uubmw8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4NCjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZA0KYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gDQpzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLjwvcD4NCjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4nOwokbGFuZ1snaGVscF9hY3Rpb24nXSA9ICc8YnIgLz4NCjxjb2RlPntVcENvdXBvbiBhY3Rpb249JiMwMzk7c2hvd19yZWdpc3RlciYjMDM5O308L2NvZGU+IC0gTGFhdCBkZSByZWdpc3RyZWVyIHBhZ2luYSB6aWVuLiA8YnIgLz4NCjxjb2RlPntVcENvdXBvbiBhY3Rpb249JiMwMzk7c2hvd19wcml6ZSYjMDM5O308L2NvZGU+IC0gTGFhdCBkZSBwcmlqemVuIHBhZ2luYSB6aWVuLiA8YnIgLz4NCjxjb2RlPntVcENvdXBvbiBhY3Rpb249JiMwMzk7c2hvd193aW5uZXImIzAzOTt9PC9jb2RlPiAtIExhYXQgZGUgd2lubmFhciBwYWdpbmEgemllbi4gPGJyIC8+PGJyIC8+DQoNCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IEFscyBlciBnZWVuIGFjdGlvbiB3b3JkdCBvcGdlZ2V2ZW4gemFsIGVyIHdhYXJzY2h1d2luZ3NtZWxkaW5nIGdldG9vbmQgd29yZGVuLiA8YnIgLz4NCg0KPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gSGV0IGlzIHZvb3IgZGUgJiMwMzk7c2hvd19yZWdpc3RlciYjMDM5OyBhY3Rpb24gbW9nZWxpamsgb20gaW5nZXZ1bGRlIHZlbGRlbiB2aWEgSmF2YVNjcmlwdCB0ZSBsYXRlbiB2YWxpZGVyZW4uIE1hYWsgaGllcnZvb3IgZ2V2cnVpayB2YW4ganF1ZXJ5LnZhbGlkYXRlLmpzIGRlemUgdmluZHQgamUgaW4gZGUgbW9kdWxlcy9VcENvdXBvbi9qcyBtYXAuPGJyIC8+PGJyIC8+DQoNCjxiPiogVm9vcmRhdCBlZW4gY291cG9uIGFjdGllIHZhbiBzdGFydCBnYWF0IHphbCBkZSB1cGNvdXBvbl9jb2RlIGRhdGFiYXNlIGdldnVsZCBtb2V0ZW4gd29yZGVuIG1ldCBjb2Rlcy4gRGUgd2Vic2l0ZW9udHdpa2tlbGFhciB6YWwgaGllcnZvb3IgemVsZiBlZW4gcXVlcnkgbW9ldGVuIHNjaHJpanZlbi4gRGV6ZSBkaWVudCBjb3Vwb25fcHJpemVfaWQgb3AgJiMwMzk7MCYjMDM5OyBlbiB1cGNvdXBvbl9jb2RlIG9wIGVlbiB3YWFyZGUgdmFuIDE2IGNpamZlcnMgdGUgemV0dGVuLiBCaWp2b29yYmVlbGQ6IElOU0VSVCBJTlRPIGNtc19tb2R1bGVfdXBjb3Vwb25fY29kZSBWQUxVRVMgKCYjMDM5OyYjMDM5OywgJiMwMzk7MCYjMDM5OywgJiMwMzk7JiMwMzk7LCAmIzAzOTswMDAwMDAwMDAwMDAwMDAwJiMwMzk7LCAmIzAzOTsmIzAzOTspPC9iPjxiciAvPg0KDQo8YnIgLz4NCic7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPGJyIC8+DQoNCjxjb2RlPntVcENvdXBvbiBhY3Rpb249JiMwMzk7c2hvd19yZWdpc3RlciYjMDM5OyB0ZW1wbGF0ZT0mIzAzOTtuYW1lX29mX3JlZ2lzdGVyX3RlbXBsYXRlJiMwMzk7fTwvY29kZT4gPGJyIC8+DQoNCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IEFscyBlciBnZWVuIHRlbXBsYXRlIHdvcmR0IG9wZ2VnZXZlbiwgb2YgZGUgdGVtcGxhdGUgbmFhbSBuaWV0IGJlc3RhYXQgemFsIGRlICYjMDM5O3N0YW5kYWFyZCB0ZW1wbGF0ZSYjMDM5OyBnZWJydWlrdCB3b3JkZW4uIDwvYnIgPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBBbHMgZXIgZ2VlbiAmIzAzOTtzdGFuZGFhcmQgdGVtcGxhdGUmIzAzOTsgZ2V2b25kZW4ga2FuIHdvcmRlbiB6YWwgZGUgJiMwMzk7ZmFicmlla2luc3RlbGxpbmdlbiB0ZW1wbGF0ZSYjMDM5OyBnZXRvb25kIHdvcmRlbi4gPGJyIC8+PGJyIC8+DQoNCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IERlICYjMDM5O3RlbXBsYXRlJiMwMzk7IG5hbWVuIGt1bm5lbiBnZXZvbmRlbiB3b3JkZW4gb25kZXIgZGUgJiMwMzk7U2phYmxvbmVuIHRhYiYjMDM5OyA8YnIgLz4NCg0KPGJyIC8+JzsKJGxhbmdbJ2hlbHBfY291cG9uX2FjdGlvbl9pZCddID0gJzxiciAvPg0KPGNvZGU+e1VwQ291cG9uIGFjdGlvbj0mIzAzOTtzaG93X3ByaXplJiMwMzk7IGNvdXBvbl9hY3Rpb25faWQ9JiMwMzk7MSYjMDM5O308L2NvZGU+IC0gTGFhdCBhbGxlIHByaWp6ZW4gZGllIG9uZGVyIGNvdXBvbl9hY3Rpb25faWQgJiMwMzk7MSYjMDM5OyBzdGFhbiB6aWVuLiA8YnIgLz48YnIgLz4NCg0KPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gJiMwMzk7Y291cG9uX2FjdGlvbl9pZCYjMDM5OyBpcyB0ZSB2aW5kZW4gb25kZXIgJiMwMzk7Q291cG9uIEFjdGllcyYjMDM5OyB0YWIgdm9vciBkZSB0aXRlbCB2YW4gZWVuIGluZ2VnZXZlbiBhY3RpZS4gJiMwMzk7Q291cG9uIGFjdGllcyYjMDM5OyBkaWUgb3AgaW5hY3RpZWYgc3RhYW4gd29yZGVuIG5pZXQgd2VlcmdlZ2V2ZW4uDQoNCg0KPGJyIC8+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbkFjdGlvbkFkZGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBhY3RpZSBpcyB0b2VnZXZvZWdkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvbkFjdGlvbkFkZGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBhY3RpZSBpcyB0b2VnZXZvZWdkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbkFjdGlvbkVkaXRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gYWN0aWUgaXMgYmV3ZXJrdCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25BY3Rpb25FZGl0ZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIGFjdGllIGlzIGJld2Vya3Q8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uQWN0aW9uRGVsZXRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gYWN0aWUgaXMgdmVyd2lqZGVyZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25BY3Rpb25EZWxldGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBhY3RpZSBpcyB2ZXJ3aWpkZXJkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUGVyaW9kQWRkZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHBlcmlvZGUgaXMgdG9lZ2V2b2VnZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QZXJpb2RBZGRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gcGVyaW9kZSBpcyB0b2VnZXZvZWdkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblBlcmlvZEVkaXRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gcGVyaW9kZSBpcyBiZXdlcmt0JzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblBlcmlvZEVkaXRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gcGVyaW9kZSBpcyBiZXdlcmt0PC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblBlcmlvZERlbGV0ZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHBlcmlvZGUgaXMgdmVyd2lqZGVyZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QZXJpb2REZWxldGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBwZXJpb2RlIGlzIHZlcndpamRlcmQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25Qcml6ZUFkZGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBwcmlqcyBpcyB0b2VnZXZvZWdkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByaXplQWRkZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHByaWpzIGlzIHRvZWdldm9lZ2Q8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJpemVFZGl0ZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHByaWpzIGlzIGJld2Vya3QnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJpemVFZGl0ZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHByaWpzIGlzIGJld2Vya3Q8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJpemVEZWxldGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBwcmlqcyBpcyB2ZXJ3aWpkZXJkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByaXplRGVsZXRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gcHJpanMgaXMgdmVyd2lqZGVyZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbldpbm5lckFkZGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB3aW5uYWFyIGlzIHRvZWdldm9lZ2QnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uV2lubmVyQWRkZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHdpbm5hYXIgaXMgdG9lZ2V2b2VnZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25XaW5uZXJFZGl0ZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHdpbm5hYXIgaXMgYmV3ZXJrdCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25XaW5uZXJFZGl0ZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHdpbm5hYXIgaXMgYmV3ZXJrdDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25XaW5uZXJEZWxldGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB3aW5uYWFyIGlzIHZlcndpamRlcmQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uV2lubmVyRGVsZXRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gd2lubmFhciBpcyB2ZXJ3aWpkZXJkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uVGVtcGxhdGVBZGRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gdGVtcGxhdGUgaXMgdG9lZ2V2b2VnZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25UZW1wbGF0ZUFkZGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB0ZW1wbGF0ZSBpcyB0b2VnZXZvZWdkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblRlbXBsYXRlRWRpdGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB0ZW1wbGF0ZSBpcyBiZXdlcmt0JzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblRlbXBsYXRlRWRpdGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB0ZW1wbGF0ZSBpcyBiZXdlcmt0PC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblRlbXBsYXRlRGVsZXRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gdGVtcGxhdGUgaXMgdmVyd2lqZGVyZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25UZW1wbGF0ZURlbGV0ZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHRlbXBsYXRlIGlzIHZlcndpamRlcmQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QcmVmZXJlbmNlQWRkZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHZvb3JrZXVyIGlzIHRvZWdldm9lZ2QnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJlZmVyZW5jZUFkZGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB2b29ya2V1ciBpcyB0b2VnZXZvZWdkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblByZWZlcmVuY2VFZGl0ZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHZvb3JrZXVyIGlzIGJld2Vya3QnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJlZmVyZW5jZUVkaXRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gdm9vcmtldXIgaXMgYmV3ZXJrdDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QcmVmZXJlbmNlRGVsZXRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gdm9vcmtldXIgaXMgdmVyd2lqZGVyZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QcmVmZXJlbmNlRGVsZXRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gdm9vcmtldXIgaXMgdmVyd2lqZGVyZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMzUzNDg4MTA3LjEzMDg1OTYyMzAuMTMwODU5NjIzMC4xMzA4NTk2MjMwLjEnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzMDg1NTU0MjUuMS4xLnV0bWNjbj0ob3JnYW5pYyl8dXRtY3NyPWdvb2dsZXx1dG1jdHI9dHJhbnNsYXRpb24gY2VudGVyIGNtc21zfHV0bWNtZD1vcmdhbmljJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBkdW1teSBpbmRleC5odG1sIC0tPgo=]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/classes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/classes/UpCouponDAO.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBVcENvdXBvbkRBTy5jbGFzcy5waHAgMSAyMDExLTA2LTEyIDE1OjI1OjI3WiBhcm5vdWQgJAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDbGFzczogY2hpbGREQU8gKGMpIDIwMTEgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEltcGxlbWVudGF0aW9uIG9mIHNvbWUgdGFibGUgbWV0aG9kcwojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgY291cG9uX2FjdGlvbkRBTyBleHRlbmRzIGJhc2VEQU8gewoKICAgIHByb3RlY3RlZCAkX3RhYmxlbmFtZSA9IFVQQ09VUE9OX0FDVElPTl9UQUJMRTsKICAgIHByb3RlY3RlZCAkX3ByaW1hcnlrZXkgPSAgJ2NvdXBvbl9hY3Rpb25faWQnOwogICAgCiAgICAvKiogZmV0Y2hfYWN0aW9uZHJvcGRvd24KICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX2FjdGlvbmRyb3Bkb3duKCR2YWx1ZSA9IE5VTEwsICRkYl9rZXkgPSBOVUxMKSB7ICAKICAgIAogICAgICAgIGlmIChpc19udWxsKCRkYl9rZXkpKSB7CiAgICAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgdGl0bGUsIGNvdXBvbl9hY3Rpb25faWQgRlJPTSB7JHRoaXMtPl90YWJsZW5hbWV9IFdIRVJFIHN0YXR1cyA9ID8iOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgdGl0bGUsIGNvdXBvbl9hY3Rpb25faWQgRlJPTSB7JHRoaXMtPl90YWJsZW5hbWV9IFdIRVJFIHN0YXR1cyA9ID8gQU5EIHskZGJfa2V5fSA9ID8iOwogICAgICAgIH0gICAgICAgICAgICAKICAgICAgICAKICAgICAgICBpZiAoc2VsZjo6JGRlYnVnKSB7CiAgICAgICAgICAgIHByaW50ICIkcXVlcnkgXG4iOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoaXNfbnVsbCgkZGJfa2V5KSkgeyAgICAgICAgCiAgICAgICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnMScpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZGJyZXN1bHQgPSAkdGhpcy0+X19jb25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJzEnLCAkdmFsdWUpKTsKICAgICAgICB9CiAgICAgIAogICAgICAgICRyb3dzID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICAgICAgICAgJHJvd3NbJHJvd1snY291cG9uX2FjdGlvbl9pZCddXSA9ICRyb3dbJ3RpdGxlJ107CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkcm93czsKICAgICAgICAKICAgIH0KICAgICAgICAgCn0gLy8gY291cG9uX2FjdGlvbkRBTwoKY2xhc3MgY291cG9uX3BlcmlvZERBTyBleHRlbmRzIGJhc2VEQU8gewoKICAgIHByb3RlY3RlZCAkX3RhYmxlbmFtZSA9IFVQQ09VUE9OX1BFUklPRF9UQUJMRTsKICAgIHByb3RlY3RlZCAkX3ByaW1hcnlrZXkgPSAgJ2NvdXBvbl9wZXJpb2RfaWQnOwogICAgCiAgICAvKiogZmV0Y2hfYWN0aW9uZHJvcGRvd24KICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX3BlcmlvZGRyb3Bkb3duKCR2YWx1ZSA9IE5VTEwsICRkYl9rZXkgPSBOVUxMKSB7ICAKICAgIAogICAgICAgIGlmIChpc19udWxsKCRkYl9rZXkpKSB7CiAgICAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgdGl0bGUsIGNvdXBvbl9wZXJpb2RfaWQgRlJPTSB7JHRoaXMtPl90YWJsZW5hbWV9IFdIRVJFIHN0YXR1cyA9ID8iOyAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIHRpdGxlLCBjb3Vwb25fcGVyaW9kX2lkIEZST00geyR0aGlzLT5fdGFibGVuYW1lfSBXSEVSRSBzdGF0dXMgPSA/IEFORCB7JGRiX2tleX0gPSA/IjsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZWxmOjokZGVidWcpIHsKICAgICAgICAgICAgcHJpbnQgIiRxdWVyeSBcbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChpc19udWxsKCRkYl9rZXkpKSB7CiAgICAgICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnMScpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZGJyZXN1bHQgPSAkdGhpcy0+X19jb25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJzEnLCAkdmFsdWUpKTsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgJHJvd3MgPSBhcnJheSgpOwogICAgICAgIAogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICRyb3dzWyRyb3dbJ2NvdXBvbl9wZXJpb2RfaWQnXV0gPSAkcm93Wyd0aXRsZSddOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHJvd3M7CiAgICAgICAgCiAgICB9CiAgICAgICAgICAgIAp9IC8vIGNvdXBvbl9wZXJpb2REQU8KCmNsYXNzIGNvdXBvbl9wcml6ZURBTyBleHRlbmRzIGJhc2VEQU8gewoKICAgIHByb3RlY3RlZCAkX3RhYmxlbmFtZSA9IFVQQ09VUE9OX1BSSVpFX1RBQkxFOwogICAgcHJvdGVjdGVkICRfcHJpbWFyeWtleSA9ICAnY291cG9uX3ByaXplX2lkJzsKICAgIAogICAgLyoqIGZldGNoX3ByaXplZHJvcGRvd24KICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX3ByaXplZHJvcGRvd24oJHZhbHVlID0gTlVMTCwgJGRiX2tleSA9IE5VTEwpIHsgIAogICAgCiAgICAgICAgaWYgKGlzX251bGwoJGRiX2tleSkpIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCB0aXRsZSwgY291cG9uX3ByaXplX2lkIEZST00geyR0aGlzLT5fdGFibGVuYW1lfSBXSEVSRSBzdGF0dXMgPSA/IjsgCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCB0aXRsZSwgY291cG9uX3ByaXplX2lkIEZST00geyR0aGlzLT5fdGFibGVuYW1lfSBXSEVSRSBzdGF0dXMgPSA/IEFORCB7JGRiX2tleX0gPSA/IjsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZWxmOjokZGVidWcpIHsKICAgICAgICAgICAgcHJpbnQgIiRxdWVyeSBcbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChpc19udWxsKCRkYl9rZXkpKSB7CiAgICAgICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnMScpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZGJyZXN1bHQgPSAkdGhpcy0+X19jb25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJzEnLCAkdmFsdWUpKTsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgJHJvd3MgPSBhcnJheSgpOwogICAgICAgIAogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICRyb3dzWyRyb3dbJ2NvdXBvbl9wcml6ZV9pZCddXSA9ICRyb3dbJ3RpdGxlJ107CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkcm93czsKICAgICAgICAKICAgIH0KICAgIAp9IC8vIGNvdXBvbl9wcml6ZURBTwoKY2xhc3MgY291cG9uX2N1c3RvbWVyREFPIGV4dGVuZHMgYmFzZURBTyB7CgogICAgcHJvdGVjdGVkICRfdGFibGVuYW1lID0gVVBDT1VQT05fQ1VTVE9NRVJfVEFCTEU7CiAgICBwcm90ZWN0ZWQgJF9wcmltYXJ5a2V5ID0gICdjb3Vwb25fY3VzdG9tZXJfaWQnOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBmZXRjaF9ieV9pcF9jaGVja3N1bSgkaXAsICRjaGVja3N1bSkgewoKICAgICAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSB7JHRoaXMtPl90YWJsZW5hbWV9IAogICAgICAgICAgICAgICAgV0hFUkUgaXAgPSA/IEFORCBjaGVja3N1bSA9ID8iOwoKICAgICAgICBpZiAoc2VsZjo6JGRlYnVnKSB7CiAgICAgICAgICAgIHByaW50ICIkcXVlcnkgXG4iOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkZGJyZXN1bHQgPSAkdGhpcy0+X19jb25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlwLCAkY2hlY2tzdW0pKTsKICAgIAogICAgICAgICRyb3dzID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICAgICAgICAgJHJvd3NbXSA9ICRyb3c7CiAgICAgICAgfQogICAgCiAgICAgICAgcmV0dXJuICRyb3dzOwogIAogICAgfQogIAp9IC8vIGNvdXBvbl9jdXN0b21lckRBTwoKY2xhc3MgY291cG9uX2NvZGVEQU8gZXh0ZW5kcyBiYXNlREFPIHsKCiAgICBwcm90ZWN0ZWQgJF90YWJsZW5hbWUgPSBVUENPVVBPTl9DT0RFX1RBQkxFOwogICAgcHJvdGVjdGVkICRfcHJpbWFyeWtleSA9ICAnY291cG9uX2NvZGVfaWQnOwogICAgCiAgICBmdW5jdGlvbiBkcmF3X2NvdXBvbigkc3RhcnRfdHMsICRlbmRfdHMpIHsKICAgICAgICAgICAgCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIAogICAgICAgICAgICAgICAgICAgIEZST00geyR0aGlzLT5fdGFibGVuYW1lfSAKICAgICAgICAgICAgICAgICAgICBXSEVSRSBjb3Vwb25fY3VzdG9tZXJfaWQgIT0gMCAKICAgICAgICAgICAgICAgICAgICBBTkQgY291cG9uX3ByaXplX2lkID0gMAogICAgICAgICAgICAgICAgICAgIEFORCB0aW1lc3RhbXAgPj0gPwogICAgICAgICAgICAgICAgICAgIEFORCB0aW1lc3RhbXAgPD0gPwogICAgICAgICAgICAgICAgICAgIE9SREVSIEJZIFJBTkQoICkgTElNSVQgMSI7CiAgICAgICAgCiAgICAgICAgaWYgKHNlbGY6OiRkZWJ1ZykgewogICAgICAgICAgICBwcmludCAiJHF1ZXJ5IFxuIjsKICAgICAgICAgICAgcHJpbnQgInN0YXJ0X3RzOiAkc3RhcnRfdHMgXG4iOwogICAgICAgICAgICBwcmludCAiZW5kX3RzOiAkZW5kX3RzIFxuIjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHJvdyA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkdldFJvdygkcXVlcnksIGFycmF5KCRzdGFydF90cywgJGVuZF90cykpOwogICAgICAgICAgICAgICAgCiAgICAgICAgcmV0dXJuICRyb3c7CiAgICAgICAgCiAgICB9CiAgICAKICAgIC8qKiBmZXRjaF9naXZlbl9wcml6ZV9jb3VudCwgY29sbGVjdCB0aGUgKG51bWJlcikgb2YgZ2l2ZW4gcHJpemVzCiAgICAgKiAKICAgICAqIEByZXR1cm4gJHJvd3MgYXJyYXkgLSByZXN1bHQgc2V0IAogICAgICoKICAgICAqLwogICAgIAogICAgIHB1YmxpYyBmdW5jdGlvbiBmZXRjaF9naXZlbl9wcml6ZV9jb3VudCgpIHsKICAgICAgICAgCiAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgY291bnQoKikgYXMgY291bnQsIGNvdXBvbl9wcml6ZV9pZCAKICAgICAgICAgICAgICAgICAgICBGUk9NIHskdGhpcy0+X3RhYmxlbmFtZX0KICAgICAgICAgICAgICAgICAgICBHUk9VUCBCWSBjb3Vwb25fcHJpemVfaWQKICAgICAgICAgICAgICAgICAgICBIQVZJTkcgY291cG9uX3ByaXplX2lkID4gMCI7CiAgICAgICAgIAogICAgICAgIGlmIChzZWxmOjokZGVidWcpIHsKICAgICAgICAgICAgcHJpbnQgIiRxdWVyeSBcbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICAKICAgICAgICAkcm93cyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICRyb3dzWyRyb3dbJ2NvdXBvbl9wcml6ZV9pZCddXSA9ICRyb3dbJ2NvdW50J107CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkcm93czsKICAgICAgICAgCiAgICAgfQogICAgCn0gLy8gY291cG9uX2NvZGVEQU8KCmNsYXNzIGNvdXBvbl9taXhlZERBTyBleHRlbmRzIGJhc2VEQU8gewogICAgCiAgICBwcm90ZWN0ZWQgJF9hY3Rpb25fdGFibGUgICAgPSBVUENPVVBPTl9BQ1RJT05fVEFCTEU7CiAgICBwcm90ZWN0ZWQgJF9wZXJpb2RfdGFibGUgICAgPSBVUENPVVBPTl9QRVJJT0RfVEFCTEU7CiAgICBwcm90ZWN0ZWQgJF9wcml6ZV90YWJsZSAgICAgPSBVUENPVVBPTl9QUklaRV9UQUJMRTsKICAgIHByb3RlY3RlZCAkX2N1c3RvbWVyX3RhYmxlICA9IFVQQ09VUE9OX0NVU1RPTUVSX1RBQkxFOwogICAgcHJvdGVjdGVkICRfY29kZV90YWJsZSAgICAgID0gVVBDT1VQT05fQ09ERV9UQUJMRTsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX3dpbm5lcnMoJHZhbHVlID0gTlVMTCwgJGRiX2tleSA9IE5VTEwpIHsKCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCB0MS50aXRsZSBBUyBhY3Rpb25fdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgdDEuY291cG9uX2FjdGlvbl9pZCBBUyBjb3Vwb25fYWN0aW9uX2lkLAogICAgICAgICAgICAgICAgICAgIHQyLnRpdGxlIEFTIHBlcmlvZF90aXRsZSwKICAgICAgICAgICAgICAgICAgICB0Mi5jb3Vwb25fcGVyaW9kX2lkIEFTIGNvdXBvbl9wZXJpb2RfaWQsCiAgICAgICAgICAgICAgICAgICAgdDMudGl0bGUgQVMgcHJpemVfdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgdDMucHJpemVfY29kZSBBUyBwcml6ZV9jb2RlLAogICAgICAgICAgICAgICAgICAgIHQzLm51bWJlciBBUyBudW1iZXIsCiAgICAgICAgICAgICAgICAgICAgdDMuY291cG9uX3ByaXplX2lkIEFTIGNvdXBvbl9wcml6ZV9pZCwKICAgICAgICAgICAgICAgICAgICB0NC5jb3Vwb25fY3VzdG9tZXJfaWQgQVMgY291cG9uX2N1c3RvbWVyX2lkLAogICAgICAgICAgICAgICAgICAgIHQ0LmZpcnN0X25hbWUgQVMgZmlyc3RfbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgdDQubGFzdF9uYW1lIEFTIGxhc3RfbmFtZSwKICAgICAgICAgICAgICAgICAgICB0NC5lbWFpbCBBUyBlbWFpbCwKICAgICAgICAgICAgICAgICAgICB0NC5waG9uZSBBUyBwaG9uZSwKICAgICAgICAgICAgICAgICAgICB0NS5jb3Vwb25fY29kZV9pZCBBUyBjb3Vwb25fY29kZV9pZCwKICAgICAgICAgICAgICAgICAgICB0NS50aW1lc3RhbXAgQVMgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgIHQ1LmNvdXBvbl9jb2RlIEFTIGNvdXBvbl9jb2RlCiAgICAgICAgICAgICAgICAgICAgRlJPTSB7JHRoaXMtPl9hY3Rpb25fdGFibGV9IHQxLAogICAgICAgICAgICAgICAgICAgICAgICB7JHRoaXMtPl9wZXJpb2RfdGFibGV9IHQyLAogICAgICAgICAgICAgICAgICAgICAgICB7JHRoaXMtPl9wcml6ZV90YWJsZX0gdDMsCiAgICAgICAgICAgICAgICAgICAgICAgIHskdGhpcy0+X2N1c3RvbWVyX3RhYmxlfSB0NCwKICAgICAgICAgICAgICAgICAgICAgICAgeyR0aGlzLT5fY29kZV90YWJsZX0gdDUKICAgICAgICAgICAgICAgICAgICBXSEVSRSB0MS5jb3Vwb25fYWN0aW9uX2lkID0gdDIuY291cG9uX2FjdGlvbl9pZAogICAgICAgICAgICAgICAgICAgIEFORCB0Mi5jb3Vwb25fcGVyaW9kX2lkID0gdDMuY291cG9uX3BlcmlvZF9pZAogICAgICAgICAgICAgICAgICAgIEFORCB0My5jb3Vwb25fcHJpemVfaWQgPSB0NS5jb3Vwb25fcHJpemVfaWQKICAgICAgICAgICAgICAgICAgICBBTkQgdDQuY291cG9uX2N1c3RvbWVyX2lkID0gdDUuY291cG9uX2N1c3RvbWVyX2lkCiAgICAgICAgICAgICAgICAgICAgQU5EIHQxLnN0YXR1cyA9ICcxJwogICAgICAgICAgICAgICAgICAgIEFORCB0Mi5zdGF0dXMgPSAnMScKICAgICAgICAgICAgICAgICAgICBBTkQgdDMuc3RhdHVzID0gJzEnCiAgICAgICAgICAgICAgICAgICAgQU5EIHQ0LnN0YXR1cyA9ICcxJyI7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgaWYgKCFpc19udWxsKCRkYl9rZXkpKSB7CiAgICAgICAgICAgICRxdWVyeSAuPSAiIEFORCB7JGRiX2tleX0gPSA/IjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHF1ZXJ5IC49ICIgT1JERVIgQlkgdDEuZW5kX2RhdGUsIHQyLmVuZF9kYXRlIjsgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgaWYgKHNlbGY6OiRkZWJ1ZykgewogICAgICAgICAgICBwcmludCAiJHF1ZXJ5IFxuIjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKGlzX251bGwoJGRiX2tleSkpIHsKICAgICAgICAgICAgJGRicmVzdWx0ID0gJHRoaXMtPl9fY29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmFsdWUpKTsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgICRyb3dzID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsgCiAgICAgICAgICAgICRyb3dzW10gPSAkcm93OwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHJvd3M7IAogICAgICAgICAgICAgICAgICAgIAogICAgfQogICAgCiAgICAvKiogZmV0Y2hfYWN0aW9uX3BlcmlvZF9wcml6ZXMKICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX2FjdGlvbl9wZXJpb2RfcHJpemVzKCR2YWx1ZSA9IE5VTEwsICRkYl9rZXkgPSBOVUxMKSB7IAogICAgICAgICAgICAKICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIHQzLiosCiAgICAgICAgICAgICAgICAgICAgdDEudGl0bGUgQVMgYWN0aW9uX3RpdGxlLAogICAgICAgICAgICAgICAgICAgIHQxLmNvdXBvbl9hY3Rpb25faWQgQVMgY291cG9uX2FjdGlvbl9pZCwKICAgICAgICAgICAgICAgICAgICB0Mi50aXRsZSBBUyBwZXJpb2RfdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgdDIuY291cG9uX3BlcmlvZF9pZCBBUyBjb3Vwb25fcGVyaW9kX2lkCiAgICAgICAgRlJPTSB7JHRoaXMtPl9hY3Rpb25fdGFibGV9IHQxLCAKICAgICAgICAgICAgeyR0aGlzLT5fcGVyaW9kX3RhYmxlfSB0MiwgCiAgICAgICAgICAgIHskdGhpcy0+X3ByaXplX3RhYmxlfSB0MwogICAgICAgIFdIRVJFIHQxLmNvdXBvbl9hY3Rpb25faWQgPSB0Mi5jb3Vwb25fYWN0aW9uX2lkCiAgICAgICAgQU5EIHQyLmNvdXBvbl9wZXJpb2RfaWQgPSB0My5jb3Vwb25fcGVyaW9kX2lkCiAgICAgICAgQU5EIHQxLnN0YXR1cyA9ICcxJwogICAgICAgIEFORCB0Mi5zdGF0dXMgPSAnMScKICAgICAgICBBTkQgdDMuc3RhdHVzID0gJzEnIjsKICAgICAgICAKICAgICAgICBpZiAoIWlzX251bGwoJGRiX2tleSkpIHsKICAgICAgICAgICAgJHF1ZXJ5IC49ICIgQU5EIHskZGJfa2V5fSA9ID8iOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkcXVlcnkgLj0gIiBPUkRFUiBCWSB0Mi5lbmRfZGF0ZSI7IAogICAgICAgIAogICAgICAgIGlmIChzZWxmOjokZGVidWcpIHsKICAgICAgICAgICAgcHJpbnQgIiRxdWVyeSBcbiI7CiAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgaWYgKGlzX251bGwoJGRiX2tleSkpIHsKICAgICAgICAgICAgJGRicmVzdWx0ID0gJHRoaXMtPl9fY29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmFsdWUpKTsgICAgICAgICAgCiAgICAgICAgfQoKICAgICAgICAkcm93cyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICRyb3dzW10gPSAkcm93OwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHJvd3M7CiAgICB9CiAgICAKICAgIC8qKiBmZXRjaF9wcml6ZXMKICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX3ByaXplcygpIHsgIAogICAgCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCB0My4qIAogICAgICAgIEZST00geyR0aGlzLT5fcGVyaW9kX3RhYmxlfSB0MiwgeyR0aGlzLT5fcHJpemVfdGFibGV9IHQzCiAgICAgICAgV0hFUkUgdDIuY291cG9uX3BlcmlvZF9pZCA9IHQzLmNvdXBvbl9wZXJpb2RfaWQKICAgICAgICBPUkRFUiBCWSB0Mi5lbmRfZGF0ZSI7IAogICAgICAgIAogICAgICAgIGlmIChzZWxmOjokZGVidWcpIHsKICAgICAgICAgICAgcHJpbnQgIiRxdWVyeSBcbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICAKICAgICAgICAkcm93cyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICRyb3dzW10gPSAkcm93OwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHJvd3M7CiAgICB9CgogICAgLyoqIGZldGNoX2FjdGlvbl9wZXJpb2RfanMKICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX2FjdGlvbl9wZXJpb2RfanMoKSB7ICAKICAgCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCB0MS5jb3Vwb25fYWN0aW9uX2lkIEFTIGNvdXBvbl9hY3Rpb25faWQsIAogICAgICAgICAgICAgICAgICAgIHQyLmNvdXBvbl9wZXJpb2RfaWQgQVMgY291cG9uX3BlcmlvZF9pZCwgCiAgICAgICAgICAgICAgICAgICAgdDIudGl0bGUgQVMgdGl0bGUgCiAgICAgICAgICAgICAgICAgICAgRlJPTSB7JHRoaXMtPl9hY3Rpb25fdGFibGV9IHQxLCB7JHRoaXMtPl9wZXJpb2RfdGFibGV9IHQyIAogICAgICAgICAgICAgICAgICAgIFdIRVJFIHQxLmNvdXBvbl9hY3Rpb25faWQgPSB0Mi5jb3Vwb25fYWN0aW9uX2lkCiAgICAgICAgICAgICAgICAgICAgQU5EIHQxLnN0YXR1cyA9ICcxJyAKICAgICAgICAgICAgICAgICAgICBBTkQgdDIuc3RhdHVzID0gJzEnIE9SREVSIEJZIHQyLmVuZF9kYXRlIEFTQyI7CiAgICAgICAgCiAgICAgICAgaWYgKHNlbGY6OiRkZWJ1ZykgewogICAgICAgICAgICBwcmludCAiJHF1ZXJ5IFxuIjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJGRicmVzdWx0ID0gJHRoaXMtPl9fY29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAKICAgICAgICAkcm93cyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7ICAgICAgICAgICAgCiAgICAgICAgICAgICRtYWluX2tleSA9ICRyb3dbJ2NvdXBvbl9hY3Rpb25faWQnXTsKICAgICAgICAgICAgJHN1Yl9rZXkgPSAkcm93Wydjb3Vwb25fcGVyaW9kX2lkJ107CiAgICAgICAgICAgICRyb3dzWyRtYWluX2tleV1bJHN1Yl9rZXldID0gJHJvd1sndGl0bGUnXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuICRyb3dzOwogICAgICAgIAogICAgfQogICAgCiAgICAvKiogZmV0Y2hfYWN0aW9uX3BlcmlvZF9wcml6ZV9qcwogICAgICoKICAgICAqICBAcmV0dXJuICRyb3dzIGFycmF5IC0gcmVzdWx0IHNldAogICAgICoKICAgICAqLwogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZmV0Y2hfYWN0aW9uX3BlcmlvZF9wcml6ZV9qcygpIHsgIAogICAKICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIHQxLmNvdXBvbl9hY3Rpb25faWQgQVMgY291cG9uX2FjdGlvbl9pZCwgCiAgICAgICAgICAgICAgICAgICAgdDIuY291cG9uX3BlcmlvZF9pZCBBUyBjb3Vwb25fcGVyaW9kX2lkLCAKICAgICAgICAgICAgICAgICAgICB0Mi50aXRsZSBBUyB0aXRsZSAKICAgICAgICAgICAgICAgICAgICBGUk9NIHskdGhpcy0+X2FjdGlvbl90YWJsZX0gdDEsIAogICAgICAgICAgICAgICAgICAgICAgICB7JHRoaXMtPl9wZXJpb2RfdGFibGV9IHQyLAogICAgICAgICAgICAgICAgICAgICAgICB7JHRoaXMtPl9wcml6ZV90YWJsZX0gdDMKICAgICAgICAgICAgICAgICAgICBXSEVSRSB0MS5jb3Vwb25fYWN0aW9uX2lkID0gdDIuY291cG9uX2FjdGlvbl9pZAogICAgICAgICAgICAgICAgICAgIEFORCB0Mi5jb3Vwb25fcGVyaW9kX2lkID0gdDMuY291cG9uX3BlcmlvZF9pZAogICAgICAgICAgICAgICAgICAgIEFORCB0MS5zdGF0dXMgPSAnMScgCiAgICAgICAgICAgICAgICAgICAgQU5EIHQyLnN0YXR1cyA9ICcxJyAKICAgICAgICAgICAgICAgICAgICBBTkQgdDMuc3RhdHVzID0gJzEnIAogICAgICAgICAgICAgICAgICAgIE9SREVSIEJZIHQyLmVuZF9kYXRlIEFTQyI7CiAgICAgICAgCiAgICAgICAgaWYgKHNlbGY6OiRkZWJ1ZykgewogICAgICAgICAgICBwcmludCAiJHF1ZXJ5IFxuIjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJGRicmVzdWx0ID0gJHRoaXMtPl9fY29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAKICAgICAgICAkcm93cyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7ICAgICAgICAgICAgCiAgICAgICAgICAgICRtYWluX2tleSA9ICRyb3dbJ2NvdXBvbl9hY3Rpb25faWQnXTsKICAgICAgICAgICAgJHN1Yl9rZXkgPSAkcm93Wydjb3Vwb25fcGVyaW9kX2lkJ107CiAgICAgICAgICAgICRyb3dzWyRtYWluX2tleV1bJHN1Yl9rZXldID0gJHJvd1sndGl0bGUnXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuICRyb3dzOwogICAgICAgIAogICAgfQogICAgCiAgICAvKiogZmV0Y2hfcGVyaW9kX3ByaXplX2pzCiAgICAgKgogICAgICogIEByZXR1cm4gJHJvd3MgYXJyYXkgLSByZXN1bHQgc2V0CiAgICAgKgogICAgICovCiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBmZXRjaF9wZXJpb2RfcHJpemVfanMoKSB7IAogICAgICAgIAogICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgdDIuY291cG9uX3BlcmlvZF9pZCBBUyBjb3Vwb25fcGVyaW9kX2lkLCAKICAgICAgICAgICAgICAgICAgICB0My5jb3Vwb25fcHJpemVfaWQgQVMgY291cG9uX3ByaXplX2lkLCAKICAgICAgICAgICAgICAgICAgICB0My50aXRsZSBBUyB0aXRsZSAKICAgICAgICAgICAgICAgICBGUk9NIHskdGhpcy0+X3BlcmlvZF90YWJsZX0gdDIsIHskdGhpcy0+X3ByaXplX3RhYmxlfSB0MyAKICAgICAgICAgICAgICAgICBXSEVSRSB0Mi5jb3Vwb25fcGVyaW9kX2lkID0gdDMuY291cG9uX3BlcmlvZF9pZCAKICAgICAgICAgICAgICAgICBBTkQgdDIuc3RhdHVzID0gJzEnIAogICAgICAgICAgICAgICAgIEFORCB0My5zdGF0dXMgPSAnMScgT1JERVIgQlkgdDIuZW5kX2RhdGUgQVNDIjsKICAgICAgICAgICAgICAgICAKICAgICAgICBpZiAoc2VsZjo6JGRlYnVnKSB7CiAgICAgICAgICAgIHByaW50ICIkcXVlcnkgXG4iOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkZGJyZXN1bHQgPSAkdGhpcy0+X19jb25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAgIAogICAgICAgICRyb3dzID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsgICAgICAgICAgICAKICAgICAgICAgICAgJG1haW5fa2V5ID0gJHJvd1snY291cG9uX3BlcmlvZF9pZCddOwogICAgICAgICAgICAkc3ViX2tleSA9ICRyb3dbJ2NvdXBvbl9wcml6ZV9pZCddOwogICAgICAgICAgICAkcm93c1skbWFpbl9rZXldWyRzdWJfa2V5XSA9ICRyb3dbJ3RpdGxlJ107CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkcm93czsKICAgICAgICAKICAgIH0gCiAgICAKICAgICAKfSAvL2NvdXBvbl9taXhlZERBTwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBtZXRob2QuaW5zdGFsbC5waHAgMSAyMDExLTA2LTEyIDE1OjI1OjI3WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMSBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0YWJsZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGRiID0gJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKCi8vIFVQQ09VUE9OX0FDVElPTl9UQUJMRQoKJGZsZHMgPSAnY291cG9uX2FjdGlvbl9pZCBJIEtFWSBBVVRPLAogICAgICAgIHRpdGxlIEMoMTAwKSwKICAgICAgICBhbGlhcyBDKDQ1KSwKICAgICAgICBkZXNjcmlwdGlvbiBYLAogICAgICAgIHN0YXJ0X2RhdGUgJy5DTVNfQURPREJfRFQuJywKICAgICAgICBlbmRfZGF0ZSAnLkNNU19BRE9EQl9EVC4nLCAKICAgICAgICBzdGF0dXMgSTEoMSknOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKFVQQ09VUE9OX0FDVElPTl9UQUJMRSwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIFVQQ09VUE9OX1BFUklPRF9UQUJMRQoKJGZsZHMgPSAnY291cG9uX3BlcmlvZF9pZCBJIEtFWSBBVVRPLAogICAgICAgIGNvdXBvbl9hY3Rpb25faWQgSSgxMSksCiAgICAgICAgdGl0bGUgQygxMDApLAogICAgICAgIHN0YXJ0X2RhdGUgJy5DTVNfQURPREJfRFQuJywKICAgICAgICBlbmRfZGF0ZSAnLkNNU19BRE9EQl9EVC4nLAogICAgICAgIGlzX2ZpbmFsIEkxKDEpLCAgICAgIAogICAgICAgIHN0YXR1cyBJMSgxKSc7Cgokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoVVBDT1VQT05fUEVSSU9EX1RBQkxFLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOyAgIAoKLy8gVVBDT1VQT05fUFJJWkVfVEFCTEUKCiRmbGRzID0gJ2NvdXBvbl9wcml6ZV9pZCBJIEtFWSBBVVRPLAogICAgICAgIGNvdXBvbl9wZXJpb2RfaWQgSSgxMSksCiAgICAgICAgY291cG9uX2FjdGlvbl9pZCBJKDExKSwgICAgICAgIAogICAgICAgIHByaXplX2NvZGUgQyg0NSksCiAgICAgICAgdGl0bGUgQygxMDApLAogICAgICAgIGRlc2NyaXB0aW9uIFgsCiAgICAgICAgbnVtYmVyIEkxKDMpLAogICAgICAgIHN0YXR1cyBJMSgxKSc7Cgokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoVVBDT1VQT05fUFJJWkVfVEFCTEUsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7ICAgCgovLyBVUENPVVBPTl9DVVNUT01FUl9UQUJMRQoKJGZsZHMgPSAnY291cG9uX2N1c3RvbWVyX2lkIEkgS0VZIEFVVE8sCiAgICAgICAgZmlyc3RfbmFtZSBDKDEwMCksCiAgICAgICAgbGFzdF9uYW1lIEMoMTAwKSwKICAgICAgICBlbWFpbCBDKDQ1KSwKICAgICAgICBwaG9uZSBDKDE1KSwKICAgICAgICBuZXdzbGV0dGVyIEkxKDEpLAogICAgICAgIGlwIEMoMTUpLAogICAgICAgIHN0YXR1cyBJMSgxKSwgCiAgICAgICAgcGFzc3dvcmQgQyg4KSwKICAgICAgICBzYWx0IEMoOCksCiAgICAgICAgY2hlY2tzdW0gQygzMiksCiAgICAgICAgcmVnaXN0cmF0aW9uX2RhdGUgJy5DTVNfQURPREJfRFQuJywKICAgICAgICB0aW1lc3RhbXAgSSgxMSknOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKFVQQ09VUE9OX0NVU1RPTUVSX1RBQkxFLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gVVBDT1VQT05fQ09ERV9UQUJMRQoKJGZsZHMgPSAnY291cG9uX2NvZGVfaWQgSSBLRVkgQVVUTywKICAgICAgICBjb3Vwb25fcHJpemVfaWQgSSwKICAgICAgICBjb3Vwb25fY3VzdG9tZXJfaWQgSSwKICAgICAgICBjb3Vwb25fY29kZSBDKDE2KSwKICAgICAgICB0aW1lc3RhbXAgSSgxMSknOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKFVQQ09VUE9OX0NPREVfVEFCTEUsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLyBpbmRleGVzCgokZGJfcHJlZml4ID0gY21zX2RiX3ByZWZpeCgpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCRkYl9wcmVmaXguJ2luZGV4X21vZHVsZV91cGNvdXBvbl9jb2RlX2J5X2NvdXBvbl9jdXN0b21lcl9pZCcsIFVQQ09VUE9OX0NPREVfVEFCTEUsICdjb3Vwb25fY3VzdG9tZXJfaWQnKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCRkYl9wcmVmaXguJ2luZGV4X21vZHVsZV91cGNvdXBvbl9jb2RlX2J5X2NvdXBvbl9jb2RlJywgVVBDT1VQT05fQ09ERV9UQUJMRSwgJ2NvdXBvbl9jb2RlJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwZXJtaXNzaW9ucwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJywgJ01vZGlmeSBVcENvdXBvbicpOwkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBldmVudHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPkNyZWF0ZUV2ZW50KCdVcENvdXBvbkFjdGlvbkFkZGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25BY3Rpb25FZGl0ZWQnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdVcENvdXBvbkFjdGlvbkRlbGV0ZWQnKTsKCiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25QZXJpb2RBZGRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ1VwQ291cG9uUGVyaW9kRWRpdGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25QZXJpb2REZWxldGVkJyk7CgokdGhpcy0+Q3JlYXRlRXZlbnQoJ1VwQ291cG9uUHJpemVBZGRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ1VwQ291cG9uUHJpemVFZGl0ZWQnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdVcENvdXBvblByaXplRGVsZXRlZCcpOwoKJHRoaXMtPkNyZWF0ZUV2ZW50KCdVcENvdXBvbldpbm5lckFkZGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25XaW5uZXJFZGl0ZWQnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdVcENvdXBvbldpbm5lckRlbGV0ZWQnKTsKCiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25UZW1wbGF0ZUFkZGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25UZW1wbGF0ZUVkaXRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ1VwQ291cG9uVGVtcGxhdGVEZWxldGVkJyk7CgokdGhpcy0+Q3JlYXRlRXZlbnQoJ1VwQ291cG9uUHJlZmVyZW5jZUFkZGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25QcmVmZXJlbmNlRWRpdGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25QcmVmZXJlbmNlRGVsZXRlZCcpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByZWZlcmVuY2VzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi8vICRnQ21zLT5TZXRQcmVmZXJlbmNlKCdzaWdudXBfZW1haWxfc3ViamVjdCcsICRnQ21zLT5sYW5nKCdhY2NvdW50IGRldGFpbHMnKSk7CgokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpICk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBtZXRob2QudW5pbnN0YWxsLnBocCAxIDIwMTEtMDYtMTIgMTU6MjU6MjdaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHRhYmxlcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokZGIgPSAkdGhpcy0+R2V0RGIoKTsgCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoVVBDT1VQT05fQUNUSU9OX1RBQkxFKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChVUENPVVBPTl9QRVJJT0RfVEFCTEUpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKFVQQ09VUE9OX1BSSVpFX1RBQkxFKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChVUENPVVBPTl9DVVNUT01FUl9UQUJMRSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoVVBDT1VQT05fQ09ERV9UQUJMRSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwZXJtaXNzaW9ucwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJywgJ01vZGlmeSBVcENvdXBvbicpOwkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBldmVudHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvbkFjdGlvbkFkZGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25BY3Rpb25FZGl0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvbkFjdGlvbkRlbGV0ZWQnKTsKCiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25QZXJpb2RBZGRlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnQoJ1VwQ291cG9uUGVyaW9kRWRpdGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25QZXJpb2REZWxldGVkJyk7CgokdGhpcy0+UmVtb3ZlRXZlbnQoJ1VwQ291cG9uUHJpY2VBZGRlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnQoJ1VwQ291cG9uUHJpY2VFZGl0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblByaWNlRGVsZXRlZCcpOwoKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvbldpbm5lckFkZGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25XaW5uZXJFZGl0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvbldpbm5lckRlbGV0ZWQnKTsKCiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25TdGF0aXN0aWNzQWRkZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblN0YXRpc3RpY3NFZGl0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblN0YXRpc3RpY3NEZWxldGVkJyk7CgokdGhpcy0+UmVtb3ZlRXZlbnQoJ1VwQ291cG9uVGVtcGxhdGVzQWRkZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblRlbXBsYXRlc0VkaXRlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnQoJ1VwQ291cG9uVGVtcGxhdGVzRGVsZXRlZCcpOwoKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblByZWZlcmVuY2VzQWRkZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblByZWZlcmVuY2VzRWRpdGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25QcmVmZXJlbmNlc0RlbGV0ZWQnKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcmVmZXJlbmNlcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwoKJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1bmluc3RhbGxlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpICk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/action_add_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV90ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0aXRsZV9pbnB1dH08L3A+Cgk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRhbGlhc190ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRhbGlhc19pbnB1dH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGRlc2NyaXB0aW9uX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRlc2NyaXB0aW9uX2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskc3RhcnRfZGF0ZV90ZXh0fTo8L3A+CiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+e2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSRzdGFydF9kYXRlX3ByZWZpeCB0aW1lPSRzdGFydF9kYXRlIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IisxNSJ9IHtodG1sX3NlbGVjdF90aW1lIHByZWZpeD0kc3RhcnRfZGF0ZV9wcmVmaXggdGltZT0kc3RhcnRfZGF0ZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGVuZF9kYXRlX3RleHR9OjwvcD4KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JGVuZF9kYXRlX3ByZWZpeCB0aW1lPSRlbmRfZGF0ZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTUifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JGVuZF9kYXRlX3ByZWZpeCB0aW1lPSRlbmRfZGF0ZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHN0YXR1c190ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdGF0dXNfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufXskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/action_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKZnVuY3Rpb24gc2VsZWN0QWxsKCkgewogICAgY2hlY2tib3hlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwogICAgZm9yIChpPTA7IGk8Y2hlY2tib3hlcy5sZW5ndGggOyBpKyspIHsKICAgICAgICBpZiAoY2hlY2tib3hlc1tpXS50eXBlID09ICJjaGVja2JveCIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2hlY2tlZD0hY2hlY2tib3hlc1tpXS5jaGVja2VkOwogICAgICAgIH0KICAgIH0gIAp9Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cgp7JGFjdGlvbl9tZXNzYWdlfQoKe2lmICRpdGVtY291bnQgPiAwfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRfbGlua308L3A+CjwvZGl2Pgp7L2lmfQoKeyRzdGFydGZvcm19Cgp7aWYgJGl0ZW1jb3VudCA+IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdldzMwIj57JHRpdGxlX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRhbGlhc190ZXh0fTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdldzI1Ij57JHN0YXJ0X2RhdGVfdGV4dH08L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZXcyNSI+eyRlbmRfZGF0ZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdldzEwIj57JHN0YXR1c190ZXh0fTwvdGg+ICAgICAgICAKICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgICAgPHRoPjxhIGhyZWY9ImphdmFzY3JpcHQ6c2VsZWN0QWxsKCk7Ij57JHNlbGVjdF90ZXh0fTwvYT48L3RoPgogICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICB7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogICAge2NhcHR1cmUgYXNzaWduPSJjeWNsZSJ9e2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn17L2NhcHR1cmV9CiAgICA8dHIgY2xhc3M9InskY3ljbGV9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9JzsiPgogICAgICAgIDx0ZD4oeyRlbnRyeS0+Y291cG9uX2FjdGlvbl9pZH0pIDxhIGhyZWY9InskZW50cnktPmVkaXR1cmx9Ij57JGVudHJ5LT50aXRsZX08L2E+PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+YWxpYXN9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+c3RhcnRfZGF0ZX08L3RkPiAgICAgICAKICAgICAgICA8dGQ+eyRlbnRyeS0+ZW5kX2RhdGV9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+YXBwcm92ZV9saW5rfTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmVkaXRfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5zZWxlY3R9PC90ZD4KICAgPC90cj4KICAgey9mb3JlYWNofQogICA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQoKPGRpdiBzdHlsZT0id2lkdGg6IDk3JTsiPgogICAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogbGVmdDsiPgo8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkX2xpbmt9PC9wPgogICAgPC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KICAgIDxkaXYgY2xhc3M9InBhZ2VvcHRpb24iIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KeyRzdWJtaXRfbWFzc2RlbGV0ZX0gICAKICAgIDwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/factory_template_prize.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZmFjdG9yeV90ZW1wbGF0ZV9wcml6ZSAqfQoKeyogcmVtb3ZlIGlubGluZSBjc3MgKn0KCntsaXRlcmFsfQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKaW1nLmxlZnQgewogICAgZmxvYXQ6IGxlZnQ7CgltYXJnaW4tcmlnaHQ6IDIwcHg7CQp9CgppbWcucmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0OwoJbWFyZ2luLWxlZnQ6IDIwcHg7CQp9Cgo8L3N0eWxlPgp7L2xpdGVyYWx9Cgp7KiAvcmVtb3ZlIGlubGluZSBjc3MgKn0KCntjYXB0dXJlIGFzc2lnbj0ncGVyaW9kX3RpdGxlJ317L2NhcHR1cmV9ICAKCntjYXB0dXJlIGFzc2lnbj0nYnVsbGV0X2xpbmtzJ30KCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09Iml0ZW0iIG5hbWU9Imxvb3AifQogICAge2lmICRzbWFydHkuZm9yZWFjaC5sb29wLmluZGV4ID09IDB9Cgo8Yj57JGl0ZW0tPmFjdGlvbl90aXRsZX06IHskaXRlbS0+YWN0aW9uX3N0YXJ0X2RhdGV8ZGF0ZV9mb3JtYXQ6IiVkICVCICVZIn0gLSB7JGl0ZW0tPmFjdGlvbl9lbmRfZGF0ZXxkYXRlX2Zvcm1hdDoiJWQgJUIgJVkifTwvYj4KPHVsPgogICAgey9pZn0KICAgIAogICAge2lmICRwZXJpb2RfdGl0bGUgIT0gJGl0ZW0tPnBlcmlvZF90aXRsZX0gCjxsaT57JGl0ZW0tPnBlcmlvZF90aXRsZX06IHskaXRlbS0+cGVyaW9kX3N0YXJ0X2RhdGV8ZGF0ZV9mb3JtYXQ6IiVkICVCICVZIn0gLSB7JGl0ZW0tPnBlcmlvZF9lbmRfZGF0ZXxkYXRlX2Zvcm1hdDoiJWQgJUIgJVkifTwvbGk+CiAgICB7L2lmfQogICAge2NhcHR1cmUgYXNzaWduPSdwZXJpb2RfdGl0bGUnfXskaXRlbS0+cGVyaW9kX3RpdGxlfXsvY2FwdHVyZX0gCnsvZm9yZWFjaH0gICAgCjwvdWw+CnsvY2FwdHVyZX0KCntjYXB0dXJlIGFzc2lnbj0ncGVyaW9kX3RpdGxlJ317L2NhcHR1cmV9ICAKCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09Iml0ZW0iIG5hbWU9Imxvb3AifQoKICAgIHsqIGRpc3BsYXkgYWN0aW9uIGRhdGEgKn0KICAgIHtpZiAkc21hcnR5LmZvcmVhY2gubG9vcC5pbmRleCA9PSAwfQo8aDE+eyRpdGVtLT5hY3Rpb25fdGl0bGV9PC9oMT4Keyo8aDE+eyRpdGVtLT5hY3Rpb25fc3RhcnRfZGF0ZXxkYXRlX2Zvcm1hdDoiJWQgJUIgJVkifSAtIHskaXRlbS0+YWN0aW9uX2VuZF9kYXRlfGRhdGVfZm9ybWF0OiIlZCAlQiAlWSJ9PC9oMT4qfQoKPHA+CjxiciAvPjxiPnskaXRlbS0+YWN0aW9uX2Rlc2NyaXB0aW9ufTwvYj48YnIgLz48YnIgLz4KCgp7JGJ1bGxldF9saW5rc30KCjwvcD4KICAgIHsvaWZ9CiAKICAgIHsqIGRpc3BsYXkgcGVyaW9kIGRhdGEgKn0KICAgIHtpZiAkcGVyaW9kX3RpdGxlICE9ICRpdGVtLT5wZXJpb2RfdGl0bGV9IAo8YSBuYW1lPSJpdGVtLXskc21hcnR5LmZvcmVhY2gubG9vcC5pbmRleH0iPjwvYT4gIAo8YnIgLz48aDM+eyRpdGVtLT5wZXJpb2RfdGl0bGV9OiB7JGl0ZW0tPnBlcmlvZF9zdGFydF9kYXRlfGRhdGVfZm9ybWF0OiIlZCAlQiAlWSJ9IC0geyRpdGVtLT5wZXJpb2RfZW5kX2RhdGV8ZGF0ZV9mb3JtYXQ6IiVkICVCICVZIn08L2gzPgo8aHIgLz4KCiAgICB7L2lmfQoKICAgIHtjYXB0dXJlIGFzc2lnbj0ncGVyaW9kX3RpdGxlJ317JGl0ZW0tPnBlcmlvZF90aXRsZX17L2NhcHR1cmV9ICAgICAgCiAgICAKICAgIHsqIGRpc3BsYXkgcHJpemUgZGF0YSAqfQogICAgCjxoND57JGl0ZW0tPnByaXplX251bWJlcn14IHskaXRlbS0+cHJpemVfdGl0bGV9eyokaXRlbS0+cHJpemVfY29kZSp9PC9oND4gICAgCgp7aWYgJGl0ZW0tPnBlcmlvZF9maW5hbH0KPGJyIC8+PGZvbnQgY29sb3I9I0ZGMDAwMD48Yj5EaXQgaXMgZGUgZmluYWxlLCB3YXQgZWVuIHByaWpzITwvYj48L2ZvbnQ+PGJyIC8+CnsvaWZ9Cgo8cD4Ke2V2YWwgdmFyPSRpdGVtLT5wcml6ZV9kZXNjcmlwdGlvbn0gPGJyIC8+PGJyIC8+CjwvcD4KCnsvZm9yZWFjaH0KCjxiciAvPjxiciAvPgoKeyogL2ZhY3RvcnlfdGVtcGxhdGVfcHJpemUgKn0K]]></data>
	</file>
	<file>
	  <filename>/templates/factory_template_register.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZmFjdG9yeV90ZW1wbGF0ZV9yZWdpc3RlciAqfQoKeyogdmFsaWRhdGlvbiBqcyAqfQoKe2NhcHR1cmUgYXNzaWduPSd2YWxpZGF0aW9uX3J1bGVzJ30Ke2xpdGVyYWx9CiAgICAkLmV4dGVuZCgkLnZhbGlkYXRvci5tZXNzYWdlcywgewogICAgICAgIHJlcXVpcmVkOiAiey9saXRlcmFsfXskdXBjb3Vwb24tPmxhbmcoJ2pzX3JlcXVpcmVkJyl9e2xpdGVyYWx9IiwKICAgICAgICBlbWFpbDogInsvbGl0ZXJhbH17JHVwY291cG9uLT5sYW5nKCdqc19lbWFpbCcpfXtsaXRlcmFsfSIsCiAgICAgICAgbnVtYmVyOiAiey9saXRlcmFsfXskdXBjb3Vwb24tPmxhbmcoJ2pzX251bWJlcicpfXtsaXRlcmFsfSIsCiAgICAgICAgbWlubGVuZ3RoOiAiey9saXRlcmFsfXskdXBjb3Vwb24tPmxhbmcoJ2pzX21pbmxlbmd0aCcpfXtsaXRlcmFsfSIgCiAgICB9KTsKICAgIAogICAgJCgiI3svbGl0ZXJhbH17JGZ1bGxfZm9ybV9pZH17bGl0ZXJhbH0iKS52YWxpZGF0ZSh7CiAgICAgICAgZXJyb3JFbGVtZW50OiAic3BhbiIsCiAgICAgICAgZXJyb3JQbGFjZW1lbnQ6IGZ1bmN0aW9uKGVycm9yLCBlbGVtZW50KSB7CiAgICAgICAgICAgICBlcnJvci5pbnNlcnRBZnRlcihlbGVtZW50LmNsb3Nlc3QoInNwYW4iKSk7ICAKICAgICAgICB9LAogICAgICAgIGdyb3VwczogewogICAgICAgICAgICBjb3Vwb25fY29kZV9wYXJ0czogInsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDEgey9saXRlcmFsfXskZm9ybV9pZH17bGl0ZXJhbH1jb3Vwb25fY29kZV8wMiB7L2xpdGVyYWx9eyRmb3JtX2lkfXtsaXRlcmFsfWNvdXBvbl9jb2RlXzAzIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDQiICAgCiAgICAgICAgfSwKICAgICAgICBtZXNzYWdlczogewogICAgICAgICAgICB7L2xpdGVyYWx9eyRmb3JtX2lkfXtsaXRlcmFsfWNvdXBvbl9jb2RlXzAxOiB7CiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICJ7L2xpdGVyYWx9eyR1cGNvdXBvbi0+bGFuZygnanNfbWlubGVuZ3RoX211bHRpcGxlJyl9e2xpdGVyYWx9IgogICAgICAgICAgICB9LAogICAgICAgICAgICB7L2xpdGVyYWx9eyRmb3JtX2lkfXtsaXRlcmFsfWNvdXBvbl9jb2RlXzAyOiB7CiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICJ7L2xpdGVyYWx9eyR1cGNvdXBvbi0+bGFuZygnanNfbWlubGVuZ3RoX211bHRpcGxlJyl9e2xpdGVyYWx9IgogICAgICAgICAgICB9LAogICAgICAgICAgICB7L2xpdGVyYWx9eyRmb3JtX2lkfXtsaXRlcmFsfWNvdXBvbl9jb2RlXzAzOiB7CiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICJ7L2xpdGVyYWx9eyR1cGNvdXBvbi0+bGFuZygnanNfbWlubGVuZ3RoX211bHRpcGxlJyl9e2xpdGVyYWx9IiAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgey9saXRlcmFsfXskZm9ybV9pZH17bGl0ZXJhbH1jb3Vwb25fY29kZV8wNDogewogICAgICAgICAgICAgICAgbWlubGVuZ3RoOiAiey9saXRlcmFsfXskdXBjb3Vwb24tPmxhbmcoJ2pzX21pbmxlbmd0aF9tdWx0aXBsZScpfXtsaXRlcmFsfSIKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9LAogICAgICAgIHJ1bGVzOiB7CiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Zmlyc3RfbmFtZTogInJlcXVpcmVkIiwKICAgICAgICAgICAgey9saXRlcmFsfXskZm9ybV9pZH17bGl0ZXJhbH1sYXN0X25hbWU6ICJyZXF1aXJlZCIsCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9ZW1haWw6IHsKICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICAgIGVtYWlsOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAgICAgey9saXRlcmFsfXskZm9ybV9pZH17bGl0ZXJhbH1waG9uZTogewogICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICAgICAgICBudW1iZXI6IHRydWUsCiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6IDEwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDE6IHsKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgICAgICAgbnVtYmVyOiB0cnVlLAogICAgICAgICAgICAgICAgbWlubGVuZ3RoOiA0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDI6IHsKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgICAgICAgbnVtYmVyOiB0cnVlLAogICAgICAgICAgICAgICAgbWlubGVuZ3RoOiA0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDM6IHsKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgICAgICAgbnVtYmVyOiB0cnVlLAogICAgICAgICAgICAgICAgbWlubGVuZ3RoOiA0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDQ6IHsKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgICAgICAgbnVtYmVyOiB0cnVlLAogICAgICAgICAgICAgICAgbWlubGVuZ3RoOiA0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9dGVybXNfYW5kX2NvbmRpdGlvbnM6ICJyZXF1aXJlZCIKICAgICAgICB9CiAgICB9KTsKey9saXRlcmFsfQp7L2NhcHR1cmV9CgoKe2xpdGVyYWx9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCiQudmFsaWRhdG9yLnNldERlZmF1bHRzKHsKCS8vc3VibWl0SGFuZGxlcjogZnVuY3Rpb24oKSB7IGFsZXJ0KCJ2ZXJzdHV1cmQiKTsgfQp9KTsKCiQoKS5yZWFkeShmdW5jdGlvbigpIHsKICAgICAgICB7L2xpdGVyYWx9eyR2YWxpZGF0aW9uX3J1bGVzfXtsaXRlcmFsfQp9KTsKCjwvc2NyaXB0PgoKey9saXRlcmFsfQoKeyogL3ZhbGlkYXRpb24ganMgKn0KCjxociAvPgoKeyRzdGFydGZvcm19CnskaGlkZGVufQoKe2lmICRpc19yZWdpc3RlcmVkID09ICcxJ30KICAgIHskc19zX2NvdXBvbl9jb2RlX3JlZ2lzdGVyZWRfdGV4dH0gPGJyIC8+PGJyIC8+Cgp7JGRlbGV0ZV9jb3Vwb25fY29kZV9jb29raWVfdGV4dH0gPGJyIC8+PGJyIC8+Cgo8YSBocmVmPSJ7JGRlbGV0ZV9jb3Vwb25fY29kZV9jb29raWVfbGlua30iPnskZGVsZXRlX3RleHR9PC9hPjxiciAvPjxiciAvPgogICAgCnsvaWZ9Cgo8ZmllbGRzZXQgY2xhc3M9Im1haW5mb3JtIj4KCjxzcGFuIGNsYXNzPSJoZWFkZXIiPnskcmVnaXN0ZXJfY291cG9uX2NvZGVfdGV4dH08YnIgLz48YnIgLz48L2hlYWRlcj4KCjxkaXYgY2xhc3M9InJvdyI+CjxsYWJlbCBmb3I9ImZpcnN0X25hbWUiPnskZmlyc3RfbmFtZV90ZXh0fTo8L2xhYmVsPgo8c3BhbiBjbGFzcz0iYmciPnskZmlyc3RfbmFtZV9pbnB1dH08L3NwYW4+CntpZiBpc3NldCgkZXJyb3JfYXJyYXkuZmlyc3RfbmFtZSl9CjxzcGFuIGNsYXNzPSJlcnJvciI+eyR1cGNvdXBvbi0+bGFuZygnanNfcmVxdWlyZWQnKX08L3NwYW4+CnsvaWZ9CjwvZGl2PgoKPGRpdiBjbGFzcz0icm93Ij4KPGxhYmVsIGZvcj0ibGFzdF9uYW1lIj57JGxhc3RfbmFtZV90ZXh0fTo8L2xhYmVsPgo8c3BhbiBjbGFzcz0iYmciPnskbGFzdF9uYW1lX2lucHV0fTwvc3Bhbj4Ke2lmIGlzc2V0KCRlcnJvcl9hcnJheS5sYXN0X25hbWUpfQo8c3BhbiBjbGFzcz0iZXJyb3IiPnskdXBjb3Vwb24tPmxhbmcoJ2pzX3JlcXVpcmVkJyl9PC9zcGFuPgp7L2lmfQo8L2Rpdj4KCjxkaXYgY2xhc3M9InJvdyI+CjxsYWJlbCBmb3I9ImVtYWlsIj57JGVtYWlsX3RleHR9OjwvbGFiZWw+CjxzcGFuIGNsYXNzPSJiZyI+eyRlbWFpbF9pbnB1dH08L3NwYW4+CntpZiBpc3NldCgkZXJyb3JfYXJyYXkuZW1haWwpfQo8c3BhbiBjbGFzcz0iZXJyb3IiPnskdXBjb3Vwb24tPmxhbmcoJ2pzX2VtYWlsJyl9PC9zcGFuPgp7L2lmfQo8L2Rpdj4KCjxkaXYgY2xhc3M9InJvdyI+CjxsYWJlbCBmb3I9InBob25lIj57JHBob25lX3RleHR9OjwvbGFiZWw+CjxzcGFuIGNsYXNzPSJiZyI+eyRwaG9uZV9pbnB1dH08L3NwYW4+CntpZiBpc3NldCgkZXJyb3JfYXJyYXkucGhvbmUpfQo8c3BhbiBjbGFzcz0iZXJyb3IiPnskdXBjb3Vwb24tPmxhbmcoJ2pzX251bWJlcicpfTwvc3Bhbj4Key9pZn0KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJyb3ciPgo8bGFiZWwgZm9yPSJjb3Vwb25fY29kZSI+eyRjb3Vwb25fY29kZV90ZXh0fTo8L2xhYmVsPgo8c3BhbiBjbGFzcz0iYmciPnskY291cG9uX2NvZGVfMDFfaW5wdXR9eyRjb3Vwb25fY29kZV8wMl9pbnB1dH17JGNvdXBvbl9jb2RlXzAzX2lucHV0fSB7JGNvdXBvbl9jb2RlXzA0X2lucHV0fTwvc3Bhbj4Ke2lmIGlzc2V0KCRlcnJvcl9hcnJheS5jb3Vwb25fY29kZSl9CjxzcGFuIGNsYXNzPSJlcnJvciI+eyR1cGNvdXBvbi0+bGFuZygnanNfbnVtYmVyJyl9PC9zcGFuPgp7L2lmfQo8L2Rpdj4KCjxkaXYgY2xhc3M9InJvdyI+CjxsYWJlbCBmb3I9InRlcm1zX2FuZF9jb25kaXRpb25zIj57JHRlcm1zX2FuZF9jb25kaXRpb25zX3RleHR9OjwvbGFiZWw+CjxzcGFuIGNsYXNzPSJiZyI+eyR0ZXJtc19hbmRfY29uZGl0aW9uc19pbnB1dH08L3NwYW4+CjxzcGFuIGNsYXNzPSJ0eHQiPiZuYnNwOyA8YSBocmVmPSIjIj57JHRlcm1zX2FuZF9jb25kaXRpb25zX2FncmVlX3RleHR9PC9hPjwvc3Bhbj4Ke2lmIGlzc2V0KCRlcnJvcl9hcnJheS50ZXJtc19hbmRfY29uZGl0aW9ucyl9CjxzcGFuIGNsYXNzPSJlcnJvciI+eyR1cGNvdXBvbi0+bGFuZygnanNfcmVxdWlyZWQnKX08L3NwYW4+CnsvaWZ9CjwvZGl2PgoKPGRpdiBjbGFzcz0icm93Ij4KPGxhYmVsIGZvcj0ibmV3c2xldHRlciI+eyRuZXdzbGV0dGVyX3RleHR9OjwvbGFiZWw+CjxzcGFuIGNsYXNzPSJiZyI+eyRuZXdzbGV0dGVyX2lucHV0fTwvc3Bhbj4KPHNwYW4gY2xhc3M9InR4dCI+Jm5ic3A7IDxhIGhyZWY9IiMiPnskbmV3c2xldHRlcl9hZ3JlZV90ZXh0fTwvYT48L3NwYW4+CntpZiBpc3NldCgkZXJyb3JfYXJyYXkubmV3c2xldHRlcil9CjxzcGFuIGNsYXNzPSJlcnJvciI+eyR1cGNvdXBvbi0+bGFuZygnanNfb3B0aW9uYWwnKX08L3NwYW4+CnsvaWZ9CjwvZGl2PgoKPGRpdiBjbGFzcz0icm93Ij4KPGxhYmVsPiZuYnNwOzwvbGFiZWw+CjxzcGFuIGNsYXNzPSJidXR0b24tY29udGFpbmVyIj57JHN1Ym1pdH08L3NwYW4+CjwvZGl2PgoKPC9maWVsZHNldD4KCnskZW5kZm9ybX0KCjxociAvPgoKeyogL2ZhY3RvcnlfdGVtcGxhdGVfcmVnaXN0ZXIgKn0K]]></data>
	</file>
	<file>
	  <filename>/templates/factory_template_winner.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZmFjdG9yeV90ZW1wbGF0ZV93aW5uZXIgKn0KCjxociAvPgoKe2NhcHR1cmUgYXNzaWduPSJucl9vZl9pdGVtcyJ9eyR3aW5uZXJpdGVtc3xAY291bnR9ey9jYXB0dXJlfQp7Y2FwdHVyZSBhc3NpZ249Im5yX29mX2l0ZW1zX21pbiJ9e21hdGggZXF1YXRpb249InggLSAxIiB4PSR3aW5uZXJpdGVtc3xAY291bnR9ey9jYXB0dXJlfQoKe2lmICRucl9vZl9pdGVtc30KPGgzPnskd2lubmVyX3BfdGV4dH08L2gzPjxiciAvPgp7L2lmfQoKe3NlY3Rpb24gbmFtZT0iaSIgc3RhcnQ9IjAiIGxvb3A9JG5yX29mX2l0ZW1zIHN0ZXA9IjEifQogICAge2Fzc2lnbiB2YXI9cHJldl9rZXkgdmFsdWU9JHNtYXJ0eS5zZWN0aW9uLmkuaW5kZXgtMX0KICAgIHthc3NpZ24gdmFyPWtleSB2YWx1ZT0kc21hcnR5LnNlY3Rpb24uaS5pbmRleH0KICAgIHthc3NpZ24gdmFyPW5leHRfa2V5IHZhbHVlPSRzbWFydHkuc2VjdGlvbi5pLmluZGV4KzF9CgoKeyogaGVhZGVyICp9CntpZiAka2V5ID09IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMiIgY2VsbHNwYWNpbmc9IjIiIGJvcmRlcj0iMCIgd2lkdGg9Ijk5JSI+CiAgICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgICAgPHRoPnskcHJpemVfY29kZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskdGl0bGVfdGV4dH08L3RoPgogICAgICAgIDx0aD57JG5hbWVfdGV4dH08L3RoPgogICAgICAgIHsqIDx0aD57JGVtYWlsX3RleHR9PC90aD4gKn0KICAgICAgICB7KiA8dGg+eyRwaG9uZV90ZXh0fTwvdGg+ICp9CiAgICAgICAgPHRoPnskY291cG9uX2NvZGVfdGV4dH08L3RoPgogICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CnsvaWZ9CntpZiAka2V5ID09IDAgfHwgJHdpbm5lcml0ZW1zWyRrZXldLT5wZXJpb2RfdGl0bGUgbmUgJHdpbm5lcml0ZW1zWyRwcmV2X2tleV0tPnBlcmlvZF90aXRsZX0KICAgIDx0cj4KICAgICAgICA8dGQgY29sc3Bhbj0iNiI+PHN0cm9uZz57JHdpbm5lcml0ZW1zWyRrZXldLT5hY3Rpb25fdGl0bGV9IC8geyR3aW5uZXJpdGVtc1ska2V5XS0+cGVyaW9kX3RpdGxlfTwvc3Ryb25nPjwvdGQ+CiAgICA8L3RyPiAgICAgICAgCnsvaWZ9CnsqIC9oZWFkZXIgKn0KCnsqIGJvZHkgKn0KICAgIDx0ciBiZ2NvbG9yPSJ7Y3ljbGUgdmFsdWVzPSIjODg4ODg4LCM5OTk5OTkifSI+CiAgICAgICAgPHRkPnskd2lubmVyaXRlbXNbJGtleV0tPnByaXplX2NvZGV9PC90ZD4gIAogICAgICAgIDx0ZD57JHdpbm5lcml0ZW1zWyRrZXldLT5wcml6ZV90aXRsZX08L3RkPgogICAgICAgIDx0ZD57JHdpbm5lcml0ZW1zWyRrZXldLT5maXJzdF9uYW1lfSB7JHdpbm5lcml0ZW1zWyRrZXldLT5sYXN0X25hbWV9PC90ZD4KICAgICAgICB7KiA8dGQ+PGEgaHJlZj0ibWFpbHRvOnskd2lubmVyaXRlbXNbJGtleV0tPmVtYWlsfSI+eyR3aW5uZXJpdGVtc1ska2V5XS0+ZW1haWx9PC9hPjwvdGQ+ICp9CiAgICAgICAgeyogPHRkPnskd2lubmVyaXRlbXNbJGtleV0tPmRhc2hlZF9waG9uZX08L3RkPiAqfQogICAgICAgIDx0ZD57JHdpbm5lcml0ZW1zWyRrZXldLT5kYXNoZWRfY291cG9uX2NvZGV9PC90ZD4KICAgPC90cj4KeyogL2JvZHkgKn0KCnsqIGZvb3RlciAqfQp7aWYgJGtleSA9PSAkbnJfb2ZfaXRlbXNfbWlufSAgIAogICAgPC90Ym9keT4KPC90YWJsZT4Key9pZn0KeyogZm9vdGVyICp9Cgp7L3NlY3Rpb259Cgo8aHIgLz4KCnsqIC9mYWN0b3J5X3RlbXBsYXRlX3dpbm5lciAqfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/period_add_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRhY3Rpb25fdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYWN0aW9uX2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdGl0bGVfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRzdGFydF9kYXRlX3RleHR9OjwvcD4KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHN0YXJ0X2RhdGVfcHJlZml4IHRpbWU9JHN0YXJ0X2RhdGUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzE1In0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSRzdGFydF9kYXRlX3ByZWZpeCB0aW1lPSRzdGFydF9kYXRlfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZW5kX2RhdGVfdGV4dH06PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPntodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kZW5kX2RhdGVfcHJlZml4IHRpbWU9JGVuZF9kYXRlIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IisxNSJ9IHtodG1sX3NlbGVjdF90aW1lIHByZWZpeD0kZW5kX2RhdGVfcHJlZml4IHRpbWU9JGVuZF9kYXRlfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskaXNfZmluYWxfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaXNfZmluYWxfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRzdGF0dXNfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3RhdHVzX2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhpZGRlbn17JHN1Ym1pdH17JGNhbmNlbH17JGFwcGx5fTwvcD4KCTwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/period_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKZnVuY3Rpb24gc2VsZWN0QWxsKCkgewogICAgY2hlY2tib3hlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwogICAgZm9yIChpPTA7IGk8Y2hlY2tib3hlcy5sZW5ndGggOyBpKyspIHsKICAgICAgICBpZiAoY2hlY2tib3hlc1tpXS50eXBlID09ICJjaGVja2JveCIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2hlY2tlZD0hY2hlY2tib3hlc1tpXS5jaGVja2VkOwogICAgICAgIH0KICAgIH0gIAp9Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cgp7JHBlcmlvZF9tZXNzYWdlfQoKe2lmICRpdGVtY291bnQgPiAwfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRfbGlua308L3A+CjwvZGl2Pgp7L2lmfQoKeyRzdGFydGZvcm19Cgp7aWYgJGl0ZW1jb3VudCA+IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgICAgPHRoPnskYWN0aW9uX3RleHR9PC90aD4KICAgICAgICA8dGg+eyR0aXRsZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskc3RhcnRfZGF0ZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskZW5kX2RhdGVfdGV4dH08L3RoPgogICAgICAgIDx0aD57JGlzX2ZpbmFsX3RleHR9PC90aD4gIAogICAgICAgIDx0aD57JHN0YXR1c190ZXh0fTwvdGg+ICAgICAgICAKICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgICAgPHRoPjxhIGhyZWY9ImphdmFzY3JpcHQ6c2VsZWN0QWxsKCk7Ij57JHNlbGVjdF90ZXh0fTwvYT48L3RoPgogICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICB7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogICAge2NhcHR1cmUgYXNzaWduPSJjeWNsZSJ9e2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn17L2NhcHR1cmV9CiAgICA8dHIgY2xhc3M9InskY3ljbGV9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9JzsiPgogICAgICAgIDx0ZD57JGVudHJ5LT5jb3Vwb25fYWN0aW9uX3RpdGxlfXsqKHskZW50cnktPmNvdXBvbl9hY3Rpb25faWR9KSp9PC90ZD4gICAKICAgICAgICA8dGQ+PGEgaHJlZj0ieyRlbnRyeS0+ZWRpdHVybH0iPnskZW50cnktPmNvdXBvbl9wZXJpb2RfdGl0bGV9PC9hPiB7Kih7JGVudHJ5LT5jb3Vwb25fcGVyaW9kX2lkfSkqfTwvdGQ+ICAgICAKICAgICAgICA8dGQ+eyRlbnRyeS0+c3RhcnRfZGF0ZX08L3RkPiAgICAgICAKICAgICAgICA8dGQ+eyRlbnRyeS0+ZW5kX2RhdGV9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+aXNfZmluYWx9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+YXBwcm92ZV9saW5rfTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmVkaXRfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5zZWxlY3R9PC90ZD4KICAgPC90cj4KICAgey9mb3JlYWNofQogICA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQoKPGRpdiBzdHlsZT0id2lkdGg6IDk3JTsiPgogICAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogbGVmdDsiPgo8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkX2xpbmt9PC9wPgogICAgPC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KICAgIDxkaXYgY2xhc3M9InBhZ2VvcHRpb24iIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KeyRzdWJtaXRfbWFzc2RlbGV0ZX0gICAKICAgIDwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/preferences_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRwcmVmZXJlbmNlc19tZXNzYWdlfQoKeyRzdGFydGZvcm19Cgo8ZmllbGRzZXQ+CjxsZWdlbmQ+eyRzZWN0aW9uX2VtYWlsX3JlZ2lzdGVyZWRfY3VzdG9tZXJ9PC9sZWdlbmQ+Cgp7JGVtYWlsX3JlZ2lzdGVyZWRfdHJ1ZV9mYWxzZV90ZXh0fQoKICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfY3VzdG9tZXJfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZW1haWxfcmVnaXN0ZXJlZF9jdXN0b21lcl9pbnB1dH08L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfc3ViamVjdF90ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3RfaW5wdXR9PC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWxfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsX2lucHV0fSA8YnIgLz4gCgkJeyRlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWxfaGVscH0KCQk8L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19uYW1lX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19uYW1lX2lucHV0fTwvcD4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX2lucHV0fTwvcD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnN9IDxhIGhyZWY9IiMiIG9uY2xpY2s9InRvZ2dsZWNvbGxhcHNlKCd2YXJpYWJsZXNpbmZvX21lc3NhZ2UnKTsgcmV0dXJuIGZhbHNlOyI+eyRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFyc19saW5rfTwvYT48L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9InZhcmlhYmxlc2luZm9fbWVzc2FnZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV92YXJzX2xpc3R9PC9wPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICAKICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3dpbm5lcl9pbnB1dH08L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfdmFyc30gPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlY29sbGFwc2UoJ3ZhcmlhYmxlc2luZm9fbWVzc2FnZV93aW5uZXInKTsgcmV0dXJuIGZhbHNlOyI+eyRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnNfbGlua308L2E+PC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJ2YXJpYWJsZXNpbmZvX21lc3NhZ2Vfd2lubmVyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3dpbm5lcl92YXJzX2xpc3R9PC9wPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICAKICAgIDxiciAvPgo8L2ZpZWxkc2V0Pgo8YnIgLz4KCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfTwvcD4KCTwvZGl2PgoJCnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/prize_add_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRhY3Rpb25fdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYWN0aW9uX2lucHV0fTwvcD4KCTwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHBlcmlvZF90ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRwZXJpb2RfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcml6ZV9jb2RlX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHByaXplX2NvZGVfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV90ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0aXRsZV9pbnB1dH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGRlc2NyaXB0aW9uX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRlc2NyaXB0aW9uX2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbnVtYmVyX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG51bWJlcl9pbnB1dH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHN0YXR1c190ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdGF0dXNfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufXskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0KCntsaXRlcmFsfQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKCiAgICAkKCcjYWN0aW9uZHJvcGRvd24nKS5jaGFuZ2UoZnVuY3Rpb24oKSB7ICAgICAgICAKICAgICAgICB2YXIgYWN0aXZlX2FjdGlvbl9vcHRpb24gPSAkKHRoaXMpLnZhbCgpOwogICAgICAgIGNoYW5nZV9wZXJpb2Rkcm9wZG93bihhY3RpdmVfYWN0aW9uX29wdGlvbik7CiAgICB9KTsKICAgIAogICAgdmFyIGFjdGl2ZV9hY3Rpb25fb3B0aW9uID0gJCgnI2FjdGlvbmRyb3Bkb3duJykudmFsKCk7CiAgICBjaGFuZ2VfcGVyaW9kZHJvcGRvd24oYWN0aXZlX2FjdGlvbl9vcHRpb24pOwoKfSk7CgpmdW5jdGlvbiBjaGFuZ2VfcGVyaW9kZHJvcGRvd24oYWN0aXZlX2FjdGlvbl9vcHRpb24pIHsKICAgICAgICAKICAgIHZhciBsaXN0ID0gWwp7L2xpdGVyYWx9CnskcGVyaW9kX2pzfSAgICAgICAgCntsaXRlcmFsfQogICAgXTsKICAgIAogICAgdmFyIGFjdGl2ZV9wZXJpb2QgPSAkLmdyZXAobGlzdCwgZnVuY3Rpb24obiwgaSkgewogICAgICAgICAgICByZXR1cm4gbi5wa2V5ID09IGFjdGl2ZV9hY3Rpb25fb3B0aW9uOwogICAgfSk7CgogICAgdmFyIG9wdGlvbnMgPSAnPG9wdGlvbiB2YWx1ZT0iIj4tLTwvb3B0aW9uPic7CgogICAgaWYgKGFjdGl2ZV9wZXJpb2QubGVuZ3RoID4gMCkgewogICAgICAgIG9wdGlvbnMgPSAnJzsKICAgICAgICBqUXVlcnkuZWFjaChhY3RpdmVfcGVyaW9kWzBdLCBmdW5jdGlvbihpLCB2YWwpIHsKICAgICAgICAgICAgaWYgKGkgPT0gJ3BrZXknKSB7IHJldHVybjsgfQogICAgICAgICAgICBvcHRpb25zICs9ICc8b3B0aW9uIHZhbHVlPSInK2krJyI+Jyt2YWwrJzwvb3B0aW9uPic7CiAgICAgICAgfSk7CiAgICB9CgogICAgJCgnI3BlcmlvZGRyb3Bkb3duJykuaHRtbChvcHRpb25zKTsKICAgIAogICAgdmFyIHNlbGVjdGVkX3BlcmlvZGRyb3Bkb3duID0gey9saXRlcmFsfSJ7JHNlbGVjdGVkX3BlcmlvZF9qc30ie2xpdGVyYWx9OwogICAgJCgiI3BlcmlvZGRyb3Bkb3duIikudmFsKCBzZWxlY3RlZF9wZXJpb2Rkcm9wZG93biApLmF0dHIoJ3NlbGVjdGVkJyx0cnVlKTsKICAgICAgIAp9CgovL11dPgo8L3NjcmlwdD4Key9saXRlcmFsfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/prize_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKZnVuY3Rpb24gc2VsZWN0QWxsKCkgewogICAgY2hlY2tib3hlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwogICAgZm9yIChpPTA7IGk8Y2hlY2tib3hlcy5sZW5ndGggOyBpKyspIHsKICAgICAgICBpZiAoY2hlY2tib3hlc1tpXS50eXBlID09ICJjaGVja2JveCIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2hlY2tlZD0hY2hlY2tib3hlc1tpXS5jaGVja2VkOwogICAgICAgIH0KICAgIH0gIAp9Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cgp7JHByaXplX21lc3NhZ2V9Cgp7aWYgJGl0ZW1jb3VudCA+IDB9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZF9saW5rfTwvcD4KPC9kaXY+CnsvaWZ9Cgp7JHN0YXJ0Zm9ybX0KCntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICAgIDx0aGVhZD4KICAgIDx0cj4KICAgICAgICA8dGg+eyRwcml6ZV9jb2RlX3RleHR9PC90aD4KICAgICAgICA8dGggY2xhc3M9InBhZ2V3MTAiPnskbnVtYmVyX3RleHR9PC90aD4KICAgICAgICA8dGg+eyR0aXRsZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskYWN0aW9uX3BlcmlvZF90ZXh0fTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdldzEwIj57JHN0YXR1c190ZXh0fTwvdGg+ICAgICAgICAKICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgICAgPHRoPjxhIGhyZWY9ImphdmFzY3JpcHQ6c2VsZWN0QWxsKCk7Ij57JHNlbGVjdF90ZXh0fTwvYT48L3RoPgogICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICB7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogICAge2NhcHR1cmUgYXNzaWduPSJjeWNsZSJ9e2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn17L2NhcHR1cmV9CiAgICA8dHIgY2xhc3M9InskY3ljbGV9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9JzsiPgogICAgICAgIDx0ZD48YSBocmVmPSJ7JGVudHJ5LT5lZGl0dXJsfSI+eyRlbnRyeS0+cHJpemVfY29kZX08L2E+PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+bnVtYmVyfXg8L3RkPiAgICAKICAgICAgICA8dGQ+eyRlbnRyeS0+dGl0bGV9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+Y291cG9uX2FjdGlvbl92YWx1ZX17Kih7JGVudHJ5LT5jb3Vwb25fYWN0aW9uX2lkfSkqfSAvIHskZW50cnktPmNvdXBvbl9wZXJpb2RfdmFsdWV9eyooeyRlbnRyeS0+Y291cG9uX3BlcmlvZF9pZH0pKn08L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5hcHByb3ZlX2xpbmt9eyooeyRlbnRyeS0+c3RhdHVzfSkqfTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmVkaXRfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5zZWxlY3R9PC90ZD4KICAgPC90cj4KICAgey9mb3JlYWNofQogICA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQoKPGRpdiBzdHlsZT0id2lkdGg6IDk3JTsiPgogICAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogbGVmdDsiPgo8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkX2xpbmt9PC9wPgogICAgPC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KICAgIDxkaXYgY2xhc3M9InBhZ2VvcHRpb24iIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KeyRzdWJtaXRfbWFzc2RlbGV0ZX0gICAKICAgIDwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/statistics_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogICAgPHRoZWFkPgogICAgPHRyPgogICAgICAgIDx0aD57JHRpdGxlX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRzdGFydF9kYXRlX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRlbmRfZGF0ZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskcmVnaXN0cmF0aW9uc190ZXh0fTwvdGg+CiAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgIAogICAge2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICAgIHtpZiAkY3ljbGUgPT0gJ3JvdzEnfQogICAgICAgIHthc3NpZ24gdmFyPSdjeWNsZScgdmFsdWU9J3JvdzInfQogICAge2Vsc2V9CiAgICAgICAge2Fzc2lnbiB2YXI9J2N5Y2xlJyB2YWx1ZT0ncm93MSd9CiAgICB7L2lmfQogICAgCiAgICB7aWYgJGVudHJ5LT5zaG93X2FjdGlvbl90aXRsZX0KICAgIDx0ciBjbGFzcz0ieyRjeWNsZX0iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRjeWNsZX1ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRjeWNsZX0nOyI+CiAgICAgICAgPHRkPjxiPnskZW50cnktPmFjdGlvbl90aXRsZX08L2I+PC90ZD4KICAgICAgICA8dGQ+PGI+eyRlbnRyeS0+YWN0aW9uX3N0YXJ0X2RhdGV9PC9iPjwvdGQ+CiAgICAgICAgPHRkPjxiPnskZW50cnktPmFjdGlvbl9lbmRfZGF0ZX08L2I+PC90ZD4KICAgICAgICA8dGQ+PGI+eyRlbnRyeS0+YWN0aW9uX2NvdW50fTwvYj48L3RkPiAgCiAgICA8L3RyPgogICAgICAgIHtpZiAkY3ljbGUgPT0gJ3JvdzEnfQogICAgICAgICAgICB7YXNzaWduIHZhcj0nY3ljbGUnIHZhbHVlPSdyb3cyJ30KICAgICAgICB7ZWxzZX0KICAgICAgICAgICAge2Fzc2lnbiB2YXI9J2N5Y2xlJyB2YWx1ZT0ncm93MSd9CiAgICAgICAgey9pZn0KICAgIHsvaWZ9CiAgICAKICAgIDx0ciBjbGFzcz0ieyRjeWNsZX0iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRjeWNsZX1ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRjeWNsZX0nOyI+CiAgICAgICAgPHRkPnskZW50cnktPnBlcmlvZF90aXRsZX08L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5wZXJpb2Rfc3RhcnRfZGF0ZX08L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5wZXJpb2RfZW5kX2RhdGV9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+cGVyaW9kX2NvdW50fTwvdGQ+ICAgIAogICA8L3RyPgogICB7L2ZvcmVhY2h9CiAgIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/templates_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKZnVuY3Rpb24gc2VsZWN0QWxsKCkgewogICAgY2hlY2tib3hlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwogICAgZm9yIChpPTA7IGk8Y2hlY2tib3hlcy5sZW5ndGggOyBpKyspIHsKICAgICAgICBpZiAoY2hlY2tib3hlc1tpXS50eXBlID09ICJjaGVja2JveCIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2hlY2tlZD0hY2hlY2tib3hlc1tpXS5jaGVja2VkOwogICAgICAgIH0KICAgIH0gIAp9Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cgp7JHRlbXBsYXRlc19tZXNzYWdlfQoKe2lmICRpdGVtY291bnQgPiAwfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CiAgPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZF9saW5rfTwvcD4KPC9kaXY+CnsvaWZ9Cgp7JHN0YXJ0Zm9ybX0KCntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICAgIDx0aGVhZD4KICAgIDx0cj4KICAgICAgICA8dGggY2xhc3M9InBhZ2V3NTAiPnskbmFtZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdldzEwIj57JGRlZmF1bHRfdGV4dH08L3RoPgogICAgICAgIDx0aD57JHRlbXBsYXRlX3R5cGVfdGV4dH08L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgICA8dGg+PGEgaHJlZj0iamF2YXNjcmlwdDpzZWxlY3RBbGwoKTsiPnskc2VsZWN0X3RleHR9PC9hPjwvdGg+CiAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0Ke2NhcHR1cmUgYXNzaWduPSJjeWNsZSJ9e2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn17L2NhcHR1cmV9CiAgICA8dHIgY2xhc3M9InskY3ljbGV9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9JzsiPgogICAgICAgIDx0ZD48YSBocmVmPSJ7JGVudHJ5LT5lZGl0dXJsfSI+eyRlbnRyeS0+bmFtZX08L2E+PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+ZGVmYXVsdH08L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT50ZW1wbGF0ZV90eXBlfTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmVkaXRfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5zZWxlY3R9PC90ZD4KICAgIDwvdHI+CnsvZm9yZWFjaH0KICAgIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cgo8ZGl2IHN0eWxlPSJ3aWR0aDogOTclOyI+CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiBsZWZ0OyI+CjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRfbGlua308L3A+CiAgICA8L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQogICAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbiIgc3R5bGU9ImZsb2F0OiByaWdodDsiPgp7JHN1Ym1pdF9tYXNzZGVsZXRlfSAgIAogICAgPC9kaXY+CnsvaWZ9CjxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/template_add_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRuYW1lX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0ZW1wbGF0ZV90eXBlX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRlbXBsYXRlX3R5cGVfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0ZW1wbGF0ZV9jb2RlX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRlbXBsYXRlX2NvZGVfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZmFjdG9yeX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRkZW59eyRzdWJtaXR9eyRjYW5jZWx9eyRhcHBseX08L3A+Cgk8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/winner_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR3aW5uZXJfbWVzc2FnZX0KCntpZiAkcHJpemVpdGVtY291bnQgPiAwfQoKPGgzPnskcHJpemVfcF90ZXh0fTwvaDM+Cgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogICAgPHRoZWFkPgogICAgPHRyPgogICAgICAgIDx0aCBjbGFzcz0icGFnZXcxMCI+eyRudW1iZXJfdGV4dH08L3RoPgogICAgICAgIDx0aD57JHRpdGxlX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRhY3Rpb25fcGVyaW9kX3RleHR9PC90aD4gCiAgICAgICAgPHRoPnskZ2l2ZW5fbnVtYmVyX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRmcmVlX251bWJlcl90ZXh0fTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+eyRkcmF3X2NvdXBvbl90ZXh0fTwvdGg+ICAgCiAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgIHtmb3JlYWNoIGZyb209JHByaXplaXRlbXMgaXRlbT1lbnRyeX0KICAgIAogICAge2NhcHR1cmUgYXNzaWduPSJjeWNsZSJ9e2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn17L2NhcHR1cmV9CiAgICA8dHIgY2xhc3M9InskY3ljbGV9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9JzsiPgogICAgICAgIDx0ZD57JGVudHJ5LT5udW1iZXJ9eDwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPnRpdGxlfSAoeyRlbnRyeS0+Y291cG9uX3ByaXplX2lkfSk8L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5hY3Rpb25fdGl0bGV9IHsqKHskZW50cnktPmNvdXBvbl9hY3Rpb25faWR9KSp9IC8geyRlbnRyeS0+cGVyaW9kX3RpdGxlfSB7Kih7JGVudHJ5LT5jb3Vwb25fcGVyaW9kX2lkfSkqfTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmdpdmVufTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmZyZWV9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+ZHJhd19saW5rfTwvdGQ+CiAgIDwvdHI+CiAgIHsvZm9yZWFjaH0KICAgPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCjxiciAvPgoKe2NhcHR1cmUgYXNzaWduPSJucl9vZl9pdGVtcyJ9eyR3aW5uZXJpdGVtc3xAY291bnR9ey9jYXB0dXJlfQp7Y2FwdHVyZSBhc3NpZ249Im5yX29mX2l0ZW1zX21pbiJ9e21hdGggZXF1YXRpb249InggLSAxIiB4PSR3aW5uZXJpdGVtc3xAY291bnR9ey9jYXB0dXJlfQoKe2lmICRucl9vZl9pdGVtc30KPGgzPnskd2lubmVyX3BfdGV4dH08L2gzPgp7L2lmfQoKe3NlY3Rpb24gbmFtZT0iaSIgc3RhcnQ9IjAiIGxvb3A9JG5yX29mX2l0ZW1zIHN0ZXA9IjEifQogICAge2Fzc2lnbiB2YXI9cHJldl9rZXkgdmFsdWU9JHNtYXJ0eS5zZWN0aW9uLmkuaW5kZXgtMX0KICAgIHthc3NpZ24gdmFyPWtleSB2YWx1ZT0kc21hcnR5LnNlY3Rpb24uaS5pbmRleH0KICAgIHthc3NpZ24gdmFyPW5leHRfa2V5IHZhbHVlPSRzbWFydHkuc2VjdGlvbi5pLmluZGV4KzF9CiAgICB7Y2FwdHVyZSBhc3NpZ249ImN5Y2xlIn1yb3cxey9jYXB0dXJlfQoKeyogaGVhZGVyICp9CntpZiAka2V5ID09IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSIgYm9yZGVyPSIwIj4KICAgIDx0aGVhZD4KICAgIDx0cj4KICAgICAgICA8dGggY2xhc3M9InBhZ2V3MTAiPnskcHJpemVfY29kZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskdGl0bGVfdGV4dH08L3RoPgogICAgICAgIDx0aD57JG5hbWVfdGV4dH08L3RoPgogICAgICAgIDx0aD57JGVtYWlsX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRwaG9uZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskY291cG9uX2NvZGVfdGV4dH08L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPnskd2l0aGRyYXdfY291cG9uX3RleHR9PC90aD4KICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5Pgp7L2lmfQp7aWYgJGtleSA9PSAwIHx8ICR3aW5uZXJpdGVtc1ska2V5XS0+cGVyaW9kX3RpdGxlIG5lICR3aW5uZXJpdGVtc1skcHJldl9rZXldLT5wZXJpb2RfdGl0bGV9CiAgICA8dHIgY2xhc3M9InskY3ljbGV9Ij4KICAgICAgICA8dGQgY29sc3Bhbj0iOSI+PHN0cm9uZz57JHdpbm5lcml0ZW1zWyRrZXldLT5hY3Rpb25fdGl0bGV9IC8geyR3aW5uZXJpdGVtc1ska2V5XS0+cGVyaW9kX3RpdGxlfTwvc3Ryb25nPjwvdGQ+CiAgICA8L3RyPiAgICAgICAgCnsvaWZ9CnsqIC9oZWFkZXIgKn0KCnsqIGJvZHkgKn0KICAgIHtpZiAkY3ljbGUgPT0gJ3JvdzEnfQogICAgICAgICAgICB7Y2FwdHVyZSBhc3NpZ249ImN5Y2xlIn1yb3cyey9jYXB0dXJlfQogICAge2Vsc2V9CiAgICAgICAgICAgIHtjYXB0dXJlIGFzc2lnbj0iY3ljbGUifXJvdzF7L2NhcHR1cmV9CiAgICB7L2lmfQogICAgPHRyIGNsYXNzPSJ7JGN5Y2xlfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGN5Y2xlfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JGN5Y2xlfSc7Ij4KICAgICAgICA8dGQ+eyR3aW5uZXJpdGVtc1ska2V5XS0+cHJpemVfY29kZX08L3RkPiAgCiAgICAgICAgPHRkPnskd2lubmVyaXRlbXNbJGtleV0tPnByaXplX3RpdGxlfTwvdGQ+CiAgICAgICAgPHRkPnskd2lubmVyaXRlbXNbJGtleV0tPmZpcnN0X25hbWV9IHskd2lubmVyaXRlbXNbJGtleV0tPmxhc3RfbmFtZX08L3RkPgogICAgICAgIDx0ZD48YSBocmVmPSJtYWlsdG86eyR3aW5uZXJpdGVtc1ska2V5XS0+ZW1haWx9Ij57JHdpbm5lcml0ZW1zWyRrZXldLT5lbWFpbH08L2E+PC90ZD4KICAgICAgICA8dGQ+eyR3aW5uZXJpdGVtc1ska2V5XS0+ZGFzaGVkX3Bob25lfTwvdGQ+CiAgICAgICAgPHRkPnskd2lubmVyaXRlbXNbJGtleV0tPmRhc2hlZF9jb3Vwb25fY29kZX08L3RkPgogICAgICAgIDx0ZD57JHdpbm5lcml0ZW1zWyRrZXldLT53aXRoZHJhd19saW5rfTwvdGQ+CiAgIDwvdHI+CnsqIC9ib2R5ICp9Cgp7KiBmb290ZXIgKn0Ke2lmICRrZXkgPT0gJG5yX29mX2l0ZW1zX21pbn0gICAKICAgIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9CnsqIGZvb3RlciAqfQoKey9zZWN0aW9ufQo=]]></data>
	</file>
	<file>
	  <filename>/UpCoupon.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBVcENvdXBvbi5tb2R1bGUucGhwIDExIDIwMTEtMTAtMjIgMTI6MTI6MzhaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgokdXB1dGlscyA9IGNtc19qb2luX3BhdGgoJGdDbXMtPmNvbmZpZ1sncm9vdF9wYXRoJ10sJ21vZHVsZXMnLCAnVXBVdGlscycsJ1VwVXRpbHMubW9kdWxlLnBocCcpOwoKaWYgKCAhaXNfcmVhZGFibGUoJHVwdXRpbHMpICkgewogICAgZWNobyAnPGgxPjxmb250IGNvbG9yPSJyZWQiPkVSUk9SOiBUaGUgVXBVdGlscyBtb2R1bGUgY291bGQgbm90IGJlIGZvdW5kLjwvZm9udD48L2gxPic7CiAgICByZXR1cm47Cn0KCnJlcXVpcmVfb25jZSgkdXB1dGlscyk7CgpkZWZpbmUoJ1VQQ09VUE9OX0FDVElPTl9UQUJMRScsIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3VwY291cG9uX2FjdGlvbicpOwpkZWZpbmUoJ1VQQ09VUE9OX1BFUklPRF9UQUJMRScsIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3VwY291cG9uX3BlcmlvZCcpOwpkZWZpbmUoJ1VQQ09VUE9OX1BSSVpFX1RBQkxFJywgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdXBjb3Vwb25fcHJpemUnKTsKZGVmaW5lKCdVUENPVVBPTl9DVVNUT01FUl9UQUJMRScsIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3VwY291cG9uX2N1c3RvbWVyJyk7CmRlZmluZSgnVVBDT1VQT05fQ09ERV9UQUJMRScsIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3VwY291cG9uX2NvZGUnKTsKCmNsYXNzIFVwQ291cG9uIGV4dGVuZHMgQ01TTW9kdWxlIHsKICAgICAgICAgICAgICAgIAogICAgcHVibGljIHN0YXRpYyAkZnJvbnRlbmRfYWN0aW9ucyA9IGFycmF5ICgKICAgICAgICAnc2hvd19yZWdpc3RlcicgPT4gJ3Nob3dfcmVnaXN0ZXInLAogICAgICAgICdzaG93X3ByaXplJyAgICA9PiAnc2hvd19wcml6ZScsCiAgICAgICAgJ3Nob3dfd2lubmVyJyAgID0+ICdzaG93X3dpbm5lcicKICAgICk7CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgJGZyb250ZW5kX3RlbXBsYXRlID0gYXJyYXkgKAogICAgICAgICdkZWZhdWx0JyAgID0+ICdkZWZhdWx0JywgICAgICAgIAogICAgKTsKICAgICAgICAKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjbXNtcwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgIAogICAgCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yCiAgICAgKiBAaWdub3JlIAogICAgICovCiAgICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKICAgICAgICAKICAgICAgICBzcGxfYXV0b2xvYWRfcmVnaXN0ZXIoYXJyYXkoJHRoaXMsJ2F1dG9sb2FkJykpOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsKICAgIAogICAgICAgICRvYmogPSBuZXcgVXBTbWFydHkoJHRoaXMpOwogICAgICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ3VwY291cG9uJywgJG9iaik7CiAgICAgICAgCiAgICB9CiAgICAKICAgIC8qKgogICAgICogYXV0b2xvYWQgbWV0aG9kCiAgICAgKiBAcGFyYW0gJGNsYXNzbmFtZSAtIHN0cmluZwogICAgICogQHJldHVybiB0cnVlfGZhbHNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhdXRvbG9hZCgkY2xhc3NuYW1lKSB7CiAgICAgCiAgICAgICAgaWYgKCAhaXNfb2JqZWN0KCR0aGlzKSApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBVcFV0aWxzIGxpYnMKICAgICAgICAKICAgICAgICAkX21vZHVsZV9wYXRoID0gJHRoaXMtPkdldE1vZHVsZVBhdGgoKTsKICAgICAgICAkX21vZHVsZV9wYXRoID0gc3RyX3JlcGxhY2UoJ1VwQ291cG9uJywgJ1VwVXRpbHMnLCAkX21vZHVsZV9wYXRoKTsKICAgICAgICAkZm4gPSAkX21vZHVsZV9wYXRoLiIvbGliL2NsYXNzZXMveyRjbGFzc25hbWV9LmNsYXNzLnBocCI7CiAgICAgICAgCiAgICAgICAgaWYgKCBmaWxlX2V4aXN0cygkZm4pICkgewogICAgICAgICAgICByZXF1aXJlX29uY2UoJGZuKTsgICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFVwQ291cG9uIGxpYnMKICAgICAgICAKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL0RBTyQvJywkY2xhc3NuYW1lKSApIHsKICAgICAgICAgICAgJGNsYXNzbmFtZSA9ICdVcENvdXBvbkRBTyc7CiAgICAgICAgfQoKICAgICAgICAkZm4gPSAkdGhpcy0+R2V0TW9kdWxlUGF0aCgpLiIvbGliL2NsYXNzZXMveyRjbGFzc25hbWV9LmNsYXNzLnBocCI7CiAgICAgICAgCiAgICAgICAgaWYgKCBmaWxlX2V4aXN0cygkZm4pICkgewogICAgICAgICAgICByZXF1aXJlX29uY2UoJGZuKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIAogICAgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNHZXROYW1lCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXROYW1lKCkgeyByZXR1cm4gJ1VwQ291cG9uJzsgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNHZXRGcmllbmRseU5hbWUKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNHZXRWZXJzaW9uCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyByZXR1cm4gJzAuMC44JzsgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNNaW5pbXVtQ01TVmVyc2lvbgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7IHJldHVybiAnMS45LjEnOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI01heGltdW1DTVNWZXJzaW9uCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpIHsgcmV0dXJuICIxLjEwLjkiOyB9CgogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjR2V0SGVscAogICAgICogQGlnbm9yZQogICAgICovCiAgICAgcHVibGljIGZ1bmN0aW9uIEdldEhlbHAoKSB7IHJldHVybiAkdGhpcy0+bGFuZygnaGVscCcpOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0dldEF1dGhvcgogICAgICogQGlnbm9yZQogICAgICovICAKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKSB7IHJldHVybiAnQXJub3VkIHZhbiBTdXN0ZXJlbic7IH0KICAgIAogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjR2V0QXV0aG9yRW1haWwKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkgeyByZXR1cm4gJ2Fybm91ZEB1cHNlcnZpY2UubmwnOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0dldENoYW5nZUxvZwogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkgeyByZXR1cm4gZmlsZV9nZXRfY29udGVudHMoZGlybmFtZShfX0ZJTEVfXykuJy9jaGFuZ2Vsb2cuaW5jJyk7IH0KICAgIAogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjR2V0RXZlbnREZXNjcmlwdGlvbgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbigkZXZlbnRuYW1lKSB7IHJldHVybiAkdGhpcy0+bGFuZygnZXZlbnRkZXNjLScgLiAkZXZlbnRuYW1lKTsgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNHZXRFdmVudEhlbHAKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldEV2ZW50SGVscCgkZXZlbnRuYW1lKSB7IHJldHVybiAkdGhpcy0+bGFuZygnZXZlbnRoZWxwLScgLiAkZXZlbnRuYW1lKTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjSXNQbHVnaW5Nb2R1bGUKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNIYXNBZG1pbgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiB0cnVlOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0dldEFkbWluU2VjdGlvbgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkgeyByZXR1cm4gJ2NvbnRlbnQnOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0dldEFkbWluRGVzY3JpcHRpb24KICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7IHJldHVybiAkdGhpcy0+TGFuZygnYWRtaW5kZXNjcmlwdGlvbicpOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI1Zpc2libGVUb0FkbWluVXNlcgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkgeyByZXR1cm4gJHRoaXMtPkNoZWNrQWNjZXNzKCk7IH0KICAgIAogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjbWV0aG9kQ2hlY2tQZXJtaXNzaW9uCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBDaGVja0FjY2VzcygpIHsgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0dldERlcGVuZGVjaWVzCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKSB7CiAgICAgICAgcmV0dXJuIGFycmF5KCdVcFV0aWxzJz0+JzAuMC40Jyk7CiAgICB9CiAgICAKICAgIC8vcHVibGljIGZ1bmN0aW9uIEluc3RhbGwoKSB7fQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNJbnN0YWxsUG9zdE1lc3NhZ2UKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOyB9CiAgICAKICAgIC8vcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbCgpIHt9CgogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjVW5pbnN0YWxsUG9zdE1lc3NhZ2UKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsgfQogICAgCiAgICAvL3B1YmxpYyBmdW5jdGlvbiBVcGdyYWRlKCRvbGR2ZXJzaW9uLCAkbmV3dmVyc2lvbikge30KICAgICAgICAKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBhY3Rpb25zCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIAogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjRG9BY3Rpb24KICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgIAogICAgIC8qCiAgICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgPSAnJykgeyAgICAKICAgICAgICAkYWN0aW9uID0gaXNzZXQoc2VsZjo6JGZyb250ZW5kX2FjdGlvbnNbJGFjdGlvbl0pID8gJGFjdGlvbiA6ICdkZWZhdWx0JzsKICAgICAgICAkcGFyYW1zWydhY3Rpb24nXSA9ICRhY3Rpb247ICAgICAgICAKICAgICAgICBwYXJlbnQ6OkRvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKICAgIH0KICAgIAogICAgKi8KCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNTZXRQYXJhbWV0ZXJzCiAgICAgKgogICAgICogQ2FsbGVkIGZyb20gd2l0aGluIHRoZSBjb25zdHJ1Y3RvciwgT25seSBmb3IgZnJvbnRlbmQgbW9kdWxlIGFjdGlvbnMKICAgICAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBvdmVycmlkZGVuIHRvIGNyZWF0ZSByb3V0ZXMsIGFuZCBzZXQgaGFuZGxlZCBwYXJhbXMKICAgICAqIGFuZCBwZXJmb3JtcyBvdGhlciBpbml0aWFsaXphdGlvbiB0YXNrcyB0aGF0IG5lZWQgdG8gYmUgc2V0dXAgZm9yIGFsbAogICAgICogZnJvbnRlbmQgYWN0aW9ucwogICAgICoKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKSB7CiAgICAgICAgCiAgICAgICAgLy8gbm8gdW5rbm93biBwYXJhbWV0ZXJzCiAgICAgICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwogICAgICAgIAogICAgICAgIC8vIHJlZ2lzdGVyIHBsdWdpbiB0byBzbWFydHkgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlCiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAgICAgCiAgICAgICAgLy8gcm91dGVzCiAgICAgICAgJHRoaXMtPlNldHVwUm91dGVzKCk7CiAgICAgICAgCiAgICAgICAgLy8gY3JlYXRlcGFyYW1ldGVycwogICAgICAgIC8vJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ29yaWdyZXR1cm5pZCcsQ0xFQU5fSU5UKTsKICAgICAgICAKICAgICAgICAvLyBjb21tb24KICAgICAgICAKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnb3JpZ3JldHVybmlkJyxDTEVBTl9JTlQpOwogICAgICAgIAogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsICcnLCAkdGhpcy0+TGFuZygnaGVscF9hY3Rpb24nKSk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FjdGlvbicsQ0xFQU5fU1RSSU5HKTsKICAgICAgICAKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd0ZW1wbGF0ZScsICcnLCAkdGhpcy0+TGFuZygnaGVscF90ZW1wbGF0ZScpKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGVtcGxhdGUnLENMRUFOX1NUUklORyk7CiAgICAgICAgCiAgICAgICAgLy8gc2hvd19yZWdpc3RlcgogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmaXJzdF9uYW1lJyxDTEVBTl9TVFJJTkcpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsYXN0X25hbWUnLENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2VtYWlsJyxDTEVBTl9TVFJJTkcpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwaG9uZScsQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY291cG9uX2NvZGVfMDEnLENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NvdXBvbl9jb2RlXzAyJyxDTEVBTl9TVFJJTkcpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb3Vwb25fY29kZV8wMycsQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY291cG9uX2NvZGVfMDQnLENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Rlcm1zX2FuZF9jb25kaXRpb25zJyxDTEVBTl9JTlQpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCduZXdzbGV0dGVyJyxDTEVBTl9JTlQpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzdWJtaXQnLENMRUFOX1NUUklORyk7CiAgICAgICAgCiAgICAgICAgLy8gc2hvd19wcml6ZQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2NvdXBvbl9hY3Rpb25faWQnLCAnJywgJHRoaXMtPkxhbmcoJ2hlbHBfY291cG9uX2FjdGlvbl9pZCcpKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY291cG9uX2FjdGlvbl9pZCcsQ0xFQU5fSU5UKTsKCgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBTZXR1cFJvdXRlcygpIHsKCSAgIAoJfQoJCgkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgdXRpbHMKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gX2dldF90ZW1wbGF0ZV90eXBlKCkgewogICAgICAgIAogICAgICAgICR0ZW1wbGF0ZV90eXBlID0gYXJyYXkgKAogICAgICAgICAgICAncmVnaXN0ZXInICA9PiAkdGhpcy0+TGFuZygndGVtcGxhdGVfcmVnaXN0ZXInKSwKICAgICAgICAgICAgJ3dpbm5lcicgICAgPT4gJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX3dpbm5lcicpLAogICAgICAgICAgICAncHJpemUnICAgICA9PiAkdGhpcy0+TGFuZygndGVtcGxhdGVfcHJpemUnKSAgCiAgICAgICAgKTsKICAgICAgICAKICAgICAgICByZXR1cm4gJHRlbXBsYXRlX3R5cGU7CiAgICAgICAgCiAgICB9CiAgICAgICAKCn0gLy8gVXBDb3Vwb24KCj8+Cg==]]></data>
	</file>
</module>
