PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIGh0bWwKICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjwhLS0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAogKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAogKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAogKiAKICogQ29udHJpYnV0b3JzOgogKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAtLT4KPGh0bWw+CjxoZWFkPgo8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9jb20uaWJtLmhlbHAuZG9jL3N3Z19pbmZvX2NvbW1vbi5jc3MiIC8+Cjx0aXRsZT5FZGl0aW5nIGFuIGVsZW1lbnQncyBjb250ZW50IG1vZGVsPC90aXRsZT4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+CiAgICBmdW5jdGlvbiBwb3B1cF93aW5kb3coIHVybCwgaWQsIHdpZHRoLCBoZWlnaHQgKQogICAgewogICAgICBwb3B1cCA9IHdpbmRvdy5vcGVuKCB1cmwsIGlkLCAndG9vbGJhcj1ubyxzY3JvbGxiYXJzPW5vLGxvY2F0aW9uPW5vLHN0YXR1c2Jhcj1ubyxtZW51YmFyPW5vLHJlc2l6YWJsZT1ubyx3aWR0aD0nICsgd2lkdGggKyAnLGhlaWdodD0nICsgaGVpZ2h0ICsgJyxsZWZ0PSx0b3A9JyApOwogICAgICBwb3B1cC5mb2N1cygpOwogICAgfQo8L3NjcmlwdD48c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiBzcmM9ImhlbHAvbGl2ZUhlbHAuanMiPjwvc2NyaXB0PjwvaGVhZD4KPGJvZHkgaWQ9InRjaGdlbG0iPjxhIG5hbWU9InRjaGdlbG0iPjwhLS0gLS0+PC9hPgoKPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+RWRpdGluZyBhbiBlbGVtZW50J3MgY29udGVudCBtb2RlbDwvaDE+CjxkaXY+PHA+QW4gZWxlbWVudCdzIGNvbnRlbnQgbW9kZWwgcmVwcmVzZW50cyBhbnkgZGF0YSB0aGF0IGNhbiBiZSBjb250YWluZWQKaW5zaWRlIG9yIHdpdGhpbiB0aGUgY29udGVudCBvZiBhbiBlbGVtZW50ICh0aGF0IGlzLCBiZXR3ZWVuIHRoZSBzdGFydCBhbmQKZW5kIHRhZ3Mgb2YgYW4gZWxlbWVudCBpbiBhbiBYTUwgZmlsZSkuIEVkaXRpbmcgYW4gZWxlbWVudCdzIGNvbnRlbnQgbW9kZWwKZW5hYmxlcyB5b3UgdG8gZGV0ZXJtaW5lIGV4YWN0bHkgd2hhdCB0aGUgZWxlbWVudCBjYW4gKGFuZCBjYW5ub3QpIGNvbnRhaW4uPC9wPjxkaXYgY2xhc3M9InNraXBzcGFjZSI+PHA+VGhlcmUgYXJlIGZvdXIga2luZHMgb2YgY29udGVudCBtb2RlbHM6IDxpPmVsZW1lbnQgY29udGVudDwvaT4sCiA8aT5taXhlZCBjb250ZW50PC9pPiwgPGk+RU1QVFkgY29udGVudDwvaT4gYW5kIDxpPkFOWSBjb250ZW50PC9pPjwvcD4KPHA+SW4KdGhlIDxpPmVsZW1lbnQgY29udGVudDwvaT4gY29udGVudCBtb2RlbCBhbiBlbGVtZW50IGNhbiBvbmx5IGNvbnRhaW4gb3RoZXIKY2hpbGQgZWxlbWVudHMuIEluIHRoZSA8aT5taXhlZCBjb250ZW50PC9pPiBjb250ZW50IG1vZGVsLCBhbiBlbGVtZW50IGNhbgpjb250YWluIGJvdGggY2hhcmFjdGVyIGRhdGEgKHRleHQgdGhhdCBpcyBub3QgcGFyc2VkIGJ5IHRoZSBYTUwgcGFyc2VyKSBhbmQKb3RoZXIgY2hpbGQgZWxlbWVudHMuIEluIHRoZSA8aT5FTVBUWSBjb250ZW50PC9pPiBjb250ZW50IG1vZGVsLCBhbiBlbGVtZW50CmNhbm5vdCBjb250YWluIGFueSBvdGhlciBlbGVtZW50cyBvciB0ZXh0LiBJbiB0aGUgPGk+QU5ZIGNvbnRlbnQ8L2k+IGNvbnRlbnQKbW9kZWwsIHRoZSBlbGVtZW50IGNhbiBsaXRlcmFsbHkgY29udGFpbiBhbnl0aGluZyAtIG90aGVyIGVsZW1lbnRzLCBpbiBhbnkKbnVtYmVyLCBhbmQgdGV4dC48L3A+CjxwPkluIHRoZSBEVEQgZWRpdG9yLCB5b3UgY2FuIGNyZWF0ZSBlbGVtZW50cyB3aXRoIGFueQpvZiB0aGVzZSBjb250ZW50IG1vZGVscy4gV2hlbiB5b3UgY3JlYXRlIGFuIGVsZW1lbnQgaW4gdGhlIERURCBlZGl0b3IsIGEgY2hpbGQKZWxlbWVudCB3aXRoIGFuIEVNUFRZIGNvbnRlbnQgbW9kZWwgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkLjwvcD4KPHA+VGhlIGZvbGxvd2luZwppbnN0cnVjdGlvbnMgd2VyZSB3cml0dGVuIGZvciB0aGUgUmVzb3VyY2UgcGVyc3BlY3RpdmUsIGJ1dCB0aGV5IHdpbGwgYWxzbwp3b3JrIGluIG1hbnkgb3RoZXIgcGVyc3BlY3RpdmVzLqA8L3A+CjxwPlRvIGVkaXQgYW4gZWxlbWVudCdzIGNvbnRlbnQKbW9kZWwsIGZvbGxvdyB0aGVzZSBzdGVwczo8L3A+CjwvZGl2Pgo8b2w+PGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPk9wZW4geW91ciBEVEQgaW4gdGhlIERURCBlZGl0b3IuPC9zcGFuPjwvbGk+CjxsaSBjbGFzcz0ic2tpcHNwYWNlIj48c3Bhbj5JbiB0aGUgT3V0bGluZSB2aWV3LCBleHBhbmQgdGhlIHBhcmVudCBlbGVtZW50IHlvdSB3YW50IHRvIHdvcmsKd2l0aC48L3NwYW4+PC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPlNlbGVjdCB0aGUgZmlyc3QgY2hpbGQgb2YgdGhlIGV4cGFuZGVkIHBhcmVudCBlbGVtZW50Ljwvc3Bhbj4gVGhpcwppcyB0aGUgZWxlbWVudCdzIGNvbnRlbnQgbW9kZWwuPC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPkluIHRoZSBEZXNpZ24gdmlldywgeW91IGNoYW5nZSBpdHMgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+Q29udGVudCB0eXBlPC9zcGFuPiB0bzwvc3Bhbj48dWw+PGxpPjxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFOWTwvc3Bhbj48L2xpPgo8bGk+KCNQQ0RBVEEpPC9saT4KPGxpPkFub3RoZXIgZWxlbWVudDwvbGk+CjxsaT48c3BhbiBjbGFzcz0idWljb250cm9sIj5DaGlsZHJlbiBDb250ZW50PC9zcGFuPiBvciAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TWl4ZWQgQ29udGVudDwvc3Bhbj4uPC9saT4KPC91bD4KIE9uY2UgeW91IHNlbGVjdCBlaXRoZXIgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+Q2hpbGRyZW4gQ29udGVudDwvc3Bhbj4gb3IgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk1peGVkCkNvbnRlbnQ8L3NwYW4+IHlvdSB3aWxsIGhhdmUgYSBncm91cCAocmVwcmVzZW50ZWQgYnkgYSBncm91cCBub2RlIC0gPGltZyBzcmM9Ii4uL2ltYWdlcy9YU0RTZXF1ZW5jZS5naWYiIC8+IGlmIHlvdSBzZWxlY3QgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkNoaWxkcmVuIENvbnRlbnQ8L3NwYW4+IGFuZCA8aW1nIHNyYz0iLi4vaW1hZ2VzL1hTRENob2ljZS5naWYiIC8+IGlmIHlvdSBzZWxlY3QgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk1peGVkIENvbnRlbnQ8L3NwYW4+KSwKd2hpY2ggeW91IGNhbiB1c2UgdG8gY3JlYXRlIGEgZ3JvdXAgb2YgY2hpbGQgZWxlbWVudHMgdW5kZXIgdGhlIHBhcmVudKBlbGVtZW50LgpBIGNoaWxkIGVsZW1lbnQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgdW5kZXIgdGhlIGdyb3VwIG5vZGUuIEZvciBpbmZvcm1hdGlvbgpvbiBlZGl0aW5nIGEgZ3JvdXAsIHJlZmVyIHRvIHRoZSByZWxhdGVkIGluZm9ybWF0aW9uLjxwPjxiPk5vdGU8L2I+OiBJZiB5b3UKaW50ZW5kIHRvIGhhdmUgbWl4ZWQgY29udGVudCwgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIHlvdXIgZ3JvdXAKbXVzdCBiZSAoI1BDREFUQSkgKGNvbnNlcXVlbnRseSwgaWYgeW91IHNlbGVjdCA8c3BhbiBjbGFzcz0idWljb250cm9sIj5NaXhlZCBDb250ZW50PC9zcGFuPiwKdHdvIGNoaWxkIGVsZW1lbnRzIHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkLCB0aGUgZmlyc3Qgb25lIGhhdmluZyBhIHZhbHVlCm9mICgjUENEQVRBKS48L3A+CiAgPC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPklmIHlvdSBkbyBub3Qgd2FudCB0aGUgcGFyZW50IGVsZW1lbnQgdG8gY29udGFpbiBhbnl0aGluZywgbGVhdmUKaXRzIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkNvbnRlbnQgdHlwZTwvc3Bhbj4gYXMgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RU1QVFk8L3NwYW4+Ljwvc3Bhbj48L2xpPgo8bGkgY2xhc3M9InNraXBzcGFjZSI+PHNwYW4+U2VsZWN0IHRoZSBhcHByb3ByaWF0ZSA8Yj5PY2N1cnJlbmNlPC9iPiBvcHRpb24gdG8gaW5kaWNhdGUgaG93Cm9mdGVuIHRoZSBlbGVtZW50IGNhbiBvY2N1ciBpbiBhbiBYTUwgZmlsZS48L3NwYW4+IFRoaXMgb3B0aW9uIGlzIG5vdAphdmFpbGFibGUgaWYgeW91IHNlbGVjdCBBTlksICgjUENEQVRBKSwgRU1QVFksIG9yIGFub3RoZXIgZWxlbWVudC48L2xpPgo8bGkgY2xhc3M9InNraXBzcGFjZSI+PHNwYW4+VG8gYWRkIGFub3RoZXIgZXhpc3RpbmcgZWxlbWVudCB0byBhIGdyb3VwIGFzIGEgY2hpbGQsIHJpZ2h0LWNsaWNrCnRoZSBncm91cCBub2RlLCBjbGljayA8c3BhbiBjbGFzcz0idWljb250cm9sIj5BZGQgRWxlbWVudCB0byBDb250ZW50IE1vZGVsPC9zcGFuPiBhbmQKc3BlY2lmeSBpdHMgbmFtZS48L3NwYW4+PC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPlRvIGFkZCBhIGdyb3VwIHRvIHRoZSBjb250ZW50IG1vZGVsLCByaWdodC1jbGljayB0aGUgZ3JvdXAgbm9kZQphbmQgY2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QWRkIEdyb3VwIHRvIENvbnRlbnQgTW9kZWw8L3NwYW4+Ljwvc3Bhbj4gRm9yCmluZm9ybWF0aW9uIG9uIGVkaXRpbmcgYSBncm91cCwgcmVmZXIgdG8gdGhlIGxpbmsgYmVsb3cuPC9saT4KPC9vbD4KPGRpdiBjbGFzcz0ic2tpcHNwYWNlIj48L2Rpdj4KPC9kaXY+Cgo8ZGl2Pgo8YmxvY2txdW90ZT4KPGRpdiBjbGFzcz0idWxjaGlsZGxpbmsiPjxiPjxhIGhyZWY9Ii4uL3RvcGljcy90ZWR0Z25kZS5odG1sIj5FZGl0aW5nIGEgZ3JvdXAgbm9kZTwvYT48L2I+PGJyIC8+CklmIHlvdXIgZWxlbWVudCBoYXMgZWl0aGVyIGVsZW1lbnQgY29udGVudCBvciBtaXhlZCBjb250ZW50LCBpdHMgY29udGVudCBtb2RlbCBpcyByZXByZXNlbnRlZCBieSBhIGdyb3VwIG5vZGUuIFlvdSBjYW4gYWRkIGNoaWxkcmVuIGVsZW1lbnRzIG9yIGFub3RoZXIgZ3JvdXAgdG8gYSBncm91cCBub2RlLCBhbmQgc3BlY2lmeSBob3cgb2Z0ZW4sIGFuZCBpbiB3aGF0IG1hbm5lciBhIGdyb3VwIG9mIGVsZW1lbnRzIHdpbGwgYmUgYXZhaWxhYmxlIGluIGFuIFhNTCBmaWxlIGFzc29jaWF0ZWQgd2l0aCB5b3VyIERURC48L2Rpdj4KPC9ibG9ja3F1b3RlPgoKPHA+CjxiIGNsYXNzPSJwYXJlbnRsaW5rIj5QYXJlbnQgdG9waWM6PC9iPiA8YSBocmVmPSIuLi90b3BpY3MvdGNyZXRlbG0uaHRtbCIgdGl0bGU9IllvdSBjYW4gdXNlIGVsZW1lbnQgZGVjbGFyYXRpb25zIGluIERURHMgdG8gZGVmaW5lIHRoZSBlbGVtZW50cyB0aGF0IG1heSBvY2N1ciBpbiBhbiBYTUwgZG9jdW1lbnQuIEVsZW1lbnQgZGVjbGFyYXRpb25zIGNhbiBzcGVjaWZ5IHRoYXQgYW4gZWxlbWVudCBjYW4gY29udGFpbiBvdGhlciBlbGVtZW50cywgdGhhdCBpdCBjYW4gY29udGFpbiBhbnl0aGluZyBhdCBhbGwsIG9yIHRoYXQgaXQgbXVzdCBiZSBlbXB0eS4iPkNyZWF0aW5nIGVsZW1lbnRzPC9hPjxiciAvPgo8L3A+CjwvZGl2PgoJCTxwPgoJCShDKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCgkJPC9wPiAKPC9ib2R5Pgo8L2h0bWw+