PD94bWwgdmVyc2lvbj0iMS4wIiAgZW5jb2Rpbmc9Imlzby04ODU5LTEiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0KICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlCiAqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAogKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCiAqIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCiAqICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCiAqIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqCiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICoKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0+Cgo8IURPQ1RZUEUgczEgU1lTVEVNICJzYms6L3N0eWxlL2R0ZC9kb2N1bWVudC5kdGQiPgoKPHMxIHRpdGxlPSJGZWVkYmFjayBQcm9jZWR1cmVzIj4KICAgIDxzMiB0aXRsZT0iUXVlc3Rpb25zIG9yIENvbW1lbnRzIj4KCiAgICA8cD5QbGVhc2UgYnJvd3NlIHRocm91Z2ggdGhpcyBidW5kbGVkIGRvY3VtZW50YXRpb24gY29tcGxldGVseS4gIE1vc3Qgb2YKICAgICAgIHRoZSBjb21tb24gcXVlc3Rpb25zIGhhdmUgYmVlbiBhbnN3ZXJlZCBpbiB0aGUgRkFRcy4gQnJvd3NpbmcgdGhpcwogICAgICAgZG9jdW1lbnRhdGlvbiBtYXkgYmUgdGhlIHF1aWNrZXN0IHdheSB0byBnZXQgYW4gYW5zd2VyLiBPZiBjb3Vyc2UsIGlmCiAgICAgICBhbGwgZWxzZSBmYWlscywgYXMgbWVudGlvbmVkIGluIHRoZSBsaW5rIGFib3ZlLCB5b3UgY2FuIHBvc3QgYSBxdWVzdGlvbgogICAgICAgdG8gb25lIG9mIHRoZSA8anVtcCBocmVmPSJtYWlsaW5nLWxpc3RzLmh0bWwiPiZYZXJjZXNDTmFtZTsgbWFpbGluZwogICAgICAgbGlzdHM8L2p1bXA+LjwvcD4gPHA+U2VlIDxqdW1wIGhyZWY9ImJ1Zy1yZXBvcnQuaHRtbCI+QnVnIFJlcG9ydGluZzwvanVtcD4KICAgICAgIGlmIHlvdSB3b3VsZCBsaWtlIHRvIHJlcG9ydCBhIGRlZmVjdCAod2hpY2ggaXMgZ3JlYXRseSBhcHByZWNpYXRlZCkuPC9wPgoKICAgIDwvczI+CgogICAgPHMyIHRpdGxlPSJBY2tub3dsZWRnZW1lbnRzIj4KCiAgICAgICAgPHA+RXZlciBzaW5jZSB0aGlzIHNvdXJjZSBjb2RlIGJhc2Ugd2FzIGluaXRpYWxseSBjcmVhdGVkLCBtYW55IHBlb3BsZQogICAgICAgICAgIGhhdmUgaGVscGVkIHRvIHBvcnQgdGhlIGNvZGUgdG8gZGlmZmVyZW50IHBsYXRmb3JtcywgYW5kIHByb3ZpZGVkCiAgICAgICAgICAgcGF0Y2hlcyBmb3IgYm90aCBuZXcgZmVhdHVyZXMgYW5kIGJ1ZyBmaXhlcy4KICAgICAgICA8L3A+CgogICAgICAgIDxwPkxpc3RlZCBiZWxvdyBhcmUgc29tZSBuYW1lcyAoaW4gYWxwaGFiZXRpY2FsIG9yZGVyKSBvZiBwZW9wbGUgdG8gd2hvbQogICAgICAgIHdlIHdvdWxkIGxpa2UgdG8gZ2l2ZSBzcGVjaWFsIHRoYW5rcy4gPC9wPgoKICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5OYWRhdiBBaGFyb25pPC9saT4KICAgICAgICAgICAgPGxpPkN1cnQgQXJub2xkPC9saT4KICAgICAgICAgICAgPGxpPkVkd2FyZCBBdmlzPC9saT4KICAgICAgICAgICAgPGxpPkFudXBhbSBCYWdjaGk8L2xpPgogICAgICAgICAgICA8bGk+VG9yYmr2cm4gQuRja3N0cvZtPC9saT4KICAgICAgICAgICAgPGxpPkFiZSBCYWNrdXM8L2xpPgogICAgICAgICAgICA8bGk+RnJhbmsgQmFsbHVmZmk8L2xpPgogICAgICAgICAgICA8bGk+TWF0dGhldyBCYWtlcjwvbGk+CiAgICAgICAgICAgIDxsaT5EZXZpbiBCYXJuaGFydDwvbGk+CiAgICAgICAgICAgIDxsaT5KYW1lcyBCZXJyeTwvbGk+CiAgICAgICAgICAgIDxsaT5EYXZpZCBCZXJ0b25pPC9saT4KICAgICAgICAgICAgPGxpPkpvaG4gQmVsbGFyZG88L2xpPgogICAgICAgICAgICA8bGk+QXJ1bmRoYXRpIEJob3dtaWNrPC9saT4KICAgICAgICAgICAgPGxpPkpvYW5uZSBCb2dhcnQ8L2xpPgogICAgICAgICAgICA8bGk+TWljaGFlbCBCb29zPC9saT4KICAgICAgICAgICAgPGxpPkVkd2FyZCBCb3J0bmVyPC9saT4KICAgICAgICAgICAgPGxpPlNlYW4gQnJpZ2h0PC9saT4KICAgICAgICAgICAgPGxpPlBoaWwgQnJvd248L2xpPgogICAgICAgICAgICA8bGk+Um9iZXJ0IEJ1Y2s8L2xpPgogICAgICAgICAgICA8bGk+U2NvdHQgQ2FudG9yPC9saT4KICAgICAgICAgICAgPGxpPkRhdmlkIENhcmdpbGw8L2xpPgogICAgICAgICAgICA8bGk+Q2hyaXMgQ2F0ZXM8L2xpPgogICAgICAgICAgICA8bGk+R2lsYmVydCBDaGFuPC9saT4KICAgICAgICAgICAgPGxpPlN1bWl0IENoYXdsYTwvbGk+CiAgICAgICAgICAgIDxsaT5OaWNrIENoaWFuZzwvbGk+CiAgICAgICAgICAgIDxsaT5DaGloIEhzaWFuZyBDaG91PC9saT4KICAgICAgICAgICAgPGxpPlJhZG92YW4gQ2h5dHJhY2VrPC9saT4KICAgICAgICAgICAgPGxpPkhpcmFtIENsYXdzb248L2xpPgogICAgICAgICAgICA8bGk+Sm9obiBDbGF5dG9uPC9saT4KICAgICAgICAgICAgPGxpPlRvZGQgQ29sbGluczwvbGk+CiAgICAgICAgICAgIDxsaT5OYXRoYW4gQ29kZGluZzwvbGk+CiAgICAgICAgICAgIDxsaT5NaWNoYWVsIENyYXdmb3JkPC9saT4KICAgICAgICAgICAgPGxpPk11cnJheSBDdW1taW5nPC9saT4KICAgICAgICAgICAgPGxpPlplaWQgRGVyaGFsbHk8L2xpPgogICAgICAgICAgICA8bGk+SmFtZXMgRGV2cmllczwvbGk+CiAgICAgICAgICAgIDxsaT5BaWxpYW4gRGluZzwvbGk+CiAgICAgICAgICAgIDxsaT5TdGV2ZSBEdWxpbjwvbGk+CiAgICAgICAgICAgIDxsaT5EYXZpZCBFYXJsYW08L2xpPgogICAgICAgICAgICA8bGk+SGVsbXV0IEVpa2VuPC9saT4KICAgICAgICAgICAgPGxpPk1hcmsgRXZlcmxpbmU8L2xpPgogICAgICAgICAgICA8bGk+QW5kcmV3IEZhbmc8L2xpPgogICAgICAgICAgICA8bGk+U2ltb24gRmVsbDwvbGk+CiAgICAgICAgICAgIDxsaT5QYXVsIEZlcmd1c29uPC9saT4KICAgICAgICAgICAgPGxpPkdyZWcgRnJhbmtzPC9saT4KICAgICAgICAgICAgPGxpPlBpZXJwYW9sbyBGdW1hZ2FsbGk8L2xpPgogICAgICAgICAgICA8bGk+U3lhbSBHYWRkZTwvbGk+CiAgICAgICAgICAgIDxsaT5HdWlkbyBHYWdsaWFyZGk8L2xpPgogICAgICAgICAgICA8bGk+R2FyeSBHYWxlPC9saT4KICAgICAgICAgICAgPGxpPk1pY2hhZWwgR2xhdmFzc2V2aWNoPC9saT4KCSAgICA8bGk+TmF0YWxpZSBHb3JkZW48L2xpPgogICAgICAgICAgICA8bGk+TWF4IEdvdGxpYjwvbGk+CiAgICAgICAgICAgIDxsaT5QZXRyIEdvdHRoYXJkPC9saT4KICAgICAgICAgICAgPGxpPk5laWwgR3JhaGFtPC9saT4KICAgICAgICAgICAgPGxpPk1hdHRoZXcgSGFsbDwvbGk+CiAgICAgICAgICAgIDxsaT5KYXkgSGFuc2VuPC9saT4KICAgICAgICAgICAgPGxpPlN1c2FuIEhhcmRlbmJyb29rPC9saT4KICAgICAgICAgICAgPGxpPkplZmYgSGFycmVsbDwvbGk+CiAgICAgICAgICAgIDxsaT5BbmRyZXcgSGVmZm9yZDwvbGk+CiAgICAgICAgICAgIDxsaT5BZGFtIEhlaW56PC9saT4KICAgICAgICAgICAgPGxpPkFuZHkgSGVuaW5nZXI8L2xpPgogICAgICAgICAgICA8bGk+Sm9obiBIaWJiZXJ0PC9saT4KICAgICAgICAgICAgPGxpPldpbGxpYW0gTC4gSG9wcGVyPC9saT4KICAgICAgICAgICAgPGxpPk1pY2hhZWwgSHVlZGVwb2hsPC9saT4KICAgICAgICAgICAgPGxpPkFuZGVycyBIeWJlcnR6PC9saT4KICAgICAgICAgICAgPGxpPlJhaHVsIEphaW48L2xpPgogICAgICAgICAgICA8bGk+VG9tIEpvcmRhaGw8L2xpPgogICAgICAgICAgICA8bGk+Q2hyaXN0b3BoZXIgSnVzdDwvbGk+CiAgICAgICAgICAgIDxsaT5NYXJ0aW4gS2FsZW48L2xpPgogICAgICAgICAgICA8bGk+Sm9lIEtlc3NlbG1hbjwvbGk+CiAgICAgICAgICAgIDxsaT5Kb2huIEtpbTwvbGk+CiAgICAgICAgICAgIDxsaT5BcnR1ciBLbGF1c2VyPC9saT4KICAgICAgICAgICAgPGxpPkJvYiBLbGluZTwvbGk+CiAgICAgICAgICAgIDxsaT5SaWNoYXJkIEtvPC9saT4KICAgICAgICAgICAgPGxpPkJvcmlzIEtvbHBhY2tvdjwvbGk+CiAgICAgICAgICAgIDxsaT5QYXVsIEtyYW1lcjwvbGk+CiAgICAgICAgICAgIDxsaT5Wb2xrZXIgS3JhdXNlPC9saT4KICAgICAgICAgICAgPGxpPkJlcmluIExhdXRlbmJhY2g8L2xpPgogICAgICAgICAgICA8bGk+QXJuYXVkIExlSG9yczwvbGk+CiAgICAgICAgICAgIDxsaT5Sb2dlciBMZWlnaDwvbGk+CiAgICAgICAgICAgIDxsaT5BbmR5IExldmluZTwvbGk+CiAgICAgICAgICAgIDxsaT5KZWZmIExld2lzPC9saT4KICAgICAgICAgICAgPGxpPkphbWVzIExpdHRsZWpvaG48L2xpPgogICAgICAgICAgICA8bGk+UmF5IExvZ2VsPC9saT4KICAgICAgICAgICAgPGxpPlBlZHJvIExvcGVzPC9saT4KICAgICAgICAgICAgPGxpPk1hdHQgTG92ZXR0PC9saT4KICAgICAgICAgICAgPGxpPlNlYW4gTWFjUm9pYmVhaXJkPC9saT4KICAgICAgICAgICAgPGxpPkFsYmVydG8gTWFzc2FyaTwvbGk+CiAgICAgICAgICAgIDxsaT5Eb24gTWFzdHJvdml0bzwvbGk+CiAgICAgICAgICAgIDxsaT5EYXZpZCBNY0NyZWVkeTwvbGk+CiAgICAgICAgICAgIDxsaT5DaGFybGVzIE1jTG91dGg8L2xpPgogICAgICAgICAgICA8bGk+U2hpbid5YSBNb3Jpbm88L2xpPgogICAgICAgICAgICA8bGk+VXJzIE11ZmY8L2xpPgogICAgICAgICAgICA8bGk+Sm9yZGFuIE5hZnRvbGluPC9saT4KICAgICAgICAgICAgPGxpPlRpbm55IE5nPC9saT4KICAgICAgICAgICAgPGxpPkRhdmlkIE5pY2tlcnNvbjwvbGk+CiAgICAgICAgICAgIDxsaT5BbnRvbiBOaWtvbGFldnNreTwvbGk+CiAgICAgICAgICAgIDxsaT5LaGFsZWQgTm9hbWFuPC9saT4KICAgICAgICAgICAgPGxpPk1pY2hhZWwgT3R0YXRpPC9saT4KICAgICAgICAgICAgPGxpPkFudGhvbnkgTydEb3dkPC9saT4KICAgICAgICAgICAgPGxpPk1pa2UgUGF3bG93c2tpPC9saT4KICAgICAgICAgICAgPGxpPktldmluIFBoaWxpcHM8L2xpPgogICAgICAgICAgICA8bGk+TWlrZSBQb2d1ZTwvbGk+CiAgICAgICAgICAgIDxsaT5Kb2UgUG9sYXN0cmU8L2xpPgogICAgICAgICAgICA8bGk+Sm9obiBQb256bzwvbGk+CiAgICAgICAgICAgIDxsaT5WaXRhbHkgUHJhcGlybnk8L2xpPgogICAgICAgICAgICA8bGk+U2hlbmdrYWkgUXU8L2xpPgogICAgICAgICAgICA8bGk+R2FyZXRoIFJlYWtlczwvbGk+CiAgICAgICAgICAgIDxsaT5KaW0gUmVpdHo8L2xpPgogICAgICAgICAgICA8bGk+Q2Fyb2xpbmUgUmlvdXg8L2xpPgogICAgICAgICAgICA8bGk+RGVhbiBSb2RkZXk8L2xpPgogICAgICAgICAgICA8bGk+Sm9obiBSb3BlcjwvbGk+CiAgICAgICAgICAgIDxsaT5EYW4gUm9zZW48L2xpPgogICAgICAgICAgICA8bGk+U3RldmVuIFJvc2VudGhhbDwvbGk+CiAgICAgICAgICAgIDxsaT5FcmlrIFJ5ZGdyZW48L2xpPgogICAgICAgICAgICA8bGk+TWFya3VzIFNjaGVyZXI8L2xpPgogICAgICAgICAgICA8bGk+QmlsbCBTY2hpbmRsZXI8L2xpPgogICAgICAgICAgICA8bGk+RXJpayBTY2hyb2VkZXI8L2xpPgogICAgICAgICAgICA8bGk+Q2hyaXN0aWFuIFNjaHVoZWdnZXI8L2xpPgogICAgICAgICAgICA8bGk+VG9iaWFzIFNjaHVldHRlPC9saT4KICAgICAgICAgICAgPGxpPkpvaG4gU21pcmw8L2xpPgogICAgICAgICAgICA8bGk+QW5kcmVpIFNtaXJub3Y8L2xpPgogICAgICAgICAgICA8bGk+Sm9obiBTbmVsc29uPC9saT4KICAgICAgICAgICAgPGxpPkdlcmVvbiBTdGVmZmVuczwvbGk+CiAgICAgICAgICAgIDxsaT5KYXNvbiBTdGV3YXJ0PC9saT4KICAgICAgICAgICAgPGxpPlJpY2sgSi4gU3RldmVuczwvbGk+CiAgICAgICAgICAgIDxsaT5Sb21hbiBTdWx6aHlrPC9saT4KICAgICAgICAgICAgPGxpPkxpbmRhIE0uIFN3YW48L2xpPgogICAgICAgICAgICA8bGk+VmFzaWx5IFRjaGVrYWxraW48L2xpPgogICAgICAgICAgICA8bGk+UGlldGVyIFZhbi1EeWNrPC9saT4KICAgICAgICAgICAgPGxpPkN1cnRpcyBXYWxrZXI8L2xpPgogICAgICAgICAgICA8bGk+Sm9obiBXYXJyaWVyPC9saT4KICAgICAgICAgICAgPGxpPlRvbSBXYXRzb248L2xpPgogICAgICAgICAgICA8bGk+TWFyayBXZWF2ZXI8L2xpPgogICAgICAgICAgICA8bGk+Um9nZXIgV2Vic3RlcjwvbGk+CiAgICAgICAgICAgIDxsaT5Sb2JlcnQgV2VpcjwvbGk+CiAgICAgICAgICAgIDxsaT5BeGVsIFdlaXNzPC9saT4KICAgICAgICAgICAgPGxpPkNhcm9seW4gV2Vpc3M8L2xpPgogICAgICAgICAgICA8bGk+Q2hyaXN0aWFuIFdpbGw8L2xpPgogICAgICAgICAgICA8bGk+S2FyaSBXaGl0Y29tYjwvbGk+CiAgICAgICAgICAgIDxsaT5EaWV0cmljaCBXb2xmPC9saT4KICAgICAgICAgICAgPGxpPktpcmsgV3lsaWU8L2xpPgogICAgICAgICAgICA8bGk+UGV0ZXIgQS4gVm9sY2hlazwvbGk+CiAgICAgICAgICAgIDxsaT5HcmFjZSBZYW48L2xpPgogICAgICAgICAgICA8bGk+SGlyYW1hdHN1IFlvc2hpZnVtaTwvbGk+CiAgICAgICAgICAgIDxsaT5QZWlZb25nIFpoYW5nPC9saT4KICAgICAgICAgICAgPGxpPkhlbnJ5IFpvbmdhcm88L2xpPgogICAgICAgIDwvdWw+CiAgICA8L3MyPgo8L3MxPgo=