PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+DQo8aHRtbCBsYW5nPSJqYSI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVNoaWZ0X0pJUyI+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4NCjxsaW5rIHJlbD0idXAiIHRpdGxlPSJGYXRGcyIgaHJlZj0iLi4vMDBpbmRleF9qLmh0bWwiPg0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9jc3Nfai5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiB0aXRsZT0iRUxNIERlZmF1bHQiPg0KPHRpdGxlPkZhdEZzIC0gZl9nZXRmcmVlPC90aXRsZT4NCjwvaGVhZD4NCg0KPGJvZHk+DQoNCjxkaXYgY2xhc3M9InBhcmEiPg0KPGgyPmZfZ2V0ZnJlZTwvaDI+DQo8cD6YX5edg2iDiYNDg3WP44LMlqKOZ5dwg06DiYNYg16QlILwk76C3IK3gUI8L3A+DQo8cHJlPg0KRlJFU1VMVCBmX2dldGZyZWUgKA0KICBjb25zdCBYQ0hBUiogPGVtPlBhdGg8L2VtPiwgICAgICAgLyogkc6P24Nog4mDQ4N1gsyDi4Fbg2eBRYNmg0KDjINOg2eDiiAqLw0KICBEV09SRCogPGVtPkNsdXN0ZXJzPC9lbT4sICAgICAgICAgLyogi/OCq4NOg4mDWINekJSC8IpplFuCt4Lplc+QlILWgsyDfINDg5ODXiAqLw0KICBGQVRGUyoqIDxlbT5GaWxlU3lzdGVtT2JqZWN0PC9lbT4gLyogg3SDQINDg4uBRYNWg1iDZYOAgUWDSYN1g1eDRoNOg2eC8I53greDfINDg5ODXoLWgsyDfINDg5ODXiAqLw0KKTsNCjwvcHJlPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InBhcmEiPg0KPGg0Poj4kJQ8L2g0Pg0KPGRsIGNsYXNzPSJwYXIiPg0KPGR0PlBhdGg8L2R0Pg0KPGRkPpHOj9uCzJhfl52DaIOJg0ODdYLMg4uBW4Nng2aDQoOMg06DZ4OKgsw8YSBocmVmPSJmaWxlbmFtZS5odG1sIj6DcINYlrw8L2E+gqqT/ILBgr08dHQ+J1wwJzwvdHQ+gsWPSYLtgumVto6al/GC1oLMg3yDQ4OTg16C8I53kuiCtYLcgreBQjwvZGQ+DQo8ZHQ+Q2x1c3RlcnM8L2R0Pg0KPGRkPovzgquDToOJg1iDXpCUgvCKaZRbgreC6Tx0dD5EV09SRDwvdHQ+lc+QlILWgsyDfINDg5ODXoLwjneS6IK1gtyCt4FCPC9kZD4NCjxkdD5GaWxlU3lzdGVtT2JqZWN0PC9kdD4NCjxkZD6Rzo/bg2iDiYNDg3WCzIN0g0CDQ4OLgUWDVoNYg2WDgIFFg0mDdYNXg0aDToNngvCOd4K3g3yDQ4OTg16CqpXUgrOC6oLcgreBQjwvZGQ+DQo8L2RsPg0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0icGFyYSI+DQo8aDQ+lt+C6JJsPC9oND4NCjxkbCBjbGFzcz0icmV0Ij4NCjxkdD5GUl9PSyAoMCk8L2R0Pg0KPGRkPpCzj+2PSZe5gUI8dHQ+KkNsdXN0ZXJzPC90dD6CyYvzgquDToOJg1iDXpCUgqqV1IKzguqC3IK3gUI8L2RkPg0KPGR0PkZSX0lOVkFMSURfRFJJVkU8L2R0Pg0KPGRkPoNog4mDQ4N1lNSNhoKqlXOQs4FCPC9kZD4NCjxkdD5GUl9OT1RfUkVBRFk8L2R0Pg0KPGRkPoOBg2aDQoNBgqqDWoNig2eCs4LqgsSCooLIgqKCyILHgUGVqJedg2iDiYNDg3WCqpOujeyVc5Rcj/OR1IFCPC9kZD4NCjxkdD5GUl9ESVNLX0VSUjwvZHQ+DQo8ZGQ+g2aDQoNYg06BRYNHg4mBW4LJguaC6Y64lHOBQjwvZGQ+DQo8ZHQ+RlJfSU5UX0VSUjwvZHQ+DQo8ZGQ+lXOQs4LIRkFUjVyRooLcgr2CzZPglZSDR4OJgVuCyYLmgumOuJRzgUI8L2RkPg0KPGR0PkZSX05PVF9FTkFCTEVEPC9kdD4NCjxkZD6Cu4LMmF+XnYNog4mDQ4N1gsmDj4Fbg06BRYNHg4qDQYKql16CpoLnguqCxIKigsiCooFCPC9kZD4NCjxkdD5GUl9OT19GSUxFU1lTVEVNPC9kdD4NCjxkZD6DZoNCg1iDTo/jgsmXTIz4gshGQVSDcIFbg2WBW4NWg4eDk4KqjKmCwoKpgueCyIKigUI8L2RkPg0KPC9kbD4NCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9InBhcmEiPg0KPGg0PonwkOA8L2g0Pg0KPHA+mF+XnYNog4mDQ4N1j+OCzIvzgquDToOJg1iDXpCUgvCO5pO+grWC3IK3gUKV1IKzguqCvYN0g0CDQ4OLgUWDVoNYg2WDgIFFg0mDdYNXg0aDToNngsw8dHQ+Y3NpemU8L3R0PoOBg5ODb4Kqg06DiYNYg16CoIK9guiCzINag06DXpCUgvCOpoK1gsSCooLpgsyCxYFBgrGC6oLwjLOCyY7AjduCzIvzgquDVINDg1mCqox2jlqCxYKrgtyCt4FCRkFUMzKDe4OKg4WBW4OAgsmCqIKigsSCzYFBRlNJTkZPgsyP85HUgsmC5oLBgsSCzZVzkLOKbYLIkmyC8JXUgrWCvYLogUGPiJedgsmOnorUgqqCqYKpgsGCvYLogreC6YnClFyQq4KqgqCC6ILcgreBQjwvcD4NCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9InBhcmEiPg0KPGg0PpHOiZ6P7pXxPC9oND4NCjxwPjx0dD5fRlNfUkVBRE9OTFkgPT0gMDwvdHQ+gsWBQYqOgsI8dHQ+X0ZTX01JTklNSVpFID09IDA8L3R0PoLMgsaCq45nl3CJwpRcgsWCt4FCPC9wPg0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0icGFyYSI+DQo8aDQ+jmeXcJfhPC9oND4NCjxwcmU+DQogICAgRkFURlMgKmZzOw0KICAgIERXT1JEIGZyZV9jbHVzdCwgZnJlX3NlY3QsIHRvdF9zZWN0Ow0KDQoNCiAgICAvKiBHZXQgZHJpdmUgaW5mb3JtYXRpb24gYW5kIGZyZWUgY2x1c3RlcnMgKi8NCiAgICByZXMgPSBmX2dldGZyZWUoIi8iLCAmYW1wO2ZyZV9jbHVzdCwgJmFtcDtmcyk7DQogICAgaWYgKHJlcykgZGllKHJlcyk7DQoNCiAgICAvKiBHZXQgdG90YWwgc2VjdG9ycyBhbmQgZnJlZSBzZWN0b3JzICovDQogICAgdG90X3NlY3QgPSAoZnMtPm1heF9jbHVzdCAtIDIpICogZnMtPmNzaXplOw0KICAgIGZyZV9zZWN0ID0gZnJlX2NsdXN0ICogZnMtPmNzaXplOw0KDQogICAgLyogUHJpbnQgZnJlZSBzcGFjZSBpbiB1bml0IG9mIEtCIChhc3N1bWluZyA1MTJCL3NlY3RvcikgKi8NCiAgICBwcmludGYoIiVsdSBLQiB0b3RhbCBkcml2ZSBzcGFjZS5cbiINCiAgICAgICAgICAgIiVsdSBLQiBhdmFpbGFibGUuXG4iLA0KICAgICAgICAgICBmcmVfc2VjdCAvIDIsIHRvdF9zZWN0IC8gMik7DQo8L3ByZT4NCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9InBhcmEiPg0KPGg0Po5Rj8Y8L2g0Pg0KPHR0PjxhIGhyZWY9InNmYXRmcy5odG1sIj5GQVRGUzwvYT48L3R0Pg0KPC9kaXY+DQoNCjxwIGNsYXNzPSJmb290Ij48YSBocmVmPSIuLi8wMGluZGV4X2ouaHRtbCI+lt+C6TwvYT48L3A+DQo8L2JvZHk+DQo8L2h0bWw+DQo=