From: Matthew A. S. <ms...@sh...> - 2001-02-07 19:53:15
|
VGhhbmsgeW91LCBJJ2xsIHRyeSB0aGlzIG91dC4gIElzIHRoaXMgYSBmaXggdGhhdCB3b3VsZCBi ZSB3b3JrZWQgaW50bw0KdGhlIEFQST8gIEhhcyBpdCBiZWVuIHJldmlld2VkIGJ5IGFueSBvZiB0 aGUgY29kZW1pZXN0ZXJzPw0KIA0KTS4NCg0KCS0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tIA0K CUZyb206IE1pY2hhZWwgQsO8cmdlIA0KCVNlbnQ6IFdlZCAyLzcvMjAwMSAxMTozMiBBTSANCglU bzogZHluYXBpLWRldkBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQgDQoJQ2M6IA0KCVN1YmplY3Q6IFJl OiBbRHluYXBpLURldl0gTmV3IERldmVsb3BlciBXYW50cyBUbyBIZWxwIFdpdGgNCk1hYyhjb250 ZW50c2l6ZSkNCgkNCgkNCg0KCT4gTXkgcGVyc29uYWwgbWFpbiBwcm9ibGVtIG9uIHRoZSBtYWMg aXMgdGhlDQpnZXRDb250ZW50SGVpZ2h0L1dpZHRoIG1ldGhvZHMuLi4NCgk+IFlvdSBjYW5ub3Qg bWFrZSBsYXllciwgZmlsbCBpdCwgYW5kIGhhdmUgaXQgYXV0b3NpemUgdG8gaXRzJw0KY29udGVu dHMuICBJZiBJDQoJPiBhbSB3cm9uZyBhYm91dCB0aGlzIHNvbWVvbmUgcGxlYXNlIGxldCBtZSBr bm93Lg0KCQ0KCXlvdSBhcmUgd3JvbmchIQ0KCQ0KCWNoZWNrIG91dCB0aGUgZm9sbG93aW5nOg0K CShidHc6IGkgYWxyZWFkeSBwb3N0ZWQgdGhpcyBhIGZldyBkYXlzIGFnbywgYnV0IG5vYm9keSBu b3RpY2VkDQppdCwgc28gaSdtDQoJcG9zdGluZyBpdCBhZ2Fpbi4gaSB3b3VsZCBiZSBwbGVhc2Vk IHRvIHNlZSBzb21lIGNvbW1lbnRzIHRoaXMNCnRpbWUuKQ0KCQ0KCQ0KCWllNS9tYWM6DQoJdGhp cyBicm93c2VyIG5lZWRzIHNvbWUgdGltZSB0byB1cGRhdGUgdGhlDQpzY3JvbGxXaWR0aC9IZWln aHQtdmFsdWVzLCBzbyBpDQoJc3RvcmUgdGhlIG9sZCB2YWx1ZXMgb2YgdGhlIGNvbnRlbnRTaXpl IGFuZCB0aGVuIGNhbGwgYSBmdW5jdGlvbg0KdGhhdCBsb29wcw0KCXdpdGggYSB0aW1lb3V0IHVu dGlsIHRoZSB2YWx1ZXMgaGF2ZSBjaGFuZ2VkIChvciBhIG1heGltdW0gb2YNCnJldHJpZXMgaXMN CglyZWFjaGVkKS4gdGhlICdvbmxvYWQnLWV2ZW50IGlzbid0IGludm9rZWQgdW50aWwgdGhhdCBt b21lbnQuDQp0aGlzIG1lYW5zDQoJdGhhdCBldmVyeXRoaW5nIHRoYXQgbmVlZHMgdGhlIHNpemUg b2YgdGhlIGNvbnRlbnQgaGFzIHRvIHdhaXQNCmZvciB0aGUNCgknb25sb2FkJy1ldmVudCB0byBi ZSBpbnZva2VkLg0KCQ0KCW5zNToNCglpIGZvdW5kIHRoYXQgZWxtLnNjcm9sbFdpZHRoIGFuZCBl bG0uc2Nyb2xsSGVpZ2h0IGluIG5zNSBjb250YWluDQp0aGUgY29ycmVjdA0KCXZhbHVlcyBpZiBl bG0uc3R5bGUud2lkdGgvaGVpZ2h0IGlzIHNldCB0byAnYXV0bycsIHNvIHdoYXQgaSBkaWQNCmlu DQoJRHlubGF5ZXIucHJvdG90eXBlLmdldENvbnRlbnRXaWR0aCgpIGlzIHNldHRpbmcgdGhlDQpl bG0uc3R5bGUud2lkdGggdG8NCgknYXV0bycsIHJldHJpdmUgdGhlIHNjcm9sbFdpZHRoLCBhbmQg dGhlbiBjaGFuZ2luZyB0aGUgdmFsdWUgb2YNCgllbG0uc3R5bGUud2lkdGggYWdhaW4gdG8gdGhl IG9yaWdpbmFsIHZhbHVlLiB0aGlzIGNhdXNlcyBhIHNob3J0DQpmbGlja2VyaW5nLA0KCWJlY2F1 c2Ugd2hlbiBzZXQgdG8gJ2F1dG8nLCBuczUgYWRqdXN0IHRoZSBzaXplIG9mIHRoZSBsYXllciB0 bw0KdGhlDQoJY29udGVudFNpemUsIGJ1dCBhdCBsZWFzdCBpIGdldCB0aGUgY29ycmVjdCBzaXpl IG9mIHRoZSBjb250ZW50Lg0KCQ0KCQ0KCXNpbmNlIHRoZSBzZXRIVE1MKCkgbWV0aG9kIG9mIGEg RHluTGF5ZXIgaXMgdGhlIG9ubHkgcGxhY2Ugd2hlcmUNCnRoZSBzaXplIG9mDQoJdGhlIGNvbnRl bnQgY2FuIGJlIGNoYW5nZWQgdGhlcmUncyBubyBuZWVkIGZvciBhY2Nlc3NpbmcgdGhlDQpicm93 c2VycyBvYmplY3QNCglldmVyeSB0aW1lIHRoZSBjb250ZW50c2l6ZSBpcyBuZWVkZWQsIHNvIGkg aW50cm9kdWNlZCB0d28gbmV3DQpwcm9wZXJ0aWVzIHRvDQoJdGhlIER5bkxheWVyOiBjb250ZW50 VyBhbmQgY29udGVudEggKHRoZXkgYXJlIHVwZGF0ZWQgZXZlcnkgdGltZQ0Kc2V0SFRNTCgpDQoJ aXMgY2FsbGVkKQ0KCQ0KCWkgbWFkZSBhIGRlbW9uc3RyYXRpb24gcGFnZSBhdmFpbGFibGUgb24g dGhlIHdlYjoNCgkNCmh0dHA6Ly9uLmV0aHouY2gvc3R1ZGVudC9taWJ1ZXJnZS9keW5hcGkvZXhh bXBsZXMvY29udGVudHNpemUuaHRtDQoJDQoJDQoJDQoJdGhlIHBpZWNlcyBvZiBjb2RlIGkgY2hh bmdlZCBpbiAiZHlubGF5ZXIuanMiOg0KCQ0KCS8qIC4uLiAqLw0KCQ0KCUR5bkxheWVyLnByb3Rv dHlwZS50b1N0cmluZz1mdW5jdGlvbiAoKSB7DQoJICAgIHJldHVybg0KCQ0KKHRoaXMuZWxtKT8n RHluQVBJLmdldERvY3VtZW50KCInK3RoaXMuZHluZG9jLmlkKyciKS5hbGxbIicrdGhpcy5pZCsn Il0nDQo6J0R5DQoJbkxheWVyLnVuYXNzaWduZWRbIicrdGhpcy5pZCsnIl0nOw0KCX07DQoJLy8g cmVwbGFjZWQgY2hlY2sgZm9yIHRoaXMuY3JlYXRlZCB3aXRoIHRoaXMuZWxtDQoJDQoJDQoJLyog Li4uICovDQoJDQoJRHluTGF5ZXIucHJvdG90eXBlLnNldEhUTUw9ZnVuY3Rpb24oaHRtbCxub2V2 dCkgew0KCSAgICB0aGlzLmh0bWw9aHRtbD9odG1sOicnOw0KCSAgICBpZiAodGhpcy5jc3M9PW51 bGwpIHJldHVybjsNCgkgICAgdGhpcy5pbnZva2VFdmVudCgiYmVmb3JlbG9hZCIpOw0KCSAgIA0K CSAgICAvLyBzYXZpbmcgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBjb250ZW50DQoJICAgIGlmIChp cy5pZTUgJiYgaXMucGxhdGZvcm0gPT0gJ21hYycpIHsNCgkgICAgICAgIHRoaXMubGFzdENvbnRl bnRXID0gdGhpcy5jb250ZW50VyB8fA0KdGhpcy5nZXRDb250ZW50V2lkdGgoKTsNCgkgICAgICAg IHRoaXMubGFzdENvbnRlbnRIID0gdGhpcy5jb250ZW50SCB8fA0KdGhpcy5nZXRDb250ZW50SGVp Z2h0KCk7DQoJICAgIH0NCgkgICANCgkgICAgdGhpcy5lbG0uaW5uZXJIVE1MPWh0bWw7DQoJICAg IGlmIChpcy5uczQpIHsNCgkgICAgICAgIHRoaXMuZG9jLm9wZW4oKTsNCgkgICAgICAgIHRoaXMu ZG9jLndyaXRlKGh0bWwpOw0KCSAgICAgICAgdGhpcy5kb2MuY2xvc2UoKTsNCgkgICAgICAgICAg ICBmb3IgKHZhciBpIGluIHRoaXMuZG9jLmltYWdlcykNCnRoaXMuZG9jLmltYWdlc1tpXS5seXJv Ymo9dGhpczsNCgkgICAgICAgICAgICBmb3IgKGk9MDtpPHRoaXMuZG9jLmxpbmtzLmxlbmd0aDtp KyspDQoJdGhpcy5kb2MubGlua3NbaV0ubHlyb2JqPXRoaXM7DQoJICAgIH0NCgkgICAgZWxzZSBp ZiAoaXMubnM1KSB7DQoJICAgICAgICB3aGlsZSAodGhpcy5lbG0uaGFzQ2hpbGROb2RlcygpKQ0K CXRoaXMuZWxtLnJlbW92ZUNoaWxkKHRoaXMuZWxtLmZpcnN0Q2hpbGQpOw0KCSAgICAgICAgdmFy IHI9dGhpcy5lbG0ub3duZXJEb2N1bWVudC5jcmVhdGVSYW5nZSgpOw0KCSAgICAgICAgci5zZWxl Y3ROb2RlQ29udGVudHModGhpcy5lbG0pOw0KCSAgICAgICAgci5jb2xsYXBzZSh0cnVlKTsNCgkg ICAgICAgIHZhciBkZj1yLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChodG1sKTsNCgkgICAgICAg IHRoaXMuZWxtLmFwcGVuZENoaWxkKGRmKTsNCgkgICAgICAgICAgICBmb3IgKHZhciBpIGluIHRo aXMuZG9jLmltYWdlcykNCgl0aGlzLmRvYy5pbWFnZXNbaV0ubHlyb2JqPXRoaXMuZWxtOw0KCSAg ICB9DQoJICAgIGVsc2UgeyAgIA0KCSAgICAgICAgLy9mb3IgKHZhciBpIGluIHRoaXMuZWxtLmFs bC50YWdzKCJpbWciKSkNCgl0aGlzLmVsbS5hbGwudGFncygiaW1nIilbaV0ubHlyb2JqPXRoaXM7 DQoJICAgIH0NCgkgICAgdGhpcy51cGRhdGVDb250ZW50U2l6ZVZhbHVlcyhub2V2dCkNCgl9Ow0K CQ0KCS8qIC4uLiAqLw0KCQ0KCUR5bkxheWVyLnByb3RvdHlwZS5nZXRDb250ZW50V2lkdGg9ZnVu Y3Rpb24oKSB7DQoJICAgIGlmICh0aGlzLmVsbT09bnVsbCkgcmV0dXJuIDA7DQoJICAgIGVsc2Ug aWYgKGlzLm5zNCkgcmV0dXJuIHRoaXMuZG9jLndpZHRoOw0KCSAgICBlbHNlIGlmIChpcy5uczUp IHsNCgkgICAgICAgIHRoaXMuZWxtLnN0eWxlLndpZHRoID0gImF1dG8iOyAgLy8gbWFrZXMgdGhl IG9mZnNldFdpZHRoDQphdmFpbGFibGUNCgkgICAgICAgIHZhciB3ID0gdGhpcy5lbG0ub2Zmc2V0 V2lkdGg7DQoJICAgICAgICB0aGlzLmVsbS5zdHlsZS53aWR0aCA9IHRoaXMudzsgIC8vIHJlc3Rv cmUgdGhlIHdpZHRoDQoJICAgICAgICByZXR1cm4gdzsNCgkgICAgfQ0KCSAgICBlbHNlIGlmIChp cy5pZSkgcmV0dXJuIHBhcnNlSW50KHRoaXMuZWxtLnNjcm9sbFdpZHRoKTsNCgkgICAgZWxzZSBy ZXR1cm4gMDsNCgl9Ow0KCUR5bkxheWVyLnByb3RvdHlwZS5nZXRDb250ZW50SGVpZ2h0PWZ1bmN0 aW9uKCkgew0KCSAgICBpZiAodGhpcy5lbG09PW51bGwpIHJldHVybiAwOw0KCSAgICBlbHNlIGlm IChpcy5uczQpIHJldHVybiB0aGlzLmRvYy5oZWlnaHQ7DQoJICAgIGVsc2UgaWYgKGlzLm5zNSkg ew0KCSAgICAgICAgdGhpcy5lbG0uc3R5bGUuaGVpZ2h0ID0gImF1dG8iOw0KCSAgICAgICAgdmFy IGggPSB0aGlzLmVsbS5vZmZzZXRIZWlnaHQ7DQoJICAgICAgICB0aGlzLmVsbS5zdHlsZS5oZWln aHQgPSB0aGlzLmg7DQoJICAgICAgICByZXR1cm4gaDsNCgkgICAgfQ0KCSAgICBlbHNlIGlmIChp cy5pZSkgcmV0dXJuIHBhcnNlSW50KHRoaXMuZWxtLnNjcm9sbEhlaWdodCk7DQoJICAgIGVsc2Ug cmV0dXJuIDA7DQoJfTsNCglEeW5MYXllci5wcm90b3R5cGUudXBkYXRlQ29udGVudFNpemVWYWx1 ZXMgPSBmdW5jdGlvbihub2V2dCkgew0KCSAgICBpZiAoaXMuaWU1ICYmIGlzLnBsYXRmb3JtID09 ICdtYWMnKSB7DQoJICAgIHRoaXMuY2hrVGltZXIgPSBzZXRUaW1lb3V0KHRoaXMgKw0KCScuY2hl Y2tGb3JDb250ZW50U2l6ZVVwZGF0ZSgxLCcrIShub2V2dD09ZmFsc2UpKycpJywwKTsNCgkgICAg cmV0dXJuOw0KCSAgICB9DQoJDQoJICAgIHRoaXMuY29udGVudFcgPSB0aGlzLmdldENvbnRlbnRX aWR0aCgpOw0KCSAgICB0aGlzLmNvbnRlbnRIID0gdGhpcy5nZXRDb250ZW50SGVpZ2h0KCk7DQoJ ICAgIGlmIChub2V2dCE9ZmFsc2UpIHRoaXMuaW52b2tlRXZlbnQoJ2xvYWQnKTsNCgl9DQoJDQoJ RHluTGF5ZXIucHJvdG90eXBlLmNoZWNrRm9yQ29udGVudFNpemVVcGRhdGUgPQ0KZnVuY3Rpb24o cmV0cnksbm9ldnQpIHsNCgkgICAgdmFyIHcgPSB0aGlzLmdldENvbnRlbnRXaWR0aCgpOw0KCSAg ICB2YXIgaCA9IHRoaXMuZ2V0Q29udGVudEhlaWdodCgpOw0KCSAgICAvLyBjaGVjayBmb3IgY2hh bmdlZCB2YWx1ZXMNCgkgICAgaWYgKHRoaXMubGFzdENvbnRlbnRXICE9IHcgfHwgdGhpcy5sYXN0 Q29udGVudEggIT0gaCkgew0KCSAgICB0aGlzLmxhc3RDb250ZW50VyA9IHRoaXMubGFzdENvbnRl bnRIID0gbnVsbDsNCgkgICAgdGhpcy5jb250ZW50VyA9IHc7DQoJICAgIHRoaXMuY29udGVudEgg PSBoOw0KCSAgICBpZiAobm9ldnQhPWZhbHNlKSB0aGlzLmludm9rZUV2ZW50KCdsb2FkJyk7DQoJ ICAgIH0NCgkgICAgZWxzZSBpZiAocmV0cnkgPCBEeW5MYXllci5tYXhSZXRyaWVzKSB7DQoJICAg IGNsZWFyVGltZW91dCh0aGlzLmNoa1RpbWVyKQ0KCSAgICBzZXRUaW1lb3V0KHRoaXMgKycuY2hl Y2s0Q29udGVudFNpemVVcGRhdGUoJyArKHJldHJ5KzEpDQoJKycsJyshKG5vZXZ0PT1mYWxzZSkr JyknLDMwKTsNCgkgICAgfQ0KCSAgICBlbHNlIGlmIChub2V2dCE9ZmFsc2UpIHRoaXMuaW52b2tl RXZlbnQoJ2xvYWQnKTsNCgkNCgl9DQoJRHluTGF5ZXIubWF4UmV0cmllcyA9IDU7DQoJDQoJLyog Li4uICovDQoJDQoJDQoJLS0NCglNaWNoYWVsIEJ1ZXJnZQ0KCQ0KCQ0KCV9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQoJRHluYXBpLURldiBtYWlsaW5nIGxp c3QNCglEeW5hcGktRGV2QGxpc3RzLnNvdXJjZWZvcmdlLm5ldA0KCWh0dHA6Ly9saXN0cy5zb3Vy Y2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vZHluYXBpLWRldg0KCQ0KDQo= |